diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 1f29891dfddc9..2429a0153f009 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -41,7 +41,7 @@ repos: - id: trailing-whitespace args: ["--markdown-linebreak-ext=md"] - repo: https://github.com/psf/black - rev: 19.10b0 + rev: 22.3.0 hooks: - id: black language_version: python3 diff --git a/CHANGELOG.md b/CHANGELOG.md index 34657f0ba60b0..9aa311f32a667 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,16 @@ specific language governing permissions and limitations under the License. --> ## Change Log + +### 1.4.2 (Sat Mar 19 00:08:06 2022 +0200) +**Features** +- [#19248](https://github.com/apache/superset/pull/19248) feat: add support for comments in adhoc clauses (@villebro) +- [#18214](https://github.com/apache/superset/pull/18214) feat(docker-compose): add TAG option (@villebro) + +**Fixes** +- [#17641](https://github.com/apache/superset/pull/17641) fix(sqla): make text clause escaping optional (@villebro) +- [#18566](https://github.com/apache/superset/pull/18566) fix(plugin-chart-echarts): area chart opacity bug (@villebro) + ### 1.4.1 **Database Migrations** diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 994fec44b4a89..e49cf0a32cc06 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -106,7 +106,7 @@ This statement thanks the following, on which it draws for content and inspirati # Slack Community Guidelines -If you decide to join the [Community Slack](https://join.slack.com/t/apache-superset/shared_invite/zt-uxbh5g36-AISUtHbzOXcu0BIj7kgUaw), please adhere to the following rules: +If you decide to join the [Community Slack](https://join.slack.com/t/apache-superset/shared_invite/zt-16jvzmoi8-sI7jKWp~xc2zYRe~NqiY9Q), please adhere to the following rules: **1. Treat everyone in the community with respect.** diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 84a948511ab15..865d4b62d6b44 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -412,7 +412,7 @@ You also need to install MySQL or [MariaDB](https://mariadb.com/downloads). Ensure that you are using Python version 3.7 or 3.8, then proceed with: -````bash +```bash # Create a virtual environment and activate it (recommended) python3 -m venv venv # setup a python3 virtualenv source venv/bin/activate @@ -457,7 +457,7 @@ $ make superset # Setup pre-commit only $ make pre-commit -```` +``` **Note: the FLASK_APP env var should not need to be set, as it's currently controlled via `.flaskenv`, however if needed, it should be set to `superset.app:create_app()`** diff --git a/README.md b/README.md index 40ef7bb77bc2e..9d95180f26370 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,7 @@ under the License. [![PyPI version](https://badge.fury.io/py/apache-superset.svg)](https://badge.fury.io/py/apache-superset) [![Coverage Status](https://codecov.io/github/apache/superset/coverage.svg?branch=master)](https://codecov.io/github/apache/superset) [![PyPI](https://img.shields.io/pypi/pyversions/apache-superset.svg?maxAge=2592000)](https://pypi.python.org/pypi/apache-superset) -[![Get on Slack](https://img.shields.io/badge/slack-join-orange.svg)](https://join.slack.com/t/apache-superset/shared_invite/zt-uxbh5g36-AISUtHbzOXcu0BIj7kgUaw) +[![Get on Slack](https://img.shields.io/badge/slack-join-orange.svg)](https://join.slack.com/t/apache-superset/shared_invite/zt-16jvzmoi8-sI7jKWp~xc2zYRe~NqiY9Q) [![Documentation](https://img.shields.io/badge/docs-apache.org-blue.svg)](https://superset.apache.org) str: return f"### {self._version} ({self._logs[0].time})" def _parse_change_log( - self, changelog: Dict[str, str], pr_info: Dict[str, str], github_login: str, + self, + changelog: Dict[str, str], + pr_info: Dict[str, str], + github_login: str, ) -> None: formatted_pr = ( f"- [#{pr_info.get('id')}]" @@ -355,7 +358,8 @@ def compare(base_parameters: BaseParameters) -> None: @cli.command("changelog") @click.option( - "--csv", help="The csv filename to export the changelog to", + "--csv", + help="The csv filename to export the changelog to", ) @click.option( "--access_token", diff --git a/RELEASING/send_email.py b/RELEASING/send_email.py index ddf823f1c92b5..a4b4a449665f9 100755 --- a/RELEASING/send_email.py +++ b/RELEASING/send_email.py @@ -106,7 +106,12 @@ def inter_send_email( class BaseParameters(object): def __init__( - self, email: str, username: str, password: str, version: str, version_rc: str, + self, + email: str, + username: str, + password: str, + version: str, + version_rc: str, ) -> None: self.email = email self.username = username diff --git a/UPDATING.md b/UPDATING.md index cfee3dcfd436f..a911b4b541291 100644 --- a/UPDATING.md +++ b/UPDATING.md @@ -29,6 +29,9 @@ assists people when migrating to a new version. ### Breaking Changes +- [19168](https://github.com/apache/superset/pull/19168): Celery upgrade to 5.X has breaking changes on it's command line invocation. + Please follow: https://docs.celeryq.dev/en/stable/whatsnew-5.2.html#step-1-adjust-your-command-line-invocation + Consider migrating you celery config if you haven't already: https://docs.celeryq.dev/en/stable/userguide/configuration.html#conf-old-settings-map - [19049](https://github.com/apache/superset/pull/19049): APP_ICON_WIDTH has been removed from the config. Superset should now be able to handle different logo sizes without having to explicitly set an APP_ICON_WIDTH. This might affect the size of existing custom logos as the UI will now resize them according to the specified space of maximum 148px and not according to the value of APP_ICON_WIDTH. - [19274](https://github.com/apache/superset/pull/19274): The `PUBLIC_ROLE_LIKE_GAMMA` config key has been removed, set `PUBLIC_ROLE_LIKE` = "Gamma" to have the same functionality. - [19273](https://github.com/apache/superset/pull/19273): The `SUPERSET_CELERY_WORKERS` and `SUPERSET_WORKERS` config keys has been removed. Configure celery directly using `CELERY_CONFIG` on Superset @@ -59,7 +62,6 @@ flag for the legacy datasource editor (DISABLE_LEGACY_DATASOURCE_EDITOR) in conf ### Deprecations -- [19078](https://github.com/apache/superset/pull/19078): Creation of old shorturl links has been deprecated in favor of a new permalink feature that solves the long url problem (old shorturls will still work, though!). By default, new permalinks use UUID4 as the key. However, to use serial ids similar to the old shorturls, add the following to your `superset_config.py`: `PERMALINK_KEY_TYPE = "id"`. - [18960](https://github.com/apache/superset/pull/18960): Persisting URL params in chart metadata is no longer supported. To set a default value for URL params in Jinja code, use the optional second argument: `url_param("my-param", "my-default-value")`. ### Other diff --git a/docker/pythonpath_dev/superset_config.py b/docker/pythonpath_dev/superset_config.py index 6c58bec79c17e..794239d23f13b 100644 --- a/docker/pythonpath_dev/superset_config.py +++ b/docker/pythonpath_dev/superset_config.py @@ -72,7 +72,7 @@ def get_env_variable(var_name: str, default: Optional[str] = None) -> str: class CeleryConfig(object): BROKER_URL = f"redis://{REDIS_HOST}:{REDIS_PORT}/{REDIS_CELERY_DB}" - CELERY_IMPORTS = ("superset.sql_lab", "superset.tasks") + CELERY_IMPORTS = ("superset.sql_lab",) CELERY_RESULT_BACKEND = f"redis://{REDIS_HOST}:{REDIS_PORT}/{REDIS_RESULTS_DB}" CELERYD_LOG_LEVEL = "DEBUG" CELERYD_PREFETCH_MULTIPLIER = 1 diff --git a/docs/README.md b/docs/README.md index f918240c452fe..f4a122ba2f5b1 100644 --- a/docs/README.md +++ b/docs/README.md @@ -24,7 +24,7 @@ This website is built using [Docusaurus 2](https://docusaurus.io/), a modern sta ### Installation ``` -$ yarn +$ yarn install ``` ### Local Development diff --git a/docs/docs/api.mdx b/docs/docs/api.mdx index a80161cdaf809..762b0c180476d 100644 --- a/docs/docs/api.mdx +++ b/docs/docs/api.mdx @@ -4,12 +4,12 @@ hide_title: true sidebar_position: 9 --- -import { Buffer } from "buffer"; +import { Buffer } from 'buffer'; global.Buffer = Buffer; -import SwaggerUI from "swagger-ui-react"; -import openapi from "/resources/openapi.json"; -import "swagger-ui-react/swagger-ui.css"; -// import { Alert } from "antd"; +import SwaggerUI from 'swagger-ui-react'; +import openapi from '/resources/openapi.json'; +import 'swagger-ui-react/swagger-ui.css'; +import { Alert } from 'antd'; ## API @@ -18,28 +18,16 @@ Superset's public **REST API** follows the documented here. The docs bellow are generated using [Swagger React UI](https://www.npmjs.com/package/swagger-ui-react). - - - - - + } +/>

diff --git a/docs/docs/contributing/contributing-page.mdx b/docs/docs/contributing/contributing-page.mdx index 42e44d3df06f6..f4f3cd6400fb6 100644 --- a/docs/docs/contributing/contributing-page.mdx +++ b/docs/docs/contributing/contributing-page.mdx @@ -8,11 +8,11 @@ version: 1 ## Contributing to Superset Superset is an [Apache Software foundation](https://www.apache.org/theapacheway/index.html) project. -The core contributors (or committers) to Superset communicate primarily in the following channels (all of -which you can join): +The core contributors (or committers) to Superset communicate primarily in the following channels ( +which can be joined by anyone): - [Mailing list](https://lists.apache.org/list.html?dev@superset.apache.org) -- [Apache Superset Slack community](https://join.slack.com/t/apache-superset/shared_invite/zt-uxbh5g36-AISUtHbzOXcu0BIj7kgUaw) +- [Apache Superset Slack community](https://join.slack.com/t/apache-superset/shared_invite/zt-16jvzmoi8-sI7jKWp~xc2zYRe~NqiY9Q) - [Github issues and PR's](https://github.com/apache/superset/issues) More references: diff --git a/docs/docs/contributing/hooks-and-linting.mdx b/docs/docs/contributing/hooks-and-linting.mdx index dc8cfef0dcebd..8539ecb6b2600 100644 --- a/docs/docs/contributing/hooks-and-linting.mdx +++ b/docs/docs/contributing/hooks-and-linting.mdx @@ -39,7 +39,7 @@ We use [Pylint](https://pylint.org/) for linting which can be invoked via: tox -e pylint ``` -In terms of best practices please advoid blanket disablement of Pylint messages globally (via `.pylintrc`) or top-level within the file header, albeit there being a few exceptions. Disablement should occur inline as it prevents masking issues and provides context as to why said message is disabled. +In terms of best practices please avoid blanket disablement of Pylint messages globally (via `.pylintrc`) or top-level within the file header, albeit there being a few exceptions. Disablement should occur inline as it prevents masking issues and provides context as to why said message is disabled. Additionally, the Python code is auto-formatted using [Black](https://github.com/python/black) which is configured as a pre-commit hook. There are also numerous [editor integrations](https://black.readthedocs.io/en/stable/integrations/editors.html) diff --git a/docs/docs/installation/alerts-reports.mdx b/docs/docs/installation/alerts-reports.mdx index 3ddb35caa1747..8ab37cc90529a 100644 --- a/docs/docs/installation/alerts-reports.mdx +++ b/docs/docs/installation/alerts-reports.mdx @@ -89,12 +89,12 @@ REDIS_HOST = "redis-superset" REDIS_PORT = "6379" class CeleryConfig: - BROKER_URL = 'redis://%s:%s/0' % (REDIS_HOST, REDIS_PORT) - CELERY_IMPORTS = ('superset.sql_lab', "superset.tasks", "superset.tasks.thumbnails", ) - CELERY_RESULT_BACKEND = 'redis://%s:%s/0' % (REDIS_HOST, REDIS_PORT) - CELERYD_PREFETCH_MULTIPLIER = 10 - CELERY_ACKS_LATE = True - CELERY_ANNOTATIONS = { + broker_url = 'redis://%s:%s/0' % (REDIS_HOST, REDIS_PORT) + imports = ('superset.sql_lab', "superset.tasks", "superset.tasks.thumbnails", ) + result_backend = 'redis://%s:%s/0' % (REDIS_HOST, REDIS_PORT) + worker_prefetch_multiplier = 10 + task_acks_late = True + task_annotations = { 'sql_lab.get_sql_results': { 'rate_limit': '100/s', }, @@ -105,7 +105,7 @@ class CeleryConfig: 'ignore_result': True, }, } - CELERYBEAT_SCHEDULE = { + beat_schedule = { 'reports.scheduler': { 'task': 'reports.scheduler', 'schedule': crontab(minute='*', hour='*'), diff --git a/docs/docs/installation/async-queries-celery.mdx b/docs/docs/installation/async-queries-celery.mdx index 7c19a9405cf09..b742d8c6b52c2 100644 --- a/docs/docs/installation/async-queries-celery.mdx +++ b/docs/docs/installation/async-queries-celery.mdx @@ -23,16 +23,16 @@ and web server processes should have the same configuration. ```python class CeleryConfig(object): - BROKER_URL = 'redis://localhost:6379/0' - CELERY_IMPORTS = ( + broker_url = 'redis://localhost:6379/0' + imports = ( 'superset.sql_lab', 'superset.tasks', ) - CELERY_RESULT_BACKEND = 'redis://localhost:6379/0' - CELERYD_LOG_LEVEL = 'DEBUG' - CELERYD_PREFETCH_MULTIPLIER = 10 - CELERY_ACKS_LATE = True - CELERY_ANNOTATIONS = { + result_backend = 'redis://localhost:6379/0' + worker_log_level = 'DEBUG' + worker_prefetch_multiplier = 10 + task_acks_late = True + task_annotations = { 'sql_lab.get_sql_results': { 'rate_limit': '100/s', }, @@ -43,7 +43,7 @@ class CeleryConfig(object): 'ignore_result': True, }, } - CELERYBEAT_SCHEDULE = { + beat_schedule = { 'email_reports.schedule_hourly': { 'task': 'email_reports.schedule_hourly', 'schedule': crontab(minute=1, hour='*'), diff --git a/docs/docs/installation/cache.mdx b/docs/docs/installation/cache.mdx index 2cf56c1812937..df2fc1471d29d 100644 --- a/docs/docs/installation/cache.mdx +++ b/docs/docs/installation/cache.mdx @@ -85,11 +85,11 @@ from s3cache.s3cache import S3Cache ... class CeleryConfig(object): - BROKER_URL = "redis://localhost:6379/0" - CELERY_IMPORTS = ("superset.sql_lab", "superset.tasks", "superset.tasks.thumbnails") - CELERY_RESULT_BACKEND = "redis://localhost:6379/0" - CELERYD_PREFETCH_MULTIPLIER = 10 - CELERY_ACKS_LATE = True + broker_url = "redis://localhost:6379/0" + imports = ("superset.sql_lab", "superset.tasks", "superset.tasks.thumbnails") + result_backend = "redis://localhost:6379/0" + worker_prefetch_multiplier = 10 + task_acks_late = True CELERY_CONFIG = CeleryConfig diff --git a/docs/docs/installation/configuring-superset.mdx b/docs/docs/installation/configuring-superset.mdx index 4c504e8c8c7b2..86bddda180f30 100644 --- a/docs/docs/installation/configuring-superset.mdx +++ b/docs/docs/installation/configuring-superset.mdx @@ -10,7 +10,7 @@ version: 1 ### Configuration To configure your application, you need to create a file `superset_config.py` and add it to your -`PYTHONPATH`. If your applcation was installed using docker-compose an alternative configuration is required. See [https://github.com/apache/superset/tree/master/docker#readme](https://github.com/apache/superset/tree/master/docker#readme) for details. +`PYTHONPATH`. If your application was installed using docker-compose an alternative configuration is required. See [https://github.com/apache/superset/tree/master/docker#readme](https://github.com/apache/superset/tree/master/docker#readme) for details. Here are some of the parameters you can set in that file: ``` @@ -251,10 +251,10 @@ A current list of feature flags can be found in [RESOURCES/FEATURE_FLAGS.md](htt If you want to rotate the SECRET_KEY(change the existing secret key), follow the below steps. -# Add the new SECRET_KEY and PREVIOUS_SECRET_KEY +Add the new SECRET_KEY and PREVIOUS_SECRET_KEY to `superset_config.py`: ```python PREVIOUS_SECRET_KEY = 'CURRENT_SECRET_KEY' # The default SECRET_KEY for deployment is '21thisismyscretkey12eyyh' SECRET_KEY = 'YOUR_OWN_RANDOM_GENERATED_SECRET_KEY' ``` -# Then run `superset re-encrypt-secrets` +Then run `superset re-encrypt-secrets` diff --git a/docs/docs/installation/running-on-kubernetes.mdx b/docs/docs/installation/running-on-kubernetes.mdx index d87359f146089..b009c722e622f 100644 --- a/docs/docs/installation/running-on-kubernetes.mdx +++ b/docs/docs/installation/running-on-kubernetes.mdx @@ -344,12 +344,10 @@ configOverrides: from celery.schedules import crontab class CeleryConfig(object): - BROKER_URL = f"redis://{env('REDIS_HOST')}:{env('REDIS_PORT')}/0" - CELERY_IMPORTS = ('superset.sql_lab', ) - CELERY_RESULT_BACKEND = f"redis://{env('REDIS_HOST')}:{env('REDIS_PORT')}/0" - CELERY_ANNOTATIONS = {'tasks.add': {'rate_limit': '10/s'}} - CELERY_IMPORTS = ('superset.sql_lab', "superset.tasks", "superset.tasks.thumbnails", ) - CELERY_ANNOTATIONS = { + broker_url = f"redis://{env('REDIS_HOST')}:{env('REDIS_PORT')}/0" + imports = ('superset.sql_lab', "superset.tasks", "superset.tasks.thumbnails", ) + result_backend = f"redis://{env('REDIS_HOST')}:{env('REDIS_PORT')}/0" + task_annotations = { 'sql_lab.get_sql_results': { 'rate_limit': '100/s', }, @@ -360,7 +358,7 @@ configOverrides: 'ignore_result': True, }, } - CELERYBEAT_SCHEDULE = { + beat_schedule = { 'reports.scheduler': { 'task': 'reports.scheduler', 'schedule': crontab(minute='*', hour='*'), diff --git a/docs/docs/installation/sql-templating.mdx b/docs/docs/installation/sql-templating.mdx index 8bb419ca127d8..40f0744fba6d0 100644 --- a/docs/docs/installation/sql-templating.mdx +++ b/docs/docs/installation/sql-templating.mdx @@ -120,7 +120,7 @@ In this section, we'll walkthrough the pre-defined Jinja macros in Superset. The `{{ current_username() }}` macro returns the username of the currently logged in user. If you have caching enabled in your Superset configuration, then by default the the `username` value will be used -by Superset when calculating the cache key. A cache key is a unique identifer that determines if there's a +by Superset when calculating the cache key. A cache key is a unique identifier that determines if there's a cache hit in the future and Superset can retrieve cached data. You can disable the inclusion of the `username` value in the calculation of the @@ -134,8 +134,8 @@ cache key by adding the following parameter to your Jinja code: The `{{ current_user_id() }}` macro returns the user_id of the currently logged in user. -If you have caching enabled in your Superset configuration, then by defaul the the `user_id` value will be used -by Superset when calculating the cache key. A cache key is a unique identifer that determines if there's a +If you have caching enabled in your Superset configuration, then by default the the `user_id` value will be used +by Superset when calculating the cache key. A cache key is a unique identifier that determines if there's a cache hit in the future and Superset can retrieve cached data. You can disable the inclusion of the `user_id` value in the calculation of the diff --git a/docs/docusaurus.config.js b/docs/docusaurus.config.js index 30780530397f2..5e9fb3cef556b 100644 --- a/docs/docusaurus.config.js +++ b/docs/docusaurus.config.js @@ -204,7 +204,7 @@ const config = { }, { label: 'Slack', - href: 'https://join.slack.com/t/apache-superset/shared_invite/zt-uxbh5g36-AISUtHbzOXcu0BIj7kgUaw', + href: 'https://join.slack.com/t/apache-superset/shared_invite/zt-16jvzmoi8-sI7jKWp~xc2zYRe~NqiY9Q', }, { label: 'Mailing List', diff --git a/docs/package-lock.json b/docs/package-lock.json deleted file mode 100644 index 1936871d1af01..0000000000000 --- a/docs/package-lock.json +++ /dev/null @@ -1,13541 +0,0 @@ -{ - "name": "docs-v-2", - "version": "0.0.0", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "@algolia/autocomplete-core": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.5.2.tgz", - "integrity": "sha512-DY0bhyczFSS1b/CqJlTE/nQRtnTAHl6IemIkBy0nEWnhDzRDdtdx4p5Uuk3vwAFxwEEgi1WqKwgSSMx6DpNL4A==", - "requires": { - "@algolia/autocomplete-shared": "1.5.2" - } - }, - "@algolia/autocomplete-preset-algolia": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.5.2.tgz", - "integrity": "sha512-3MRYnYQFJyovANzSX2CToS6/5cfVjbLLqFsZTKcvF3abhQzxbqwwaMBlJtt620uBUOeMzhdfasKhCc40+RHiZw==", - "requires": { - "@algolia/autocomplete-shared": "1.5.2" - } - }, - "@algolia/autocomplete-shared": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.5.2.tgz", - "integrity": "sha512-ylQAYv5H0YKMfHgVWX0j0NmL8XBcAeeeVQUmppnnMtzDbDnca6CzhKj3Q8eF9cHCgcdTDdb5K+3aKyGWA0obug==" - }, - "@algolia/cache-browser-local-storage": { - "version": "4.12.2", - "resolved": "https://registry.npmjs.org/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.12.2.tgz", - "integrity": "sha512-z8LjFsQc0B6h6LEE3pkUGM4ErVktn6bkFbhnYbTccjmFVQ+wXFJd/D63e0WtaC+hwRB1xq8uKhkz9oojEKEsGA==", - "requires": { - "@algolia/cache-common": "4.12.2" - } - }, - "@algolia/cache-common": { - "version": "4.12.2", - "resolved": "https://registry.npmjs.org/@algolia/cache-common/-/cache-common-4.12.2.tgz", - "integrity": "sha512-r//r7MF0Na0HxD2BHnjWsDKuI72Z5UEf/Rb/8MC08XKBsjCwBihGxWxycjRcNGjNEIxJBsvRMIEOipcd9qD54g==" - }, - "@algolia/cache-in-memory": { - "version": "4.12.2", - "resolved": "https://registry.npmjs.org/@algolia/cache-in-memory/-/cache-in-memory-4.12.2.tgz", - "integrity": "sha512-opWpbBUloP1fcTG3wBDnAfcoyNXW5GFDgGtLXrSANdfnelPKkr3O8j01ZTkRlPIuBDR0izGZG8MVWMDlTf71Bw==", - "requires": { - "@algolia/cache-common": "4.12.2" - } - }, - "@algolia/client-account": { - "version": "4.12.2", - "resolved": "https://registry.npmjs.org/@algolia/client-account/-/client-account-4.12.2.tgz", - "integrity": "sha512-HZqEyeVVjzOlfoSUyc+7+ueEJmRgqSuC+hqQOGECYa5JVno4d8eRVuDAMOb87I2LOdg/WoFMcAtaaRq2gpfV/w==", - "requires": { - "@algolia/client-common": "4.12.2", - "@algolia/client-search": "4.12.2", - "@algolia/transporter": "4.12.2" - } - }, - "@algolia/client-analytics": { - "version": "4.12.2", - "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-4.12.2.tgz", - "integrity": "sha512-7ktimzesu+vk3l+eG9w/nQh6/9AoIieCKmoiRIguKh6okGsaSBrcTHvUwIQEIiliqPuAFBk2M8eXYFqOZzwCZw==", - "requires": { - "@algolia/client-common": "4.12.2", - "@algolia/client-search": "4.12.2", - "@algolia/requester-common": "4.12.2", - "@algolia/transporter": "4.12.2" - } - }, - "@algolia/client-common": { - "version": "4.12.2", - "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.12.2.tgz", - "integrity": "sha512-+dTicT1lklwOpeoiDspUoRSQYHhrr2IzllrX89/WuTPEBm2eww1xurqrSTQYC0MuVeX1s9/i4k34Q0ZnspypWg==", - "requires": { - "@algolia/requester-common": "4.12.2", - "@algolia/transporter": "4.12.2" - } - }, - "@algolia/client-personalization": { - "version": "4.12.2", - "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-4.12.2.tgz", - "integrity": "sha512-JBW3vYFGIm5sAAy3cLUdmUCpmSAdreo5S1fERg7xgF6KyxGrwyy5BViTNWrOKG+av2yusk1wKydOYJ1Fbpbaxw==", - "requires": { - "@algolia/client-common": "4.12.2", - "@algolia/requester-common": "4.12.2", - "@algolia/transporter": "4.12.2" - } - }, - "@algolia/client-search": { - "version": "4.12.2", - "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.12.2.tgz", - "integrity": "sha512-JIqi14TgfEqAooNbSPBC1ZCk3Pnviqlaz9KofAqWBxSRTpPUFnU/XQCU5ihR0PC68SFVDnU/Y9cak/XotXPUeg==", - "requires": { - "@algolia/client-common": "4.12.2", - "@algolia/requester-common": "4.12.2", - "@algolia/transporter": "4.12.2" - } - }, - "@algolia/events": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@algolia/events/-/events-4.0.1.tgz", - "integrity": "sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ==" - }, - "@algolia/logger-common": { - "version": "4.12.2", - "resolved": "https://registry.npmjs.org/@algolia/logger-common/-/logger-common-4.12.2.tgz", - "integrity": "sha512-iOiJAymLjq137G7+8EQuUEkrgta0cZGMg6scp8s4hJ+X6k+6By4nyptdkCWYwKLsW/Xy927QcIhGlkWV78vQIQ==" - }, - "@algolia/logger-console": { - "version": "4.12.2", - "resolved": "https://registry.npmjs.org/@algolia/logger-console/-/logger-console-4.12.2.tgz", - "integrity": "sha512-veuQZyTSqHoHJtr9mLMnYeal9Mee6hCie4eqY+645VbeOrgT9p/kCMbKg5GLJGoLPlXGu7C0XpHyUj5k7/NQyw==", - "requires": { - "@algolia/logger-common": "4.12.2" - } - }, - "@algolia/requester-browser-xhr": { - "version": "4.12.2", - "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.12.2.tgz", - "integrity": "sha512-FpFdHNd81tS3zj6Glqd+lt+RV0ljPExKtx+QB+gani6HWZ9YlSCM+Zl82T4ibxN+hmkrMeAyT+TMzS0jiGhGyQ==", - "requires": { - "@algolia/requester-common": "4.12.2" - } - }, - "@algolia/requester-common": { - "version": "4.12.2", - "resolved": "https://registry.npmjs.org/@algolia/requester-common/-/requester-common-4.12.2.tgz", - "integrity": "sha512-4szj/lvDQf/u8EyyRBBRZD1ZkKDyLBbckLj7meQDlnbfwnW1UpLwpB2l3XJ9wDmDSftGxUCeTl5oMFe4z9OEvQ==" - }, - "@algolia/requester-node-http": { - "version": "4.12.2", - "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.12.2.tgz", - "integrity": "sha512-UXfJNZt2KMwjBjiOa3cJ/PyoXWZa/F1vy6rdyG4xQeZDcLbqKP3O2b+bOJcGPmFbmdwBhtAyMVLt+hvAvAVfOw==", - "requires": { - "@algolia/requester-common": "4.12.2" - } - }, - "@algolia/transporter": { - "version": "4.12.2", - "resolved": "https://registry.npmjs.org/@algolia/transporter/-/transporter-4.12.2.tgz", - "integrity": "sha512-PUq79if4CukXsm27ymTQ3eD3juSvMcyJmt6mxCkSFE0zQRL4ert61HBlNH6S9y/quUVe3g7oggfHq3d5pdpqZA==", - "requires": { - "@algolia/cache-common": "4.12.2", - "@algolia/logger-common": "4.12.2", - "@algolia/requester-common": "4.12.2" - } - }, - "@ampproject/remapping": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.1.2.tgz", - "integrity": "sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg==", - "requires": { - "@jridgewell/trace-mapping": "^0.3.0" - } - }, - "@ant-design/colors": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@ant-design/colors/-/colors-6.0.0.tgz", - "integrity": "sha512-qAZRvPzfdWHtfameEGP2Qvuf838NhergR35o+EuVyB5XvSA98xod5r4utvi4TJ3ywmevm290g9nsCG5MryrdWQ==", - "requires": { - "@ctrl/tinycolor": "^3.4.0" - } - }, - "@ant-design/icons": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/@ant-design/icons/-/icons-4.7.0.tgz", - "integrity": "sha512-aoB4Z7JA431rt6d4u+8xcNPPCrdufSRMUOpxa1ab6mz1JCQZOEVolj2WVs/tDFmN62zzK30mNelEsprLYsSF3g==", - "requires": { - "@ant-design/colors": "^6.0.0", - "@ant-design/icons-svg": "^4.2.1", - "@babel/runtime": "^7.11.2", - "classnames": "^2.2.6", - "rc-util": "^5.9.4" - } - }, - "@ant-design/icons-svg": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@ant-design/icons-svg/-/icons-svg-4.2.1.tgz", - "integrity": "sha512-EB0iwlKDGpG93hW8f85CTJTs4SvMX7tt5ceupvhALp1IF44SeUFOMhKUOYqpsoYWQKAOuTRDMqn75rEaKDp0Xw==" - }, - "@ant-design/react-slick": { - "version": "0.28.4", - "resolved": "https://registry.npmjs.org/@ant-design/react-slick/-/react-slick-0.28.4.tgz", - "integrity": "sha512-j9eAHTn7GxbXUFNknJoHS2ceAsqrQi2j8XykjZE1IXCD8kJF+t28EvhBLniDpbOsBk/3kjalnhriTfZcjBHNqg==", - "requires": { - "@babel/runtime": "^7.10.4", - "classnames": "^2.2.5", - "json2mq": "^0.2.0", - "lodash": "^4.17.21", - "resize-observer-polyfill": "^1.5.0" - } - }, - "@babel/code-frame": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", - "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", - "requires": { - "@babel/highlight": "^7.16.7" - } - }, - "@babel/compat-data": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.8.tgz", - "integrity": "sha512-m7OkX0IdKLKPpBlJtF561YJal5y/jyI5fNfWbPxh2D/nbzzGI4qRyrD8xO2jB24u7l+5I2a43scCG2IrfjC50Q==" - }, - "@babel/core": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.7.tgz", - "integrity": "sha512-aeLaqcqThRNZYmbMqtulsetOQZ/5gbR/dWruUCJcpas4Qoyy+QeagfDsPdMrqwsPRDNxJvBlRiZxxX7THO7qtA==", - "requires": { - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.16.7", - "@babel/helper-compilation-targets": "^7.16.7", - "@babel/helper-module-transforms": "^7.16.7", - "@babel/helpers": "^7.16.7", - "@babel/parser": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.16.7", - "@babel/types": "^7.16.7", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.1.2", - "semver": "^6.3.0", - "source-map": "^0.5.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - } - } - }, - "@babel/generator": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.8.tgz", - "integrity": "sha512-1ojZwE9+lOXzcWdWmO6TbUzDfqLD39CmEhN8+2cX9XkDo5yW1OpgfejfliysR2AWLpMamTiOiAp/mtroaymhpw==", - "requires": { - "@babel/types": "^7.16.8", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - } - }, - "@babel/helper-annotate-as-pure": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", - "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", - "requires": { - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz", - "integrity": "sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA==", - "requires": { - "@babel/helper-explode-assignable-expression": "^7.16.7", - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-compilation-targets": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.7.tgz", - "integrity": "sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA==", - "requires": { - "@babel/compat-data": "^7.16.4", - "@babel/helper-validator-option": "^7.16.7", - "browserslist": "^4.17.5", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - } - } - }, - "@babel/helper-create-class-features-plugin": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.7.tgz", - "integrity": "sha512-kIFozAvVfK05DM4EVQYKK+zteWvY85BFdGBRQBytRyY3y+6PX0DkDOn/CZ3lEuczCfrCxEzwt0YtP/87YPTWSw==", - "requires": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-member-expression-to-functions": "^7.16.7", - "@babel/helper-optimise-call-expression": "^7.16.7", - "@babel/helper-replace-supers": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7" - } - }, - "@babel/helper-create-regexp-features-plugin": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.7.tgz", - "integrity": "sha512-fk5A6ymfp+O5+p2yCkXAu5Kyj6v0xh0RBeNcAkYUMDvvAAoxvSKXn+Jb37t/yWFiQVDFK1ELpUTD8/aLhCPu+g==", - "requires": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "regexpu-core": "^4.7.1" - } - }, - "@babel/helper-define-polyfill-provider": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.0.tgz", - "integrity": "sha512-7hfT8lUljl/tM3h+izTX/pO3W3frz2ok6Pk+gzys8iJqDfZrZy2pXjRTZAvG2YmfHun1X4q8/UZRLatMfqc5Tg==", - "requires": { - "@babel/helper-compilation-targets": "^7.13.0", - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/traverse": "^7.13.0", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2", - "semver": "^6.1.2" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - } - } - }, - "@babel/helper-environment-visitor": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", - "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", - "requires": { - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-explode-assignable-expression": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz", - "integrity": "sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ==", - "requires": { - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-function-name": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz", - "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==", - "requires": { - "@babel/helper-get-function-arity": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz", - "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==", - "requires": { - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-hoist-variables": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", - "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", - "requires": { - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-member-expression-to-functions": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.7.tgz", - "integrity": "sha512-VtJ/65tYiU/6AbMTDwyoXGPKHgTsfRarivm+YbB5uAzKUyuPjgZSgAFeG87FCigc7KNHu2Pegh1XIT3lXjvz3Q==", - "requires": { - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-module-imports": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", - "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", - "requires": { - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-module-transforms": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.7.tgz", - "integrity": "sha512-gaqtLDxJEFCeQbYp9aLAefjhkKdjKcdh6DB7jniIGU3Pz52WAmP268zK0VgPz9hUNkMSYeH976K2/Y6yPadpng==", - "requires": { - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-simple-access": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/helper-validator-identifier": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.16.7", - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-optimise-call-expression": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz", - "integrity": "sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==", - "requires": { - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==" - }, - "@babel/helper-remap-async-to-generator": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz", - "integrity": "sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw==", - "requires": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-wrap-function": "^7.16.8", - "@babel/types": "^7.16.8" - } - }, - "@babel/helper-replace-supers": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz", - "integrity": "sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==", - "requires": { - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-member-expression-to-functions": "^7.16.7", - "@babel/helper-optimise-call-expression": "^7.16.7", - "@babel/traverse": "^7.16.7", - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-simple-access": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz", - "integrity": "sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g==", - "requires": { - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", - "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", - "requires": { - "@babel/types": "^7.16.0" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", - "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", - "requires": { - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==" - }, - "@babel/helper-validator-option": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", - "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==" - }, - "@babel/helper-wrap-function": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz", - "integrity": "sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw==", - "requires": { - "@babel/helper-function-name": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.16.8", - "@babel/types": "^7.16.8" - } - }, - "@babel/helpers": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.7.tgz", - "integrity": "sha512-9ZDoqtfY7AuEOt3cxchfii6C7GDyyMBffktR5B2jvWv8u2+efwvpnVKXMWzNehqy68tKgAfSwfdw/lWpthS2bw==", - "requires": { - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.16.7", - "@babel/types": "^7.16.7" - } - }, - "@babel/highlight": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.7.tgz", - "integrity": "sha512-aKpPMfLvGO3Q97V0qhw/V2SWNWlwfJknuwAunU7wZLSfrM4xTBvg7E5opUVi1kJTBKihE38CPg4nBiqX83PWYw==", - "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "dependencies": { - "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" - } - } - } - }, - "@babel/parser": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.8.tgz", - "integrity": "sha512-i7jDUfrVBWc+7OKcBzEe5n7fbv3i2fWtxKzzCvOjnzSxMfWMigAhtfJ7qzZNGFNMsCCd67+uz553dYKWXPvCKw==" - }, - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.16.7", - "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.16.7.tgz", - "integrity": "sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg==", - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7.tgz", - "integrity": "sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw==", - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", - "@babel/plugin-proposal-optional-chaining": "^7.16.7" - } - }, - "@babel/plugin-proposal-async-generator-functions": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.8.tgz", - "integrity": "sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-remap-async-to-generator": "^7.16.8", - "@babel/plugin-syntax-async-generators": "^7.8.4" - } - }, - "@babel/plugin-proposal-class-properties": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz", - "integrity": "sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww==", - "requires": { - "@babel/helper-create-class-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-proposal-class-static-block": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.7.tgz", - "integrity": "sha512-dgqJJrcZoG/4CkMopzhPJjGxsIe9A8RlkQLnL/Vhhx8AA9ZuaRwGSlscSh42hazc7WSrya/IK7mTeoF0DP9tEw==", - "requires": { - "@babel/helper-create-class-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-class-static-block": "^7.14.5" - } - }, - "@babel/plugin-proposal-dynamic-import": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz", - "integrity": "sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==", - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" - } - }, - "@babel/plugin-proposal-export-namespace-from": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz", - "integrity": "sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA==", - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" - } - }, - "@babel/plugin-proposal-json-strings": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz", - "integrity": "sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-json-strings": "^7.8.3" - } - }, - "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz", - "integrity": "sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg==", - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" - } - }, - "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz", - "integrity": "sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" - } - }, - "@babel/plugin-proposal-numeric-separator": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz", - "integrity": "sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==", - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - } - }, - "@babel/plugin-proposal-object-rest-spread": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.7.tgz", - "integrity": "sha512-3O0Y4+dw94HA86qSg9IHfyPktgR7q3gpNVAeiKQd+8jBKFaU5NQS1Yatgo4wY+UFNuLjvxcSmzcsHqrhgTyBUA==", - "requires": { - "@babel/compat-data": "^7.16.4", - "@babel/helper-compilation-targets": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.16.7" - } - }, - "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz", - "integrity": "sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==", - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" - } - }, - "@babel/plugin-proposal-optional-chaining": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz", - "integrity": "sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA==", - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" - } - }, - "@babel/plugin-proposal-private-methods": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.7.tgz", - "integrity": "sha512-7twV3pzhrRxSwHeIvFE6coPgvo+exNDOiGUMg39o2LiLo1Y+4aKpfkcLGcg1UHonzorCt7SNXnoMyCnnIOA8Sw==", - "requires": { - "@babel/helper-create-class-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-proposal-private-property-in-object": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz", - "integrity": "sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ==", - "requires": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-create-class-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" - } - }, - "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz", - "integrity": "sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg==", - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@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==", - "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==", - "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==", - "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==", - "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==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@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==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-jsx": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.7.tgz", - "integrity": "sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q==", - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@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==", - "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==", - "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==", - "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==", - "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==", - "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==", - "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==", - "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==", - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-typescript": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.7.tgz", - "integrity": "sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A==", - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-arrow-functions": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz", - "integrity": "sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-async-to-generator": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.8.tgz", - "integrity": "sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg==", - "requires": { - "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-remap-async-to-generator": "^7.16.8" - } - }, - "@babel/plugin-transform-block-scoped-functions": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz", - "integrity": "sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==", - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-block-scoping": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz", - "integrity": "sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-classes": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz", - "integrity": "sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ==", - "requires": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-optimise-call-expression": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-replace-supers": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "globals": "^11.1.0" - } - }, - "@babel/plugin-transform-computed-properties": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz", - "integrity": "sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw==", - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-destructuring": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.7.tgz", - "integrity": "sha512-VqAwhTHBnu5xBVDCvrvqJbtLUa++qZaWC0Fgr2mqokBlulZARGyIvZDoqbPlPaKImQ9dKAcCzbv+ul//uqu70A==", - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-dotall-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz", - "integrity": "sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==", - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-duplicate-keys": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz", - "integrity": "sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw==", - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-exponentiation-operator": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz", - "integrity": "sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==", - "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-for-of": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz", - "integrity": "sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg==", - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-function-name": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz", - "integrity": "sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==", - "requires": { - "@babel/helper-compilation-targets": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-literals": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz", - "integrity": "sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-member-expression-literals": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz", - "integrity": "sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw==", - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-modules-amd": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.7.tgz", - "integrity": "sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g==", - "requires": { - "@babel/helper-module-transforms": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "babel-plugin-dynamic-import-node": "^2.3.3" - }, - "dependencies": { - "babel-plugin-dynamic-import-node": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", - "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", - "requires": { - "object.assign": "^4.1.0" - } - } - } - }, - "@babel/plugin-transform-modules-commonjs": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.8.tgz", - "integrity": "sha512-oflKPvsLT2+uKQopesJt3ApiaIS2HW+hzHFcwRNtyDGieAeC/dIHZX8buJQ2J2X1rxGPy4eRcUijm3qcSPjYcA==", - "requires": { - "@babel/helper-module-transforms": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-simple-access": "^7.16.7", - "babel-plugin-dynamic-import-node": "^2.3.3" - }, - "dependencies": { - "babel-plugin-dynamic-import-node": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", - "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", - "requires": { - "object.assign": "^4.1.0" - } - } - } - }, - "@babel/plugin-transform-modules-systemjs": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.7.tgz", - "integrity": "sha512-DuK5E3k+QQmnOqBR9UkusByy5WZWGRxfzV529s9nPra1GE7olmxfqO2FHobEOYSPIjPBTr4p66YDcjQnt8cBmw==", - "requires": { - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-module-transforms": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-validator-identifier": "^7.16.7", - "babel-plugin-dynamic-import-node": "^2.3.3" - }, - "dependencies": { - "babel-plugin-dynamic-import-node": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", - "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", - "requires": { - "object.assign": "^4.1.0" - } - } - } - }, - "@babel/plugin-transform-modules-umd": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz", - "integrity": "sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ==", - "requires": { - "@babel/helper-module-transforms": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.8.tgz", - "integrity": "sha512-j3Jw+n5PvpmhRR+mrgIh04puSANCk/T/UA3m3P1MjJkhlK906+ApHhDIqBQDdOgL/r1UYpz4GNclTXxyZrYGSw==", - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7" - } - }, - "@babel/plugin-transform-new-target": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz", - "integrity": "sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg==", - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-object-super": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz", - "integrity": "sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==", - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-replace-supers": "^7.16.7" - } - }, - "@babel/plugin-transform-parameters": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz", - "integrity": "sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw==", - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-property-literals": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz", - "integrity": "sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw==", - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-react-constant-elements": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.16.7.tgz", - "integrity": "sha512-lF+cfsyTgwWkcw715J88JhMYJ5GpysYNLhLP1PkvkhTRN7B3e74R/1KsDxFxhRpSn0UUD3IWM4GvdBR2PEbbQQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-react-display-name": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.16.7.tgz", - "integrity": "sha512-qgIg8BcZgd0G/Cz916D5+9kqX0c7nPZyXaP8R2tLNN5tkyIZdG5fEwBrxwplzSnjC1jvQmyMNVwUCZPcbGY7Pg==", - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-react-jsx": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.16.7.tgz", - "integrity": "sha512-8D16ye66fxiE8m890w0BpPpngG9o9OVBBy0gH2E+2AR7qMR2ZpTYJEqLxAsoroenMId0p/wMW+Blc0meDgu0Ag==", - "requires": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-jsx": "^7.16.7", - "@babel/types": "^7.16.7" - } - }, - "@babel/plugin-transform-react-jsx-development": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.16.7.tgz", - "integrity": "sha512-RMvQWvpla+xy6MlBpPlrKZCMRs2AGiHOGHY3xRwl0pEeim348dDyxeH4xBsMPbIMhujeq7ihE702eM2Ew0Wo+A==", - "requires": { - "@babel/plugin-transform-react-jsx": "^7.16.7" - } - }, - "@babel/plugin-transform-react-pure-annotations": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.16.7.tgz", - "integrity": "sha512-hs71ToC97k3QWxswh2ElzMFABXHvGiJ01IB1TbYQDGeWRKWz/MPUTh5jGExdHvosYKpnJW5Pm3S4+TA3FyX+GA==", - "requires": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-regenerator": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.7.tgz", - "integrity": "sha512-mF7jOgGYCkSJagJ6XCujSQg+6xC1M77/03K2oBmVJWoFGNUtnVJO4WHKJk3dnPC8HCcj4xBQP1Egm8DWh3Pb3Q==", - "requires": { - "regenerator-transform": "^0.14.2" - } - }, - "@babel/plugin-transform-reserved-words": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.7.tgz", - "integrity": "sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg==", - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-runtime": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.16.8.tgz", - "integrity": "sha512-6Kg2XHPFnIarNweZxmzbgYnnWsXxkx9WQUVk2sksBRL80lBC1RAQV3wQagWxdCHiYHqPN+oenwNIuttlYgIbQQ==", - "requires": { - "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "babel-plugin-polyfill-corejs2": "^0.3.0", - "babel-plugin-polyfill-corejs3": "^0.5.0", - "babel-plugin-polyfill-regenerator": "^0.3.0", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - } - } - }, - "@babel/plugin-transform-shorthand-properties": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz", - "integrity": "sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==", - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-spread": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz", - "integrity": "sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg==", - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" - } - }, - "@babel/plugin-transform-sticky-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz", - "integrity": "sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==", - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-template-literals": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz", - "integrity": "sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA==", - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-typeof-symbol": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz", - "integrity": "sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-typescript": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.16.8.tgz", - "integrity": "sha512-bHdQ9k7YpBDO2d0NVfkj51DpQcvwIzIusJ7mEUaMlbZq3Kt/U47j24inXZHQ5MDiYpCs+oZiwnXyKedE8+q7AQ==", - "requires": { - "@babel/helper-create-class-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-typescript": "^7.16.7" - } - }, - "@babel/plugin-transform-unicode-escapes": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz", - "integrity": "sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q==", - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-unicode-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz", - "integrity": "sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==", - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/preset-env": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.8.tgz", - "integrity": "sha512-9rNKgVCdwHb3z1IlbMyft6yIXIeP3xz6vWvGaLHrJThuEIqWfHb0DNBH9VuTgnDfdbUDhkmkvMZS/YMCtP7Elg==", - "requires": { - "@babel/compat-data": "^7.16.8", - "@babel/helper-compilation-targets": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-validator-option": "^7.16.7", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.7", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.7", - "@babel/plugin-proposal-async-generator-functions": "^7.16.8", - "@babel/plugin-proposal-class-properties": "^7.16.7", - "@babel/plugin-proposal-class-static-block": "^7.16.7", - "@babel/plugin-proposal-dynamic-import": "^7.16.7", - "@babel/plugin-proposal-export-namespace-from": "^7.16.7", - "@babel/plugin-proposal-json-strings": "^7.16.7", - "@babel/plugin-proposal-logical-assignment-operators": "^7.16.7", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.7", - "@babel/plugin-proposal-numeric-separator": "^7.16.7", - "@babel/plugin-proposal-object-rest-spread": "^7.16.7", - "@babel/plugin-proposal-optional-catch-binding": "^7.16.7", - "@babel/plugin-proposal-optional-chaining": "^7.16.7", - "@babel/plugin-proposal-private-methods": "^7.16.7", - "@babel/plugin-proposal-private-property-in-object": "^7.16.7", - "@babel/plugin-proposal-unicode-property-regex": "^7.16.7", - "@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-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.16.7", - "@babel/plugin-transform-async-to-generator": "^7.16.8", - "@babel/plugin-transform-block-scoped-functions": "^7.16.7", - "@babel/plugin-transform-block-scoping": "^7.16.7", - "@babel/plugin-transform-classes": "^7.16.7", - "@babel/plugin-transform-computed-properties": "^7.16.7", - "@babel/plugin-transform-destructuring": "^7.16.7", - "@babel/plugin-transform-dotall-regex": "^7.16.7", - "@babel/plugin-transform-duplicate-keys": "^7.16.7", - "@babel/plugin-transform-exponentiation-operator": "^7.16.7", - "@babel/plugin-transform-for-of": "^7.16.7", - "@babel/plugin-transform-function-name": "^7.16.7", - "@babel/plugin-transform-literals": "^7.16.7", - "@babel/plugin-transform-member-expression-literals": "^7.16.7", - "@babel/plugin-transform-modules-amd": "^7.16.7", - "@babel/plugin-transform-modules-commonjs": "^7.16.8", - "@babel/plugin-transform-modules-systemjs": "^7.16.7", - "@babel/plugin-transform-modules-umd": "^7.16.7", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.8", - "@babel/plugin-transform-new-target": "^7.16.7", - "@babel/plugin-transform-object-super": "^7.16.7", - "@babel/plugin-transform-parameters": "^7.16.7", - "@babel/plugin-transform-property-literals": "^7.16.7", - "@babel/plugin-transform-regenerator": "^7.16.7", - "@babel/plugin-transform-reserved-words": "^7.16.7", - "@babel/plugin-transform-shorthand-properties": "^7.16.7", - "@babel/plugin-transform-spread": "^7.16.7", - "@babel/plugin-transform-sticky-regex": "^7.16.7", - "@babel/plugin-transform-template-literals": "^7.16.7", - "@babel/plugin-transform-typeof-symbol": "^7.16.7", - "@babel/plugin-transform-unicode-escapes": "^7.16.7", - "@babel/plugin-transform-unicode-regex": "^7.16.7", - "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.16.8", - "babel-plugin-polyfill-corejs2": "^0.3.0", - "babel-plugin-polyfill-corejs3": "^0.5.0", - "babel-plugin-polyfill-regenerator": "^0.3.0", - "core-js-compat": "^3.20.2", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - } - } - }, - "@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==", - "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/preset-react": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.16.7.tgz", - "integrity": "sha512-fWpyI8UM/HE6DfPBzD8LnhQ/OcH8AgTaqcqP2nGOXEUV+VKBR5JRN9hCk9ai+zQQ57vtm9oWeXguBCPNUjytgA==", - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-validator-option": "^7.16.7", - "@babel/plugin-transform-react-display-name": "^7.16.7", - "@babel/plugin-transform-react-jsx": "^7.16.7", - "@babel/plugin-transform-react-jsx-development": "^7.16.7", - "@babel/plugin-transform-react-pure-annotations": "^7.16.7" - } - }, - "@babel/preset-typescript": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.16.7.tgz", - "integrity": "sha512-WbVEmgXdIyvzB77AQjGBEyYPZx+8tTsO50XtfozQrkW8QB2rLJpH2lgx0TRw5EJrBxOZQ+wCcyPVQvS8tjEHpQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-validator-option": "^7.16.7", - "@babel/plugin-transform-typescript": "^7.16.7" - } - }, - "@babel/runtime": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.7.tgz", - "integrity": "sha512-9E9FJowqAsytyOY6LG+1KuueckRL+aQW+mKvXRXnuFGyRAyepJPmEo9vgMfXUA6O9u3IeEdv9MAkppFcaQwogQ==", - "requires": { - "regenerator-runtime": "^0.13.4" - } - }, - "@babel/runtime-corejs3": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.16.8.tgz", - "integrity": "sha512-3fKhuICS1lMz0plI5ktOE/yEtBRMVxplzRkdn6mJQ197XiY0JnrzYV0+Mxozq3JZ8SBV9Ecurmw1XsGbwOf+Sg==", - "requires": { - "core-js-pure": "^3.20.2", - "regenerator-runtime": "^0.13.4" - } - }, - "@babel/template": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", - "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", - "requires": { - "@babel/code-frame": "^7.16.7", - "@babel/parser": "^7.16.7", - "@babel/types": "^7.16.7" - } - }, - "@babel/traverse": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.8.tgz", - "integrity": "sha512-xe+H7JlvKsDQwXRsBhSnq1/+9c+LlQcCK3Tn/l5sbx02HYns/cn7ibp9+RV1sIUqu7hKg91NWsgHurO9dowITQ==", - "requires": { - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.16.8", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.16.8", - "@babel/types": "^7.16.8", - "debug": "^4.1.0", - "globals": "^11.1.0" - } - }, - "@babel/types": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.8.tgz", - "integrity": "sha512-smN2DQc5s4M7fntyjGtyIPbRJv6wW4rU/94fmYJ7PKQuZkC0qGMHXJbg6sNGt12JmVr4k5YaptI/XtiLJBnmIg==", - "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" - } - }, - "@braintree/sanitize-url": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-5.0.2.tgz", - "integrity": "sha512-NBEJlHWrhQucLhZGHtSxM2loSaNUMajC7KOYJLyfcdW/6goVoff2HoYI3bz8YCDN0wKGbxtUL0gx2dvHpvnWlw==" - }, - "@ctrl/tinycolor": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.4.0.tgz", - "integrity": "sha512-JZButFdZ1+/xAfpguQHoabIXkcqRRKpMrWKBkpEZZyxfY9C1DpADFB8PEqGSTeFr135SaTRfKqGKx5xSCLI7ZQ==" - }, - "@docsearch/css": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.0.0.tgz", - "integrity": "sha512-1kkV7tkAsiuEd0shunYRByKJe3xQDG2q7wYg24SOw1nV9/2lwEd4WrUYRJC/ukGTl2/kHeFxsaUvtiOy0y6fFA==" - }, - "@docsearch/react": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-3.0.0.tgz", - "integrity": "sha512-yhMacqS6TVQYoBh/o603zszIb5Bl8MIXuOc6Vy617I74pirisDzzcNh0NEaYQt50fVVR3khUbeEhUEWEWipESg==", - "requires": { - "@algolia/autocomplete-core": "1.5.2", - "@algolia/autocomplete-preset-algolia": "1.5.2", - "@docsearch/css": "3.0.0", - "algoliasearch": "^4.0.0" - } - }, - "@docusaurus/core": { - "version": "2.0.0-beta.17", - "resolved": "https://registry.npmjs.org/@docusaurus/core/-/core-2.0.0-beta.17.tgz", - "integrity": "sha512-iNdW7CsmHNOgc4PxD9BFxa+MD8+i7ln7erOBkF3FSMMPnsKUeVqsR3rr31aLmLZRlTXMITSPLxlXwtBZa3KPCw==", - "requires": { - "@babel/core": "^7.17.5", - "@babel/generator": "^7.17.3", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-transform-runtime": "^7.17.0", - "@babel/preset-env": "^7.16.11", - "@babel/preset-react": "^7.16.7", - "@babel/preset-typescript": "^7.16.7", - "@babel/runtime": "^7.17.2", - "@babel/runtime-corejs3": "^7.17.2", - "@babel/traverse": "^7.17.3", - "@docusaurus/cssnano-preset": "2.0.0-beta.17", - "@docusaurus/logger": "2.0.0-beta.17", - "@docusaurus/mdx-loader": "2.0.0-beta.17", - "@docusaurus/react-loadable": "5.5.2", - "@docusaurus/utils": "2.0.0-beta.17", - "@docusaurus/utils-common": "2.0.0-beta.17", - "@docusaurus/utils-validation": "2.0.0-beta.17", - "@slorber/static-site-generator-webpack-plugin": "^4.0.1", - "@svgr/webpack": "^6.2.1", - "autoprefixer": "^10.4.2", - "babel-loader": "^8.2.3", - "babel-plugin-dynamic-import-node": "2.3.0", - "boxen": "^6.2.1", - "chokidar": "^3.5.3", - "clean-css": "^5.2.4", - "cli-table3": "^0.6.1", - "combine-promises": "^1.1.0", - "commander": "^5.1.0", - "copy-webpack-plugin": "^10.2.4", - "core-js": "^3.21.1", - "css-loader": "^6.6.0", - "css-minimizer-webpack-plugin": "^3.4.1", - "cssnano": "^5.0.17", - "del": "^6.0.0", - "detect-port": "^1.3.0", - "escape-html": "^1.0.3", - "eta": "^1.12.3", - "file-loader": "^6.2.0", - "fs-extra": "^10.0.1", - "html-minifier-terser": "^6.1.0", - "html-tags": "^3.1.0", - "html-webpack-plugin": "^5.5.0", - "import-fresh": "^3.3.0", - "is-root": "^2.1.0", - "leven": "^3.1.0", - "lodash": "^4.17.21", - "mini-css-extract-plugin": "^2.5.3", - "nprogress": "^0.2.0", - "postcss": "^8.4.7", - "postcss-loader": "^6.2.1", - "prompts": "^2.4.2", - "react-dev-utils": "^12.0.0", - "react-helmet-async": "^1.2.3", - "react-loadable": "npm:@docusaurus/react-loadable@5.5.2", - "react-loadable-ssr-addon-v5-slorber": "^1.0.1", - "react-router": "^5.2.0", - "react-router-config": "^5.1.1", - "react-router-dom": "^5.2.0", - "remark-admonitions": "^1.2.1", - "rtl-detect": "^1.0.4", - "semver": "^7.3.4", - "serve-handler": "^6.1.3", - "shelljs": "^0.8.5", - "terser-webpack-plugin": "^5.3.1", - "tslib": "^2.3.1", - "update-notifier": "^5.1.0", - "url-loader": "^4.1.1", - "wait-on": "^6.0.1", - "webpack": "^5.69.1", - "webpack-bundle-analyzer": "^4.5.0", - "webpack-dev-server": "^4.7.4", - "webpack-merge": "^5.8.0", - "webpackbar": "^5.0.2" - }, - "dependencies": { - "@babel/core": { - "version": "7.17.5", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.5.tgz", - "integrity": "sha512-/BBMw4EvjmyquN5O+t5eh0+YqB3XXJkYD2cjKpYtWOfFy4lQ4UozNSmxAcWT8r2XtZs0ewG+zrfsqeR15i1ajA==", - "requires": { - "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.3", - "@babel/helper-compilation-targets": "^7.16.7", - "@babel/helper-module-transforms": "^7.16.7", - "@babel/helpers": "^7.17.2", - "@babel/parser": "^7.17.3", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.3", - "@babel/types": "^7.17.0", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.1.2", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - } - } - }, - "@babel/generator": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.3.tgz", - "integrity": "sha512-+R6Dctil/MgUsZsZAkYgK+ADNSZzJRRy0TvY65T71z/CR854xHQ1EweBYXdfT+HNeN7w0cSJJEzgxZMv40pxsg==", - "requires": { - "@babel/types": "^7.17.0", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - } - }, - "@babel/helper-create-class-features-plugin": { - "version": "7.17.6", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.6.tgz", - "integrity": "sha512-SogLLSxXm2OkBbSsHZMM4tUi8fUzjs63AT/d0YQIzr6GSd8Hxsbk2KYDX0k0DweAzGMj/YWeiCsorIdtdcW8Eg==", - "requires": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-member-expression-to-functions": "^7.16.7", - "@babel/helper-optimise-call-expression": "^7.16.7", - "@babel/helper-replace-supers": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7" - } - }, - "@babel/helpers": { - "version": "7.17.2", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.2.tgz", - "integrity": "sha512-0Qu7RLR1dILozr/6M0xgj+DFPmi6Bnulgm9M8BVa9ZCWxDqlSnqt3cf8IDPB5m45sVXUZ0kuQAgUrdSFFH79fQ==", - "requires": { - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.0", - "@babel/types": "^7.17.0" - } - }, - "@babel/parser": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.3.tgz", - "integrity": "sha512-7yJPvPV+ESz2IUTPbOL+YkIGyCqOyNIzdguKQuJGnH7bg1WTIifuM21YqokFt/THWh1AkCRn9IgoykTRCBVpzA==" - }, - "@babel/plugin-proposal-private-methods": { - "version": "7.16.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.11.tgz", - "integrity": "sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw==", - "requires": { - "@babel/helper-create-class-features-plugin": "^7.16.10", - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-runtime": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.17.0.tgz", - "integrity": "sha512-fr7zPWnKXNc1xoHfrIU9mN/4XKX4VLZ45Q+oMhfsYIaHvg7mHgmhfOy/ckRWqDK7XF3QDigRpkh5DKq6+clE8A==", - "requires": { - "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "babel-plugin-polyfill-corejs2": "^0.3.0", - "babel-plugin-polyfill-corejs3": "^0.5.0", - "babel-plugin-polyfill-regenerator": "^0.3.0", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - } - } - }, - "@babel/preset-env": { - "version": "7.16.11", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.11.tgz", - "integrity": "sha512-qcmWG8R7ZW6WBRPZK//y+E3Cli151B20W1Rv7ln27vuPaXU/8TKms6jFdiJtF7UDTxcrb7mZd88tAeK9LjdT8g==", - "requires": { - "@babel/compat-data": "^7.16.8", - "@babel/helper-compilation-targets": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-validator-option": "^7.16.7", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.7", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.7", - "@babel/plugin-proposal-async-generator-functions": "^7.16.8", - "@babel/plugin-proposal-class-properties": "^7.16.7", - "@babel/plugin-proposal-class-static-block": "^7.16.7", - "@babel/plugin-proposal-dynamic-import": "^7.16.7", - "@babel/plugin-proposal-export-namespace-from": "^7.16.7", - "@babel/plugin-proposal-json-strings": "^7.16.7", - "@babel/plugin-proposal-logical-assignment-operators": "^7.16.7", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.7", - "@babel/plugin-proposal-numeric-separator": "^7.16.7", - "@babel/plugin-proposal-object-rest-spread": "^7.16.7", - "@babel/plugin-proposal-optional-catch-binding": "^7.16.7", - "@babel/plugin-proposal-optional-chaining": "^7.16.7", - "@babel/plugin-proposal-private-methods": "^7.16.11", - "@babel/plugin-proposal-private-property-in-object": "^7.16.7", - "@babel/plugin-proposal-unicode-property-regex": "^7.16.7", - "@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-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.16.7", - "@babel/plugin-transform-async-to-generator": "^7.16.8", - "@babel/plugin-transform-block-scoped-functions": "^7.16.7", - "@babel/plugin-transform-block-scoping": "^7.16.7", - "@babel/plugin-transform-classes": "^7.16.7", - "@babel/plugin-transform-computed-properties": "^7.16.7", - "@babel/plugin-transform-destructuring": "^7.16.7", - "@babel/plugin-transform-dotall-regex": "^7.16.7", - "@babel/plugin-transform-duplicate-keys": "^7.16.7", - "@babel/plugin-transform-exponentiation-operator": "^7.16.7", - "@babel/plugin-transform-for-of": "^7.16.7", - "@babel/plugin-transform-function-name": "^7.16.7", - "@babel/plugin-transform-literals": "^7.16.7", - "@babel/plugin-transform-member-expression-literals": "^7.16.7", - "@babel/plugin-transform-modules-amd": "^7.16.7", - "@babel/plugin-transform-modules-commonjs": "^7.16.8", - "@babel/plugin-transform-modules-systemjs": "^7.16.7", - "@babel/plugin-transform-modules-umd": "^7.16.7", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.8", - "@babel/plugin-transform-new-target": "^7.16.7", - "@babel/plugin-transform-object-super": "^7.16.7", - "@babel/plugin-transform-parameters": "^7.16.7", - "@babel/plugin-transform-property-literals": "^7.16.7", - "@babel/plugin-transform-regenerator": "^7.16.7", - "@babel/plugin-transform-reserved-words": "^7.16.7", - "@babel/plugin-transform-shorthand-properties": "^7.16.7", - "@babel/plugin-transform-spread": "^7.16.7", - "@babel/plugin-transform-sticky-regex": "^7.16.7", - "@babel/plugin-transform-template-literals": "^7.16.7", - "@babel/plugin-transform-typeof-symbol": "^7.16.7", - "@babel/plugin-transform-unicode-escapes": "^7.16.7", - "@babel/plugin-transform-unicode-regex": "^7.16.7", - "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.16.8", - "babel-plugin-polyfill-corejs2": "^0.3.0", - "babel-plugin-polyfill-corejs3": "^0.5.0", - "babel-plugin-polyfill-regenerator": "^0.3.0", - "core-js-compat": "^3.20.2", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - } - } - }, - "@babel/runtime": { - "version": "7.17.2", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.2.tgz", - "integrity": "sha512-hzeyJyMA1YGdJTuWU0e/j4wKXrU4OMFvY2MSlaI9B7VQb0r5cxTE3EAIS2Q7Tn2RIcDkRvTA/v2JsAEhxe99uw==", - "requires": { - "regenerator-runtime": "^0.13.4" - } - }, - "@babel/runtime-corejs3": { - "version": "7.17.2", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.17.2.tgz", - "integrity": "sha512-NcKtr2epxfIrNM4VOmPKO46TvDMCBhgi2CrSHaEarrz+Plk2K5r9QemmOFTGpZaoKnWoGH5MO+CzeRsih/Fcgg==", - "requires": { - "core-js-pure": "^3.20.2", - "regenerator-runtime": "^0.13.4" - } - }, - "@babel/traverse": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.3.tgz", - "integrity": "sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==", - "requires": { - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.3", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.17.3", - "@babel/types": "^7.17.0", - "debug": "^4.1.0", - "globals": "^11.1.0" - } - }, - "@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", - "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" - } - }, - "@docusaurus/logger": { - "version": "2.0.0-beta.17", - "resolved": "https://registry.npmjs.org/@docusaurus/logger/-/logger-2.0.0-beta.17.tgz", - "integrity": "sha512-F9JDl06/VLg+ylsvnq9NpILSUeWtl0j4H2LtlLzX5gufEL4dGiCMlnUzYdHl7FSHSzYJ0A/R7vu0SYofsexC4w==", - "requires": { - "chalk": "^4.1.2", - "tslib": "^2.3.1" - } - }, - "@svgr/babel-plugin-add-jsx-attribute": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-6.0.0.tgz", - "integrity": "sha512-MdPdhdWLtQsjd29Wa4pABdhWbaRMACdM1h31BY+c6FghTZqNGT7pEYdBoaGeKtdTOBC/XNFQaKVj+r/Ei2ryWA==" - }, - "@svgr/babel-plugin-remove-jsx-attribute": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-6.0.0.tgz", - "integrity": "sha512-aVdtfx9jlaaxc3unA6l+M9YRnKIZjOhQPthLKqmTXC8UVkBLDRGwPKo+r8n3VZN8B34+yVajzPTZ+ptTSuZZCw==" - }, - "@svgr/babel-plugin-remove-jsx-empty-expression": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-6.0.0.tgz", - "integrity": "sha512-Ccj42ApsePD451AZJJf1QzTD1B/BOU392URJTeXFxSK709i0KUsGtbwyiqsKu7vsYxpTM0IA5clAKDyf9RCZyA==" - }, - "@svgr/babel-plugin-replace-jsx-attribute-value": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-6.0.0.tgz", - "integrity": "sha512-88V26WGyt1Sfd1emBYmBJRWMmgarrExpKNVmI9vVozha4kqs6FzQJ/Kp5+EYli1apgX44518/0+t9+NU36lThQ==" - }, - "@svgr/babel-plugin-svg-dynamic-title": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-6.0.0.tgz", - "integrity": "sha512-F7YXNLfGze+xv0KMQxrl2vkNbI9kzT9oDK55/kUuymh1ACyXkMV+VZWX1zEhSTfEKh7VkHVZGmVtHg8eTZ6PRg==" - }, - "@svgr/babel-plugin-svg-em-dimensions": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-6.0.0.tgz", - "integrity": "sha512-+rghFXxdIqJNLQK08kwPBD3Z22/0b2tEZ9lKiL/yTfuyj1wW8HUXu4bo/XkogATIYuXSghVQOOCwURXzHGKyZA==" - }, - "@svgr/babel-plugin-transform-react-native-svg": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-6.0.0.tgz", - "integrity": "sha512-VaphyHZ+xIKv5v0K0HCzyfAaLhPGJXSk2HkpYfXIOKb7DjLBv0soHDxNv6X0vr2titsxE7klb++u7iOf7TSrFQ==" - }, - "@svgr/babel-plugin-transform-svg-component": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-6.2.0.tgz", - "integrity": "sha512-bhYIpsORb++wpsp91fymbFkf09Z/YEKR0DnFjxvN+8JHeCUD2unnh18jIMKnDJTWtvpTaGYPXELVe4OOzFI0xg==" - }, - "@svgr/babel-preset": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-6.2.0.tgz", - "integrity": "sha512-4WQNY0J71JIaL03DRn0vLiz87JXx0b9dYm2aA8XHlQJQoixMl4r/soYHm8dsaJZ3jWtkCiOYy48dp9izvXhDkQ==", - "requires": { - "@svgr/babel-plugin-add-jsx-attribute": "^6.0.0", - "@svgr/babel-plugin-remove-jsx-attribute": "^6.0.0", - "@svgr/babel-plugin-remove-jsx-empty-expression": "^6.0.0", - "@svgr/babel-plugin-replace-jsx-attribute-value": "^6.0.0", - "@svgr/babel-plugin-svg-dynamic-title": "^6.0.0", - "@svgr/babel-plugin-svg-em-dimensions": "^6.0.0", - "@svgr/babel-plugin-transform-react-native-svg": "^6.0.0", - "@svgr/babel-plugin-transform-svg-component": "^6.2.0" - } - }, - "@svgr/core": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/@svgr/core/-/core-6.2.1.tgz", - "integrity": "sha512-NWufjGI2WUyrg46mKuySfviEJ6IxHUOm/8a3Ph38VCWSp+83HBraCQrpEM3F3dB6LBs5x8OElS8h3C0oOJaJAA==", - "requires": { - "@svgr/plugin-jsx": "^6.2.1", - "camelcase": "^6.2.0", - "cosmiconfig": "^7.0.1" - } - }, - "@svgr/hast-util-to-babel-ast": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-6.2.1.tgz", - "integrity": "sha512-pt7MMkQFDlWJVy9ULJ1h+hZBDGFfSCwlBNW1HkLnVi7jUhyEXUaGYWi1x6bM2IXuAR9l265khBT4Av4lPmaNLQ==", - "requires": { - "@babel/types": "^7.15.6", - "entities": "^3.0.1" - } - }, - "@svgr/plugin-jsx": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-6.2.1.tgz", - "integrity": "sha512-u+MpjTsLaKo6r3pHeeSVsh9hmGRag2L7VzApWIaS8imNguqoUwDq/u6U/NDmYs/KAsrmtBjOEaAAPbwNGXXp1g==", - "requires": { - "@babel/core": "^7.15.5", - "@svgr/babel-preset": "^6.2.0", - "@svgr/hast-util-to-babel-ast": "^6.2.1", - "svg-parser": "^2.0.2" - } - }, - "@svgr/plugin-svgo": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-6.2.0.tgz", - "integrity": "sha512-oDdMQONKOJEbuKwuy4Np6VdV6qoaLLvoY86hjvQEgU82Vx1MSWRyYms6Sl0f+NtqxLI/rDVufATbP/ev996k3Q==", - "requires": { - "cosmiconfig": "^7.0.1", - "deepmerge": "^4.2.2", - "svgo": "^2.5.0" - } - }, - "@svgr/webpack": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-6.2.1.tgz", - "integrity": "sha512-h09ngMNd13hnePwgXa+Y5CgOjzlCvfWLHg+MBnydEedAnuLRzUHUJmGS3o2OsrhxTOOqEsPOFt5v/f6C5Qulcw==", - "requires": { - "@babel/core": "^7.15.5", - "@babel/plugin-transform-react-constant-elements": "^7.14.5", - "@babel/preset-env": "^7.15.6", - "@babel/preset-react": "^7.14.5", - "@babel/preset-typescript": "^7.15.0", - "@svgr/core": "^6.2.1", - "@svgr/plugin-jsx": "^6.2.1", - "@svgr/plugin-svgo": "^6.2.0" - } - }, - "@types/estree": { - "version": "0.0.51", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", - "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==" - }, - "ajv": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.10.0.tgz", - "integrity": "sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw==", - "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" - } - }, - "ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==" - }, - "ansi-styles": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.1.0.tgz", - "integrity": "sha512-VbqNsoz55SYGczauuup0MFUyXNQviSpFTj1RQtFzmQLk18qbVSpTFFGMT293rmDaQuKCT6InmbuEyUne4mTuxQ==" - }, - "axios": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.25.0.tgz", - "integrity": "sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g==", - "requires": { - "follow-redirects": "^1.14.7" - } - }, - "boxen": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-6.2.1.tgz", - "integrity": "sha512-H4PEsJXfFI/Pt8sjDWbHlQPx4zL/bvSQjcilJmaulGt5mLDorHOHpmdXAJcBcmru7PhYSp/cDMWRko4ZUMFkSw==", - "requires": { - "ansi-align": "^3.0.1", - "camelcase": "^6.2.0", - "chalk": "^4.1.2", - "cli-boxes": "^3.0.0", - "string-width": "^5.0.1", - "type-fest": "^2.5.0", - "widest-line": "^4.0.1", - "wrap-ansi": "^8.0.1" - } - }, - "chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "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" - } - }, - "clean-css": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.2.4.tgz", - "integrity": "sha512-nKseG8wCzEuji/4yrgM/5cthL9oTDc5UOQyFMvW/Q53oP6gLH690o1NbuTh6Y18nujr7BxlsFuS7gXLnLzKJGg==", - "requires": { - "source-map": "~0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } - } - }, - "cli-boxes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz", - "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==" - }, - "core-js": { - "version": "3.21.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.21.1.tgz", - "integrity": "sha512-FRq5b/VMrWlrmCzwRrpDYNxyHP9BcAZC+xHJaqTgIE5091ZV1NTmyh0sGOg5XqpnHvR0svdy0sv1gWA1zmhxig==" - }, - "css-minimizer-webpack-plugin": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.4.1.tgz", - "integrity": "sha512-1u6D71zeIfgngN2XNRJefc/hY7Ybsxd74Jm4qngIXyUEk7fss3VUzuHxLAq/R8NAba4QU9OUSaMZlbpRc7bM4Q==", - "requires": { - "cssnano": "^5.0.6", - "jest-worker": "^27.0.2", - "postcss": "^8.3.5", - "schema-utils": "^4.0.0", - "serialize-javascript": "^6.0.0", - "source-map": "^0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } - } - }, - "cssnano": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.0.tgz", - "integrity": "sha512-wWxave1wMlThGg4ueK98jFKaNqXnQd1nVZpSkQ9XvR+YymlzP1ofWqES1JkHtI250LksP9z5JH+oDcrKDJezAg==", - "requires": { - "cssnano-preset-default": "^5.2.0", - "lilconfig": "^2.0.3", - "yaml": "^1.10.2" - } - }, - "cssnano-preset-default": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.0.tgz", - "integrity": "sha512-3N5Vcptj2pqVKpHVqH6ezOJvqikR2PdLTbTrsrhF61FbLRQuujAqZ2sKN5rvcMsb7hFjrNnjZT8CGEkxoN/Pwg==", - "requires": { - "css-declaration-sorter": "^6.0.3", - "cssnano-utils": "^3.1.0", - "postcss-calc": "^8.2.3", - "postcss-colormin": "^5.3.0", - "postcss-convert-values": "^5.1.0", - "postcss-discard-comments": "^5.1.0", - "postcss-discard-duplicates": "^5.1.0", - "postcss-discard-empty": "^5.1.0", - "postcss-discard-overridden": "^5.1.0", - "postcss-merge-longhand": "^5.1.0", - "postcss-merge-rules": "^5.1.0", - "postcss-minify-font-values": "^5.1.0", - "postcss-minify-gradients": "^5.1.0", - "postcss-minify-params": "^5.1.0", - "postcss-minify-selectors": "^5.2.0", - "postcss-normalize-charset": "^5.1.0", - "postcss-normalize-display-values": "^5.1.0", - "postcss-normalize-positions": "^5.1.0", - "postcss-normalize-repeat-style": "^5.1.0", - "postcss-normalize-string": "^5.1.0", - "postcss-normalize-timing-functions": "^5.1.0", - "postcss-normalize-unicode": "^5.1.0", - "postcss-normalize-url": "^5.1.0", - "postcss-normalize-whitespace": "^5.1.0", - "postcss-ordered-values": "^5.1.0", - "postcss-reduce-initial": "^5.1.0", - "postcss-reduce-transforms": "^5.1.0", - "postcss-svgo": "^5.1.0", - "postcss-unique-selectors": "^5.1.0" - } - }, - "cssnano-utils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz", - "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==" - }, - "emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" - }, - "enhanced-resolve": { - "version": "5.9.2", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.2.tgz", - "integrity": "sha512-GIm3fQfwLJ8YZx2smuHpBKkXC1yOk+OBEmKckVyL0i/ea8mqDEykK3ld5dgH1QYPNyT/lIllxV2LULnxCHaHkA==", - "requires": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - } - }, - "entities": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", - "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==" - }, - "fs-extra": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.1.tgz", - "integrity": "sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag==", - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "joi": { - "version": "17.6.0", - "resolved": "https://registry.npmjs.org/joi/-/joi-17.6.0.tgz", - "integrity": "sha512-OX5dG6DTbcr/kbMFj0KGYxuew69HPcAE3K/sZpEV2nP6e/j/C0HV+HNiBPCASxdx5T7DMoa0s8UeHWMnb6n2zw==", - "requires": { - "@hapi/hoek": "^9.0.0", - "@hapi/topo": "^5.0.0", - "@sideway/address": "^4.1.3", - "@sideway/formula": "^3.0.0", - "@sideway/pinpoint": "^2.0.0" - } - }, - "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==" - }, - "mini-css-extract-plugin": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.5.3.tgz", - "integrity": "sha512-YseMB8cs8U/KCaAGQoqYmfUuhhGW0a9p9XvWXrxVOkE3/IiISTLw4ALNt7JR5B2eYauFM+PQGSbXMDmVbR7Tfw==", - "requires": { - "schema-utils": "^4.0.0" - } - }, - "postcss": { - "version": "8.4.7", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.7.tgz", - "integrity": "sha512-L9Ye3r6hkkCeOETQX6iOaWZgjp3LL6Lpqm6EtgbKrgqGGteRMNb9vzBfRL96YOSu8o7x3MfIH9Mo5cPJFGrW6A==", - "requires": { - "nanoid": "^3.3.1", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - } - }, - "postcss-calc": { - "version": "8.2.4", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz", - "integrity": "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==", - "requires": { - "postcss-selector-parser": "^6.0.9", - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-colormin": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.0.tgz", - "integrity": "sha512-WdDO4gOFG2Z8n4P8TWBpshnL3JpmNmJwdnfP2gbk2qBA8PWwOYcmjmI/t3CmMeL72a7Hkd+x/Mg9O2/0rD54Pg==", - "requires": { - "browserslist": "^4.16.6", - "caniuse-api": "^3.0.0", - "colord": "^2.9.1", - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-convert-values": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.0.tgz", - "integrity": "sha512-GkyPbZEYJiWtQB0KZ0X6qusqFHUepguBCNFi9t5JJc7I2OTXG7C0twbTLvCfaKOLl3rSXmpAwV7W5txd91V84g==", - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-discard-comments": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.0.tgz", - "integrity": "sha512-L0IKF4jAshRyn03SkEO6ar/Ipz2oLywVbg2THf2EqqdNkBwmVMxuTR/RoAltOw4piiaLt3gCAdrbAqmTBInmhg==" - }, - "postcss-discard-duplicates": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", - "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==" - }, - "postcss-discard-empty": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.0.tgz", - "integrity": "sha512-782T/buGgb3HOuHOJAHpdyKzAAKsv/BxWqsutnZ+QsiHEcDkY7v+6WWdturuBiSal6XMOO1p1aJvwXdqLD5vhA==" - }, - "postcss-discard-overridden": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz", - "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==" - }, - "postcss-merge-longhand": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.0.tgz", - "integrity": "sha512-Gr46srN2tsLD8fudKYoHO56RG0BLQ2nsBRnSZGY04eNBPwTeWa9KeHrbL3tOLAHyB2aliikycPH2TMJG1U+W6g==", - "requires": { - "postcss-value-parser": "^4.2.0", - "stylehacks": "^5.1.0" - } - }, - "postcss-merge-rules": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.0.tgz", - "integrity": "sha512-NecukEJovQ0mG7h7xV8wbYAkXGTO3MPKnXvuiXzOKcxoOodfTTKYjeo8TMhAswlSkjcPIBlnKbSFcTuVSDaPyQ==", - "requires": { - "browserslist": "^4.16.6", - "caniuse-api": "^3.0.0", - "cssnano-utils": "^3.1.0", - "postcss-selector-parser": "^6.0.5" - } - }, - "postcss-minify-font-values": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz", - "integrity": "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==", - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-minify-gradients": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.0.tgz", - "integrity": "sha512-J/TMLklkONn3LuL8wCwfwU8zKC1hpS6VcxFkNUNjmVt53uKqrrykR3ov11mdUYyqVMEx67slMce0tE14cE4DTg==", - "requires": { - "colord": "^2.9.1", - "cssnano-utils": "^3.1.0", - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-minify-params": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.0.tgz", - "integrity": "sha512-q67dcts4Hct6x8+JmhBgctHkbvUsqGIg2IItenjE63iZXMbhjr7AlVZkNnKtIGt/1Wsv7p/7YzeSII6Q+KPXRg==", - "requires": { - "browserslist": "^4.16.6", - "cssnano-utils": "^3.1.0", - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-minify-selectors": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.0.tgz", - "integrity": "sha512-vYxvHkW+iULstA+ctVNx0VoRAR4THQQRkG77o0oa4/mBS0OzGvvzLIvHDv/nNEM0crzN2WIyFU5X7wZhaUK3RA==", - "requires": { - "postcss-selector-parser": "^6.0.5" - } - }, - "postcss-normalize-charset": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", - "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==" - }, - "postcss-normalize-display-values": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz", - "integrity": "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==", - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-normalize-positions": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.0.tgz", - "integrity": "sha512-8gmItgA4H5xiUxgN/3TVvXRoJxkAWLW6f/KKhdsH03atg0cB8ilXnrB5PpSshwVu/dD2ZsRFQcR1OEmSBDAgcQ==", - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-normalize-repeat-style": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.0.tgz", - "integrity": "sha512-IR3uBjc+7mcWGL6CtniKNQ4Rr5fTxwkaDHwMBDGGs1x9IVRkYIT/M4NelZWkAOBdV6v3Z9S46zqaKGlyzHSchw==", - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-normalize-string": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz", - "integrity": "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==", - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-normalize-timing-functions": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz", - "integrity": "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==", - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-normalize-unicode": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.0.tgz", - "integrity": "sha512-J6M3MizAAZ2dOdSjy2caayJLQT8E8K9XjLce8AUQMwOrCvjCHv24aLC/Lps1R1ylOfol5VIDMaM/Lo9NGlk1SQ==", - "requires": { - "browserslist": "^4.16.6", - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-normalize-url": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz", - "integrity": "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==", - "requires": { - "normalize-url": "^6.0.1", - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-normalize-whitespace": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.0.tgz", - "integrity": "sha512-7O1FanKaJkpWFyCghFzIkLhehujV/frGkdofGLwhg5upbLyGsSfiTcZAdSzoPsSUgyPCkBkNMeWR8yVgPdQybg==", - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-ordered-values": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.0.tgz", - "integrity": "sha512-wU4Z4D4uOIH+BUKkYid36gGDJNQtkVJT7Twv8qH6UyfttbbJWyw4/xIPuVEkkCtQLAJ0EdsNSh8dlvqkXb49TA==", - "requires": { - "cssnano-utils": "^3.1.0", - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-reduce-initial": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.0.tgz", - "integrity": "sha512-5OgTUviz0aeH6MtBjHfbr57tml13PuedK/Ecg8szzd4XRMbYxH4572JFG067z+FqBIf6Zp/d+0581glkvvWMFw==", - "requires": { - "browserslist": "^4.16.6", - "caniuse-api": "^3.0.0" - } - }, - "postcss-reduce-transforms": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz", - "integrity": "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==", - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-selector-parser": { - "version": "6.0.9", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.9.tgz", - "integrity": "sha512-UO3SgnZOVTwu4kyLR22UQ1xZh086RyNZppb7lLAKBFK8a32ttG5i87Y/P3+2bRSjZNyJ1B7hfFNo273tKe9YxQ==", - "requires": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - } - }, - "postcss-svgo": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz", - "integrity": "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==", - "requires": { - "postcss-value-parser": "^4.2.0", - "svgo": "^2.7.0" - } - }, - "postcss-unique-selectors": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.0.tgz", - "integrity": "sha512-LmUhgGobtpeVJJHuogzjLRwJlN7VH+BL5c9GKMVJSS/ejoyePZkXvNsYUtk//F6vKOGK86gfRS0xH7fXQSDtvA==", - "requires": { - "postcss-selector-parser": "^6.0.5" - } - }, - "range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" - }, - "react-loadable": { - "version": "npm:@docusaurus/react-loadable@5.5.2", - "resolved": "https://registry.npmjs.org/@docusaurus/react-loadable/-/react-loadable-5.5.2.tgz", - "integrity": "sha512-A3dYjdBGuy0IGT+wyLIGIKLRE+sAk1iNk0f1HjNDysO7u8lhL4N3VEm+FAubmJbAztn94F7MxBTPmnixbiyFdQ==", - "requires": { - "@types/react": "*", - "prop-types": "^15.6.2" - } - }, - "rxjs": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.4.tgz", - "integrity": "sha512-h5M3Hk78r6wAheJF0a5YahB1yRQKCsZ4MsGdZ5O9ETbVtjPcScGfrMmoOq7EBsCRzd4BDkvDJ7ogP8Sz5tTFiQ==", - "requires": { - "tslib": "^2.1.0" - } - }, - "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" - } - }, - "selfsigned": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.0.0.tgz", - "integrity": "sha512-cUdFiCbKoa1mZ6osuJs2uDHrs0k0oprsKveFiiaBKCNq3SYyb5gs2HxhQyDNLCmL51ZZThqi4YNDpCK6GOP1iQ==", - "requires": { - "node-forge": "^1.2.0" - } - }, - "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==" - }, - "string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "requires": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - } - }, - "strip-ansi": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", - "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", - "requires": { - "ansi-regex": "^6.0.1" - } - }, - "stylehacks": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.0.tgz", - "integrity": "sha512-SzLmvHQTrIWfSgljkQCw2++C9+Ne91d/6Sp92I8c5uHTcy/PgeHamwITIbBW9wnFTY/3ZfSXR9HIL6Ikqmcu6Q==", - "requires": { - "browserslist": "^4.16.6", - "postcss-selector-parser": "^6.0.4" - } - }, - "terser-webpack-plugin": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz", - "integrity": "sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g==", - "requires": { - "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.0", - "source-map": "^0.6.1", - "terser": "^5.7.2" - }, - "dependencies": { - "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-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==" - }, - "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==" - }, - "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" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } - } - }, - "type-fest": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.12.0.tgz", - "integrity": "sha512-Qe5GRT+n/4GoqCNGGVp5Snapg1Omq3V7irBJB3EaKsp7HWDo5Gv2d/67gfNyV+d5EXD+x/RF5l1h4yJ7qNkcGA==" - }, - "wait-on": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-6.0.1.tgz", - "integrity": "sha512-zht+KASY3usTY5u2LgaNqn/Cd8MukxLGjdcZxT2ns5QzDmTFc4XoWBgC+C/na+sMRZTuVygQoMYwdcVjHnYIVw==", - "requires": { - "axios": "^0.25.0", - "joi": "^17.6.0", - "lodash": "^4.17.21", - "minimist": "^1.2.5", - "rxjs": "^7.5.4" - } - }, - "webpack": { - "version": "5.70.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.70.0.tgz", - "integrity": "sha512-ZMWWy8CeuTTjCxbeaQI21xSswseF2oNOwc70QSKNePvmxE7XW36i7vpBMYZFAUHPwQiEbNGCEYIOOlyRbdGmxw==", - "requires": { - "@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.4.1", - "acorn-import-assertions": "^1.7.6", - "browserslist": "^4.14.5", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.9.2", - "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-better-errors": "^1.0.2", - "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.3.1", - "webpack-sources": "^3.2.3" - }, - "dependencies": { - "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-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==" - }, - "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==" - }, - "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" - } - } - } - }, - "webpack-dev-middleware": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.1.tgz", - "integrity": "sha512-81EujCKkyles2wphtdrnPg/QqegC/AtqNH//mQkBYSMqwFVCQrxM6ktB2O/SPlZy7LqeEfTbV3cZARGQz6umhg==", - "requires": { - "colorette": "^2.0.10", - "memfs": "^3.4.1", - "mime-types": "^2.1.31", - "range-parser": "^1.2.1", - "schema-utils": "^4.0.0" - } - }, - "webpack-dev-server": { - "version": "4.7.4", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.7.4.tgz", - "integrity": "sha512-nfdsb02Zi2qzkNmgtZjkrMOcXnYZ6FLKcQwpxT7MvmHKc+oTtDsBju8j+NMyAygZ9GW1jMEUpy3itHtqgEhe1A==", - "requires": { - "@types/bonjour": "^3.5.9", - "@types/connect-history-api-fallback": "^1.3.5", - "@types/express": "^4.17.13", - "@types/serve-index": "^1.9.1", - "@types/sockjs": "^0.3.33", - "@types/ws": "^8.2.2", - "ansi-html-community": "^0.0.8", - "bonjour": "^3.5.0", - "chokidar": "^3.5.3", - "colorette": "^2.0.10", - "compression": "^1.7.4", - "connect-history-api-fallback": "^1.6.0", - "default-gateway": "^6.0.3", - "del": "^6.0.0", - "express": "^4.17.1", - "graceful-fs": "^4.2.6", - "html-entities": "^2.3.2", - "http-proxy-middleware": "^2.0.0", - "ipaddr.js": "^2.0.1", - "open": "^8.0.9", - "p-retry": "^4.5.0", - "portfinder": "^1.0.28", - "schema-utils": "^4.0.0", - "selfsigned": "^2.0.0", - "serve-index": "^1.9.1", - "sockjs": "^0.3.21", - "spdy": "^4.0.2", - "strip-ansi": "^7.0.0", - "webpack-dev-middleware": "^5.3.1", - "ws": "^8.4.2" - } - }, - "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==" - }, - "widest-line": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-4.0.1.tgz", - "integrity": "sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==", - "requires": { - "string-width": "^5.0.1" - } - }, - "wrap-ansi": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.0.1.tgz", - "integrity": "sha512-QFF+ufAqhoYHvoHdajT/Po7KoXVBPXS2bgjIam5isfWJPfIOnQZ50JtUiVvCv/sjgacf3yRrt2ZKUZ/V4itN4g==", - "requires": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - } - }, - "ws": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", - "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==" - } - } - }, - "@docusaurus/cssnano-preset": { - "version": "2.0.0-beta.17", - "resolved": "https://registry.npmjs.org/@docusaurus/cssnano-preset/-/cssnano-preset-2.0.0-beta.17.tgz", - "integrity": "sha512-DoBwtLjJ9IY9/lNMHIEdo90L4NDayvU28nLgtjR2Sc6aBIMEB/3a5Ndjehnp+jZAkwcDdNASA86EkZVUyz1O1A==", - "requires": { - "cssnano-preset-advanced": "^5.1.12", - "postcss": "^8.4.7", - "postcss-sort-media-queries": "^4.2.1" - }, - "dependencies": { - "cssnano-preset-advanced": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/cssnano-preset-advanced/-/cssnano-preset-advanced-5.2.0.tgz", - "integrity": "sha512-E7jJoKc2GjZsRLm8wQd2wZa+1a6tslA1elimwpcJTnH6dBQBkjQ8tAwNWUeyT72owYcCNGWTnar60bTnrnEWzw==", - "requires": { - "autoprefixer": "^10.3.7", - "cssnano-preset-default": "^5.2.0", - "postcss-discard-unused": "^5.1.0", - "postcss-merge-idents": "^5.1.0", - "postcss-reduce-idents": "^5.1.0", - "postcss-zindex": "^5.1.0" - } - }, - "cssnano-preset-default": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.0.tgz", - "integrity": "sha512-3N5Vcptj2pqVKpHVqH6ezOJvqikR2PdLTbTrsrhF61FbLRQuujAqZ2sKN5rvcMsb7hFjrNnjZT8CGEkxoN/Pwg==", - "requires": { - "css-declaration-sorter": "^6.0.3", - "cssnano-utils": "^3.1.0", - "postcss-calc": "^8.2.3", - "postcss-colormin": "^5.3.0", - "postcss-convert-values": "^5.1.0", - "postcss-discard-comments": "^5.1.0", - "postcss-discard-duplicates": "^5.1.0", - "postcss-discard-empty": "^5.1.0", - "postcss-discard-overridden": "^5.1.0", - "postcss-merge-longhand": "^5.1.0", - "postcss-merge-rules": "^5.1.0", - "postcss-minify-font-values": "^5.1.0", - "postcss-minify-gradients": "^5.1.0", - "postcss-minify-params": "^5.1.0", - "postcss-minify-selectors": "^5.2.0", - "postcss-normalize-charset": "^5.1.0", - "postcss-normalize-display-values": "^5.1.0", - "postcss-normalize-positions": "^5.1.0", - "postcss-normalize-repeat-style": "^5.1.0", - "postcss-normalize-string": "^5.1.0", - "postcss-normalize-timing-functions": "^5.1.0", - "postcss-normalize-unicode": "^5.1.0", - "postcss-normalize-url": "^5.1.0", - "postcss-normalize-whitespace": "^5.1.0", - "postcss-ordered-values": "^5.1.0", - "postcss-reduce-initial": "^5.1.0", - "postcss-reduce-transforms": "^5.1.0", - "postcss-svgo": "^5.1.0", - "postcss-unique-selectors": "^5.1.0" - } - }, - "cssnano-utils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz", - "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==" - }, - "postcss": { - "version": "8.4.7", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.7.tgz", - "integrity": "sha512-L9Ye3r6hkkCeOETQX6iOaWZgjp3LL6Lpqm6EtgbKrgqGGteRMNb9vzBfRL96YOSu8o7x3MfIH9Mo5cPJFGrW6A==", - "requires": { - "nanoid": "^3.3.1", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - } - }, - "postcss-calc": { - "version": "8.2.4", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz", - "integrity": "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==", - "requires": { - "postcss-selector-parser": "^6.0.9", - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-colormin": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.0.tgz", - "integrity": "sha512-WdDO4gOFG2Z8n4P8TWBpshnL3JpmNmJwdnfP2gbk2qBA8PWwOYcmjmI/t3CmMeL72a7Hkd+x/Mg9O2/0rD54Pg==", - "requires": { - "browserslist": "^4.16.6", - "caniuse-api": "^3.0.0", - "colord": "^2.9.1", - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-convert-values": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.0.tgz", - "integrity": "sha512-GkyPbZEYJiWtQB0KZ0X6qusqFHUepguBCNFi9t5JJc7I2OTXG7C0twbTLvCfaKOLl3rSXmpAwV7W5txd91V84g==", - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-discard-comments": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.0.tgz", - "integrity": "sha512-L0IKF4jAshRyn03SkEO6ar/Ipz2oLywVbg2THf2EqqdNkBwmVMxuTR/RoAltOw4piiaLt3gCAdrbAqmTBInmhg==" - }, - "postcss-discard-duplicates": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", - "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==" - }, - "postcss-discard-empty": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.0.tgz", - "integrity": "sha512-782T/buGgb3HOuHOJAHpdyKzAAKsv/BxWqsutnZ+QsiHEcDkY7v+6WWdturuBiSal6XMOO1p1aJvwXdqLD5vhA==" - }, - "postcss-discard-overridden": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz", - "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==" - }, - "postcss-discard-unused": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-5.1.0.tgz", - "integrity": "sha512-KwLWymI9hbwXmJa0dkrzpRbSJEh0vVUd7r8t0yOGPcfKzyJJxFM8kLyC5Ev9avji6nY95pOp1W6HqIrfT+0VGw==", - "requires": { - "postcss-selector-parser": "^6.0.5" - } - }, - "postcss-merge-idents": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-5.1.0.tgz", - "integrity": "sha512-l+awq6+uUiCILsHahWK5KE25495I4oCKlUrIA+EdBvklnVdWlBEsbkzq5+ouPKb8OAe4WwRBgFvaSq7f77FY+w==", - "requires": { - "cssnano-utils": "^3.1.0", - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-merge-longhand": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.0.tgz", - "integrity": "sha512-Gr46srN2tsLD8fudKYoHO56RG0BLQ2nsBRnSZGY04eNBPwTeWa9KeHrbL3tOLAHyB2aliikycPH2TMJG1U+W6g==", - "requires": { - "postcss-value-parser": "^4.2.0", - "stylehacks": "^5.1.0" - } - }, - "postcss-merge-rules": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.0.tgz", - "integrity": "sha512-NecukEJovQ0mG7h7xV8wbYAkXGTO3MPKnXvuiXzOKcxoOodfTTKYjeo8TMhAswlSkjcPIBlnKbSFcTuVSDaPyQ==", - "requires": { - "browserslist": "^4.16.6", - "caniuse-api": "^3.0.0", - "cssnano-utils": "^3.1.0", - "postcss-selector-parser": "^6.0.5" - } - }, - "postcss-minify-font-values": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz", - "integrity": "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==", - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-minify-gradients": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.0.tgz", - "integrity": "sha512-J/TMLklkONn3LuL8wCwfwU8zKC1hpS6VcxFkNUNjmVt53uKqrrykR3ov11mdUYyqVMEx67slMce0tE14cE4DTg==", - "requires": { - "colord": "^2.9.1", - "cssnano-utils": "^3.1.0", - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-minify-params": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.0.tgz", - "integrity": "sha512-q67dcts4Hct6x8+JmhBgctHkbvUsqGIg2IItenjE63iZXMbhjr7AlVZkNnKtIGt/1Wsv7p/7YzeSII6Q+KPXRg==", - "requires": { - "browserslist": "^4.16.6", - "cssnano-utils": "^3.1.0", - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-minify-selectors": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.0.tgz", - "integrity": "sha512-vYxvHkW+iULstA+ctVNx0VoRAR4THQQRkG77o0oa4/mBS0OzGvvzLIvHDv/nNEM0crzN2WIyFU5X7wZhaUK3RA==", - "requires": { - "postcss-selector-parser": "^6.0.5" - } - }, - "postcss-normalize-charset": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", - "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==" - }, - "postcss-normalize-display-values": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz", - "integrity": "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==", - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-normalize-positions": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.0.tgz", - "integrity": "sha512-8gmItgA4H5xiUxgN/3TVvXRoJxkAWLW6f/KKhdsH03atg0cB8ilXnrB5PpSshwVu/dD2ZsRFQcR1OEmSBDAgcQ==", - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-normalize-repeat-style": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.0.tgz", - "integrity": "sha512-IR3uBjc+7mcWGL6CtniKNQ4Rr5fTxwkaDHwMBDGGs1x9IVRkYIT/M4NelZWkAOBdV6v3Z9S46zqaKGlyzHSchw==", - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-normalize-string": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz", - "integrity": "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==", - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-normalize-timing-functions": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz", - "integrity": "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==", - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-normalize-unicode": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.0.tgz", - "integrity": "sha512-J6M3MizAAZ2dOdSjy2caayJLQT8E8K9XjLce8AUQMwOrCvjCHv24aLC/Lps1R1ylOfol5VIDMaM/Lo9NGlk1SQ==", - "requires": { - "browserslist": "^4.16.6", - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-normalize-url": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz", - "integrity": "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==", - "requires": { - "normalize-url": "^6.0.1", - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-normalize-whitespace": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.0.tgz", - "integrity": "sha512-7O1FanKaJkpWFyCghFzIkLhehujV/frGkdofGLwhg5upbLyGsSfiTcZAdSzoPsSUgyPCkBkNMeWR8yVgPdQybg==", - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-ordered-values": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.0.tgz", - "integrity": "sha512-wU4Z4D4uOIH+BUKkYid36gGDJNQtkVJT7Twv8qH6UyfttbbJWyw4/xIPuVEkkCtQLAJ0EdsNSh8dlvqkXb49TA==", - "requires": { - "cssnano-utils": "^3.1.0", - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-reduce-idents": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-5.1.0.tgz", - "integrity": "sha512-2xDoPTzv98D/HFDrGTgVEBlcuS47wvua2oc4g2WoZdYPwzPWMWb2TCRruCyN7vbl+HAtVLGvEOMZIZb3wYgv7w==", - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-reduce-initial": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.0.tgz", - "integrity": "sha512-5OgTUviz0aeH6MtBjHfbr57tml13PuedK/Ecg8szzd4XRMbYxH4572JFG067z+FqBIf6Zp/d+0581glkvvWMFw==", - "requires": { - "browserslist": "^4.16.6", - "caniuse-api": "^3.0.0" - } - }, - "postcss-reduce-transforms": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz", - "integrity": "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==", - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-selector-parser": { - "version": "6.0.9", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.9.tgz", - "integrity": "sha512-UO3SgnZOVTwu4kyLR22UQ1xZh086RyNZppb7lLAKBFK8a32ttG5i87Y/P3+2bRSjZNyJ1B7hfFNo273tKe9YxQ==", - "requires": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - } - }, - "postcss-svgo": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz", - "integrity": "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==", - "requires": { - "postcss-value-parser": "^4.2.0", - "svgo": "^2.7.0" - } - }, - "postcss-unique-selectors": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.0.tgz", - "integrity": "sha512-LmUhgGobtpeVJJHuogzjLRwJlN7VH+BL5c9GKMVJSS/ejoyePZkXvNsYUtk//F6vKOGK86gfRS0xH7fXQSDtvA==", - "requires": { - "postcss-selector-parser": "^6.0.5" - } - }, - "postcss-zindex": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-5.1.0.tgz", - "integrity": "sha512-fgFMf0OtVSBR1va1JNHYgMxYk73yhn/qb4uQDq1DLGYolz8gHCyr/sesEuGUaYs58E3ZJRcpoGuPVoB7Meiq9A==" - }, - "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==" - }, - "stylehacks": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.0.tgz", - "integrity": "sha512-SzLmvHQTrIWfSgljkQCw2++C9+Ne91d/6Sp92I8c5uHTcy/PgeHamwITIbBW9wnFTY/3ZfSXR9HIL6Ikqmcu6Q==", - "requires": { - "browserslist": "^4.16.6", - "postcss-selector-parser": "^6.0.4" - } - } - } - }, - "@docusaurus/logger": { - "version": "2.0.0-beta.15", - "resolved": "https://registry.npmjs.org/@docusaurus/logger/-/logger-2.0.0-beta.15.tgz", - "integrity": "sha512-5bDSHCyLfMtz6QnFfICdL5mgxbGfC7DW1V+/Q17nRdpZSPZgsNKK/Esp0zdDi1oxAyEpXMXx64nLaHL7joJxIg==", - "requires": { - "chalk": "^4.1.2", - "tslib": "^2.3.1" - } - }, - "@docusaurus/mdx-loader": { - "version": "2.0.0-beta.17", - "resolved": "https://registry.npmjs.org/@docusaurus/mdx-loader/-/mdx-loader-2.0.0-beta.17.tgz", - "integrity": "sha512-AhJ3GWRmjQYCyINHE595pff5tn3Rt83oGpdev5UT9uvG9lPYPC8nEmh1LI6c0ogfw7YkNznzxWSW4hyyVbYQ3A==", - "requires": { - "@babel/parser": "^7.17.3", - "@babel/traverse": "^7.17.3", - "@docusaurus/logger": "2.0.0-beta.17", - "@docusaurus/utils": "2.0.0-beta.17", - "@mdx-js/mdx": "^1.6.22", - "escape-html": "^1.0.3", - "file-loader": "^6.2.0", - "fs-extra": "^10.0.1", - "image-size": "^1.0.1", - "mdast-util-to-string": "^2.0.0", - "remark-emoji": "^2.1.0", - "stringify-object": "^3.3.0", - "tslib": "^2.3.1", - "unist-util-visit": "^2.0.2", - "url-loader": "^4.1.1", - "webpack": "^5.69.1" - }, - "dependencies": { - "@babel/generator": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.3.tgz", - "integrity": "sha512-+R6Dctil/MgUsZsZAkYgK+ADNSZzJRRy0TvY65T71z/CR854xHQ1EweBYXdfT+HNeN7w0cSJJEzgxZMv40pxsg==", - "requires": { - "@babel/types": "^7.17.0", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - } - }, - "@babel/parser": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.3.tgz", - "integrity": "sha512-7yJPvPV+ESz2IUTPbOL+YkIGyCqOyNIzdguKQuJGnH7bg1WTIifuM21YqokFt/THWh1AkCRn9IgoykTRCBVpzA==" - }, - "@babel/traverse": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.3.tgz", - "integrity": "sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==", - "requires": { - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.3", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.17.3", - "@babel/types": "^7.17.0", - "debug": "^4.1.0", - "globals": "^11.1.0" - } - }, - "@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", - "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" - } - }, - "@docusaurus/logger": { - "version": "2.0.0-beta.17", - "resolved": "https://registry.npmjs.org/@docusaurus/logger/-/logger-2.0.0-beta.17.tgz", - "integrity": "sha512-F9JDl06/VLg+ylsvnq9NpILSUeWtl0j4H2LtlLzX5gufEL4dGiCMlnUzYdHl7FSHSzYJ0A/R7vu0SYofsexC4w==", - "requires": { - "chalk": "^4.1.2", - "tslib": "^2.3.1" - } - }, - "@types/estree": { - "version": "0.0.51", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", - "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==" - }, - "enhanced-resolve": { - "version": "5.9.2", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.2.tgz", - "integrity": "sha512-GIm3fQfwLJ8YZx2smuHpBKkXC1yOk+OBEmKckVyL0i/ea8mqDEykK3ld5dgH1QYPNyT/lIllxV2LULnxCHaHkA==", - "requires": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - } - }, - "fs-extra": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.1.tgz", - "integrity": "sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag==", - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "webpack": { - "version": "5.70.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.70.0.tgz", - "integrity": "sha512-ZMWWy8CeuTTjCxbeaQI21xSswseF2oNOwc70QSKNePvmxE7XW36i7vpBMYZFAUHPwQiEbNGCEYIOOlyRbdGmxw==", - "requires": { - "@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.4.1", - "acorn-import-assertions": "^1.7.6", - "browserslist": "^4.14.5", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.9.2", - "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-better-errors": "^1.0.2", - "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.3.1", - "webpack-sources": "^3.2.3" - } - }, - "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==" - } - } - }, - "@docusaurus/module-type-aliases": { - "version": "2.0.0-beta.17", - "resolved": "https://registry.npmjs.org/@docusaurus/module-type-aliases/-/module-type-aliases-2.0.0-beta.17.tgz", - "integrity": "sha512-Tu+8geC/wyygBudbSwvWIHEvt5RwyA7dEoE1JmPbgQtmqUxOZ9bgnfemwXpJW5mKuDiJASbN4of1DhbLqf4sPg==", - "dev": true, - "requires": { - "@docusaurus/types": "2.0.0-beta.17", - "@types/react": "*", - "@types/react-router-config": "*", - "@types/react-router-dom": "*", - "react-helmet-async": "*" - } - }, - "@docusaurus/plugin-client-redirects": { - "version": "2.0.0-beta.15", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-client-redirects/-/plugin-client-redirects-2.0.0-beta.15.tgz", - "integrity": "sha512-FcH1y+a+Bmc5x50kZn5RvLr2a6iPiGnRK4iUP7G1eNozJC+8+93OwyZYSCdEOf2LyoVOtEq06xlfORFP2mfQDQ==", - "requires": { - "@docusaurus/core": "2.0.0-beta.15", - "@docusaurus/logger": "2.0.0-beta.15", - "@docusaurus/utils": "2.0.0-beta.15", - "@docusaurus/utils-common": "2.0.0-beta.15", - "@docusaurus/utils-validation": "2.0.0-beta.15", - "eta": "^1.12.3", - "fs-extra": "^10.0.0", - "lodash": "^4.17.20", - "tslib": "^2.3.1" - }, - "dependencies": { - "@docusaurus/core": { - "version": "2.0.0-beta.15", - "resolved": "https://registry.npmjs.org/@docusaurus/core/-/core-2.0.0-beta.15.tgz", - "integrity": "sha512-zXhhD0fApMSvq/9Pkm9DQxa//hGOXVCq9yMHiXOkI5D1tLec7PxtnaC5cLfGHljkN9cKIfRDYUVcG1gHymVfpA==", - "requires": { - "@babel/core": "^7.16.0", - "@babel/generator": "^7.16.0", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-transform-runtime": "^7.16.0", - "@babel/preset-env": "^7.16.4", - "@babel/preset-react": "^7.16.0", - "@babel/preset-typescript": "^7.16.0", - "@babel/runtime": "^7.16.3", - "@babel/runtime-corejs3": "^7.16.3", - "@babel/traverse": "^7.16.3", - "@docusaurus/cssnano-preset": "2.0.0-beta.15", - "@docusaurus/logger": "2.0.0-beta.15", - "@docusaurus/mdx-loader": "2.0.0-beta.15", - "@docusaurus/react-loadable": "5.5.2", - "@docusaurus/utils": "2.0.0-beta.15", - "@docusaurus/utils-common": "2.0.0-beta.15", - "@docusaurus/utils-validation": "2.0.0-beta.15", - "@slorber/static-site-generator-webpack-plugin": "^4.0.0", - "@svgr/webpack": "^6.0.0", - "autoprefixer": "^10.3.5", - "babel-loader": "^8.2.2", - "babel-plugin-dynamic-import-node": "2.3.0", - "boxen": "^5.0.1", - "chokidar": "^3.5.2", - "clean-css": "^5.1.5", - "commander": "^5.1.0", - "copy-webpack-plugin": "^10.2.0", - "core-js": "^3.18.0", - "css-loader": "^6.5.1", - "css-minimizer-webpack-plugin": "^3.3.1", - "cssnano": "^5.0.8", - "del": "^6.0.0", - "detect-port": "^1.3.0", - "escape-html": "^1.0.3", - "eta": "^1.12.3", - "file-loader": "^6.2.0", - "fs-extra": "^10.0.0", - "html-minifier-terser": "^6.0.2", - "html-tags": "^3.1.0", - "html-webpack-plugin": "^5.4.0", - "import-fresh": "^3.3.0", - "is-root": "^2.1.0", - "leven": "^3.1.0", - "lodash": "^4.17.20", - "mini-css-extract-plugin": "^1.6.0", - "nprogress": "^0.2.0", - "postcss": "^8.3.7", - "postcss-loader": "^6.1.1", - "prompts": "^2.4.1", - "react-dev-utils": "^12.0.0", - "react-helmet": "^6.1.0", - "react-loadable": "npm:@docusaurus/react-loadable@5.5.2", - "react-loadable-ssr-addon-v5-slorber": "^1.0.1", - "react-router": "^5.2.0", - "react-router-config": "^5.1.1", - "react-router-dom": "^5.2.0", - "remark-admonitions": "^1.2.1", - "rtl-detect": "^1.0.4", - "semver": "^7.3.4", - "serve-handler": "^6.1.3", - "shelljs": "^0.8.4", - "strip-ansi": "^6.0.0", - "terser-webpack-plugin": "^5.2.4", - "tslib": "^2.3.1", - "update-notifier": "^5.1.0", - "url-loader": "^4.1.1", - "wait-on": "^6.0.0", - "webpack": "^5.61.0", - "webpack-bundle-analyzer": "^4.4.2", - "webpack-dev-server": "^4.7.1", - "webpack-merge": "^5.8.0", - "webpackbar": "^5.0.2" - }, - "dependencies": { - "react-loadable": { - "version": "npm:@docusaurus/react-loadable@5.5.2", - "resolved": "https://registry.npmjs.org/@docusaurus/react-loadable/-/react-loadable-5.5.2.tgz", - "integrity": "sha512-A3dYjdBGuy0IGT+wyLIGIKLRE+sAk1iNk0f1HjNDysO7u8lhL4N3VEm+FAubmJbAztn94F7MxBTPmnixbiyFdQ==", - "requires": { - "@types/react": "*", - "prop-types": "^15.6.2" - } - } - } - }, - "@docusaurus/cssnano-preset": { - "version": "2.0.0-beta.15", - "resolved": "https://registry.npmjs.org/@docusaurus/cssnano-preset/-/cssnano-preset-2.0.0-beta.15.tgz", - "integrity": "sha512-55aYURbB5dqrx64lStNcZxDx5R6bKkAawlCB7mDKx3r+Qnp3ofGW7UExLQSCbTu3axT1vJCF5D7H6ljTRYJLtA==", - "requires": { - "cssnano-preset-advanced": "^5.1.4", - "postcss": "^8.3.7", - "postcss-sort-media-queries": "^4.1.0" - } - }, - "@docusaurus/mdx-loader": { - "version": "2.0.0-beta.15", - "resolved": "https://registry.npmjs.org/@docusaurus/mdx-loader/-/mdx-loader-2.0.0-beta.15.tgz", - "integrity": "sha512-MVpytjDDao7hmPF1QSs9B5zoTgevZjiqjnX3FM1yjqdCv+chyUo0gnmYHjeG/4Gqu7jucp+dDdp6yQpzs4g09A==", - "requires": { - "@babel/parser": "^7.16.4", - "@babel/traverse": "^7.16.3", - "@docusaurus/logger": "2.0.0-beta.15", - "@docusaurus/utils": "2.0.0-beta.15", - "@mdx-js/mdx": "^1.6.21", - "escape-html": "^1.0.3", - "file-loader": "^6.2.0", - "fs-extra": "^10.0.0", - "image-size": "^1.0.1", - "mdast-util-to-string": "^2.0.0", - "remark-emoji": "^2.1.0", - "stringify-object": "^3.3.0", - "tslib": "^2.3.1", - "unist-util-visit": "^2.0.2", - "url-loader": "^4.1.1", - "webpack": "^5.61.0" - } - }, - "@docusaurus/utils": { - "version": "2.0.0-beta.15", - "resolved": "https://registry.npmjs.org/@docusaurus/utils/-/utils-2.0.0-beta.15.tgz", - "integrity": "sha512-xkoPmFxCBkDqbZR4U3SE752OcXtWTGgZnc/pZWxItzb1IYRGNZHrzdIr7CnI7rppriuZzsyivDGiC4Ud9MWhkA==", - "requires": { - "@docusaurus/logger": "2.0.0-beta.15", - "@mdx-js/runtime": "^1.6.22", - "@svgr/webpack": "^6.0.0", - "file-loader": "^6.2.0", - "fs-extra": "^10.0.0", - "github-slugger": "^1.4.0", - "globby": "^11.0.4", - "gray-matter": "^4.0.3", - "js-yaml": "^4.0.0", - "lodash": "^4.17.20", - "micromatch": "^4.0.4", - "remark-mdx-remove-exports": "^1.6.22", - "remark-mdx-remove-imports": "^1.6.22", - "resolve-pathname": "^3.0.0", - "tslib": "^2.3.1", - "url-loader": "^4.1.1" - } - }, - "@docusaurus/utils-common": { - "version": "2.0.0-beta.15", - "resolved": "https://registry.npmjs.org/@docusaurus/utils-common/-/utils-common-2.0.0-beta.15.tgz", - "integrity": "sha512-kIGlSIvbE/oniUpUjI8GOkSpH8o4NXbYqAh9dqPn+TJ0KbEFY3fc80gzZQU+9SunCwJMJbIxIGevX9Ry+nackw==", - "requires": { - "tslib": "^2.3.1" - } - }, - "@docusaurus/utils-validation": { - "version": "2.0.0-beta.15", - "resolved": "https://registry.npmjs.org/@docusaurus/utils-validation/-/utils-validation-2.0.0-beta.15.tgz", - "integrity": "sha512-1oOVBCkRrsTXSYrBTsMdnj3a/R56zrx11rjF4xo0+dmm8C01Xw4msFtc3uA7VLX0HQvgHsk8xPzU5GERNdsNpg==", - "requires": { - "@docusaurus/logger": "2.0.0-beta.15", - "@docusaurus/utils": "2.0.0-beta.15", - "joi": "^17.4.2", - "tslib": "^2.3.1" - } - }, - "@svgr/babel-plugin-add-jsx-attribute": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-6.0.0.tgz", - "integrity": "sha512-MdPdhdWLtQsjd29Wa4pABdhWbaRMACdM1h31BY+c6FghTZqNGT7pEYdBoaGeKtdTOBC/XNFQaKVj+r/Ei2ryWA==" - }, - "@svgr/babel-plugin-remove-jsx-attribute": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-6.0.0.tgz", - "integrity": "sha512-aVdtfx9jlaaxc3unA6l+M9YRnKIZjOhQPthLKqmTXC8UVkBLDRGwPKo+r8n3VZN8B34+yVajzPTZ+ptTSuZZCw==" - }, - "@svgr/babel-plugin-remove-jsx-empty-expression": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-6.0.0.tgz", - "integrity": "sha512-Ccj42ApsePD451AZJJf1QzTD1B/BOU392URJTeXFxSK709i0KUsGtbwyiqsKu7vsYxpTM0IA5clAKDyf9RCZyA==" - }, - "@svgr/babel-plugin-replace-jsx-attribute-value": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-6.0.0.tgz", - "integrity": "sha512-88V26WGyt1Sfd1emBYmBJRWMmgarrExpKNVmI9vVozha4kqs6FzQJ/Kp5+EYli1apgX44518/0+t9+NU36lThQ==" - }, - "@svgr/babel-plugin-svg-dynamic-title": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-6.0.0.tgz", - "integrity": "sha512-F7YXNLfGze+xv0KMQxrl2vkNbI9kzT9oDK55/kUuymh1ACyXkMV+VZWX1zEhSTfEKh7VkHVZGmVtHg8eTZ6PRg==" - }, - "@svgr/babel-plugin-svg-em-dimensions": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-6.0.0.tgz", - "integrity": "sha512-+rghFXxdIqJNLQK08kwPBD3Z22/0b2tEZ9lKiL/yTfuyj1wW8HUXu4bo/XkogATIYuXSghVQOOCwURXzHGKyZA==" - }, - "@svgr/babel-plugin-transform-react-native-svg": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-6.0.0.tgz", - "integrity": "sha512-VaphyHZ+xIKv5v0K0HCzyfAaLhPGJXSk2HkpYfXIOKb7DjLBv0soHDxNv6X0vr2titsxE7klb++u7iOf7TSrFQ==" - }, - "@svgr/babel-plugin-transform-svg-component": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-6.2.0.tgz", - "integrity": "sha512-bhYIpsORb++wpsp91fymbFkf09Z/YEKR0DnFjxvN+8JHeCUD2unnh18jIMKnDJTWtvpTaGYPXELVe4OOzFI0xg==" - }, - "@svgr/babel-preset": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-6.2.0.tgz", - "integrity": "sha512-4WQNY0J71JIaL03DRn0vLiz87JXx0b9dYm2aA8XHlQJQoixMl4r/soYHm8dsaJZ3jWtkCiOYy48dp9izvXhDkQ==", - "requires": { - "@svgr/babel-plugin-add-jsx-attribute": "^6.0.0", - "@svgr/babel-plugin-remove-jsx-attribute": "^6.0.0", - "@svgr/babel-plugin-remove-jsx-empty-expression": "^6.0.0", - "@svgr/babel-plugin-replace-jsx-attribute-value": "^6.0.0", - "@svgr/babel-plugin-svg-dynamic-title": "^6.0.0", - "@svgr/babel-plugin-svg-em-dimensions": "^6.0.0", - "@svgr/babel-plugin-transform-react-native-svg": "^6.0.0", - "@svgr/babel-plugin-transform-svg-component": "^6.2.0" - } - }, - "@svgr/core": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/@svgr/core/-/core-6.2.1.tgz", - "integrity": "sha512-NWufjGI2WUyrg46mKuySfviEJ6IxHUOm/8a3Ph38VCWSp+83HBraCQrpEM3F3dB6LBs5x8OElS8h3C0oOJaJAA==", - "requires": { - "@svgr/plugin-jsx": "^6.2.1", - "camelcase": "^6.2.0", - "cosmiconfig": "^7.0.1" - } - }, - "@svgr/hast-util-to-babel-ast": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-6.2.1.tgz", - "integrity": "sha512-pt7MMkQFDlWJVy9ULJ1h+hZBDGFfSCwlBNW1HkLnVi7jUhyEXUaGYWi1x6bM2IXuAR9l265khBT4Av4lPmaNLQ==", - "requires": { - "@babel/types": "^7.15.6", - "entities": "^3.0.1" - } - }, - "@svgr/plugin-jsx": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-6.2.1.tgz", - "integrity": "sha512-u+MpjTsLaKo6r3pHeeSVsh9hmGRag2L7VzApWIaS8imNguqoUwDq/u6U/NDmYs/KAsrmtBjOEaAAPbwNGXXp1g==", - "requires": { - "@babel/core": "^7.15.5", - "@svgr/babel-preset": "^6.2.0", - "@svgr/hast-util-to-babel-ast": "^6.2.1", - "svg-parser": "^2.0.2" - } - }, - "@svgr/plugin-svgo": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-6.2.0.tgz", - "integrity": "sha512-oDdMQONKOJEbuKwuy4Np6VdV6qoaLLvoY86hjvQEgU82Vx1MSWRyYms6Sl0f+NtqxLI/rDVufATbP/ev996k3Q==", - "requires": { - "cosmiconfig": "^7.0.1", - "deepmerge": "^4.2.2", - "svgo": "^2.5.0" - } - }, - "@svgr/webpack": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-6.2.1.tgz", - "integrity": "sha512-h09ngMNd13hnePwgXa+Y5CgOjzlCvfWLHg+MBnydEedAnuLRzUHUJmGS3o2OsrhxTOOqEsPOFt5v/f6C5Qulcw==", - "requires": { - "@babel/core": "^7.15.5", - "@babel/plugin-transform-react-constant-elements": "^7.14.5", - "@babel/preset-env": "^7.15.6", - "@babel/preset-react": "^7.14.5", - "@babel/preset-typescript": "^7.15.0", - "@svgr/core": "^6.2.1", - "@svgr/plugin-jsx": "^6.2.1", - "@svgr/plugin-svgo": "^6.2.0" - } - }, - "ajv": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.10.0.tgz", - "integrity": "sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw==", - "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" - } - }, - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" - }, - "array-union": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-3.0.1.tgz", - "integrity": "sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw==" - }, - "copy-webpack-plugin": { - "version": "10.2.4", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-10.2.4.tgz", - "integrity": "sha512-xFVltahqlsRcyyJqQbDY6EYTtyQZF9rf+JPjwHObLdPFMEISqkFkr7mFoVOC6BfYS/dNThyoQKvziugm+OnwBg==", - "requires": { - "fast-glob": "^3.2.7", - "glob-parent": "^6.0.1", - "globby": "^12.0.2", - "normalize-path": "^3.0.0", - "schema-utils": "^4.0.0", - "serialize-javascript": "^6.0.0" - }, - "dependencies": { - "globby": { - "version": "12.2.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-12.2.0.tgz", - "integrity": "sha512-wiSuFQLZ+urS9x2gGPl1H5drc5twabmm4m2gTR27XDFyjUHJUNsS8o/2aKyIF6IoBaR630atdher0XJ5g6OMmA==", - "requires": { - "array-union": "^3.0.1", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.7", - "ignore": "^5.1.9", - "merge2": "^1.4.1", - "slash": "^4.0.0" - } - } - } - }, - "css-loader": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.6.0.tgz", - "integrity": "sha512-FK7H2lisOixPT406s5gZM1S3l8GrfhEBT3ZiL2UX1Ng1XWs0y2GPllz/OTyvbaHe12VgQrIXIzuEGVlbUhodqg==", - "requires": { - "icss-utils": "^5.1.0", - "postcss": "^8.4.5", - "postcss-modules-extract-imports": "^3.0.0", - "postcss-modules-local-by-default": "^4.0.0", - "postcss-modules-scope": "^3.0.0", - "postcss-modules-values": "^4.0.0", - "postcss-value-parser": "^4.2.0", - "semver": "^7.3.5" - } - }, - "entities": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", - "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==" - }, - "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==" - }, - "filesize": { - "version": "8.0.7", - "resolved": "https://registry.npmjs.org/filesize/-/filesize-8.0.7.tgz", - "integrity": "sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ==" - }, - "find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "requires": { - "locate-path": "^6.0.0", - "path-exists": "^4.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" - } - }, - "gzip-size": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", - "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", - "requires": { - "duplexer": "^0.1.2" - } - }, - "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" - } - }, - "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==" - }, - "loader-utils": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.0.tgz", - "integrity": "sha512-HVl9ZqccQihZ7JM85dco1MvO9G+ONvxoGa9rkhzFsneGLKSUg1gJf9bWzhRhcvm2qChhWpebQhP44qxjKIUCaQ==" - }, - "locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "requires": { - "p-locate": "^5.0.0" - } - }, - "open": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", - "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", - "requires": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - } - }, - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "requires": { - "yocto-queue": "^0.1.0" - } - }, - "p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "requires": { - "p-limit": "^3.0.2" - } - }, - "react-dev-utils": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-12.0.0.tgz", - "integrity": "sha512-xBQkitdxozPxt1YZ9O1097EJiVpwHr9FoAuEVURCKV0Av8NBERovJauzP7bo1ThvuhZ4shsQ1AJiu4vQpoT1AQ==", - "requires": { - "@babel/code-frame": "^7.16.0", - "address": "^1.1.2", - "browserslist": "^4.18.1", - "chalk": "^4.1.2", - "cross-spawn": "^7.0.3", - "detect-port-alt": "^1.1.6", - "escape-string-regexp": "^4.0.0", - "filesize": "^8.0.6", - "find-up": "^5.0.0", - "fork-ts-checker-webpack-plugin": "^6.5.0", - "global-modules": "^2.0.0", - "globby": "^11.0.4", - "gzip-size": "^6.0.0", - "immer": "^9.0.7", - "is-root": "^2.1.0", - "loader-utils": "^3.2.0", - "open": "^8.4.0", - "pkg-up": "^3.1.0", - "prompts": "^2.4.2", - "react-error-overlay": "^6.0.10", - "recursive-readdir": "^2.2.2", - "shell-quote": "^1.7.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" - } - }, - "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" - } - }, - "slash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", - "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==" - } - } - }, - "@docusaurus/plugin-content-blog": { - "version": "2.0.0-beta.17", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-blog/-/plugin-content-blog-2.0.0-beta.17.tgz", - "integrity": "sha512-gcX4UR+WKT4bhF8FICBQHy+ESS9iRMeaglSboTZbA/YHGax/3EuZtcPU3dU4E/HFJeZ866wgUdbLKpIpsZOidg==", - "requires": { - "@docusaurus/core": "2.0.0-beta.17", - "@docusaurus/logger": "2.0.0-beta.17", - "@docusaurus/mdx-loader": "2.0.0-beta.17", - "@docusaurus/utils": "2.0.0-beta.17", - "@docusaurus/utils-common": "2.0.0-beta.17", - "@docusaurus/utils-validation": "2.0.0-beta.17", - "cheerio": "^1.0.0-rc.10", - "feed": "^4.2.2", - "fs-extra": "^10.0.1", - "lodash": "^4.17.21", - "reading-time": "^1.5.0", - "remark-admonitions": "^1.2.1", - "tslib": "^2.3.1", - "utility-types": "^3.10.0", - "webpack": "^5.69.1" - }, - "dependencies": { - "@docusaurus/logger": { - "version": "2.0.0-beta.17", - "resolved": "https://registry.npmjs.org/@docusaurus/logger/-/logger-2.0.0-beta.17.tgz", - "integrity": "sha512-F9JDl06/VLg+ylsvnq9NpILSUeWtl0j4H2LtlLzX5gufEL4dGiCMlnUzYdHl7FSHSzYJ0A/R7vu0SYofsexC4w==", - "requires": { - "chalk": "^4.1.2", - "tslib": "^2.3.1" - } - }, - "@types/estree": { - "version": "0.0.51", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", - "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==" - }, - "cheerio": { - "version": "1.0.0-rc.10", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.10.tgz", - "integrity": "sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw==", - "requires": { - "cheerio-select": "^1.5.0", - "dom-serializer": "^1.3.2", - "domhandler": "^4.2.0", - "htmlparser2": "^6.1.0", - "parse5": "^6.0.1", - "parse5-htmlparser2-tree-adapter": "^6.0.1", - "tslib": "^2.2.0" - } - }, - "enhanced-resolve": { - "version": "5.9.2", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.2.tgz", - "integrity": "sha512-GIm3fQfwLJ8YZx2smuHpBKkXC1yOk+OBEmKckVyL0i/ea8mqDEykK3ld5dgH1QYPNyT/lIllxV2LULnxCHaHkA==", - "requires": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - } - }, - "fs-extra": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.1.tgz", - "integrity": "sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag==", - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "htmlparser2": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", - "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.0.0", - "domutils": "^2.5.2", - "entities": "^2.0.0" - } - }, - "webpack": { - "version": "5.70.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.70.0.tgz", - "integrity": "sha512-ZMWWy8CeuTTjCxbeaQI21xSswseF2oNOwc70QSKNePvmxE7XW36i7vpBMYZFAUHPwQiEbNGCEYIOOlyRbdGmxw==", - "requires": { - "@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.4.1", - "acorn-import-assertions": "^1.7.6", - "browserslist": "^4.14.5", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.9.2", - "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-better-errors": "^1.0.2", - "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.3.1", - "webpack-sources": "^3.2.3" - } - }, - "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==" - } - } - }, - "@docusaurus/plugin-content-docs": { - "version": "2.0.0-beta.17", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-docs/-/plugin-content-docs-2.0.0-beta.17.tgz", - "integrity": "sha512-YYrBpuRfTfE6NtENrpSHTJ7K7PZifn6j6hcuvdC0QKE+WD8pS+O2/Ws30yoyvHwLnAnfhvaderh1v9Kaa0/ANg==", - "requires": { - "@docusaurus/core": "2.0.0-beta.17", - "@docusaurus/logger": "2.0.0-beta.17", - "@docusaurus/mdx-loader": "2.0.0-beta.17", - "@docusaurus/utils": "2.0.0-beta.17", - "@docusaurus/utils-validation": "2.0.0-beta.17", - "combine-promises": "^1.1.0", - "fs-extra": "^10.0.1", - "import-fresh": "^3.3.0", - "js-yaml": "^4.1.0", - "lodash": "^4.17.21", - "remark-admonitions": "^1.2.1", - "tslib": "^2.3.1", - "utility-types": "^3.10.0", - "webpack": "^5.69.1" - }, - "dependencies": { - "@docusaurus/logger": { - "version": "2.0.0-beta.17", - "resolved": "https://registry.npmjs.org/@docusaurus/logger/-/logger-2.0.0-beta.17.tgz", - "integrity": "sha512-F9JDl06/VLg+ylsvnq9NpILSUeWtl0j4H2LtlLzX5gufEL4dGiCMlnUzYdHl7FSHSzYJ0A/R7vu0SYofsexC4w==", - "requires": { - "chalk": "^4.1.2", - "tslib": "^2.3.1" - } - }, - "@types/estree": { - "version": "0.0.51", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", - "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==" - }, - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" - }, - "enhanced-resolve": { - "version": "5.9.2", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.2.tgz", - "integrity": "sha512-GIm3fQfwLJ8YZx2smuHpBKkXC1yOk+OBEmKckVyL0i/ea8mqDEykK3ld5dgH1QYPNyT/lIllxV2LULnxCHaHkA==", - "requires": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - } - }, - "fs-extra": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.1.tgz", - "integrity": "sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag==", - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "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" - } - }, - "webpack": { - "version": "5.70.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.70.0.tgz", - "integrity": "sha512-ZMWWy8CeuTTjCxbeaQI21xSswseF2oNOwc70QSKNePvmxE7XW36i7vpBMYZFAUHPwQiEbNGCEYIOOlyRbdGmxw==", - "requires": { - "@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.4.1", - "acorn-import-assertions": "^1.7.6", - "browserslist": "^4.14.5", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.9.2", - "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-better-errors": "^1.0.2", - "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.3.1", - "webpack-sources": "^3.2.3" - } - }, - "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==" - } - } - }, - "@docusaurus/plugin-content-pages": { - "version": "2.0.0-beta.17", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-pages/-/plugin-content-pages-2.0.0-beta.17.tgz", - "integrity": "sha512-d5x0mXTMJ44ojRQccmLyshYoamFOep2AnBe69osCDnwWMbD3Or3pnc2KMK9N7mVpQFnNFKbHNCLrX3Rv0uwEHA==", - "requires": { - "@docusaurus/core": "2.0.0-beta.17", - "@docusaurus/mdx-loader": "2.0.0-beta.17", - "@docusaurus/utils": "2.0.0-beta.17", - "@docusaurus/utils-validation": "2.0.0-beta.17", - "fs-extra": "^10.0.1", - "remark-admonitions": "^1.2.1", - "tslib": "^2.3.1", - "webpack": "^5.69.1" - }, - "dependencies": { - "@types/estree": { - "version": "0.0.51", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", - "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==" - }, - "enhanced-resolve": { - "version": "5.9.2", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.2.tgz", - "integrity": "sha512-GIm3fQfwLJ8YZx2smuHpBKkXC1yOk+OBEmKckVyL0i/ea8mqDEykK3ld5dgH1QYPNyT/lIllxV2LULnxCHaHkA==", - "requires": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - } - }, - "fs-extra": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.1.tgz", - "integrity": "sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag==", - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "webpack": { - "version": "5.70.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.70.0.tgz", - "integrity": "sha512-ZMWWy8CeuTTjCxbeaQI21xSswseF2oNOwc70QSKNePvmxE7XW36i7vpBMYZFAUHPwQiEbNGCEYIOOlyRbdGmxw==", - "requires": { - "@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.4.1", - "acorn-import-assertions": "^1.7.6", - "browserslist": "^4.14.5", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.9.2", - "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-better-errors": "^1.0.2", - "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.3.1", - "webpack-sources": "^3.2.3" - } - }, - "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==" - } - } - }, - "@docusaurus/plugin-debug": { - "version": "2.0.0-beta.17", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-debug/-/plugin-debug-2.0.0-beta.17.tgz", - "integrity": "sha512-p26fjYFRSC0esEmKo/kRrLVwXoFnzPCFDumwrImhPyqfVxbj+IKFaiXkayb2qHnyEGE/1KSDIgRF4CHt/pyhiw==", - "requires": { - "@docusaurus/core": "2.0.0-beta.17", - "@docusaurus/utils": "2.0.0-beta.17", - "fs-extra": "^10.0.1", - "react-json-view": "^1.21.3", - "tslib": "^2.3.1" - }, - "dependencies": { - "fs-extra": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.1.tgz", - "integrity": "sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag==", - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - } - } - }, - "@docusaurus/plugin-google-analytics": { - "version": "2.0.0-beta.17", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-2.0.0-beta.17.tgz", - "integrity": "sha512-jvgYIhggYD1W2jymqQVAAyjPJUV1xMCn70bAzaCMxriureMWzhQ/kQMVQpop0ijTMvifOxaV9yTcL1VRXev++A==", - "requires": { - "@docusaurus/core": "2.0.0-beta.17", - "@docusaurus/utils-validation": "2.0.0-beta.17", - "tslib": "^2.3.1" - } - }, - "@docusaurus/plugin-google-gtag": { - "version": "2.0.0-beta.17", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-2.0.0-beta.17.tgz", - "integrity": "sha512-1pnWHtIk1Jfeqwvr8PlcPE5SODWT1gW4TI+ptmJbJ296FjjyvL/pG0AcGEJmYLY/OQc3oz0VQ0W2ognw9jmFIw==", - "requires": { - "@docusaurus/core": "2.0.0-beta.17", - "@docusaurus/utils-validation": "2.0.0-beta.17", - "tslib": "^2.3.1" - } - }, - "@docusaurus/plugin-sitemap": { - "version": "2.0.0-beta.17", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-sitemap/-/plugin-sitemap-2.0.0-beta.17.tgz", - "integrity": "sha512-19/PaGCsap6cjUPZPGs87yV9e1hAIyd0CTSeVV6Caega8nmOKk20FTrQGFJjZPeX8jvD9QIXcdg6BJnPxcKkaQ==", - "requires": { - "@docusaurus/core": "2.0.0-beta.17", - "@docusaurus/utils": "2.0.0-beta.17", - "@docusaurus/utils-common": "2.0.0-beta.17", - "@docusaurus/utils-validation": "2.0.0-beta.17", - "fs-extra": "^10.0.1", - "sitemap": "^7.1.1", - "tslib": "^2.3.1" - }, - "dependencies": { - "fs-extra": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.1.tgz", - "integrity": "sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag==", - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - } - } - }, - "@docusaurus/preset-classic": { - "version": "2.0.0-beta.17", - "resolved": "https://registry.npmjs.org/@docusaurus/preset-classic/-/preset-classic-2.0.0-beta.17.tgz", - "integrity": "sha512-7YUxPEgM09aZWr25/hpDEp1gPl+1KsCPV1ZTRW43sbQ9TinPm+9AKR3rHVDa8ea8MdiS7BpqCVyK+H/eiyQrUw==", - "requires": { - "@docusaurus/core": "2.0.0-beta.17", - "@docusaurus/plugin-content-blog": "2.0.0-beta.17", - "@docusaurus/plugin-content-docs": "2.0.0-beta.17", - "@docusaurus/plugin-content-pages": "2.0.0-beta.17", - "@docusaurus/plugin-debug": "2.0.0-beta.17", - "@docusaurus/plugin-google-analytics": "2.0.0-beta.17", - "@docusaurus/plugin-google-gtag": "2.0.0-beta.17", - "@docusaurus/plugin-sitemap": "2.0.0-beta.17", - "@docusaurus/theme-classic": "2.0.0-beta.17", - "@docusaurus/theme-common": "2.0.0-beta.17", - "@docusaurus/theme-search-algolia": "2.0.0-beta.17" - } - }, - "@docusaurus/react-loadable": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/@docusaurus/react-loadable/-/react-loadable-5.5.2.tgz", - "integrity": "sha512-A3dYjdBGuy0IGT+wyLIGIKLRE+sAk1iNk0f1HjNDysO7u8lhL4N3VEm+FAubmJbAztn94F7MxBTPmnixbiyFdQ==", - "requires": { - "@types/react": "*", - "prop-types": "^15.6.2" - } - }, - "@docusaurus/theme-classic": { - "version": "2.0.0-beta.17", - "resolved": "https://registry.npmjs.org/@docusaurus/theme-classic/-/theme-classic-2.0.0-beta.17.tgz", - "integrity": "sha512-xfZ9kpgqo0lP9YO4rJj79wtiQJXU6ARo5wYy10IIwiWN+lg00scJHhkmNV431b05xIUjUr0cKeH9nqZmEsQRKg==", - "requires": { - "@docusaurus/core": "2.0.0-beta.17", - "@docusaurus/plugin-content-blog": "2.0.0-beta.17", - "@docusaurus/plugin-content-docs": "2.0.0-beta.17", - "@docusaurus/plugin-content-pages": "2.0.0-beta.17", - "@docusaurus/theme-common": "2.0.0-beta.17", - "@docusaurus/theme-translations": "2.0.0-beta.17", - "@docusaurus/utils": "2.0.0-beta.17", - "@docusaurus/utils-common": "2.0.0-beta.17", - "@docusaurus/utils-validation": "2.0.0-beta.17", - "@mdx-js/react": "^1.6.22", - "clsx": "^1.1.1", - "copy-text-to-clipboard": "^3.0.1", - "infima": "0.2.0-alpha.37", - "lodash": "^4.17.21", - "postcss": "^8.4.7", - "prism-react-renderer": "^1.2.1", - "prismjs": "^1.27.0", - "react-router-dom": "^5.2.0", - "rtlcss": "^3.3.0" - }, - "dependencies": { - "postcss": { - "version": "8.4.7", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.7.tgz", - "integrity": "sha512-L9Ye3r6hkkCeOETQX6iOaWZgjp3LL6Lpqm6EtgbKrgqGGteRMNb9vzBfRL96YOSu8o7x3MfIH9Mo5cPJFGrW6A==", - "requires": { - "nanoid": "^3.3.1", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - } - }, - "prismjs": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.27.0.tgz", - "integrity": "sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA==" - }, - "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==" - } - } - }, - "@docusaurus/theme-common": { - "version": "2.0.0-beta.17", - "resolved": "https://registry.npmjs.org/@docusaurus/theme-common/-/theme-common-2.0.0-beta.17.tgz", - "integrity": "sha512-LJBDhx+Qexn1JHBqZbE4k+7lBaV1LgpE33enXf43ShB7ebhC91d5HLHhBwgt0pih4+elZU4rG+BG/roAmsNM0g==", - "requires": { - "@docusaurus/module-type-aliases": "2.0.0-beta.17", - "@docusaurus/plugin-content-blog": "2.0.0-beta.17", - "@docusaurus/plugin-content-docs": "2.0.0-beta.17", - "@docusaurus/plugin-content-pages": "2.0.0-beta.17", - "clsx": "^1.1.1", - "parse-numeric-range": "^1.3.0", - "prism-react-renderer": "^1.3.1", - "tslib": "^2.3.1", - "utility-types": "^3.10.0" - }, - "dependencies": { - "@docusaurus/module-type-aliases": { - "version": "2.0.0-beta.17", - "resolved": "https://registry.npmjs.org/@docusaurus/module-type-aliases/-/module-type-aliases-2.0.0-beta.17.tgz", - "integrity": "sha512-Tu+8geC/wyygBudbSwvWIHEvt5RwyA7dEoE1JmPbgQtmqUxOZ9bgnfemwXpJW5mKuDiJASbN4of1DhbLqf4sPg==", - "requires": { - "@docusaurus/types": "2.0.0-beta.17", - "@types/react": "*", - "@types/react-router-config": "*", - "@types/react-router-dom": "*", - "react-helmet-async": "*" - } - }, - "prism-react-renderer": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/prism-react-renderer/-/prism-react-renderer-1.3.1.tgz", - "integrity": "sha512-xUeDMEz074d0zc5y6rxiMp/dlC7C+5IDDlaEUlcBOFE2wddz7hz5PNupb087mPwTt7T9BrFmewObfCBuf/LKwQ==" - } - } - }, - "@docusaurus/theme-search-algolia": { - "version": "2.0.0-beta.17", - "resolved": "https://registry.npmjs.org/@docusaurus/theme-search-algolia/-/theme-search-algolia-2.0.0-beta.17.tgz", - "integrity": "sha512-W12XKM7QC5Jmrec359bJ7aDp5U8DNkCxjVKsMNIs8rDunBoI/N+R35ERJ0N7Bg9ONAWO6o7VkUERQsfGqdvr9w==", - "requires": { - "@docsearch/react": "^3.0.0", - "@docusaurus/core": "2.0.0-beta.17", - "@docusaurus/logger": "2.0.0-beta.17", - "@docusaurus/theme-common": "2.0.0-beta.17", - "@docusaurus/theme-translations": "2.0.0-beta.17", - "@docusaurus/utils": "2.0.0-beta.17", - "@docusaurus/utils-validation": "2.0.0-beta.17", - "algoliasearch": "^4.12.1", - "algoliasearch-helper": "^3.7.0", - "clsx": "^1.1.1", - "eta": "^1.12.3", - "fs-extra": "^10.0.1", - "lodash": "^4.17.21", - "tslib": "^2.3.1", - "utility-types": "^3.10.0" - }, - "dependencies": { - "@docusaurus/logger": { - "version": "2.0.0-beta.17", - "resolved": "https://registry.npmjs.org/@docusaurus/logger/-/logger-2.0.0-beta.17.tgz", - "integrity": "sha512-F9JDl06/VLg+ylsvnq9NpILSUeWtl0j4H2LtlLzX5gufEL4dGiCMlnUzYdHl7FSHSzYJ0A/R7vu0SYofsexC4w==", - "requires": { - "chalk": "^4.1.2", - "tslib": "^2.3.1" - } - }, - "fs-extra": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.1.tgz", - "integrity": "sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag==", - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - } - } - }, - "@docusaurus/theme-translations": { - "version": "2.0.0-beta.17", - "resolved": "https://registry.npmjs.org/@docusaurus/theme-translations/-/theme-translations-2.0.0-beta.17.tgz", - "integrity": "sha512-oxCX6khjZH3lgdRCL0DH06KkUM/kDr9+lzB35+vY8rpFeQruVgRdi8ekPqG3+Wr0U/N+LMhcYE5BmCb6D0Fv2A==", - "requires": { - "fs-extra": "^10.0.1", - "tslib": "^2.3.1" - }, - "dependencies": { - "fs-extra": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.1.tgz", - "integrity": "sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag==", - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - } - } - }, - "@docusaurus/types": { - "version": "2.0.0-beta.17", - "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-2.0.0-beta.17.tgz", - "integrity": "sha512-4o7TXu5sKlQpybfFFtsGUElBXwSpiXKsQyyWaRKj7DRBkvMtkDX6ITZNnZO9+EHfLbP/cfrokB8C/oO7mCQ5BQ==", - "requires": { - "commander": "^5.1.0", - "joi": "^17.6.0", - "querystring": "0.2.1", - "utility-types": "^3.10.0", - "webpack": "^5.69.1", - "webpack-merge": "^5.8.0" - }, - "dependencies": { - "@types/estree": { - "version": "0.0.51", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", - "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==" - }, - "enhanced-resolve": { - "version": "5.9.2", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.2.tgz", - "integrity": "sha512-GIm3fQfwLJ8YZx2smuHpBKkXC1yOk+OBEmKckVyL0i/ea8mqDEykK3ld5dgH1QYPNyT/lIllxV2LULnxCHaHkA==", - "requires": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - } - }, - "joi": { - "version": "17.6.0", - "resolved": "https://registry.npmjs.org/joi/-/joi-17.6.0.tgz", - "integrity": "sha512-OX5dG6DTbcr/kbMFj0KGYxuew69HPcAE3K/sZpEV2nP6e/j/C0HV+HNiBPCASxdx5T7DMoa0s8UeHWMnb6n2zw==", - "requires": { - "@hapi/hoek": "^9.0.0", - "@hapi/topo": "^5.0.0", - "@sideway/address": "^4.1.3", - "@sideway/formula": "^3.0.0", - "@sideway/pinpoint": "^2.0.0" - } - }, - "querystring": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.1.tgz", - "integrity": "sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg==" - }, - "webpack": { - "version": "5.70.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.70.0.tgz", - "integrity": "sha512-ZMWWy8CeuTTjCxbeaQI21xSswseF2oNOwc70QSKNePvmxE7XW36i7vpBMYZFAUHPwQiEbNGCEYIOOlyRbdGmxw==", - "requires": { - "@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.4.1", - "acorn-import-assertions": "^1.7.6", - "browserslist": "^4.14.5", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.9.2", - "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-better-errors": "^1.0.2", - "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.3.1", - "webpack-sources": "^3.2.3" - } - }, - "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==" - } - } - }, - "@docusaurus/utils": { - "version": "2.0.0-beta.17", - "resolved": "https://registry.npmjs.org/@docusaurus/utils/-/utils-2.0.0-beta.17.tgz", - "integrity": "sha512-yRKGdzSc5v6M/6GyQ4omkrAHCleevwKYiIrufCJgRbOtkhYE574d8mIjjirOuA/emcyLxjh+TLtqAA5TwhIryA==", - "requires": { - "@docusaurus/logger": "2.0.0-beta.17", - "@svgr/webpack": "^6.0.0", - "file-loader": "^6.2.0", - "fs-extra": "^10.0.1", - "github-slugger": "^1.4.0", - "globby": "^11.0.4", - "gray-matter": "^4.0.3", - "js-yaml": "^4.1.0", - "lodash": "^4.17.21", - "micromatch": "^4.0.4", - "resolve-pathname": "^3.0.0", - "shelljs": "^0.8.5", - "tslib": "^2.3.1", - "url-loader": "^4.1.1", - "webpack": "^5.69.1" - }, - "dependencies": { - "@docusaurus/logger": { - "version": "2.0.0-beta.17", - "resolved": "https://registry.npmjs.org/@docusaurus/logger/-/logger-2.0.0-beta.17.tgz", - "integrity": "sha512-F9JDl06/VLg+ylsvnq9NpILSUeWtl0j4H2LtlLzX5gufEL4dGiCMlnUzYdHl7FSHSzYJ0A/R7vu0SYofsexC4w==", - "requires": { - "chalk": "^4.1.2", - "tslib": "^2.3.1" - } - }, - "@svgr/babel-plugin-add-jsx-attribute": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-6.0.0.tgz", - "integrity": "sha512-MdPdhdWLtQsjd29Wa4pABdhWbaRMACdM1h31BY+c6FghTZqNGT7pEYdBoaGeKtdTOBC/XNFQaKVj+r/Ei2ryWA==" - }, - "@svgr/babel-plugin-remove-jsx-attribute": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-6.0.0.tgz", - "integrity": "sha512-aVdtfx9jlaaxc3unA6l+M9YRnKIZjOhQPthLKqmTXC8UVkBLDRGwPKo+r8n3VZN8B34+yVajzPTZ+ptTSuZZCw==" - }, - "@svgr/babel-plugin-remove-jsx-empty-expression": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-6.0.0.tgz", - "integrity": "sha512-Ccj42ApsePD451AZJJf1QzTD1B/BOU392URJTeXFxSK709i0KUsGtbwyiqsKu7vsYxpTM0IA5clAKDyf9RCZyA==" - }, - "@svgr/babel-plugin-replace-jsx-attribute-value": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-6.0.0.tgz", - "integrity": "sha512-88V26WGyt1Sfd1emBYmBJRWMmgarrExpKNVmI9vVozha4kqs6FzQJ/Kp5+EYli1apgX44518/0+t9+NU36lThQ==" - }, - "@svgr/babel-plugin-svg-dynamic-title": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-6.0.0.tgz", - "integrity": "sha512-F7YXNLfGze+xv0KMQxrl2vkNbI9kzT9oDK55/kUuymh1ACyXkMV+VZWX1zEhSTfEKh7VkHVZGmVtHg8eTZ6PRg==" - }, - "@svgr/babel-plugin-svg-em-dimensions": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-6.0.0.tgz", - "integrity": "sha512-+rghFXxdIqJNLQK08kwPBD3Z22/0b2tEZ9lKiL/yTfuyj1wW8HUXu4bo/XkogATIYuXSghVQOOCwURXzHGKyZA==" - }, - "@svgr/babel-plugin-transform-react-native-svg": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-6.0.0.tgz", - "integrity": "sha512-VaphyHZ+xIKv5v0K0HCzyfAaLhPGJXSk2HkpYfXIOKb7DjLBv0soHDxNv6X0vr2titsxE7klb++u7iOf7TSrFQ==" - }, - "@svgr/babel-plugin-transform-svg-component": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-6.2.0.tgz", - "integrity": "sha512-bhYIpsORb++wpsp91fymbFkf09Z/YEKR0DnFjxvN+8JHeCUD2unnh18jIMKnDJTWtvpTaGYPXELVe4OOzFI0xg==" - }, - "@svgr/babel-preset": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-6.2.0.tgz", - "integrity": "sha512-4WQNY0J71JIaL03DRn0vLiz87JXx0b9dYm2aA8XHlQJQoixMl4r/soYHm8dsaJZ3jWtkCiOYy48dp9izvXhDkQ==", - "requires": { - "@svgr/babel-plugin-add-jsx-attribute": "^6.0.0", - "@svgr/babel-plugin-remove-jsx-attribute": "^6.0.0", - "@svgr/babel-plugin-remove-jsx-empty-expression": "^6.0.0", - "@svgr/babel-plugin-replace-jsx-attribute-value": "^6.0.0", - "@svgr/babel-plugin-svg-dynamic-title": "^6.0.0", - "@svgr/babel-plugin-svg-em-dimensions": "^6.0.0", - "@svgr/babel-plugin-transform-react-native-svg": "^6.0.0", - "@svgr/babel-plugin-transform-svg-component": "^6.2.0" - } - }, - "@svgr/core": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/@svgr/core/-/core-6.2.1.tgz", - "integrity": "sha512-NWufjGI2WUyrg46mKuySfviEJ6IxHUOm/8a3Ph38VCWSp+83HBraCQrpEM3F3dB6LBs5x8OElS8h3C0oOJaJAA==", - "requires": { - "@svgr/plugin-jsx": "^6.2.1", - "camelcase": "^6.2.0", - "cosmiconfig": "^7.0.1" - } - }, - "@svgr/hast-util-to-babel-ast": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-6.2.1.tgz", - "integrity": "sha512-pt7MMkQFDlWJVy9ULJ1h+hZBDGFfSCwlBNW1HkLnVi7jUhyEXUaGYWi1x6bM2IXuAR9l265khBT4Av4lPmaNLQ==", - "requires": { - "@babel/types": "^7.15.6", - "entities": "^3.0.1" - } - }, - "@svgr/plugin-jsx": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-6.2.1.tgz", - "integrity": "sha512-u+MpjTsLaKo6r3pHeeSVsh9hmGRag2L7VzApWIaS8imNguqoUwDq/u6U/NDmYs/KAsrmtBjOEaAAPbwNGXXp1g==", - "requires": { - "@babel/core": "^7.15.5", - "@svgr/babel-preset": "^6.2.0", - "@svgr/hast-util-to-babel-ast": "^6.2.1", - "svg-parser": "^2.0.2" - } - }, - "@svgr/plugin-svgo": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-6.2.0.tgz", - "integrity": "sha512-oDdMQONKOJEbuKwuy4Np6VdV6qoaLLvoY86hjvQEgU82Vx1MSWRyYms6Sl0f+NtqxLI/rDVufATbP/ev996k3Q==", - "requires": { - "cosmiconfig": "^7.0.1", - "deepmerge": "^4.2.2", - "svgo": "^2.5.0" - } - }, - "@svgr/webpack": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-6.2.1.tgz", - "integrity": "sha512-h09ngMNd13hnePwgXa+Y5CgOjzlCvfWLHg+MBnydEedAnuLRzUHUJmGS3o2OsrhxTOOqEsPOFt5v/f6C5Qulcw==", - "requires": { - "@babel/core": "^7.15.5", - "@babel/plugin-transform-react-constant-elements": "^7.14.5", - "@babel/preset-env": "^7.15.6", - "@babel/preset-react": "^7.14.5", - "@babel/preset-typescript": "^7.15.0", - "@svgr/core": "^6.2.1", - "@svgr/plugin-jsx": "^6.2.1", - "@svgr/plugin-svgo": "^6.2.0" - } - }, - "@types/estree": { - "version": "0.0.51", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", - "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==" - }, - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" - }, - "enhanced-resolve": { - "version": "5.9.2", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.2.tgz", - "integrity": "sha512-GIm3fQfwLJ8YZx2smuHpBKkXC1yOk+OBEmKckVyL0i/ea8mqDEykK3ld5dgH1QYPNyT/lIllxV2LULnxCHaHkA==", - "requires": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - } - }, - "entities": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", - "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==" - }, - "fs-extra": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.1.tgz", - "integrity": "sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag==", - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "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" - } - }, - "webpack": { - "version": "5.70.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.70.0.tgz", - "integrity": "sha512-ZMWWy8CeuTTjCxbeaQI21xSswseF2oNOwc70QSKNePvmxE7XW36i7vpBMYZFAUHPwQiEbNGCEYIOOlyRbdGmxw==", - "requires": { - "@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.4.1", - "acorn-import-assertions": "^1.7.6", - "browserslist": "^4.14.5", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.9.2", - "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-better-errors": "^1.0.2", - "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.3.1", - "webpack-sources": "^3.2.3" - } - }, - "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==" - } - } - }, - "@docusaurus/utils-common": { - "version": "2.0.0-beta.17", - "resolved": "https://registry.npmjs.org/@docusaurus/utils-common/-/utils-common-2.0.0-beta.17.tgz", - "integrity": "sha512-90WCVdj6zYzs7neEIS594qfLO78cUL6EVK1CsRHJgVkkGjcYlCQ1NwkyO7bOb+nIAwdJrPJRc2FBSpuEGxPD3w==", - "requires": { - "tslib": "^2.3.1" - } - }, - "@docusaurus/utils-validation": { - "version": "2.0.0-beta.17", - "resolved": "https://registry.npmjs.org/@docusaurus/utils-validation/-/utils-validation-2.0.0-beta.17.tgz", - "integrity": "sha512-5UjayUP16fDjgd52eSEhL7SlN9x60pIhyS+K7kt7RmpSLy42+4/bSr2pns2VlATmuaoNOO6iIFdB2jgSYJ6SGA==", - "requires": { - "@docusaurus/logger": "2.0.0-beta.17", - "@docusaurus/utils": "2.0.0-beta.17", - "joi": "^17.6.0", - "tslib": "^2.3.1" - }, - "dependencies": { - "@docusaurus/logger": { - "version": "2.0.0-beta.17", - "resolved": "https://registry.npmjs.org/@docusaurus/logger/-/logger-2.0.0-beta.17.tgz", - "integrity": "sha512-F9JDl06/VLg+ylsvnq9NpILSUeWtl0j4H2LtlLzX5gufEL4dGiCMlnUzYdHl7FSHSzYJ0A/R7vu0SYofsexC4w==", - "requires": { - "chalk": "^4.1.2", - "tslib": "^2.3.1" - } - }, - "joi": { - "version": "17.6.0", - "resolved": "https://registry.npmjs.org/joi/-/joi-17.6.0.tgz", - "integrity": "sha512-OX5dG6DTbcr/kbMFj0KGYxuew69HPcAE3K/sZpEV2nP6e/j/C0HV+HNiBPCASxdx5T7DMoa0s8UeHWMnb6n2zw==", - "requires": { - "@hapi/hoek": "^9.0.0", - "@hapi/topo": "^5.0.0", - "@sideway/address": "^4.1.3", - "@sideway/formula": "^3.0.0", - "@sideway/pinpoint": "^2.0.0" - } - } - } - }, - "@emotion/cache": { - "version": "10.0.29", - "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-10.0.29.tgz", - "integrity": "sha512-fU2VtSVlHiF27empSbxi1O2JFdNWZO+2NFHfwO0pxgTep6Xa3uGb+3pVKfLww2l/IBGLNEZl5Xf/++A4wAYDYQ==", - "requires": { - "@emotion/sheet": "0.9.4", - "@emotion/stylis": "0.8.5", - "@emotion/utils": "0.11.3", - "@emotion/weak-memoize": "0.2.5" - } - }, - "@emotion/core": { - "version": "10.3.1", - "resolved": "https://registry.npmjs.org/@emotion/core/-/core-10.3.1.tgz", - "integrity": "sha512-447aUEjPIm0MnE6QYIaFz9VQOHSXf4Iu6EWOIqq11EAPqinkSZmfymPTmlOE3QjLv846lH4JVZBUOtwGbuQoww==", - "requires": { - "@babel/runtime": "^7.5.5", - "@emotion/cache": "^10.0.27", - "@emotion/css": "^10.0.27", - "@emotion/serialize": "^0.11.15", - "@emotion/sheet": "0.9.4", - "@emotion/utils": "0.11.3" - } - }, - "@emotion/css": { - "version": "10.0.27", - "resolved": "https://registry.npmjs.org/@emotion/css/-/css-10.0.27.tgz", - "integrity": "sha512-6wZjsvYeBhyZQYNrGoR5yPMYbMBNEnanDrqmsqS1mzDm1cOTu12shvl2j4QHNS36UaTE0USIJawCH9C8oW34Zw==", - "requires": { - "@emotion/serialize": "^0.11.15", - "@emotion/utils": "0.11.3", - "babel-plugin-emotion": "^10.0.27" - } - }, - "@emotion/hash": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz", - "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==" - }, - "@emotion/is-prop-valid": { - "version": "0.8.8", - "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz", - "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==", - "requires": { - "@emotion/memoize": "0.7.4" - } - }, - "@emotion/memoize": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", - "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==" - }, - "@emotion/serialize": { - "version": "0.11.16", - "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-0.11.16.tgz", - "integrity": "sha512-G3J4o8by0VRrO+PFeSc3js2myYNOXVJ3Ya+RGVxnshRYgsvErfAOglKAiy1Eo1vhzxqtUvjCyS5gtewzkmvSSg==", - "requires": { - "@emotion/hash": "0.8.0", - "@emotion/memoize": "0.7.4", - "@emotion/unitless": "0.7.5", - "@emotion/utils": "0.11.3", - "csstype": "^2.5.7" - }, - "dependencies": { - "csstype": { - "version": "2.6.19", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.19.tgz", - "integrity": "sha512-ZVxXaNy28/k3kJg0Fou5MiYpp88j7H9hLZp8PDC3jV0WFjfH5E9xHb56L0W59cPbKbcHXeP4qyT8PrHp8t6LcQ==" - } - } - }, - "@emotion/sheet": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-0.9.4.tgz", - "integrity": "sha512-zM9PFmgVSqBw4zL101Q0HrBVTGmpAxFZH/pYx/cjJT5advXguvcgjHFTCaIO3enL/xr89vK2bh0Mfyj9aa0ANA==" - }, - "@emotion/styled": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-10.3.0.tgz", - "integrity": "sha512-GgcUpXBBEU5ido+/p/mCT2/Xx+Oqmp9JzQRuC+a4lYM4i4LBBn/dWvc0rQ19N9ObA8/T4NWMrPNe79kMBDJqoQ==", - "requires": { - "@emotion/styled-base": "^10.3.0", - "babel-plugin-emotion": "^10.0.27" - } - }, - "@emotion/styled-base": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/@emotion/styled-base/-/styled-base-10.3.0.tgz", - "integrity": "sha512-PBRqsVKR7QRNkmfH78hTSSwHWcwDpecH9W6heujWAcyp2wdz/64PP73s7fWS1dIPm8/Exc8JAzYS8dEWXjv60w==", - "requires": { - "@babel/runtime": "^7.5.5", - "@emotion/is-prop-valid": "0.8.8", - "@emotion/serialize": "^0.11.15", - "@emotion/utils": "0.11.3" - } - }, - "@emotion/stylis": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/@emotion/stylis/-/stylis-0.8.5.tgz", - "integrity": "sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==" - }, - "@emotion/unitless": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", - "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==" - }, - "@emotion/utils": { - "version": "0.11.3", - "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-0.11.3.tgz", - "integrity": "sha512-0o4l6pZC+hI88+bzuaX/6BgOvQVhbt2PfmxauVaYOGgbsAw14wdKyvMCZXnsnsHys94iadcF+RG/wZyx6+ZZBw==" - }, - "@emotion/weak-memoize": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz", - "integrity": "sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA==" - }, - "@hapi/hoek": { - "version": "9.2.1", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.2.1.tgz", - "integrity": "sha512-gfta+H8aziZsm8pZa0vj04KO6biEiisppNgA1kbJvFrrWu9Vm7eaUEy76DIxsuTaWvti5fkJVhllWc6ZTE+Mdw==" - }, - "@hapi/topo": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", - "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", - "requires": { - "@hapi/hoek": "^9.0.0" - } - }, - "@jridgewell/resolve-uri": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz", - "integrity": "sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==" - }, - "@jridgewell/sourcemap-codec": { - "version": "1.4.11", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz", - "integrity": "sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==" - }, - "@jridgewell/trace-mapping": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz", - "integrity": "sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ==", - "requires": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "@mdx-js/mdx": { - "version": "1.6.22", - "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-1.6.22.tgz", - "integrity": "sha512-AMxuLxPz2j5/6TpF/XSdKpQP1NlG0z11dFOlq+2IP/lSgl11GY8ji6S/rgsViN/L0BDvHvUMruRb7ub+24LUYA==", - "requires": { - "@babel/core": "7.12.9", - "@babel/plugin-syntax-jsx": "7.12.1", - "@babel/plugin-syntax-object-rest-spread": "7.8.3", - "@mdx-js/util": "1.6.22", - "babel-plugin-apply-mdx-type-prop": "1.6.22", - "babel-plugin-extract-import-names": "1.6.22", - "camelcase-css": "2.0.1", - "detab": "2.0.4", - "hast-util-raw": "6.0.1", - "lodash.uniq": "4.5.0", - "mdast-util-to-hast": "10.0.1", - "remark-footnotes": "2.0.0", - "remark-mdx": "1.6.22", - "remark-parse": "8.0.3", - "remark-squeeze-paragraphs": "4.0.0", - "style-to-object": "0.3.0", - "unified": "9.2.0", - "unist-builder": "2.0.3", - "unist-util-visit": "2.0.3" - }, - "dependencies": { - "@babel/core": { - "version": "7.12.9", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.9.tgz", - "integrity": "sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ==", - "requires": { - "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.12.5", - "@babel/helper-module-transforms": "^7.12.1", - "@babel/helpers": "^7.12.5", - "@babel/parser": "^7.12.7", - "@babel/template": "^7.12.7", - "@babel/traverse": "^7.12.9", - "@babel/types": "^7.12.7", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.1", - "json5": "^2.1.2", - "lodash": "^4.17.19", - "resolve": "^1.3.2", - "semver": "^5.4.1", - "source-map": "^0.5.0" - } - }, - "@babel/plugin-syntax-jsx": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.1.tgz", - "integrity": "sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - } - } - }, - "@mdx-js/react": { - "version": "1.6.22", - "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-1.6.22.tgz", - "integrity": "sha512-TDoPum4SHdfPiGSAaRBw7ECyI8VaHpK8GJugbJIJuqyh6kzw9ZLJZW3HGL3NNrJGxcAixUvqROm+YuQOo5eXtg==" - }, - "@mdx-js/runtime": { - "version": "1.6.22", - "resolved": "https://registry.npmjs.org/@mdx-js/runtime/-/runtime-1.6.22.tgz", - "integrity": "sha512-p17spaO2+55VLCuxXA3LVHC4phRx60NR2XMdZ+qgVU1lKvEX4y88dmFNOzGDCPLJ03IZyKrJ/rPWWRiBrd9JrQ==", - "requires": { - "@mdx-js/mdx": "1.6.22", - "@mdx-js/react": "1.6.22", - "buble-jsx-only": "^0.19.8" - } - }, - "@mdx-js/util": { - "version": "1.6.22", - "resolved": "https://registry.npmjs.org/@mdx-js/util/-/util-1.6.22.tgz", - "integrity": "sha512-H1rQc1ZOHANWBvPcW+JpGwr+juXSxM8Q8YCkm3GhZd8REu1fHR3z99CErO1p9pkcfcxZnMdIZdIsXkOHY0NilA==" - }, - "@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" - } - }, - "@polka/url": { - "version": "1.0.0-next.21", - "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.21.tgz", - "integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==" - }, - "@saucelabs/theme-github-codeblock": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@saucelabs/theme-github-codeblock/-/theme-github-codeblock-0.1.1.tgz", - "integrity": "sha512-iHzODYjcUAYI4eJzLrNCw/Iq9SWxCKB/cMgEKHjRmNMb2NKch1dsI2ZSCg8lNedIPmOaRfqHT29hLyMoc/5Wpg==" - }, - "@sideway/address": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.3.tgz", - "integrity": "sha512-8ncEUtmnTsMmL7z1YPB47kPUq7LpKWJNFPsRzHiIajGC5uXlWGn+AmkYPcHNl8S4tcEGx+cnORnNYaw2wvL+LQ==", - "requires": { - "@hapi/hoek": "^9.0.0" - } - }, - "@sideway/formula": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.0.tgz", - "integrity": "sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg==" - }, - "@sideway/pinpoint": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", - "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" - }, - "@sindresorhus/is": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", - "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==" - }, - "@slorber/static-site-generator-webpack-plugin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@slorber/static-site-generator-webpack-plugin/-/static-site-generator-webpack-plugin-4.0.1.tgz", - "integrity": "sha512-PSv4RIVO1Y3kvHxjvqeVisk3E9XFoO04uwYBDWe217MFqKspplYswTuKLiJu0aLORQWzuQjfVsSlLPojwfYsLw==", - "requires": { - "bluebird": "^3.7.1", - "cheerio": "^0.22.0", - "eval": "^0.1.4", - "url": "^0.11.0", - "webpack-sources": "^1.4.3" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - }, - "webpack-sources": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", - "requires": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - } - } - } - }, - "@styled-system/background": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@styled-system/background/-/background-5.1.2.tgz", - "integrity": "sha512-jtwH2C/U6ssuGSvwTN3ri/IyjdHb8W9X/g8Y0JLcrH02G+BW3OS8kZdHphF1/YyRklnrKrBT2ngwGUK6aqqV3A==", - "requires": { - "@styled-system/core": "^5.1.2" - } - }, - "@styled-system/border": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/@styled-system/border/-/border-5.1.5.tgz", - "integrity": "sha512-JvddhNrnhGigtzWRCVuAHepniyVi6hBlimxWDVAdcTuk7aRn9BYJUwfHslURtwYFsF5FoEs8Zmr1oZq2M1AP0A==", - "requires": { - "@styled-system/core": "^5.1.2" - } - }, - "@styled-system/color": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@styled-system/color/-/color-5.1.2.tgz", - "integrity": "sha512-1kCkeKDZkt4GYkuFNKc7vJQMcOmTl3bJY3YBUs7fCNM6mMYJeT1pViQ2LwBSBJytj3AB0o4IdLBoepgSgGl5MA==", - "requires": { - "@styled-system/core": "^5.1.2" - } - }, - "@styled-system/core": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@styled-system/core/-/core-5.1.2.tgz", - "integrity": "sha512-XclBDdNIy7OPOsN4HBsawG2eiWfCcuFt6gxKn1x4QfMIgeO6TOlA2pZZ5GWZtIhCUqEPTgIBta6JXsGyCkLBYw==", - "requires": { - "object-assign": "^4.1.1" - } - }, - "@styled-system/css": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/@styled-system/css/-/css-5.1.5.tgz", - "integrity": "sha512-XkORZdS5kypzcBotAMPBoeckDs9aSZVkvrAlq5K3xP8IMAUek+x2O4NtwoSgkYkWWzVBu6DGdFZLR790QWGG+A==" - }, - "@styled-system/flexbox": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@styled-system/flexbox/-/flexbox-5.1.2.tgz", - "integrity": "sha512-6hHV52+eUk654Y1J2v77B8iLeBNtc+SA3R4necsu2VVinSD7+XY5PCCEzBFaWs42dtOEDIa2lMrgL0YBC01mDQ==", - "requires": { - "@styled-system/core": "^5.1.2" - } - }, - "@styled-system/grid": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@styled-system/grid/-/grid-5.1.2.tgz", - "integrity": "sha512-K3YiV1KyHHzgdNuNlaw8oW2ktMuGga99o1e/NAfTEi5Zsa7JXxzwEnVSDSBdJC+z6R8WYTCYRQC6bkVFcvdTeg==", - "requires": { - "@styled-system/core": "^5.1.2" - } - }, - "@styled-system/layout": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@styled-system/layout/-/layout-5.1.2.tgz", - "integrity": "sha512-wUhkMBqSeacPFhoE9S6UF3fsMEKFv91gF4AdDWp0Aym1yeMPpqz9l9qS/6vjSsDPF7zOb5cOKC3tcKKOMuDCPw==", - "requires": { - "@styled-system/core": "^5.1.2" - } - }, - "@styled-system/position": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@styled-system/position/-/position-5.1.2.tgz", - "integrity": "sha512-60IZfMXEOOZe3l1mCu6sj/2NAyUmES2kR9Kzp7s2D3P4qKsZWxD1Se1+wJvevb+1TP+ZMkGPEYYXRyU8M1aF5A==", - "requires": { - "@styled-system/core": "^5.1.2" - } - }, - "@styled-system/shadow": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@styled-system/shadow/-/shadow-5.1.2.tgz", - "integrity": "sha512-wqniqYb7XuZM7K7C0d1Euxc4eGtqEe/lvM0WjuAFsQVImiq6KGT7s7is+0bNI8O4Dwg27jyu4Lfqo/oIQXNzAg==", - "requires": { - "@styled-system/core": "^5.1.2" - } - }, - "@styled-system/should-forward-prop": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/@styled-system/should-forward-prop/-/should-forward-prop-5.1.5.tgz", - "integrity": "sha512-+rPRomgCGYnUIaFabDoOgpSDc4UUJ1KsmlnzcEp0tu5lFrBQKgZclSo18Z1URhaZm7a6agGtS5Xif7tuC2s52Q==", - "requires": { - "@emotion/is-prop-valid": "^0.8.1", - "@emotion/memoize": "^0.7.1", - "styled-system": "^5.1.5" - } - }, - "@styled-system/space": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@styled-system/space/-/space-5.1.2.tgz", - "integrity": "sha512-+zzYpR8uvfhcAbaPXhH8QgDAV//flxqxSjHiS9cDFQQUSznXMQmxJegbhcdEF7/eNnJgHeIXv1jmny78kipgBA==", - "requires": { - "@styled-system/core": "^5.1.2" - } - }, - "@styled-system/typography": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@styled-system/typography/-/typography-5.1.2.tgz", - "integrity": "sha512-BxbVUnN8N7hJ4aaPOd7wEsudeT7CxarR+2hns8XCX1zp0DFfbWw4xYa/olA0oQaqx7F1hzDg+eRaGzAJbF+jOg==", - "requires": { - "@styled-system/core": "^5.1.2" - } - }, - "@styled-system/variant": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/@styled-system/variant/-/variant-5.1.5.tgz", - "integrity": "sha512-Yn8hXAFoWIro8+Q5J8YJd/mP85Teiut3fsGVR9CAxwgNfIAiqlYxsk5iHU7VHJks/0KjL4ATSjmbtCDC/4l1qw==", - "requires": { - "@styled-system/core": "^5.1.2", - "@styled-system/css": "^5.1.5" - } - }, - "@superset-ui/style": { - "version": "0.14.23", - "resolved": "https://registry.npmjs.org/@superset-ui/style/-/style-0.14.23.tgz", - "integrity": "sha512-/ac0au8jKyvqo5GO/buKy+WYZ2Q3u0z3stcUDW+RmZ//DB47FAqkXSoKhkTIsKsZU0sERMww03Fj2FP+d6BBUw==", - "requires": { - "@emotion/core": "^10.0.28", - "@emotion/styled": "^10.0.27", - "emotion-theming": "^10.0.27" - } - }, - "@svgr/babel-plugin-add-jsx-attribute": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz", - "integrity": "sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg==" - }, - "@svgr/babel-plugin-remove-jsx-attribute": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-5.4.0.tgz", - "integrity": "sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg==" - }, - "@svgr/babel-plugin-remove-jsx-empty-expression": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-5.0.1.tgz", - "integrity": "sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA==" - }, - "@svgr/babel-plugin-replace-jsx-attribute-value": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-5.0.1.tgz", - "integrity": "sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ==" - }, - "@svgr/babel-plugin-svg-dynamic-title": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-5.4.0.tgz", - "integrity": "sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg==" - }, - "@svgr/babel-plugin-svg-em-dimensions": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-5.4.0.tgz", - "integrity": "sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw==" - }, - "@svgr/babel-plugin-transform-react-native-svg": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-5.4.0.tgz", - "integrity": "sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q==" - }, - "@svgr/babel-plugin-transform-svg-component": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-5.5.0.tgz", - "integrity": "sha512-q4jSH1UUvbrsOtlo/tKcgSeiCHRSBdXoIoqX1pgcKK/aU3JD27wmMKwGtpB8qRYUYoyXvfGxUVKchLuR5pB3rQ==" - }, - "@svgr/babel-preset": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-5.5.0.tgz", - "integrity": "sha512-4FiXBjvQ+z2j7yASeGPEi8VD/5rrGQk4Xrq3EdJmoZgz/tpqChpo5hgXDvmEauwtvOc52q8ghhZK4Oy7qph4ig==", - "requires": { - "@svgr/babel-plugin-add-jsx-attribute": "^5.4.0", - "@svgr/babel-plugin-remove-jsx-attribute": "^5.4.0", - "@svgr/babel-plugin-remove-jsx-empty-expression": "^5.0.1", - "@svgr/babel-plugin-replace-jsx-attribute-value": "^5.0.1", - "@svgr/babel-plugin-svg-dynamic-title": "^5.4.0", - "@svgr/babel-plugin-svg-em-dimensions": "^5.4.0", - "@svgr/babel-plugin-transform-react-native-svg": "^5.4.0", - "@svgr/babel-plugin-transform-svg-component": "^5.5.0" - } - }, - "@svgr/core": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/core/-/core-5.5.0.tgz", - "integrity": "sha512-q52VOcsJPvV3jO1wkPtzTuKlvX7Y3xIcWRpCMtBF3MrteZJtBfQw/+u0B1BHy5ColpQc1/YVTrPEtSYIMNZlrQ==", - "requires": { - "@svgr/plugin-jsx": "^5.5.0", - "camelcase": "^6.2.0", - "cosmiconfig": "^7.0.0" - } - }, - "@svgr/hast-util-to-babel-ast": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-5.5.0.tgz", - "integrity": "sha512-cAaR/CAiZRB8GP32N+1jocovUtvlj0+e65TB50/6Lcime+EA49m/8l+P2ko+XPJ4dw3xaPS3jOL4F2X4KWxoeQ==", - "requires": { - "@babel/types": "^7.12.6" - } - }, - "@svgr/plugin-jsx": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-5.5.0.tgz", - "integrity": "sha512-V/wVh33j12hGh05IDg8GpIUXbjAPnTdPTKuP4VNLggnwaHMPNQNae2pRnyTAILWCQdz5GyMqtO488g7CKM8CBA==", - "requires": { - "@babel/core": "^7.12.3", - "@svgr/babel-preset": "^5.5.0", - "@svgr/hast-util-to-babel-ast": "^5.5.0", - "svg-parser": "^2.0.2" - } - }, - "@svgr/plugin-svgo": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-5.5.0.tgz", - "integrity": "sha512-r5swKk46GuQl4RrVejVwpeeJaydoxkdwkM1mBKOgJLBUJPGaLci6ylg/IjhrRsREKDkr4kbMWdgOtbXEh0fyLQ==", - "requires": { - "cosmiconfig": "^7.0.0", - "deepmerge": "^4.2.2", - "svgo": "^1.2.2" - }, - "dependencies": { - "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" - } - }, - "css-select": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", - "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", - "requires": { - "boolbase": "^1.0.0", - "css-what": "^3.2.1", - "domutils": "^1.7.0", - "nth-check": "^1.0.2" - } - }, - "css-tree": { - "version": "1.0.0-alpha.37", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", - "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", - "requires": { - "mdn-data": "2.0.4", - "source-map": "^0.6.1" - } - }, - "css-what": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", - "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==" - }, - "dom-serializer": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", - "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", - "requires": { - "domelementtype": "^2.0.1", - "entities": "^2.0.0" - }, - "dependencies": { - "domelementtype": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", - "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==" - } - } - }, - "domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" - }, - "domutils": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", - "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", - "requires": { - "dom-serializer": "0", - "domelementtype": "1" - } - }, - "mdn-data": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", - "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==" - }, - "nth-check": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", - "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", - "requires": { - "boolbase": "~1.0.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - }, - "svgo": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", - "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", - "requires": { - "chalk": "^2.4.1", - "coa": "^2.0.2", - "css-select": "^2.0.0", - "css-select-base-adapter": "^0.1.1", - "css-tree": "1.0.0-alpha.37", - "csso": "^4.0.2", - "js-yaml": "^3.13.1", - "mkdirp": "~0.5.1", - "object.values": "^1.1.0", - "sax": "~1.2.4", - "stable": "^0.1.8", - "unquote": "~1.1.1", - "util.promisify": "~1.0.0" - } - } - } - }, - "@svgr/webpack": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-5.5.0.tgz", - "integrity": "sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g==", - "requires": { - "@babel/core": "^7.12.3", - "@babel/plugin-transform-react-constant-elements": "^7.12.1", - "@babel/preset-env": "^7.12.1", - "@babel/preset-react": "^7.12.5", - "@svgr/core": "^5.5.0", - "@svgr/plugin-jsx": "^5.5.0", - "@svgr/plugin-svgo": "^5.5.0", - "loader-utils": "^2.0.0" - } - }, - "@szmarczak/http-timer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", - "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", - "requires": { - "defer-to-connect": "^1.0.1" - } - }, - "@theme-ui/color-modes": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@theme-ui/color-modes/-/color-modes-0.3.5.tgz", - "integrity": "sha512-3n5ExAnp1gAuVVFdGF2rRLyrVsa7qtmUXx+gj1wPJsADq23EE4ctkppC+aIfPFxT196WhR8fjErrVuO7Rh+wAg==", - "requires": { - "@emotion/core": "^10.0.0", - "@theme-ui/core": "0.3.5", - "@theme-ui/css": "0.3.5", - "deepmerge": "^4.2.2" - } - }, - "@theme-ui/components": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@theme-ui/components/-/components-0.3.5.tgz", - "integrity": "sha512-RdWwnN43H1Tq80lGCu6icNuYCWoHHNtwH+LJGaGfiPkv/uMXWrwzKPLMiAuYM5b3ofKtmdaAcxZLjqAld97jkw==", - "requires": { - "@emotion/core": "^10.0.0", - "@emotion/styled": "^10.0.0", - "@styled-system/color": "^5.1.2", - "@styled-system/should-forward-prop": "^5.1.2", - "@styled-system/space": "^5.1.2", - "@theme-ui/css": "0.3.5" - } - }, - "@theme-ui/core": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@theme-ui/core/-/core-0.3.5.tgz", - "integrity": "sha512-80gbG4BW0ZQgZ8TWSG7vY72uXDxmkI/GttjpJee7AJlWVrPh7RCD2E3cuFPjqXzt7o4BJ9lZSHmTXcLzixNtRw==", - "requires": { - "@emotion/core": "^10.0.0", - "@theme-ui/css": "0.3.5", - "deepmerge": "^4.2.2" - } - }, - "@theme-ui/css": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@theme-ui/css/-/css-0.3.5.tgz", - "integrity": "sha512-XqsyXmifbnHOui1flSq4V7Lb3U+06Dbn2Q/leyr/cRd6Xgc0naiztdmD0MbXNvxgU51a2Ur9hyP4PnO5wE0yRg==" - }, - "@theme-ui/mdx": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@theme-ui/mdx/-/mdx-0.3.5.tgz", - "integrity": "sha512-KMf5kkEcItQ3qIj7dston/kBOZc82ST2R0pUcyk/u8ZclX4ingRtZkMxm2zpmxybzdSUY3DIKf2MTK9CxUSpOQ==", - "requires": { - "@emotion/core": "^10.0.0", - "@emotion/styled": "^10.0.0", - "@mdx-js/react": "^1.0.0" - } - }, - "@theme-ui/theme-provider": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@theme-ui/theme-provider/-/theme-provider-0.3.5.tgz", - "integrity": "sha512-C1kVsGyrh/pqO/j4+KSF5IvVW1DOnZoQmpaJ9EjyU4bqY0PCTZfuNdNPfydKaDWiYxrKGXKBeX0xjvLLU6R0zQ==", - "requires": { - "@emotion/core": "^10.0.0", - "@theme-ui/color-modes": "0.3.5", - "@theme-ui/core": "0.3.5", - "@theme-ui/mdx": "0.3.5" - } - }, - "@trysound/sax": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", - "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==" - }, - "@tsconfig/docusaurus": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@tsconfig/docusaurus/-/docusaurus-1.0.4.tgz", - "integrity": "sha512-I6sziQAzLrrqj9r6S26c7aOAjfGVXIE7gWdNONPwnpDcHiMRMQut1s1YCi/APem3dOy23tAb2rvHfNtGCaWuUQ==", - "dev": true - }, - "@types/body-parser": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", - "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", - "requires": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "@types/bonjour": { - "version": "3.5.10", - "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz", - "integrity": "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==", - "requires": { - "@types/node": "*" - } - }, - "@types/connect": { - "version": "3.4.35", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", - "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", - "requires": { - "@types/node": "*" - } - }, - "@types/connect-history-api-fallback": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz", - "integrity": "sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==", - "requires": { - "@types/express-serve-static-core": "*", - "@types/node": "*" - } - }, - "@types/eslint": { - "version": "8.2.2", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.2.2.tgz", - "integrity": "sha512-nQxgB8/Sg+QKhnV8e0WzPpxjIGT3tuJDDzybkDi8ItE/IgTlHo07U0shaIjzhcvQxlq9SDRE42lsJ23uvEgJ2A==", - "requires": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "@types/eslint-scope": { - "version": "3.7.3", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", - "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", - "requires": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, - "@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/express": { - "version": "4.17.13", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", - "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", - "requires": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.18", - "@types/qs": "*", - "@types/serve-static": "*" - } - }, - "@types/express-serve-static-core": { - "version": "4.17.27", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.27.tgz", - "integrity": "sha512-e/sVallzUTPdyOTiqi8O8pMdBBphscvI6E4JYaKlja4Lm+zh7UFSSdW5VMkRbhDtmrONqOUHOXRguPsDckzxNA==", - "requires": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*" - } - }, - "@types/hast": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.4.tgz", - "integrity": "sha512-wLEm0QvaoawEDoTRwzTXp4b4jpwiJDvR5KMnFnVodm3scufTlBOWRD6N1OBf9TZMhjlNsSfcO5V+7AF4+Vy+9g==", - "requires": { - "@types/unist": "*" - } - }, - "@types/history": { - "version": "4.7.10", - "resolved": "https://registry.npmjs.org/@types/history/-/history-4.7.10.tgz", - "integrity": "sha512-kq1vceWANyZLEt/+hbTWSAjLNhhXYgUw6Ywi0KQ9C7pZJP4Qrr0xjSKb3t59e5GwWtk1L6zt5KTxjH4oPk2l/w==" - }, - "@types/hoist-non-react-statics": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz", - "integrity": "sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==", - "requires": { - "@types/react": "*", - "hoist-non-react-statics": "^3.3.0" - } - }, - "@types/html-minifier-terser": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", - "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==" - }, - "@types/http-proxy": { - "version": "1.17.8", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.8.tgz", - "integrity": "sha512-5kPLG5BKpWYkw/LVOGWpiq3nEVqxiN32rTgI53Sk12/xHFQ2rG3ehI9IO+O3W2QoKeyB92dJkoka8SUm6BX1pA==", - "requires": { - "@types/node": "*" - } - }, - "@types/json-schema": { - "version": "7.0.9", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", - "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==" - }, - "@types/mdast": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.10.tgz", - "integrity": "sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==", - "requires": { - "@types/unist": "*" - } - }, - "@types/mime": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", - "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==" - }, - "@types/node": { - "version": "17.0.8", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.8.tgz", - "integrity": "sha512-YofkM6fGv4gDJq78g4j0mMuGMkZVxZDgtU0JRdx6FgiJDG+0fY0GKVolOV8WqVmEhLCXkQRjwDdKyPxJp/uucg==" - }, - "@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==" - }, - "@types/parse5": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-5.0.3.tgz", - "integrity": "sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw==" - }, - "@types/prop-types": { - "version": "15.7.4", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.4.tgz", - "integrity": "sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==" - }, - "@types/q": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.5.tgz", - "integrity": "sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ==" - }, - "@types/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==" - }, - "@types/range-parser": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", - "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" - }, - "@types/react": { - "version": "17.0.38", - "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.38.tgz", - "integrity": "sha512-SI92X1IA+FMnP3qM5m4QReluXzhcmovhZnLNm3pyeQlooi02qI7sLiepEYqT678uNiyc25XfCqxREFpy3W7YhQ==", - "requires": { - "@types/prop-types": "*", - "@types/scheduler": "*", - "csstype": "^3.0.2" - } - }, - "@types/react-redux": { - "version": "7.1.21", - "resolved": "https://registry.npmjs.org/@types/react-redux/-/react-redux-7.1.21.tgz", - "integrity": "sha512-bLdglUiBSQNzWVVbmNPKGYYjrzp3/YDPwfOH3nLEz99I4awLlaRAPWjo6bZ2POpxztFWtDDXIPxBLVykXqBt+w==", - "requires": { - "@types/hoist-non-react-statics": "^3.3.0", - "@types/react": "*", - "hoist-non-react-statics": "^3.3.0", - "redux": "^4.0.0" - } - }, - "@types/react-router": { - "version": "5.1.17", - "resolved": "https://registry.npmjs.org/@types/react-router/-/react-router-5.1.17.tgz", - "integrity": "sha512-RNSXOyb3VyRs/EOGmjBhhGKTbnN6fHWvy5FNLzWfOWOGjgVUKqJZXfpKzLmgoU8h6Hj8mpALj/mbXQASOb92wQ==", - "requires": { - "@types/history": "*", - "@types/react": "*" - } - }, - "@types/react-router-config": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@types/react-router-config/-/react-router-config-5.0.4.tgz", - "integrity": "sha512-wJIRO2JcR/prphs4h7Fadx48vlqC3qMyTImqOLHkpwWCYBq9SnC+UAOBVZM4pCrzdIvUoXQy3b18+J6LXEKVpw==", - "requires": { - "@types/history": "*", - "@types/react": "*", - "@types/react-router": "*" - } - }, - "@types/react-router-dom": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/@types/react-router-dom/-/react-router-dom-5.3.2.tgz", - "integrity": "sha512-ELEYRUie2czuJzaZ5+ziIp9Hhw+juEw8b7C11YNA4QdLCVbQ3qLi2l4aq8XnlqM7V31LZX8dxUuFUCrzHm6sqQ==", - "requires": { - "@types/history": "*", - "@types/react": "*", - "@types/react-router": "*" - } - }, - "@types/retry": { - "version": "0.12.1", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.1.tgz", - "integrity": "sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g==" - }, - "@types/sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@types/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-pSAff4IAxJjfAXUG6tFkO7dsSbTmf8CtUpfhhZ5VhkRpC4628tJhh3+V6H1E+/Gs9piSzYKT5yzHO5M4GG9jkw==", - "requires": { - "@types/node": "*" - } - }, - "@types/scheduler": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", - "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" - }, - "@types/serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==", - "requires": { - "@types/express": "*" - } - }, - "@types/serve-static": { - "version": "1.13.10", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", - "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", - "requires": { - "@types/mime": "^1", - "@types/node": "*" - } - }, - "@types/sockjs": { - "version": "0.3.33", - "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz", - "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==", - "requires": { - "@types/node": "*" - } - }, - "@types/unist": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz", - "integrity": "sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==" - }, - "@types/ws": { - "version": "8.2.2", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.2.2.tgz", - "integrity": "sha512-NOn5eIcgWLOo6qW8AcuLZ7G8PycXu0xTxxkS6Q18VWFxgPUSOwV0pBj2a/4viNZVu25i7RIB7GttdkAIUUXOOg==", - "requires": { - "@types/node": "*" - } - }, - "@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" - } - }, - "@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==" - }, - "accepts": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", - "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", - "requires": { - "mime-types": "~2.1.24", - "negotiator": "0.6.2" - } - }, - "acorn": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", - "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==" - }, - "acorn-dynamic-import": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz", - "integrity": "sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw==" - }, - "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==" - }, - "acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==" - }, - "acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==" - }, - "address": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/address/-/address-1.1.2.tgz", - "integrity": "sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA==" - }, - "aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "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.8.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.8.2.tgz", - "integrity": "sha512-x9VuX+R/jcFj1DHo/fCp99esgGDWiHENrKxaCENuCxpoMCmAt/COCGVDwA7kleEpEzJjDnvh3yGoOuLu0Dtllw==", - "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==" - }, - "algoliasearch": { - "version": "4.12.2", - "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.12.2.tgz", - "integrity": "sha512-bn1P9+V415zeDQJtXn+1SwuwedEAv9/LJAxt8XwR6ygH/sMwaHSm2hpkz8wIbCBt/tKQ43TL672Kyxzv5PwGgQ==", - "requires": { - "@algolia/cache-browser-local-storage": "4.12.2", - "@algolia/cache-common": "4.12.2", - "@algolia/cache-in-memory": "4.12.2", - "@algolia/client-account": "4.12.2", - "@algolia/client-analytics": "4.12.2", - "@algolia/client-common": "4.12.2", - "@algolia/client-personalization": "4.12.2", - "@algolia/client-search": "4.12.2", - "@algolia/logger-common": "4.12.2", - "@algolia/logger-console": "4.12.2", - "@algolia/requester-browser-xhr": "4.12.2", - "@algolia/requester-common": "4.12.2", - "@algolia/requester-node-http": "4.12.2", - "@algolia/transporter": "4.12.2" - } - }, - "algoliasearch-helper": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/algoliasearch-helper/-/algoliasearch-helper-3.7.0.tgz", - "integrity": "sha512-XJ3QfERBLfeVCyTVx80gon7r3/rgm/CE8Ha1H7cbablRe/X7SfYQ14g/eO+MhjVKIQp+gy9oC6G5ilmLwS1k6w==", - "requires": { - "@algolia/events": "^4.0.1" - } - }, - "alphanum-sort": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", - "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=" - }, - "ansi-align": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", - "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", - "requires": { - "string-width": "^4.1.0" - } - }, - "ansi-html-community": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", - "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==" - }, - "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" - } - }, - "antd": { - "version": "4.18.7", - "resolved": "https://registry.npmjs.org/antd/-/antd-4.18.7.tgz", - "integrity": "sha512-OJsrZOPy4+fEbIVoUFLXQ9quLthkOjQD+AGwIey3nC5+4hebloImbGqqwQ1/ypSFDxou8NtyZ2HCTfPP5WaO4g==", - "requires": { - "@ant-design/colors": "^6.0.0", - "@ant-design/icons": "^4.7.0", - "@ant-design/react-slick": "~0.28.1", - "@babel/runtime": "^7.12.5", - "@ctrl/tinycolor": "^3.4.0", - "classnames": "^2.2.6", - "copy-to-clipboard": "^3.2.0", - "lodash": "^4.17.21", - "memoize-one": "^6.0.0", - "moment": "^2.25.3", - "rc-cascader": "~3.2.1", - "rc-checkbox": "~2.3.0", - "rc-collapse": "~3.1.0", - "rc-dialog": "~8.6.0", - "rc-drawer": "~4.4.2", - "rc-dropdown": "~3.2.5", - "rc-field-form": "~1.22.0-2", - "rc-image": "~5.2.5", - "rc-input-number": "~7.3.0", - "rc-mentions": "~1.6.1", - "rc-menu": "~9.2.1", - "rc-motion": "^2.4.4", - "rc-notification": "~4.5.7", - "rc-pagination": "~3.1.9", - "rc-picker": "~2.5.17", - "rc-progress": "~3.2.1", - "rc-rate": "~2.9.0", - "rc-resize-observer": "^1.2.0", - "rc-select": "~14.0.0-alpha.15", - "rc-slider": "~9.7.4", - "rc-steps": "~4.1.0", - "rc-switch": "~3.2.0", - "rc-table": "~7.22.2", - "rc-tabs": "~11.10.0", - "rc-textarea": "~0.3.0", - "rc-tooltip": "~5.1.1", - "rc-tree": "~5.4.3", - "rc-tree-select": "~5.1.1", - "rc-trigger": "^5.2.10", - "rc-upload": "~4.3.0", - "rc-util": "^5.14.0", - "scroll-into-view-if-needed": "^2.2.25" - } - }, - "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "arg": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.1.tgz", - "integrity": "sha512-e0hDa9H2Z9AwFkk2qDlwhoMYE4eToKarchkQHovNdLTCYMHZHeRjI71crOh+dio4K6u1IcwubQqo79Ga4CyAQA==" - }, - "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" - } - }, - "array-flatten": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", - "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==" - }, - "array-tree-filter": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-tree-filter/-/array-tree-filter-2.1.0.tgz", - "integrity": "sha512-4ROwICNlNw/Hqa9v+rk5h22KjmzB1JGTMVKP2AKJBOCgb0yL0ASf0+YvCcLNNwquOHNX48jkeZIJ3a+oOQqKcw==" - }, - "array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==" - }, - "asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" - }, - "async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", - "requires": { - "lodash": "^4.17.14" - } - }, - "async-validator": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/async-validator/-/async-validator-4.0.7.tgz", - "integrity": "sha512-Pj2IR7u8hmUEDOwB++su6baaRi+QvsgajuFB9j95foM1N2gy5HM4z60hfusIO0fBPG5uLAEl6yCJr1jNSVugEQ==" - }, - "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==" - }, - "autolinker": { - "version": "3.14.3", - "resolved": "https://registry.npmjs.org/autolinker/-/autolinker-3.14.3.tgz", - "integrity": "sha512-t81i2bCpS+s+5FIhatoww9DmpjhbdiimuU9ATEuLxtZMQ7jLv9fyFn7SWNG8IkEfD4AmYyirL1ss9k1aqVWRvg==", - "requires": { - "tslib": "^1.9.3" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - } - } - }, - "autoprefixer": { - "version": "10.4.2", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.2.tgz", - "integrity": "sha512-9fOPpHKuDW1w/0EKfRmVnxTDt8166MAnLI3mgZ1JCnhNtYWxcJ6Ud5CO/AVOZi/AvFa8DY9RTy3h3+tFBlrrdQ==", - "requires": { - "browserslist": "^4.19.1", - "caniuse-lite": "^1.0.30001297", - "fraction.js": "^4.1.2", - "normalize-range": "^0.1.2", - "picocolors": "^1.0.0", - "postcss-value-parser": "^4.2.0" - } - }, - "axios": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", - "requires": { - "follow-redirects": "^1.14.0" - } - }, - "babel-loader": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.3.tgz", - "integrity": "sha512-n4Zeta8NC3QAsuyiizu0GkmRcQ6clkV9WFUnUf1iXP//IeSKbWjofW3UHyZVwlOB4y039YQKefawyTn64Zwbuw==", - "requires": { - "find-cache-dir": "^3.3.1", - "loader-utils": "^1.4.0", - "make-dir": "^3.1.0", - "schema-utils": "^2.6.5" - }, - "dependencies": { - "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "requires": { - "minimist": "^1.2.0" - } - }, - "loader-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", - "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - } - }, - "schema-utils": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", - "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", - "requires": { - "@types/json-schema": "^7.0.5", - "ajv": "^6.12.4", - "ajv-keywords": "^3.5.2" - } - } - } - }, - "babel-plugin-apply-mdx-type-prop": { - "version": "1.6.22", - "resolved": "https://registry.npmjs.org/babel-plugin-apply-mdx-type-prop/-/babel-plugin-apply-mdx-type-prop-1.6.22.tgz", - "integrity": "sha512-VefL+8o+F/DfK24lPZMtJctrCVOfgbqLAGZSkxwhazQv4VxPg3Za/i40fu22KR2m8eEda+IfSOlPLUSIiLcnCQ==", - "requires": { - "@babel/helper-plugin-utils": "7.10.4", - "@mdx-js/util": "1.6.22" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", - "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==" - } - } - }, - "babel-plugin-dynamic-import-node": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz", - "integrity": "sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ==", - "requires": { - "object.assign": "^4.1.0" - } - }, - "babel-plugin-emotion": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/babel-plugin-emotion/-/babel-plugin-emotion-10.2.2.tgz", - "integrity": "sha512-SMSkGoqTbTyUTDeuVuPIWifPdUGkTk1Kf9BWRiXIOIcuyMfsdp2EjeiiFvOzX8NOBvEh/ypKYvUh2rkgAJMCLA==", - "requires": { - "@babel/helper-module-imports": "^7.0.0", - "@emotion/hash": "0.8.0", - "@emotion/memoize": "0.7.4", - "@emotion/serialize": "^0.11.16", - "babel-plugin-macros": "^2.0.0", - "babel-plugin-syntax-jsx": "^6.18.0", - "convert-source-map": "^1.5.0", - "escape-string-regexp": "^1.0.5", - "find-root": "^1.1.0", - "source-map": "^0.5.7" - } - }, - "babel-plugin-extract-import-names": { - "version": "1.6.22", - "resolved": "https://registry.npmjs.org/babel-plugin-extract-import-names/-/babel-plugin-extract-import-names-1.6.22.tgz", - "integrity": "sha512-yJ9BsJaISua7d8zNT7oRG1ZLBJCIdZ4PZqmH8qa9N5AK01ifk3fnkc98AXhtzE7UkfCsEumvoQWgoYLhOnJ7jQ==", - "requires": { - "@babel/helper-plugin-utils": "7.10.4" - }, - "dependencies": { - "@babel/helper-plugin-utils": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", - "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==" - } - } - }, - "babel-plugin-macros": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz", - "integrity": "sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==", - "requires": { - "@babel/runtime": "^7.7.2", - "cosmiconfig": "^6.0.0", - "resolve": "^1.12.0" - }, - "dependencies": { - "cosmiconfig": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", - "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", - "requires": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.1.0", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.7.2" - } - } - } - }, - "babel-plugin-polyfill-corejs2": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.0.tgz", - "integrity": "sha512-wMDoBJ6uG4u4PNFh72Ty6t3EgfA91puCuAwKIazbQlci+ENb/UU9A3xG5lutjUIiXCIn1CY5L15r9LimiJyrSA==", - "requires": { - "@babel/compat-data": "^7.13.11", - "@babel/helper-define-polyfill-provider": "^0.3.0", - "semver": "^6.1.1" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - } - } - }, - "babel-plugin-polyfill-corejs3": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.0.tgz", - "integrity": "sha512-Hcrgnmkf+4JTj73GbK3bBhlVPiLL47owUAnoJIf69Hakl3q+KfodbDXiZWGMM7iqCZTxCG3Z2VRfPNYES4rXqQ==", - "requires": { - "@babel/helper-define-polyfill-provider": "^0.3.0", - "core-js-compat": "^3.20.0" - } - }, - "babel-plugin-polyfill-regenerator": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.0.tgz", - "integrity": "sha512-dhAPTDLGoMW5/84wkgwiLRwMnio2i1fUe53EuvtKMv0pn2p3S8OCoV1xAzfJPl0KOX7IB89s2ib85vbYiea3jg==", - "requires": { - "@babel/helper-define-polyfill-provider": "^0.3.0" - } - }, - "babel-plugin-syntax-jsx": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", - "integrity": "sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=" - }, - "bail": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz", - "integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==" - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "base16": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/base16/-/base16-1.0.0.tgz", - "integrity": "sha1-4pf2DX7BAUp6lxo568ipjAtoHnA=" - }, - "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" - }, - "batch": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=" - }, - "big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==" - }, - "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" - }, - "bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" - }, - "body-parser": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.1.tgz", - "integrity": "sha512-8ljfQi5eBk8EJfECMrgqNGWPEY5jWP+1IzkzkGdFFEwFQZZyaZ21UqdaHktgiMlH0xLHqIFtE/u2OYE5dOtViA==", - "requires": { - "bytes": "3.1.1", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.8.1", - "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.9.6", - "raw-body": "2.4.2", - "type-is": "~1.6.18" - }, - "dependencies": { - "bytes": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.1.tgz", - "integrity": "sha512-dWe4nWO/ruEOY7HkUJ5gFt1DCFV9zPRoJr8pV0/ASQermOZjtq8jMjOprC0Kd10GLN+l7xaUPvxzJFWtxGu8Fg==" - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, - "bonjour": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", - "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", - "requires": { - "array-flatten": "^2.1.0", - "deep-equal": "^1.0.1", - "dns-equal": "^1.0.0", - "dns-txt": "^2.0.2", - "multicast-dns": "^6.0.1", - "multicast-dns-service-types": "^1.1.0" - } - }, - "boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" - }, - "boxen": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz", - "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==", - "requires": { - "ansi-align": "^3.0.0", - "camelcase": "^6.2.0", - "chalk": "^4.1.0", - "cli-boxes": "^2.2.1", - "string-width": "^4.2.2", - "type-fest": "^0.20.2", - "widest-line": "^3.1.0", - "wrap-ansi": "^7.0.0" - } - }, - "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.19.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.1.tgz", - "integrity": "sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A==", - "requires": { - "caniuse-lite": "^1.0.30001286", - "electron-to-chromium": "^1.4.17", - "escalade": "^3.1.1", - "node-releases": "^2.0.1", - "picocolors": "^1.0.0" - } - }, - "btoa": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/btoa/-/btoa-1.2.1.tgz", - "integrity": "sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g==" - }, - "buble-jsx-only": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/buble-jsx-only/-/buble-jsx-only-0.19.8.tgz", - "integrity": "sha512-7AW19pf7PrKFnGTEDzs6u9+JZqQwM1VnLS19OlqYDhXomtFFknnoQJAPHeg84RMFWAvOhYrG7harizJNwUKJsA==", - "requires": { - "acorn": "^6.1.1", - "acorn-dynamic-import": "^4.0.0", - "acorn-jsx": "^5.0.1", - "chalk": "^2.4.2", - "magic-string": "^0.25.3", - "minimist": "^1.2.0", - "regexpu-core": "^4.5.4" - }, - "dependencies": { - "acorn": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", - "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==" - }, - "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" - } - } - } - }, - "buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "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==" - }, - "buffer-indexof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", - "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==" - }, - "bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" - }, - "cacheable-request": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", - "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", - "requires": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^3.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^4.1.0", - "responselike": "^1.0.2" - }, - "dependencies": { - "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==", - "requires": { - "pump": "^3.0.0" - } - }, - "lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" - }, - "normalize-url": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", - "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==" - } - } - }, - "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "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==" - }, - "camel-case": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", - "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", - "requires": { - "pascal-case": "^3.1.2", - "tslib": "^2.0.3" - } - }, - "camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==" - }, - "camelcase-css": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", - "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==" - }, - "caniuse-api": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", - "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", - "requires": { - "browserslist": "^4.0.0", - "caniuse-lite": "^1.0.0", - "lodash.memoize": "^4.1.2", - "lodash.uniq": "^4.5.0" - } - }, - "caniuse-lite": { - "version": "1.0.30001298", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001298.tgz", - "integrity": "sha512-AcKqikjMLlvghZL/vfTHorlQsLDhGRalYf1+GmWCf5SCMziSGjRYQW/JEksj14NaYHIR6KIhrFAy0HV5C25UzQ==" - }, - "ccount": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.1.0.tgz", - "integrity": "sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==" - }, - "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" - }, - "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==" - }, - "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": "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" - } - } - } - }, - "character-entities": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", - "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==" - }, - "character-entities-legacy": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", - "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==" - }, - "character-reference-invalid": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", - "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==" - }, - "cheerio": { - "version": "0.22.0", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.22.0.tgz", - "integrity": "sha1-qbqoYKP5tZWmuBsahocxIe06Jp4=", - "requires": { - "css-select": "~1.2.0", - "dom-serializer": "~0.1.0", - "entities": "~1.1.1", - "htmlparser2": "^3.9.1", - "lodash.assignin": "^4.0.9", - "lodash.bind": "^4.1.4", - "lodash.defaults": "^4.0.1", - "lodash.filter": "^4.4.0", - "lodash.flatten": "^4.2.0", - "lodash.foreach": "^4.3.0", - "lodash.map": "^4.4.0", - "lodash.merge": "^4.4.0", - "lodash.pick": "^4.2.1", - "lodash.reduce": "^4.4.0", - "lodash.reject": "^4.4.0", - "lodash.some": "^4.4.0" - }, - "dependencies": { - "css-select": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", - "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", - "requires": { - "boolbase": "~1.0.0", - "css-what": "2.1", - "domutils": "1.5.1", - "nth-check": "~1.0.1" - } - }, - "css-what": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", - "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==" - }, - "dom-serializer": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", - "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", - "requires": { - "domelementtype": "^1.3.0", - "entities": "^1.1.1" - } - }, - "domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" - }, - "domutils": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", - "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", - "requires": { - "dom-serializer": "0", - "domelementtype": "1" - } - }, - "entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" - }, - "nth-check": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", - "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", - "requires": { - "boolbase": "~1.0.0" - } - } - } - }, - "cheerio-select": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-1.5.0.tgz", - "integrity": "sha512-qocaHPv5ypefh6YNxvnbABM07KMxExbtbfuJoIie3iZXX1ERwYmJcIiRrr9H05ucQP1k28dav8rpdDgjQd8drg==", - "requires": { - "css-select": "^4.1.3", - "css-what": "^5.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0", - "domutils": "^2.7.0" - } - }, - "chokidar": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", - "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", - "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" - } - }, - "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==" - }, - "classnames": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.1.tgz", - "integrity": "sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA==" - }, - "clean-css": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.2.2.tgz", - "integrity": "sha512-/eR8ru5zyxKzpBLv9YZvMXgTSSQn7AdkMItMYynsFgGwTveCRVam9IUPFloE85B4vAIj05IuKmmEoV7/AQjT0w==", - "requires": { - "source-map": "~0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } - } - }, - "clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==" - }, - "cli-boxes": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", - "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==" - }, - "cli-table3": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.1.tgz", - "integrity": "sha512-w0q/enDHhPLq44ovMGdQeeDLvwxwavsJX7oQGYt/LrBlYsyaxyDnp6z3QzFut/6kLLKnlcUVJLrpB7KBfgG/RA==", - "requires": { - "colors": "1.4.0", - "string-width": "^4.2.0" - } - }, - "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==", - "requires": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - } - }, - "clone-response": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", - "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", - "requires": { - "mimic-response": "^1.0.0" - } - }, - "clsx": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.1.1.tgz", - "integrity": "sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA==" - }, - "coa": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", - "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", - "requires": { - "@types/q": "^1.5.1", - "chalk": "^2.4.1", - "q": "^1.1.2" - }, - "dependencies": { - "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" - } - } - } - }, - "collapse-white-space": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.6.tgz", - "integrity": "sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ==" - }, - "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": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" - }, - "colord": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.2.tgz", - "integrity": "sha512-Uqbg+J445nc1TKn4FoDPS6ZZqAvEDnwrH42yo8B40JSOgSLxMZ/gt3h4nmCtPLQeXhjJJkqBx7SCY35WnIixaQ==" - }, - "colorette": { - "version": "2.0.16", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", - "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==" - }, - "colors": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", - "optional": true - }, - "combine-promises": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/combine-promises/-/combine-promises-1.1.0.tgz", - "integrity": "sha512-ZI9jvcLDxqwaXEixOhArm3r7ReIivsXkpbyEWyeOhzz1QS0iSgBPnWvEqvIQtYyamGCYA88gFhmUrs9hrrQ0pg==" - }, - "comma-separated-tokens": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz", - "integrity": "sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==" - }, - "commander": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", - "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==" - }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=" - }, - "compressible": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", - "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", - "requires": { - "mime-db": ">= 1.43.0 < 2" - } - }, - "compression": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", - "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", - "requires": { - "accepts": "~1.3.5", - "bytes": "3.0.0", - "compressible": "~2.0.16", - "debug": "2.6.9", - "on-headers": "~1.0.2", - "safe-buffer": "5.1.2", - "vary": "~1.1.2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, - "compute-scroll-into-view": { - "version": "1.0.17", - "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-1.0.17.tgz", - "integrity": "sha512-j4dx+Fb0URmzbwwMUrhqWM2BEWHdFGx+qZ9qqASHRPqvTYdqvWnHg0H1hIbcyLnvgnoNAVMlwkepyqM3DaIFUg==" - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, - "configstore": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", - "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", - "requires": { - "dot-prop": "^5.2.0", - "graceful-fs": "^4.1.2", - "make-dir": "^3.0.0", - "unique-string": "^2.0.0", - "write-file-atomic": "^3.0.0", - "xdg-basedir": "^4.0.0" - } - }, - "connect-history-api-fallback": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", - "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==" - }, - "consola": { - "version": "2.15.3", - "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz", - "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==" - }, - "content-disposition": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", - "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=" - }, - "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" - }, - "convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "requires": { - "safe-buffer": "~5.1.1" - } - }, - "cookie": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==" - }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" - }, - "copy-text-to-clipboard": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/copy-text-to-clipboard/-/copy-text-to-clipboard-3.0.1.tgz", - "integrity": "sha512-rvVsHrpFcL4F2P8ihsoLdFHmd404+CMg71S756oRSeQgqk51U3kicGdnvfkrxva0xXH92SjGS62B0XIJsbh+9Q==" - }, - "copy-to-clipboard": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.1.tgz", - "integrity": "sha512-i13qo6kIHTTpCm8/Wup+0b1mVWETvu2kIMzKoK8FpkLkFxlt0znUAHcMzox+T8sPlqtZXq3CulEjQHsYiGFJUw==", - "requires": { - "toggle-selection": "^1.0.6" - } - }, - "copy-webpack-plugin": { - "version": "10.2.4", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-10.2.4.tgz", - "integrity": "sha512-xFVltahqlsRcyyJqQbDY6EYTtyQZF9rf+JPjwHObLdPFMEISqkFkr7mFoVOC6BfYS/dNThyoQKvziugm+OnwBg==", - "requires": { - "fast-glob": "^3.2.7", - "glob-parent": "^6.0.1", - "globby": "^12.0.2", - "normalize-path": "^3.0.0", - "schema-utils": "^4.0.0", - "serialize-javascript": "^6.0.0" - }, - "dependencies": { - "ajv": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.10.0.tgz", - "integrity": "sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw==", - "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" - } - }, - "array-union": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-3.0.1.tgz", - "integrity": "sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw==" - }, - "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" - } - }, - "globby": { - "version": "12.2.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-12.2.0.tgz", - "integrity": "sha512-wiSuFQLZ+urS9x2gGPl1H5drc5twabmm4m2gTR27XDFyjUHJUNsS8o/2aKyIF6IoBaR630atdher0XJ5g6OMmA==", - "requires": { - "array-union": "^3.0.1", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.7", - "ignore": "^5.1.9", - "merge2": "^1.4.1", - "slash": "^4.0.0" - } - }, - "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" - } - }, - "slash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", - "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==" - } - } - }, - "core-js": { - "version": "3.20.2", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.20.2.tgz", - "integrity": "sha512-nuqhq11DcOAbFBV4zCbKeGbKQsUDRqTX0oqx7AttUBuqe3h20ixsE039QHelbL6P4h+9kytVqyEtyZ6gsiwEYw==" - }, - "core-js-compat": { - "version": "3.20.2", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.20.2.tgz", - "integrity": "sha512-qZEzVQ+5Qh6cROaTPFLNS4lkvQ6mBzE3R6A6EEpssj7Zr2egMHgsy4XapdifqJDGC9CBiNv7s+ejI96rLNQFdg==", - "requires": { - "browserslist": "^4.19.1", - "semver": "7.0.0" - }, - "dependencies": { - "semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==" - } - } - }, - "core-js-pure": { - "version": "3.20.2", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.20.2.tgz", - "integrity": "sha512-CmWHvSKn2vNL6p6StNp1EmMIfVY/pqn3JLAjfZQ8WZGPOlGoO92EkX9/Mk81i6GxvoPXjUqEQnpM3rJ5QxxIOg==" - }, - "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==" - }, - "cosmiconfig": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", - "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", - "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" - } - }, - "cross-fetch": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.4.tgz", - "integrity": "sha512-1eAtFWdIubi6T4XPy6ei9iUFoKpUkIF971QLN8lIvvvwueI65+Nw5haMNKUwfJxabqlIIDODJKGrQ66gxC0PbQ==", - "requires": { - "node-fetch": "2.6.1" - } - }, - "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==" - }, - "css-declaration-sorter": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.1.4.tgz", - "integrity": "sha512-lpfkqS0fctcmZotJGhnxkIyJWvBXgpyi2wsFd4J8VB7wzyrT6Ch/3Q+FMNJpjK4gu1+GN5khOnpU2ZVKrLbhCw==", - "requires": { - "timsort": "^0.3.0" - } - }, - "css-loader": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.6.0.tgz", - "integrity": "sha512-FK7H2lisOixPT406s5gZM1S3l8GrfhEBT3ZiL2UX1Ng1XWs0y2GPllz/OTyvbaHe12VgQrIXIzuEGVlbUhodqg==", - "requires": { - "icss-utils": "^5.1.0", - "postcss": "^8.4.5", - "postcss-modules-extract-imports": "^3.0.0", - "postcss-modules-local-by-default": "^4.0.0", - "postcss-modules-scope": "^3.0.0", - "postcss-modules-values": "^4.0.0", - "postcss-value-parser": "^4.2.0", - "semver": "^7.3.5" - } - }, - "css-minimizer-webpack-plugin": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.3.1.tgz", - "integrity": "sha512-SHA7Hu/EiF0dOwdmV2+agvqYpG+ljlUa7Dvn1AVOmSH3N8KOERoaM9lGpstz9nGsoTjANGyUXdrxl/EwdMScRg==", - "requires": { - "cssnano": "^5.0.6", - "jest-worker": "^27.0.2", - "postcss": "^8.3.5", - "schema-utils": "^4.0.0", - "serialize-javascript": "^6.0.0", - "source-map": "^0.6.1" - }, - "dependencies": { - "ajv": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.8.2.tgz", - "integrity": "sha512-x9VuX+R/jcFj1DHo/fCp99esgGDWiHENrKxaCENuCxpoMCmAt/COCGVDwA7kleEpEzJjDnvh3yGoOuLu0Dtllw==", - "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" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } - } - }, - "css-select": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.2.1.tgz", - "integrity": "sha512-/aUslKhzkTNCQUB2qTX84lVmfia9NyjP3WpDGtj/WxhwBzWBYUV3DgUpurHTme8UTPcPlAD1DJ+b0nN/t50zDQ==", - "requires": { - "boolbase": "^1.0.0", - "css-what": "^5.1.0", - "domhandler": "^4.3.0", - "domutils": "^2.8.0", - "nth-check": "^2.0.1" - } - }, - "css-select-base-adapter": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", - "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==" - }, - "css-tree": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", - "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", - "requires": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } - } - }, - "css-what": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz", - "integrity": "sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==" - }, - "css.escape": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", - "integrity": "sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s=" - }, - "cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==" - }, - "cssnano": { - "version": "5.0.15", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.0.15.tgz", - "integrity": "sha512-ppZsS7oPpi2sfiyV5+i+NbB/3GtQ+ab2Vs1azrZaXWujUSN4o+WdTxlCZIMcT9yLW3VO/5yX3vpyDaQ1nIn8CQ==", - "requires": { - "cssnano-preset-default": "^5.1.10", - "lilconfig": "^2.0.3", - "yaml": "^1.10.2" - } - }, - "cssnano-preset-advanced": { - "version": "5.1.10", - "resolved": "https://registry.npmjs.org/cssnano-preset-advanced/-/cssnano-preset-advanced-5.1.10.tgz", - "integrity": "sha512-6Rc7jbnIBpEUyuTLDBLuvsZE64NY9NRNe4HjOVb0zT0ixiGatKAmUNtTIwLP2F/vE5VJsdlVcixX9y2kb7O+zQ==", - "requires": { - "autoprefixer": "^10.3.7", - "cssnano-preset-default": "^5.1.10", - "postcss-discard-unused": "^5.0.1", - "postcss-merge-idents": "^5.0.2", - "postcss-reduce-idents": "^5.0.1", - "postcss-zindex": "^5.0.1" - } - }, - "cssnano-preset-default": { - "version": "5.1.10", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.1.10.tgz", - "integrity": "sha512-BcpSzUVygHMOnp9uG5rfPzTOCb0GAHQkqtUQx8j1oMNF9A1Q8hziOOhiM4bdICpmrBIU85BE64RD5XGYsVQZNA==", - "requires": { - "css-declaration-sorter": "^6.0.3", - "cssnano-utils": "^3.0.0", - "postcss-calc": "^8.2.0", - "postcss-colormin": "^5.2.3", - "postcss-convert-values": "^5.0.2", - "postcss-discard-comments": "^5.0.1", - "postcss-discard-duplicates": "^5.0.1", - "postcss-discard-empty": "^5.0.1", - "postcss-discard-overridden": "^5.0.2", - "postcss-merge-longhand": "^5.0.4", - "postcss-merge-rules": "^5.0.4", - "postcss-minify-font-values": "^5.0.2", - "postcss-minify-gradients": "^5.0.4", - "postcss-minify-params": "^5.0.3", - "postcss-minify-selectors": "^5.1.1", - "postcss-normalize-charset": "^5.0.1", - "postcss-normalize-display-values": "^5.0.2", - "postcss-normalize-positions": "^5.0.2", - "postcss-normalize-repeat-style": "^5.0.2", - "postcss-normalize-string": "^5.0.2", - "postcss-normalize-timing-functions": "^5.0.2", - "postcss-normalize-unicode": "^5.0.2", - "postcss-normalize-url": "^5.0.4", - "postcss-normalize-whitespace": "^5.0.2", - "postcss-ordered-values": "^5.0.3", - "postcss-reduce-initial": "^5.0.2", - "postcss-reduce-transforms": "^5.0.2", - "postcss-svgo": "^5.0.3", - "postcss-unique-selectors": "^5.0.2" - } - }, - "cssnano-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.0.0.tgz", - "integrity": "sha512-Pzs7/BZ6OgT+tXXuF12DKR8SmSbzUeVYCtMBbS8lI0uAm3mrYmkyqCXXPsQESI6kmLfEVBppbdVY/el3hg3nAA==" - }, - "csso": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", - "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", - "requires": { - "css-tree": "^1.1.2" - } - }, - "csstype": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.10.tgz", - "integrity": "sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA==" - }, - "d": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", - "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", - "requires": { - "es5-ext": "^0.10.50", - "type": "^1.0.1" - } - }, - "date-fns": { - "version": "2.28.0", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.28.0.tgz", - "integrity": "sha512-8d35hViGYx/QH0icHYCeLmsLmMUheMmTyV9Fcm6gvNwdw31yXXH+O85sOBJ+OLnLQMKZowvpKb6FgMIQjcpvQw==" - }, - "dayjs": { - "version": "1.10.7", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.10.7.tgz", - "integrity": "sha512-P6twpd70BcPK34K26uJ1KT3wlhpuOAPoMwJzpsIWUxHZ7wpmbdZL/hQqBDfz7hGurYSa5PhzdhDHtt319hL3ig==" - }, - "debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", - "requires": { - "ms": "2.1.2" - } - }, - "decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", - "requires": { - "mimic-response": "^1.0.0" - } - }, - "deep-equal": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", - "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", - "requires": { - "is-arguments": "^1.0.4", - "is-date-object": "^1.0.1", - "is-regex": "^1.0.4", - "object-is": "^1.0.1", - "object-keys": "^1.1.1", - "regexp.prototype.flags": "^1.2.0" - } - }, - "deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" - }, - "deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==" - }, - "default-gateway": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", - "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", - "requires": { - "execa": "^5.0.0" - } - }, - "defer-to-connect": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", - "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" - }, - "define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==" - }, - "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "requires": { - "object-keys": "^1.0.12" - } - }, - "del": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/del/-/del-6.0.0.tgz", - "integrity": "sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ==", - "requires": { - "globby": "^11.0.1", - "graceful-fs": "^4.2.4", - "is-glob": "^4.0.1", - "is-path-cwd": "^2.2.0", - "is-path-inside": "^3.0.2", - "p-map": "^4.0.0", - "rimraf": "^3.0.2", - "slash": "^3.0.0" - } - }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" - }, - "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" - }, - "detab": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/detab/-/detab-2.0.4.tgz", - "integrity": "sha512-8zdsQA5bIkoRECvCrNKPla84lyoR7DSAyf7p0YgXzBO9PDJx8KntPUay7NS6yp+KdxdVtiE5SpHKtbp2ZQyA9g==", - "requires": { - "repeat-string": "^1.5.4" - } - }, - "detect-node": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", - "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==" - }, - "detect-port": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.3.0.tgz", - "integrity": "sha512-E+B1gzkl2gqxt1IhUzwjrxBKRqx1UzC3WLONHinn8S3T6lwV/agVCyitiFOsGJ/eYuEUBvD71MZHy3Pv1G9doQ==", - "requires": { - "address": "^1.0.1", - "debug": "^2.6.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, - "detect-port-alt": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.6.tgz", - "integrity": "sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==", - "requires": { - "address": "^1.0.1", - "debug": "^2.6.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, - "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" - } - }, - "dns-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", - "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=" - }, - "dns-packet": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz", - "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==", - "requires": { - "ip": "^1.1.0", - "safe-buffer": "^5.0.1" - } - }, - "dns-txt": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", - "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", - "requires": { - "buffer-indexof": "^1.0.0" - } - }, - "dom-align": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/dom-align/-/dom-align-1.12.2.tgz", - "integrity": "sha512-pHuazgqrsTFrGU2WLDdXxCFabkdQDx72ddkraZNih1KsMcN5qsRSTR9O4VJRlwTPCPb5COYg3LOfiMHHcPInHg==" - }, - "dom-converter": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", - "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", - "requires": { - "utila": "~0.4" - } - }, - "dom-serializer": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", - "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - } - }, - "domelementtype": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", - "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==" - }, - "domhandler": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.0.tgz", - "integrity": "sha512-fC0aXNQXqKSFTr2wDNZDhsEYjCiYsDWl3D01kwt25hm1YIPyDGHvvi3rw+PLqHAl/m71MaiF7d5zvBr0p5UB2g==", - "requires": { - "domelementtype": "^2.2.0" - } - }, - "dompurify": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.3.3.tgz", - "integrity": "sha512-dqnqRkPMAjOZE0FogZ+ceJNM2dZ3V/yNOuFB7+39qpO93hHhfRpHw3heYQC7DPK9FqbQTfBKUJhiSfz4MvXYwg==" - }, - "domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "requires": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - } - }, - "dot-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", - "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", - "requires": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "dot-prop": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", - "requires": { - "is-obj": "^2.0.0" - } - }, - "duplexer": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", - "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==" - }, - "duplexer3": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" - }, - "eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" - }, - "electron-to-chromium": { - "version": "1.4.39", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.39.tgz", - "integrity": "sha512-bFH3gdRq/l7WlzSleiO6dwpZH3RhiJ8vlMq0tOJMfT+5nb+x397eJn2RHF6Ho/9GCKv+BkimNlUMHl9+Yh+Qcg==" - }, - "emitter-component": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/emitter-component/-/emitter-component-1.1.1.tgz", - "integrity": "sha1-Bl4tvtaVm/RwZ57avq95gdEAOrY=" - }, - "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==" - }, - "emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==" - }, - "emoticon": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/emoticon/-/emoticon-3.2.0.tgz", - "integrity": "sha512-SNujglcLTTg+lDAcApPNgEdudaqQFiAbJCqzjNxJkvN9vAwCGi0uu8IUVvx+f16h+V44KCY6Y2yboroc9pilHg==" - }, - "emotion-theming": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/emotion-theming/-/emotion-theming-10.3.0.tgz", - "integrity": "sha512-mXiD2Oj7N9b6+h/dC6oLf9hwxbtKHQjoIqtodEyL8CpkN4F3V4IK/BT4D0C7zSs4BBFOu4UlPJbvvBLa88SGEA==", - "requires": { - "@babel/runtime": "^7.5.5", - "@emotion/weak-memoize": "0.2.5", - "hoist-non-react-statics": "^3.3.0" - } - }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" - }, - "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==", - "requires": { - "once": "^1.4.0" - } - }, - "enhanced-resolve": { - "version": "5.8.3", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.3.tgz", - "integrity": "sha512-EGAbGvH7j7Xt2nc0E7D99La1OiEs8LnyimkRgwExpUMScN6O+3x9tIWs7PLQZVNx4YD+00skHXPXi1yQHpAmZA==", - "requires": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - } - }, - "entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==" - }, - "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==", - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "es-abstract": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", - "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", - "requires": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", - "get-symbol-description": "^1.0.0", - "has": "^1.0.3", - "has-symbols": "^1.0.2", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.4", - "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.1", - "is-string": "^1.0.7", - "is-weakref": "^1.0.1", - "object-inspect": "^1.11.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.1" - } - }, - "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-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "es5-ext": { - "version": "0.10.53", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", - "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", - "requires": { - "es6-iterator": "~2.0.3", - "es6-symbol": "~3.1.3", - "next-tick": "~1.0.0" - }, - "dependencies": { - "next-tick": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", - "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=" - } - } - }, - "es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", - "requires": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } - }, - "es6-symbol": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", - "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", - "requires": { - "d": "^1.0.1", - "ext": "^1.1.2" - } - }, - "es6-weak-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", - "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", - "requires": { - "d": "1", - "es5-ext": "^0.10.46", - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.1" - } - }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" - }, - "escape-goat": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", - "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==" - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" - }, - "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" - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" - }, - "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" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" - } - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" - }, - "eta": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/eta/-/eta-1.12.3.tgz", - "integrity": "sha512-qHixwbDLtekO/d51Yr4glcaUJCIjGVJyTzuqV4GPlgZo1YpgOKG+avQynErZIYrfM6JIJdtiG2Kox8tbb+DoGg==" - }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" - }, - "eval": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/eval/-/eval-0.1.6.tgz", - "integrity": "sha512-o0XUw+5OGkXw4pJZzQoXUk+H87DHuC+7ZE//oSrRGtatTmr12oTnLfg6QOq9DyTt0c/p4TwzgmkKrBzWTSizyQ==", - "requires": { - "require-like": ">= 0.1.1" - } - }, - "event-emitter": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", - "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", - "requires": { - "d": "1", - "es5-ext": "~0.10.14" - } - }, - "eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" - }, - "events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" - }, - "execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "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" - }, - "dependencies": { - "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==" - } - } - }, - "express": { - "version": "4.17.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.2.tgz", - "integrity": "sha512-oxlxJxcQlYwqPWKVJJtvQiwHgosH/LrLSPA+H4UxpyvSS6jC5aH+5MoHFM+KABgTOt0APue4w66Ha8jCUo9QGg==", - "requires": { - "accepts": "~1.3.7", - "array-flatten": "1.1.1", - "body-parser": "1.19.1", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.4.1", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "~1.1.2", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "~1.1.2", - "fresh": "0.5.2", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.9.6", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.17.2", - "serve-static": "1.14.2", - "setprototypeof": "1.2.0", - "statuses": "~1.5.0", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "dependencies": { - "array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" - }, - "content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "requires": { - "safe-buffer": "5.2.1" - } - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" - }, - "range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" - }, - "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==" - } - } - }, - "ext": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.6.0.tgz", - "integrity": "sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg==", - "requires": { - "type": "^2.5.0" - }, - "dependencies": { - "type": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/type/-/type-2.5.0.tgz", - "integrity": "sha512-180WMDQaIMm3+7hGXWf12GtdniDEy7nYcyFMKJn/eZz/6tSLXrUN9V0wKSbMjej0I1WHWbpREDEKHtqPQa9NNw==" - } - } - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - }, - "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-glob": { - "version": "3.2.10", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.10.tgz", - "integrity": "sha512-s9nFhFnvR63wls6/kM88kQqDhMu0AfdjqouE2l5GVQPbqLgyFjjU5ry/r2yKsJxpb9Py1EYNqieFrmMaX4v++A==", - "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" - } - }, - "fast-json-patch": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/fast-json-patch/-/fast-json-patch-3.1.0.tgz", - "integrity": "sha512-IhpytlsVTRndz0hU5t0/MGzS/etxLlfrpG5V5M9mVbuj9TrJLWaMfsox9REM5rkuGX0T+5qjpe8XA1o0gZ42nA==" - }, - "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-url-parser": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz", - "integrity": "sha1-9K8+qfNNiicc9YrSs3WfQx8LMY0=", - "requires": { - "punycode": "^1.3.2" - }, - "dependencies": { - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" - } - } - }, - "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" - } - }, - "fault": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/fault/-/fault-1.0.4.tgz", - "integrity": "sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA==", - "requires": { - "format": "^0.2.0" - } - }, - "faye-websocket": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", - "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", - "requires": { - "websocket-driver": ">=0.5.1" - } - }, - "fbemitter": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/fbemitter/-/fbemitter-3.0.0.tgz", - "integrity": "sha512-KWKaceCwKQU0+HPoop6gn4eOHk50bBv/VxjJtGMfwmJt3D29JpN4H4eisCtIPA+a8GVBam+ldMMpMjJUvpDyHw==", - "requires": { - "fbjs": "^3.0.0" - } - }, - "fbjs": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-3.0.4.tgz", - "integrity": "sha512-ucV0tDODnGV3JCnnkmoszb5lf4bNpzjv80K41wd4k798Etq+UYD0y0TIfalLjZoKgjive6/adkRnszwapiDgBQ==", - "requires": { - "cross-fetch": "^3.1.5", - "fbjs-css-vars": "^1.0.0", - "loose-envify": "^1.0.0", - "object-assign": "^4.1.0", - "promise": "^7.1.1", - "setimmediate": "^1.0.5", - "ua-parser-js": "^0.7.30" - }, - "dependencies": { - "cross-fetch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", - "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", - "requires": { - "node-fetch": "2.6.7" - } - }, - "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" - } - } - } - }, - "fbjs-css-vars": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz", - "integrity": "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==" - }, - "feed": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/feed/-/feed-4.2.2.tgz", - "integrity": "sha512-u5/sxGfiMfZNtJ3OvQpXcvotFpYkL0n9u9mM2vkui2nGo8b4wvDkJ8gAkYqbA8QpGyFCv3RK0Z+Iv+9veCS9bQ==", - "requires": { - "xml-js": "^1.6.11" - } - }, - "file-loader": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", - "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", - "requires": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0" - } - }, - "filesize": { - "version": "8.0.7", - "resolved": "https://registry.npmjs.org/filesize/-/filesize-8.0.7.tgz", - "integrity": "sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ==" - }, - "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" - } - }, - "finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, - "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==", - "requires": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - } - }, - "find-root": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", - "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==" - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "flux": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/flux/-/flux-4.0.3.tgz", - "integrity": "sha512-yKAbrp7JhZhj6uiT1FTuVMlIAT1J4jqEyBpFApi1kxpGZCvacMVc/t1pMQyotqHhAgvoE3bNvAykhCo2CLjnYw==", - "requires": { - "fbemitter": "^3.0.0", - "fbjs": "^3.0.1" - } - }, - "follow-redirects": { - "version": "1.14.8", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.8.tgz", - "integrity": "sha512-1x0S9UVJHsQprFcEC/qnNzBLcIxsjAV905f/UkQxbclCsoTWlacCNOpQa/anodLl2uaEKFhfWOvM2Qg77+15zA==" - }, - "fork-ts-checker-webpack-plugin": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.0.tgz", - "integrity": "sha512-cS178Y+xxtIjEUorcHddKS7yCMlrDPV31mt47blKKRfMd70Kxu5xruAFE2o9sDY6wVC5deuob/u/alD04YYHnw==", - "requires": { - "@babel/code-frame": "^7.8.3", - "@types/json-schema": "^7.0.5", - "chalk": "^4.1.0", - "chokidar": "^3.4.2", - "cosmiconfig": "^6.0.0", - "deepmerge": "^4.2.2", - "fs-extra": "^9.0.0", - "glob": "^7.1.6", - "memfs": "^3.1.2", - "minimatch": "^3.0.4", - "schema-utils": "2.7.0", - "semver": "^7.3.2", - "tapable": "^1.0.0" - }, - "dependencies": { - "cosmiconfig": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", - "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", - "requires": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.1.0", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.7.2" - } - }, - "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==", - "requires": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "schema-utils": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", - "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", - "requires": { - "@types/json-schema": "^7.0.4", - "ajv": "^6.12.2", - "ajv-keywords": "^3.4.1" - } - }, - "tapable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", - "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==" - } - } - }, - "form-data-encoder": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-1.7.1.tgz", - "integrity": "sha512-EFRDrsMm/kyqbTQocNvRXMLjc7Es2Vk+IQFx/YW7hkUH1eBl4J1fqiP34l74Yt0pFLCNpc06fkbVk00008mzjg==" - }, - "format": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz", - "integrity": "sha1-1hcBB+nv3E7TDJ3DkBbflCtctYs=" - }, - "formdata-node": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/formdata-node/-/formdata-node-4.3.2.tgz", - "integrity": "sha512-k7lYJyzDOSL6h917favP8j1L0/wNyylzU+x+1w4p5haGVHNlP58dbpdJhiCUsDbWsa9HwEtLp89obQgXl2e0qg==", - "requires": { - "node-domexception": "1.0.0", - "web-streams-polyfill": "4.0.0-beta.1" - } - }, - "forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" - }, - "fraction.js": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.1.2.tgz", - "integrity": "sha512-o2RiJQ6DZaR/5+Si0qJUIy637QMRudSi9kU/FFzx9EZazrIdnBgpU+3sEWCxAVhH2RtxW2Oz+T4p2o8uOPVcgA==" - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" - }, - "fs-extra": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", - "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "fs-monkey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", - "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==" - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "optional": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "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==" - }, - "get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" - } - }, - "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==" - }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "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==", - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - } - }, - "github-buttons": { - "version": "2.21.1", - "resolved": "https://registry.npmjs.org/github-buttons/-/github-buttons-2.21.1.tgz", - "integrity": "sha512-n9bCQ8sj+5oX1YH5NeyWGbAclRDtHEhMBzqw2ctsWpdEHOwVgfruRu0VIVy01Ah10dd/iFajMHYU71L7IBWBOw==" - }, - "github-slugger": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-1.4.0.tgz", - "integrity": "sha512-w0dzqw/nt51xMVmlaV1+JRzN+oCa1KfcgGEWhxUG16wbdA+Xnt/yoFO8Z8x/V82ZcZ0wy6ln9QDup5avbhiDhQ==" - }, - "glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "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" - } - }, - "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" - } - }, - "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==", - "requires": { - "ini": "2.0.0" - }, - "dependencies": { - "ini": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", - "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==" - } - } - }, - "global-modules": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", - "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", - "requires": { - "global-prefix": "^3.0.0" - } - }, - "global-prefix": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", - "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", - "requires": { - "ini": "^1.3.5", - "kind-of": "^6.0.2", - "which": "^1.3.1" - }, - "dependencies": { - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "requires": { - "isexe": "^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": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - } - }, - "got": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", - "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", - "requires": { - "@sindresorhus/is": "^0.14.0", - "@szmarczak/http-timer": "^1.1.2", - "cacheable-request": "^6.0.0", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^4.1.0", - "lowercase-keys": "^1.0.1", - "mimic-response": "^1.0.1", - "p-cancelable": "^1.0.0", - "to-readable-stream": "^1.0.0", - "url-parse-lax": "^3.0.0" - } - }, - "graceful-fs": { - "version": "4.2.9", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", - "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==" - }, - "gray-matter": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz", - "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==", - "requires": { - "js-yaml": "^3.13.1", - "kind-of": "^6.0.2", - "section-matter": "^1.0.0", - "strip-bom-string": "^1.0.0" - } - }, - "gzip-size": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", - "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", - "requires": { - "duplexer": "^0.1.2" - } - }, - "handle-thing": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", - "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==" - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-bigints": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", - "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==" - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" - }, - "has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==" - }, - "has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "requires": { - "has-symbols": "^1.0.2" - } - }, - "has-yarn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", - "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==" - }, - "hast-to-hyperscript": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/hast-to-hyperscript/-/hast-to-hyperscript-9.0.1.tgz", - "integrity": "sha512-zQgLKqF+O2F72S1aa4y2ivxzSlko3MAvxkwG8ehGmNiqd98BIN3JM1rAJPmplEyLmGLO2QZYJtIneOSZ2YbJuA==", - "requires": { - "@types/unist": "^2.0.3", - "comma-separated-tokens": "^1.0.0", - "property-information": "^5.3.0", - "space-separated-tokens": "^1.0.0", - "style-to-object": "^0.3.0", - "unist-util-is": "^4.0.0", - "web-namespaces": "^1.0.0" - } - }, - "hast-util-from-parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-6.0.1.tgz", - "integrity": "sha512-jeJUWiN5pSxW12Rh01smtVkZgZr33wBokLzKLwinYOUfSzm1Nl/c3GUGebDyOKjdsRgMvoVbV0VpAcpjF4NrJA==", - "requires": { - "@types/parse5": "^5.0.0", - "hastscript": "^6.0.0", - "property-information": "^5.0.0", - "vfile": "^4.0.0", - "vfile-location": "^3.2.0", - "web-namespaces": "^1.0.0" - } - }, - "hast-util-parse-selector": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz", - "integrity": "sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ==" - }, - "hast-util-raw": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-6.0.1.tgz", - "integrity": "sha512-ZMuiYA+UF7BXBtsTBNcLBF5HzXzkyE6MLzJnL605LKE8GJylNjGc4jjxazAHUtcwT5/CEt6afRKViYB4X66dig==", - "requires": { - "@types/hast": "^2.0.0", - "hast-util-from-parse5": "^6.0.0", - "hast-util-to-parse5": "^6.0.0", - "html-void-elements": "^1.0.0", - "parse5": "^6.0.0", - "unist-util-position": "^3.0.0", - "vfile": "^4.0.0", - "web-namespaces": "^1.0.0", - "xtend": "^4.0.0", - "zwitch": "^1.0.0" - } - }, - "hast-util-to-parse5": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-6.0.0.tgz", - "integrity": "sha512-Lu5m6Lgm/fWuz8eWnrKezHtVY83JeRGaNQ2kn9aJgqaxvVkFCZQBEhgodZUDUvoodgyROHDb3r5IxAEdl6suJQ==", - "requires": { - "hast-to-hyperscript": "^9.0.0", - "property-information": "^5.0.0", - "web-namespaces": "^1.0.0", - "xtend": "^4.0.0", - "zwitch": "^1.0.0" - } - }, - "hastscript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-6.0.0.tgz", - "integrity": "sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w==", - "requires": { - "@types/hast": "^2.0.0", - "comma-separated-tokens": "^1.0.0", - "hast-util-parse-selector": "^2.0.0", - "property-information": "^5.0.0", - "space-separated-tokens": "^1.0.0" - } - }, - "he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" - }, - "highlight.js": { - "version": "10.7.3", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", - "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==" - }, - "history": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz", - "integrity": "sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==", - "requires": { - "@babel/runtime": "^7.1.2", - "loose-envify": "^1.2.0", - "resolve-pathname": "^3.0.0", - "tiny-invariant": "^1.0.2", - "tiny-warning": "^1.0.0", - "value-equal": "^1.0.1" - } - }, - "hoist-non-react-statics": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", - "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", - "requires": { - "react-is": "^16.7.0" - } - }, - "hpack.js": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", - "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", - "requires": { - "inherits": "^2.0.1", - "obuf": "^1.0.0", - "readable-stream": "^2.0.1", - "wbuf": "^1.1.0" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "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" - } - }, - "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" - } - } - } - }, - "html-entities": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.2.tgz", - "integrity": "sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ==" - }, - "html-minifier-terser": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", - "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", - "requires": { - "camel-case": "^4.1.2", - "clean-css": "^5.2.2", - "commander": "^8.3.0", - "he": "^1.2.0", - "param-case": "^3.0.4", - "relateurl": "^0.2.7", - "terser": "^5.10.0" - }, - "dependencies": { - "commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==" - } - } - }, - "html-tags": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.1.0.tgz", - "integrity": "sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg==" - }, - "html-void-elements": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-1.0.5.tgz", - "integrity": "sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w==" - }, - "html-webpack-plugin": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz", - "integrity": "sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw==", - "requires": { - "@types/html-minifier-terser": "^6.0.0", - "html-minifier-terser": "^6.0.2", - "lodash": "^4.17.21", - "pretty-error": "^4.0.0", - "tapable": "^2.0.0" - } - }, - "htmlparser2": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", - "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", - "requires": { - "domelementtype": "^1.3.1", - "domhandler": "^2.3.0", - "domutils": "^1.5.1", - "entities": "^1.1.1", - "inherits": "^2.0.1", - "readable-stream": "^3.1.1" - }, - "dependencies": { - "dom-serializer": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", - "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", - "requires": { - "domelementtype": "^2.0.1", - "entities": "^2.0.0" - }, - "dependencies": { - "domelementtype": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", - "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==" - }, - "entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==" - } - } - }, - "domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" - }, - "domhandler": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", - "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", - "requires": { - "domelementtype": "1" - } - }, - "domutils": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", - "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", - "requires": { - "dom-serializer": "0", - "domelementtype": "1" - } - }, - "entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" - } - } - }, - "http-cache-semantics": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", - "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==" - }, - "http-deceiver": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", - "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=" - }, - "http-errors": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", - "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.1" - } - }, - "http-parser-js": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.5.tgz", - "integrity": "sha512-x+JVEkO2PoM8qqpbPbOL3cqHPwerep7OwzK7Ay+sMQjKzaKCqWvjoXm5tqMP9tXWWTnTzAjIhXg+J99XYuPhPA==" - }, - "http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", - "requires": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - } - }, - "http-proxy-middleware": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.1.tgz", - "integrity": "sha512-cfaXRVoZxSed/BmkA7SwBVNI9Kj7HFltaE5rqYOub5kWzWZ+gofV2koVN1j2rMW7pEfSSlCHGJ31xmuyFyfLOg==", - "requires": { - "@types/http-proxy": "^1.17.5", - "http-proxy": "^1.18.1", - "is-glob": "^4.0.1", - "is-plain-obj": "^3.0.0", - "micromatch": "^4.0.2" - }, - "dependencies": { - "is-plain-obj": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", - "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==" - } - } - }, - "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==" - }, - "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" - } - }, - "icss-utils": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", - "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==" - }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" - }, - "ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==" - }, - "image-size": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.0.1.tgz", - "integrity": "sha512-VAwkvNSNGClRw9mDHhc5Efax8PLlsOGcUTh0T/LIriC8vPA3U5PdqXWqkz406MoYHMKW8Uf9gWr05T/rYB44kQ==", - "requires": { - "queue": "6.0.2" - } - }, - "immer": { - "version": "9.0.7", - "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.7.tgz", - "integrity": "sha512-KGllzpbamZDvOIxnmJ0jI840g7Oikx58lBPWV0hUh7dtAyZpFqqrBZdKka5GlTwMTZ1Tjc/bKKW4VSFAt6BqMA==" - }, - "immutable": { - "version": "3.8.2", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz", - "integrity": "sha1-wkOZUUVbs5kT2vKBN28VMOEErfM=" - }, - "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-lazy": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", - "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=" - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" - }, - "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==" - }, - "infima": { - "version": "0.2.0-alpha.37", - "resolved": "https://registry.npmjs.org/infima/-/infima-0.2.0-alpha.37.tgz", - "integrity": "sha512-4GX7Baw+/lwS4PPW/UJNY89tWSvYG1DL6baKVdpK6mC593iRgMssxNtORMTFArLPJ/A/lzsGhRmx+z6MaMxj0Q==" - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "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": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" - }, - "inline-style-parser": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz", - "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==" - }, - "internal-slot": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", - "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", - "requires": { - "get-intrinsic": "^1.1.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" - } - }, - "interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==" - }, - "invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "requires": { - "loose-envify": "^1.0.0" - } - }, - "ip": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", - "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=" - }, - "ipaddr.js": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", - "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==" - }, - "is-alphabetical": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", - "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==" - }, - "is-alphanumerical": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", - "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", - "requires": { - "is-alphabetical": "^1.0.0", - "is-decimal": "^1.0.0" - } - }, - "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==", - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" - }, - "is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "requires": { - "has-bigints": "^1.0.1" - } - }, - "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==", - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "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==", - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-buffer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==" - }, - "is-callable": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", - "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==" - }, - "is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", - "requires": { - "ci-info": "^2.0.0" - }, - "dependencies": { - "ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" - } - } - }, - "is-core-module": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", - "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", - "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==", - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-decimal": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", - "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==" - }, - "is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==" - }, - "is-dom": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-dom/-/is-dom-1.1.0.tgz", - "integrity": "sha512-u82f6mvhYxRPKpw8V1N0W8ce1xXwOrQtgGcxl6UCL5zBmZu3is/18K0rR7uFCnMDuAsS/3W54mGL4vsaFUQlEQ==", - "requires": { - "is-object": "^1.0.1", - "is-window": "^1.0.2" - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" - }, - "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-hexadecimal": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", - "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==" - }, - "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==", - "requires": { - "global-dirs": "^3.0.0", - "is-path-inside": "^3.0.2" - } - }, - "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==" - }, - "is-npm": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz", - "integrity": "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==" - }, - "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.6", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz", - "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==", - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==" - }, - "is-object": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.2.tgz", - "integrity": "sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA==" - }, - "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==" - }, - "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==" - }, - "is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==" - }, - "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==", - "requires": { - "isobject": "^3.0.1" - } - }, - "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==" - }, - "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==", - "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": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=" - }, - "is-root": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz", - "integrity": "sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==" - }, - "is-shared-array-buffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", - "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==" - }, - "is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==" - }, - "is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "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==", - "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": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" - }, - "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==", - "requires": { - "call-bind": "^1.0.2" - } - }, - "is-whitespace-character": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz", - "integrity": "sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w==" - }, - "is-window": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-window/-/is-window-1.0.2.tgz", - "integrity": "sha1-LIlspT25feRdPDMTOmXYyfVjSA0=" - }, - "is-word-character": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-word-character/-/is-word-character-1.0.4.tgz", - "integrity": "sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA==" - }, - "is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "requires": { - "is-docker": "^2.0.0" - } - }, - "is-yarn-global": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", - "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==" - }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - }, - "jest-worker": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.4.6.tgz", - "integrity": "sha512-gHWJF/6Xi5CTG5QCvROr6GcmpIqNYpDJyc8A1h/DyXqH1tD6SnRCM0d3U5msV31D2LB/U+E0M+W4oyvKV44oNw==", - "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" - } - } - } - }, - "joi": { - "version": "17.5.0", - "resolved": "https://registry.npmjs.org/joi/-/joi-17.5.0.tgz", - "integrity": "sha512-R7hR50COp7StzLnDi4ywOXHrBrgNXuUUfJWIR5lPY5Bm/pOD3jZaTwpluUXVLRWcoWZxkrHBBJ5hLxgnlehbdw==", - "requires": { - "@hapi/hoek": "^9.0.0", - "@hapi/topo": "^5.0.0", - "@sideway/address": "^4.1.3", - "@sideway/formula": "^3.0.0", - "@sideway/pinpoint": "^2.0.0" - } - }, - "js-file-download": { - "version": "0.4.12", - "resolved": "https://registry.npmjs.org/js-file-download/-/js-file-download-0.4.12.tgz", - "integrity": "sha512-rML+NkoD08p5Dllpjo0ffy4jRHeY6Zsapvr/W86N7E0yuzAO6qa5X9+xog6zQNlH102J7IXljNY2FtS6Lj3ucg==" - }, - "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" - } - }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" - }, - "json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=" - }, - "json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" - }, - "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-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==" - }, - "json2mq": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/json2mq/-/json2mq-0.2.0.tgz", - "integrity": "sha1-tje9O6nqvhIsg+lyBIOusQ0skEo=", - "requires": { - "string-convert": "^0.2.0" - } - }, - "json5": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", - "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", - "requires": { - "minimist": "^1.2.5" - } - }, - "jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - } - }, - "keyv": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", - "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", - "requires": { - "json-buffer": "3.0.0" - } - }, - "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==" - }, - "kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==" - }, - "klona": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz", - "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==" - }, - "latest-version": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", - "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", - "requires": { - "package-json": "^6.3.0" - } - }, - "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==" - }, - "lilconfig": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.4.tgz", - "integrity": "sha512-bfTIN7lEsiooCocSISTWXkiWJkRqtL9wYtYy+8EK3Y41qh3mpwPU0ycTOgjdY9ErwXCc8QyrQp82bdL0Xkm9yA==" - }, - "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==" - }, - "loader-runner": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", - "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==" - }, - "loader-utils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", - "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", - "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==", - "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==" - }, - "lodash.assignin": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.assignin/-/lodash.assignin-4.2.0.tgz", - "integrity": "sha1-uo31+4QesKPoBEIysOJjqNxqKKI=" - }, - "lodash.bind": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/lodash.bind/-/lodash.bind-4.2.1.tgz", - "integrity": "sha1-euMBfpOWIqwxt9fX3LGzTbFpDTU=" - }, - "lodash.curry": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.curry/-/lodash.curry-4.1.1.tgz", - "integrity": "sha1-JI42By7ekGUB11lmIAqG2riyMXA=" - }, - "lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=" - }, - "lodash.defaults": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", - "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=" - }, - "lodash.filter": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.filter/-/lodash.filter-4.6.0.tgz", - "integrity": "sha1-ZosdSYFgOuHMWm+nYBQ+SAtMSs4=" - }, - "lodash.flatten": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", - "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=" - }, - "lodash.flow": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/lodash.flow/-/lodash.flow-3.5.0.tgz", - "integrity": "sha1-h79AKSuM+D5OjOGjrkIJ4gBxZ1o=" - }, - "lodash.foreach": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-4.5.0.tgz", - "integrity": "sha1-Gmo16s5AEoDH8G3d7DUWWrJ+PlM=" - }, - "lodash.map": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.map/-/lodash.map-4.6.0.tgz", - "integrity": "sha1-dx7Hg540c9nEzeKLGTlMNWL09tM=" - }, - "lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=" - }, - "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.pick": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz", - "integrity": "sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM=" - }, - "lodash.reduce": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.reduce/-/lodash.reduce-4.6.0.tgz", - "integrity": "sha1-8atrg5KZrUj3hKu/R2WW8DuRTTs=" - }, - "lodash.reject": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.reject/-/lodash.reject-4.6.0.tgz", - "integrity": "sha1-gNZJLcFHCGS79YNTO2UfQqn1JBU=" - }, - "lodash.some": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.some/-/lodash.some-4.6.0.tgz", - "integrity": "sha1-G7nzFO9ri63tE7VJFpsqlF62jk0=" - }, - "lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=" - }, - "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==", - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - }, - "lower-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "requires": { - "tslib": "^2.0.3" - } - }, - "lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" - }, - "lowlight": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/lowlight/-/lowlight-1.20.0.tgz", - "integrity": "sha512-8Ktj+prEb1RoCPkEOrPMYUN/nCggB7qAWe3a7OpMjWQkh3l2RD5wKRQ+o8Q8YuI9RG/xs95waaI/E6ym/7NsTw==", - "requires": { - "fault": "^1.0.0", - "highlight.js": "~10.7.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" - } - }, - "lru-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", - "integrity": "sha1-Jzi9nw089PhEkMVzbEhpmsYyzaM=", - "requires": { - "es5-ext": "~0.10.2" - } - }, - "magic-string": { - "version": "0.25.7", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", - "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", - "requires": { - "sourcemap-codec": "^1.4.4" - } - }, - "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==", - "requires": { - "semver": "^6.0.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - } - } - }, - "markdown-escapes": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.4.tgz", - "integrity": "sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg==" - }, - "mdast-squeeze-paragraphs": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mdast-squeeze-paragraphs/-/mdast-squeeze-paragraphs-4.0.0.tgz", - "integrity": "sha512-zxdPn69hkQ1rm4J+2Cs2j6wDEv7O17TfXTJ33tl/+JPIoEmtV9t2ZzBM5LPHE8QlHsmVD8t3vPKCyY3oH+H8MQ==", - "requires": { - "unist-util-remove": "^2.0.0" - } - }, - "mdast-util-definitions": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-4.0.0.tgz", - "integrity": "sha512-k8AJ6aNnUkB7IE+5azR9h81O5EQ/cTDXtWdMq9Kk5KcEW/8ritU5CeLg/9HhOC++nALHBlaogJ5jz0Ybk3kPMQ==", - "requires": { - "unist-util-visit": "^2.0.0" - } - }, - "mdast-util-to-hast": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-10.0.1.tgz", - "integrity": "sha512-BW3LM9SEMnjf4HXXVApZMt8gLQWVNXc3jryK0nJu/rOXPOnlkUjmdkDlmxMirpbU9ILncGFIwLH/ubnWBbcdgA==", - "requires": { - "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.0", - "mdast-util-definitions": "^4.0.0", - "mdurl": "^1.0.0", - "unist-builder": "^2.0.0", - "unist-util-generated": "^1.0.0", - "unist-util-position": "^3.0.0", - "unist-util-visit": "^2.0.0" - } - }, - "mdast-util-to-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", - "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==" - }, - "mdn-data": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", - "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==" - }, - "mdurl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", - "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=" - }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" - }, - "memfs": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.1.tgz", - "integrity": "sha512-1c9VPVvW5P7I85c35zAdEr1TD5+F11IToIHIlrVIcflfnzPkJa0ZoYEoEdYDP8KgPFoSZ/opDrUsAoZWym3mtw==", - "requires": { - "fs-monkey": "1.0.3" - } - }, - "memoize-one": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz", - "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==" - }, - "memoizee": { - "version": "0.4.15", - "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.15.tgz", - "integrity": "sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==", - "requires": { - "d": "^1.0.1", - "es5-ext": "^0.10.53", - "es6-weak-map": "^2.0.3", - "event-emitter": "^0.3.5", - "is-promise": "^2.2.2", - "lru-queue": "^0.1.0", - "next-tick": "^1.1.0", - "timers-ext": "^0.1.7" - } - }, - "merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" - }, - "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==" - }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" - }, - "micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", - "requires": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" - } - }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" - }, - "mime-db": { - "version": "1.51.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", - "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==" - }, - "mime-types": { - "version": "2.1.34", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", - "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", - "requires": { - "mime-db": "1.51.0" - } - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" - }, - "mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" - }, - "mini-create-react-context": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/mini-create-react-context/-/mini-create-react-context-0.4.1.tgz", - "integrity": "sha512-YWCYEmd5CQeHGSAKrYvXgmzzkrvssZcuuQDDeqkT+PziKGMgE+0MCCtcKbROzocGBG1meBLl2FotlRwf4gAzbQ==", - "requires": { - "@babel/runtime": "^7.12.1", - "tiny-warning": "^1.0.3" - } - }, - "mini-css-extract-plugin": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-1.6.2.tgz", - "integrity": "sha512-WhDvO3SjGm40oV5y26GjMJYjd2UMqrLAGKy5YS2/3QKJy2F7jgynuHTir/tgUUOiNQu5saXHdc8reo7YuhhT4Q==", - "requires": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0", - "webpack-sources": "^1.1.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - }, - "webpack-sources": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", - "requires": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - } - } - } - }, - "minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" - }, - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "requires": { - "minimist": "^1.2.5" - } - }, - "moment": { - "version": "2.29.1", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz", - "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==" - }, - "mrmime": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.0.tgz", - "integrity": "sha512-a70zx7zFfVO7XpnQ2IX1Myh9yY4UYvfld/dikWRnsXxbyvMcfz+u6UfgNAtH+k2QqtJuzVpv6eLTx1G2+WKZbQ==" - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "multicast-dns": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", - "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", - "requires": { - "dns-packet": "^1.3.1", - "thunky": "^1.0.2" - } - }, - "multicast-dns-service-types": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", - "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=" - }, - "nanoid": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz", - "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==" - }, - "negotiator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", - "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" - }, - "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==" - }, - "next-tick": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", - "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" - }, - "no-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "requires": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" - } - }, - "node-domexception": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", - "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==" - }, - "node-emoji": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", - "integrity": "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==", - "requires": { - "lodash": "^4.17.21" - } - }, - "node-fetch": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" - }, - "node-forge": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.2.0.tgz", - "integrity": "sha512-M4AsdaP0bGNaSPtatd/+f76asocI0cFaURRdeQVZvrJBrYp2Qohv5hDbGHykuNqCb1BYjWHjdS6HlN50qbztwA==" - }, - "node-releases": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", - "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==" - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" - }, - "normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=" - }, - "normalize-url": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", - "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==" - }, - "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==", - "requires": { - "path-key": "^3.0.0" - } - }, - "nprogress": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/nprogress/-/nprogress-0.2.0.tgz", - "integrity": "sha1-y480xTIT2JVyP8urkH6UIq28r7E=" - }, - "nth-check": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", - "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", - "requires": { - "boolbase": "^1.0.0" - } - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" - }, - "object-inspect": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", - "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==" - }, - "object-is": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", - "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" - }, - "object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - } - }, - "object.getownpropertydescriptors": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.3.tgz", - "integrity": "sha512-VdDoCwvJI4QdC6ndjpqFmoL3/+HxffFBbcJzKi5hwLLqqx3mdbedRpfZDdK0SrOSauj8X4GzBvnDZl4vTN7dOw==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" - } - }, - "object.values": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", - "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" - } - }, - "obuf": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", - "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==" - }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "requires": { - "ee-first": "1.1.1" - } - }, - "on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==" - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "open": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", - "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", - "requires": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - } - }, - "opener": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", - "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==" - }, - "p-cancelable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", - "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==" - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "requires": { - "p-try": "^2.0.0" - } - }, - "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==", - "requires": { - "p-limit": "^2.2.0" - } - }, - "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==", - "requires": { - "aggregate-error": "^3.0.0" - } - }, - "p-retry": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.1.tgz", - "integrity": "sha512-e2xXGNhZOZ0lfgR9kL34iGlU8N/KO0xZnQxVEwdeOvpqNDQfdnxIYizvWtK8RglUa3bGqI8g0R/BdfzLMxRkiA==", - "requires": { - "@types/retry": "^0.12.0", - "retry": "^0.13.1" - } - }, - "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==" - }, - "package-json": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", - "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", - "requires": { - "got": "^9.6.0", - "registry-auth-token": "^4.0.0", - "registry-url": "^5.0.0", - "semver": "^6.2.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - } - } - }, - "param-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", - "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", - "requires": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "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": { - "callsites": "^3.0.0" - } - }, - "parse-entities": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", - "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", - "requires": { - "character-entities": "^1.0.0", - "character-entities-legacy": "^1.0.0", - "character-reference-invalid": "^1.0.0", - "is-alphanumerical": "^1.0.0", - "is-decimal": "^1.0.0", - "is-hexadecimal": "^1.0.0" - } - }, - "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==", - "requires": { - "@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" - } - }, - "parse-numeric-range": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/parse-numeric-range/-/parse-numeric-range-1.3.0.tgz", - "integrity": "sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ==" - }, - "parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" - }, - "parse5-htmlparser2-tree-adapter": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", - "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", - "requires": { - "parse5": "^6.0.1" - } - }, - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" - }, - "pascal-case": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", - "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", - "requires": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "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==" - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" - }, - "path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=" - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" - }, - "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==" - }, - "path-to-regexp": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", - "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", - "requires": { - "isarray": "0.0.1" - } - }, - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" - }, - "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" - }, - "picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" - }, - "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==", - "requires": { - "find-up": "^4.0.0" - } - }, - "pkg-up": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", - "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", - "requires": { - "find-up": "^3.0.0" - }, - "dependencies": { - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "requires": { - "locate-path": "^3.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "requires": { - "p-limit": "^2.0.0" - } - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" - } - } - }, - "portfinder": { - "version": "1.0.28", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", - "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", - "requires": { - "async": "^2.6.2", - "debug": "^3.1.1", - "mkdirp": "^0.5.5" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "requires": { - "ms": "^2.1.1" - } - } - } - }, - "postcss": { - "version": "8.4.5", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.5.tgz", - "integrity": "sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg==", - "requires": { - "nanoid": "^3.1.30", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.1" - } - }, - "postcss-calc": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.0.tgz", - "integrity": "sha512-PueXCv288diX7OXyJicGNA6Q3+L4xYb2cALTAeFj9X6PXnj+s4pUf1vkZnwn+rldfu2taCA9ondjF93lhRTPFA==", - "requires": { - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.0.2" - } - }, - "postcss-colormin": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.2.3.tgz", - "integrity": "sha512-dra4xoAjub2wha6RUXAgadHEn2lGxbj8drhFcIGLOMn914Eu7DkPUurugDXgstwttCYkJtZ/+PkWRWdp3UHRIA==", - "requires": { - "browserslist": "^4.16.6", - "caniuse-api": "^3.0.0", - "colord": "^2.9.1", - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-convert-values": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.0.2.tgz", - "integrity": "sha512-KQ04E2yadmfa1LqXm7UIDwW1ftxU/QWZmz6NKnHnUvJ3LEYbbcX6i329f/ig+WnEByHegulocXrECaZGLpL8Zg==", - "requires": { - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-discard-comments": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.0.1.tgz", - "integrity": "sha512-lgZBPTDvWrbAYY1v5GYEv8fEO/WhKOu/hmZqmCYfrpD6eyDWWzAOsl2rF29lpvziKO02Gc5GJQtlpkTmakwOWg==" - }, - "postcss-discard-duplicates": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.0.1.tgz", - "integrity": "sha512-svx747PWHKOGpAXXQkCc4k/DsWo+6bc5LsVrAsw+OU+Ibi7klFZCyX54gjYzX4TH+f2uzXjRviLARxkMurA2bA==" - }, - "postcss-discard-empty": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.0.1.tgz", - "integrity": "sha512-vfU8CxAQ6YpMxV2SvMcMIyF2LX1ZzWpy0lqHDsOdaKKLQVQGVP1pzhrI9JlsO65s66uQTfkQBKBD/A5gp9STFw==" - }, - "postcss-discard-overridden": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.0.2.tgz", - "integrity": "sha512-+56BLP6NSSUuWUXjRgAQuho1p5xs/hU5Sw7+xt9S3JSg+7R6+WMGnJW7Hre/6tTuZ2xiXMB42ObkiZJ2hy/Pew==" - }, - "postcss-discard-unused": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-5.0.1.tgz", - "integrity": "sha512-tD6xR/xyZTwfhKYRw0ylfCY8wbfhrjpKAMnDKRTLMy2fNW5hl0hoV6ap5vo2JdCkuHkP3CHw72beO4Y8pzFdww==", - "requires": { - "postcss-selector-parser": "^6.0.5" - } - }, - "postcss-loader": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.1.tgz", - "integrity": "sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==", - "requires": { - "cosmiconfig": "^7.0.0", - "klona": "^2.0.5", - "semver": "^7.3.5" - } - }, - "postcss-merge-idents": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-5.0.2.tgz", - "integrity": "sha512-V8IlmvQez+/mB06touksO3lUKtzL3ZKfBxfXFK2q136TOyOLXBuoI8kQwZsIOFWUfA8gk/XpFtmMsqURqYPk6Q==", - "requires": { - "cssnano-utils": "^3.0.0", - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-merge-longhand": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.0.4.tgz", - "integrity": "sha512-2lZrOVD+d81aoYkZDpWu6+3dTAAGkCKbV5DoRhnIR7KOULVrI/R7bcMjhrH9KTRy6iiHKqmtG+n/MMj1WmqHFw==", - "requires": { - "postcss-value-parser": "^4.1.0", - "stylehacks": "^5.0.1" - } - }, - "postcss-merge-rules": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.0.4.tgz", - "integrity": "sha512-yOj7bW3NxlQxaERBB0lEY1sH5y+RzevjbdH4DBJurjKERNpknRByFNdNe+V72i5pIZL12woM9uGdS5xbSB+kDQ==", - "requires": { - "browserslist": "^4.16.6", - "caniuse-api": "^3.0.0", - "cssnano-utils": "^3.0.0", - "postcss-selector-parser": "^6.0.5" - } - }, - "postcss-minify-font-values": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.0.2.tgz", - "integrity": "sha512-R6MJZryq28Cw0AmnyhXrM7naqJZZLoa1paBltIzh2wM7yb4D45TLur+eubTQ4jCmZU9SGeZdWsc5KcSoqTMeTg==", - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-minify-gradients": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.0.4.tgz", - "integrity": "sha512-RVwZA7NC4R4J76u8X0Q0j+J7ItKUWAeBUJ8oEEZWmtv3Xoh19uNJaJwzNpsydQjk6PkuhRrK+YwwMf+c+68EYg==", - "requires": { - "colord": "^2.9.1", - "cssnano-utils": "^3.0.0", - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-minify-params": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.0.3.tgz", - "integrity": "sha512-NY92FUikE+wralaiVexFd5gwb7oJTIDhgTNeIw89i1Ymsgt4RWiPXfz3bg7hDy4NL6gepcThJwOYNtZO/eNi7Q==", - "requires": { - "alphanum-sort": "^1.0.2", - "browserslist": "^4.16.6", - "cssnano-utils": "^3.0.0", - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-minify-selectors": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.1.1.tgz", - "integrity": "sha512-TOzqOPXt91O2luJInaVPiivh90a2SIK5Nf1Ea7yEIM/5w+XA5BGrZGUSW8aEx9pJ/oNj7ZJBhjvigSiBV+bC1Q==", - "requires": { - "alphanum-sort": "^1.0.2", - "postcss-selector-parser": "^6.0.5" - } - }, - "postcss-modules-extract-imports": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", - "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==" - }, - "postcss-modules-local-by-default": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", - "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", - "requires": { - "icss-utils": "^5.0.0", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-modules-scope": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", - "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", - "requires": { - "postcss-selector-parser": "^6.0.4" - } - }, - "postcss-modules-values": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", - "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", - "requires": { - "icss-utils": "^5.0.0" - } - }, - "postcss-normalize-charset": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.0.1.tgz", - "integrity": "sha512-6J40l6LNYnBdPSk+BHZ8SF+HAkS4q2twe5jnocgd+xWpz/mx/5Sa32m3W1AA8uE8XaXN+eg8trIlfu8V9x61eg==" - }, - "postcss-normalize-display-values": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.0.2.tgz", - "integrity": "sha512-RxXoJPUR0shSjkMMzgEZDjGPrgXUVYyWA/YwQRicb48H15OClPuaDR7tYokLAlGZ2tCSENEN5WxjgxSD5m4cUw==", - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-normalize-positions": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.0.2.tgz", - "integrity": "sha512-tqghWFVDp2btqFg1gYob1etPNxXLNh3uVeWgZE2AQGh6b2F8AK2Gj36v5Vhyh+APwIzNjmt6jwZ9pTBP+/OM8g==", - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-normalize-repeat-style": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.0.2.tgz", - "integrity": "sha512-/rIZn8X9bBzC7KvY4iKUhXUGW3MmbXwfPF23jC9wT9xTi7kAvgj8sEgwxjixBmoL6MVa4WOgxNz2hAR6wTK8tw==", - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-normalize-string": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.0.2.tgz", - "integrity": "sha512-zaI1yzwL+a/FkIzUWMQoH25YwCYxi917J4pYm1nRXtdgiCdnlTkx5eRzqWEC64HtRa06WCJ9TIutpb6GmW4gFw==", - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-normalize-timing-functions": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.0.2.tgz", - "integrity": "sha512-Ao0PP6MoYsRU1LxeVUW740ioknvdIUmfr6uAA3xWlQJ9s69/Tupy8qwhuKG3xWfl+KvLMAP9p2WXF9cwuk/7Bg==", - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-normalize-unicode": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.0.2.tgz", - "integrity": "sha512-3y/V+vjZ19HNcTizeqwrbZSUsE69ZMRHfiiyLAJb7C7hJtYmM4Gsbajy7gKagu97E8q5rlS9k8FhojA8cpGhWw==", - "requires": { - "browserslist": "^4.16.6", - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-normalize-url": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.0.4.tgz", - "integrity": "sha512-cNj3RzK2pgQQyNp7dzq0dqpUpQ/wYtdDZM3DepPmFjCmYIfceuD9VIAcOdvrNetjIU65g1B4uwdP/Krf6AFdXg==", - "requires": { - "normalize-url": "^6.0.1", - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-normalize-whitespace": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.0.2.tgz", - "integrity": "sha512-CXBx+9fVlzSgbk0IXA/dcZn9lXixnQRndnsPC5ht3HxlQ1bVh77KQDL1GffJx1LTzzfae8ftMulsjYmO2yegxA==", - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-ordered-values": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.0.3.tgz", - "integrity": "sha512-T9pDS+P9bWeFvqivXd5ACzQmrCmHjv3ZP+djn8E1UZY7iK79pFSm7i3WbKw2VSmFmdbMm8sQ12OPcNpzBo3Z2w==", - "requires": { - "cssnano-utils": "^3.0.0", - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-reduce-idents": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-5.0.1.tgz", - "integrity": "sha512-6Rw8iIVFbqtaZExgWK1rpVgP7DPFRPh0DDFZxJ/ADNqPiH10sPCoq5tgo6kLiTyfh9sxjKYjXdc8udLEcPOezg==", - "requires": { - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-reduce-initial": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.0.2.tgz", - "integrity": "sha512-v/kbAAQ+S1V5v9TJvbGkV98V2ERPdU6XvMcKMjqAlYiJ2NtsHGlKYLPjWWcXlaTKNxooId7BGxeraK8qXvzKtw==", - "requires": { - "browserslist": "^4.16.6", - "caniuse-api": "^3.0.0" - } - }, - "postcss-reduce-transforms": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.0.2.tgz", - "integrity": "sha512-25HeDeFsgiPSUx69jJXZn8I06tMxLQJJNF5h7i9gsUg8iP4KOOJ8EX8fj3seeoLt3SLU2YDD6UPnDYVGUO7DEA==", - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-selector-parser": { - "version": "6.0.8", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.8.tgz", - "integrity": "sha512-D5PG53d209Z1Uhcc0qAZ5U3t5HagH3cxu+WLZ22jt3gLUpXM4eXXfiO14jiDWST3NNooX/E8wISfOhZ9eIjGTQ==", - "requires": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - } - }, - "postcss-sort-media-queries": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/postcss-sort-media-queries/-/postcss-sort-media-queries-4.2.1.tgz", - "integrity": "sha512-9VYekQalFZ3sdgcTjXMa0dDjsfBVHXlraYJEMiOJ/2iMmI2JGCMavP16z3kWOaRu8NSaJCTgVpB/IVpH5yT9YQ==", - "requires": { - "sort-css-media-queries": "2.0.4" - } - }, - "postcss-svgo": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.0.3.tgz", - "integrity": "sha512-41XZUA1wNDAZrQ3XgWREL/M2zSw8LJPvb5ZWivljBsUQAGoEKMYm6okHsTjJxKYI4M75RQEH4KYlEM52VwdXVA==", - "requires": { - "postcss-value-parser": "^4.1.0", - "svgo": "^2.7.0" - } - }, - "postcss-unique-selectors": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.0.2.tgz", - "integrity": "sha512-w3zBVlrtZm7loQWRPVC0yjUwwpty7OM6DnEHkxcSQXO1bMS3RJ+JUS5LFMSDZHJcvGsRwhZinCWVqn8Kej4EDA==", - "requires": { - "alphanum-sort": "^1.0.2", - "postcss-selector-parser": "^6.0.5" - } - }, - "postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" - }, - "postcss-zindex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-5.0.1.tgz", - "integrity": "sha512-nwgtJJys+XmmSGoYCcgkf/VczP8Mp/0OfSv3v0+fw0uABY4yxw+eFs0Xp9nAZHIKnS5j+e9ywQ+RD+ONyvl5pA==" - }, - "prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=" - }, - "pretty-error": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", - "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", - "requires": { - "lodash": "^4.17.20", - "renderkid": "^3.0.0" - } - }, - "pretty-time": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pretty-time/-/pretty-time-1.1.0.tgz", - "integrity": "sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA==" - }, - "prism-react-renderer": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prism-react-renderer/-/prism-react-renderer-1.2.1.tgz", - "integrity": "sha512-w23ch4f75V1Tnz8DajsYKvY5lF7H1+WvzvLUcF0paFxkTHSp42RS0H5CttdN2Q8RR3DRGZ9v5xD/h3n8C8kGmg==" - }, - "prismjs": { - "version": "1.26.0", - "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.26.0.tgz", - "integrity": "sha512-HUoH9C5Z3jKkl3UunCyiD5jwk0+Hz0fIgQ2nbwU2Oo/ceuTAQAg+pPVnfdt2TJWRVLcxKh9iuoYDUSc8clb5UQ==" - }, - "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==" - }, - "promise": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", - "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", - "requires": { - "asap": "~2.0.3" - } - }, - "prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", - "requires": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - } - }, - "prop-types": { - "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "requires": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" - } - }, - "property-information": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/property-information/-/property-information-5.6.0.tgz", - "integrity": "sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==", - "requires": { - "xtend": "^4.0.0" - } - }, - "proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "requires": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "dependencies": { - "ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" - } - } - }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "requires": { - "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==" - }, - "pupa": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz", - "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==", - "requires": { - "escape-goat": "^2.0.0" - } - }, - "pure-color": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/pure-color/-/pure-color-1.3.0.tgz", - "integrity": "sha1-H+Bk+wrIUfDeYTIKi/eWg2Qi8z4=" - }, - "q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=" - }, - "qs": { - "version": "6.9.6", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.6.tgz", - "integrity": "sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ==" - }, - "querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" - }, - "querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" - }, - "queue": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz", - "integrity": "sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==", - "requires": { - "inherits": "~2.0.3" - } - }, - "queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" - }, - "randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "range-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", - "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=" - }, - "raw-body": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.2.tgz", - "integrity": "sha512-RPMAFUJP19WIet/99ngh6Iv8fzAbqum4Li7AD6DtGaW2RpMB/11xDoalPiJMTbu6I3hkbMVkATvZrqb9EEqeeQ==", - "requires": { - "bytes": "3.1.1", - "http-errors": "1.8.1", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "dependencies": { - "bytes": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.1.tgz", - "integrity": "sha512-dWe4nWO/ruEOY7HkUJ5gFt1DCFV9zPRoJr8pV0/ASQermOZjtq8jMjOprC0Kd10GLN+l7xaUPvxzJFWtxGu8Fg==" - } - } - }, - "rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - } - }, - "rc-align": { - "version": "4.0.11", - "resolved": "https://registry.npmjs.org/rc-align/-/rc-align-4.0.11.tgz", - "integrity": "sha512-n9mQfIYQbbNTbefyQnRHZPWuTEwG1rY4a9yKlIWHSTbgwI+XUMGRYd0uJ5pE2UbrNX0WvnMBA1zJ3Lrecpra/A==", - "requires": { - "@babel/runtime": "^7.10.1", - "classnames": "2.x", - "dom-align": "^1.7.0", - "lodash": "^4.17.21", - "rc-util": "^5.3.0", - "resize-observer-polyfill": "^1.5.1" - } - }, - "rc-cascader": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/rc-cascader/-/rc-cascader-3.2.6.tgz", - "integrity": "sha512-3CmlJP7jPVlP5jT+O3PrP8E9yxees48Na7Hiir84ktcw11pUUU5YawAhuRoSc09SGVvRcP70a9gCu94Hqp3ZwA==", - "requires": { - "@babel/runtime": "^7.12.5", - "array-tree-filter": "^2.1.0", - "classnames": "^2.3.1", - "rc-select": "~14.0.0-alpha.23", - "rc-tree": "~5.4.3", - "rc-util": "^5.6.1" - } - }, - "rc-checkbox": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/rc-checkbox/-/rc-checkbox-2.3.2.tgz", - "integrity": "sha512-afVi1FYiGv1U0JlpNH/UaEXdh6WUJjcWokj/nUN2TgG80bfG+MDdbfHKlLcNNba94mbjy2/SXJ1HDgrOkXGAjg==", - "requires": { - "@babel/runtime": "^7.10.1", - "classnames": "^2.2.1" - } - }, - "rc-collapse": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/rc-collapse/-/rc-collapse-3.1.2.tgz", - "integrity": "sha512-HujcKq7mghk/gVKeI6EjzTbb8e19XUZpakrYazu1MblEZ3Hu3WBMSN4A3QmvbF6n1g7x6lUlZvsHZ5shABWYOQ==", - "requires": { - "@babel/runtime": "^7.10.1", - "classnames": "2.x", - "rc-motion": "^2.3.4", - "rc-util": "^5.2.1", - "shallowequal": "^1.1.0" - } - }, - "rc-dialog": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/rc-dialog/-/rc-dialog-8.6.0.tgz", - "integrity": "sha512-GSbkfqjqxpZC5/zc+8H332+q5l/DKUhpQr0vdX2uDsxo5K0PhvaMEVjyoJUTkZ3+JstEADQji1PVLVb/2bJeOQ==", - "requires": { - "@babel/runtime": "^7.10.1", - "classnames": "^2.2.6", - "rc-motion": "^2.3.0", - "rc-util": "^5.6.1" - } - }, - "rc-drawer": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/rc-drawer/-/rc-drawer-4.4.3.tgz", - "integrity": "sha512-FYztwRs3uXnFOIf1hLvFxIQP9MiZJA+0w+Os8dfDh/90X7z/HqP/Yg+noLCIeHEbKln1Tqelv8ymCAN24zPcfQ==", - "requires": { - "@babel/runtime": "^7.10.1", - "classnames": "^2.2.6", - "rc-util": "^5.7.0" - } - }, - "rc-dropdown": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/rc-dropdown/-/rc-dropdown-3.2.5.tgz", - "integrity": "sha512-dVO2eulOSbEf+F4OyhCY5iGiMVhUYY/qeXxL7Ex2jDBt/xc89jU07mNoowV6aWxwVOc70pxEINff0oM2ogjluA==", - "requires": { - "@babel/runtime": "^7.10.1", - "classnames": "^2.2.6", - "rc-trigger": "^5.0.4" - } - }, - "rc-field-form": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/rc-field-form/-/rc-field-form-1.22.1.tgz", - "integrity": "sha512-LweU7nBeqmC5r3HDUjRprcOXXobHXp/TGIxD7ppBq5FX6Iptt3ibdpRVg4RSyNulBNGHOuknHlRcguuIpvVMVg==", - "requires": { - "@babel/runtime": "^7.8.4", - "async-validator": "^4.0.2", - "rc-util": "^5.8.0" - } - }, - "rc-image": { - "version": "5.2.5", - "resolved": "https://registry.npmjs.org/rc-image/-/rc-image-5.2.5.tgz", - "integrity": "sha512-qUfZjYIODxO0c8a8P5GeuclYXZjzW4hV/5hyo27XqSFo1DmTCs2HkVeQObkcIk5kNsJtgsj1KoPThVsSc/PXOw==", - "requires": { - "@babel/runtime": "^7.11.2", - "classnames": "^2.2.6", - "rc-dialog": "~8.6.0", - "rc-util": "^5.0.6" - } - }, - "rc-input-number": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/rc-input-number/-/rc-input-number-7.3.4.tgz", - "integrity": "sha512-W9uqSzuvJUnz8H8vsVY4kx+yK51SsAxNTwr8SNH4G3XqQNocLVmKIibKFRjocnYX1RDHMND9FFbgj2h7E7nvGA==", - "requires": { - "@babel/runtime": "^7.10.1", - "classnames": "^2.2.5", - "rc-util": "^5.9.8" - } - }, - "rc-mentions": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/rc-mentions/-/rc-mentions-1.6.1.tgz", - "integrity": "sha512-LDzGI8jJVGnkhpTZxZuYBhMz3avcZZqPGejikchh97xPni/g4ht714Flh7DVvuzHQ+BoKHhIjobHnw1rcP8erg==", - "requires": { - "@babel/runtime": "^7.10.1", - "classnames": "^2.2.6", - "rc-menu": "^9.0.0", - "rc-textarea": "^0.3.0", - "rc-trigger": "^5.0.4", - "rc-util": "^5.0.1" - } - }, - "rc-menu": { - "version": "9.2.1", - "resolved": "https://registry.npmjs.org/rc-menu/-/rc-menu-9.2.1.tgz", - "integrity": "sha512-UbEtn3rflJ8zS+etYGTVQuzy7Fm+yWXR5c0Rl6ecNTS/dPknRyWAyhJcbeR0Hu1+RdQT+0VCqrUPrgKnm4iY+w==", - "requires": { - "@babel/runtime": "^7.10.1", - "classnames": "2.x", - "rc-motion": "^2.4.3", - "rc-overflow": "^1.2.0", - "rc-trigger": "^5.1.2", - "rc-util": "^5.12.0", - "shallowequal": "^1.1.0" - } - }, - "rc-motion": { - "version": "2.4.5", - "resolved": "https://registry.npmjs.org/rc-motion/-/rc-motion-2.4.5.tgz", - "integrity": "sha512-f3uJHR4gcpeZS/s8/nYFSOrXt2Wu/h9GrEcbJmC0qmKrVNgwL1pTgrT5kW7lgG6PFeoL4yHDmpQoEKkrPtKIzQ==", - "requires": { - "@babel/runtime": "^7.11.1", - "classnames": "^2.2.1", - "rc-util": "^5.18.1" - } - }, - "rc-notification": { - "version": "4.5.7", - "resolved": "https://registry.npmjs.org/rc-notification/-/rc-notification-4.5.7.tgz", - "integrity": "sha512-zhTGUjBIItbx96SiRu3KVURcLOydLUHZCPpYEn1zvh+re//Tnq/wSxN4FKgp38n4HOgHSVxcLEeSxBMTeBBDdw==", - "requires": { - "@babel/runtime": "^7.10.1", - "classnames": "2.x", - "rc-motion": "^2.2.0", - "rc-util": "^5.0.1" - } - }, - "rc-overflow": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/rc-overflow/-/rc-overflow-1.2.3.tgz", - "integrity": "sha512-Bz6dXTn/ww8nmu70tUQfRV0wT3BkfXY6j1lB1O38OVkDPz4xwfAcGK+LJ2zewUR5cTXkJ8hAN7YULohG8z4M7Q==", - "requires": { - "@babel/runtime": "^7.11.1", - "classnames": "^2.2.1", - "rc-resize-observer": "^1.0.0", - "rc-util": "^5.15.0" - } - }, - "rc-pagination": { - "version": "3.1.15", - "resolved": "https://registry.npmjs.org/rc-pagination/-/rc-pagination-3.1.15.tgz", - "integrity": "sha512-4L3fot8g4E+PjWEgoVGX0noFCg+8ZFZmeLH4vsnZpB3O2T2zThtakjNxG+YvSaYtyMVT4B+GLayjKrKbXQpdAg==", - "requires": { - "@babel/runtime": "^7.10.1", - "classnames": "^2.2.1" - } - }, - "rc-picker": { - "version": "2.5.19", - "resolved": "https://registry.npmjs.org/rc-picker/-/rc-picker-2.5.19.tgz", - "integrity": "sha512-u6myoCu/qiQ0vLbNzSzNrzTQhs7mldArCpPHrEI6OUiifs+IPXmbesqSm0zilJjfzrZJLgYeyyOMSznSlh0GKA==", - "requires": { - "@babel/runtime": "^7.10.1", - "classnames": "^2.2.1", - "date-fns": "2.x", - "dayjs": "1.x", - "moment": "^2.24.0", - "rc-trigger": "^5.0.4", - "rc-util": "^5.4.0", - "shallowequal": "^1.1.0" - } - }, - "rc-progress": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/rc-progress/-/rc-progress-3.2.4.tgz", - "integrity": "sha512-M9WWutRaoVkPUPIrTpRIDpX0SPSrVHzxHdCRCbeoBFrd9UFWTYNWRlHsruJM5FH1AZI+BwB4wOJUNNylg/uFSw==", - "requires": { - "@babel/runtime": "^7.10.1", - "classnames": "^2.2.6", - "rc-util": "^5.16.1" - } - }, - "rc-rate": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/rc-rate/-/rc-rate-2.9.1.tgz", - "integrity": "sha512-MmIU7FT8W4LYRRHJD1sgG366qKtSaKb67D0/vVvJYR0lrCuRrCiVQ5qhfT5ghVO4wuVIORGpZs7ZKaYu+KMUzA==", - "requires": { - "@babel/runtime": "^7.10.1", - "classnames": "^2.2.5", - "rc-util": "^5.0.1" - } - }, - "rc-resize-observer": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/rc-resize-observer/-/rc-resize-observer-1.2.0.tgz", - "integrity": "sha512-6W+UzT3PyDM0wVCEHfoW3qTHPTvbdSgiA43buiy8PzmeMnfgnDeb9NjdimMXMl3/TcrvvWl5RRVdp+NqcR47pQ==", - "requires": { - "@babel/runtime": "^7.10.1", - "classnames": "^2.2.1", - "rc-util": "^5.15.0", - "resize-observer-polyfill": "^1.5.1" - } - }, - "rc-select": { - "version": "14.0.0-alpha.26", - "resolved": "https://registry.npmjs.org/rc-select/-/rc-select-14.0.0-alpha.26.tgz", - "integrity": "sha512-5+vpP+qkYg9TiQb06BIVMTdnKwjXW/4ud8NWaCtnLGsyeqN6Hg7HGTUwlTTOyNOU5zMjbKHrAIvMk8NipGKqtA==", - "requires": { - "@babel/runtime": "^7.10.1", - "classnames": "2.x", - "rc-motion": "^2.0.1", - "rc-overflow": "^1.0.0", - "rc-trigger": "^5.0.4", - "rc-util": "^5.16.1", - "rc-virtual-list": "^3.2.0" - } - }, - "rc-slider": { - "version": "9.7.5", - "resolved": "https://registry.npmjs.org/rc-slider/-/rc-slider-9.7.5.tgz", - "integrity": "sha512-LV/MWcXFjco1epPbdw1JlLXlTgmWpB9/Y/P2yinf8Pg3wElHxA9uajN21lJiWtZjf5SCUekfSP6QMJfDo4t1hg==", - "requires": { - "@babel/runtime": "^7.10.1", - "classnames": "^2.2.5", - "rc-tooltip": "^5.0.1", - "rc-util": "^5.16.1", - "shallowequal": "^1.1.0" - } - }, - "rc-steps": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/rc-steps/-/rc-steps-4.1.4.tgz", - "integrity": "sha512-qoCqKZWSpkh/b03ASGx1WhpKnuZcRWmvuW+ZUu4mvMdfvFzVxblTwUM+9aBd0mlEUFmt6GW8FXhMpHkK3Uzp3w==", - "requires": { - "@babel/runtime": "^7.10.2", - "classnames": "^2.2.3", - "rc-util": "^5.0.1" - } - }, - "rc-switch": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/rc-switch/-/rc-switch-3.2.2.tgz", - "integrity": "sha512-+gUJClsZZzvAHGy1vZfnwySxj+MjLlGRyXKXScrtCTcmiYNPzxDFOxdQ/3pK1Kt/0POvwJ/6ALOR8gwdXGhs+A==", - "requires": { - "@babel/runtime": "^7.10.1", - "classnames": "^2.2.1", - "rc-util": "^5.0.1" - } - }, - "rc-table": { - "version": "7.22.2", - "resolved": "https://registry.npmjs.org/rc-table/-/rc-table-7.22.2.tgz", - "integrity": "sha512-Ng2gNkGi6ybl6dzneRn2H4Gp8XhIbRa5rXQ7ZhZcgWVmfVMok70UHGPXcf68tXW6O0/qckTf/eOVsoviSvK4sw==", - "requires": { - "@babel/runtime": "^7.10.1", - "classnames": "^2.2.5", - "rc-resize-observer": "^1.1.0", - "rc-util": "^5.14.0", - "shallowequal": "^1.1.0" - } - }, - "rc-tabs": { - "version": "11.10.5", - "resolved": "https://registry.npmjs.org/rc-tabs/-/rc-tabs-11.10.5.tgz", - "integrity": "sha512-DDuUdV6b9zGRYLtjI5hyejWLKoz1QiLWNgMeBzc3aMeQylZFhTYnFGdDc6HRqj5IYearNTsFPVSA+6VIT8g5cg==", - "requires": { - "@babel/runtime": "^7.11.2", - "classnames": "2.x", - "rc-dropdown": "^3.2.0", - "rc-menu": "^9.0.0", - "rc-resize-observer": "^1.0.0", - "rc-util": "^5.5.0" - } - }, - "rc-textarea": { - "version": "0.3.7", - "resolved": "https://registry.npmjs.org/rc-textarea/-/rc-textarea-0.3.7.tgz", - "integrity": "sha512-yCdZ6binKmAQB13hc/oehh0E/QRwoPP1pjF21aHBxlgXO3RzPF6dUu4LG2R4FZ1zx/fQd2L1faktulrXOM/2rw==", - "requires": { - "@babel/runtime": "^7.10.1", - "classnames": "^2.2.1", - "rc-resize-observer": "^1.0.0", - "rc-util": "^5.7.0", - "shallowequal": "^1.1.0" - } - }, - "rc-tooltip": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/rc-tooltip/-/rc-tooltip-5.1.1.tgz", - "integrity": "sha512-alt8eGMJulio6+4/uDm7nvV+rJq9bsfxFDCI0ljPdbuoygUscbsMYb6EQgwib/uqsXQUvzk+S7A59uYHmEgmDA==", - "requires": { - "@babel/runtime": "^7.11.2", - "rc-trigger": "^5.0.0" - } - }, - "rc-tree": { - "version": "5.4.3", - "resolved": "https://registry.npmjs.org/rc-tree/-/rc-tree-5.4.3.tgz", - "integrity": "sha512-WAHV8FkBerulj9J/+61+Qn0TD/Zo37PrDG8/45WomzGTYavxFMur9YguKjQj/J+NxjVJzrJL3lvdSZsumfdbiA==", - "requires": { - "@babel/runtime": "^7.10.1", - "classnames": "2.x", - "rc-motion": "^2.0.1", - "rc-util": "^5.16.1", - "rc-virtual-list": "^3.4.1" - } - }, - "rc-tree-select": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/rc-tree-select/-/rc-tree-select-5.1.3.tgz", - "integrity": "sha512-nfOhsUM3SiEo/Kt+LhinC3LI3VJGCU4+TCRBAmdt0frV3Ix9GAoC3aIaHIUs2tkDf3X0qOmf6qYcyUn/RaIuoQ==", - "requires": { - "@babel/runtime": "^7.10.1", - "classnames": "2.x", - "rc-select": "~14.0.0-alpha.8", - "rc-tree": "~5.4.3", - "rc-util": "^5.16.1" - } - }, - "rc-trigger": { - "version": "5.2.10", - "resolved": "https://registry.npmjs.org/rc-trigger/-/rc-trigger-5.2.10.tgz", - "integrity": "sha512-FkUf4H9BOFDaIwu42fvRycXMAvkttph9AlbCZXssZDVzz2L+QZ0ERvfB/4nX3ZFPh1Zd+uVGr1DEDeXxq4J1TA==", - "requires": { - "@babel/runtime": "^7.11.2", - "classnames": "^2.2.6", - "rc-align": "^4.0.0", - "rc-motion": "^2.0.0", - "rc-util": "^5.5.0" - } - }, - "rc-upload": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/rc-upload/-/rc-upload-4.3.3.tgz", - "integrity": "sha512-YoJ0phCRenMj1nzwalXzciKZ9/FAaCrFu84dS5pphwucTC8GUWClcDID/WWNGsLFcM97NqIboDqrV82rVRhW/w==", - "requires": { - "@babel/runtime": "^7.10.1", - "classnames": "^2.2.5", - "rc-util": "^5.2.0" - } - }, - "rc-util": { - "version": "5.18.1", - "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-5.18.1.tgz", - "integrity": "sha512-24xaSrMZUEKh1+suDOtJWfPe9E6YrwryViZcoPO0miJTKzP4qhUlV5AAlKQ82AJilz/AOHfi3l6HoX8qa1ye8w==", - "requires": { - "@babel/runtime": "^7.12.5", - "react-is": "^16.12.0", - "shallowequal": "^1.1.0" - } - }, - "rc-virtual-list": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/rc-virtual-list/-/rc-virtual-list-3.4.2.tgz", - "integrity": "sha512-OyVrrPvvFcHvV0ssz5EDZ+7Rf5qLat/+mmujjchNw5FfbJWNDwkpQ99EcVE6+FtNRmX9wFa1LGNpZLUTvp/4GQ==", - "requires": { - "classnames": "^2.2.6", - "rc-resize-observer": "^1.0.0", - "rc-util": "^5.0.7" - } - }, - "react": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", - "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" - } - }, - "react-base16-styling": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/react-base16-styling/-/react-base16-styling-0.6.0.tgz", - "integrity": "sha1-7yFW1mz0E5aVyKFniGy2nqZgeSw=", - "requires": { - "base16": "^1.0.0", - "lodash.curry": "^4.0.1", - "lodash.flow": "^3.3.0", - "pure-color": "^1.2.0" - } - }, - "react-copy-to-clipboard": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/react-copy-to-clipboard/-/react-copy-to-clipboard-5.0.4.tgz", - "integrity": "sha512-IeVAiNVKjSPeGax/Gmkqfa/+PuMTBhutEvFUaMQLwE2tS0EXrAdgOpWDX26bWTXF3HrioorR7lr08NqeYUWQCQ==", - "requires": { - "copy-to-clipboard": "^3", - "prop-types": "^15.5.8" - } - }, - "react-debounce-input": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/react-debounce-input/-/react-debounce-input-3.2.4.tgz", - "integrity": "sha512-fX70bNj0fLEYO2Zcvuh7eh9wOUQ29GIx6r8IxIJlc0i0mpUH++9ax0BhfAYfzndADli3RAMROrZQ014J01owrg==", - "requires": { - "lodash.debounce": "^4", - "prop-types": "^15.7.2" - } - }, - "react-dev-utils": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-12.0.0.tgz", - "integrity": "sha512-xBQkitdxozPxt1YZ9O1097EJiVpwHr9FoAuEVURCKV0Av8NBERovJauzP7bo1ThvuhZ4shsQ1AJiu4vQpoT1AQ==", - "requires": { - "@babel/code-frame": "^7.16.0", - "address": "^1.1.2", - "browserslist": "^4.18.1", - "chalk": "^4.1.2", - "cross-spawn": "^7.0.3", - "detect-port-alt": "^1.1.6", - "escape-string-regexp": "^4.0.0", - "filesize": "^8.0.6", - "find-up": "^5.0.0", - "fork-ts-checker-webpack-plugin": "^6.5.0", - "global-modules": "^2.0.0", - "globby": "^11.0.4", - "gzip-size": "^6.0.0", - "immer": "^9.0.7", - "is-root": "^2.1.0", - "loader-utils": "^3.2.0", - "open": "^8.4.0", - "pkg-up": "^3.1.0", - "prompts": "^2.4.2", - "react-error-overlay": "^6.0.10", - "recursive-readdir": "^2.2.2", - "shell-quote": "^1.7.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" - }, - "dependencies": { - "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==" - }, - "find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "requires": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - } - }, - "loader-utils": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.0.tgz", - "integrity": "sha512-HVl9ZqccQihZ7JM85dco1MvO9G+ONvxoGa9rkhzFsneGLKSUg1gJf9bWzhRhcvm2qChhWpebQhP44qxjKIUCaQ==" - }, - "locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "requires": { - "p-locate": "^5.0.0" - } - }, - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "requires": { - "yocto-queue": "^0.1.0" - } - }, - "p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "requires": { - "p-limit": "^3.0.2" - } - } - } - }, - "react-dom": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", - "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "scheduler": "^0.20.2" - } - }, - "react-error-overlay": { - "version": "6.0.10", - "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.10.tgz", - "integrity": "sha512-mKR90fX7Pm5seCOfz8q9F+66VCc1PGsWSBxKbITjfKVQHMNF2zudxHnMdJiB1fRCb+XsbQV9sO9DCkgsMQgBIA==" - }, - "react-fast-compare": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.0.tgz", - "integrity": "sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA==" - }, - "react-github-btn": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/react-github-btn/-/react-github-btn-1.2.1.tgz", - "integrity": "sha512-/gXD01mHAOhW0xYuNJFDn08OGjaMXOjcg6GCKVPdHvQcWzswH4aT85DLDAAJ6Zhw/71veSIH4Kx1BTBfy69SsA==", - "requires": { - "github-buttons": "^2.8.0" - } - }, - "react-helmet": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/react-helmet/-/react-helmet-6.1.0.tgz", - "integrity": "sha512-4uMzEY9nlDlgxr61NL3XbKRy1hEkXmKNXhjbAIOVw5vcFrsdYbH2FEwcNyWvWinl103nXgzYNlns9ca+8kFiWw==", - "requires": { - "object-assign": "^4.1.1", - "prop-types": "^15.7.2", - "react-fast-compare": "^3.1.1", - "react-side-effect": "^2.1.0" - } - }, - "react-helmet-async": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/react-helmet-async/-/react-helmet-async-1.2.3.tgz", - "integrity": "sha512-mCk2silF53Tq/YaYdkl2sB+/tDoPnaxN7dFS/6ZLJb/rhUY2EWGI5Xj2b4jHppScMqY45MbgPSwTxDchKpZ5Kw==", - "requires": { - "@babel/runtime": "^7.12.5", - "invariant": "^2.2.4", - "prop-types": "^15.7.2", - "react-fast-compare": "^3.2.0", - "shallowequal": "^1.1.0" - } - }, - "react-immutable-proptypes": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/react-immutable-proptypes/-/react-immutable-proptypes-2.2.0.tgz", - "integrity": "sha512-Vf4gBsePlwdGvSZoLSBfd4HAP93HDauMY4fDjXhreg/vg6F3Fj/MXDNyTbltPC/xZKmZc+cjLu3598DdYK6sgQ==", - "requires": { - "invariant": "^2.2.2" - } - }, - "react-immutable-pure-component": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/react-immutable-pure-component/-/react-immutable-pure-component-2.2.2.tgz", - "integrity": "sha512-vkgoMJUDqHZfXXnjVlG3keCxSO/U6WeDQ5/Sl0GK2cH8TOxEzQ5jXqDXHEL/jqk6fsNxV05oH5kD7VNMUE2k+A==" - }, - "react-inspector": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/react-inspector/-/react-inspector-5.1.1.tgz", - "integrity": "sha512-GURDaYzoLbW8pMGXwYPDBIv6nqei4kK7LPRZ9q9HCZF54wqXz/dnylBp/kfE9XmekBhHvLDdcYeyIwSrvtOiWg==", - "requires": { - "@babel/runtime": "^7.0.0", - "is-dom": "^1.0.0", - "prop-types": "^15.0.0" - } - }, - "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==" - }, - "react-json-view": { - "version": "1.21.3", - "resolved": "https://registry.npmjs.org/react-json-view/-/react-json-view-1.21.3.tgz", - "integrity": "sha512-13p8IREj9/x/Ye4WI/JpjhoIwuzEgUAtgJZNBJckfzJt1qyh24BdTm6UQNGnyTq9dapQdrqvquZTo3dz1X6Cjw==", - "requires": { - "flux": "^4.0.1", - "react-base16-styling": "^0.6.0", - "react-lifecycles-compat": "^3.0.4", - "react-textarea-autosize": "^8.3.2" - } - }, - "react-lifecycles-compat": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", - "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" - }, - "react-loadable-ssr-addon-v5-slorber": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/react-loadable-ssr-addon-v5-slorber/-/react-loadable-ssr-addon-v5-slorber-1.0.1.tgz", - "integrity": "sha512-lq3Lyw1lGku8zUEJPDxsNm1AfYHBrO9Y1+olAYwpUJ2IGFBskM0DMKok97A6LWUpHm+o7IvQBOWu9MLenp9Z+A==", - "requires": { - "@babel/runtime": "^7.10.3" - } - }, - "react-redux": { - "version": "7.2.6", - "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-7.2.6.tgz", - "integrity": "sha512-10RPdsz0UUrRL1NZE0ejTkucnclYSgXp5q+tB5SWx2qeG2ZJQJyymgAhwKy73yiL/13btfB6fPr+rgbMAaZIAQ==", - "requires": { - "@babel/runtime": "^7.15.4", - "@types/react-redux": "^7.1.20", - "hoist-non-react-statics": "^3.3.2", - "loose-envify": "^1.4.0", - "prop-types": "^15.7.2", - "react-is": "^17.0.2" - }, - "dependencies": { - "react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" - } - } - }, - "react-router": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.2.1.tgz", - "integrity": "sha512-lIboRiOtDLFdg1VTemMwud9vRVuOCZmUIT/7lUoZiSpPODiiH1UQlfXy+vPLC/7IWdFYnhRwAyNqA/+I7wnvKQ==", - "requires": { - "@babel/runtime": "^7.12.13", - "history": "^4.9.0", - "hoist-non-react-statics": "^3.1.0", - "loose-envify": "^1.3.1", - "mini-create-react-context": "^0.4.0", - "path-to-regexp": "^1.7.0", - "prop-types": "^15.6.2", - "react-is": "^16.6.0", - "tiny-invariant": "^1.0.2", - "tiny-warning": "^1.0.0" - } - }, - "react-router-config": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/react-router-config/-/react-router-config-5.1.1.tgz", - "integrity": "sha512-DuanZjaD8mQp1ppHjgnnUnyOlqYXZVjnov/JzFhjLEwd3Z4dYjMSnqrEzzGThH47vpCOqPPwJM2FtthLeJ8Pbg==", - "requires": { - "@babel/runtime": "^7.1.2" - } - }, - "react-router-dom": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.3.0.tgz", - "integrity": "sha512-ObVBLjUZsphUUMVycibxgMdh5jJ1e3o+KpAZBVeHcNQZ4W+uUGGWsokurzlF4YOldQYRQL4y6yFRWM4m3svmuQ==", - "requires": { - "@babel/runtime": "^7.12.13", - "history": "^4.9.0", - "loose-envify": "^1.3.1", - "prop-types": "^15.6.2", - "react-router": "5.2.1", - "tiny-invariant": "^1.0.2", - "tiny-warning": "^1.0.0" - } - }, - "react-side-effect": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/react-side-effect/-/react-side-effect-2.1.1.tgz", - "integrity": "sha512-2FoTQzRNTncBVtnzxFOk2mCpcfxQpenBMbk5kSVBg5UcPqV9fRbgY2zhb7GTWWOlpFmAxhClBDlIq8Rsubz1yQ==" - }, - "react-syntax-highlighter": { - "version": "15.4.5", - "resolved": "https://registry.npmjs.org/react-syntax-highlighter/-/react-syntax-highlighter-15.4.5.tgz", - "integrity": "sha512-RC90KQTxZ/b7+9iE6s9nmiFLFjWswUcfULi4GwVzdFVKVMQySkJWBuOmJFfjwjMVCo0IUUuJrWebNKyviKpwLQ==", - "requires": { - "@babel/runtime": "^7.3.1", - "highlight.js": "^10.4.1", - "lowlight": "^1.17.0", - "prismjs": "^1.25.0", - "refractor": "^3.2.0" - } - }, - "react-textarea-autosize": { - "version": "8.3.3", - "resolved": "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-8.3.3.tgz", - "integrity": "sha512-2XlHXK2TDxS6vbQaoPbMOfQ8GK7+irc2fVK6QFIcC8GOnH3zI/v481n+j1L0WaPVvKxwesnY93fEfH++sus2rQ==", - "requires": { - "@babel/runtime": "^7.10.2", - "use-composed-ref": "^1.0.0", - "use-latest": "^1.0.0" - } - }, - "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==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "requires": { - "picomatch": "^2.2.1" - } - }, - "reading-time": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/reading-time/-/reading-time-1.5.0.tgz", - "integrity": "sha512-onYyVhBNr4CmAxFsKS7bz+uTLRakypIe4R+5A824vBSkQy/hB3fZepoVEf8OVAxzLvK+H/jm9TzpI3ETSm64Kg==" - }, - "rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", - "requires": { - "resolve": "^1.1.6" - } - }, - "recursive-readdir": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.2.tgz", - "integrity": "sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg==", - "requires": { - "minimatch": "3.0.4" - } - }, - "redux": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/redux/-/redux-4.1.2.tgz", - "integrity": "sha512-SH8PglcebESbd/shgf6mii6EIoRM0zrQyjcuQ+ojmfxjTtE0z9Y8pa62iA/OJ58qjP6j27uyW4kUF4jl/jd6sw==", - "requires": { - "@babel/runtime": "^7.9.2" - } - }, - "redux-immutable": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/redux-immutable/-/redux-immutable-4.0.0.tgz", - "integrity": "sha1-Ohoy32Y2ZGK2NpHw4dw15HK7yfM=" - }, - "refractor": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/refractor/-/refractor-3.5.0.tgz", - "integrity": "sha512-QwPJd3ferTZ4cSPPjdP5bsYHMytwWYnAN5EEnLtGvkqp/FCCnGsBgxrm9EuIDnjUC3Uc/kETtvVi7fSIVC74Dg==", - "requires": { - "hastscript": "^6.0.0", - "parse-entities": "^2.0.0", - "prismjs": "~1.25.0" - }, - "dependencies": { - "prismjs": { - "version": "1.25.0", - "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.25.0.tgz", - "integrity": "sha512-WCjJHl1KEWbnkQom1+SzftbtXMKQoezOCYs5rECqMN+jP+apI7ftoflyqigqzopSO3hMhTEb0mFClA8lkolgEg==" - } - } - }, - "regenerate": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" - }, - "regenerate-unicode-properties": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz", - "integrity": "sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA==", - "requires": { - "regenerate": "^1.4.2" - } - }, - "regenerator-runtime": { - "version": "0.13.9", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", - "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" - }, - "regenerator-transform": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", - "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", - "requires": { - "@babel/runtime": "^7.8.4" - } - }, - "regexp.prototype.flags": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz", - "integrity": "sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } - }, - "regexpu-core": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.8.0.tgz", - "integrity": "sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg==", - "requires": { - "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^9.0.0", - "regjsgen": "^0.5.2", - "regjsparser": "^0.7.0", - "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.0.0" - } - }, - "registry-auth-token": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz", - "integrity": "sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==", - "requires": { - "rc": "^1.2.8" - } - }, - "registry-url": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", - "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", - "requires": { - "rc": "^1.2.8" - } - }, - "regjsgen": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", - "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==" - }, - "regjsparser": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.7.0.tgz", - "integrity": "sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ==", - "requires": { - "jsesc": "~0.5.0" - }, - "dependencies": { - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=" - } - } - }, - "rehype-parse": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/rehype-parse/-/rehype-parse-6.0.2.tgz", - "integrity": "sha512-0S3CpvpTAgGmnz8kiCyFLGuW5yA4OQhyNTm/nwPopZ7+PI11WnGl1TTWTGv/2hPEe/g2jRLlhVVSsoDH8waRug==", - "requires": { - "hast-util-from-parse5": "^5.0.0", - "parse5": "^5.0.0", - "xtend": "^4.0.0" - }, - "dependencies": { - "hast-util-from-parse5": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-5.0.3.tgz", - "integrity": "sha512-gOc8UB99F6eWVWFtM9jUikjN7QkWxB3nY0df5Z0Zq1/Nkwl5V4hAAsl0tmwlgWl/1shlTF8DnNYLO8X6wRV9pA==", - "requires": { - "ccount": "^1.0.3", - "hastscript": "^5.0.0", - "property-information": "^5.0.0", - "web-namespaces": "^1.1.2", - "xtend": "^4.0.1" - } - }, - "hastscript": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-5.1.2.tgz", - "integrity": "sha512-WlztFuK+Lrvi3EggsqOkQ52rKbxkXL3RwB6t5lwoa8QLMemoWfBuL43eDrwOamJyR7uKQKdmKYaBH1NZBiIRrQ==", - "requires": { - "comma-separated-tokens": "^1.0.0", - "hast-util-parse-selector": "^2.0.0", - "property-information": "^5.0.0", - "space-separated-tokens": "^1.0.0" - } - }, - "parse5": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", - "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==" - } - } - }, - "relateurl": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=" - }, - "remark-admonitions": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/remark-admonitions/-/remark-admonitions-1.2.1.tgz", - "integrity": "sha512-Ji6p68VDvD+H1oS95Fdx9Ar5WA2wcDA4kwrrhVU7fGctC6+d3uiMICu7w7/2Xld+lnU7/gi+432+rRbup5S8ow==", - "requires": { - "rehype-parse": "^6.0.2", - "unified": "^8.4.2", - "unist-util-visit": "^2.0.1" - }, - "dependencies": { - "unified": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/unified/-/unified-8.4.2.tgz", - "integrity": "sha512-JCrmN13jI4+h9UAyKEoGcDZV+i1E7BLFuG7OsaDvTXI5P0qhHX+vZO/kOhz9jn8HGENDKbwSeB0nVOg4gVStGA==", - "requires": { - "bail": "^1.0.0", - "extend": "^3.0.0", - "is-plain-obj": "^2.0.0", - "trough": "^1.0.0", - "vfile": "^4.0.0" - } - } - } - }, - "remark-emoji": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/remark-emoji/-/remark-emoji-2.2.0.tgz", - "integrity": "sha512-P3cj9s5ggsUvWw5fS2uzCHJMGuXYRb0NnZqYlNecewXt8QBU9n5vW3DUUKOhepS8F9CwdMx9B8a3i7pqFWAI5w==", - "requires": { - "emoticon": "^3.2.0", - "node-emoji": "^1.10.0", - "unist-util-visit": "^2.0.3" - } - }, - "remark-footnotes": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/remark-footnotes/-/remark-footnotes-2.0.0.tgz", - "integrity": "sha512-3Clt8ZMH75Ayjp9q4CorNeyjwIxHFcTkaektplKGl2A1jNGEUey8cKL0ZC5vJwfcD5GFGsNLImLG/NGzWIzoMQ==" - }, - "remark-mdx": { - "version": "1.6.22", - "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-1.6.22.tgz", - "integrity": "sha512-phMHBJgeV76uyFkH4rvzCftLfKCr2RZuF+/gmVcaKrpsihyzmhXjA0BEMDaPTXG5y8qZOKPVo83NAOX01LPnOQ==", - "requires": { - "@babel/core": "7.12.9", - "@babel/helper-plugin-utils": "7.10.4", - "@babel/plugin-proposal-object-rest-spread": "7.12.1", - "@babel/plugin-syntax-jsx": "7.12.1", - "@mdx-js/util": "1.6.22", - "is-alphabetical": "1.0.4", - "remark-parse": "8.0.3", - "unified": "9.2.0" - }, - "dependencies": { - "@babel/core": { - "version": "7.12.9", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.9.tgz", - "integrity": "sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ==", - "requires": { - "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.12.5", - "@babel/helper-module-transforms": "^7.12.1", - "@babel/helpers": "^7.12.5", - "@babel/parser": "^7.12.7", - "@babel/template": "^7.12.7", - "@babel/traverse": "^7.12.9", - "@babel/types": "^7.12.7", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.1", - "json5": "^2.1.2", - "lodash": "^4.17.19", - "resolve": "^1.3.2", - "semver": "^5.4.1", - "source-map": "^0.5.0" - } - }, - "@babel/helper-plugin-utils": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", - "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==" - }, - "@babel/plugin-proposal-object-rest-spread": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz", - "integrity": "sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.0", - "@babel/plugin-transform-parameters": "^7.12.1" - } - }, - "@babel/plugin-syntax-jsx": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.1.tgz", - "integrity": "sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - } - } - }, - "remark-mdx-remove-exports": { - "version": "1.6.22", - "resolved": "https://registry.npmjs.org/remark-mdx-remove-exports/-/remark-mdx-remove-exports-1.6.22.tgz", - "integrity": "sha512-7g2uiTmTGfz5QyVb+toeX25frbk1Y6yd03RXGPtqx0+DVh86Gb7MkNYbk7H2X27zdZ3CQv1W/JqlFO0Oo8IxVA==", - "requires": { - "unist-util-remove": "2.0.0" - }, - "dependencies": { - "unist-util-remove": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unist-util-remove/-/unist-util-remove-2.0.0.tgz", - "integrity": "sha512-HwwWyNHKkeg/eXRnE11IpzY8JT55JNM1YCwwU9YNCnfzk6s8GhPXrVBBZWiwLeATJbI7euvoGSzcy9M29UeW3g==", - "requires": { - "unist-util-is": "^4.0.0" - } - } - } - }, - "remark-mdx-remove-imports": { - "version": "1.6.22", - "resolved": "https://registry.npmjs.org/remark-mdx-remove-imports/-/remark-mdx-remove-imports-1.6.22.tgz", - "integrity": "sha512-lmjAXD8Ltw0TsvBzb45S+Dxx7LTJAtDaMneMAv8LAUIPEyYoKkmGbmVsiF0/pY6mhM1Q16swCmu1TN+ie/vn/A==", - "requires": { - "unist-util-remove": "2.0.0" - }, - "dependencies": { - "unist-util-remove": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unist-util-remove/-/unist-util-remove-2.0.0.tgz", - "integrity": "sha512-HwwWyNHKkeg/eXRnE11IpzY8JT55JNM1YCwwU9YNCnfzk6s8GhPXrVBBZWiwLeATJbI7euvoGSzcy9M29UeW3g==", - "requires": { - "unist-util-is": "^4.0.0" - } - } - } - }, - "remark-parse": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-8.0.3.tgz", - "integrity": "sha512-E1K9+QLGgggHxCQtLt++uXltxEprmWzNfg+MxpfHsZlrddKzZ/hZyWHDbK3/Ap8HJQqYJRXP+jHczdL6q6i85Q==", - "requires": { - "ccount": "^1.0.0", - "collapse-white-space": "^1.0.2", - "is-alphabetical": "^1.0.0", - "is-decimal": "^1.0.0", - "is-whitespace-character": "^1.0.0", - "is-word-character": "^1.0.0", - "markdown-escapes": "^1.0.0", - "parse-entities": "^2.0.0", - "repeat-string": "^1.5.4", - "state-toggle": "^1.0.0", - "trim": "0.0.1", - "trim-trailing-lines": "^1.0.0", - "unherit": "^1.0.4", - "unist-util-remove-position": "^2.0.0", - "vfile-location": "^3.0.0", - "xtend": "^4.0.1" - } - }, - "remark-squeeze-paragraphs": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-squeeze-paragraphs/-/remark-squeeze-paragraphs-4.0.0.tgz", - "integrity": "sha512-8qRqmL9F4nuLPIgl92XUuxI3pFxize+F1H0e/W3llTk0UsjJaj01+RrirkMw7P21RKe4X6goQhYRSvNWX+70Rw==", - "requires": { - "mdast-squeeze-paragraphs": "^4.0.0" - } - }, - "remarkable": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/remarkable/-/remarkable-2.0.1.tgz", - "integrity": "sha512-YJyMcOH5lrR+kZdmB0aJJ4+93bEojRZ1HGDn9Eagu6ibg7aVZhc3OWbbShRid+Q5eAfsEqWxpe+g5W5nYNfNiA==", - "requires": { - "argparse": "^1.0.10", - "autolinker": "^3.11.0" - } - }, - "renderkid": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", - "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", - "requires": { - "css-select": "^4.1.3", - "dom-converter": "^0.2.0", - "htmlparser2": "^6.1.0", - "lodash": "^4.17.21", - "strip-ansi": "^6.0.1" - }, - "dependencies": { - "htmlparser2": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", - "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.0.0", - "domutils": "^2.5.2", - "entities": "^2.0.0" - } - } - } - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" - }, - "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==" - }, - "require-like": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/require-like/-/require-like-0.1.2.tgz", - "integrity": "sha1-rW8wwTvs15cBDEaK+ndcDAprR/o=" - }, - "requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" - }, - "reselect": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/reselect/-/reselect-4.1.5.tgz", - "integrity": "sha512-uVdlz8J7OO+ASpBYoz1Zypgx0KasCY20H+N8JD13oUMtPvSHQuscrHop4KbXrbsBcdB9Ds7lVK7eRkBIfO43vQ==" - }, - "resize-observer-polyfill": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", - "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==" - }, - "resolve": { - "version": "1.21.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.21.0.tgz", - "integrity": "sha512-3wCbTpk5WJlyE4mSOtDLhqQmGFi0/TD9VPwmiolnk8U0wRgMEktqCXd3vy5buTO3tljvalNvKrjHEfrd2WpEKA==", - "requires": { - "is-core-module": "^2.8.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } - }, - "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==" - }, - "resolve-pathname": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz", - "integrity": "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==" - }, - "responselike": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", - "requires": { - "lowercase-keys": "^1.0.0" - } - }, - "retry": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==" - }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" - }, - "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" - } - }, - "rtl-detect": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/rtl-detect/-/rtl-detect-1.0.4.tgz", - "integrity": "sha512-EBR4I2VDSSYr7PkBmFy04uhycIpDKp+21p/jARYXlCSjQksTBQcJ0HFUPOO79EPPH5JS6VAhiIQbycf0O3JAxQ==" - }, - "rtlcss": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/rtlcss/-/rtlcss-3.5.0.tgz", - "integrity": "sha512-wzgMaMFHQTnyi9YOwsx9LjOxYXJPzS8sYnFaKm6R5ysvTkwzHiB0vxnbHwchHQT65PTdBjDG21/kQBWI7q9O7A==", - "requires": { - "find-up": "^5.0.0", - "picocolors": "^1.0.0", - "postcss": "^8.3.11", - "strip-json-comments": "^3.1.1" - }, - "dependencies": { - "find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "requires": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - } - }, - "locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "requires": { - "p-locate": "^5.0.0" - } - }, - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "requires": { - "yocto-queue": "^0.1.0" - } - }, - "p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "requires": { - "p-limit": "^3.0.2" - } - }, - "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==" - } - } - }, - "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": { - "queue-microtask": "^1.2.2" - } - }, - "rxjs": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.1.tgz", - "integrity": "sha512-KExVEeZWxMZnZhUZtsJcFwz8IvPvgu4G2Z2QyqjZQzUGr32KDYuSxrEYO4w3tFFNbfLozcrKUTvTPi+E9ywJkQ==", - "requires": { - "tslib": "^2.1.0" - } - }, - "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==" - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" - }, - "scheduler": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", - "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" - } - }, - "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" - } - }, - "scroll-into-view-if-needed": { - "version": "2.2.29", - "resolved": "https://registry.npmjs.org/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.29.tgz", - "integrity": "sha512-hxpAR6AN+Gh53AdAimHM6C8oTN1ppwVZITihix+WqalywBeFcQ6LdQP5ABNl26nX8GTEL7VT+b8lKpdqq65wXg==", - "requires": { - "compute-scroll-into-view": "^1.0.17" - } - }, - "section-matter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", - "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==", - "requires": { - "extend-shallow": "^2.0.1", - "kind-of": "^6.0.0" - } - }, - "select-hose": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", - "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=" - }, - "selfsigned": { - "version": "1.10.13", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.13.tgz", - "integrity": "sha512-UmLwTKZwNmXYDAlRFhaEdgEg0dp9k5gfJXuO7uKvSqioN1M0+Mgf4V39IlVZMSuqGoCi6h5legkhNXvWy0rFSg==", - "requires": { - "node-forge": "^1.2.0" - } - }, - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "requires": { - "lru-cache": "^6.0.0" - } - }, - "semver-diff": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", - "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", - "requires": { - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - } - } - }, - "send": { - "version": "0.17.2", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz", - "integrity": "sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==", - "requires": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "1.8.1", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "~2.3.0", - "range-parser": "~1.2.1", - "statuses": "~1.5.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - }, - "dependencies": { - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - }, - "range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" - } - } - }, - "serialize-error": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-8.1.0.tgz", - "integrity": "sha512-3NnuWfM6vBYoy5gZFvHiYsVbafvI9vZv/+jlIigFn4oP4zjNPK3LhcY0xSCgeb1a5L8jO71Mit9LlNoi2UfDDQ==", - "requires": { - "type-fest": "^0.20.2" - } - }, - "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": { - "randombytes": "^2.1.0" - } - }, - "serve-handler": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/serve-handler/-/serve-handler-6.1.3.tgz", - "integrity": "sha512-FosMqFBNrLyeiIDvP1zgO6YoTzFYHxLDEIavhlmQ+knB2Z7l1t+kGLHkZIDN7UVWqQAmKI3D20A6F6jo3nDd4w==", - "requires": { - "bytes": "3.0.0", - "content-disposition": "0.5.2", - "fast-url-parser": "1.1.3", - "mime-types": "2.1.18", - "minimatch": "3.0.4", - "path-is-inside": "1.0.2", - "path-to-regexp": "2.2.1", - "range-parser": "1.2.0" - }, - "dependencies": { - "mime-db": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", - "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==" - }, - "mime-types": { - "version": "2.1.18", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", - "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", - "requires": { - "mime-db": "~1.33.0" - } - }, - "path-to-regexp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-2.2.1.tgz", - "integrity": "sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ==" - } - } - }, - "serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", - "requires": { - "accepts": "~1.3.4", - "batch": "0.6.1", - "debug": "2.6.9", - "escape-html": "~1.0.3", - "http-errors": "~1.6.2", - "mime-types": "~2.1.17", - "parseurl": "~1.3.2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" - } - } - }, - "serve-static": { - "version": "1.14.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.2.tgz", - "integrity": "sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==", - "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.17.2" - } - }, - "setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" - }, - "setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" - }, - "sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "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==", - "requires": { - "kind-of": "^6.0.2" - } - }, - "shallowequal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", - "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==" - }, - "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": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" - }, - "shell-quote": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz", - "integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==" - }, - "shelljs": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", - "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", - "requires": { - "glob": "^7.0.0", - "interpret": "^1.0.0", - "rechoir": "^0.6.2" - } - }, - "side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "requires": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - } - }, - "signal-exit": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.6.tgz", - "integrity": "sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==" - }, - "sirv": { - "version": "1.0.19", - "resolved": "https://registry.npmjs.org/sirv/-/sirv-1.0.19.tgz", - "integrity": "sha512-JuLThK3TnZG1TAKDwNIqNq6QA2afLOCcm+iE8D1Kj3GA40pSPsxQjjJl0J8X3tsR7T+CP1GavpzLwYkgVLWrZQ==", - "requires": { - "@polka/url": "^1.0.0-next.20", - "mrmime": "^1.0.0", - "totalist": "^1.0.0" - } - }, - "sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" - }, - "sitemap": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/sitemap/-/sitemap-7.1.1.tgz", - "integrity": "sha512-mK3aFtjz4VdJN0igpIJrinf3EO8U8mxOPsTBzSsy06UtjZQJ3YY3o3Xa7zSc5nMqcMrRwlChHZ18Kxg0caiPBg==", - "requires": { - "@types/node": "^17.0.5", - "@types/sax": "^1.2.1", - "arg": "^5.0.0", - "sax": "^1.2.4" - } - }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" - }, - "sockjs": { - "version": "0.3.24", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", - "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", - "requires": { - "faye-websocket": "^0.11.3", - "uuid": "^8.3.2", - "websocket-driver": "^0.7.4" - } - }, - "sort-css-media-queries": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/sort-css-media-queries/-/sort-css-media-queries-2.0.4.tgz", - "integrity": "sha512-PAIsEK/XupCQwitjv7XxoMvYhT7EAfyzI3hsy/MyDgTvc+Ft55ctdkctJLOy6cQejaIC+zjpUL4djFVm2ivOOw==" - }, - "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": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" - }, - "source-map-js": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.1.tgz", - "integrity": "sha512-4+TN2b3tqOCd/kaGRJ/sTYA0tR0mdXx26ipdolxcwtJVqEnqNYvlCAt1q3ypy4QMlYus+Zh34RNtYLoq2oQ4IA==" - }, - "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": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } - } - }, - "sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" - }, - "space-separated-tokens": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz", - "integrity": "sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==" - }, - "spdy": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", - "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", - "requires": { - "debug": "^4.1.0", - "handle-thing": "^2.0.0", - "http-deceiver": "^1.2.7", - "select-hose": "^2.0.0", - "spdy-transport": "^3.0.0" - } - }, - "spdy-transport": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", - "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", - "requires": { - "debug": "^4.1.0", - "detect-node": "^2.0.4", - "hpack.js": "^2.1.6", - "obuf": "^1.1.2", - "readable-stream": "^3.0.6", - "wbuf": "^1.7.3" - } - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" - }, - "stable": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", - "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==" - }, - "state-toggle": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/state-toggle/-/state-toggle-1.0.3.tgz", - "integrity": "sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ==" - }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" - }, - "stream": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/stream/-/stream-0.0.2.tgz", - "integrity": "sha1-f1Nj8Ff2WSxVlfALyAon9c7B8O8=", - "requires": { - "emitter-component": "^1.1.1" - } - }, - "string-convert": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/string-convert/-/string-convert-0.2.1.tgz", - "integrity": "sha1-aYLMMEn7tM2F+LJFaLnZvznu/5c=" - }, - "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": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "string.prototype.trimend": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", - "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } - }, - "string.prototype.trimstart": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", - "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } - }, - "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==", - "requires": { - "safe-buffer": "~5.2.0" - }, - "dependencies": { - "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==" - } - } - }, - "stringify-object": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", - "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", - "requires": { - "get-own-enumerable-property-symbols": "^3.0.0", - "is-obj": "^1.0.1", - "is-regexp": "^1.0.0" - }, - "dependencies": { - "is-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" - } - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "strip-bom-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", - "integrity": "sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI=" - }, - "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==" - }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" - }, - "style-to-object": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.3.0.tgz", - "integrity": "sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==", - "requires": { - "inline-style-parser": "0.1.1" - } - }, - "styled-system": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/styled-system/-/styled-system-5.1.5.tgz", - "integrity": "sha512-7VoD0o2R3RKzOzPK0jYrVnS8iJdfkKsQJNiLRDjikOpQVqQHns/DXWaPZOH4tIKkhAT7I6wIsy9FWTWh2X3q+A==", - "requires": { - "@styled-system/background": "^5.1.2", - "@styled-system/border": "^5.1.5", - "@styled-system/color": "^5.1.2", - "@styled-system/core": "^5.1.2", - "@styled-system/flexbox": "^5.1.2", - "@styled-system/grid": "^5.1.2", - "@styled-system/layout": "^5.1.2", - "@styled-system/position": "^5.1.2", - "@styled-system/shadow": "^5.1.2", - "@styled-system/space": "^5.1.2", - "@styled-system/typography": "^5.1.2", - "@styled-system/variant": "^5.1.5", - "object-assign": "^4.1.1" - } - }, - "stylehacks": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.0.1.tgz", - "integrity": "sha512-Es0rVnHIqbWzveU1b24kbw92HsebBepxfcqe5iix7t9j0PQqhs0IxXVXv0pY2Bxa08CgMkzD6OWql7kbGOuEdA==", - "requires": { - "browserslist": "^4.16.0", - "postcss-selector-parser": "^6.0.4" - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } - }, - "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==" - }, - "svg-parser": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz", - "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==" - }, - "svgo": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", - "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", - "requires": { - "@trysound/sax": "0.2.0", - "commander": "^7.2.0", - "css-select": "^4.1.3", - "css-tree": "^1.1.3", - "csso": "^4.2.0", - "picocolors": "^1.0.0", - "stable": "^0.1.8" - }, - "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==" - } - } - }, - "swagger-client": { - "version": "3.18.0", - "resolved": "https://registry.npmjs.org/swagger-client/-/swagger-client-3.18.0.tgz", - "integrity": "sha512-lNfwTXHim0QiCNuZ4BKgWle7N7+9WlFLtcP02n0xSchFtdzsKJb2kWsOlwplRU3appVFjnHRy+1eVabRc3ZhbA==", - "requires": { - "@babel/runtime-corejs3": "^7.11.2", - "btoa": "^1.2.1", - "cookie": "~0.4.1", - "cross-fetch": "^3.1.4", - "deep-extend": "~0.6.0", - "fast-json-patch": "^3.0.0-1", - "form-data-encoder": "^1.4.3", - "formdata-node": "^4.0.0", - "is-plain-object": "^5.0.0", - "js-yaml": "^4.1.0", - "lodash": "^4.17.21", - "qs": "^6.10.2", - "traverse": "~0.6.6", - "url": "~0.11.0" - }, - "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==" - }, - "is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==" - }, - "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" - } - }, - "qs": { - "version": "6.10.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.2.tgz", - "integrity": "sha512-mSIdjzqznWgfd4pMii7sHtaYF8rx8861hBO80SraY5GT0XQibWZWJSid0avzHGkDIZLImux2S5mXO0Hfct2QCw==", - "requires": { - "side-channel": "^1.0.4" - } - } - } - }, - "swagger-ui-react": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/swagger-ui-react/-/swagger-ui-react-4.1.3.tgz", - "integrity": "sha512-o1AoXUTNH40cxWus0QOeWQ8x9tSIEmrLBrOgAOHDnvWJ1qyjT8PjgHjPbUVjMbja18coyuaAAeUdyLKvLGmlDA==", - "requires": { - "@babel/runtime-corejs3": "^7.16.3", - "@braintree/sanitize-url": "^5.0.2", - "base64-js": "^1.5.1", - "classnames": "^2.3.1", - "css.escape": "1.5.1", - "deep-extend": "0.6.0", - "dompurify": "=2.3.3", - "ieee754": "^1.2.1", - "immutable": "^3.x.x", - "js-file-download": "^0.4.12", - "js-yaml": "=4.1.0", - "lodash": "^4.17.21", - "memoizee": "^0.4.15", - "prop-types": "^15.7.2", - "randombytes": "^2.1.0", - "react-copy-to-clipboard": "5.0.4", - "react-debounce-input": "=3.2.4", - "react-immutable-proptypes": "2.2.0", - "react-immutable-pure-component": "^2.2.0", - "react-inspector": "^5.1.1", - "react-redux": "^7.2.4", - "react-syntax-highlighter": "^15.4.5", - "redux": "^4.1.2", - "redux-immutable": "^4.0.0", - "remarkable": "^2.0.1", - "reselect": "^4.0.0", - "serialize-error": "^8.1.0", - "sha.js": "^2.4.11", - "swagger-client": "^3.17.0", - "url-parse": "^1.5.3", - "xml": "=1.0.1", - "xml-but-prettier": "^1.0.1", - "zenscroll": "^4.0.2" - }, - "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" - } - } - } - }, - "tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==" - }, - "terser": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.10.0.tgz", - "integrity": "sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA==", - "requires": { - "commander": "^2.20.0", - "source-map": "~0.7.2", - "source-map-support": "~0.5.20" - }, - "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==" - }, - "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==" - } - } - }, - "terser-webpack-plugin": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.0.tgz", - "integrity": "sha512-LPIisi3Ol4chwAaPP8toUJ3L4qCM1G0wao7L3qNv57Drezxj6+VEyySpPw4B1HSO2Eg/hDY/MNF5XihCAoqnsQ==", - "requires": { - "jest-worker": "^27.4.1", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.0", - "source-map": "^0.6.1", - "terser": "^5.7.2" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } - } - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=" - }, - "theme-ui": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/theme-ui/-/theme-ui-0.3.5.tgz", - "integrity": "sha512-yxooGhvkdjFDotDeIFehKo5k6NnLZ3gsLSe8EDe2aDcoWqg1mZjkjjr8EYtVCrK3mk/tYz97AT5BpEnUfamNCQ==", - "requires": { - "@theme-ui/color-modes": "0.3.5", - "@theme-ui/components": "0.3.5", - "@theme-ui/core": "0.3.5", - "@theme-ui/css": "0.3.5", - "@theme-ui/mdx": "0.3.5", - "@theme-ui/theme-provider": "0.3.5" - } - }, - "thunky": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", - "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==" - }, - "timers-ext": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz", - "integrity": "sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==", - "requires": { - "es5-ext": "~0.10.46", - "next-tick": "1" - } - }, - "timsort": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", - "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=" - }, - "tiny-invariant": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.2.0.tgz", - "integrity": "sha512-1Uhn/aqw5C6RI4KejVeTg6mIS7IqxnLJ8Mv2tV5rTc0qWobay7pDUz6Wi392Cnc8ak1H0F2cjoRzb2/AW4+Fvg==" - }, - "tiny-warning": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", - "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" - }, - "to-readable-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", - "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==" - }, - "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": { - "is-number": "^7.0.0" - } - }, - "toggle-selection": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz", - "integrity": "sha1-bkWxJj8gF/oKzH2J14sVuL932jI=" - }, - "toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" - }, - "totalist": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/totalist/-/totalist-1.1.0.tgz", - "integrity": "sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g==" - }, - "tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" - }, - "traverse": { - "version": "0.6.6", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz", - "integrity": "sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc=" - }, - "trim": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", - "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=" - }, - "trim-trailing-lines": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.4.tgz", - "integrity": "sha512-rjUWSqnfTNrjbB9NQWfPMH/xRK1deHeGsHoVfpxJ++XeYXE0d6B1En37AHfw3jtfTU7dzMzZL2jjpe8Qb5gLIQ==" - }, - "trough": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz", - "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==" - }, - "tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" - }, - "type": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", - "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" - }, - "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==" - }, - "type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - } - }, - "typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "requires": { - "is-typedarray": "^1.0.0" - } - }, - "typescript": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.4.tgz", - "integrity": "sha512-VgYs2A2QIRuGphtzFV7aQJduJ2gyfTljngLzjpfW9FoYZF6xuw1W0vW9ghCKLfcWrCFxK81CSGRAvS1pn4fIUg==", - "dev": true - }, - "ua-parser-js": { - "version": "0.7.31", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.31.tgz", - "integrity": "sha512-qLK/Xe9E2uzmYI3qLeOmI0tEOt+TBBQyUIAh4aAgU05FVYzeZrKUdkAZfBNVGRaHVgV0TDkdEngJSw/SyQchkQ==" - }, - "unbox-primitive": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", - "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", - "requires": { - "function-bind": "^1.1.1", - "has-bigints": "^1.0.1", - "has-symbols": "^1.0.2", - "which-boxed-primitive": "^1.0.2" - } - }, - "unherit": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/unherit/-/unherit-1.1.3.tgz", - "integrity": "sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ==", - "requires": { - "inherits": "^2.0.0", - "xtend": "^4.0.0" - } - }, - "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==" - }, - "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==", - "requires": { - "unicode-canonical-property-names-ecmascript": "^2.0.0", - "unicode-property-aliases-ecmascript": "^2.0.0" - } - }, - "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==" - }, - "unicode-property-aliases-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", - "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==" - }, - "unified": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.0.tgz", - "integrity": "sha512-vx2Z0vY+a3YoTj8+pttM3tiJHCwY5UFbYdiWrwBEbHmK8pvsPj2rtAX2BFfgXen8T39CJWblWRDT4L5WGXtDdg==", - "requires": { - "bail": "^1.0.0", - "extend": "^3.0.0", - "is-buffer": "^2.0.0", - "is-plain-obj": "^2.0.0", - "trough": "^1.0.0", - "vfile": "^4.0.0" - } - }, - "unique-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", - "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", - "requires": { - "crypto-random-string": "^2.0.0" - } - }, - "unist-builder": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/unist-builder/-/unist-builder-2.0.3.tgz", - "integrity": "sha512-f98yt5pnlMWlzP539tPc4grGMsFaQQlP/vM396b00jngsiINumNmsY8rkXjfoi1c6QaM8nQ3vaGDuoKWbe/1Uw==" - }, - "unist-util-generated": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-1.1.6.tgz", - "integrity": "sha512-cln2Mm1/CZzN5ttGK7vkoGw+RZ8VcUH6BtGbq98DDtRGquAAOXig1mrBQYelOwMXYS8rK+vZDyyojSjp7JX+Lg==" - }, - "unist-util-is": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", - "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==" - }, - "unist-util-position": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-3.1.0.tgz", - "integrity": "sha512-w+PkwCbYSFw8vpgWD0v7zRCl1FpY3fjDSQ3/N/wNd9Ffa4gPi8+4keqt99N3XW6F99t/mUzp2xAhNmfKWp95QA==" - }, - "unist-util-remove": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unist-util-remove/-/unist-util-remove-2.1.0.tgz", - "integrity": "sha512-J8NYPyBm4baYLdCbjmf1bhPu45Cr1MWTm77qd9istEkzWpnN6O9tMsEbB2JhNnBCqGENRqEWomQ+He6au0B27Q==", - "requires": { - "unist-util-is": "^4.0.0" - } - }, - "unist-util-remove-position": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-2.0.1.tgz", - "integrity": "sha512-fDZsLYIe2uT+oGFnuZmy73K6ZxOPG/Qcm+w7jbEjaFcJgbQ6cqjs/eSPzXhsmGpAsWPkqZM9pYjww5QTn3LHMA==", - "requires": { - "unist-util-visit": "^2.0.0" - } - }, - "unist-util-stringify-position": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", - "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", - "requires": { - "@types/unist": "^2.0.2" - } - }, - "unist-util-visit": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz", - "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==", - "requires": { - "@types/unist": "^2.0.0", - "unist-util-is": "^4.0.0", - "unist-util-visit-parents": "^3.0.0" - } - }, - "unist-util-visit-parents": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", - "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", - "requires": { - "@types/unist": "^2.0.0", - "unist-util-is": "^4.0.0" - } - }, - "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" - }, - "unquote": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", - "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=" - }, - "update-notifier": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz", - "integrity": "sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==", - "requires": { - "boxen": "^5.0.0", - "chalk": "^4.1.0", - "configstore": "^5.0.1", - "has-yarn": "^2.1.0", - "import-lazy": "^2.1.0", - "is-ci": "^2.0.0", - "is-installed-globally": "^0.4.0", - "is-npm": "^5.0.0", - "is-yarn-global": "^0.3.0", - "latest-version": "^5.1.0", - "pupa": "^2.1.1", - "semver": "^7.3.4", - "semver-diff": "^3.1.1", - "xdg-basedir": "^4.0.0" - } - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "requires": { - "punycode": "^2.1.0" - } - }, - "url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", - "requires": { - "punycode": "1.3.2", - "querystring": "0.2.0" - }, - "dependencies": { - "punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" - } - } - }, - "url-loader": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-4.1.1.tgz", - "integrity": "sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==", - "requires": { - "loader-utils": "^2.0.0", - "mime-types": "^2.1.27", - "schema-utils": "^3.0.0" - } - }, - "url-parse": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", - "requires": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, - "url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", - "requires": { - "prepend-http": "^2.0.0" - } - }, - "use-composed-ref": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/use-composed-ref/-/use-composed-ref-1.2.1.tgz", - "integrity": "sha512-6+X1FLlIcjvFMAeAD/hcxDT8tmyrWnbSPMU0EnxQuDLIxokuFzWliXBiYZuGIx+mrAMLBw0WFfCkaPw8ebzAhw==" - }, - "use-isomorphic-layout-effect": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.1.tgz", - "integrity": "sha512-L7Evj8FGcwo/wpbv/qvSfrkHFtOpCzvM5yl2KVyDJoylVuSvzphiiasmjgQPttIGBAy2WKiBNR98q8w7PiNgKQ==" - }, - "use-latest": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/use-latest/-/use-latest-1.2.0.tgz", - "integrity": "sha512-d2TEuG6nSLKQLAfW3By8mKr8HurOlTkul0sOpxbClIv4SQ4iOd7BYr7VIzdbktUCnv7dua/60xzd8igMU6jmyw==", - "requires": { - "use-isomorphic-layout-effect": "^1.0.0" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, - "util.promisify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", - "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.2", - "has-symbols": "^1.0.1", - "object.getownpropertydescriptors": "^2.1.0" - } - }, - "utila": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", - "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=" - }, - "utility-types": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/utility-types/-/utility-types-3.10.0.tgz", - "integrity": "sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg==" - }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" - }, - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" - }, - "value-equal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz", - "integrity": "sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==" - }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" - }, - "vfile": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", - "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==", - "requires": { - "@types/unist": "^2.0.0", - "is-buffer": "^2.0.0", - "unist-util-stringify-position": "^2.0.0", - "vfile-message": "^2.0.0" - } - }, - "vfile-location": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-3.2.0.tgz", - "integrity": "sha512-aLEIZKv/oxuCDZ8lkJGhuhztf/BW4M+iHdCwglA/eWc+vtuRFJj8EtgceYFX4LRjOhCAAiNHsKGssC6onJ+jbA==" - }, - "vfile-message": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", - "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", - "requires": { - "@types/unist": "^2.0.0", - "unist-util-stringify-position": "^2.0.0" - } - }, - "wait-on": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-6.0.0.tgz", - "integrity": "sha512-tnUJr9p5r+bEYXPUdRseolmz5XqJTTj98JgOsfBn7Oz2dxfE2g3zw1jE+Mo8lopM3j3et/Mq1yW7kKX6qw7RVw==", - "requires": { - "axios": "^0.21.1", - "joi": "^17.4.0", - "lodash": "^4.17.21", - "minimist": "^1.2.5", - "rxjs": "^7.1.0" - } - }, - "watchpack": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz", - "integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==", - "requires": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - } - }, - "wbuf": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", - "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", - "requires": { - "minimalistic-assert": "^1.0.0" - } - }, - "web-namespaces": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-1.1.4.tgz", - "integrity": "sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw==" - }, - "web-streams-polyfill": { - "version": "4.0.0-beta.1", - "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-4.0.0-beta.1.tgz", - "integrity": "sha512-3ux37gEX670UUphBF9AMCq8XM6iQ8Ac6A+DSRRjDoRBm1ufCkaCDdNVbaqq60PsEkdNlLKrGtv/YBP4EJXqNtQ==" - }, - "webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" - }, - "webpack": { - "version": "5.65.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.65.0.tgz", - "integrity": "sha512-Q5or2o6EKs7+oKmJo7LaqZaMOlDWQse9Tm5l1WAfU/ujLGN5Pb0SqGeVkN/4bpPmEqEP5RnVhiqsOtWtUVwGRw==", - "requires": { - "@types/eslint-scope": "^3.7.0", - "@types/estree": "^0.0.50", - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/wasm-edit": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "acorn": "^8.4.1", - "acorn-import-assertions": "^1.7.6", - "browserslist": "^4.14.5", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.8.3", - "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.4", - "json-parse-better-errors": "^1.0.2", - "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.3.1", - "webpack-sources": "^3.2.2" - } - }, - "webpack-bundle-analyzer": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.5.0.tgz", - "integrity": "sha512-GUMZlM3SKwS8Z+CKeIFx7CVoHn3dXFcUAjT/dcZQQmfSZGvitPfMob2ipjai7ovFFqPvTqkEZ/leL4O0YOdAYQ==", - "requires": { - "acorn": "^8.0.4", - "acorn-walk": "^8.0.0", - "chalk": "^4.1.0", - "commander": "^7.2.0", - "gzip-size": "^6.0.0", - "lodash": "^4.17.20", - "opener": "^1.5.2", - "sirv": "^1.0.7", - "ws": "^7.3.1" - }, - "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==" - }, - "gzip-size": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", - "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", - "requires": { - "duplexer": "^0.1.2" - } - } - } - }, - "webpack-dev-middleware": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.0.tgz", - "integrity": "sha512-MouJz+rXAm9B1OTOYaJnn6rtD/lWZPy2ufQCH3BPs8Rloh/Du6Jze4p7AeLYHkVi0giJnYLaSGDC7S+GM9arhg==", - "requires": { - "colorette": "^2.0.10", - "memfs": "^3.2.2", - "mime-types": "^2.1.31", - "range-parser": "^1.2.1", - "schema-utils": "^4.0.0" - }, - "dependencies": { - "ajv": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.8.2.tgz", - "integrity": "sha512-x9VuX+R/jcFj1DHo/fCp99esgGDWiHENrKxaCENuCxpoMCmAt/COCGVDwA7kleEpEzJjDnvh3yGoOuLu0Dtllw==", - "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==" - }, - "range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" - }, - "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" - } - } - } - }, - "webpack-dev-server": { - "version": "4.7.2", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.7.2.tgz", - "integrity": "sha512-s6yEOSfPpB6g1T2+C5ZOUt5cQOMhjI98IVmmvMNb5cdiqHoxSUfACISHqU/wZy+q4ar/A9jW0pbNj7sa50XRVA==", - "requires": { - "@types/bonjour": "^3.5.9", - "@types/connect-history-api-fallback": "^1.3.5", - "@types/serve-index": "^1.9.1", - "@types/sockjs": "^0.3.33", - "@types/ws": "^8.2.2", - "ansi-html-community": "^0.0.8", - "bonjour": "^3.5.0", - "chokidar": "^3.5.2", - "colorette": "^2.0.10", - "compression": "^1.7.4", - "connect-history-api-fallback": "^1.6.0", - "default-gateway": "^6.0.3", - "del": "^6.0.0", - "express": "^4.17.1", - "graceful-fs": "^4.2.6", - "html-entities": "^2.3.2", - "http-proxy-middleware": "^2.0.0", - "ipaddr.js": "^2.0.1", - "open": "^8.0.9", - "p-retry": "^4.5.0", - "portfinder": "^1.0.28", - "schema-utils": "^4.0.0", - "selfsigned": "^1.10.11", - "serve-index": "^1.9.1", - "sockjs": "^0.3.21", - "spdy": "^4.0.2", - "strip-ansi": "^7.0.0", - "webpack-dev-middleware": "^5.3.0", - "ws": "^8.1.0" - }, - "dependencies": { - "ajv": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.8.2.tgz", - "integrity": "sha512-x9VuX+R/jcFj1DHo/fCp99esgGDWiHENrKxaCENuCxpoMCmAt/COCGVDwA7kleEpEzJjDnvh3yGoOuLu0Dtllw==", - "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" - } - }, - "ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==" - }, - "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==" - }, - "open": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", - "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", - "requires": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - } - }, - "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" - } - }, - "strip-ansi": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", - "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", - "requires": { - "ansi-regex": "^6.0.1" - } - }, - "ws": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.4.0.tgz", - "integrity": "sha512-IHVsKe2pjajSUIl4KYMQOdlyliovpEPquKkqbwswulszzI7r0SfQrxnXdWAEqOlDCLrVSJzo+O1hAwdog2sKSQ==" - } - } - }, - "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==", - "requires": { - "clone-deep": "^4.0.1", - "wildcard": "^2.0.0" - } - }, - "webpack-sources": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.2.tgz", - "integrity": "sha512-cp5qdmHnu5T8wRg2G3vZZHoJPN14aqQ89SyQ11NpGH5zEMDCclt49rzo+MaRazk7/UeILhAI+/sEtcM+7Fr0nw==" - }, - "webpackbar": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/webpackbar/-/webpackbar-5.0.2.tgz", - "integrity": "sha512-BmFJo7veBDgQzfWXl/wwYXr/VFus0614qZ8i9znqcl9fnEdiVkdbi0TedLQ6xAK92HZHDJ0QmyQ0fmuZPAgCYQ==", - "requires": { - "chalk": "^4.1.0", - "consola": "^2.15.3", - "pretty-time": "^1.1.0", - "std-env": "^3.0.1" - }, - "dependencies": { - "std-env": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.0.1.tgz", - "integrity": "sha512-mC1Ps9l77/97qeOZc+HrOL7TIaOboHqMZ24dGVQrlxFcpPpfCHpH+qfUT7Dz+6mlG8+JPA1KfBQo19iC/+Ngcw==" - } - } - }, - "websocket-driver": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", - "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", - "requires": { - "http-parser-js": ">=0.5.1", - "safe-buffer": ">=5.1.0", - "websocket-extensions": ">=0.1.1" - } - }, - "websocket-extensions": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", - "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==" - }, - "whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", - "requires": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "requires": { - "isexe": "^2.0.0" - } - }, - "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==", - "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" - } - }, - "widest-line": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", - "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", - "requires": { - "string-width": "^4.0.0" - } - }, - "wildcard": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", - "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==" - }, - "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": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.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==", - "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==" - } - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", - "requires": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - }, - "ws": { - "version": "7.5.6", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.6.tgz", - "integrity": "sha512-6GLgCqo2cy2A2rjCNFlxQS6ZljG/coZfZXclldI8FB/1G3CCI36Zd8xy2HrFVACi8tfk5XrgLQEk+P0Tnz9UcA==" - }, - "xdg-basedir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", - "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==" - }, - "xml": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/xml/-/xml-1.0.1.tgz", - "integrity": "sha1-eLpyAgApxbyHuKgaPPzXS0ovweU=" - }, - "xml-but-prettier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/xml-but-prettier/-/xml-but-prettier-1.0.1.tgz", - "integrity": "sha1-9aMyZ+1CzNTjVcYlV6XjmwH7QPM=", - "requires": { - "repeat-string": "^1.5.2" - } - }, - "xml-js": { - "version": "1.6.11", - "resolved": "https://registry.npmjs.org/xml-js/-/xml-js-1.6.11.tgz", - "integrity": "sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==", - "requires": { - "sax": "^1.2.4" - } - }, - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==" - }, - "yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" - }, - "zenscroll": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/zenscroll/-/zenscroll-4.0.2.tgz", - "integrity": "sha1-6NV3TRwHOKR7z6hynzcS4t7d6yU=" - }, - "zwitch": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz", - "integrity": "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==" - } - } -} diff --git a/docs/package.json b/docs/package.json index b321c3eccb982..96ff1e705bfa6 100644 --- a/docs/package.json +++ b/docs/package.json @@ -16,18 +16,19 @@ "typecheck": "tsc" }, "dependencies": { + "@algolia/client-search": "^4.13.0", "@ant-design/icons": "^4.7.0", "@docsearch/react": "^3.0.0", - "@docusaurus/core": "^2.0.0-beta.15", - "@docusaurus/plugin-client-redirects": "^2.0.0-beta.15", - "@docusaurus/preset-classic": "^2.0.0-beta.15", + "@docusaurus/core": "^2.0.0-beta.17", + "@docusaurus/plugin-client-redirects": "^2.0.0-beta.17", + "@docusaurus/preset-classic": "^2.0.0-beta.17", "@emotion/core": "^10.1.1", "@emotion/styled": "^10.0.27", - "@mdx-js/react": "^1.6.21", + "@mdx-js/react": "^1.6.22", "@saucelabs/theme-github-codeblock": "^0.1.1", "@superset-ui/style": "^0.14.23", "@svgr/webpack": "^5.5.0", - "antd": "^4.8.0", + "antd": "^4.19.3", "buffer": "^6.0.3", "clsx": "^1.1.1", "file-loader": "^6.2.0", @@ -37,13 +38,14 @@ "react-github-btn": "^1.2.0", "stream": "^0.0.2", "swagger-ui-react": "^4.1.2", - "theme-ui": "^0.3.1", "url-loader": "^4.1.1" }, "devDependencies": { - "@docusaurus/module-type-aliases": "^2.0.0-beta.15", + "@docusaurus/module-type-aliases": "^2.0.0-beta.17", "@tsconfig/docusaurus": "^1.0.4", - "typescript": "^4.3.5" + "@types/react": "^17.0.42", + "typescript": "^4.3.5", + "webpack": "^5.61.0" }, "browserslist": { "production": [ diff --git a/docs/src/pages/community.tsx b/docs/src/pages/community.tsx index cb8314b9c2396..1cd9830dbf261 100644 --- a/docs/src/pages/community.tsx +++ b/docs/src/pages/community.tsx @@ -23,7 +23,7 @@ import Layout from '@theme/Layout'; const links = [ [ - 'https://join.slack.com/t/apache-superset/shared_invite/zt-uxbh5g36-AISUtHbzOXcu0BIj7kgUaw', + 'https://join.slack.com/t/apache-superset/shared_invite/zt-16jvzmoi8-sI7jKWp~xc2zYRe~NqiY9Q', 'Slack', 'interact with other Superset users and community members', ], diff --git a/docs/static/resources/openapi.json b/docs/static/resources/openapi.json index 1e8c6129f1d44..bb9608749ff08 100644 --- a/docs/static/resources/openapi.json +++ b/docs/static/resources/openapi.json @@ -97,7 +97,12 @@ "properties": { "annotationType": { "description": "Type of annotation layer", - "enum": ["FORMULA", "INTERVAL", "EVENT", "TIME_SERIES"], + "enum": [ + "FORMULA", + "INTERVAL", + "EVENT", + "TIME_SERIES" + ], "type": "string" }, "color": { @@ -128,7 +133,12 @@ }, "opacity": { "description": "Opacity of layer", - "enum": ["", "opacityLow", "opacityMedium", "opacityHigh"], + "enum": [ + "", + "opacityLow", + "opacityMedium", + "opacityHigh" + ], "nullable": true, "type": "string" }, @@ -144,18 +154,33 @@ "description": "Should the layer be shown", "type": "boolean" }, + "showLabel": { + "description": "Should the label always be shown", + "nullable": true, + "type": "boolean" + }, "showMarkers": { "description": "Should markers be shown. Only applies to line annotations.", "type": "boolean" }, "sourceType": { "description": "Type of source for annotation data", - "enum": ["", "line", "NATIVE", "table"], + "enum": [ + "", + "line", + "NATIVE", + "table" + ], "type": "string" }, "style": { "description": "Line style. Only applies to time-series annotations", - "enum": ["dashed", "dotted", "solid", "longDashed"], + "enum": [ + "dashed", + "dotted", + "solid", + "longDashed" + ], "type": "string" }, "timeColumn": { @@ -178,7 +203,12 @@ "type": "number" } }, - "required": ["name", "show", "showMarkers", "value"], + "required": [ + "name", + "show", + "showMarkers", + "value" + ], "type": "object" }, "AnnotationLayerRestApi.get": { @@ -202,7 +232,7 @@ "AnnotationLayerRestApi.get_list": { "properties": { "changed_by": { - "$ref": "#/components/schemas/Meta4" + "$ref": "#/components/schemas/AnnotationLayerRestApi.get_list.User" }, "changed_on": { "format": "date-time", @@ -213,7 +243,7 @@ "readOnly": true }, "created_by": { - "$ref": "#/components/schemas/Meta3" + "$ref": "#/components/schemas/AnnotationLayerRestApi.get_list.User1" }, "created_on": { "format": "date-time", @@ -236,6 +266,40 @@ }, "type": "object" }, + "AnnotationLayerRestApi.get_list.User": { + "properties": { + "first_name": { + "maxLength": 64, + "type": "string" + }, + "last_name": { + "maxLength": 64, + "type": "string" + } + }, + "required": [ + "first_name", + "last_name" + ], + "type": "object" + }, + "AnnotationLayerRestApi.get_list.User1": { + "properties": { + "first_name": { + "maxLength": 64, + "type": "string" + }, + "last_name": { + "maxLength": 64, + "type": "string" + } + }, + "required": [ + "first_name", + "last_name" + ], + "type": "object" + }, "AnnotationLayerRestApi.post": { "properties": { "descr": { @@ -250,6 +314,9 @@ "type": "string" } }, + "required": [ + "name" + ], "type": "object" }, "AnnotationLayerRestApi.put": { @@ -283,7 +350,7 @@ "type": "string" }, "layer": { - "$ref": "#/components/schemas/Meta2" + "$ref": "#/components/schemas/AnnotationRestApi.get.AnnotationLayer" }, "long_descr": { "nullable": true, @@ -300,19 +367,35 @@ "type": "string" } }, - "required": ["layer"], + "required": [ + "layer" + ], + "type": "object" + }, + "AnnotationRestApi.get.AnnotationLayer": { + "properties": { + "id": { + "format": "int32", + "type": "integer" + }, + "name": { + "maxLength": 250, + "nullable": true, + "type": "string" + } + }, "type": "object" }, "AnnotationRestApi.get_list": { "properties": { "changed_by": { - "$ref": "#/components/schemas/Meta1" + "$ref": "#/components/schemas/AnnotationRestApi.get_list.User" }, "changed_on_delta_humanized": { "readOnly": true }, "created_by": { - "$ref": "#/components/schemas/Meta" + "$ref": "#/components/schemas/AnnotationRestApi.get_list.User1" }, "end_dttm": { "format": "date-time", @@ -340,6 +423,38 @@ }, "type": "object" }, + "AnnotationRestApi.get_list.User": { + "properties": { + "first_name": { + "maxLength": 64, + "type": "string" + }, + "id": { + "format": "int32", + "type": "integer" + } + }, + "required": [ + "first_name" + ], + "type": "object" + }, + "AnnotationRestApi.get_list.User1": { + "properties": { + "first_name": { + "maxLength": 64, + "type": "string" + }, + "id": { + "format": "int32", + "type": "integer" + } + }, + "required": [ + "first_name" + ], + "type": "object" + }, "AnnotationRestApi.post": { "properties": { "end_dttm": { @@ -369,6 +484,11 @@ "type": "string" } }, + "required": [ + "end_dttm", + "short_descr", + "start_dttm" + ], "type": "object" }, "AnnotationRestApi.put": { @@ -380,10 +500,12 @@ }, "json_metadata": { "description": "JSON metadata", + "nullable": true, "type": "string" }, "long_descr": { "description": "A long description", + "nullable": true, "type": "string" }, "short_descr": { @@ -476,7 +598,14 @@ "properties": { "aggregate": { "description": "Aggregation operator. Only required for simple expression types.", - "enum": ["AVG", "COUNT", "COUNT_DISTINCT", "MAX", "MIN", "SUM"], + "enum": [ + "AVG", + "COUNT", + "COUNT_DISTINCT", + "MAX", + "MIN", + "SUM" + ], "type": "string" }, "column": { @@ -484,7 +613,10 @@ }, "expressionType": { "description": "Simple or SQL metric", - "enum": ["SIMPLE", "SQL"], + "enum": [ + "SIMPLE", + "SQL" + ], "example": "SQL", "type": "string" }, @@ -493,6 +625,10 @@ "example": true, "type": "boolean" }, + "isExtra": { + "description": "Indicates if the filter has been added by a filter component as opposed to being a part of the original query.", + "type": "boolean" + }, "label": { "description": "Label for the metric. Is automatically generated unless hasCustomLabel is true, in which case label must be defined.", "example": "Weighted observations", @@ -507,9 +643,16 @@ "description": "The metric as defined by a SQL aggregate expression. Only required for SQL expression type.", "example": "SUM(weight * observations) / SUM(weight)", "type": "string" + }, + "timeGrain": { + "description": "Optional time grain for temporal filters", + "example": "PT1M", + "type": "string" } }, - "required": ["expressionType"], + "required": [ + "expressionType" + ], "type": "object" }, "ChartDataAggregateOptionsSchema": { @@ -567,22 +710,32 @@ "type": "array" }, "metrics": { - "description": "Aggregate expressions. Metrics can be passed as both references to datasource metrics (strings), or ad-hoc metricswhich are defined only within the query object. See `ChartDataAdhocMetricSchema` for the structure of ad-hoc metrics.", + "description": "Aggregate expressions. Metrics can be passed as both references to datasource metrics (strings), or ad-hoc metricswhich are defined only within the query object. See `ChartDataAdhocMetricSchema` for the structure of ad-hoc metrics. When metrics is undefined or null, the query is executed without a groupby. However, when metrics is an array (length >= 0), a groupby clause is added to the query.", "items": {}, + "nullable": true, "type": "array" }, "percentiles": { "description": "Upper and lower percentiles for percentile whisker type.", - "example": [1, 99] + "example": [ + 1, + 99 + ] }, "whisker_type": { "description": "Whisker type. Any numpy function will work.", - "enum": ["tukey", "min/max", "percentile"], + "enum": [ + "tukey", + "min/max", + "percentile" + ], "example": "tukey", "type": "string" } }, - "required": ["whisker_type"], + "required": [ + "whisker_type" + ], "type": "object" }, "ChartDataColumn": { @@ -604,12 +757,17 @@ "properties": { "orientation": { "description": "Should cell values be calculated across the row or column.", - "enum": ["row", "column"], + "enum": [ + "row", + "column" + ], "example": "row", "type": "string" } }, - "required": ["orientation"], + "required": [ + "orientation" + ], "type": "object" }, "ChartDataDatasource": { @@ -621,11 +779,16 @@ }, "type": { "description": "Datasource type", - "enum": ["druid", "table"], + "enum": [ + "druid", + "table" + ], "type": "string" } }, - "required": ["id"], + "required": [ + "id" + ], "type": "object" }, "ChartDataExtras": { @@ -648,12 +811,18 @@ }, "relative_end": { "description": "End time for relative time deltas. Default: `config[\"DEFAULT_RELATIVE_START_TIME\"]`", - "enum": ["today", "now"], + "enum": [ + "today", + "now" + ], "type": "string" }, "relative_start": { "description": "Start time for relative time deltas. Default: `config[\"DEFAULT_RELATIVE_START_TIME\"]`", - "enum": ["today", "now"], + "enum": [ + "today", + "now" + ], "type": "string" }, "time_grain_sqla": { @@ -693,10 +862,18 @@ "ChartDataFilter": { "properties": { "col": { - "description": "The column to filter.", - "example": "country", + "description": "The column to filter by. Can be either a string (physical or saved expression) or an object (adhoc column)", + "example": "country" + }, + "grain": { + "description": "Optional time grain for temporal filters", + "example": "PT1M", "type": "string" }, + "isExtra": { + "description": "Indicates if the filter has been added by a filter component as opposed to being a part of the original query.", + "type": "boolean" + }, "op": { "description": "The comparison operator.", "enum": [ @@ -721,10 +898,17 @@ }, "val": { "description": "The value or values to compare against. Can be a string, integer, decimal or list, depending on the operator.", - "example": ["China", "France", "Japan"] + "example": [ + "China", + "France", + "Japan" + ] } }, - "required": ["col", "op"], + "required": [ + "col", + "op" + ], "type": "object" }, "ChartDataGeodeticParseOptionsSchema": { @@ -746,7 +930,11 @@ "type": "string" } }, - "required": ["geodetic", "latitude", "longitude"], + "required": [ + "geodetic", + "latitude", + "longitude" + ], "type": "object" }, "ChartDataGeohashDecodeOptionsSchema": { @@ -764,7 +952,11 @@ "type": "string" } }, - "required": ["geohash", "latitude", "longitude"], + "required": [ + "geohash", + "latitude", + "longitude" + ], "type": "object" }, "ChartDataGeohashEncodeOptionsSchema": { @@ -782,7 +974,11 @@ "type": "string" } }, - "required": ["geohash", "latitude", "longitude"], + "required": [ + "geohash", + "latitude", + "longitude" + ], "type": "object" }, "ChartDataPivotOptionsSchema": { @@ -805,8 +1001,8 @@ "type": "string" }, "columns": { + "description": "Columns to group by on the table columns", "items": { - "description": "Columns to group by on the table columns", "type": "string" }, "type": "array" @@ -848,7 +1044,9 @@ "select", "sort", "diff", - "compare" + "compare", + "resample", + "flatten" ], "example": "aggregate", "type": "string" @@ -869,12 +1067,17 @@ } } }, - "groupby": ["country", "gender"] + "groupby": [ + "country", + "gender" + ] }, "type": "object" } }, - "required": ["operation"], + "required": [ + "operation" + ], "type": "object" }, "ChartDataProphetOptionsSchema": { @@ -931,7 +1134,11 @@ "example": false } }, - "required": ["confidence_interval", "periods", "time_grain"], + "required": [ + "confidence_interval", + "periods", + "time_grain" + ], "type": "object" }, "ChartDataQueryContextSchema": { @@ -943,6 +1150,9 @@ "description": "Should the queries be forced to load from the source. Default: `false`", "type": "boolean" }, + "form_data": { + "nullable": true + }, "queries": { "items": { "$ref": "#/components/schemas/ChartDataQueryObject" @@ -979,9 +1189,7 @@ }, "columns": { "description": "Columns which to select in the query.", - "items": { - "type": "string" - }, + "items": {}, "nullable": true, "type": "array" }, @@ -1025,10 +1233,8 @@ "type": "string" }, "groupby": { - "items": { - "description": "Columns by which to group the query.", - "type": "string" - }, + "description": "Columns by which to group the query. This field is deprecated, use `columns` instead.", + "items": {}, "nullable": true, "type": "array" }, @@ -1069,8 +1275,14 @@ "orderby": { "description": "Expects a list of lists where the first element is the column name which to sort by, and the second element is a boolean.", "example": [ - ["my_col_1", false], - ["my_col_2", true] + [ + "my_col_1", + false + ], + [ + "my_col_2", + true + ] ], "items": {}, "nullable": true, @@ -1106,6 +1318,22 @@ "nullable": true, "type": "integer" }, + "series_columns": { + "description": "Columns to use when limiting series count. All columns must be present in the `columns` property. Requires `series_limit` and `series_limit_metric` to be set.", + "items": {}, + "nullable": true, + "type": "array" + }, + "series_limit": { + "description": "Maximum number of series. Requires `series` and `series_limit_metric` to be set.", + "format": "int32", + "nullable": true, + "type": "integer" + }, + "series_limit_metric": { + "description": "Metric used to limit timeseries queries by. Requires `series` and `series_limit` to be set.", + "nullable": true + }, "time_offsets": { "items": { "type": "string" @@ -1125,13 +1353,13 @@ "type": "string" }, "timeseries_limit": { - "description": "Maximum row count for timeseries queries. Default: `0`", + "description": "Maximum row count for timeseries queries. This field is deprecated, use `series_limit` instead.Default: `0`", "format": "int32", "nullable": true, "type": "integer" }, "timeseries_limit_metric": { - "description": "Metric used to limit timeseries queries by.", + "description": "Metric used to limit timeseries queries by. This field is deprecated, use `series_limit_metric` instead.", "nullable": true }, "url_params": { @@ -1187,6 +1415,21 @@ "nullable": true, "type": "string" }, + "colnames": { + "description": "A list of column names", + "items": { + "type": "string" + }, + "type": "array" + }, + "coltypes": { + "description": "A list of generic data types of each column", + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, "data": { "description": "A list with results", "items": { @@ -1199,6 +1442,11 @@ "nullable": true, "type": "string" }, + "from_dttm": { + "format": "int32", + "nullable": true, + "type": "integer" + }, "is_cached": { "description": "Is the result cached", "type": "boolean" @@ -1235,6 +1483,11 @@ "timed_out" ], "type": "string" + }, + "to_dttm": { + "format": "int32", + "nullable": true, + "type": "integer" } }, "required": [ @@ -1258,288 +1511,113 @@ }, "type": "object" }, - "ChartDataRollingOptionsSchema": { + "ChartDataRestApi.get": { "properties": { - "center": { - "description": "Should the label be at the center of the window. Default: `false`", - "example": false, - "type": "boolean" - }, - "min_periods": { - "description": "The minimum amount of periods required for a row to be included in the result set.", - "example": 7, + "cache_timeout": { "format": "int32", + "nullable": true, "type": "integer" }, - "rolling_type": { - "description": "Type of rolling window. Any numpy function will work.", - "enum": [ - "average", - "argmin", - "argmax", - "cumsum", - "cumprod", - "max", - "mean", - "median", - "nansum", - "nanmin", - "nanmax", - "nanmean", - "nanmedian", - "nanpercentile", - "min", - "percentile", - "prod", - "product", - "std", - "sum", - "var" - ], - "example": "percentile", + "certification_details": { + "nullable": true, "type": "string" }, - "rolling_type_options": { - "example": {}, - "type": "object" + "certified_by": { + "nullable": true, + "type": "string" }, - "win_type": { - "description": "Type of window function. See [SciPy window functions](https://docs.scipy.org/doc/scipy/reference/signal.windows.html#module-scipy.signal.windows) for more details. Some window functions require passing additional parameters to `rolling_type_options`. For instance, to use `gaussian`, the parameter `std` needs to be provided.", - "enum": [ - "boxcar", - "triang", - "blackman", - "hamming", - "bartlett", - "parzen", - "bohman", - "blackmanharris", - "nuttall", - "barthann", - "kaiser", - "gaussian", - "general_gaussian", - "slepian", - "exponential" - ], + "dashboards": { + "$ref": "#/components/schemas/ChartDataRestApi.get.Dashboard" + }, + "description": { + "nullable": true, "type": "string" }, - "window": { - "description": "Size of the rolling window in days.", - "example": 7, - "format": "int32", - "type": "integer" - } - }, - "required": ["rolling_type", "window"], - "type": "object" - }, - "ChartDataSelectOptionsSchema": { - "properties": { - "columns": { - "description": "Columns which to select from the input data, in the desired order. If columns are renamed, the original column name should be referenced here.", - "example": ["country", "gender", "age"], - "items": { - "type": "string" - }, - "type": "array" - }, - "exclude": { - "description": "Columns to exclude from selection.", - "example": ["my_temp_column"], - "items": { - "type": "string" - }, - "type": "array" - }, - "rename": { - "description": "columns which to rename, mapping source column to target column. For instance, `{'y': 'y2'}` will rename the column `y` to `y2`.", - "example": [ - { - "age": "average_age" - } - ], - "items": { - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "ChartDataSortOptionsSchema": { - "properties": { - "aggregates": { - "description": "The keys are the name of the aggregate column to be created, and the values specify the details of how to apply the aggregation. If an operator requires additional options, these can be passed here to be unpacked in the operator call. The following numpy operators are supported: average, argmin, argmax, cumsum, cumprod, max, mean, median, nansum, nanmin, nanmax, nanmean, nanmedian, min, percentile, prod, product, std, sum, var. Any options required by the operator can be passed to the `options` object.\n\nIn the example, a new column `first_quantile` is created based on values in the column `my_col` using the `percentile` operator with the `q=0.25` parameter.", - "example": { - "first_quantile": { - "column": "my_col", - "operator": "percentile", - "options": { - "q": 0.25 - } - } - }, - "type": "object" - }, - "columns": { - "description": "columns by by which to sort. The key specifies the column name, value specifies if sorting in ascending order.", - "example": { - "country": true, - "gender": false - }, - "type": "object" - } - }, - "required": ["columns"], - "type": "object" - }, - "ChartEntityResponseSchema": { - "properties": { - "cache_timeout": { - "description": "Duration (in seconds) of the caching timeout for this chart. Note this defaults to the datasource/table timeout if undefined.", - "format": "int32", - "type": "integer" - }, - "changed_on": { - "description": "The ISO date that the chart was last changed.", - "type": "string" - }, - "datasource": { - "description": "The datasource name.", - "type": "string" - }, - "description": { - "description": "A description of the chart propose.", - "type": "string" + "owners": { + "$ref": "#/components/schemas/ChartDataRestApi.get.User" }, - "description_markeddown": { - "description": "Sanitized HTML version of the chart description.", + "params": { + "nullable": true, "type": "string" }, - "form_data": { - "description": "Form data from the Explore controls used to form the chart's data query.", - "type": "object" - }, - "modified": { + "query_context": { + "nullable": true, "type": "string" }, - "slice_id": { - "format": "int32", - "type": "integer" - }, "slice_name": { - "description": "The name of the chart.", + "maxLength": 250, + "nullable": true, "type": "string" }, - "slice_url": { - "description": "The URL of the chart.", + "viz_type": { + "maxLength": 250, + "nullable": true, "type": "string" } }, "type": "object" }, - "ChartFavStarResponseResult": { + "ChartDataRestApi.get.Dashboard": { "properties": { - "id": { - "description": "The Chart id", - "format": "int32", - "type": "integer" + "dashboard_title": { + "maxLength": 500, + "nullable": true, + "type": "string" }, - "value": { - "description": "The FaveStar value", - "type": "boolean" - } - }, - "type": "object" - }, - "ChartGetDatasourceObjectDataResponse": { - "properties": { - "datasource_id": { - "description": "The datasource identifier", + "id": { "format": "int32", "type": "integer" }, - "datasource_type": { - "description": "The datasource type", - "format": "int32", - "type": "integer" + "json_metadata": { + "nullable": true, + "type": "string" } }, "type": "object" }, - "ChartGetDatasourceObjectResponse": { + "ChartDataRestApi.get.User": { "properties": { - "label": { - "description": "The name of the datasource", + "first_name": { + "maxLength": 64, "type": "string" }, - "value": { - "$ref": "#/components/schemas/ChartGetDatasourceObjectDataResponse" - } - }, - "type": "object" - }, - "ChartGetDatasourceResponseSchema": { - "properties": { - "count": { - "description": "The total number of datasources", + "id": { "format": "int32", "type": "integer" }, - "result": { - "$ref": "#/components/schemas/ChartGetDatasourceObjectResponse" + "last_name": { + "maxLength": 64, + "type": "string" + }, + "username": { + "maxLength": 64, + "type": "string" } }, + "required": [ + "first_name", + "last_name", + "username" + ], "type": "object" }, - "ChartRestApi.get": { + "ChartDataRestApi.get_list": { "properties": { "cache_timeout": { "format": "int32", "nullable": true, "type": "integer" }, - "dashboards": { - "$ref": "#/components/schemas/Meta9" - }, - "description": { - "nullable": true, - "type": "string" - }, - "owners": { - "$ref": "#/components/schemas/Meta10" - }, - "params": { - "nullable": true, - "type": "string" - }, - "query_context": { - "nullable": true, - "type": "string" - }, - "slice_name": { - "maxLength": 250, + "certification_details": { "nullable": true, "type": "string" }, - "viz_type": { - "maxLength": 250, + "certified_by": { "nullable": true, "type": "string" - } - }, - "type": "object" - }, - "ChartRestApi.get_list": { - "properties": { - "cache_timeout": { - "format": "int32", - "nullable": true, - "type": "integer" }, "changed_by": { - "$ref": "#/components/schemas/Meta8" + "$ref": "#/components/schemas/ChartDataRestApi.get_list.User1" }, "changed_by_name": { "readOnly": true @@ -1554,7 +1632,7 @@ "readOnly": true }, "created_by": { - "$ref": "#/components/schemas/Meta5" + "$ref": "#/components/schemas/ChartDataRestApi.get_list.User2" }, "datasource_id": { "format": "int32", @@ -1586,8 +1664,16 @@ "format": "int32", "type": "integer" }, + "last_saved_at": { + "format": "date-time", + "nullable": true, + "type": "string" + }, + "last_saved_by": { + "$ref": "#/components/schemas/ChartDataRestApi.get_list.User" + }, "owners": { - "$ref": "#/components/schemas/Meta7" + "$ref": "#/components/schemas/ChartDataRestApi.get_list.User3" }, "params": { "nullable": true, @@ -1599,7 +1685,7 @@ "type": "string" }, "table": { - "$ref": "#/components/schemas/Meta6" + "$ref": "#/components/schemas/ChartDataRestApi.get_list.SqlaTable" }, "thumbnail_url": { "readOnly": true @@ -1615,85 +1701,125 @@ }, "type": "object" }, - "ChartRestApi.post": { + "ChartDataRestApi.get_list.SqlaTable": { "properties": { - "cache_timeout": { - "description": "Duration (in seconds) of the caching timeout for this chart. Note this defaults to the datasource/table timeout if undefined.", - "format": "int32", - "nullable": true, - "type": "integer" - }, - "dashboards": { - "items": { - "description": "A list of dashboards to include this new chart to.", - "format": "int32", - "type": "integer" - }, - "type": "array" - }, - "datasource_id": { - "description": "The id of the dataset/datasource this new chart will use. A complete datasource identification needs `datasouce_id` and `datasource_type`.", - "format": "int32", - "type": "integer" - }, - "datasource_name": { - "description": "The datasource name.", - "nullable": true, - "type": "string" - }, - "datasource_type": { - "description": "The type of dataset/datasource identified on `datasource_id`.", - "enum": ["druid", "table", "view"], - "type": "string" - }, - "description": { - "description": "A description of the chart propose.", - "nullable": true, - "type": "string" - }, - "owners": { - "items": { - "description": "Owner are users ids allowed to delete or change this chart. If left empty you will be one of the owners of the chart.", - "format": "int32", - "type": "integer" - }, - "type": "array" - }, - "params": { - "description": "Parameters are generated dynamically when clicking the save or overwrite button in the explore view. This JSON object for power users who may want to alter specific parameters.", - "nullable": true, - "type": "string" - }, - "query_context": { - "description": "The query context represents the queries that need to run in order to generate the data the visualization, and in what format the data should be returned.", + "default_endpoint": { "nullable": true, "type": "string" }, - "slice_name": { - "description": "The name of the chart.", - "maxLength": 250, - "minLength": 1, - "type": "string" - }, - "viz_type": { - "description": "The type of chart visualization used.", - "example": ["bar", "line_multi", "area", "table"], + "table_name": { "maxLength": 250, - "minLength": 0, "type": "string" } }, - "required": ["datasource_id", "datasource_type", "slice_name"], + "required": [ + "table_name" + ], "type": "object" }, - "ChartRestApi.put": { + "ChartDataRestApi.get_list.User": { "properties": { - "cache_timeout": { - "description": "Duration (in seconds) of the caching timeout for this chart. Note this defaults to the datasource/table timeout if undefined.", + "first_name": { + "maxLength": 64, + "type": "string" + }, + "id": { + "format": "int32", + "type": "integer" + }, + "last_name": { + "maxLength": 64, + "type": "string" + } + }, + "required": [ + "first_name", + "last_name" + ], + "type": "object" + }, + "ChartDataRestApi.get_list.User1": { + "properties": { + "first_name": { + "maxLength": 64, + "type": "string" + }, + "last_name": { + "maxLength": 64, + "type": "string" + } + }, + "required": [ + "first_name", + "last_name" + ], + "type": "object" + }, + "ChartDataRestApi.get_list.User2": { + "properties": { + "first_name": { + "maxLength": 64, + "type": "string" + }, + "id": { + "format": "int32", + "type": "integer" + }, + "last_name": { + "maxLength": 64, + "type": "string" + } + }, + "required": [ + "first_name", + "last_name" + ], + "type": "object" + }, + "ChartDataRestApi.get_list.User3": { + "properties": { + "first_name": { + "maxLength": 64, + "type": "string" + }, + "id": { + "format": "int32", + "type": "integer" + }, + "last_name": { + "maxLength": 64, + "type": "string" + }, + "username": { + "maxLength": 64, + "type": "string" + } + }, + "required": [ + "first_name", + "last_name", + "username" + ], + "type": "object" + }, + "ChartDataRestApi.post": { + "properties": { + "cache_timeout": { + "description": "Duration (in seconds) of the caching timeout for this chart. Note this defaults to the datasource/table timeout if undefined.", "format": "int32", "nullable": true, "type": "integer" }, + "certification_details": { + "description": "Details of the certification", + "nullable": true, + "type": "string" + }, + "certified_by": { + "description": "Person or group that has certified this chart", + "nullable": true, + "type": "string" + }, "dashboards": { "items": { "description": "A list of dashboards to include this new chart to.", @@ -1705,13 +1831,20 @@ "datasource_id": { "description": "The id of the dataset/datasource this new chart will use. A complete datasource identification needs `datasouce_id` and `datasource_type`.", "format": "int32", - "nullable": true, "type": "integer" }, + "datasource_name": { + "description": "The datasource name.", + "nullable": true, + "type": "string" + }, "datasource_type": { "description": "The type of dataset/datasource identified on `datasource_id`.", - "enum": ["druid", "table", "view"], - "nullable": true, + "enum": [ + "druid", + "table", + "view" + ], "type": "string" }, "description": { @@ -1719,6 +1852,14 @@ "nullable": true, "type": "string" }, + "external_url": { + "nullable": true, + "type": "string" + }, + "is_managed_externally": { + "nullable": true, + "type": "boolean" + }, "owners": { "items": { "description": "Owner are users ids allowed to delete or change this chart. If left empty you will be one of the owners of the chart.", @@ -1737,1139 +1878,1277 @@ "nullable": true, "type": "string" }, + "query_context_generation": { + "description": "The query context generation represents whether the query_contextis user generated or not so that it does not update user modfiedstate.", + "nullable": true, + "type": "boolean" + }, "slice_name": { "description": "The name of the chart.", "maxLength": 250, - "minLength": 0, - "nullable": true, + "minLength": 1, "type": "string" }, "viz_type": { "description": "The type of chart visualization used.", - "example": ["bar", "line_multi", "area", "table"], + "example": [ + "bar", + "line_multi", + "area", + "table" + ], "maxLength": 250, "minLength": 0, - "nullable": true, "type": "string" } }, + "required": [ + "datasource_id", + "datasource_type", + "slice_name" + ], "type": "object" }, - "CssTemplateRestApi.get": { + "ChartDataRestApi.put": { "properties": { - "created_by": { - "$ref": "#/components/schemas/Meta13" - }, - "css": { - "nullable": true, - "type": "string" - }, - "id": { + "cache_timeout": { + "description": "Duration (in seconds) of the caching timeout for this chart. Note this defaults to the datasource/table timeout if undefined.", "format": "int32", + "nullable": true, "type": "integer" }, - "template_name": { - "maxLength": 250, + "certification_details": { + "description": "Details of the certification", "nullable": true, "type": "string" - } - }, - "type": "object" - }, - "CssTemplateRestApi.get_list": { - "properties": { - "changed_by": { - "$ref": "#/components/schemas/Meta12" - }, - "changed_on_delta_humanized": { - "readOnly": true }, - "created_by": { - "$ref": "#/components/schemas/Meta11" - }, - "created_on": { - "format": "date-time", + "certified_by": { + "description": "Person or group that has certified this chart", "nullable": true, "type": "string" }, - "css": { - "nullable": true, - "type": "string" + "dashboards": { + "items": { + "description": "A list of dashboards to include this new chart to.", + "format": "int32", + "type": "integer" + }, + "type": "array" }, - "id": { + "datasource_id": { + "description": "The id of the dataset/datasource this new chart will use. A complete datasource identification needs `datasouce_id` and `datasource_type`.", "format": "int32", + "nullable": true, "type": "integer" }, - "template_name": { - "maxLength": 250, - "nullable": true, - "type": "string" - } - }, - "type": "object" - }, - "CssTemplateRestApi.post": { - "properties": { - "css": { + "datasource_type": { + "description": "The type of dataset/datasource identified on `datasource_id`.", + "enum": [ + "druid", + "table", + "view" + ], "nullable": true, "type": "string" }, - "template_name": { - "maxLength": 250, - "nullable": true, - "type": "string" - } - }, - "type": "object" - }, - "CssTemplateRestApi.put": { - "properties": { - "css": { + "description": { + "description": "A description of the chart propose.", "nullable": true, "type": "string" }, - "template_name": { - "maxLength": 250, + "external_url": { "nullable": true, "type": "string" - } - }, - "type": "object" - }, - "DashboardDatasetSchema": { - "properties": { - "cache_timeout": { - "format": "int32", - "type": "integer" }, - "column_formats": { - "type": "object" + "is_managed_externally": { + "nullable": true, + "type": "boolean" }, - "column_types": { + "owners": { "items": { + "description": "Owner are users ids allowed to delete or change this chart. If left empty you will be one of the owners of the chart.", "format": "int32", "type": "integer" }, "type": "array" }, - "columns": { - "items": { - "type": "object" - }, - "type": "array" - }, - "database": { - "$ref": "#/components/schemas/Database" - }, - "datasource_name": { - "type": "string" - }, - "default_endpoint": { - "type": "string" - }, - "edit_url": { + "params": { + "description": "Parameters are generated dynamically when clicking the save or overwrite button in the explore view. This JSON object for power users who may want to alter specific parameters.", + "nullable": true, "type": "string" }, - "fetch_values_predicate": { + "query_context": { + "description": "The query context represents the queries that need to run in order to generate the data the visualization, and in what format the data should be returned.", + "nullable": true, "type": "string" }, - "filter_select": { - "type": "boolean" - }, - "filter_select_enabled": { + "query_context_generation": { + "description": "The query context generation represents whether the query_contextis user generated or not so that it does not update user modfiedstate.", + "nullable": true, "type": "boolean" }, - "granularity_sqla": { - "items": { - "items": { - "type": "string" - }, - "type": "array" - }, - "type": "array" + "slice_name": { + "description": "The name of the chart.", + "maxLength": 250, + "minLength": 0, + "nullable": true, + "type": "string" }, - "health_check_message": { + "viz_type": { + "description": "The type of chart visualization used.", + "example": [ + "bar", + "line_multi", + "area", + "table" + ], + "maxLength": 250, + "minLength": 0, + "nullable": true, "type": "string" + } + }, + "type": "object" + }, + "ChartDataRollingOptionsSchema": { + "properties": { + "center": { + "description": "Should the label be at the center of the window. Default: `false`", + "example": false, + "type": "boolean" }, - "id": { + "min_periods": { + "description": "The minimum amount of periods required for a row to be included in the result set.", + "example": 7, "format": "int32", "type": "integer" }, - "is_sqllab_view": { - "type": "boolean" - }, - "main_dttm_col": { + "rolling_type": { + "description": "Type of rolling window. Any numpy function will work.", + "enum": [ + "average", + "argmin", + "argmax", + "cumsum", + "cumprod", + "max", + "mean", + "median", + "nansum", + "nanmin", + "nanmax", + "nanmean", + "nanmedian", + "nanpercentile", + "min", + "percentile", + "prod", + "product", + "std", + "sum", + "var" + ], + "example": "percentile", "type": "string" }, - "metrics": { - "items": { - "type": "object" - }, - "type": "array" + "rolling_type_options": { + "example": {}, + "type": "object" }, - "name": { + "win_type": { + "description": "Type of window function. See [SciPy window functions](https://docs.scipy.org/doc/scipy/reference/signal.windows.html#module-scipy.signal.windows) for more details. Some window functions require passing additional parameters to `rolling_type_options`. For instance, to use `gaussian`, the parameter `std` needs to be provided.", + "enum": [ + "boxcar", + "triang", + "blackman", + "hamming", + "bartlett", + "parzen", + "bohman", + "blackmanharris", + "nuttall", + "barthann", + "kaiser", + "gaussian", + "general_gaussian", + "slepian", + "exponential" + ], "type": "string" }, - "offset": { + "window": { + "description": "Size of the rolling window in days.", + "example": 7, "format": "int32", "type": "integer" - }, - "order_by_choices": { + } + }, + "required": [ + "rolling_type", + "window" + ], + "type": "object" + }, + "ChartDataSelectOptionsSchema": { + "properties": { + "columns": { + "description": "Columns which to select from the input data, in the desired order. If columns are renamed, the original column name should be referenced here.", + "example": [ + "country", + "gender", + "age" + ], "items": { - "items": { - "type": "string" - }, - "type": "array" + "type": "string" }, "type": "array" }, - "owners": { + "exclude": { + "description": "Columns to exclude from selection.", + "example": [ + "my_temp_column" + ], "items": { - "format": "int32", - "type": "integer" + "type": "string" }, "type": "array" }, - "params": { - "type": "string" - }, - "perm": { - "type": "string" - }, - "schema": { - "type": "string" - }, - "select_star": { - "type": "string" - }, - "sql": { - "type": "string" - }, - "table_name": { - "type": "string" - }, - "template_params": { - "type": "string" - }, - "time_grain_sqla": { + "rename": { + "description": "columns which to rename, mapping source column to target column. For instance, `{'y': 'y2'}` will rename the column `y` to `y2`.", + "example": [ + { + "age": "average_age" + } + ], "items": { - "items": { - "type": "string" - }, - "type": "array" + "type": "object" }, "type": "array" + } + }, + "type": "object" + }, + "ChartDataSortOptionsSchema": { + "properties": { + "aggregates": { + "description": "The keys are the name of the aggregate column to be created, and the values specify the details of how to apply the aggregation. If an operator requires additional options, these can be passed here to be unpacked in the operator call. The following numpy operators are supported: average, argmin, argmax, cumsum, cumprod, max, mean, median, nansum, nanmin, nanmax, nanmean, nanmedian, min, percentile, prod, product, std, sum, var. Any options required by the operator can be passed to the `options` object.\n\nIn the example, a new column `first_quantile` is created based on values in the column `my_col` using the `percentile` operator with the `q=0.25` parameter.", + "example": { + "first_quantile": { + "column": "my_col", + "operator": "percentile", + "options": { + "q": 0.25 + } + } + }, + "type": "object" }, - "type": { - "type": "string" - }, - "uid": { - "type": "string" - }, - "verbose_map": { - "additionalProperties": { - "type": "string" + "columns": { + "description": "columns by by which to sort. The key specifies the column name, value specifies if sorting in ascending order.", + "example": { + "country": true, + "gender": false }, "type": "object" } }, + "required": [ + "columns" + ], "type": "object" }, - "DashboardGetResponseSchema": { + "ChartEntityResponseSchema": { "properties": { - "changed_by": { - "$ref": "#/components/schemas/User" + "cache_timeout": { + "description": "Duration (in seconds) of the caching timeout for this chart. Note this defaults to the datasource/table timeout if undefined.", + "format": "int32", + "type": "integer" }, - "changed_by_name": { + "certification_details": { + "description": "Details of the certification", "type": "string" }, - "changed_by_url": { + "certified_by": { + "description": "Person or group that has certified this chart", "type": "string" }, "changed_on": { - "format": "date-time", + "description": "The ISO date that the chart was last changed.", "type": "string" }, - "changed_on_delta_humanized": { + "description": { + "description": "A description of the chart propose.", "type": "string" }, - "charts": { - "items": { - "description": "The names of the dashboard's charts. Names are used for legacy reasons.", - "type": "string" - }, - "type": "array" - }, - "css": { - "description": "Override CSS for the dashboard.", + "description_markeddown": { + "description": "Sanitized HTML version of the chart description.", "type": "string" }, - "dashboard_title": { - "description": "A title for the dashboard.", + "form_data": { + "description": "Form data from the Explore controls used to form the chart's data query.", + "type": "object" + }, + "modified": { "type": "string" }, - "id": { + "slice_id": { "format": "int32", "type": "integer" }, - "json_metadata": { - "description": "This JSON object is generated dynamically when clicking the save or overwrite button in the dashboard view. It is exposed here for reference and for power users who may want to alter specific parameters.", - "type": "string" - }, - "owners": { - "items": { - "$ref": "#/components/schemas/User" - }, - "type": "array" - }, - "position_json": { - "description": "This json object describes the positioning of the widgets in the dashboard. It is dynamically generated when adjusting the widgets size and positions by using drag & drop in the dashboard view", - "type": "string" - }, - "published": { - "type": "boolean" - }, - "roles": { - "items": { - "$ref": "#/components/schemas/Roles" - }, - "type": "array" - }, - "slug": { - "type": "string" - }, - "table_names": { - "type": "string" - }, - "thumbnail_url": { + "slice_name": { + "description": "The name of the chart.", "type": "string" }, - "url": { + "slice_url": { + "description": "The URL of the chart.", "type": "string" } }, "type": "object" }, - "DashboardRestApi.get": { + "ChartFavStarResponseResult": { "properties": { "id": { + "description": "The Chart id", "format": "int32", "type": "integer" + }, + "value": { + "description": "The FaveStar value", + "type": "boolean" } }, "type": "object" }, - "DashboardRestApi.get_list": { + "ChartGetDatasourceObjectDataResponse": { "properties": { - "changed_by": { - "$ref": "#/components/schemas/Meta15" - }, - "changed_by_name": { - "readOnly": true + "datasource_id": { + "description": "The datasource identifier", + "format": "int32", + "type": "integer" }, - "changed_by_url": { - "readOnly": true + "datasource_type": { + "description": "The datasource type", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "ChartGetDatasourceObjectResponse": { + "properties": { + "label": { + "description": "The name of the datasource", + "type": "string" }, - "changed_on_delta_humanized": { - "readOnly": true - }, - "changed_on_utc": { - "readOnly": true + "value": { + "$ref": "#/components/schemas/ChartGetDatasourceObjectDataResponse" + } + }, + "type": "object" + }, + "ChartGetDatasourceResponseSchema": { + "properties": { + "count": { + "description": "The total number of datasources", + "format": "int32", + "type": "integer" }, - "created_by": { - "$ref": "#/components/schemas/Meta14" + "result": { + "$ref": "#/components/schemas/ChartGetDatasourceObjectResponse" + } + }, + "type": "object" + }, + "ChartRestApi.get": { + "properties": { + "cache_timeout": { + "format": "int32", + "nullable": true, + "type": "integer" }, - "css": { + "certification_details": { "nullable": true, "type": "string" }, - "dashboard_title": { - "maxLength": 500, + "certified_by": { "nullable": true, "type": "string" }, - "id": { - "format": "int32", - "type": "integer" + "dashboards": { + "$ref": "#/components/schemas/ChartRestApi.get.Dashboard" }, - "json_metadata": { + "description": { "nullable": true, "type": "string" }, "owners": { - "$ref": "#/components/schemas/Meta17" + "$ref": "#/components/schemas/ChartRestApi.get.User" }, - "position_json": { + "params": { "nullable": true, "type": "string" }, - "published": { + "query_context": { "nullable": true, - "type": "boolean" - }, - "roles": { - "$ref": "#/components/schemas/Meta16" + "type": "string" }, - "slug": { - "maxLength": 255, + "slice_name": { + "maxLength": 250, "nullable": true, "type": "string" }, - "status": { - "readOnly": true - }, - "thumbnail_url": { - "readOnly": true - }, - "url": { - "readOnly": true + "viz_type": { + "maxLength": 250, + "nullable": true, + "type": "string" } }, "type": "object" }, - "DashboardRestApi.post": { + "ChartRestApi.get.Dashboard": { "properties": { - "css": { - "type": "string" - }, "dashboard_title": { - "description": "A title for the dashboard.", "maxLength": 500, - "minLength": 0, "nullable": true, "type": "string" }, + "id": { + "format": "int32", + "type": "integer" + }, "json_metadata": { - "description": "This JSON object is generated dynamically when clicking the save or overwrite button in the dashboard view. It is exposed here for reference and for power users who may want to alter specific parameters.", + "nullable": true, "type": "string" - }, - "owners": { - "items": { - "description": "Owner are users ids allowed to delete or change this dashboard. If left empty you will be one of the owners of the dashboard.", - "format": "int32", - "type": "integer" - }, - "type": "array" - }, - "position_json": { - "description": "This json object describes the positioning of the widgets in the dashboard. It is dynamically generated when adjusting the widgets size and positions by using drag & drop in the dashboard view", + } + }, + "type": "object" + }, + "ChartRestApi.get.User": { + "properties": { + "first_name": { + "maxLength": 64, "type": "string" }, - "published": { - "description": "Determines whether or not this dashboard is visible in the list of all dashboards.", - "type": "boolean" + "id": { + "format": "int32", + "type": "integer" }, - "roles": { - "items": { - "description": "Roles is a list which defines access to the dashboard. These roles are always applied in addition to restrictions on dataset level access. If no roles defined then the dashboard is available to all roles.", - "format": "int32", - "type": "integer" - }, - "type": "array" + "last_name": { + "maxLength": 64, + "type": "string" }, - "slug": { - "description": "Unique identifying part for the web address of the dashboard.", - "maxLength": 255, - "minLength": 1, - "nullable": true, + "username": { + "maxLength": 64, "type": "string" } }, + "required": [ + "first_name", + "last_name", + "username" + ], "type": "object" }, - "DashboardRestApi.put": { + "ChartRestApi.get_list": { "properties": { - "css": { - "description": "Override CSS for the dashboard.", + "cache_timeout": { + "format": "int32", "nullable": true, - "type": "string" + "type": "integer" }, - "dashboard_title": { - "description": "A title for the dashboard.", - "maxLength": 500, - "minLength": 0, + "certification_details": { "nullable": true, "type": "string" }, - "json_metadata": { - "description": "This JSON object is generated dynamically when clicking the save or overwrite button in the dashboard view. It is exposed here for reference and for power users who may want to alter specific parameters.", + "certified_by": { "nullable": true, "type": "string" }, - "owners": { - "items": { - "description": "Owner are users ids allowed to delete or change this dashboard. If left empty you will be one of the owners of the dashboard.", - "format": "int32", - "nullable": true, - "type": "integer" - }, - "type": "array" + "changed_by": { + "$ref": "#/components/schemas/ChartRestApi.get_list.User1" }, - "position_json": { - "description": "This json object describes the positioning of the widgets in the dashboard. It is dynamically generated when adjusting the widgets size and positions by using drag & drop in the dashboard view", + "changed_by_name": { + "readOnly": true + }, + "changed_by_url": { + "readOnly": true + }, + "changed_on_delta_humanized": { + "readOnly": true + }, + "changed_on_utc": { + "readOnly": true + }, + "created_by": { + "$ref": "#/components/schemas/ChartRestApi.get_list.User2" + }, + "datasource_id": { + "format": "int32", "nullable": true, - "type": "string" + "type": "integer" }, - "published": { - "description": "Determines whether or not this dashboard is visible in the list of all dashboards.", + "datasource_name_text": { + "readOnly": true + }, + "datasource_type": { + "maxLength": 200, "nullable": true, - "type": "boolean" + "type": "string" }, - "roles": { - "items": { - "description": "Roles is a list which defines access to the dashboard. These roles are always applied in addition to restrictions on dataset level access. If no roles defined then the dashboard is available to all roles.", - "format": "int32", - "nullable": true, - "type": "integer" - }, - "type": "array" + "datasource_url": { + "readOnly": true }, - "slug": { - "description": "Unique identifying part for the web address of the dashboard.", - "maxLength": 255, - "minLength": 0, + "description": { "nullable": true, "type": "string" - } - }, - "type": "object" - }, - "Database": { - "properties": { - "allow_multi_schema_metadata_fetch": { - "type": "boolean" }, - "allows_cost_estimate": { - "type": "boolean" + "description_markeddown": { + "readOnly": true }, - "allows_subquery": { - "type": "boolean" + "edit_url": { + "readOnly": true }, - "allows_virtual_table_explore": { - "type": "boolean" + "id": { + "format": "int32", + "type": "integer" }, - "disable_data_preview": { - "type": "boolean" + "last_saved_at": { + "format": "date-time", + "nullable": true, + "type": "string" }, - "backend": { + "last_saved_by": { + "$ref": "#/components/schemas/ChartRestApi.get_list.User" + }, + "owners": { + "$ref": "#/components/schemas/ChartRestApi.get_list.User3" + }, + "params": { + "nullable": true, "type": "string" }, - "explore_database_id": { - "format": "int32", - "type": "integer" + "slice_name": { + "maxLength": 250, + "nullable": true, + "type": "string" }, - "id": { - "format": "int32", - "type": "integer" + "table": { + "$ref": "#/components/schemas/ChartRestApi.get_list.SqlaTable" }, - "name": { + "thumbnail_url": { + "readOnly": true + }, + "url": { + "readOnly": true + }, + "viz_type": { + "maxLength": 250, + "nullable": true, "type": "string" } }, "type": "object" }, - "DatabaseFunctionNamesResponse": { + "ChartRestApi.get_list.SqlaTable": { "properties": { - "function_names": { - "items": { - "type": "string" - }, - "type": "array" + "default_endpoint": { + "nullable": true, + "type": "string" + }, + "table_name": { + "maxLength": 250, + "type": "string" } }, + "required": [ + "table_name" + ], "type": "object" }, - "DatabaseRelatedChart": { + "ChartRestApi.get_list.User": { "properties": { + "first_name": { + "maxLength": 64, + "type": "string" + }, "id": { "format": "int32", "type": "integer" }, - "slice_name": { - "type": "string" - }, - "viz_type": { + "last_name": { + "maxLength": 64, "type": "string" } }, + "required": [ + "first_name", + "last_name" + ], "type": "object" }, - "DatabaseRelatedCharts": { + "ChartRestApi.get_list.User1": { "properties": { - "count": { - "description": "Chart count", - "format": "int32", - "type": "integer" + "first_name": { + "maxLength": 64, + "type": "string" }, - "result": { - "description": "A list of dashboards", - "items": { - "$ref": "#/components/schemas/DatabaseRelatedChart" - }, - "type": "array" + "last_name": { + "maxLength": 64, + "type": "string" } }, + "required": [ + "first_name", + "last_name" + ], "type": "object" }, - "DatabaseRelatedDashboard": { + "ChartRestApi.get_list.User2": { "properties": { + "first_name": { + "maxLength": 64, + "type": "string" + }, "id": { "format": "int32", "type": "integer" }, - "json_metadata": { - "type": "object" - }, - "slug": { - "type": "string" - }, - "title": { + "last_name": { + "maxLength": 64, "type": "string" } }, + "required": [ + "first_name", + "last_name" + ], "type": "object" }, - "DatabaseRelatedDashboards": { + "ChartRestApi.get_list.User3": { "properties": { - "count": { - "description": "Dashboard count", + "first_name": { + "maxLength": 64, + "type": "string" + }, + "id": { "format": "int32", "type": "integer" }, - "result": { - "description": "A list of dashboards", - "items": { - "$ref": "#/components/schemas/DatabaseRelatedDashboard" - }, - "type": "array" - } - }, - "type": "object" - }, - "DatabaseRelatedObjectsResponse": { - "properties": { - "charts": { - "$ref": "#/components/schemas/DatabaseRelatedCharts" + "last_name": { + "maxLength": 64, + "type": "string" }, - "dashboards": { - "$ref": "#/components/schemas/DatabaseRelatedDashboards" + "username": { + "maxLength": 64, + "type": "string" } }, + "required": [ + "first_name", + "last_name", + "username" + ], "type": "object" }, - "DatabaseRestApi.get": { + "ChartRestApi.post": { "properties": { - "allow_csv_upload": { - "nullable": true, - "type": "boolean" - }, - "allow_ctas": { - "nullable": true, - "type": "boolean" - }, - "allow_cvas": { - "nullable": true, - "type": "boolean" - }, - "allow_dml": { + "cache_timeout": { + "description": "Duration (in seconds) of the caching timeout for this chart. Note this defaults to the datasource/table timeout if undefined.", + "format": "int32", "nullable": true, - "type": "boolean" + "type": "integer" }, - "allow_multi_schema_metadata_fetch": { + "certification_details": { + "description": "Details of the certification", "nullable": true, - "type": "boolean" + "type": "string" }, - "allow_run_async": { + "certified_by": { + "description": "Person or group that has certified this chart", "nullable": true, - "type": "boolean" + "type": "string" }, - "backend": { - "readOnly": true + "dashboards": { + "items": { + "description": "A list of dashboards to include this new chart to.", + "format": "int32", + "type": "integer" + }, + "type": "array" }, - "cache_timeout": { + "datasource_id": { + "description": "The id of the dataset/datasource this new chart will use. A complete datasource identification needs `datasouce_id` and `datasource_type`.", "format": "int32", - "nullable": true, "type": "integer" }, - "configuration_method": { - "maxLength": 255, + "datasource_name": { + "description": "The datasource name.", "nullable": true, "type": "string" }, - "database_name": { - "maxLength": 250, + "datasource_type": { + "description": "The type of dataset/datasource identified on `datasource_id`.", + "enum": [ + "druid", + "table", + "view" + ], "type": "string" }, - "encrypted_extra": { + "description": { + "description": "A description of the chart propose.", "nullable": true, "type": "string" }, - "expose_in_sqllab": { + "external_url": { + "nullable": true, + "type": "string" + }, + "is_managed_externally": { "nullable": true, "type": "boolean" }, - "extra": { + "owners": { + "items": { + "description": "Owner are users ids allowed to delete or change this chart. If left empty you will be one of the owners of the chart.", + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "params": { + "description": "Parameters are generated dynamically when clicking the save or overwrite button in the explore view. This JSON object for power users who may want to alter specific parameters.", "nullable": true, "type": "string" }, - "force_ctas_schema": { - "maxLength": 250, + "query_context": { + "description": "The query context represents the queries that need to run in order to generate the data the visualization, and in what format the data should be returned.", "nullable": true, "type": "string" }, - "id": { - "format": "int32", - "type": "integer" - }, - "impersonate_user": { + "query_context_generation": { + "description": "The query context generation represents whether the query_contextis user generated or not so that it does not update user modfiedstate.", "nullable": true, "type": "boolean" }, - "parameters": { - "readOnly": true - }, - "server_cert": { - "nullable": true, + "slice_name": { + "description": "The name of the chart.", + "maxLength": 250, + "minLength": 1, "type": "string" }, - "sqlalchemy_uri": { - "maxLength": 1024, + "viz_type": { + "description": "The type of chart visualization used.", + "example": [ + "bar", + "line_multi", + "area", + "table" + ], + "maxLength": 250, + "minLength": 0, "type": "string" } }, - "required": ["database_name", "sqlalchemy_uri"], + "required": [ + "datasource_id", + "datasource_type", + "slice_name" + ], "type": "object" }, - "DatabaseRestApi.get_list": { + "ChartRestApi.put": { "properties": { - "allow_csv_upload": { + "cache_timeout": { + "description": "Duration (in seconds) of the caching timeout for this chart. Note this defaults to the datasource/table timeout if undefined.", + "format": "int32", "nullable": true, - "type": "boolean" + "type": "integer" }, - "allow_ctas": { + "certification_details": { + "description": "Details of the certification", "nullable": true, - "type": "boolean" + "type": "string" }, - "allow_cvas": { + "certified_by": { + "description": "Person or group that has certified this chart", "nullable": true, - "type": "boolean" + "type": "string" }, - "allow_dml": { - "nullable": true, - "type": "boolean" + "dashboards": { + "items": { + "description": "A list of dashboards to include this new chart to.", + "format": "int32", + "type": "integer" + }, + "type": "array" }, - "allow_multi_schema_metadata_fetch": { + "datasource_id": { + "description": "The id of the dataset/datasource this new chart will use. A complete datasource identification needs `datasouce_id` and `datasource_type`.", + "format": "int32", "nullable": true, - "type": "boolean" + "type": "integer" }, - "allow_run_async": { + "datasource_type": { + "description": "The type of dataset/datasource identified on `datasource_id`.", + "enum": [ + "druid", + "table", + "view" + ], "nullable": true, - "type": "boolean" - }, - "allows_cost_estimate": { - "readOnly": true - }, - "allows_subquery": { - "readOnly": true - }, - "allows_virtual_table_explore": { - "readOnly": true - }, - "disable_data_preview": { - "readOnly": true + "type": "string" }, - "backend": { - "readOnly": true + "description": { + "description": "A description of the chart propose.", + "nullable": true, + "type": "string" }, - "changed_on": { - "format": "date-time", + "external_url": { "nullable": true, "type": "string" }, - "changed_on_delta_humanized": { - "readOnly": true + "is_managed_externally": { + "nullable": true, + "type": "boolean" }, - "created_by": { - "$ref": "#/components/schemas/Meta18" + "owners": { + "items": { + "description": "Owner are users ids allowed to delete or change this chart. If left empty you will be one of the owners of the chart.", + "format": "int32", + "type": "integer" + }, + "type": "array" }, - "database_name": { - "maxLength": 250, + "params": { + "description": "Parameters are generated dynamically when clicking the save or overwrite button in the explore view. This JSON object for power users who may want to alter specific parameters.", + "nullable": true, "type": "string" }, - "explore_database_id": { - "readOnly": true + "query_context": { + "description": "The query context represents the queries that need to run in order to generate the data the visualization, and in what format the data should be returned.", + "nullable": true, + "type": "string" }, - "expose_in_sqllab": { + "query_context_generation": { + "description": "The query context generation represents whether the query_contextis user generated or not so that it does not update user modfiedstate.", "nullable": true, "type": "boolean" }, - "extra": { + "slice_name": { + "description": "The name of the chart.", + "maxLength": 250, + "minLength": 0, "nullable": true, "type": "string" }, - "force_ctas_schema": { - "maxLength": 250, + "viz_type": { + "description": "The type of chart visualization used.", + "example": [ + "bar", + "line_multi", + "area", + "table" + ], + "maxLength": 250, + "minLength": 0, "nullable": true, "type": "string" - }, - "id": { - "format": "int32", - "type": "integer" } }, - "required": ["database_name"], "type": "object" }, - "DatabaseRestApi.post": { + "CssTemplateRestApi.get": { "properties": { - "allow_csv_upload": { - "description": "Allow to upload CSV file data into this databaseIf selected, please set the schemas allowed for csv upload in Extra.", - "type": "boolean" - }, - "allow_ctas": { - "description": "Allow CREATE TABLE AS option in SQL Lab", - "type": "boolean" - }, - "allow_cvas": { - "description": "Allow CREATE VIEW AS option in SQL Lab", - "type": "boolean" - }, - "allow_dml": { - "description": "Allow users to run non-SELECT statements (UPDATE, DELETE, CREATE, ...) in SQL Lab", - "type": "boolean" - }, - "allow_multi_schema_metadata_fetch": { - "description": "Allow SQL Lab to fetch a list of all tables and all views across all database schemas. For large data warehouse with thousands of tables, this can be expensive and put strain on the system.", - "type": "boolean" + "created_by": { + "$ref": "#/components/schemas/CssTemplateRestApi.get.User" }, - "allow_run_async": { - "description": "Operate the database in asynchronous mode, meaning that the queries are executed on remote workers as opposed to on the web server itself. This assumes that you have a Celery worker setup as well as a results backend. Refer to the installation docs for more information.", - "type": "boolean" + "css": { + "nullable": true, + "type": "string" }, - "cache_timeout": { - "description": "Duration (in seconds) of the caching timeout for charts of this database. A timeout of 0 indicates that the cache never expires. Note this defaults to the global timeout if undefined.", + "id": { "format": "int32", - "nullable": true, "type": "integer" }, - "configuration_method": { - "default": "sqlalchemy_form", - "description": "Configuration_method is used on the frontend to inform the backend whether to explode parameters or to provide only a sqlalchemy_uri." - }, - "database_name": { - "description": "A database name to identify this connection.", + "template_name": { "maxLength": 250, - "minLength": 1, - "type": "string" - }, - "encrypted_extra": { - "description": "

JSON string containing additional connection configuration.
This is used to provide connection information for systems like Hive, Presto, and BigQuery, which do not conform to the username:password syntax normally used by SQLAlchemy.

", - "nullable": true, - "type": "string" - }, - "engine": { - "description": "SQLAlchemy engine to use", "nullable": true, "type": "string" - }, - "expose_in_sqllab": { - "description": "Expose this database to SQLLab", - "type": "boolean" - }, - "extra": { - "description": "

JSON string containing extra configuration elements.
1. The engine_params object gets unpacked into the sqlalchemy.create_engine call, while the metadata_params gets unpacked into the sqlalchemy.MetaData call.
2. The metadata_cache_timeout is a cache timeout setting in seconds for metadata fetch of this database. Specify it as \"metadata_cache_timeout\": {\"schema_cache_timeout\": 600, \"table_cache_timeout\": 600}. If unset, cache will not be enabled for the functionality. A timeout of 0 indicates that the cache never expires.
3. The schemas_allowed_for_csv_upload is a comma separated list of schemas that CSVs are allowed to upload to. Specify it as \"schemas_allowed_for_csv_upload\": [\"public\", \"csv_upload\"]. If database flavor does not support schema or any schema is allowed to be accessed, just leave the list empty
4. the version field is a string specifying the this db's version. This should be used with Presto DBs so that the syntax is correct
5. The allows_virtual_table_explore field is a boolean specifying whether or not the Explore button in SQL Lab results is shown
6. The disable_data_preview field is a boolean specifying whether or not data preview queries will be run when fetching table metadata in SQL Lab.

", - "type": "string" - }, - "force_ctas_schema": { - "description": "When allowing CREATE TABLE AS option in SQL Lab, this option forces the table to be created in this schema", - "maxLength": 250, - "minLength": 0, - "nullable": true, + } + }, + "type": "object" + }, + "CssTemplateRestApi.get.User": { + "properties": { + "first_name": { + "maxLength": 64, "type": "string" }, - "impersonate_user": { - "description": "If Presto, all the queries in SQL Lab are going to be executed as the currently logged on user who must have permission to run them.
If Hive and hive.server2.enable.doAs is enabled, will run the queries as service account, but impersonate the currently logged on user via hive.server2.proxy.user property.", - "type": "boolean" - }, - "parameters": { - "additionalProperties": {}, - "description": "DB-specific parameters for configuration", - "type": "object" - }, - "server_cert": { - "description": "

Optional CA_BUNDLE contents to validate HTTPS requests. Only available on certain database engines.

", - "nullable": true, - "type": "string" + "id": { + "format": "int32", + "type": "integer" }, - "sqlalchemy_uri": { - "description": "

Refer to the SqlAlchemy docs for more information on how to structure your URI.

", - "maxLength": 1024, - "minLength": 1, + "last_name": { + "maxLength": 64, "type": "string" } }, - "required": ["database_name"], + "required": [ + "first_name", + "last_name" + ], "type": "object" }, - "DatabaseRestApi.put": { + "CssTemplateRestApi.get_list": { "properties": { - "allow_csv_upload": { - "description": "Allow to upload CSV file data into this databaseIf selected, please set the schemas allowed for csv upload in Extra.", - "type": "boolean" - }, - "allow_ctas": { - "description": "Allow CREATE TABLE AS option in SQL Lab", - "type": "boolean" + "changed_by": { + "$ref": "#/components/schemas/CssTemplateRestApi.get_list.User" }, - "allow_cvas": { - "description": "Allow CREATE VIEW AS option in SQL Lab", - "type": "boolean" + "changed_on_delta_humanized": { + "readOnly": true }, - "allow_dml": { - "description": "Allow users to run non-SELECT statements (UPDATE, DELETE, CREATE, ...) in SQL Lab", - "type": "boolean" + "created_by": { + "$ref": "#/components/schemas/CssTemplateRestApi.get_list.User1" }, - "allow_multi_schema_metadata_fetch": { - "description": "Allow SQL Lab to fetch a list of all tables and all views across all database schemas. For large data warehouse with thousands of tables, this can be expensive and put strain on the system.", - "type": "boolean" + "created_on": { + "format": "date-time", + "nullable": true, + "type": "string" }, - "allow_run_async": { - "description": "Operate the database in asynchronous mode, meaning that the queries are executed on remote workers as opposed to on the web server itself. This assumes that you have a Celery worker setup as well as a results backend. Refer to the installation docs for more information.", - "type": "boolean" + "css": { + "nullable": true, + "type": "string" }, - "cache_timeout": { - "description": "Duration (in seconds) of the caching timeout for charts of this database. A timeout of 0 indicates that the cache never expires. Note this defaults to the global timeout if undefined.", + "id": { "format": "int32", - "nullable": true, "type": "integer" }, - "configuration_method": { - "default": "sqlalchemy_form", - "description": "Configuration_method is used on the frontend to inform the backend whether to explode parameters or to provide only a sqlalchemy_uri." - }, - "database_name": { - "description": "A database name to identify this connection.", + "template_name": { "maxLength": 250, - "minLength": 1, - "nullable": true, - "type": "string" - }, - "encrypted_extra": { - "description": "

JSON string containing additional connection configuration.
This is used to provide connection information for systems like Hive, Presto, and BigQuery, which do not conform to the username:password syntax normally used by SQLAlchemy.

", "nullable": true, "type": "string" - }, - "engine": { - "description": "SQLAlchemy engine to use", - "nullable": true, + } + }, + "type": "object" + }, + "CssTemplateRestApi.get_list.User": { + "properties": { + "first_name": { + "maxLength": 64, "type": "string" }, - "expose_in_sqllab": { - "description": "Expose this database to SQLLab", - "type": "boolean" + "id": { + "format": "int32", + "type": "integer" }, - "extra": { - "description": "

JSON string containing extra configuration elements.
1. The engine_params object gets unpacked into the sqlalchemy.create_engine call, while the metadata_params gets unpacked into the sqlalchemy.MetaData call.
2. The metadata_cache_timeout is a cache timeout setting in seconds for metadata fetch of this database. Specify it as \"metadata_cache_timeout\": {\"schema_cache_timeout\": 600, \"table_cache_timeout\": 600}. If unset, cache will not be enabled for the functionality. A timeout of 0 indicates that the cache never expires.
3. The schemas_allowed_for_csv_upload is a comma separated list of schemas that CSVs are allowed to upload to. Specify it as \"schemas_allowed_for_csv_upload\": [\"public\", \"csv_upload\"]. If database flavor does not support schema or any schema is allowed to be accessed, just leave the list empty
4. the version field is a string specifying the this db's version. This should be used with Presto DBs so that the syntax is correct
5. The allows_virtual_table_explore field is a boolean specifying whether or not the Explore button in SQL Lab results is shown
6. The disable_data_preview field is a boolean specifying whether or not data preview queries will be run when fetching table metadata in SQL Lab.

", + "last_name": { + "maxLength": 64, "type": "string" - }, - "force_ctas_schema": { - "description": "When allowing CREATE TABLE AS option in SQL Lab, this option forces the table to be created in this schema", - "maxLength": 250, - "minLength": 0, - "nullable": true, + } + }, + "required": [ + "first_name", + "last_name" + ], + "type": "object" + }, + "CssTemplateRestApi.get_list.User1": { + "properties": { + "first_name": { + "maxLength": 64, "type": "string" }, - "impersonate_user": { - "description": "If Presto, all the queries in SQL Lab are going to be executed as the currently logged on user who must have permission to run them.
If Hive and hive.server2.enable.doAs is enabled, will run the queries as service account, but impersonate the currently logged on user via hive.server2.proxy.user property.", - "type": "boolean" - }, - "parameters": { - "additionalProperties": {}, - "description": "DB-specific parameters for configuration", - "type": "object" - }, - "server_cert": { - "description": "

Optional CA_BUNDLE contents to validate HTTPS requests. Only available on certain database engines.

", - "nullable": true, - "type": "string" + "id": { + "format": "int32", + "type": "integer" }, - "sqlalchemy_uri": { - "description": "

Refer to the SqlAlchemy docs for more information on how to structure your URI.

", - "maxLength": 1024, - "minLength": 0, + "last_name": { + "maxLength": 64, "type": "string" } }, + "required": [ + "first_name", + "last_name" + ], "type": "object" }, - "DatabaseTestConnectionSchema": { + "CssTemplateRestApi.post": { "properties": { - "configuration_method": { - "default": "sqlalchemy_form", - "description": "Configuration_method is used on the frontend to inform the backend whether to explode parameters or to provide only a sqlalchemy_uri." - }, - "database_name": { - "description": "A database name to identify this connection.", - "maxLength": 250, - "minLength": 1, + "css": { "nullable": true, "type": "string" }, - "encrypted_extra": { - "description": "

JSON string containing additional connection configuration.
This is used to provide connection information for systems like Hive, Presto, and BigQuery, which do not conform to the username:password syntax normally used by SQLAlchemy.

", + "template_name": { + "maxLength": 250, "nullable": true, "type": "string" - }, - "engine": { - "description": "SQLAlchemy engine to use", + } + }, + "type": "object" + }, + "CssTemplateRestApi.put": { + "properties": { + "css": { "nullable": true, "type": "string" }, - "extra": { - "description": "

JSON string containing extra configuration elements.
1. The engine_params object gets unpacked into the sqlalchemy.create_engine call, while the metadata_params gets unpacked into the sqlalchemy.MetaData call.
2. The metadata_cache_timeout is a cache timeout setting in seconds for metadata fetch of this database. Specify it as \"metadata_cache_timeout\": {\"schema_cache_timeout\": 600, \"table_cache_timeout\": 600}. If unset, cache will not be enabled for the functionality. A timeout of 0 indicates that the cache never expires.
3. The schemas_allowed_for_csv_upload is a comma separated list of schemas that CSVs are allowed to upload to. Specify it as \"schemas_allowed_for_csv_upload\": [\"public\", \"csv_upload\"]. If database flavor does not support schema or any schema is allowed to be accessed, just leave the list empty
4. the version field is a string specifying the this db's version. This should be used with Presto DBs so that the syntax is correct
5. The allows_virtual_table_explore field is a boolean specifying whether or not the Explore button in SQL Lab results is shown
6. The disable_data_preview field is a boolean specifying whether or not data preview queries will be run when fetching table metadata in SQL Lab.

", - "type": "string" - }, - "impersonate_user": { - "description": "If Presto, all the queries in SQL Lab are going to be executed as the currently logged on user who must have permission to run them.
If Hive and hive.server2.enable.doAs is enabled, will run the queries as service account, but impersonate the currently logged on user via hive.server2.proxy.user property.", - "type": "boolean" - }, - "parameters": { - "additionalProperties": {}, - "description": "DB-specific parameters for configuration", - "type": "object" - }, - "server_cert": { - "description": "

Optional CA_BUNDLE contents to validate HTTPS requests. Only available on certain database engines.

", + "template_name": { + "maxLength": 250, "nullable": true, "type": "string" - }, - "sqlalchemy_uri": { - "description": "

Refer to the SqlAlchemy docs for more information on how to structure your URI.

", - "maxLength": 1024, - "minLength": 1, - "type": "string" } }, "type": "object" }, - "DatabaseValidateParametersSchema": { + "DashboardDatasetSchema": { "properties": { - "configuration_method": { - "description": "Configuration_method is used on the frontend to inform the backend whether to explode parameters or to provide only a sqlalchemy_uri." + "cache_timeout": { + "format": "int32", + "type": "integer" }, - "database_name": { - "description": "A database name to identify this connection.", - "maxLength": 250, - "minLength": 1, - "nullable": true, + "column_formats": { + "type": "object" + }, + "column_types": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "columns": { + "items": { + "type": "object" + }, + "type": "array" + }, + "database": { + "$ref": "#/components/schemas/Database" + }, + "datasource_name": { "type": "string" }, - "encrypted_extra": { - "description": "

JSON string containing additional connection configuration.
This is used to provide connection information for systems like Hive, Presto, and BigQuery, which do not conform to the username:password syntax normally used by SQLAlchemy.

", - "nullable": true, + "default_endpoint": { "type": "string" }, - "engine": { - "description": "SQLAlchemy engine to use", + "edit_url": { "type": "string" }, - "extra": { - "description": "

JSON string containing extra configuration elements.
1. The engine_params object gets unpacked into the sqlalchemy.create_engine call, while the metadata_params gets unpacked into the sqlalchemy.MetaData call.
2. The metadata_cache_timeout is a cache timeout setting in seconds for metadata fetch of this database. Specify it as \"metadata_cache_timeout\": {\"schema_cache_timeout\": 600, \"table_cache_timeout\": 600}. If unset, cache will not be enabled for the functionality. A timeout of 0 indicates that the cache never expires.
3. The schemas_allowed_for_csv_upload is a comma separated list of schemas that CSVs are allowed to upload to. Specify it as \"schemas_allowed_for_csv_upload\": [\"public\", \"csv_upload\"]. If database flavor does not support schema or any schema is allowed to be accessed, just leave the list empty
4. the version field is a string specifying the this db's version. This should be used with Presto DBs so that the syntax is correct
5. The allows_virtual_table_explore field is a boolean specifying whether or not the Explore button in SQL Lab results is shown
6. The disable_data_preview field is a boolean specifying whether or not data preview queries will be run when fetching table metadata in SQL Lab.

", + "fetch_values_predicate": { "type": "string" }, - "impersonate_user": { - "description": "If Presto, all the queries in SQL Lab are going to be executed as the currently logged on user who must have permission to run them.
If Hive and hive.server2.enable.doAs is enabled, will run the queries as service account, but impersonate the currently logged on user via hive.server2.proxy.user property.", + "filter_select": { "type": "boolean" }, - "parameters": { - "additionalProperties": { - "nullable": true + "filter_select_enabled": { + "type": "boolean" + }, + "granularity_sqla": { + "items": { + "items": { + "type": "string" + }, + "type": "array" }, - "description": "DB-specific parameters for configuration", - "type": "object" + "type": "array" }, - "server_cert": { - "description": "

Optional CA_BUNDLE contents to validate HTTPS requests. Only available on certain database engines.

", - "nullable": true, - "type": "string" - } - }, - "required": ["configuration_method", "engine"], - "type": "object" - }, - "DatasetColumnsPut": { - "properties": { - "column_name": { - "maxLength": 255, - "minLength": 1, + "health_check_message": { "type": "string" }, - "description": { - "nullable": true, - "type": "string" + "id": { + "format": "int32", + "type": "integer" }, - "expression": { - "nullable": true, + "is_sqllab_view": { + "type": "boolean" + }, + "main_dttm_col": { "type": "string" }, - "filterable": { - "type": "boolean" + "metrics": { + "items": { + "type": "object" + }, + "type": "array" }, - "groupby": { - "type": "boolean" + "name": { + "type": "string" }, - "id": { + "offset": { "format": "int32", "type": "integer" }, - "is_active": { - "type": "boolean" + "order_by_choices": { + "items": { + "items": { + "type": "string" + }, + "type": "array" + }, + "type": "array" }, - "is_dttm": { - "type": "boolean" + "owners": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" }, - "python_date_format": { - "maxLength": 255, - "minLength": 1, - "nullable": true, + "params": { "type": "string" }, - "type": { - "maxLength": 32, - "minLength": 1, + "perm": { "type": "string" }, - "uuid": { - "nullable": true, + "schema": { "type": "string" }, - "verbose_name": { - "nullable": true, + "select_star": { + "type": "string" + }, + "sql": { + "type": "string" + }, + "table_name": { + "type": "string" + }, + "template_params": { + "type": "string" + }, + "time_grain_sqla": { + "items": { + "items": { + "type": "string" + }, + "type": "array" + }, + "type": "array" + }, + "type": { "type": "string" + }, + "uid": { + "type": "string" + }, + "verbose_map": { + "additionalProperties": { + "type": "string" + }, + "type": "object" } }, - "required": ["column_name"], "type": "object" }, - "DatasetColumnsRestApi.get": { + "DashboardGetResponseSchema": { "properties": { + "certification_details": { + "description": "Details of the certification", + "type": "string" + }, + "certified_by": { + "description": "Person or group that has certified this dashboard", + "type": "string" + }, + "changed_by": { + "$ref": "#/components/schemas/User" + }, + "changed_by_name": { + "type": "string" + }, + "changed_by_url": { + "type": "string" + }, + "changed_on": { + "format": "date-time", + "type": "string" + }, + "changed_on_delta_humanized": { + "type": "string" + }, + "charts": { + "items": { + "description": "The names of the dashboard's charts. Names are used for legacy reasons.", + "type": "string" + }, + "type": "array" + }, + "css": { + "description": "Override CSS for the dashboard.", + "type": "string" + }, + "dashboard_title": { + "description": "A title for the dashboard.", + "type": "string" + }, "id": { "format": "int32", "type": "integer" + }, + "json_metadata": { + "description": "This JSON object is generated dynamically when clicking the save or overwrite button in the dashboard view. It is exposed here for reference and for power users who may want to alter specific parameters.", + "type": "string" + }, + "owners": { + "items": { + "$ref": "#/components/schemas/User" + }, + "type": "array" + }, + "position_json": { + "description": "This json object describes the positioning of the widgets in the dashboard. It is dynamically generated when adjusting the widgets size and positions by using drag & drop in the dashboard view", + "type": "string" + }, + "published": { + "type": "boolean" + }, + "roles": { + "items": { + "$ref": "#/components/schemas/Roles" + }, + "type": "array" + }, + "slug": { + "type": "string" + }, + "thumbnail_url": { + "type": "string" + }, + "url": { + "type": "string" } }, "type": "object" }, - "DatasetColumnsRestApi.get_list": { + "DashboardPermalinkPostSchema": { "properties": { - "id": { - "format": "int32", - "type": "integer" + "filterState": { + "description": "Native filter state", + "type": "object" + }, + "hash": { + "description": "Optional anchor link", + "nullable": true, + "type": "string" + }, + "urlParams": { + "description": "URL Parameters", + "items": { + "description": "URL Parameter key-value pair", + "nullable": true + }, + "nullable": true, + "type": "array" } }, + "required": [ + "filterState" + ], "type": "object" }, - "DatasetColumnsRestApi.post": { + "DashboardRestApi.get": { "properties": { "id": { "format": "int32", @@ -2878,1055 +3157,970 @@ }, "type": "object" }, - "DatasetColumnsRestApi.put": { + "DashboardRestApi.get_list": { "properties": { - "id": { - "format": "int32", - "type": "integer" - } - }, - "type": "object" - }, - "DatasetMetricRestApi.get": { - "properties": { - "id": { - "format": "int32", - "type": "integer" - } - }, - "type": "object" - }, - "DatasetMetricRestApi.get_list": { - "properties": { - "id": { - "format": "int32", - "type": "integer" - } - }, - "type": "object" - }, - "DatasetMetricRestApi.post": { - "properties": { - "id": { - "format": "int32", - "type": "integer" - } - }, - "type": "object" - }, - "DatasetMetricRestApi.put": { - "properties": { - "id": { - "format": "int32", - "type": "integer" - } - }, - "type": "object" - }, - "DatasetMetricsPut": { - "properties": { - "d3format": { - "maxLength": 128, - "minLength": 1, + "certification_details": { "nullable": true, "type": "string" }, - "description": { + "certified_by": { "nullable": true, "type": "string" }, - "expression": { + "changed_by": { + "$ref": "#/components/schemas/DashboardRestApi.get_list.User" + }, + "changed_by_name": { + "readOnly": true + }, + "changed_by_url": { + "readOnly": true + }, + "changed_on_delta_humanized": { + "readOnly": true + }, + "changed_on_utc": { + "readOnly": true + }, + "created_by": { + "$ref": "#/components/schemas/DashboardRestApi.get_list.User1" + }, + "css": { + "nullable": true, + "type": "string" + }, + "dashboard_title": { + "maxLength": 500, + "nullable": true, "type": "string" }, "id": { "format": "int32", "type": "integer" }, - "metric_name": { - "maxLength": 255, - "minLength": 1, + "json_metadata": { + "nullable": true, "type": "string" }, - "metric_type": { - "maxLength": 32, - "minLength": 1, + "owners": { + "$ref": "#/components/schemas/DashboardRestApi.get_list.User2" + }, + "position_json": { "nullable": true, "type": "string" }, - "warning_text": { + "published": { + "nullable": true, + "type": "boolean" + }, + "roles": { + "$ref": "#/components/schemas/DashboardRestApi.get_list.Role" + }, + "slug": { + "maxLength": 255, "nullable": true, "type": "string" + }, + "status": { + "readOnly": true + }, + "thumbnail_url": { + "readOnly": true + }, + "url": { + "readOnly": true } }, - "required": ["expression", "metric_name"], "type": "object" }, - "DatasetRelatedChart": { + "DashboardRestApi.get_list.Role": { "properties": { "id": { "format": "int32", "type": "integer" }, - "slice_name": { - "type": "string" - }, - "viz_type": { + "name": { + "maxLength": 64, "type": "string" } }, + "required": [ + "name" + ], "type": "object" }, - "DatasetRelatedCharts": { + "DashboardRestApi.get_list.User": { "properties": { - "count": { - "description": "Chart count", - "format": "int32", - "type": "integer" + "first_name": { + "maxLength": 64, + "type": "string" }, - "result": { - "description": "A list of dashboards", - "items": { - "$ref": "#/components/schemas/DatasetRelatedChart" - }, - "type": "array" - } - }, - "type": "object" - }, - "DatasetRelatedDashboard": { - "properties": { "id": { "format": "int32", "type": "integer" }, - "json_metadata": { - "type": "object" - }, - "slug": { + "last_name": { + "maxLength": 64, "type": "string" }, - "title": { + "username": { + "maxLength": 64, "type": "string" } }, + "required": [ + "first_name", + "last_name", + "username" + ], "type": "object" }, - "DatasetRelatedDashboards": { + "DashboardRestApi.get_list.User1": { "properties": { - "count": { - "description": "Dashboard count", + "first_name": { + "maxLength": 64, + "type": "string" + }, + "id": { "format": "int32", "type": "integer" }, - "result": { - "description": "A list of dashboards", - "items": { - "$ref": "#/components/schemas/DatasetRelatedDashboard" - }, - "type": "array" + "last_name": { + "maxLength": 64, + "type": "string" } }, + "required": [ + "first_name", + "last_name" + ], "type": "object" }, - "DatasetRelatedObjectsResponse": { + "DashboardRestApi.get_list.User2": { "properties": { - "charts": { - "$ref": "#/components/schemas/DatasetRelatedCharts" + "email": { + "maxLength": 64, + "type": "string" }, - "dashboards": { - "$ref": "#/components/schemas/DatasetRelatedDashboards" + "first_name": { + "maxLength": 64, + "type": "string" + }, + "id": { + "format": "int32", + "type": "integer" + }, + "last_name": { + "maxLength": 64, + "type": "string" + }, + "username": { + "maxLength": 64, + "type": "string" } }, + "required": [ + "email", + "first_name", + "last_name", + "username" + ], "type": "object" }, - "DatasetRestApi.get": { + "DashboardRestApi.post": { "properties": { - "cache_timeout": { - "format": "int32", + "certification_details": { + "description": "Details of the certification", "nullable": true, - "type": "integer" - }, - "columns": { - "$ref": "#/components/schemas/Meta22" - }, - "database": { - "$ref": "#/components/schemas/Meta23" - }, - "datasource_type": { - "readOnly": true + "type": "string" }, - "default_endpoint": { + "certified_by": { + "description": "Person or group that has certified this dashboard", "nullable": true, "type": "string" }, - "description": { - "nullable": true, + "css": { "type": "string" }, - "extra": { + "dashboard_title": { + "description": "A title for the dashboard.", + "maxLength": 500, + "minLength": 0, "nullable": true, "type": "string" }, - "fetch_values_predicate": { - "maxLength": 1000, + "external_url": { "nullable": true, "type": "string" }, - "filter_select_enabled": { + "is_managed_externally": { "nullable": true, "type": "boolean" }, - "id": { - "format": "int32", - "type": "integer" + "json_metadata": { + "description": "This JSON object is generated dynamically when clicking the save or overwrite button in the dashboard view. It is exposed here for reference and for power users who may want to alter specific parameters.", + "type": "string" }, - "is_sqllab_view": { - "nullable": true, - "type": "boolean" + "owners": { + "items": { + "description": "Owner are users ids allowed to delete or change this dashboard. If left empty you will be one of the owners of the dashboard.", + "format": "int32", + "type": "integer" + }, + "type": "array" }, - "main_dttm_col": { - "maxLength": 250, - "nullable": true, + "position_json": { + "description": "This json object describes the positioning of the widgets in the dashboard. It is dynamically generated when adjusting the widgets size and positions by using drag & drop in the dashboard view", "type": "string" }, - "metrics": { - "$ref": "#/components/schemas/Meta25" - }, - "offset": { - "format": "int32", - "nullable": true, - "type": "integer" + "published": { + "description": "Determines whether or not this dashboard is visible in the list of all dashboards.", + "type": "boolean" }, - "owners": { - "$ref": "#/components/schemas/Meta24" + "roles": { + "items": { + "description": "Roles is a list which defines access to the dashboard. These roles are always applied in addition to restrictions on dataset level access. If no roles defined then the dashboard is available to all roles.", + "format": "int32", + "type": "integer" + }, + "type": "array" }, - "schema": { + "slug": { + "description": "Unique identifying part for the web address of the dashboard.", "maxLength": 255, + "minLength": 1, + "nullable": true, + "type": "string" + } + }, + "type": "object" + }, + "DashboardRestApi.put": { + "properties": { + "certification_details": { + "description": "Details of the certification", "nullable": true, "type": "string" }, - "sql": { + "certified_by": { + "description": "Person or group that has certified this dashboard", "nullable": true, "type": "string" }, - "table_name": { - "maxLength": 250, + "css": { + "description": "Override CSS for the dashboard.", + "nullable": true, "type": "string" }, - "template_params": { + "dashboard_title": { + "description": "A title for the dashboard.", + "maxLength": 500, + "minLength": 0, "nullable": true, "type": "string" }, - "url": { - "readOnly": true - } - }, - "required": ["columns", "database", "metrics", "table_name"], - "type": "object" - }, - "DatasetRestApi.get_list": { - "properties": { - "changed_by": { - "$ref": "#/components/schemas/Meta19" - }, - "changed_by_name": { - "readOnly": true - }, - "changed_by_url": { - "readOnly": true - }, - "changed_on_delta_humanized": { - "readOnly": true - }, - "changed_on_utc": { - "readOnly": true - }, - "database": { - "$ref": "#/components/schemas/Meta21" - }, - "default_endpoint": { + "external_url": { "nullable": true, "type": "string" }, - "explore_url": { - "readOnly": true + "is_managed_externally": { + "nullable": true, + "type": "boolean" }, - "extra": { + "json_metadata": { + "description": "This JSON object is generated dynamically when clicking the save or overwrite button in the dashboard view. It is exposed here for reference and for power users who may want to alter specific parameters.", "nullable": true, "type": "string" }, - "id": { - "format": "int32", - "type": "integer" - }, - "kind": { - "readOnly": true - }, "owners": { - "$ref": "#/components/schemas/Meta20" + "items": { + "description": "Owner are users ids allowed to delete or change this dashboard. If left empty you will be one of the owners of the dashboard.", + "format": "int32", + "nullable": true, + "type": "integer" + }, + "type": "array" }, - "schema": { - "maxLength": 255, + "position_json": { + "description": "This json object describes the positioning of the widgets in the dashboard. It is dynamically generated when adjusting the widgets size and positions by using drag & drop in the dashboard view", "nullable": true, "type": "string" }, - "sql": { + "published": { + "description": "Determines whether or not this dashboard is visible in the list of all dashboards.", "nullable": true, - "type": "string" - }, - "table_name": { - "maxLength": 250, - "type": "string" - } - }, - "required": ["database", "table_name"], - "type": "object" - }, - "DatasetRestApi.post": { - "properties": { - "database": { - "format": "int32", - "type": "integer" + "type": "boolean" }, - "owners": { + "roles": { "items": { + "description": "Roles is a list which defines access to the dashboard. These roles are always applied in addition to restrictions on dataset level access. If no roles defined then the dashboard is available to all roles.", "format": "int32", + "nullable": true, "type": "integer" }, "type": "array" }, - "schema": { - "maxLength": 250, + "slug": { + "description": "Unique identifying part for the web address of the dashboard.", + "maxLength": 255, "minLength": 0, - "type": "string" - }, - "table_name": { - "maxLength": 250, - "minLength": 1, + "nullable": true, "type": "string" } }, - "required": ["database", "table_name"], "type": "object" }, - "DatasetRestApi.put": { + "Database": { "properties": { - "cache_timeout": { - "format": "int32", - "nullable": true, - "type": "integer" - }, - "columns": { - "items": { - "$ref": "#/components/schemas/DatasetColumnsPut" - }, - "type": "array" - }, - "database_id": { - "format": "int32", - "type": "integer" - }, - "default_endpoint": { - "nullable": true, - "type": "string" - }, - "description": { - "nullable": true, - "type": "string" - }, - "extra": { - "nullable": true, - "type": "string" + "allow_multi_schema_metadata_fetch": { + "type": "boolean" }, - "fetch_values_predicate": { - "maxLength": 1000, - "minLength": 0, - "nullable": true, - "type": "string" + "allows_cost_estimate": { + "type": "boolean" }, - "filter_select_enabled": { - "nullable": true, + "allows_subquery": { "type": "boolean" }, - "is_sqllab_view": { - "nullable": true, + "allows_virtual_table_explore": { "type": "boolean" }, - "main_dttm_col": { - "nullable": true, + "backend": { "type": "string" }, - "metrics": { - "items": { - "$ref": "#/components/schemas/DatasetMetricsPut" - }, - "type": "array" + "disable_data_preview": { + "type": "boolean" }, - "offset": { + "explore_database_id": { "format": "int32", - "nullable": true, "type": "integer" }, - "owners": { + "id": { + "format": "int32", + "type": "integer" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "DatabaseFunctionNamesResponse": { + "properties": { + "function_names": { "items": { - "format": "int32", - "type": "integer" + "type": "string" }, "type": "array" - }, - "schema": { - "maxLength": 255, - "minLength": 0, - "nullable": true, - "type": "string" - }, - "sql": { - "nullable": true, - "type": "string" - }, - "table_name": { - "maxLength": 250, - "minLength": 1, - "nullable": true, - "type": "string" - }, - "template_params": { - "nullable": true, - "type": "string" } }, "type": "object" }, - "Datasource": { + "DatabaseRelatedChart": { "properties": { - "database_name": { - "description": "Datasource name", - "type": "string" - }, - "datasource_name": { - "description": "The datasource name.", - "type": "string" + "id": { + "format": "int32", + "type": "integer" }, - "datasource_type": { - "description": "The type of dataset/datasource identified on `datasource_id`.", - "enum": ["druid", "table", "view"], + "slice_name": { "type": "string" }, - "schema": { - "description": "Datasource schema", + "viz_type": { "type": "string" } }, - "required": ["datasource_type"], "type": "object" }, - "DistincResponseSchema": { + "DatabaseRelatedCharts": { "properties": { "count": { - "description": "The total number of distinct values", + "description": "Chart count", "format": "int32", "type": "integer" }, "result": { + "description": "A list of dashboards", "items": { - "$ref": "#/components/schemas/DistinctResultResponse" + "$ref": "#/components/schemas/DatabaseRelatedChart" }, "type": "array" } }, "type": "object" }, - "DistinctResultResponse": { + "DatabaseRelatedDashboard": { "properties": { - "text": { - "description": "The distinct item", + "id": { + "format": "int32", + "type": "integer" + }, + "json_metadata": { + "type": "object" + }, + "slug": { + "type": "string" + }, + "title": { "type": "string" } }, "type": "object" }, - "GetFavStarIdsSchema": { + "DatabaseRelatedDashboards": { "properties": { + "count": { + "description": "Dashboard count", + "format": "int32", + "type": "integer" + }, "result": { - "description": "A list of results for each corresponding chart in the request", + "description": "A list of dashboards", "items": { - "$ref": "#/components/schemas/ChartFavStarResponseResult" + "$ref": "#/components/schemas/DatabaseRelatedDashboard" }, "type": "array" } }, "type": "object" }, - "LogRestApi.get": { + "DatabaseRelatedObjectsResponse": { "properties": { - "action": { - "maxLength": 512, - "nullable": true, - "type": "string" + "charts": { + "$ref": "#/components/schemas/DatabaseRelatedCharts" }, - "dashboard_id": { - "format": "int32", + "dashboards": { + "$ref": "#/components/schemas/DatabaseRelatedDashboards" + } + }, + "type": "object" + }, + "DatabaseRestApi.get": { + "properties": { + "allow_ctas": { "nullable": true, - "type": "integer" + "type": "boolean" }, - "dttm": { - "format": "date-time", + "allow_cvas": { "nullable": true, - "type": "string" + "type": "boolean" }, - "duration_ms": { - "format": "int32", + "allow_dml": { "nullable": true, - "type": "integer" + "type": "boolean" }, - "json": { + "allow_file_upload": { "nullable": true, - "type": "string" + "type": "boolean" }, - "referrer": { - "maxLength": 1024, + "allow_multi_schema_metadata_fetch": { "nullable": true, - "type": "string" + "type": "boolean" }, - "slice_id": { - "format": "int32", + "allow_run_async": { "nullable": true, - "type": "integer" - }, - "user": { - "$ref": "#/components/schemas/Meta43" + "type": "boolean" }, - "user_id": { - "format": "int32", - "nullable": true, - "type": "integer" - } - }, - "type": "object" - }, - "LogRestApi.get_list": { - "properties": { - "action": { - "maxLength": 512, - "nullable": true, - "type": "string" + "backend": { + "readOnly": true }, - "dashboard_id": { + "cache_timeout": { "format": "int32", "nullable": true, "type": "integer" }, - "dttm": { - "format": "date-time", + "configuration_method": { + "maxLength": 255, "nullable": true, "type": "string" }, - "duration_ms": { - "format": "int32", - "nullable": true, - "type": "integer" - }, - "json": { - "nullable": true, + "database_name": { + "maxLength": 250, "type": "string" }, - "referrer": { - "maxLength": 1024, + "encrypted_extra": { "nullable": true, "type": "string" }, - "slice_id": { - "format": "int32", - "nullable": true, - "type": "integer" - }, - "user": { - "$ref": "#/components/schemas/Meta42" - }, - "user_id": { - "format": "int32", - "nullable": true, - "type": "integer" - } - }, - "type": "object" - }, - "LogRestApi.post": { - "properties": { - "id": { - "format": "int32", - "type": "integer" - } - }, - "type": "object" - }, - "LogRestApi.put": { - "properties": { - "action": { - "maxLength": 512, + "expose_in_sqllab": { "nullable": true, - "type": "string" + "type": "boolean" }, - "dttm": { - "format": "date-time", + "extra": { "nullable": true, "type": "string" }, - "json": { + "force_ctas_schema": { + "maxLength": 250, "nullable": true, "type": "string" }, - "user": { - "nullable": true - } - }, - "type": "object" - }, - "Meta": { - "properties": { - "first_name": { - "maxLength": 64, - "type": "string" - }, "id": { "format": "int32", "type": "integer" - } - }, - "required": ["first_name"], - "type": "object" - }, - "Meta1": { - "properties": { - "first_name": { - "maxLength": 64, - "type": "string" }, - "id": { - "format": "int32", - "type": "integer" - } - }, - "required": ["first_name"], - "type": "object" - }, - "Meta10": { - "properties": { - "first_name": { - "maxLength": 64, - "type": "string" + "impersonate_user": { + "nullable": true, + "type": "boolean" }, - "id": { - "format": "int32", - "type": "integer" + "parameters": { + "readOnly": true }, - "last_name": { - "maxLength": 64, - "type": "string" + "parameters_schema": { + "readOnly": true }, - "username": { - "maxLength": 64, - "type": "string" - } - }, - "required": ["first_name", "last_name", "username"], - "type": "object" - }, - "Meta11": { - "properties": { - "first_name": { - "maxLength": 64, + "server_cert": { + "nullable": true, "type": "string" }, - "id": { - "format": "int32", - "type": "integer" - }, - "last_name": { - "maxLength": 64, + "sqlalchemy_uri": { + "maxLength": 1024, "type": "string" } }, - "required": ["first_name", "last_name"], + "required": [ + "database_name", + "sqlalchemy_uri" + ], "type": "object" }, - "Meta12": { + "DatabaseRestApi.get_list": { "properties": { - "active": { + "allow_ctas": { "nullable": true, "type": "boolean" }, - "changed_on": { - "format": "date-time", + "allow_cvas": { "nullable": true, - "type": "string" + "type": "boolean" }, - "created_on": { - "format": "date-time", + "allow_dml": { "nullable": true, - "type": "string" + "type": "boolean" }, - "email": { - "maxLength": 64, - "type": "string" + "allow_file_upload": { + "nullable": true, + "type": "boolean" }, - "fail_login_count": { - "format": "int32", + "allow_multi_schema_metadata_fetch": { "nullable": true, - "type": "integer" + "type": "boolean" }, - "first_name": { - "maxLength": 64, - "type": "string" + "allow_run_async": { + "nullable": true, + "type": "boolean" }, - "id": { - "format": "int32", - "type": "integer" + "allows_cost_estimate": { + "readOnly": true + }, + "allows_subquery": { + "readOnly": true + }, + "allows_virtual_table_explore": { + "readOnly": true + }, + "backend": { + "readOnly": true }, - "last_login": { + "changed_on": { "format": "date-time", "nullable": true, "type": "string" }, - "last_name": { - "maxLength": 64, + "changed_on_delta_humanized": { + "readOnly": true + }, + "created_by": { + "$ref": "#/components/schemas/DatabaseRestApi.get_list.User" + }, + "database_name": { + "maxLength": 250, "type": "string" }, - "login_count": { - "format": "int32", + "disable_data_preview": { + "readOnly": true + }, + "explore_database_id": { + "readOnly": true + }, + "expose_in_sqllab": { "nullable": true, - "type": "integer" + "type": "boolean" }, - "password": { - "maxLength": 256, + "extra": { "nullable": true, "type": "string" }, - "username": { - "maxLength": 64, - "type": "string" - } - }, - "required": ["email", "first_name", "last_name", "username"], - "type": "object" - }, - "Meta13": { - "properties": { - "first_name": { - "maxLength": 64, + "force_ctas_schema": { + "maxLength": 250, + "nullable": true, "type": "string" }, "id": { "format": "int32", "type": "integer" - }, - "last_name": { - "maxLength": 64, - "type": "string" } }, - "required": ["first_name", "last_name"], + "required": [ + "database_name" + ], "type": "object" }, - "Meta14": { + "DatabaseRestApi.get_list.User": { "properties": { "first_name": { "maxLength": 64, "type": "string" }, - "id": { - "format": "int32", - "type": "integer" - }, "last_name": { "maxLength": 64, "type": "string" } }, - "required": ["first_name", "last_name"], + "required": [ + "first_name", + "last_name" + ], "type": "object" }, - "Meta15": { + "DatabaseRestApi.post": { "properties": { - "first_name": { - "maxLength": 64, - "type": "string" - }, - "id": { - "format": "int32", - "type": "integer" + "allow_ctas": { + "description": "Allow CREATE TABLE AS option in SQL Lab", + "type": "boolean" }, - "last_name": { - "maxLength": 64, - "type": "string" + "allow_cvas": { + "description": "Allow CREATE VIEW AS option in SQL Lab", + "type": "boolean" }, - "username": { - "maxLength": 64, - "type": "string" - } - }, - "required": ["first_name", "last_name", "username"], - "type": "object" - }, - "Meta16": { - "properties": { - "id": { - "format": "int32", - "type": "integer" + "allow_dml": { + "description": "Allow users to run non-SELECT statements (UPDATE, DELETE, CREATE, ...) in SQL Lab", + "type": "boolean" }, - "name": { - "maxLength": 64, - "type": "string" - } - }, - "required": ["name"], - "type": "object" - }, - "Meta17": { - "properties": { - "first_name": { - "maxLength": 64, - "type": "string" + "allow_file_upload": { + "description": "Allow to upload CSV file data into this databaseIf selected, please set the schemas allowed for csv upload in Extra.", + "type": "boolean" }, - "id": { + "allow_multi_schema_metadata_fetch": { + "description": "Allow SQL Lab to fetch a list of all tables and all views across all database schemas. For large data warehouse with thousands of tables, this can be expensive and put strain on the system.", + "type": "boolean" + }, + "allow_run_async": { + "description": "Operate the database in asynchronous mode, meaning that the queries are executed on remote workers as opposed to on the web server itself. This assumes that you have a Celery worker setup as well as a results backend. Refer to the installation docs for more information.", + "type": "boolean" + }, + "cache_timeout": { + "description": "Duration (in seconds) of the caching timeout for charts of this database. A timeout of 0 indicates that the cache never expires. Note this defaults to the global timeout if undefined.", "format": "int32", + "nullable": true, "type": "integer" }, - "last_name": { - "maxLength": 64, - "type": "string" + "configuration_method": { + "default": "sqlalchemy_form", + "description": "Configuration_method is used on the frontend to inform the backend whether to explode parameters or to provide only a sqlalchemy_uri." }, - "username": { - "maxLength": 64, + "database_name": { + "description": "A database name to identify this connection.", + "maxLength": 250, + "minLength": 1, "type": "string" - } - }, - "required": ["first_name", "last_name", "username"], - "type": "object" - }, - "Meta18": { - "properties": { - "first_name": { - "maxLength": 64, + }, + "encrypted_extra": { + "description": "

JSON string containing additional connection configuration.
This is used to provide connection information for systems like Hive, Presto, and BigQuery, which do not conform to the username:password syntax normally used by SQLAlchemy.

", + "nullable": true, "type": "string" }, - "last_name": { - "maxLength": 64, + "engine": { + "description": "SQLAlchemy engine to use", + "nullable": true, "type": "string" - } - }, - "required": ["first_name", "last_name"], - "type": "object" - }, - "Meta19": { - "properties": { - "first_name": { - "maxLength": 64, + }, + "expose_in_sqllab": { + "description": "Expose this database to SQLLab", + "type": "boolean" + }, + "external_url": { + "nullable": true, "type": "string" }, - "username": { - "maxLength": 64, + "extra": { + "description": "

JSON string containing extra configuration elements.
1. The engine_params object gets unpacked into the sqlalchemy.create_engine call, while the metadata_params gets unpacked into the sqlalchemy.MetaData call.
2. The metadata_cache_timeout is a cache timeout setting in seconds for metadata fetch of this database. Specify it as \"metadata_cache_timeout\": {\"schema_cache_timeout\": 600, \"table_cache_timeout\": 600}. If unset, cache will not be enabled for the functionality. A timeout of 0 indicates that the cache never expires.
3. The schemas_allowed_for_file_upload is a comma separated list of schemas that CSVs are allowed to upload to. Specify it as \"schemas_allowed_for_file_upload\": [\"public\", \"csv_upload\"]. If database flavor does not support schema or any schema is allowed to be accessed, just leave the list empty
4. The version field is a string specifying the this db's version. This should be used with Presto DBs so that the syntax is correct
5. The allows_virtual_table_explore field is a boolean specifying whether or not the Explore button in SQL Lab results is shown.
6. The disable_data_preview field is a boolean specifying whether or not data preview queries will be run when fetching table metadata in SQL Lab.

", "type": "string" - } - }, - "required": ["first_name", "username"], - "type": "object" - }, - "Meta2": { - "properties": { - "id": { - "format": "int32", - "type": "integer" }, - "name": { + "force_ctas_schema": { + "description": "When allowing CREATE TABLE AS option in SQL Lab, this option forces the table to be created in this schema", "maxLength": 250, + "minLength": 0, "nullable": true, "type": "string" - } - }, - "type": "object" - }, - "Meta20": { - "properties": { - "first_name": { - "maxLength": 64, - "type": "string" }, - "id": { - "format": "int32", - "type": "integer" + "impersonate_user": { + "description": "If Presto, all the queries in SQL Lab are going to be executed as the currently logged on user who must have permission to run them.
If Hive and hive.server2.enable.doAs is enabled, will run the queries as service account, but impersonate the currently logged on user via hive.server2.proxy.user property.", + "type": "boolean" }, - "last_name": { - "maxLength": 64, + "is_managed_externally": { + "nullable": true, + "type": "boolean" + }, + "parameters": { + "additionalProperties": {}, + "description": "DB-specific parameters for configuration", + "type": "object" + }, + "server_cert": { + "description": "

Optional CA_BUNDLE contents to validate HTTPS requests. Only available on certain database engines.

", + "nullable": true, "type": "string" }, - "username": { - "maxLength": 64, + "sqlalchemy_uri": { + "description": "

Refer to the SqlAlchemy docs for more information on how to structure your URI.

", + "maxLength": 1024, + "minLength": 1, "type": "string" } }, - "required": ["first_name", "last_name", "username"], + "required": [ + "database_name" + ], "type": "object" }, - "Meta21": { + "DatabaseRestApi.put": { "properties": { - "database_name": { - "maxLength": 250, - "type": "string" + "allow_ctas": { + "description": "Allow CREATE TABLE AS option in SQL Lab", + "type": "boolean" }, - "id": { + "allow_cvas": { + "description": "Allow CREATE VIEW AS option in SQL Lab", + "type": "boolean" + }, + "allow_dml": { + "description": "Allow users to run non-SELECT statements (UPDATE, DELETE, CREATE, ...) in SQL Lab", + "type": "boolean" + }, + "allow_file_upload": { + "description": "Allow to upload CSV file data into this databaseIf selected, please set the schemas allowed for csv upload in Extra.", + "type": "boolean" + }, + "allow_multi_schema_metadata_fetch": { + "description": "Allow SQL Lab to fetch a list of all tables and all views across all database schemas. For large data warehouse with thousands of tables, this can be expensive and put strain on the system.", + "type": "boolean" + }, + "allow_run_async": { + "description": "Operate the database in asynchronous mode, meaning that the queries are executed on remote workers as opposed to on the web server itself. This assumes that you have a Celery worker setup as well as a results backend. Refer to the installation docs for more information.", + "type": "boolean" + }, + "cache_timeout": { + "description": "Duration (in seconds) of the caching timeout for charts of this database. A timeout of 0 indicates that the cache never expires. Note this defaults to the global timeout if undefined.", "format": "int32", - "type": "integer" - } - }, - "required": ["database_name"], - "type": "object" - }, - "Meta22": { - "properties": { - "changed_on": { - "format": "date-time", "nullable": true, - "type": "string" + "type": "integer" }, - "column_name": { - "maxLength": 255, - "type": "string" + "configuration_method": { + "default": "sqlalchemy_form", + "description": "Configuration_method is used on the frontend to inform the backend whether to explode parameters or to provide only a sqlalchemy_uri." }, - "created_on": { - "format": "date-time", + "database_name": { + "description": "A database name to identify this connection.", + "maxLength": 250, + "minLength": 1, "nullable": true, "type": "string" }, - "description": { + "encrypted_extra": { + "description": "

JSON string containing additional connection configuration.
This is used to provide connection information for systems like Hive, Presto, and BigQuery, which do not conform to the username:password syntax normally used by SQLAlchemy.

", "nullable": true, "type": "string" }, - "expression": { + "engine": { + "description": "SQLAlchemy engine to use", "nullable": true, "type": "string" }, - "filterable": { - "nullable": true, + "expose_in_sqllab": { + "description": "Expose this database to SQLLab", "type": "boolean" }, - "groupby": { + "external_url": { "nullable": true, - "type": "boolean" + "type": "string" }, - "id": { - "format": "int32", - "type": "integer" + "extra": { + "description": "

JSON string containing extra configuration elements.
1. The engine_params object gets unpacked into the sqlalchemy.create_engine call, while the metadata_params gets unpacked into the sqlalchemy.MetaData call.
2. The metadata_cache_timeout is a cache timeout setting in seconds for metadata fetch of this database. Specify it as \"metadata_cache_timeout\": {\"schema_cache_timeout\": 600, \"table_cache_timeout\": 600}. If unset, cache will not be enabled for the functionality. A timeout of 0 indicates that the cache never expires.
3. The schemas_allowed_for_file_upload is a comma separated list of schemas that CSVs are allowed to upload to. Specify it as \"schemas_allowed_for_file_upload\": [\"public\", \"csv_upload\"]. If database flavor does not support schema or any schema is allowed to be accessed, just leave the list empty
4. The version field is a string specifying the this db's version. This should be used with Presto DBs so that the syntax is correct
5. The allows_virtual_table_explore field is a boolean specifying whether or not the Explore button in SQL Lab results is shown.
6. The disable_data_preview field is a boolean specifying whether or not data preview queries will be run when fetching table metadata in SQL Lab.

", + "type": "string" }, - "is_active": { + "force_ctas_schema": { + "description": "When allowing CREATE TABLE AS option in SQL Lab, this option forces the table to be created in this schema", + "maxLength": 250, + "minLength": 0, "nullable": true, - "type": "boolean" + "type": "string" }, - "is_dttm": { - "nullable": true, + "impersonate_user": { + "description": "If Presto, all the queries in SQL Lab are going to be executed as the currently logged on user who must have permission to run them.
If Hive and hive.server2.enable.doAs is enabled, will run the queries as service account, but impersonate the currently logged on user via hive.server2.proxy.user property.", "type": "boolean" }, - "python_date_format": { - "maxLength": 255, - "nullable": true, - "type": "string" - }, - "type": { - "maxLength": 32, + "is_managed_externally": { "nullable": true, - "type": "string" + "type": "boolean" }, - "type_generic": { - "readOnly": true + "parameters": { + "additionalProperties": {}, + "description": "DB-specific parameters for configuration", + "type": "object" }, - "uuid": { - "format": "uuid", + "server_cert": { + "description": "

Optional CA_BUNDLE contents to validate HTTPS requests. Only available on certain database engines.

", "nullable": true, "type": "string" }, - "verbose_name": { + "sqlalchemy_uri": { + "description": "

Refer to the SqlAlchemy docs for more information on how to structure your URI.

", "maxLength": 1024, - "nullable": true, + "minLength": 0, "type": "string" } }, - "required": ["column_name"], "type": "object" }, - "Meta23": { + "DatabaseTestConnectionSchema": { "properties": { + "configuration_method": { + "default": "sqlalchemy_form", + "description": "Configuration_method is used on the frontend to inform the backend whether to explode parameters or to provide only a sqlalchemy_uri." + }, "database_name": { + "description": "A database name to identify this connection.", "maxLength": 250, + "minLength": 1, + "nullable": true, "type": "string" }, - "id": { - "format": "int32", - "type": "integer" - } - }, - "required": ["database_name"], - "type": "object" - }, - "Meta24": { - "properties": { - "first_name": { - "maxLength": 64, + "encrypted_extra": { + "description": "

JSON string containing additional connection configuration.
This is used to provide connection information for systems like Hive, Presto, and BigQuery, which do not conform to the username:password syntax normally used by SQLAlchemy.

", + "nullable": true, "type": "string" }, - "id": { - "format": "int32", - "type": "integer" + "engine": { + "description": "SQLAlchemy engine to use", + "nullable": true, + "type": "string" }, - "last_name": { - "maxLength": 64, + "extra": { + "description": "

JSON string containing extra configuration elements.
1. The engine_params object gets unpacked into the sqlalchemy.create_engine call, while the metadata_params gets unpacked into the sqlalchemy.MetaData call.
2. The metadata_cache_timeout is a cache timeout setting in seconds for metadata fetch of this database. Specify it as \"metadata_cache_timeout\": {\"schema_cache_timeout\": 600, \"table_cache_timeout\": 600}. If unset, cache will not be enabled for the functionality. A timeout of 0 indicates that the cache never expires.
3. The schemas_allowed_for_file_upload is a comma separated list of schemas that CSVs are allowed to upload to. Specify it as \"schemas_allowed_for_file_upload\": [\"public\", \"csv_upload\"]. If database flavor does not support schema or any schema is allowed to be accessed, just leave the list empty
4. The version field is a string specifying the this db's version. This should be used with Presto DBs so that the syntax is correct
5. The allows_virtual_table_explore field is a boolean specifying whether or not the Explore button in SQL Lab results is shown.
6. The disable_data_preview field is a boolean specifying whether or not data preview queries will be run when fetching table metadata in SQL Lab.

", "type": "string" }, - "username": { - "maxLength": 64, + "impersonate_user": { + "description": "If Presto, all the queries in SQL Lab are going to be executed as the currently logged on user who must have permission to run them.
If Hive and hive.server2.enable.doAs is enabled, will run the queries as service account, but impersonate the currently logged on user via hive.server2.proxy.user property.", + "type": "boolean" + }, + "parameters": { + "additionalProperties": {}, + "description": "DB-specific parameters for configuration", + "type": "object" + }, + "server_cert": { + "description": "

Optional CA_BUNDLE contents to validate HTTPS requests. Only available on certain database engines.

", + "nullable": true, + "type": "string" + }, + "sqlalchemy_uri": { + "description": "

Refer to the SqlAlchemy docs for more information on how to structure your URI.

", + "maxLength": 1024, + "minLength": 1, "type": "string" } }, - "required": ["first_name", "last_name", "username"], "type": "object" }, - "Meta25": { + "DatabaseValidateParametersSchema": { "properties": { - "changed_on": { - "format": "date-time", + "configuration_method": { + "description": "Configuration_method is used on the frontend to inform the backend whether to explode parameters or to provide only a sqlalchemy_uri." + }, + "database_name": { + "description": "A database name to identify this connection.", + "maxLength": 250, + "minLength": 1, "nullable": true, "type": "string" }, - "created_on": { - "format": "date-time", + "encrypted_extra": { + "description": "

JSON string containing additional connection configuration.
This is used to provide connection information for systems like Hive, Presto, and BigQuery, which do not conform to the username:password syntax normally used by SQLAlchemy.

", "nullable": true, "type": "string" }, - "d3format": { - "maxLength": 128, + "engine": { + "description": "SQLAlchemy engine to use", + "type": "string" + }, + "extra": { + "description": "

JSON string containing extra configuration elements.
1. The engine_params object gets unpacked into the sqlalchemy.create_engine call, while the metadata_params gets unpacked into the sqlalchemy.MetaData call.
2. The metadata_cache_timeout is a cache timeout setting in seconds for metadata fetch of this database. Specify it as \"metadata_cache_timeout\": {\"schema_cache_timeout\": 600, \"table_cache_timeout\": 600}. If unset, cache will not be enabled for the functionality. A timeout of 0 indicates that the cache never expires.
3. The schemas_allowed_for_file_upload is a comma separated list of schemas that CSVs are allowed to upload to. Specify it as \"schemas_allowed_for_file_upload\": [\"public\", \"csv_upload\"]. If database flavor does not support schema or any schema is allowed to be accessed, just leave the list empty
4. The version field is a string specifying the this db's version. This should be used with Presto DBs so that the syntax is correct
5. The allows_virtual_table_explore field is a boolean specifying whether or not the Explore button in SQL Lab results is shown.
6. The disable_data_preview field is a boolean specifying whether or not data preview queries will be run when fetching table metadata in SQL Lab.

", + "type": "string" + }, + "impersonate_user": { + "description": "If Presto, all the queries in SQL Lab are going to be executed as the currently logged on user who must have permission to run them.
If Hive and hive.server2.enable.doAs is enabled, will run the queries as service account, but impersonate the currently logged on user via hive.server2.proxy.user property.", + "type": "boolean" + }, + "parameters": { + "additionalProperties": { + "nullable": true + }, + "description": "DB-specific parameters for configuration", + "type": "object" + }, + "server_cert": { + "description": "

Optional CA_BUNDLE contents to validate HTTPS requests. Only available on certain database engines.

", "nullable": true, "type": "string" + } + }, + "required": [ + "configuration_method", + "engine" + ], + "type": "object" + }, + "DatasetColumnsPut": { + "properties": { + "column_name": { + "maxLength": 255, + "minLength": 1, + "type": "string" }, "description": { "nullable": true, "type": "string" }, "expression": { + "nullable": true, "type": "string" }, "extra": { "nullable": true, "type": "string" }, + "filterable": { + "type": "boolean" + }, + "groupby": { + "type": "boolean" + }, "id": { "format": "int32", "type": "integer" }, - "metric_name": { + "is_active": { + "type": "boolean" + }, + "is_dttm": { + "type": "boolean" + }, + "python_date_format": { "maxLength": 255, + "minLength": 1, + "nullable": true, "type": "string" }, - "metric_type": { - "maxLength": 32, + "type": { "nullable": true, "type": "string" }, @@ -3936,51 +4130,34 @@ "type": "string" }, "verbose_name": { - "maxLength": 1024, - "nullable": true, - "type": "string" - }, - "warning_text": { "nullable": true, "type": "string" } }, - "required": ["expression", "metric_name"], + "required": [ + "column_name" + ], "type": "object" }, - "Meta26": { + "DatasetColumnsRestApi.get": { "properties": { - "first_name": { - "maxLength": 64, - "type": "string" - }, "id": { "format": "int32", "type": "integer" - }, - "last_name": { - "maxLength": 64, - "type": "string" - }, - "username": { - "maxLength": 64, - "type": "string" } }, - "required": ["first_name", "last_name", "username"], "type": "object" }, - "Meta27": { + "DatasetColumnsRestApi.get_list": { "properties": { - "database_name": { - "maxLength": 250, - "type": "string" + "id": { + "format": "int32", + "type": "integer" } }, - "required": ["database_name"], "type": "object" }, - "Meta28": { + "DatasetColumnsRestApi.post": { "properties": { "id": { "format": "int32", @@ -3989,334 +4166,279 @@ }, "type": "object" }, - "Meta29": { + "DatasetColumnsRestApi.put": { "properties": { - "first_name": { - "maxLength": 64, - "type": "string" - }, "id": { "format": "int32", "type": "integer" - }, - "last_name": { - "maxLength": 64, - "type": "string" } }, - "required": ["first_name", "last_name"], "type": "object" }, - "Meta3": { + "DatasetMetricRestApi.get": { "properties": { - "first_name": { - "maxLength": 64, - "type": "string" - }, - "last_name": { - "maxLength": 64, - "type": "string" + "id": { + "format": "int32", + "type": "integer" } }, - "required": ["first_name", "last_name"], "type": "object" }, - "Meta30": { + "DatasetMetricRestApi.get_list": { "properties": { - "database_name": { - "maxLength": 250, - "type": "string" - }, "id": { "format": "int32", "type": "integer" } }, - "required": ["database_name"], "type": "object" }, - "Meta31": { + "DatasetMetricRestApi.post": { "properties": { - "first_name": { - "maxLength": 64, - "type": "string" - }, "id": { "format": "int32", "type": "integer" - }, - "last_name": { - "maxLength": 64, - "type": "string" } }, - "required": ["first_name", "last_name"], "type": "object" }, - "Meta32": { + "DatasetMetricRestApi.put": { "properties": { - "database_name": { - "maxLength": 250, - "type": "string" - }, "id": { "format": "int32", "type": "integer" } }, - "required": ["database_name"], "type": "object" }, - "Meta33": { + "DatasetMetricsPut": { "properties": { - "first_name": { - "maxLength": 64, + "d3format": { + "maxLength": 128, + "minLength": 1, + "nullable": true, "type": "string" }, - "last_name": { - "maxLength": 64, + "description": { + "nullable": true, "type": "string" - } - }, - "required": ["first_name", "last_name"], - "type": "object" - }, - "Meta34": { - "properties": { - "first_name": { - "maxLength": 64, + }, + "expression": { "type": "string" }, - "last_name": { - "maxLength": 64, + "extra": { + "nullable": true, "type": "string" - } - }, - "required": ["first_name", "last_name"], - "type": "object" - }, - "Meta35": { - "properties": { + }, "id": { "format": "int32", "type": "integer" }, - "type": { - "maxLength": 50, + "metric_name": { + "maxLength": 255, + "minLength": 1, "type": "string" - } - }, - "required": ["type"], - "type": "object" - }, - "Meta36": { - "properties": { - "first_name": { - "maxLength": 64, + }, + "metric_type": { + "maxLength": 32, + "minLength": 1, + "nullable": true, "type": "string" }, - "id": { - "format": "int32", - "type": "integer" + "uuid": { + "format": "uuid", + "nullable": true, + "type": "string" }, - "last_name": { - "maxLength": 64, + "verbose_name": { + "nullable": true, + "type": "string" + }, + "warning_text": { + "nullable": true, "type": "string" } }, - "required": ["first_name", "last_name"], + "required": [ + "expression", + "metric_name" + ], "type": "object" }, - "Meta37": { + "DatasetRelatedChart": { "properties": { - "database_name": { - "maxLength": 250, - "type": "string" - }, "id": { "format": "int32", "type": "integer" + }, + "slice_name": { + "type": "string" + }, + "viz_type": { + "type": "string" } }, - "required": ["database_name"], "type": "object" }, - "Meta38": { + "DatasetRelatedCharts": { "properties": { - "id": { + "count": { + "description": "Chart count", "format": "int32", "type": "integer" }, - "recipient_config_json": { - "nullable": true, - "type": "string" - }, - "type": { - "maxLength": 50, - "type": "string" + "result": { + "description": "A list of dashboards", + "items": { + "$ref": "#/components/schemas/DatasetRelatedChart" + }, + "type": "array" } }, - "required": ["type"], "type": "object" }, - "Meta39": { + "DatasetRelatedDashboard": { "properties": { - "first_name": { - "maxLength": 64, - "type": "string" - }, "id": { "format": "int32", "type": "integer" }, - "last_name": { - "maxLength": 64, - "type": "string" - } - }, - "required": ["first_name", "last_name"], - "type": "object" - }, - "Meta4": { - "properties": { - "first_name": { - "maxLength": 64, + "json_metadata": { + "type": "object" + }, + "slug": { "type": "string" }, - "last_name": { - "maxLength": 64, + "title": { "type": "string" } }, - "required": ["first_name", "last_name"], "type": "object" }, - "Meta40": { + "DatasetRelatedDashboards": { "properties": { - "id": { + "count": { + "description": "Dashboard count", "format": "int32", "type": "integer" }, - "slice_name": { - "maxLength": 250, - "nullable": true, - "type": "string" - }, - "viz_type": { - "maxLength": 250, - "nullable": true, - "type": "string" + "result": { + "description": "A list of dashboards", + "items": { + "$ref": "#/components/schemas/DatasetRelatedDashboard" + }, + "type": "array" } }, "type": "object" }, - "Meta41": { + "DatasetRelatedObjectsResponse": { "properties": { - "dashboard_title": { - "maxLength": 500, - "nullable": true, - "type": "string" + "charts": { + "$ref": "#/components/schemas/DatasetRelatedCharts" }, - "id": { - "format": "int32", - "type": "integer" + "dashboards": { + "$ref": "#/components/schemas/DatasetRelatedDashboards" } }, "type": "object" }, - "Meta42": { + "DatasetRestApi.get": { "properties": { - "username": { - "maxLength": 64, + "cache_timeout": { + "format": "int32", + "nullable": true, + "type": "integer" + }, + "columns": { + "$ref": "#/components/schemas/DatasetRestApi.get.TableColumn" + }, + "database": { + "$ref": "#/components/schemas/DatasetRestApi.get.Database" + }, + "datasource_type": { + "readOnly": true + }, + "default_endpoint": { + "nullable": true, "type": "string" - } - }, - "required": ["username"], - "type": "object" - }, - "Meta43": { - "properties": { - "username": { - "maxLength": 64, + }, + "description": { + "nullable": true, "type": "string" - } - }, - "required": ["username"], - "type": "object" - }, - "Meta5": { - "properties": { - "first_name": { - "maxLength": 64, + }, + "extra": { + "nullable": true, + "type": "string" + }, + "fetch_values_predicate": { + "nullable": true, "type": "string" }, + "filter_select_enabled": { + "nullable": true, + "type": "boolean" + }, "id": { "format": "int32", "type": "integer" }, - "last_name": { - "maxLength": 64, - "type": "string" - } - }, - "required": ["first_name", "last_name"], - "type": "object" - }, - "Meta6": { - "properties": { - "default_endpoint": { + "is_sqllab_view": { "nullable": true, - "type": "string" + "type": "boolean" }, - "table_name": { + "main_dttm_col": { "maxLength": 250, - "type": "string" - } - }, - "required": ["table_name"], - "type": "object" - }, - "Meta7": { - "properties": { - "first_name": { - "maxLength": 64, + "nullable": true, "type": "string" }, - "id": { + "metrics": { + "$ref": "#/components/schemas/DatasetRestApi.get.SqlMetric" + }, + "offset": { "format": "int32", + "nullable": true, "type": "integer" }, - "last_name": { - "maxLength": 64, + "owners": { + "$ref": "#/components/schemas/DatasetRestApi.get.User" + }, + "schema": { + "maxLength": 255, + "nullable": true, "type": "string" }, - "username": { - "maxLength": 64, + "sql": { + "nullable": true, "type": "string" - } - }, - "required": ["first_name", "last_name", "username"], - "type": "object" - }, - "Meta8": { - "properties": { - "first_name": { - "maxLength": 64, + }, + "table_name": { + "maxLength": 250, "type": "string" }, - "last_name": { - "maxLength": 64, + "template_params": { + "nullable": true, "type": "string" + }, + "url": { + "readOnly": true } }, - "required": ["first_name", "last_name"], + "required": [ + "columns", + "database", + "metrics", + "table_name" + ], "type": "object" }, - "Meta9": { + "DatasetRestApi.get.Database": { "properties": { - "dashboard_title": { - "maxLength": 500, - "nullable": true, + "backend": { + "readOnly": true + }, + "database_name": { + "maxLength": 250, "type": "string" }, "id": { @@ -4324,35 +4446,36 @@ "type": "integer" } }, + "required": [ + "database_name" + ], "type": "object" }, - "QueryRestApi.get": { + "DatasetRestApi.get.SqlMetric": { "properties": { "changed_on": { "format": "date-time", "nullable": true, "type": "string" }, - "client_id": { - "maxLength": 11, + "created_on": { + "format": "date-time", + "nullable": true, "type": "string" }, - "database": { - "$ref": "#/components/schemas/Meta28" - }, - "end_result_backend_time": { + "d3format": { + "maxLength": 128, "nullable": true, - "type": "number" + "type": "string" }, - "end_time": { + "description": { "nullable": true, - "type": "number" + "type": "string" }, - "error_message": { - "nullable": true, + "expression": { "type": "string" }, - "executed_sql": { + "extra": { "nullable": true, "type": "string" }, @@ -4360,836 +4483,908 @@ "format": "int32", "type": "integer" }, - "limit": { - "format": "int32", - "nullable": true, - "type": "integer" + "metric_name": { + "maxLength": 255, + "type": "string" }, - "progress": { - "format": "int32", + "metric_type": { + "maxLength": 32, "nullable": true, - "type": "integer" + "type": "string" }, - "results_key": { - "maxLength": 64, + "uuid": { + "format": "uuid", "nullable": true, "type": "string" }, - "rows": { - "format": "int32", + "verbose_name": { + "maxLength": 1024, "nullable": true, - "type": "integer" + "type": "string" }, - "schema": { - "maxLength": 256, + "warning_text": { "nullable": true, "type": "string" - }, - "select_as_cta": { + } + }, + "required": [ + "expression", + "metric_name" + ], + "type": "object" + }, + "DatasetRestApi.get.TableColumn": { + "properties": { + "changed_on": { + "format": "date-time", "nullable": true, - "type": "boolean" + "type": "string" }, - "select_as_cta_used": { - "nullable": true, - "type": "boolean" + "column_name": { + "maxLength": 255, + "type": "string" }, - "select_sql": { + "created_on": { + "format": "date-time", "nullable": true, "type": "string" }, - "sql": { + "description": { "nullable": true, "type": "string" }, - "sql_editor_id": { - "maxLength": 256, + "expression": { "nullable": true, "type": "string" }, - "start_running_time": { + "extra": { "nullable": true, - "type": "number" + "type": "string" }, - "start_time": { + "filterable": { "nullable": true, - "type": "number" + "type": "boolean" }, - "status": { - "maxLength": 16, + "groupby": { "nullable": true, - "type": "string" + "type": "boolean" }, - "tab_name": { - "maxLength": 256, + "id": { + "format": "int32", + "type": "integer" + }, + "is_active": { + "nullable": true, + "type": "boolean" + }, + "is_dttm": { + "nullable": true, + "type": "boolean" + }, + "python_date_format": { + "maxLength": 255, "nullable": true, "type": "string" }, - "tmp_schema_name": { - "maxLength": 256, + "type": { "nullable": true, "type": "string" }, - "tmp_table_name": { - "maxLength": 256, + "type_generic": { + "readOnly": true + }, + "uuid": { + "format": "uuid", "nullable": true, "type": "string" }, - "tracking_url": { + "verbose_name": { + "maxLength": 1024, "nullable": true, "type": "string" } }, - "required": ["client_id", "database"], + "required": [ + "column_name" + ], "type": "object" }, - "QueryRestApi.get_list": { + "DatasetRestApi.get.User": { "properties": { - "changed_on": { - "format": "date-time", - "nullable": true, - "type": "string" - }, - "database": { - "$ref": "#/components/schemas/Meta27" - }, - "end_time": { - "nullable": true, - "type": "number" - }, - "executed_sql": { - "nullable": true, + "first_name": { + "maxLength": 64, "type": "string" }, "id": { "format": "int32", "type": "integer" }, - "rows": { - "format": "int32", - "nullable": true, - "type": "integer" - }, - "schema": { - "maxLength": 256, - "nullable": true, + "last_name": { + "maxLength": 64, "type": "string" }, - "sql": { - "nullable": true, + "username": { + "maxLength": 64, "type": "string" + } + }, + "required": [ + "first_name", + "last_name", + "username" + ], + "type": "object" + }, + "DatasetRestApi.get_list": { + "properties": { + "changed_by": { + "$ref": "#/components/schemas/DatasetRestApi.get_list.User" }, - "sql_tables": { + "changed_by_name": { "readOnly": true }, - "start_time": { - "nullable": true, - "type": "number" + "changed_by_url": { + "readOnly": true }, - "status": { - "maxLength": 16, - "nullable": true, - "type": "string" + "changed_on_delta_humanized": { + "readOnly": true }, - "tab_name": { - "maxLength": 256, + "changed_on_utc": { + "readOnly": true + }, + "database": { + "$ref": "#/components/schemas/DatasetRestApi.get_list.Database" + }, + "datasource_type": { + "readOnly": true + }, + "default_endpoint": { "nullable": true, "type": "string" }, - "tmp_table_name": { - "maxLength": 256, + "description": { "nullable": true, "type": "string" }, - "tracking_url": { + "explore_url": { + "readOnly": true + }, + "extra": { "nullable": true, "type": "string" }, - "user": { - "$ref": "#/components/schemas/Meta26" - } - }, - "required": ["database"], - "type": "object" - }, - "QueryRestApi.post": { - "properties": { "id": { "format": "int32", "type": "integer" + }, + "kind": { + "readOnly": true + }, + "owners": { + "$ref": "#/components/schemas/DatasetRestApi.get_list.User1" + }, + "schema": { + "maxLength": 255, + "nullable": true, + "type": "string" + }, + "sql": { + "nullable": true, + "type": "string" + }, + "table_name": { + "maxLength": 250, + "type": "string" } }, + "required": [ + "database", + "table_name" + ], "type": "object" }, - "QueryRestApi.put": { + "DatasetRestApi.get_list.Database": { "properties": { + "database_name": { + "maxLength": 250, + "type": "string" + }, "id": { "format": "int32", "type": "integer" } }, + "required": [ + "database_name" + ], "type": "object" }, - "RelatedResponseSchema": { + "DatasetRestApi.get_list.User": { "properties": { - "count": { - "description": "The total number of related values", - "format": "int32", - "type": "integer" + "first_name": { + "maxLength": 64, + "type": "string" }, - "result": { - "items": { - "$ref": "#/components/schemas/RelatedResultResponse" - }, - "type": "array" + "username": { + "maxLength": 64, + "type": "string" } }, + "required": [ + "first_name", + "username" + ], "type": "object" }, - "RelatedResultResponse": { + "DatasetRestApi.get_list.User1": { "properties": { - "text": { - "description": "The related item string representation", + "first_name": { + "maxLength": 64, "type": "string" }, - "value": { - "description": "The related item identifier", + "id": { "format": "int32", "type": "integer" + }, + "last_name": { + "maxLength": 64, + "type": "string" + }, + "username": { + "maxLength": 64, + "type": "string" } }, + "required": [ + "first_name", + "last_name", + "username" + ], "type": "object" }, - "ReportExecutionLogRestApi.get": { + "DatasetRestApi.post": { "properties": { - "end_dttm": { - "format": "date-time", - "nullable": true, - "type": "string" - }, - "error_message": { - "nullable": true, - "type": "string" - }, - "id": { + "database": { "format": "int32", "type": "integer" }, - "scheduled_dttm": { - "format": "date-time", + "external_url": { + "nullable": true, "type": "string" }, - "start_dttm": { - "format": "date-time", + "is_managed_externally": { "nullable": true, - "type": "string" + "type": "boolean" }, - "state": { - "maxLength": 50, - "type": "string" + "owners": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" }, - "uuid": { - "format": "uuid", - "nullable": true, + "schema": { + "maxLength": 250, + "minLength": 0, "type": "string" }, - "value": { - "format": "float", - "nullable": true, - "type": "number" - }, - "value_row_json": { - "nullable": true, + "table_name": { + "maxLength": 250, + "minLength": 1, "type": "string" } }, - "required": ["scheduled_dttm", "state"], + "required": [ + "database", + "table_name" + ], "type": "object" }, - "ReportExecutionLogRestApi.get_list": { + "DatasetRestApi.put": { "properties": { - "end_dttm": { - "format": "date-time", + "cache_timeout": { + "format": "int32", "nullable": true, - "type": "string" + "type": "integer" }, - "error_message": { - "nullable": true, - "type": "string" + "columns": { + "items": { + "$ref": "#/components/schemas/DatasetColumnsPut" + }, + "type": "array" }, - "id": { + "database_id": { "format": "int32", "type": "integer" }, - "scheduled_dttm": { - "format": "date-time", + "default_endpoint": { + "nullable": true, "type": "string" }, - "start_dttm": { - "format": "date-time", + "description": { "nullable": true, "type": "string" }, - "state": { - "maxLength": 50, + "external_url": { + "nullable": true, "type": "string" }, - "uuid": { - "format": "uuid", + "extra": { "nullable": true, "type": "string" }, - "value": { - "format": "float", + "fetch_values_predicate": { + "maxLength": 1000, + "minLength": 0, "nullable": true, - "type": "number" + "type": "string" }, - "value_row_json": { + "filter_select_enabled": { + "nullable": true, + "type": "boolean" + }, + "is_managed_externally": { + "nullable": true, + "type": "boolean" + }, + "is_sqllab_view": { + "nullable": true, + "type": "boolean" + }, + "main_dttm_col": { + "nullable": true, + "type": "string" + }, + "metrics": { + "items": { + "$ref": "#/components/schemas/DatasetMetricsPut" + }, + "type": "array" + }, + "offset": { + "format": "int32", + "nullable": true, + "type": "integer" + }, + "owners": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "schema": { + "maxLength": 255, + "minLength": 0, + "nullable": true, + "type": "string" + }, + "sql": { + "nullable": true, + "type": "string" + }, + "table_name": { + "maxLength": 250, + "minLength": 1, + "nullable": true, + "type": "string" + }, + "template_params": { "nullable": true, "type": "string" } }, - "required": ["scheduled_dttm", "state"], "type": "object" }, - "ReportExecutionLogRestApi.post": { + "Datasource": { "properties": { - "id": { - "format": "int32", - "type": "integer" + "database_name": { + "description": "Datasource name", + "type": "string" + }, + "datasource_name": { + "description": "The datasource name.", + "type": "string" + }, + "datasource_type": { + "description": "The type of dataset/datasource identified on `datasource_id`.", + "enum": [ + "druid", + "table", + "view" + ], + "type": "string" + }, + "schema": { + "description": "Datasource schema", + "type": "string" } }, + "required": [ + "datasource_type" + ], "type": "object" }, - "ReportExecutionLogRestApi.put": { + "DistincResponseSchema": { "properties": { - "id": { + "count": { + "description": "The total number of distinct values", "format": "int32", "type": "integer" + }, + "result": { + "items": { + "$ref": "#/components/schemas/DistinctResultResponse" + }, + "type": "array" } }, "type": "object" }, - "ReportRecipient": { + "DistinctResultResponse": { "properties": { - "recipient_config_json": { - "$ref": "#/components/schemas/ReportRecipientConfigJSON" - }, - "type": { - "description": "The recipient type, check spec for valid options", - "enum": ["Email", "Slack"], + "text": { + "description": "The distinct item", "type": "string" } }, - "required": ["type"], "type": "object" }, - "ReportRecipientConfigJSON": { + "ExplorePermalinkPostSchema": { "properties": { - "target": { - "type": "string" + "formData": { + "description": "Chart form data", + "type": "object" + }, + "urlParams": { + "description": "URL Parameters", + "items": { + "description": "URL Parameter key-value pair", + "nullable": true + }, + "nullable": true, + "type": "array" } }, + "required": [ + "formData" + ], "type": "object" }, - "ReportScheduleRestApi.get": { + "FilterSetRestApi.get": { "properties": { - "active": { + "dashboard_id": { + "format": "int32", "nullable": true, - "type": "boolean" - }, - "chart": { - "$ref": "#/components/schemas/Meta40" + "type": "integer" }, - "context_markdown": { + "description": { "nullable": true, "type": "string" }, - "creation_method": { - "maxLength": 255, - "nullable": true, - "type": "string" + "id": { + "format": "int32", + "type": "integer" }, - "crontab": { - "maxLength": 1000, + "name": { + "maxLength": 500, "type": "string" }, - "dashboard": { - "$ref": "#/components/schemas/Meta41" - }, - "database": { - "$ref": "#/components/schemas/Meta37" + "owner_id": { + "format": "int32", + "type": "integer" }, - "description": { - "nullable": true, + "owner_type": { + "maxLength": 255, "type": "string" }, - "grace_period": { + "params": { + "readOnly": true + } + }, + "required": [ + "name", + "owner_id", + "owner_type" + ], + "type": "object" + }, + "FilterSetRestApi.get_list": { + "properties": { + "changed_by_fk": { "format": "int32", "nullable": true, "type": "integer" }, - "id": { - "format": "int32", - "type": "integer" - }, - "last_eval_dttm": { + "changed_on": { "format": "date-time", "nullable": true, "type": "string" }, - "last_state": { - "maxLength": 50, + "created_by_fk": { + "format": "int32", + "nullable": true, + "type": "integer" + }, + "created_on": { + "format": "date-time", "nullable": true, "type": "string" }, - "last_value": { - "format": "float", + "dashboard_id": { + "format": "int32", "nullable": true, - "type": "number" + "type": "integer" }, - "last_value_row_json": { + "description": { "nullable": true, "type": "string" }, - "log_retention": { + "id": { "format": "int32", - "nullable": true, "type": "integer" }, "name": { - "maxLength": 150, + "maxLength": 500, "type": "string" }, - "owners": { - "$ref": "#/components/schemas/Meta39" - }, - "recipients": { - "$ref": "#/components/schemas/Meta38" + "owner_id": { + "format": "int32", + "type": "integer" }, - "report_format": { - "maxLength": 50, - "nullable": true, + "owner_type": { + "maxLength": 255, "type": "string" }, - "sql": { + "params": { + "readOnly": true + } + }, + "required": [ + "name", + "owner_id", + "owner_type" + ], + "type": "object" + }, + "FilterSetRestApi.post": { + "properties": { + "description": { + "maxLength": 1000, + "minLength": 1, "nullable": true, "type": "string" }, - "timezone": { - "maxLength": 100, - "type": "string" - }, - "type": { - "maxLength": 50, - "type": "string" - }, - "validator_config_json": { - "nullable": true, + "json_metadata": { "type": "string" }, - "validator_type": { - "maxLength": 100, - "nullable": true, + "name": { + "maxLength": 500, + "minLength": 0, "type": "string" }, - "working_timeout": { + "owner_id": { "format": "int32", - "nullable": true, "type": "integer" + }, + "owner_type": { + "enum": [ + "User", + "Dashboard" + ], + "type": "string" } }, - "required": ["crontab", "name", "recipients", "type"], + "required": [ + "json_metadata", + "name", + "owner_type" + ], "type": "object" }, - "ReportScheduleRestApi.get_list": { + "FilterSetRestApi.put": { "properties": { - "active": { - "nullable": true, - "type": "boolean" - }, - "changed_by": { - "$ref": "#/components/schemas/Meta34" - }, - "changed_on": { - "format": "date-time", - "nullable": true, + "description": { + "maxLength": 1000, + "minLength": 1, "type": "string" }, - "changed_on_delta_humanized": { - "readOnly": true - }, - "created_by": { - "$ref": "#/components/schemas/Meta33" + "json_metadata": { + "type": "string" }, - "created_on": { - "format": "date-time", - "nullable": true, + "name": { + "maxLength": 500, + "minLength": 0, "type": "string" }, - "creation_method": { - "maxLength": 255, - "nullable": true, - "type": "string" - }, - "crontab": { - "maxLength": 1000, - "type": "string" - }, - "crontab_humanized": { - "readOnly": true - }, - "description": { - "nullable": true, - "type": "string" - }, - "id": { - "format": "int32", - "type": "integer" - }, - "last_eval_dttm": { - "format": "date-time", - "nullable": true, - "type": "string" - }, - "last_state": { - "maxLength": 50, - "nullable": true, - "type": "string" - }, - "name": { - "maxLength": 150, - "type": "string" - }, - "owners": { - "$ref": "#/components/schemas/Meta36" - }, - "recipients": { - "$ref": "#/components/schemas/Meta35" - }, - "timezone": { - "maxLength": 100, - "type": "string" - }, - "type": { - "maxLength": 50, + "owner_type": { + "enum": [ + "Dashboard" + ], "type": "string" } }, - "required": ["crontab", "name", "recipients", "type"], "type": "object" }, - "ReportScheduleRestApi.post": { + "FormDataPostSchema": { "properties": { - "active": { - "type": "boolean" - }, - "chart": { - "format": "int32", - "nullable": true, - "type": "integer" - }, - "context_markdown": { - "description": "Markdown description", - "nullable": true, - "type": "string" - }, - "creation_method": { - "description": "Creation method is used to inform the frontend whether the report/alert was created in the dashboard, chart, or alerts and reports UI." - }, - "crontab": { - "description": "A CRON expression.[Crontab Guru](https://crontab.guru/) is a helpful resource that can help you craft a CRON expression.", - "example": "*/5 * * * *", - "maxLength": 1000, - "minLength": 1, - "type": "string" - }, - "dashboard": { + "chart_id": { + "description": "The chart ID", "format": "int32", - "nullable": true, "type": "integer" }, - "database": { + "dataset_id": { + "description": "The dataset ID", "format": "int32", "type": "integer" }, - "description": { - "description": "Use a nice description to give context to this Alert/Report", - "example": "Daily sales dashboard to marketing", - "nullable": true, + "form_data": { + "description": "Any type of JSON supported text.", "type": "string" - }, - "grace_period": { - "description": "Once an alert is triggered, how long, in seconds, before Superset nags you again. (in seconds)", - "example": 14400, + } + }, + "required": [ + "dataset_id", + "form_data" + ], + "type": "object" + }, + "FormDataPutSchema": { + "properties": { + "chart_id": { + "description": "The chart ID", "format": "int32", - "minimum": 1, "type": "integer" }, - "log_retention": { - "description": "How long to keep the logs around for this report (in days)", - "example": 90, + "dataset_id": { + "description": "The dataset ID", "format": "int32", - "minimum": 1, "type": "integer" }, - "name": { - "description": "The report schedule name.", - "example": "Daily dashboard email", - "maxLength": 150, - "minLength": 1, + "form_data": { + "description": "Any type of JSON supported text.", "type": "string" - }, - "owners": { + } + }, + "required": [ + "dataset_id", + "form_data" + ], + "type": "object" + }, + "GetFavStarIdsSchema": { + "properties": { + "result": { + "description": "A list of results for each corresponding chart in the request", "items": { - "description": "Owner are users ids allowed to delete or change this report. If left empty you will be one of the owners of the report.", - "format": "int32", - "type": "integer" + "$ref": "#/components/schemas/ChartFavStarResponseResult" + }, + "type": "array" + } + }, + "type": "object" + }, + "GuestTokenCreate": { + "properties": { + "resources": { + "items": { + "$ref": "#/components/schemas/Resource" }, "type": "array" }, - "recipients": { + "rls": { "items": { - "$ref": "#/components/schemas/ReportRecipient" + "$ref": "#/components/schemas/RlsRule" }, "type": "array" }, - "report_format": { - "enum": ["PNG", "CSV", "TEXT"], + "user": { + "$ref": "#/components/schemas/User1" + } + }, + "required": [ + "resources", + "rls" + ], + "type": "object" + }, + "LogRestApi.get": { + "properties": { + "action": { + "maxLength": 512, + "nullable": true, "type": "string" }, - "sql": { - "description": "A SQL statement that defines whether the alert should get triggered or not. The query is expected to return either NULL or a number value.", - "example": "SELECT value FROM time_series_table", + "dashboard_id": { + "format": "int32", + "nullable": true, + "type": "integer" + }, + "dttm": { + "format": "date-time", + "nullable": true, "type": "string" }, - "timezone": { - "description": "A timezone string that represents the location of the timezone.", + "duration_ms": { + "format": "int32", + "nullable": true, + "type": "integer" + }, + "json": { + "nullable": true, "type": "string" }, - "type": { - "description": "The report schedule type", - "enum": ["Alert", "Report"], + "referrer": { + "maxLength": 1024, + "nullable": true, "type": "string" }, - "validator_config_json": { - "$ref": "#/components/schemas/ValidatorConfigJSON" + "slice_id": { + "format": "int32", + "nullable": true, + "type": "integer" }, - "validator_type": { - "description": "Determines when to trigger alert based off value from alert query. Alerts will be triggered with these validator types:\n- Not Null - When the return value is Not NULL, Empty, or 0\n- Operator - When `sql_return_value comparison_operator threshold` is True e.g. `50 <= 75`
Supports the comparison operators <, <=, >, >=, ==, and !=", - "enum": ["not null", "operator"], - "type": "string" + "user": { + "$ref": "#/components/schemas/LogRestApi.get.User" }, - "working_timeout": { - "description": "If an alert is staled at a working state, how long until it's state is reseted to error", - "example": 3600, + "user_id": { "format": "int32", - "minimum": 1, + "nullable": true, "type": "integer" } }, - "required": ["crontab", "name", "type"], "type": "object" }, - "ReportScheduleRestApi.put": { + "LogRestApi.get.User": { "properties": { - "active": { - "type": "boolean" + "username": { + "maxLength": 64, + "type": "string" + } + }, + "required": [ + "username" + ], + "type": "object" + }, + "LogRestApi.get_list": { + "properties": { + "action": { + "maxLength": 512, + "nullable": true, + "type": "string" }, - "chart": { + "dashboard_id": { "format": "int32", "nullable": true, "type": "integer" }, - "context_markdown": { - "description": "Markdown description", + "dttm": { + "format": "date-time", "nullable": true, "type": "string" }, - "creation_method": { - "description": "Creation method is used to inform the frontend whether the report/alert was created in the dashboard, chart, or alerts and reports UI.", - "nullable": true - }, - "crontab": { - "description": "A CRON expression.[Crontab Guru](https://crontab.guru/) is a helpful resource that can help you craft a CRON expression.", - "maxLength": 1000, - "minLength": 1, - "type": "string" - }, - "dashboard": { + "duration_ms": { "format": "int32", "nullable": true, "type": "integer" }, - "database": { - "format": "int32", - "type": "integer" + "json": { + "nullable": true, + "type": "string" }, - "description": { - "description": "Use a nice description to give context to this Alert/Report", - "example": "Daily sales dashboard to marketing", + "referrer": { + "maxLength": 1024, "nullable": true, "type": "string" }, - "grace_period": { - "description": "Once an alert is triggered, how long, in seconds, before Superset nags you again. (in seconds)", - "example": 14400, + "slice_id": { "format": "int32", - "minimum": 1, + "nullable": true, "type": "integer" }, - "log_retention": { - "description": "How long to keep the logs around for this report (in days)", - "example": 90, + "user": { + "$ref": "#/components/schemas/LogRestApi.get_list.User" + }, + "user_id": { "format": "int32", - "minimum": 1, + "nullable": true, "type": "integer" - }, - "name": { - "description": "The report schedule name.", - "maxLength": 150, - "minLength": 1, + } + }, + "type": "object" + }, + "LogRestApi.get_list.User": { + "properties": { + "username": { + "maxLength": 64, "type": "string" - }, - "owners": { - "items": { - "description": "Owner are users ids allowed to delete or change this report. If left empty you will be one of the owners of the report.", - "format": "int32", - "type": "integer" - }, - "type": "array" - }, - "recipients": { - "items": { - "$ref": "#/components/schemas/ReportRecipient" - }, - "type": "array" - }, - "report_format": { - "enum": ["PNG", "CSV", "TEXT"], - "type": "string" - }, - "sql": { - "description": "A SQL statement that defines whether the alert should get triggered or not. The query is expected to return either NULL or a number value.", - "example": "SELECT value FROM time_series_table", - "nullable": true, - "type": "string" - }, - "timezone": { - "description": "A timezone string that represents the location of the timezone.", - "type": "string" - }, - "type": { - "description": "The report schedule type", - "enum": ["Alert", "Report"], - "type": "string" - }, - "validator_config_json": { - "$ref": "#/components/schemas/ValidatorConfigJSON" - }, - "validator_type": { - "description": "Determines when to trigger alert based off value from alert query. Alerts will be triggered with these validator types:\n- Not Null - When the return value is Not NULL, Empty, or 0\n- Operator - When `sql_return_value comparison_operator threshold` is True e.g. `50 <= 75`
Supports the comparison operators <, <=, >, >=, ==, and !=", - "enum": ["not null", "operator"], - "nullable": true, - "type": "string" - }, - "working_timeout": { - "description": "If an alert is staled at a working state, how long until it's state is reseted to error", - "example": 3600, - "format": "int32", - "minimum": 1, - "nullable": true, - "type": "integer" } }, + "required": [ + "username" + ], "type": "object" }, - "Roles": { + "LogRestApi.post": { "properties": { "id": { "format": "int32", "type": "integer" - }, - "name": { - "type": "string" } }, "type": "object" }, - "SavedQueryRestApi.get": { + "LogRestApi.put": { "properties": { - "created_by": { - "$ref": "#/components/schemas/Meta31" - }, - "database": { - "$ref": "#/components/schemas/Meta32" - }, - "description": { - "nullable": true, - "type": "string" - }, - "id": { - "format": "int32", - "type": "integer" - }, - "label": { - "maxLength": 256, + "action": { + "maxLength": 512, "nullable": true, "type": "string" }, - "schema": { - "maxLength": 128, + "dttm": { + "format": "date-time", "nullable": true, "type": "string" }, - "sql": { + "json": { "nullable": true, "type": "string" }, - "sql_tables": { - "readOnly": true + "user": { + "nullable": true } }, "type": "object" }, - "SavedQueryRestApi.get_list": { + "QueryRestApi.get": { "properties": { - "changed_on_delta_humanized": { - "readOnly": true - }, - "created_by": { - "$ref": "#/components/schemas/Meta29" - }, - "created_on": { + "changed_on": { "format": "date-time", "nullable": true, "type": "string" }, + "client_id": { + "maxLength": 11, + "type": "string" + }, "database": { - "$ref": "#/components/schemas/Meta30" + "$ref": "#/components/schemas/QueryRestApi.get.Database" }, - "db_id": { - "format": "int32", + "end_result_backend_time": { "nullable": true, - "type": "integer" + "type": "number" }, - "description": { + "end_time": { + "nullable": true, + "type": "number" + }, + "error_message": { "nullable": true, "type": "string" }, - "extra": { - "readOnly": true + "executed_sql": { + "nullable": true, + "type": "string" }, "id": { "format": "int32", "type": "integer" }, - "label": { - "maxLength": 256, + "limit": { + "format": "int32", "nullable": true, - "type": "string" + "type": "integer" }, - "last_run_delta_humanized": { - "readOnly": true + "progress": { + "format": "int32", + "nullable": true, + "type": "integer" + }, + "results_key": { + "maxLength": 64, + "nullable": true, + "type": "string" }, "rows": { "format": "int32", @@ -5197,7 +5392,19 @@ "type": "integer" }, "schema": { - "maxLength": 128, + "maxLength": 256, + "nullable": true, + "type": "string" + }, + "select_as_cta": { + "nullable": true, + "type": "boolean" + }, + "select_as_cta_used": { + "nullable": true, + "type": "boolean" + }, + "select_sql": { "nullable": true, "type": "string" }, @@ -5205,508 +5412,3271 @@ "nullable": true, "type": "string" }, - "sql_tables": { - "readOnly": true - } - }, - "type": "object" - }, - "SavedQueryRestApi.post": { - "properties": { - "db_id": { - "format": "int32", + "sql_editor_id": { + "maxLength": 256, "nullable": true, - "type": "integer" + "type": "string" }, - "description": { + "start_running_time": { + "nullable": true, + "type": "number" + }, + "start_time": { + "nullable": true, + "type": "number" + }, + "status": { + "maxLength": 16, "nullable": true, "type": "string" }, - "label": { + "tab_name": { "maxLength": 256, "nullable": true, "type": "string" }, - "schema": { - "maxLength": 128, + "tmp_schema_name": { + "maxLength": 256, "nullable": true, "type": "string" }, - "sql": { + "tmp_table_name": { + "maxLength": 256, + "nullable": true, + "type": "string" + }, + "tracking_url": { "nullable": true, "type": "string" } }, + "required": [ + "client_id", + "database" + ], "type": "object" }, - "SavedQueryRestApi.put": { + "QueryRestApi.get.Database": { "properties": { - "db_id": { + "id": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "QueryRestApi.get_list": { + "properties": { + "changed_on": { + "format": "date-time", + "nullable": true, + "type": "string" + }, + "database": { + "$ref": "#/components/schemas/QueryRestApi.get_list.Database" + }, + "end_time": { + "nullable": true, + "type": "number" + }, + "executed_sql": { + "nullable": true, + "type": "string" + }, + "id": { + "format": "int32", + "type": "integer" + }, + "rows": { "format": "int32", "nullable": true, "type": "integer" }, - "description": { + "schema": { + "maxLength": 256, "nullable": true, "type": "string" }, - "label": { + "sql": { + "nullable": true, + "type": "string" + }, + "sql_tables": { + "readOnly": true + }, + "start_time": { + "nullable": true, + "type": "number" + }, + "status": { + "maxLength": 16, + "nullable": true, + "type": "string" + }, + "tab_name": { "maxLength": 256, "nullable": true, "type": "string" }, - "schema": { - "maxLength": 128, + "tmp_table_name": { + "maxLength": 256, "nullable": true, "type": "string" }, - "sql": { + "tracking_url": { "nullable": true, "type": "string" + }, + "user": { + "$ref": "#/components/schemas/QueryRestApi.get_list.User" } }, + "required": [ + "database" + ], "type": "object" }, - "SchemasResponseSchema": { + "QueryRestApi.get_list.Database": { "properties": { - "result": { - "items": { - "description": "A database schema name", - "type": "string" - }, - "type": "array" + "database_name": { + "maxLength": 250, + "type": "string" } }, + "required": [ + "database_name" + ], "type": "object" }, - "SelectStarResponseSchema": { + "QueryRestApi.get_list.User": { "properties": { - "result": { - "description": "SQL select star", - "type": "string" - } - }, - "type": "object" - }, - "TableMetadataColumnsResponse": { - "properties": { - "duplicates_constraint": { + "first_name": { + "maxLength": 64, "type": "string" }, - "keys": { - "description": "", - "items": { - "type": "string" - }, - "type": "array" - }, - "longType": { - "description": "The actual backend long type for the column", - "type": "string" + "id": { + "format": "int32", + "type": "integer" }, - "name": { - "description": "The column name", + "last_name": { + "maxLength": 64, "type": "string" }, - "type": { - "description": "The column type", + "username": { + "maxLength": 64, "type": "string" } }, + "required": [ + "first_name", + "last_name", + "username" + ], "type": "object" }, - "TableMetadataForeignKeysIndexesResponse": { + "QueryRestApi.post": { "properties": { - "column_names": { - "items": { - "description": "A list of column names that compose the foreign key or index", - "type": "string" - }, - "type": "array" - }, - "name": { - "description": "The name of the foreign key or index", - "type": "string" - }, - "options": { - "$ref": "#/components/schemas/TableMetadataOptionsResponse" - }, - "referred_columns": { - "items": { - "type": "string" - }, - "type": "array" - }, - "referred_schema": { - "type": "string" - }, - "referred_table": { - "type": "string" - }, - "type": { - "type": "string" + "id": { + "format": "int32", + "type": "integer" } }, "type": "object" }, - "TableMetadataOptionsResponse": { + "QueryRestApi.put": { "properties": { - "deferrable": { - "type": "boolean" - }, - "initially": { - "type": "boolean" - }, - "match": { - "type": "boolean" - }, - "ondelete": { - "type": "boolean" - }, - "onupdate": { - "type": "boolean" + "id": { + "format": "int32", + "type": "integer" } }, "type": "object" }, - "TableMetadataPrimaryKeyResponse": { + "RelatedResponseSchema": { "properties": { - "column_names": { + "count": { + "description": "The total number of related values", + "format": "int32", + "type": "integer" + }, + "result": { "items": { - "description": "A list of column names that compose the primary key", - "type": "string" + "$ref": "#/components/schemas/RelatedResultResponse" }, "type": "array" - }, - "name": { - "description": "The primary key index name", + } + }, + "type": "object" + }, + "RelatedResultResponse": { + "properties": { + "text": { + "description": "The related item string representation", "type": "string" }, - "type": { - "type": "string" + "value": { + "description": "The related item identifier", + "format": "int32", + "type": "integer" } }, "type": "object" }, - "TableMetadataResponseSchema": { + "ReportExecutionLogRestApi.get": { "properties": { - "columns": { - "description": "A list of columns and their metadata", - "items": { - "$ref": "#/components/schemas/TableMetadataColumnsResponse" - }, - "type": "array" + "end_dttm": { + "format": "date-time", + "nullable": true, + "type": "string" }, - "foreignKeys": { - "description": "A list of foreign keys and their metadata", - "items": { - "$ref": "#/components/schemas/TableMetadataForeignKeysIndexesResponse" - }, - "type": "array" + "error_message": { + "nullable": true, + "type": "string" }, - "indexes": { - "description": "A list of indexes and their metadata", - "items": { - "$ref": "#/components/schemas/TableMetadataForeignKeysIndexesResponse" - }, - "type": "array" + "id": { + "format": "int32", + "type": "integer" }, - "name": { - "description": "The name of the table", + "scheduled_dttm": { + "format": "date-time", "type": "string" }, - "primaryKey": { - "allOf": [ - { - "$ref": "#/components/schemas/TableMetadataPrimaryKeyResponse" - } - ], - "description": "Primary keys metadata" + "start_dttm": { + "format": "date-time", + "nullable": true, + "type": "string" }, - "selectStar": { - "description": "SQL select star", + "state": { + "maxLength": 50, + "type": "string" + }, + "uuid": { + "format": "uuid", + "nullable": true, + "type": "string" + }, + "value": { + "format": "float", + "nullable": true, + "type": "number" + }, + "value_row_json": { + "nullable": true, "type": "string" } }, + "required": [ + "scheduled_dttm", + "state" + ], "type": "object" }, - "User": { + "ReportExecutionLogRestApi.get_list": { "properties": { - "first_name": { + "end_dttm": { + "format": "date-time", + "nullable": true, + "type": "string" + }, + "error_message": { + "nullable": true, "type": "string" }, "id": { "format": "int32", "type": "integer" }, - "last_name": { + "scheduled_dttm": { + "format": "date-time", "type": "string" }, - "username": { + "start_dttm": { + "format": "date-time", + "nullable": true, + "type": "string" + }, + "state": { + "maxLength": 50, + "type": "string" + }, + "uuid": { + "format": "uuid", + "nullable": true, + "type": "string" + }, + "value": { + "format": "float", + "nullable": true, + "type": "number" + }, + "value_row_json": { + "nullable": true, "type": "string" } }, + "required": [ + "scheduled_dttm", + "state" + ], "type": "object" }, - "ValidatorConfigJSON": { + "ReportExecutionLogRestApi.post": { "properties": { - "op": { - "description": "The operation to compare with a threshold to apply to the SQL output\n", - "enum": ["<", "<=", ">", ">=", "==", "!="], - "type": "string" - }, - "threshold": { + "id": { "format": "int32", "type": "integer" } }, "type": "object" }, - "database_schemas_query_schema": { + "ReportExecutionLogRestApi.put": { "properties": { - "force": { - "type": "boolean" + "id": { + "format": "int32", + "type": "integer" } }, "type": "object" }, - "get_delete_ids_schema": { - "items": { - "type": "integer" + "ReportRecipient": { + "properties": { + "recipient_config_json": { + "$ref": "#/components/schemas/ReportRecipientConfigJSON" + }, + "type": { + "description": "The recipient type, check spec for valid options", + "enum": [ + "Email", + "Slack" + ], + "type": "string" + } }, - "type": "array" + "required": [ + "type" + ], + "type": "object" }, - "get_export_ids_schema": { - "items": { - "type": "integer" - }, - "type": "array" - }, - "get_fav_star_ids_schema": { - "items": { - "type": "integer" - }, - "type": "array" - }, - "get_info_schema": { + "ReportRecipientConfigJSON": { "properties": { - "add_columns": { - "additionalProperties": { - "properties": { - "page": { - "type": "integer" - }, - "page_size": { - "type": "integer" - } - }, - "type": "object" - }, - "type": "object" - }, - "edit_columns": { - "additionalProperties": { - "properties": { - "page": { - "type": "integer" - }, - "page_size": { - "type": "integer" - } - }, - "type": "object" - }, - "type": "object" - }, - "keys": { - "items": { - "enum": [ - "add_columns", - "edit_columns", - "filters", - "permissions", - "add_title", - "edit_title", - "none" - ], - "type": "string" - }, - "type": "array" + "target": { + "type": "string" } }, "type": "object" }, - "get_item_schema": { + "ReportScheduleRestApi.get": { "properties": { - "columns": { - "items": { - "type": "string" - }, - "type": "array" + "active": { + "nullable": true, + "type": "boolean" }, - "keys": { - "items": { - "enum": [ - "show_columns", - "description_columns", - "label_columns", - "show_title", - "none" - ], - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "get_list_schema": { - "properties": { - "columns": { - "items": { - "type": "string" - }, - "type": "array" + "chart": { + "$ref": "#/components/schemas/ReportScheduleRestApi.get.Slice" }, - "filters": { - "items": { - "properties": { - "col": { - "type": "string" - }, - "opr": { - "type": "string" - }, - "value": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "string" - }, - { - "type": "boolean" - }, - { - "type": "array" - } - ] - } - }, - "required": ["col", "opr", "value"], - "type": "object" - }, - "type": "array" + "context_markdown": { + "nullable": true, + "type": "string" }, - "keys": { - "items": { - "enum": [ - "list_columns", - "order_columns", - "label_columns", - "description_columns", - "list_title", - "none" - ], - "type": "string" - }, - "type": "array" + "creation_method": { + "maxLength": 255, + "nullable": true, + "type": "string" }, - "order_column": { + "crontab": { + "maxLength": 1000, "type": "string" }, - "order_direction": { - "enum": ["asc", "desc"], + "dashboard": { + "$ref": "#/components/schemas/ReportScheduleRestApi.get.Dashboard" + }, + "database": { + "$ref": "#/components/schemas/ReportScheduleRestApi.get.Database" + }, + "description": { + "nullable": true, "type": "string" }, - "page": { + "force_screenshot": { + "nullable": true, + "type": "boolean" + }, + "grace_period": { + "format": "int32", + "nullable": true, "type": "integer" }, - "page_size": { + "id": { + "format": "int32", "type": "integer" - } - }, - "type": "object" - }, - "get_related_schema": { - "properties": { - "filter": { + }, + "last_eval_dttm": { + "format": "date-time", + "nullable": true, "type": "string" }, - "include_ids": { - "items": { - "type": "integer" - }, - "type": "array" + "last_state": { + "maxLength": 50, + "nullable": true, + "type": "string" }, - "page": { + "last_value": { + "format": "float", + "nullable": true, + "type": "number" + }, + "last_value_row_json": { + "nullable": true, + "type": "string" + }, + "log_retention": { + "format": "int32", + "nullable": true, "type": "integer" }, - "page_size": { + "name": { + "maxLength": 150, + "type": "string" + }, + "owners": { + "$ref": "#/components/schemas/ReportScheduleRestApi.get.User" + }, + "recipients": { + "$ref": "#/components/schemas/ReportScheduleRestApi.get.ReportRecipients" + }, + "report_format": { + "maxLength": 50, + "nullable": true, + "type": "string" + }, + "sql": { + "nullable": true, + "type": "string" + }, + "timezone": { + "maxLength": 100, + "type": "string" + }, + "type": { + "maxLength": 50, + "type": "string" + }, + "validator_config_json": { + "nullable": true, + "type": "string" + }, + "validator_type": { + "maxLength": 100, + "nullable": true, + "type": "string" + }, + "working_timeout": { + "format": "int32", + "nullable": true, "type": "integer" } }, + "required": [ + "crontab", + "name", + "recipients", + "type" + ], "type": "object" }, - "screenshot_query_schema": { + "ReportScheduleRestApi.get.Dashboard": { "properties": { - "force": { - "type": "boolean" - }, - "thumb_size": { - "items": { - "type": "integer" - }, - "type": "array" + "dashboard_title": { + "maxLength": 500, + "nullable": true, + "type": "string" }, - "window_size": { - "items": { - "type": "integer" - }, - "type": "array" + "id": { + "format": "int32", + "type": "integer" } }, "type": "object" }, - "thumbnail_query_schema": { + "ReportScheduleRestApi.get.Database": { "properties": { - "force": { - "type": "boolean" - } - }, - "type": "object" + "database_name": { + "maxLength": 250, + "type": "string" + }, + "id": { + "format": "int32", + "type": "integer" + } + }, + "required": [ + "database_name" + ], + "type": "object" + }, + "ReportScheduleRestApi.get.ReportRecipients": { + "properties": { + "id": { + "format": "int32", + "type": "integer" + }, + "recipient_config_json": { + "nullable": true, + "type": "string" + }, + "type": { + "maxLength": 50, + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + "ReportScheduleRestApi.get.Slice": { + "properties": { + "id": { + "format": "int32", + "type": "integer" + }, + "slice_name": { + "maxLength": 250, + "nullable": true, + "type": "string" + }, + "viz_type": { + "maxLength": 250, + "nullable": true, + "type": "string" + } + }, + "type": "object" + }, + "ReportScheduleRestApi.get.User": { + "properties": { + "first_name": { + "maxLength": 64, + "type": "string" + }, + "id": { + "format": "int32", + "type": "integer" + }, + "last_name": { + "maxLength": 64, + "type": "string" + } + }, + "required": [ + "first_name", + "last_name" + ], + "type": "object" + }, + "ReportScheduleRestApi.get_list": { + "properties": { + "active": { + "nullable": true, + "type": "boolean" + }, + "changed_by": { + "$ref": "#/components/schemas/ReportScheduleRestApi.get_list.User" + }, + "changed_on": { + "format": "date-time", + "nullable": true, + "type": "string" + }, + "changed_on_delta_humanized": { + "readOnly": true + }, + "created_by": { + "$ref": "#/components/schemas/ReportScheduleRestApi.get_list.User1" + }, + "created_on": { + "format": "date-time", + "nullable": true, + "type": "string" + }, + "creation_method": { + "maxLength": 255, + "nullable": true, + "type": "string" + }, + "crontab": { + "maxLength": 1000, + "type": "string" + }, + "crontab_humanized": { + "readOnly": true + }, + "description": { + "nullable": true, + "type": "string" + }, + "id": { + "format": "int32", + "type": "integer" + }, + "last_eval_dttm": { + "format": "date-time", + "nullable": true, + "type": "string" + }, + "last_state": { + "maxLength": 50, + "nullable": true, + "type": "string" + }, + "name": { + "maxLength": 150, + "type": "string" + }, + "owners": { + "$ref": "#/components/schemas/ReportScheduleRestApi.get_list.User2" + }, + "recipients": { + "$ref": "#/components/schemas/ReportScheduleRestApi.get_list.ReportRecipients" + }, + "timezone": { + "maxLength": 100, + "type": "string" + }, + "type": { + "maxLength": 50, + "type": "string" + } + }, + "required": [ + "crontab", + "name", + "recipients", + "type" + ], + "type": "object" + }, + "ReportScheduleRestApi.get_list.ReportRecipients": { + "properties": { + "id": { + "format": "int32", + "type": "integer" + }, + "type": { + "maxLength": 50, + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + "ReportScheduleRestApi.get_list.User": { + "properties": { + "first_name": { + "maxLength": 64, + "type": "string" + }, + "last_name": { + "maxLength": 64, + "type": "string" + } + }, + "required": [ + "first_name", + "last_name" + ], + "type": "object" + }, + "ReportScheduleRestApi.get_list.User1": { + "properties": { + "first_name": { + "maxLength": 64, + "type": "string" + }, + "last_name": { + "maxLength": 64, + "type": "string" + } + }, + "required": [ + "first_name", + "last_name" + ], + "type": "object" + }, + "ReportScheduleRestApi.get_list.User2": { + "properties": { + "first_name": { + "maxLength": 64, + "type": "string" + }, + "id": { + "format": "int32", + "type": "integer" + }, + "last_name": { + "maxLength": 64, + "type": "string" + } + }, + "required": [ + "first_name", + "last_name" + ], + "type": "object" + }, + "ReportScheduleRestApi.post": { + "properties": { + "active": { + "type": "boolean" + }, + "chart": { + "format": "int32", + "nullable": true, + "type": "integer" + }, + "context_markdown": { + "description": "Markdown description", + "nullable": true, + "type": "string" + }, + "creation_method": { + "description": "Creation method is used to inform the frontend whether the report/alert was created in the dashboard, chart, or alerts and reports UI." + }, + "crontab": { + "description": "A CRON expression.[Crontab Guru](https://crontab.guru/) is a helpful resource that can help you craft a CRON expression.", + "example": "*/5 * * * *", + "maxLength": 1000, + "minLength": 1, + "type": "string" + }, + "dashboard": { + "format": "int32", + "nullable": true, + "type": "integer" + }, + "database": { + "format": "int32", + "type": "integer" + }, + "description": { + "description": "Use a nice description to give context to this Alert/Report", + "example": "Daily sales dashboard to marketing", + "nullable": true, + "type": "string" + }, + "extra": { + "type": "object" + }, + "force_screenshot": { + "type": "boolean" + }, + "grace_period": { + "description": "Once an alert is triggered, how long, in seconds, before Superset nags you again. (in seconds)", + "example": 14400, + "format": "int32", + "minimum": 1, + "type": "integer" + }, + "log_retention": { + "description": "How long to keep the logs around for this report (in days)", + "example": 90, + "format": "int32", + "minimum": 1, + "type": "integer" + }, + "name": { + "description": "The report schedule name.", + "example": "Daily dashboard email", + "maxLength": 150, + "minLength": 1, + "type": "string" + }, + "owners": { + "items": { + "description": "Owner are users ids allowed to delete or change this report. If left empty you will be one of the owners of the report.", + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "recipients": { + "items": { + "$ref": "#/components/schemas/ReportRecipient" + }, + "type": "array" + }, + "report_format": { + "enum": [ + "PNG", + "CSV", + "TEXT" + ], + "type": "string" + }, + "selected_tabs": { + "items": { + "format": "int32", + "type": "integer" + }, + "nullable": true, + "type": "array" + }, + "sql": { + "description": "A SQL statement that defines whether the alert should get triggered or not. The query is expected to return either NULL or a number value.", + "example": "SELECT value FROM time_series_table", + "type": "string" + }, + "timezone": { + "description": "A timezone string that represents the location of the timezone.", + "enum": [ + "Africa/Abidjan", + "Africa/Accra", + "Africa/Addis_Ababa", + "Africa/Algiers", + "Africa/Asmara", + "Africa/Asmera", + "Africa/Bamako", + "Africa/Bangui", + "Africa/Banjul", + "Africa/Bissau", + "Africa/Blantyre", + "Africa/Brazzaville", + "Africa/Bujumbura", + "Africa/Cairo", + "Africa/Casablanca", + "Africa/Ceuta", + "Africa/Conakry", + "Africa/Dakar", + "Africa/Dar_es_Salaam", + "Africa/Djibouti", + "Africa/Douala", + "Africa/El_Aaiun", + "Africa/Freetown", + "Africa/Gaborone", + "Africa/Harare", + "Africa/Johannesburg", + "Africa/Juba", + "Africa/Kampala", + "Africa/Khartoum", + "Africa/Kigali", + "Africa/Kinshasa", + "Africa/Lagos", + "Africa/Libreville", + "Africa/Lome", + "Africa/Luanda", + "Africa/Lubumbashi", + "Africa/Lusaka", + "Africa/Malabo", + "Africa/Maputo", + "Africa/Maseru", + "Africa/Mbabane", + "Africa/Mogadishu", + "Africa/Monrovia", + "Africa/Nairobi", + "Africa/Ndjamena", + "Africa/Niamey", + "Africa/Nouakchott", + "Africa/Ouagadougou", + "Africa/Porto-Novo", + "Africa/Sao_Tome", + "Africa/Timbuktu", + "Africa/Tripoli", + "Africa/Tunis", + "Africa/Windhoek", + "America/Adak", + "America/Anchorage", + "America/Anguilla", + "America/Antigua", + "America/Araguaina", + "America/Argentina/Buenos_Aires", + "America/Argentina/Catamarca", + "America/Argentina/ComodRivadavia", + "America/Argentina/Cordoba", + "America/Argentina/Jujuy", + "America/Argentina/La_Rioja", + "America/Argentina/Mendoza", + "America/Argentina/Rio_Gallegos", + "America/Argentina/Salta", + "America/Argentina/San_Juan", + "America/Argentina/San_Luis", + "America/Argentina/Tucuman", + "America/Argentina/Ushuaia", + "America/Aruba", + "America/Asuncion", + "America/Atikokan", + "America/Atka", + "America/Bahia", + "America/Bahia_Banderas", + "America/Barbados", + "America/Belem", + "America/Belize", + "America/Blanc-Sablon", + "America/Boa_Vista", + "America/Bogota", + "America/Boise", + "America/Buenos_Aires", + "America/Cambridge_Bay", + "America/Campo_Grande", + "America/Cancun", + "America/Caracas", + "America/Catamarca", + "America/Cayenne", + "America/Cayman", + "America/Chicago", + "America/Chihuahua", + "America/Coral_Harbour", + "America/Cordoba", + "America/Costa_Rica", + "America/Creston", + "America/Cuiaba", + "America/Curacao", + "America/Danmarkshavn", + "America/Dawson", + "America/Dawson_Creek", + "America/Denver", + "America/Detroit", + "America/Dominica", + "America/Edmonton", + "America/Eirunepe", + "America/El_Salvador", + "America/Ensenada", + "America/Fort_Nelson", + "America/Fort_Wayne", + "America/Fortaleza", + "America/Glace_Bay", + "America/Godthab", + "America/Goose_Bay", + "America/Grand_Turk", + "America/Grenada", + "America/Guadeloupe", + "America/Guatemala", + "America/Guayaquil", + "America/Guyana", + "America/Halifax", + "America/Havana", + "America/Hermosillo", + "America/Indiana/Indianapolis", + "America/Indiana/Knox", + "America/Indiana/Marengo", + "America/Indiana/Petersburg", + "America/Indiana/Tell_City", + "America/Indiana/Vevay", + "America/Indiana/Vincennes", + "America/Indiana/Winamac", + "America/Indianapolis", + "America/Inuvik", + "America/Iqaluit", + "America/Jamaica", + "America/Jujuy", + "America/Juneau", + "America/Kentucky/Louisville", + "America/Kentucky/Monticello", + "America/Knox_IN", + "America/Kralendijk", + "America/La_Paz", + "America/Lima", + "America/Los_Angeles", + "America/Louisville", + "America/Lower_Princes", + "America/Maceio", + "America/Managua", + "America/Manaus", + "America/Marigot", + "America/Martinique", + "America/Matamoros", + "America/Mazatlan", + "America/Mendoza", + "America/Menominee", + "America/Merida", + "America/Metlakatla", + "America/Mexico_City", + "America/Miquelon", + "America/Moncton", + "America/Monterrey", + "America/Montevideo", + "America/Montreal", + "America/Montserrat", + "America/Nassau", + "America/New_York", + "America/Nipigon", + "America/Nome", + "America/Noronha", + "America/North_Dakota/Beulah", + "America/North_Dakota/Center", + "America/North_Dakota/New_Salem", + "America/Nuuk", + "America/Ojinaga", + "America/Panama", + "America/Pangnirtung", + "America/Paramaribo", + "America/Phoenix", + "America/Port-au-Prince", + "America/Port_of_Spain", + "America/Porto_Acre", + "America/Porto_Velho", + "America/Puerto_Rico", + "America/Punta_Arenas", + "America/Rainy_River", + "America/Rankin_Inlet", + "America/Recife", + "America/Regina", + "America/Resolute", + "America/Rio_Branco", + "America/Rosario", + "America/Santa_Isabel", + "America/Santarem", + "America/Santiago", + "America/Santo_Domingo", + "America/Sao_Paulo", + "America/Scoresbysund", + "America/Shiprock", + "America/Sitka", + "America/St_Barthelemy", + "America/St_Johns", + "America/St_Kitts", + "America/St_Lucia", + "America/St_Thomas", + "America/St_Vincent", + "America/Swift_Current", + "America/Tegucigalpa", + "America/Thule", + "America/Thunder_Bay", + "America/Tijuana", + "America/Toronto", + "America/Tortola", + "America/Vancouver", + "America/Virgin", + "America/Whitehorse", + "America/Winnipeg", + "America/Yakutat", + "America/Yellowknife", + "Antarctica/Casey", + "Antarctica/Davis", + "Antarctica/DumontDUrville", + "Antarctica/Macquarie", + "Antarctica/Mawson", + "Antarctica/McMurdo", + "Antarctica/Palmer", + "Antarctica/Rothera", + "Antarctica/South_Pole", + "Antarctica/Syowa", + "Antarctica/Troll", + "Antarctica/Vostok", + "Arctic/Longyearbyen", + "Asia/Aden", + "Asia/Almaty", + "Asia/Amman", + "Asia/Anadyr", + "Asia/Aqtau", + "Asia/Aqtobe", + "Asia/Ashgabat", + "Asia/Ashkhabad", + "Asia/Atyrau", + "Asia/Baghdad", + "Asia/Bahrain", + "Asia/Baku", + "Asia/Bangkok", + "Asia/Barnaul", + "Asia/Beirut", + "Asia/Bishkek", + "Asia/Brunei", + "Asia/Calcutta", + "Asia/Chita", + "Asia/Choibalsan", + "Asia/Chongqing", + "Asia/Chungking", + "Asia/Colombo", + "Asia/Dacca", + "Asia/Damascus", + "Asia/Dhaka", + "Asia/Dili", + "Asia/Dubai", + "Asia/Dushanbe", + "Asia/Famagusta", + "Asia/Gaza", + "Asia/Harbin", + "Asia/Hebron", + "Asia/Ho_Chi_Minh", + "Asia/Hong_Kong", + "Asia/Hovd", + "Asia/Irkutsk", + "Asia/Istanbul", + "Asia/Jakarta", + "Asia/Jayapura", + "Asia/Jerusalem", + "Asia/Kabul", + "Asia/Kamchatka", + "Asia/Karachi", + "Asia/Kashgar", + "Asia/Kathmandu", + "Asia/Katmandu", + "Asia/Khandyga", + "Asia/Kolkata", + "Asia/Krasnoyarsk", + "Asia/Kuala_Lumpur", + "Asia/Kuching", + "Asia/Kuwait", + "Asia/Macao", + "Asia/Macau", + "Asia/Magadan", + "Asia/Makassar", + "Asia/Manila", + "Asia/Muscat", + "Asia/Nicosia", + "Asia/Novokuznetsk", + "Asia/Novosibirsk", + "Asia/Omsk", + "Asia/Oral", + "Asia/Phnom_Penh", + "Asia/Pontianak", + "Asia/Pyongyang", + "Asia/Qatar", + "Asia/Qostanay", + "Asia/Qyzylorda", + "Asia/Rangoon", + "Asia/Riyadh", + "Asia/Saigon", + "Asia/Sakhalin", + "Asia/Samarkand", + "Asia/Seoul", + "Asia/Shanghai", + "Asia/Singapore", + "Asia/Srednekolymsk", + "Asia/Taipei", + "Asia/Tashkent", + "Asia/Tbilisi", + "Asia/Tehran", + "Asia/Tel_Aviv", + "Asia/Thimbu", + "Asia/Thimphu", + "Asia/Tokyo", + "Asia/Tomsk", + "Asia/Ujung_Pandang", + "Asia/Ulaanbaatar", + "Asia/Ulan_Bator", + "Asia/Urumqi", + "Asia/Ust-Nera", + "Asia/Vientiane", + "Asia/Vladivostok", + "Asia/Yakutsk", + "Asia/Yangon", + "Asia/Yekaterinburg", + "Asia/Yerevan", + "Atlantic/Azores", + "Atlantic/Bermuda", + "Atlantic/Canary", + "Atlantic/Cape_Verde", + "Atlantic/Faeroe", + "Atlantic/Faroe", + "Atlantic/Jan_Mayen", + "Atlantic/Madeira", + "Atlantic/Reykjavik", + "Atlantic/South_Georgia", + "Atlantic/St_Helena", + "Atlantic/Stanley", + "Australia/ACT", + "Australia/Adelaide", + "Australia/Brisbane", + "Australia/Broken_Hill", + "Australia/Canberra", + "Australia/Currie", + "Australia/Darwin", + "Australia/Eucla", + "Australia/Hobart", + "Australia/LHI", + "Australia/Lindeman", + "Australia/Lord_Howe", + "Australia/Melbourne", + "Australia/NSW", + "Australia/North", + "Australia/Perth", + "Australia/Queensland", + "Australia/South", + "Australia/Sydney", + "Australia/Tasmania", + "Australia/Victoria", + "Australia/West", + "Australia/Yancowinna", + "Brazil/Acre", + "Brazil/DeNoronha", + "Brazil/East", + "Brazil/West", + "CET", + "CST6CDT", + "Canada/Atlantic", + "Canada/Central", + "Canada/Eastern", + "Canada/Mountain", + "Canada/Newfoundland", + "Canada/Pacific", + "Canada/Saskatchewan", + "Canada/Yukon", + "Chile/Continental", + "Chile/EasterIsland", + "Cuba", + "EET", + "EST", + "EST5EDT", + "Egypt", + "Eire", + "Etc/GMT", + "Etc/GMT+0", + "Etc/GMT+1", + "Etc/GMT+10", + "Etc/GMT+11", + "Etc/GMT+12", + "Etc/GMT+2", + "Etc/GMT+3", + "Etc/GMT+4", + "Etc/GMT+5", + "Etc/GMT+6", + "Etc/GMT+7", + "Etc/GMT+8", + "Etc/GMT+9", + "Etc/GMT-0", + "Etc/GMT-1", + "Etc/GMT-10", + "Etc/GMT-11", + "Etc/GMT-12", + "Etc/GMT-13", + "Etc/GMT-14", + "Etc/GMT-2", + "Etc/GMT-3", + "Etc/GMT-4", + "Etc/GMT-5", + "Etc/GMT-6", + "Etc/GMT-7", + "Etc/GMT-8", + "Etc/GMT-9", + "Etc/GMT0", + "Etc/Greenwich", + "Etc/UCT", + "Etc/UTC", + "Etc/Universal", + "Etc/Zulu", + "Europe/Amsterdam", + "Europe/Andorra", + "Europe/Astrakhan", + "Europe/Athens", + "Europe/Belfast", + "Europe/Belgrade", + "Europe/Berlin", + "Europe/Bratislava", + "Europe/Brussels", + "Europe/Bucharest", + "Europe/Budapest", + "Europe/Busingen", + "Europe/Chisinau", + "Europe/Copenhagen", + "Europe/Dublin", + "Europe/Gibraltar", + "Europe/Guernsey", + "Europe/Helsinki", + "Europe/Isle_of_Man", + "Europe/Istanbul", + "Europe/Jersey", + "Europe/Kaliningrad", + "Europe/Kiev", + "Europe/Kirov", + "Europe/Lisbon", + "Europe/Ljubljana", + "Europe/London", + "Europe/Luxembourg", + "Europe/Madrid", + "Europe/Malta", + "Europe/Mariehamn", + "Europe/Minsk", + "Europe/Monaco", + "Europe/Moscow", + "Europe/Nicosia", + "Europe/Oslo", + "Europe/Paris", + "Europe/Podgorica", + "Europe/Prague", + "Europe/Riga", + "Europe/Rome", + "Europe/Samara", + "Europe/San_Marino", + "Europe/Sarajevo", + "Europe/Saratov", + "Europe/Simferopol", + "Europe/Skopje", + "Europe/Sofia", + "Europe/Stockholm", + "Europe/Tallinn", + "Europe/Tirane", + "Europe/Tiraspol", + "Europe/Ulyanovsk", + "Europe/Uzhgorod", + "Europe/Vaduz", + "Europe/Vatican", + "Europe/Vienna", + "Europe/Vilnius", + "Europe/Volgograd", + "Europe/Warsaw", + "Europe/Zagreb", + "Europe/Zaporozhye", + "Europe/Zurich", + "GB", + "GB-Eire", + "GMT", + "GMT+0", + "GMT-0", + "GMT0", + "Greenwich", + "HST", + "Hongkong", + "Iceland", + "Indian/Antananarivo", + "Indian/Chagos", + "Indian/Christmas", + "Indian/Cocos", + "Indian/Comoro", + "Indian/Kerguelen", + "Indian/Mahe", + "Indian/Maldives", + "Indian/Mauritius", + "Indian/Mayotte", + "Indian/Reunion", + "Iran", + "Israel", + "Jamaica", + "Japan", + "Kwajalein", + "Libya", + "MET", + "MST", + "MST7MDT", + "Mexico/BajaNorte", + "Mexico/BajaSur", + "Mexico/General", + "NZ", + "NZ-CHAT", + "Navajo", + "PRC", + "PST8PDT", + "Pacific/Apia", + "Pacific/Auckland", + "Pacific/Bougainville", + "Pacific/Chatham", + "Pacific/Chuuk", + "Pacific/Easter", + "Pacific/Efate", + "Pacific/Enderbury", + "Pacific/Fakaofo", + "Pacific/Fiji", + "Pacific/Funafuti", + "Pacific/Galapagos", + "Pacific/Gambier", + "Pacific/Guadalcanal", + "Pacific/Guam", + "Pacific/Honolulu", + "Pacific/Johnston", + "Pacific/Kiritimati", + "Pacific/Kosrae", + "Pacific/Kwajalein", + "Pacific/Majuro", + "Pacific/Marquesas", + "Pacific/Midway", + "Pacific/Nauru", + "Pacific/Niue", + "Pacific/Norfolk", + "Pacific/Noumea", + "Pacific/Pago_Pago", + "Pacific/Palau", + "Pacific/Pitcairn", + "Pacific/Pohnpei", + "Pacific/Ponape", + "Pacific/Port_Moresby", + "Pacific/Rarotonga", + "Pacific/Saipan", + "Pacific/Samoa", + "Pacific/Tahiti", + "Pacific/Tarawa", + "Pacific/Tongatapu", + "Pacific/Truk", + "Pacific/Wake", + "Pacific/Wallis", + "Pacific/Yap", + "Poland", + "Portugal", + "ROC", + "ROK", + "Singapore", + "Turkey", + "UCT", + "US/Alaska", + "US/Aleutian", + "US/Arizona", + "US/Central", + "US/East-Indiana", + "US/Eastern", + "US/Hawaii", + "US/Indiana-Starke", + "US/Michigan", + "US/Mountain", + "US/Pacific", + "US/Samoa", + "UTC", + "Universal", + "W-SU", + "WET", + "Zulu" + ], + "type": "string" + }, + "type": { + "description": "The report schedule type", + "enum": [ + "Alert", + "Report" + ], + "type": "string" + }, + "validator_config_json": { + "$ref": "#/components/schemas/ValidatorConfigJSON" + }, + "validator_type": { + "description": "Determines when to trigger alert based off value from alert query. Alerts will be triggered with these validator types:\n- Not Null - When the return value is Not NULL, Empty, or 0\n- Operator - When `sql_return_value comparison_operator threshold` is True e.g. `50 <= 75`
Supports the comparison operators <, <=, >, >=, ==, and !=", + "enum": [ + "not null", + "operator" + ], + "type": "string" + }, + "working_timeout": { + "description": "If an alert is staled at a working state, how long until it's state is reseted to error", + "example": 3600, + "format": "int32", + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "crontab", + "name", + "type" + ], + "type": "object" + }, + "ReportScheduleRestApi.put": { + "properties": { + "active": { + "type": "boolean" + }, + "chart": { + "format": "int32", + "nullable": true, + "type": "integer" + }, + "context_markdown": { + "description": "Markdown description", + "nullable": true, + "type": "string" + }, + "creation_method": { + "description": "Creation method is used to inform the frontend whether the report/alert was created in the dashboard, chart, or alerts and reports UI.", + "nullable": true + }, + "crontab": { + "description": "A CRON expression.[Crontab Guru](https://crontab.guru/) is a helpful resource that can help you craft a CRON expression.", + "maxLength": 1000, + "minLength": 1, + "type": "string" + }, + "dashboard": { + "format": "int32", + "nullable": true, + "type": "integer" + }, + "database": { + "format": "int32", + "type": "integer" + }, + "description": { + "description": "Use a nice description to give context to this Alert/Report", + "example": "Daily sales dashboard to marketing", + "nullable": true, + "type": "string" + }, + "force_screenshot": { + "type": "boolean" + }, + "grace_period": { + "description": "Once an alert is triggered, how long, in seconds, before Superset nags you again. (in seconds)", + "example": 14400, + "format": "int32", + "minimum": 1, + "type": "integer" + }, + "log_retention": { + "description": "How long to keep the logs around for this report (in days)", + "example": 90, + "format": "int32", + "minimum": 1, + "type": "integer" + }, + "name": { + "description": "The report schedule name.", + "maxLength": 150, + "minLength": 1, + "type": "string" + }, + "owners": { + "items": { + "description": "Owner are users ids allowed to delete or change this report. If left empty you will be one of the owners of the report.", + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "recipients": { + "items": { + "$ref": "#/components/schemas/ReportRecipient" + }, + "type": "array" + }, + "report_format": { + "enum": [ + "PNG", + "CSV", + "TEXT" + ], + "type": "string" + }, + "sql": { + "description": "A SQL statement that defines whether the alert should get triggered or not. The query is expected to return either NULL or a number value.", + "example": "SELECT value FROM time_series_table", + "nullable": true, + "type": "string" + }, + "timezone": { + "description": "A timezone string that represents the location of the timezone.", + "enum": [ + "Africa/Abidjan", + "Africa/Accra", + "Africa/Addis_Ababa", + "Africa/Algiers", + "Africa/Asmara", + "Africa/Asmera", + "Africa/Bamako", + "Africa/Bangui", + "Africa/Banjul", + "Africa/Bissau", + "Africa/Blantyre", + "Africa/Brazzaville", + "Africa/Bujumbura", + "Africa/Cairo", + "Africa/Casablanca", + "Africa/Ceuta", + "Africa/Conakry", + "Africa/Dakar", + "Africa/Dar_es_Salaam", + "Africa/Djibouti", + "Africa/Douala", + "Africa/El_Aaiun", + "Africa/Freetown", + "Africa/Gaborone", + "Africa/Harare", + "Africa/Johannesburg", + "Africa/Juba", + "Africa/Kampala", + "Africa/Khartoum", + "Africa/Kigali", + "Africa/Kinshasa", + "Africa/Lagos", + "Africa/Libreville", + "Africa/Lome", + "Africa/Luanda", + "Africa/Lubumbashi", + "Africa/Lusaka", + "Africa/Malabo", + "Africa/Maputo", + "Africa/Maseru", + "Africa/Mbabane", + "Africa/Mogadishu", + "Africa/Monrovia", + "Africa/Nairobi", + "Africa/Ndjamena", + "Africa/Niamey", + "Africa/Nouakchott", + "Africa/Ouagadougou", + "Africa/Porto-Novo", + "Africa/Sao_Tome", + "Africa/Timbuktu", + "Africa/Tripoli", + "Africa/Tunis", + "Africa/Windhoek", + "America/Adak", + "America/Anchorage", + "America/Anguilla", + "America/Antigua", + "America/Araguaina", + "America/Argentina/Buenos_Aires", + "America/Argentina/Catamarca", + "America/Argentina/ComodRivadavia", + "America/Argentina/Cordoba", + "America/Argentina/Jujuy", + "America/Argentina/La_Rioja", + "America/Argentina/Mendoza", + "America/Argentina/Rio_Gallegos", + "America/Argentina/Salta", + "America/Argentina/San_Juan", + "America/Argentina/San_Luis", + "America/Argentina/Tucuman", + "America/Argentina/Ushuaia", + "America/Aruba", + "America/Asuncion", + "America/Atikokan", + "America/Atka", + "America/Bahia", + "America/Bahia_Banderas", + "America/Barbados", + "America/Belem", + "America/Belize", + "America/Blanc-Sablon", + "America/Boa_Vista", + "America/Bogota", + "America/Boise", + "America/Buenos_Aires", + "America/Cambridge_Bay", + "America/Campo_Grande", + "America/Cancun", + "America/Caracas", + "America/Catamarca", + "America/Cayenne", + "America/Cayman", + "America/Chicago", + "America/Chihuahua", + "America/Coral_Harbour", + "America/Cordoba", + "America/Costa_Rica", + "America/Creston", + "America/Cuiaba", + "America/Curacao", + "America/Danmarkshavn", + "America/Dawson", + "America/Dawson_Creek", + "America/Denver", + "America/Detroit", + "America/Dominica", + "America/Edmonton", + "America/Eirunepe", + "America/El_Salvador", + "America/Ensenada", + "America/Fort_Nelson", + "America/Fort_Wayne", + "America/Fortaleza", + "America/Glace_Bay", + "America/Godthab", + "America/Goose_Bay", + "America/Grand_Turk", + "America/Grenada", + "America/Guadeloupe", + "America/Guatemala", + "America/Guayaquil", + "America/Guyana", + "America/Halifax", + "America/Havana", + "America/Hermosillo", + "America/Indiana/Indianapolis", + "America/Indiana/Knox", + "America/Indiana/Marengo", + "America/Indiana/Petersburg", + "America/Indiana/Tell_City", + "America/Indiana/Vevay", + "America/Indiana/Vincennes", + "America/Indiana/Winamac", + "America/Indianapolis", + "America/Inuvik", + "America/Iqaluit", + "America/Jamaica", + "America/Jujuy", + "America/Juneau", + "America/Kentucky/Louisville", + "America/Kentucky/Monticello", + "America/Knox_IN", + "America/Kralendijk", + "America/La_Paz", + "America/Lima", + "America/Los_Angeles", + "America/Louisville", + "America/Lower_Princes", + "America/Maceio", + "America/Managua", + "America/Manaus", + "America/Marigot", + "America/Martinique", + "America/Matamoros", + "America/Mazatlan", + "America/Mendoza", + "America/Menominee", + "America/Merida", + "America/Metlakatla", + "America/Mexico_City", + "America/Miquelon", + "America/Moncton", + "America/Monterrey", + "America/Montevideo", + "America/Montreal", + "America/Montserrat", + "America/Nassau", + "America/New_York", + "America/Nipigon", + "America/Nome", + "America/Noronha", + "America/North_Dakota/Beulah", + "America/North_Dakota/Center", + "America/North_Dakota/New_Salem", + "America/Nuuk", + "America/Ojinaga", + "America/Panama", + "America/Pangnirtung", + "America/Paramaribo", + "America/Phoenix", + "America/Port-au-Prince", + "America/Port_of_Spain", + "America/Porto_Acre", + "America/Porto_Velho", + "America/Puerto_Rico", + "America/Punta_Arenas", + "America/Rainy_River", + "America/Rankin_Inlet", + "America/Recife", + "America/Regina", + "America/Resolute", + "America/Rio_Branco", + "America/Rosario", + "America/Santa_Isabel", + "America/Santarem", + "America/Santiago", + "America/Santo_Domingo", + "America/Sao_Paulo", + "America/Scoresbysund", + "America/Shiprock", + "America/Sitka", + "America/St_Barthelemy", + "America/St_Johns", + "America/St_Kitts", + "America/St_Lucia", + "America/St_Thomas", + "America/St_Vincent", + "America/Swift_Current", + "America/Tegucigalpa", + "America/Thule", + "America/Thunder_Bay", + "America/Tijuana", + "America/Toronto", + "America/Tortola", + "America/Vancouver", + "America/Virgin", + "America/Whitehorse", + "America/Winnipeg", + "America/Yakutat", + "America/Yellowknife", + "Antarctica/Casey", + "Antarctica/Davis", + "Antarctica/DumontDUrville", + "Antarctica/Macquarie", + "Antarctica/Mawson", + "Antarctica/McMurdo", + "Antarctica/Palmer", + "Antarctica/Rothera", + "Antarctica/South_Pole", + "Antarctica/Syowa", + "Antarctica/Troll", + "Antarctica/Vostok", + "Arctic/Longyearbyen", + "Asia/Aden", + "Asia/Almaty", + "Asia/Amman", + "Asia/Anadyr", + "Asia/Aqtau", + "Asia/Aqtobe", + "Asia/Ashgabat", + "Asia/Ashkhabad", + "Asia/Atyrau", + "Asia/Baghdad", + "Asia/Bahrain", + "Asia/Baku", + "Asia/Bangkok", + "Asia/Barnaul", + "Asia/Beirut", + "Asia/Bishkek", + "Asia/Brunei", + "Asia/Calcutta", + "Asia/Chita", + "Asia/Choibalsan", + "Asia/Chongqing", + "Asia/Chungking", + "Asia/Colombo", + "Asia/Dacca", + "Asia/Damascus", + "Asia/Dhaka", + "Asia/Dili", + "Asia/Dubai", + "Asia/Dushanbe", + "Asia/Famagusta", + "Asia/Gaza", + "Asia/Harbin", + "Asia/Hebron", + "Asia/Ho_Chi_Minh", + "Asia/Hong_Kong", + "Asia/Hovd", + "Asia/Irkutsk", + "Asia/Istanbul", + "Asia/Jakarta", + "Asia/Jayapura", + "Asia/Jerusalem", + "Asia/Kabul", + "Asia/Kamchatka", + "Asia/Karachi", + "Asia/Kashgar", + "Asia/Kathmandu", + "Asia/Katmandu", + "Asia/Khandyga", + "Asia/Kolkata", + "Asia/Krasnoyarsk", + "Asia/Kuala_Lumpur", + "Asia/Kuching", + "Asia/Kuwait", + "Asia/Macao", + "Asia/Macau", + "Asia/Magadan", + "Asia/Makassar", + "Asia/Manila", + "Asia/Muscat", + "Asia/Nicosia", + "Asia/Novokuznetsk", + "Asia/Novosibirsk", + "Asia/Omsk", + "Asia/Oral", + "Asia/Phnom_Penh", + "Asia/Pontianak", + "Asia/Pyongyang", + "Asia/Qatar", + "Asia/Qostanay", + "Asia/Qyzylorda", + "Asia/Rangoon", + "Asia/Riyadh", + "Asia/Saigon", + "Asia/Sakhalin", + "Asia/Samarkand", + "Asia/Seoul", + "Asia/Shanghai", + "Asia/Singapore", + "Asia/Srednekolymsk", + "Asia/Taipei", + "Asia/Tashkent", + "Asia/Tbilisi", + "Asia/Tehran", + "Asia/Tel_Aviv", + "Asia/Thimbu", + "Asia/Thimphu", + "Asia/Tokyo", + "Asia/Tomsk", + "Asia/Ujung_Pandang", + "Asia/Ulaanbaatar", + "Asia/Ulan_Bator", + "Asia/Urumqi", + "Asia/Ust-Nera", + "Asia/Vientiane", + "Asia/Vladivostok", + "Asia/Yakutsk", + "Asia/Yangon", + "Asia/Yekaterinburg", + "Asia/Yerevan", + "Atlantic/Azores", + "Atlantic/Bermuda", + "Atlantic/Canary", + "Atlantic/Cape_Verde", + "Atlantic/Faeroe", + "Atlantic/Faroe", + "Atlantic/Jan_Mayen", + "Atlantic/Madeira", + "Atlantic/Reykjavik", + "Atlantic/South_Georgia", + "Atlantic/St_Helena", + "Atlantic/Stanley", + "Australia/ACT", + "Australia/Adelaide", + "Australia/Brisbane", + "Australia/Broken_Hill", + "Australia/Canberra", + "Australia/Currie", + "Australia/Darwin", + "Australia/Eucla", + "Australia/Hobart", + "Australia/LHI", + "Australia/Lindeman", + "Australia/Lord_Howe", + "Australia/Melbourne", + "Australia/NSW", + "Australia/North", + "Australia/Perth", + "Australia/Queensland", + "Australia/South", + "Australia/Sydney", + "Australia/Tasmania", + "Australia/Victoria", + "Australia/West", + "Australia/Yancowinna", + "Brazil/Acre", + "Brazil/DeNoronha", + "Brazil/East", + "Brazil/West", + "CET", + "CST6CDT", + "Canada/Atlantic", + "Canada/Central", + "Canada/Eastern", + "Canada/Mountain", + "Canada/Newfoundland", + "Canada/Pacific", + "Canada/Saskatchewan", + "Canada/Yukon", + "Chile/Continental", + "Chile/EasterIsland", + "Cuba", + "EET", + "EST", + "EST5EDT", + "Egypt", + "Eire", + "Etc/GMT", + "Etc/GMT+0", + "Etc/GMT+1", + "Etc/GMT+10", + "Etc/GMT+11", + "Etc/GMT+12", + "Etc/GMT+2", + "Etc/GMT+3", + "Etc/GMT+4", + "Etc/GMT+5", + "Etc/GMT+6", + "Etc/GMT+7", + "Etc/GMT+8", + "Etc/GMT+9", + "Etc/GMT-0", + "Etc/GMT-1", + "Etc/GMT-10", + "Etc/GMT-11", + "Etc/GMT-12", + "Etc/GMT-13", + "Etc/GMT-14", + "Etc/GMT-2", + "Etc/GMT-3", + "Etc/GMT-4", + "Etc/GMT-5", + "Etc/GMT-6", + "Etc/GMT-7", + "Etc/GMT-8", + "Etc/GMT-9", + "Etc/GMT0", + "Etc/Greenwich", + "Etc/UCT", + "Etc/UTC", + "Etc/Universal", + "Etc/Zulu", + "Europe/Amsterdam", + "Europe/Andorra", + "Europe/Astrakhan", + "Europe/Athens", + "Europe/Belfast", + "Europe/Belgrade", + "Europe/Berlin", + "Europe/Bratislava", + "Europe/Brussels", + "Europe/Bucharest", + "Europe/Budapest", + "Europe/Busingen", + "Europe/Chisinau", + "Europe/Copenhagen", + "Europe/Dublin", + "Europe/Gibraltar", + "Europe/Guernsey", + "Europe/Helsinki", + "Europe/Isle_of_Man", + "Europe/Istanbul", + "Europe/Jersey", + "Europe/Kaliningrad", + "Europe/Kiev", + "Europe/Kirov", + "Europe/Lisbon", + "Europe/Ljubljana", + "Europe/London", + "Europe/Luxembourg", + "Europe/Madrid", + "Europe/Malta", + "Europe/Mariehamn", + "Europe/Minsk", + "Europe/Monaco", + "Europe/Moscow", + "Europe/Nicosia", + "Europe/Oslo", + "Europe/Paris", + "Europe/Podgorica", + "Europe/Prague", + "Europe/Riga", + "Europe/Rome", + "Europe/Samara", + "Europe/San_Marino", + "Europe/Sarajevo", + "Europe/Saratov", + "Europe/Simferopol", + "Europe/Skopje", + "Europe/Sofia", + "Europe/Stockholm", + "Europe/Tallinn", + "Europe/Tirane", + "Europe/Tiraspol", + "Europe/Ulyanovsk", + "Europe/Uzhgorod", + "Europe/Vaduz", + "Europe/Vatican", + "Europe/Vienna", + "Europe/Vilnius", + "Europe/Volgograd", + "Europe/Warsaw", + "Europe/Zagreb", + "Europe/Zaporozhye", + "Europe/Zurich", + "GB", + "GB-Eire", + "GMT", + "GMT+0", + "GMT-0", + "GMT0", + "Greenwich", + "HST", + "Hongkong", + "Iceland", + "Indian/Antananarivo", + "Indian/Chagos", + "Indian/Christmas", + "Indian/Cocos", + "Indian/Comoro", + "Indian/Kerguelen", + "Indian/Mahe", + "Indian/Maldives", + "Indian/Mauritius", + "Indian/Mayotte", + "Indian/Reunion", + "Iran", + "Israel", + "Jamaica", + "Japan", + "Kwajalein", + "Libya", + "MET", + "MST", + "MST7MDT", + "Mexico/BajaNorte", + "Mexico/BajaSur", + "Mexico/General", + "NZ", + "NZ-CHAT", + "Navajo", + "PRC", + "PST8PDT", + "Pacific/Apia", + "Pacific/Auckland", + "Pacific/Bougainville", + "Pacific/Chatham", + "Pacific/Chuuk", + "Pacific/Easter", + "Pacific/Efate", + "Pacific/Enderbury", + "Pacific/Fakaofo", + "Pacific/Fiji", + "Pacific/Funafuti", + "Pacific/Galapagos", + "Pacific/Gambier", + "Pacific/Guadalcanal", + "Pacific/Guam", + "Pacific/Honolulu", + "Pacific/Johnston", + "Pacific/Kiritimati", + "Pacific/Kosrae", + "Pacific/Kwajalein", + "Pacific/Majuro", + "Pacific/Marquesas", + "Pacific/Midway", + "Pacific/Nauru", + "Pacific/Niue", + "Pacific/Norfolk", + "Pacific/Noumea", + "Pacific/Pago_Pago", + "Pacific/Palau", + "Pacific/Pitcairn", + "Pacific/Pohnpei", + "Pacific/Ponape", + "Pacific/Port_Moresby", + "Pacific/Rarotonga", + "Pacific/Saipan", + "Pacific/Samoa", + "Pacific/Tahiti", + "Pacific/Tarawa", + "Pacific/Tongatapu", + "Pacific/Truk", + "Pacific/Wake", + "Pacific/Wallis", + "Pacific/Yap", + "Poland", + "Portugal", + "ROC", + "ROK", + "Singapore", + "Turkey", + "UCT", + "US/Alaska", + "US/Aleutian", + "US/Arizona", + "US/Central", + "US/East-Indiana", + "US/Eastern", + "US/Hawaii", + "US/Indiana-Starke", + "US/Michigan", + "US/Mountain", + "US/Pacific", + "US/Samoa", + "UTC", + "Universal", + "W-SU", + "WET", + "Zulu" + ], + "type": "string" + }, + "type": { + "description": "The report schedule type", + "enum": [ + "Alert", + "Report" + ], + "type": "string" + }, + "validator_config_json": { + "$ref": "#/components/schemas/ValidatorConfigJSON" + }, + "validator_type": { + "description": "Determines when to trigger alert based off value from alert query. Alerts will be triggered with these validator types:\n- Not Null - When the return value is Not NULL, Empty, or 0\n- Operator - When `sql_return_value comparison_operator threshold` is True e.g. `50 <= 75`
Supports the comparison operators <, <=, >, >=, ==, and !=", + "enum": [ + "not null", + "operator" + ], + "nullable": true, + "type": "string" + }, + "working_timeout": { + "description": "If an alert is staled at a working state, how long until it's state is reseted to error", + "example": 3600, + "format": "int32", + "minimum": 1, + "nullable": true, + "type": "integer" + } + }, + "type": "object" + }, + "Resource": { + "properties": { + "id": { + "type": "string" + }, + "type": {} + }, + "required": [ + "id", + "type" + ], + "type": "object" + }, + "RlsRule": { + "properties": { + "clause": { + "type": "string" + }, + "dataset": { + "format": "int32", + "type": "integer" + } + }, + "required": [ + "clause" + ], + "type": "object" + }, + "Roles": { + "properties": { + "id": { + "format": "int32", + "type": "integer" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "SavedQueryRestApi.get": { + "properties": { + "created_by": { + "$ref": "#/components/schemas/SavedQueryRestApi.get.User" + }, + "database": { + "$ref": "#/components/schemas/SavedQueryRestApi.get.Database" + }, + "description": { + "nullable": true, + "type": "string" + }, + "id": { + "format": "int32", + "type": "integer" + }, + "label": { + "maxLength": 256, + "nullable": true, + "type": "string" + }, + "schema": { + "maxLength": 128, + "nullable": true, + "type": "string" + }, + "sql": { + "nullable": true, + "type": "string" + }, + "sql_tables": { + "readOnly": true + } + }, + "type": "object" + }, + "SavedQueryRestApi.get.Database": { + "properties": { + "database_name": { + "maxLength": 250, + "type": "string" + }, + "id": { + "format": "int32", + "type": "integer" + } + }, + "required": [ + "database_name" + ], + "type": "object" + }, + "SavedQueryRestApi.get.User": { + "properties": { + "first_name": { + "maxLength": 64, + "type": "string" + }, + "id": { + "format": "int32", + "type": "integer" + }, + "last_name": { + "maxLength": 64, + "type": "string" + } + }, + "required": [ + "first_name", + "last_name" + ], + "type": "object" + }, + "SavedQueryRestApi.get_list": { + "properties": { + "changed_on_delta_humanized": { + "readOnly": true + }, + "created_by": { + "$ref": "#/components/schemas/SavedQueryRestApi.get_list.User" + }, + "created_on": { + "format": "date-time", + "nullable": true, + "type": "string" + }, + "database": { + "$ref": "#/components/schemas/SavedQueryRestApi.get_list.Database" + }, + "db_id": { + "format": "int32", + "nullable": true, + "type": "integer" + }, + "description": { + "nullable": true, + "type": "string" + }, + "extra": { + "readOnly": true + }, + "id": { + "format": "int32", + "type": "integer" + }, + "label": { + "maxLength": 256, + "nullable": true, + "type": "string" + }, + "last_run_delta_humanized": { + "readOnly": true + }, + "rows": { + "format": "int32", + "nullable": true, + "type": "integer" + }, + "schema": { + "maxLength": 128, + "nullable": true, + "type": "string" + }, + "sql": { + "nullable": true, + "type": "string" + }, + "sql_tables": { + "readOnly": true + } + }, + "type": "object" + }, + "SavedQueryRestApi.get_list.Database": { + "properties": { + "database_name": { + "maxLength": 250, + "type": "string" + }, + "id": { + "format": "int32", + "type": "integer" + } + }, + "required": [ + "database_name" + ], + "type": "object" + }, + "SavedQueryRestApi.get_list.User": { + "properties": { + "first_name": { + "maxLength": 64, + "type": "string" + }, + "id": { + "format": "int32", + "type": "integer" + }, + "last_name": { + "maxLength": 64, + "type": "string" + } + }, + "required": [ + "first_name", + "last_name" + ], + "type": "object" + }, + "SavedQueryRestApi.post": { + "properties": { + "db_id": { + "format": "int32", + "nullable": true, + "type": "integer" + }, + "description": { + "nullable": true, + "type": "string" + }, + "label": { + "maxLength": 256, + "nullable": true, + "type": "string" + }, + "schema": { + "maxLength": 128, + "nullable": true, + "type": "string" + }, + "sql": { + "nullable": true, + "type": "string" + } + }, + "type": "object" + }, + "SavedQueryRestApi.put": { + "properties": { + "db_id": { + "format": "int32", + "nullable": true, + "type": "integer" + }, + "description": { + "nullable": true, + "type": "string" + }, + "label": { + "maxLength": 256, + "nullable": true, + "type": "string" + }, + "schema": { + "maxLength": 128, + "nullable": true, + "type": "string" + }, + "sql": { + "nullable": true, + "type": "string" + } + }, + "type": "object" + }, + "SchemasResponseSchema": { + "properties": { + "result": { + "items": { + "description": "A database schema name", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "SelectStarResponseSchema": { + "properties": { + "result": { + "description": "SQL select star", + "type": "string" + } + }, + "type": "object" + }, + "TableMetadataColumnsResponse": { + "properties": { + "duplicates_constraint": { + "type": "string" + }, + "keys": { + "description": "", + "items": { + "type": "string" + }, + "type": "array" + }, + "longType": { + "description": "The actual backend long type for the column", + "type": "string" + }, + "name": { + "description": "The column name", + "type": "string" + }, + "type": { + "description": "The column type", + "type": "string" + } + }, + "type": "object" + }, + "TableMetadataForeignKeysIndexesResponse": { + "properties": { + "column_names": { + "items": { + "description": "A list of column names that compose the foreign key or index", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "The name of the foreign key or index", + "type": "string" + }, + "options": { + "$ref": "#/components/schemas/TableMetadataOptionsResponse" + }, + "referred_columns": { + "items": { + "type": "string" + }, + "type": "array" + }, + "referred_schema": { + "type": "string" + }, + "referred_table": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "TableMetadataOptionsResponse": { + "properties": { + "deferrable": { + "type": "boolean" + }, + "initially": { + "type": "boolean" + }, + "match": { + "type": "boolean" + }, + "ondelete": { + "type": "boolean" + }, + "onupdate": { + "type": "boolean" + } + }, + "type": "object" + }, + "TableMetadataPrimaryKeyResponse": { + "properties": { + "column_names": { + "items": { + "description": "A list of column names that compose the primary key", + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "The primary key index name", + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "TableMetadataResponseSchema": { + "properties": { + "columns": { + "description": "A list of columns and their metadata", + "items": { + "$ref": "#/components/schemas/TableMetadataColumnsResponse" + }, + "type": "array" + }, + "foreignKeys": { + "description": "A list of foreign keys and their metadata", + "items": { + "$ref": "#/components/schemas/TableMetadataForeignKeysIndexesResponse" + }, + "type": "array" + }, + "indexes": { + "description": "A list of indexes and their metadata", + "items": { + "$ref": "#/components/schemas/TableMetadataForeignKeysIndexesResponse" + }, + "type": "array" + }, + "name": { + "description": "The name of the table", + "type": "string" + }, + "primaryKey": { + "allOf": [ + { + "$ref": "#/components/schemas/TableMetadataPrimaryKeyResponse" + } + ], + "description": "Primary keys metadata" + }, + "selectStar": { + "description": "SQL select star", + "type": "string" + } + }, + "type": "object" + }, + "TemporaryCachePostSchema": { + "properties": { + "value": { + "description": "Any type of JSON supported text.", + "type": "string" + } + }, + "required": [ + "value" + ], + "type": "object" + }, + "TemporaryCachePutSchema": { + "properties": { + "value": { + "description": "Any type of JSON supported text.", + "type": "string" + } + }, + "required": [ + "value" + ], + "type": "object" + }, + "User": { + "properties": { + "first_name": { + "type": "string" + }, + "id": { + "format": "int32", + "type": "integer" + }, + "last_name": { + "type": "string" + }, + "username": { + "type": "string" + } + }, + "type": "object" + }, + "User1": { + "properties": { + "first_name": { + "type": "string" + }, + "last_name": { + "type": "string" + }, + "username": { + "type": "string" + } + }, + "type": "object" + }, + "UserResponseSchema": { + "properties": { + "email": { + "type": "string" + }, + "first_name": { + "type": "string" + }, + "id": { + "format": "int32", + "type": "integer" + }, + "is_active": { + "type": "boolean" + }, + "is_anonymous": { + "type": "boolean" + }, + "last_name": { + "type": "string" + }, + "username": { + "type": "string" + } + }, + "type": "object" + }, + "ValidatorConfigJSON": { + "properties": { + "op": { + "description": "The operation to compare with a threshold to apply to the SQL output\n", + "enum": [ + "<", + "<=", + ">", + ">=", + "==", + "!=" + ], + "type": "string" + }, + "threshold": { + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "database_schemas_query_schema": { + "properties": { + "force": { + "type": "boolean" + } + }, + "type": "object" + }, + "get_delete_ids_schema": { + "items": { + "type": "integer" + }, + "type": "array" + }, + "get_export_ids_schema": { + "items": { + "type": "integer" + }, + "type": "array" + }, + "get_fav_star_ids_schema": { + "items": { + "type": "integer" + }, + "type": "array" + }, + "get_info_schema": { + "properties": { + "add_columns": { + "additionalProperties": { + "properties": { + "page": { + "type": "integer" + }, + "page_size": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "object" + }, + "edit_columns": { + "additionalProperties": { + "properties": { + "page": { + "type": "integer" + }, + "page_size": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "object" + }, + "keys": { + "items": { + "enum": [ + "add_columns", + "edit_columns", + "filters", + "permissions", + "add_title", + "edit_title", + "none" + ], + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "get_item_schema": { + "properties": { + "columns": { + "items": { + "type": "string" + }, + "type": "array" + }, + "keys": { + "items": { + "enum": [ + "show_columns", + "description_columns", + "label_columns", + "show_title", + "none" + ], + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "get_list_schema": { + "properties": { + "columns": { + "items": { + "type": "string" + }, + "type": "array" + }, + "filters": { + "items": { + "properties": { + "col": { + "type": "string" + }, + "opr": { + "type": "string" + }, + "value": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "string" + }, + { + "type": "boolean" + }, + { + "type": "array" + } + ] + } + }, + "required": [ + "col", + "opr", + "value" + ], + "type": "object" + }, + "type": "array" + }, + "keys": { + "items": { + "enum": [ + "list_columns", + "order_columns", + "label_columns", + "description_columns", + "list_title", + "none" + ], + "type": "string" + }, + "type": "array" + }, + "order_column": { + "type": "string" + }, + "order_direction": { + "enum": [ + "asc", + "desc" + ], + "type": "string" + }, + "page": { + "type": "integer" + }, + "page_size": { + "type": "integer" + } + }, + "type": "object" + }, + "get_related_schema": { + "properties": { + "filter": { + "type": "string" + }, + "include_ids": { + "items": { + "type": "integer" + }, + "type": "array" + }, + "page": { + "type": "integer" + }, + "page_size": { + "type": "integer" + } + }, + "type": "object" + }, + "screenshot_query_schema": { + "properties": { + "force": { + "type": "boolean" + }, + "thumb_size": { + "items": { + "type": "integer" + }, + "type": "array" + }, + "window_size": { + "items": { + "type": "integer" + }, + "type": "array" + } + }, + "type": "object" + }, + "thumbnail_query_schema": { + "properties": { + "force": { + "type": "boolean" + } + }, + "type": "object" + } + }, + "securitySchemes": { + "jwt": { + "bearerFormat": "JWT", + "scheme": "bearer", + "type": "http" + }, + "jwt_refresh": { + "bearerFormat": "JWT", + "scheme": "bearer", + "type": "http" + } + } + }, + "info": { + "description": "Superset", + "title": "Superset", + "version": "v1" + }, + "openapi": "3.0.2", + "paths": { + "/api/v1/annotation_layer/": { + "delete": { + "description": "Deletes multiple annotation layers in a bulk operation.", + "parameters": [ + { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/get_delete_ids_schema" + } + } + }, + "in": "query", + "name": "q" + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "properties": { + "message": { + "type": "string" + } + }, + "type": "object" + } + } + }, + "description": "CSS templates bulk delete" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "404": { + "$ref": "#/components/responses/404" + }, + "422": { + "$ref": "#/components/responses/422" + }, + "500": { + "$ref": "#/components/responses/500" + } + }, + "security": [ + { + "jwt": [] + } + ], + "tags": [ + "Annotation Layers" + ] + }, + "get": { + "description": "Get a list of Annotation layers, use Rison or JSON query parameters for filtering, sorting, pagination and for selecting specific columns and metadata.", + "parameters": [ + { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/get_list_schema" + } + } + }, + "in": "query", + "name": "q" + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "properties": { + "count": { + "description": "The total record count on the backend", + "type": "number" + }, + "description_columns": { + "properties": { + "column_name": { + "description": "The description for the column name. Will be translated by babel", + "example": "A Nice description for the column", + "type": "string" + } + }, + "type": "object" + }, + "ids": { + "description": "A list of item ids, useful when you don't know the column id", + "items": { + "type": "string" + }, + "type": "array" + }, + "label_columns": { + "properties": { + "column_name": { + "description": "The label for the column name. Will be translated by babel", + "example": "A Nice label for the column", + "type": "string" + } + }, + "type": "object" + }, + "list_columns": { + "description": "A list of columns", + "items": { + "type": "string" + }, + "type": "array" + }, + "list_title": { + "description": "A title to render. Will be translated by babel", + "example": "List Items", + "type": "string" + }, + "order_columns": { + "description": "A list of allowed columns to sort", + "items": { + "type": "string" + }, + "type": "array" + }, + "result": { + "description": "The result from the get list query", + "items": { + "$ref": "#/components/schemas/AnnotationLayerRestApi.get_list" + }, + "type": "array" + } + }, + "type": "object" + } + } + }, + "description": "Items from Model" + }, + "400": { + "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "422": { + "$ref": "#/components/responses/422" + }, + "500": { + "$ref": "#/components/responses/500" + } + }, + "security": [ + { + "jwt": [] + } + ], + "tags": [ + "Annotation Layers" + ] + }, + "post": { + "description": "Create an Annotation layer", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AnnotationLayerRestApi.post" + } + } + }, + "description": "Annotation Layer schema", + "required": true + }, + "responses": { + "201": { + "content": { + "application/json": { + "schema": { + "properties": { + "id": { + "type": "number" + }, + "result": { + "$ref": "#/components/schemas/AnnotationLayerRestApi.post" + } + }, + "type": "object" + } + } + }, + "description": "Annotation added" + }, + "400": { + "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "404": { + "$ref": "#/components/responses/404" + }, + "500": { + "$ref": "#/components/responses/500" + } + }, + "security": [ + { + "jwt": [] + } + ], + "tags": [ + "Annotation Layers" + ] } }, - "securitySchemes": { - "jwt": { - "bearerFormat": "JWT", - "scheme": "bearer", - "type": "http" - }, - "jwt_refresh": { - "bearerFormat": "JWT", - "scheme": "bearer", - "type": "http" + "/api/v1/annotation_layer/_info": { + "get": { + "description": "Get metadata information about this API resource", + "parameters": [ + { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/get_info_schema" + } + } + }, + "in": "query", + "name": "q" + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "properties": { + "add_columns": { + "type": "object" + }, + "edit_columns": { + "type": "object" + }, + "filters": { + "properties": { + "column_name": { + "items": { + "properties": { + "name": { + "description": "The filter name. Will be translated by babel", + "type": "string" + }, + "operator": { + "description": "The filter operation key to use on list filters", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "permissions": { + "description": "The user permissions for this API resource", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + } + }, + "description": "Item from Model" + }, + "400": { + "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "422": { + "$ref": "#/components/responses/422" + }, + "500": { + "$ref": "#/components/responses/500" + } + }, + "security": [ + { + "jwt": [] + } + ], + "tags": [ + "Annotation Layers" + ] } - } - }, - "info": { - "description": "Superset", - "title": "Superset", - "version": "v1" - }, - "openapi": "3.0.2", - "paths": { - "/annotation_layer/": { - "delete": { - "description": "Deletes multiple annotation layers in a bulk operation.", + }, + "/api/v1/annotation_layer/related/{column_name}": { + "get": { "parameters": [ + { + "in": "path", + "name": "column_name", + "required": true, + "schema": { + "type": "string" + } + }, { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/get_delete_ids_schema" + "$ref": "#/components/schemas/get_related_schema" } } }, @@ -5714,6 +8684,54 @@ "name": "q" } ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RelatedResponseSchema" + } + } + }, + "description": "Related column data" + }, + "400": { + "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "404": { + "$ref": "#/components/responses/404" + }, + "500": { + "$ref": "#/components/responses/500" + } + }, + "security": [ + { + "jwt": [] + } + ], + "tags": [ + "Annotation Layers" + ] + } + }, + "/api/v1/annotation_layer/{pk}": { + "delete": { + "description": "Delete Annotation layer", + "parameters": [ + { + "description": "The annotation layer pk for this annotation", + "in": "path", + "name": "pk", + "required": true, + "schema": { + "type": "integer" + } + } + ], "responses": { "200": { "content": { @@ -5728,10 +8746,7 @@ } } }, - "description": "CSS templates bulk delete" - }, - "401": { - "$ref": "#/components/responses/401" + "description": "Item deleted" }, "404": { "$ref": "#/components/responses/404" @@ -5748,16 +8763,26 @@ "jwt": [] } ], - "tags": ["Annotation Layers"] + "tags": [ + "Annotation Layers" + ] }, "get": { - "description": "Get a list of Annotation layers, use Rison or JSON query parameters for filtering, sorting, pagination and for selecting specific columns and metadata.", + "description": "Get an Annotation layer", "parameters": [ + { + "in": "path", + "name": "pk", + "required": true, + "schema": { + "type": "integer" + } + }, { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/get_list_schema" + "$ref": "#/components/schemas/get_item_schema" } } }, @@ -5771,10 +8796,6 @@ "application/json": { "schema": { "properties": { - "count": { - "description": "The total record count on the backend", - "type": "number" - }, "description_columns": { "properties": { "column_name": { @@ -5785,12 +8806,9 @@ }, "type": "object" }, - "ids": { - "description": "A list of item ids, useful when you don't know the column id", - "items": { - "type": "string" - }, - "type": "array" + "id": { + "description": "The item id", + "type": "string" }, "label_columns": { "properties": { @@ -5802,38 +8820,27 @@ }, "type": "object" }, - "list_columns": { + "result": { + "$ref": "#/components/schemas/AnnotationLayerRestApi.get" + }, + "show_columns": { "description": "A list of columns", "items": { "type": "string" }, "type": "array" }, - "list_title": { + "show_title": { "description": "A title to render. Will be translated by babel", - "example": "List Items", + "example": "Show Item Details", "type": "string" - }, - "order_columns": { - "description": "A list of allowed columns to sort", - "items": { - "type": "string" - }, - "type": "array" - }, - "result": { - "description": "The result from the get list query", - "items": { - "$ref": "#/components/schemas/AnnotationLayerRestApi.get_list" - }, - "type": "array" } }, "type": "object" } } }, - "description": "Items from Model" + "description": "Item from Model" }, "400": { "$ref": "#/components/responses/400" @@ -5841,6 +8848,9 @@ "401": { "$ref": "#/components/responses/401" }, + "404": { + "$ref": "#/components/responses/404" + }, "422": { "$ref": "#/components/responses/422" }, @@ -5853,23 +8863,36 @@ "jwt": [] } ], - "tags": ["Annotation Layers"] + "tags": [ + "Annotation Layers" + ] }, - "post": { - "description": "Create an Annotation layer", + "put": { + "description": "Update an Annotation layer", + "parameters": [ + { + "description": "The annotation layer pk for this annotation", + "in": "path", + "name": "pk", + "required": true, + "schema": { + "type": "integer" + } + } + ], "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AnnotationLayerRestApi.post" + "$ref": "#/components/schemas/AnnotationLayerRestApi.put" } } }, - "description": "Annotation Layer schema", + "description": "Annotation schema", "required": true }, "responses": { - "201": { + "200": { "content": { "application/json": { "schema": { @@ -5878,14 +8901,14 @@ "type": "number" }, "result": { - "$ref": "#/components/schemas/AnnotationLayerRestApi.post" + "$ref": "#/components/schemas/AnnotationLayerRestApi.put" } }, "type": "object" } } }, - "description": "Annotation added" + "description": "Annotation changed" }, "400": { "$ref": "#/components/responses/400" @@ -5905,18 +8928,29 @@ "jwt": [] } ], - "tags": ["Annotation Layers"] + "tags": [ + "Annotation Layers" + ] } }, - "/annotation_layer/_info": { - "get": { - "description": "Get metadata information about this API resource", + "/api/v1/annotation_layer/{pk}/annotation/": { + "delete": { + "description": "Deletes multiple annotation in a bulk operation.", "parameters": [ + { + "description": "The annotation layer pk for this annotation", + "in": "path", + "name": "pk", + "required": true, + "schema": { + "type": "integer" + } + }, { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/get_info_schema" + "$ref": "#/components/schemas/get_delete_ids_schema" } } }, @@ -5930,53 +8964,22 @@ "application/json": { "schema": { "properties": { - "add_columns": { - "type": "object" - }, - "edit_columns": { - "type": "object" - }, - "filters": { - "properties": { - "column_name": { - "items": { - "properties": { - "name": { - "description": "The filter name. Will be translated by babel", - "type": "string" - }, - "operator": { - "description": "The filter operation key to use on list filters", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "permissions": { - "description": "The user permissions for this API resource", - "items": { - "type": "string" - }, - "type": "array" + "message": { + "type": "string" } }, "type": "object" } } }, - "description": "Item from Model" - }, - "400": { - "$ref": "#/components/responses/400" + "description": "Annotations bulk delete" }, "401": { "$ref": "#/components/responses/401" }, + "404": { + "$ref": "#/components/responses/404" + }, "422": { "$ref": "#/components/responses/422" }, @@ -5989,25 +8992,27 @@ "jwt": [] } ], - "tags": ["Annotation Layers"] - } - }, - "/annotation_layer/related/{column_name}": { + "tags": [ + "Annotation Layers" + ] + }, "get": { + "description": "Get a list of Annotation layers, use Rison or JSON query parameters for filtering, sorting, pagination and for selecting specific columns and metadata.", "parameters": [ { + "description": "The annotation layer id for this annotation", "in": "path", - "name": "column_name", + "name": "pk", "required": true, "schema": { - "type": "string" + "type": "integer" } }, { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/get_related_schema" + "$ref": "#/components/schemas/get_list_schema" } } }, @@ -6020,11 +9025,96 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RelatedResponseSchema" + "properties": { + "count": { + "description": "The total record count on the backend", + "type": "number" + }, + "ids": { + "description": "A list of annotation ids", + "items": { + "type": "string" + }, + "type": "array" + }, + "result": { + "description": "The result from the get list query", + "items": { + "$ref": "#/components/schemas/AnnotationRestApi.get_list" + }, + "type": "array" + } + }, + "type": "object" } } }, - "description": "Related column data" + "description": "Items from Annotations" + }, + "400": { + "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "422": { + "$ref": "#/components/responses/422" + }, + "500": { + "$ref": "#/components/responses/500" + } + }, + "security": [ + { + "jwt": [] + } + ], + "tags": [ + "Annotation Layers" + ] + }, + "post": { + "description": "Create an Annotation layer", + "parameters": [ + { + "description": "The annotation layer pk for this annotation", + "in": "path", + "name": "pk", + "required": true, + "schema": { + "type": "integer" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AnnotationRestApi.post" + } + } + }, + "description": "Annotation schema", + "required": true + }, + "responses": { + "201": { + "content": { + "application/json": { + "schema": { + "properties": { + "id": { + "type": "number" + }, + "result": { + "$ref": "#/components/schemas/AnnotationRestApi.post" + } + }, + "type": "object" + } + } + }, + "description": "Annotation added" }, "400": { "$ref": "#/components/responses/400" @@ -6044,10 +9134,12 @@ "jwt": [] } ], - "tags": ["Annotation Layers"] + "tags": [ + "Annotation Layers" + ] } }, - "/annotation_layer/{pk}": { + "/api/v1/annotation_layer/{pk}/annotation/{annotation_id}": { "delete": { "description": "Delete Annotation layer", "parameters": [ @@ -6059,6 +9151,15 @@ "schema": { "type": "integer" } + }, + { + "description": "The annotation pk for this annotation", + "in": "path", + "name": "annotation_id", + "required": true, + "schema": { + "type": "integer" + } } ], "responses": { @@ -6092,12 +9193,15 @@ "jwt": [] } ], - "tags": ["Annotation Layers"] + "tags": [ + "Annotation Layers" + ] }, "get": { "description": "Get an Annotation layer", "parameters": [ { + "description": "The annotation layer pk for this annotation", "in": "path", "name": "pk", "required": true, @@ -6105,6 +9209,15 @@ "type": "integer" } }, + { + "description": "The annotation pk", + "in": "path", + "name": "annotation_id", + "required": true, + "schema": { + "type": "integer" + } + }, { "content": { "application/json": { @@ -6123,44 +9236,12 @@ "application/json": { "schema": { "properties": { - "description_columns": { - "properties": { - "column_name": { - "description": "The description for the column name. Will be translated by babel", - "example": "A Nice description for the column", - "type": "string" - } - }, - "type": "object" - }, "id": { "description": "The item id", "type": "string" }, - "label_columns": { - "properties": { - "column_name": { - "description": "The label for the column name. Will be translated by babel", - "example": "A Nice label for the column", - "type": "string" - } - }, - "type": "object" - }, "result": { - "$ref": "#/components/schemas/AnnotationLayerRestApi.get" - }, - "show_columns": { - "description": "A list of columns", - "items": { - "type": "string" - }, - "type": "array" - }, - "show_title": { - "description": "A title to render. Will be translated by babel", - "example": "Show Item Details", - "type": "string" + "$ref": "#/components/schemas/AnnotationRestApi.get" } }, "type": "object" @@ -6190,7 +9271,9 @@ "jwt": [] } ], - "tags": ["Annotation Layers"] + "tags": [ + "Annotation Layers" + ] }, "put": { "description": "Update an Annotation layer", @@ -6203,13 +9286,22 @@ "schema": { "type": "integer" } + }, + { + "description": "The annotation pk for this annotation", + "in": "path", + "name": "annotation_id", + "required": true, + "schema": { + "type": "integer" + } } ], "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AnnotationLayerRestApi.put" + "$ref": "#/components/schemas/AnnotationRestApi.put" } } }, @@ -6226,7 +9318,7 @@ "type": "number" }, "result": { - "$ref": "#/components/schemas/AnnotationLayerRestApi.put" + "$ref": "#/components/schemas/AnnotationRestApi.put" } }, "type": "object" @@ -6253,22 +9345,225 @@ "jwt": [] } ], - "tags": ["Annotation Layers"] + "tags": [ + "Annotation Layers" + ] } }, - "/annotation_layer/{pk}/annotation/": { - "delete": { - "description": "Deletes multiple annotation in a bulk operation.", + "/api/v1/assets/export/": { + "get": { + "description": "Returns a ZIP file with all the Superset assets (databases, datasets, charts, dashboards, saved queries) as YAML files.", + "responses": { + "200": { + "content": { + "application/zip": { + "schema": { + "format": "binary", + "type": "string" + } + } + }, + "description": "ZIP file" + }, + "400": { + "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "404": { + "$ref": "#/components/responses/404" + }, + "500": { + "$ref": "#/components/responses/500" + } + }, + "security": [ + { + "jwt": [] + } + ], + "tags": [ + "Import/export" + ] + } + }, + "/api/v1/assets/import/": { + "post": { + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "properties": { + "bundle": { + "description": "upload file (ZIP or JSON)", + "format": "binary", + "type": "string" + }, + "passwords": { + "description": "JSON map of passwords for each featured database in the ZIP file. If the ZIP includes a database config in the path `databases/MyDatabase.yaml`, the password should be provided in the following format: `{\"databases/MyDatabase.yaml\": \"my_password\"}`.", + "type": "string" + } + }, + "type": "object" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "properties": { + "message": { + "type": "string" + } + }, + "type": "object" + } + } + }, + "description": "Dashboard import result" + }, + "400": { + "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "422": { + "$ref": "#/components/responses/422" + }, + "500": { + "$ref": "#/components/responses/500" + } + }, + "security": [ + { + "jwt": [] + } + ], + "tags": [ + "Import/export" + ] + } + }, + "/api/v1/async_event/": { + "get": { + "description": "Reads off of the Redis events stream, using the user's JWT token and optional query params for last event received.", "parameters": [ { - "description": "The annotation layer pk for this annotation", - "in": "path", - "name": "pk", - "required": true, + "description": "Last ID received by the client", + "in": "query", + "name": "last_id", "schema": { - "type": "integer" + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "properties": { + "result": { + "items": { + "properties": { + "channel_id": { + "type": "string" + }, + "errors": { + "items": { + "type": "object" + }, + "type": "array" + }, + "id": { + "type": "string" + }, + "job_id": { + "type": "string" + }, + "result_url": { + "type": "string" + }, + "status": { + "type": "string" + }, + "user_id": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + } + } + }, + "description": "Async event results" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "500": { + "$ref": "#/components/responses/500" + } + }, + "security": [ + { + "jwt": [] + } + ], + "tags": [ + "AsyncEventsRestApi" + ] + } + }, + "/api/v1/cachekey/invalidate": { + "post": { + "description": "Takes a list of datasources, finds the associated cache records and invalidates them and removes the database records", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CacheInvalidationRequestSchema" + } } }, + "description": "A list of datasources uuid or the tuples of database and datasource names", + "required": true + }, + "responses": { + "201": { + "description": "cache was successfully invalidated" + }, + "400": { + "$ref": "#/components/responses/400" + }, + "500": { + "$ref": "#/components/responses/500" + } + }, + "security": [ + { + "jwt": [] + } + ], + "tags": [ + "CacheRestApi" + ] + } + }, + "/api/v1/chart/": { + "delete": { + "description": "Deletes multiple Charts in a bulk operation.", + "parameters": [ { "content": { "application/json": { @@ -6295,11 +9590,14 @@ } } }, - "description": "Annotations bulk delete" + "description": "Charts bulk delete" }, "401": { "$ref": "#/components/responses/401" }, + "403": { + "$ref": "#/components/responses/403" + }, "404": { "$ref": "#/components/responses/404" }, @@ -6315,20 +9613,13 @@ "jwt": [] } ], - "tags": ["Annotation Layers"] + "tags": [ + "Charts" + ] }, "get": { - "description": "Get a list of Annotation layers, use Rison or JSON query parameters for filtering, sorting, pagination and for selecting specific columns and metadata.", + "description": "Get a list of charts, use Rison or JSON query parameters for filtering, sorting, pagination and for selecting specific columns and metadata.", "parameters": [ - { - "description": "The annotation layer id for this annotation", - "in": "path", - "name": "pk", - "required": true, - "schema": { - "type": "integer" - } - }, { "content": { "application/json": { @@ -6351,8 +9642,47 @@ "description": "The total record count on the backend", "type": "number" }, + "description_columns": { + "properties": { + "column_name": { + "description": "The description for the column name. Will be translated by babel", + "example": "A Nice description for the column", + "type": "string" + } + }, + "type": "object" + }, "ids": { - "description": "A list of annotation ids", + "description": "A list of item ids, useful when you don't know the column id", + "items": { + "type": "string" + }, + "type": "array" + }, + "label_columns": { + "properties": { + "column_name": { + "description": "The label for the column name. Will be translated by babel", + "example": "A Nice label for the column", + "type": "string" + } + }, + "type": "object" + }, + "list_columns": { + "description": "A list of columns", + "items": { + "type": "string" + }, + "type": "array" + }, + "list_title": { + "description": "A title to render. Will be translated by babel", + "example": "List Items", + "type": "string" + }, + "order_columns": { + "description": "A list of allowed columns to sort", "items": { "type": "string" }, @@ -6361,7 +9691,7 @@ "result": { "description": "The result from the get list query", "items": { - "$ref": "#/components/schemas/AnnotationRestApi.get_list" + "$ref": "#/components/schemas/ChartRestApi.get_list" }, "type": "array" } @@ -6370,7 +9700,7 @@ } } }, - "description": "Items from Annotations" + "description": "Items from Model" }, "400": { "$ref": "#/components/responses/400" @@ -6390,30 +9720,21 @@ "jwt": [] } ], - "tags": ["Annotation Layers"] + "tags": [ + "Charts" + ] }, "post": { - "description": "Create an Annotation layer", - "parameters": [ - { - "description": "The annotation layer pk for this annotation", - "in": "path", - "name": "pk", - "required": true, - "schema": { - "type": "integer" - } - } - ], + "description": "Create a new Chart.", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AnnotationRestApi.post" + "$ref": "#/components/schemas/ChartRestApi.post" } } }, - "description": "Annotation schema", + "description": "Chart schema", "required": true }, "responses": { @@ -6426,14 +9747,14 @@ "type": "number" }, "result": { - "$ref": "#/components/schemas/AnnotationRestApi.post" + "$ref": "#/components/schemas/ChartRestApi.post" } }, "type": "object" } } }, - "description": "Annotation added" + "description": "Chart added" }, "400": { "$ref": "#/components/responses/400" @@ -6441,8 +9762,8 @@ "401": { "$ref": "#/components/responses/401" }, - "404": { - "$ref": "#/components/responses/404" + "422": { + "$ref": "#/components/responses/422" }, "500": { "$ref": "#/components/responses/500" @@ -6453,30 +9774,25 @@ "jwt": [] } ], - "tags": ["Annotation Layers"] + "tags": [ + "Charts" + ] } }, - "/annotation_layer/{pk}/annotation/{annotation_id}": { - "delete": { - "description": "Delete Annotation layer", + "/api/v1/chart/_info": { + "get": { + "description": "Several metadata information about chart API endpoints.", "parameters": [ { - "description": "The annotation layer pk for this annotation", - "in": "path", - "name": "pk", - "required": true, - "schema": { - "type": "integer" - } - }, - { - "description": "The annotation pk for this annotation", - "in": "path", - "name": "annotation_id", - "required": true, - "schema": { - "type": "integer" - } + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/get_info_schema" + } + } + }, + "in": "query", + "name": "q" } ], "responses": { @@ -6485,18 +9801,52 @@ "application/json": { "schema": { "properties": { - "message": { - "type": "string" + "add_columns": { + "type": "object" + }, + "edit_columns": { + "type": "object" + }, + "filters": { + "properties": { + "column_name": { + "items": { + "properties": { + "name": { + "description": "The filter name. Will be translated by babel", + "type": "string" + }, + "operator": { + "description": "The filter operation key to use on list filters", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "permissions": { + "description": "The user permissions for this API resource", + "items": { + "type": "string" + }, + "type": "array" } }, "type": "object" } } }, - "description": "Item deleted" + "description": "Item from Model" }, - "404": { - "$ref": "#/components/responses/404" + "400": { + "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401" }, "422": { "$ref": "#/components/responses/422" @@ -6510,60 +9860,45 @@ "jwt": [] } ], - "tags": ["Annotation Layers"] - }, - "get": { - "description": "Get an Annotation layer", - "parameters": [ - { - "description": "The annotation layer pk for this annotation", - "in": "path", - "name": "pk", - "required": true, - "schema": { - "type": "integer" - } - }, - { - "description": "The annotation pk", - "in": "path", - "name": "annotation_id", - "required": true, - "schema": { - "type": "integer" + "tags": [ + "Charts" + ] + } + }, + "/api/v1/chart/data": { + "post": { + "description": "Takes a query context constructed in the client and returns payload data response for the given query.", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ChartDataQueryContextSchema" + } } }, - { + "description": "A query context consists of a datasource from which to fetch data and one or many query objects.", + "required": true + }, + "responses": { + "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/get_item_schema" + "$ref": "#/components/schemas/ChartDataResponseSchema" } } }, - "in": "query", - "name": "q" - } - ], - "responses": { - "200": { + "description": "Query result" + }, + "202": { "content": { "application/json": { "schema": { - "properties": { - "id": { - "description": "The item id", - "type": "string" - }, - "result": { - "$ref": "#/components/schemas/AnnotationRestApi.get" - } - }, - "type": "object" + "$ref": "#/components/schemas/ChartDataAsyncResponseSchema" } } }, - "description": "Item from Model" + "description": "Async job details" }, "400": { "$ref": "#/components/responses/400" @@ -6571,12 +9906,6 @@ "401": { "$ref": "#/components/responses/401" }, - "404": { - "$ref": "#/components/responses/404" - }, - "422": { - "$ref": "#/components/responses/422" - }, "500": { "$ref": "#/components/responses/500" } @@ -6586,59 +9915,34 @@ "jwt": [] } ], - "tags": ["Annotation Layers"] - }, - "put": { - "description": "Update an Annotation layer", + "tags": [ + "Charts" + ] + } + }, + "/api/v1/chart/data/{cache_key}": { + "get": { + "description": "Takes a query context cache key and returns payload data response for the given query.", "parameters": [ { - "description": "The annotation layer pk for this annotation", - "in": "path", - "name": "pk", - "required": true, - "schema": { - "type": "integer" - } - }, - { - "description": "The annotation pk for this annotation", "in": "path", - "name": "annotation_id", + "name": "cache_key", "required": true, - "schema": { - "type": "integer" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AnnotationRestApi.put" - } - } - }, - "description": "Annotation schema", - "required": true - }, + "schema": { + "type": "string" + } + } + ], "responses": { "200": { "content": { "application/json": { "schema": { - "properties": { - "id": { - "type": "number" - }, - "result": { - "$ref": "#/components/schemas/AnnotationRestApi.put" - } - }, - "type": "object" + "$ref": "#/components/schemas/ChartDataResponseSchema" } } }, - "description": "Annotation changed" + "description": "Query result" }, "400": { "$ref": "#/components/responses/400" @@ -6649,6 +9953,9 @@ "404": { "$ref": "#/components/responses/404" }, + "422": { + "$ref": "#/components/responses/422" + }, "500": { "$ref": "#/components/responses/500" } @@ -6658,70 +9965,48 @@ "jwt": [] } ], - "tags": ["Annotation Layers"] + "tags": [ + "Charts" + ] } }, - "/async_event/": { + "/api/v1/chart/export/": { "get": { - "description": "Reads off of the Redis events stream, using the user's JWT token and optional query params for last event received.", + "description": "Exports multiple charts and downloads them as YAML files", "parameters": [ { - "description": "Last ID received by the client", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/get_export_ids_schema" + } + } + }, "in": "query", - "name": "last_id", - "schema": { - "type": "string" - } + "name": "q" } ], "responses": { "200": { "content": { - "application/json": { + "application/zip": { "schema": { - "properties": { - "result": { - "items": { - "properties": { - "channel_id": { - "type": "string" - }, - "errors": { - "items": { - "type": "object" - }, - "type": "array" - }, - "id": { - "type": "string" - }, - "job_id": { - "type": "string" - }, - "result_url": { - "type": "string" - }, - "status": { - "type": "string" - }, - "user_id": { - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" + "format": "binary", + "type": "string" } } }, - "description": "Async event results" + "description": "A zip file with chart(s), dataset(s) and database(s) as YAML" + }, + "400": { + "$ref": "#/components/responses/400" }, "401": { "$ref": "#/components/responses/401" }, + "404": { + "$ref": "#/components/responses/404" + }, "500": { "$ref": "#/components/responses/500" } @@ -6731,30 +10016,47 @@ "jwt": [] } ], - "tags": ["AsyncEventsRestApi"] + "tags": [ + "Charts" + ] } }, - "/cachekey/invalidate": { - "post": { - "description": "Takes a list of datasources, finds the associated cache records and invalidates them and removes the database records", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CacheInvalidationRequestSchema" + "/api/v1/chart/favorite_status/": { + "get": { + "description": "Check favorited dashboards for current user", + "parameters": [ + { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/get_fav_star_ids_schema" + } } - } - }, - "description": "A list of datasources uuid or the tuples of database and datasource names", - "required": true - }, + }, + "in": "query", + "name": "q" + } + ], "responses": { - "201": { - "description": "cache was successfully invalidated" + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GetFavStarIdsSchema" + } + } + }, + "description": "None" }, "400": { "$ref": "#/components/responses/400" }, + "401": { + "$ref": "#/components/responses/401" + }, + "404": { + "$ref": "#/components/responses/404" + }, "500": { "$ref": "#/components/responses/500" } @@ -6764,25 +10066,38 @@ "jwt": [] } ], - "tags": ["CacheRestApi"] + "tags": [ + "Charts" + ] } }, - "/chart/": { - "delete": { - "description": "Deletes multiple Charts in a bulk operation.", - "parameters": [ - { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/get_delete_ids_schema" - } + "/api/v1/chart/import/": { + "post": { + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "properties": { + "formData": { + "description": "upload file (ZIP)", + "format": "binary", + "type": "string" + }, + "overwrite": { + "description": "overwrite existing charts?", + "type": "boolean" + }, + "passwords": { + "description": "JSON map of passwords for each featured database in the ZIP file. If the ZIP includes a database config in the path `databases/MyDatabase.yaml`, the password should be provided in the following format: `{\"databases/MyDatabase.yaml\": \"my_password\"}`.", + "type": "string" + } + }, + "type": "object" } - }, - "in": "query", - "name": "q" - } - ], + } + }, + "required": true + }, "responses": { "200": { "content": { @@ -6797,17 +10112,14 @@ } } }, - "description": "Charts bulk delete" + "description": "Chart import result" + }, + "400": { + "$ref": "#/components/responses/400" }, "401": { "$ref": "#/components/responses/401" }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, "422": { "$ref": "#/components/responses/422" }, @@ -6820,92 +10132,45 @@ "jwt": [] } ], - "tags": ["Charts"] - }, + "tags": [ + "Charts" + ] + } + }, + "/api/v1/chart/related/{column_name}": { "get": { - "description": "Get a list of charts, use Rison or JSON query parameters for filtering, sorting, pagination and for selecting specific columns and metadata.", + "description": "Get a list of all possible owners for a chart. Use `owners` has the `column_name` parameter", "parameters": [ + { + "in": "path", + "name": "column_name", + "required": true, + "schema": { + "type": "string" + } + }, { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/get_list_schema" + "$ref": "#/components/schemas/get_related_schema" } } }, "in": "query", - "name": "q" - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "properties": { - "count": { - "description": "The total record count on the backend", - "type": "number" - }, - "description_columns": { - "properties": { - "column_name": { - "description": "The description for the column name. Will be translated by babel", - "example": "A Nice description for the column", - "type": "string" - } - }, - "type": "object" - }, - "ids": { - "description": "A list of item ids, useful when you don't know the column id", - "items": { - "type": "string" - }, - "type": "array" - }, - "label_columns": { - "properties": { - "column_name": { - "description": "The label for the column name. Will be translated by babel", - "example": "A Nice label for the column", - "type": "string" - } - }, - "type": "object" - }, - "list_columns": { - "description": "A list of columns", - "items": { - "type": "string" - }, - "type": "array" - }, - "list_title": { - "description": "A title to render. Will be translated by babel", - "example": "List Items", - "type": "string" - }, - "order_columns": { - "description": "A list of allowed columns to sort", - "items": { - "type": "string" - }, - "type": "array" - }, - "result": { - "description": "The result from the get list query", - "items": { - "$ref": "#/components/schemas/ChartRestApi.get_list" - }, - "type": "array" - } - }, - "type": "object" + "name": "q" + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RelatedResponseSchema" } } }, - "description": "Items from Model" + "description": "Related column data" }, "400": { "$ref": "#/components/responses/400" @@ -6913,8 +10178,8 @@ "401": { "$ref": "#/components/responses/401" }, - "422": { - "$ref": "#/components/responses/422" + "404": { + "$ref": "#/components/responses/404" }, "500": { "$ref": "#/components/responses/500" @@ -6925,46 +10190,49 @@ "jwt": [] } ], - "tags": ["Charts"] - }, - "post": { - "description": "Create a new Chart.", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ChartRestApi.post" - } + "tags": [ + "Charts" + ] + } + }, + "/api/v1/chart/{pk}": { + "delete": { + "description": "Deletes a Chart.", + "parameters": [ + { + "in": "path", + "name": "pk", + "required": true, + "schema": { + "type": "integer" } - }, - "description": "Chart schema", - "required": true - }, + } + ], "responses": { - "201": { + "200": { "content": { "application/json": { "schema": { "properties": { - "id": { - "type": "number" - }, - "result": { - "$ref": "#/components/schemas/ChartRestApi.post" + "message": { + "type": "string" } }, "type": "object" } } }, - "description": "Chart added" - }, - "400": { - "$ref": "#/components/responses/400" + "description": "Chart delete" }, "401": { "$ref": "#/components/responses/401" }, + "403": { + "$ref": "#/components/responses/403" + }, + "404": { + "$ref": "#/components/responses/404" + }, "422": { "$ref": "#/components/responses/422" }, @@ -6977,18 +10245,26 @@ "jwt": [] } ], - "tags": ["Charts"] - } - }, - "/chart/_info": { + "tags": [ + "Charts" + ] + }, "get": { - "description": "Several metadata information about chart API endpoints.", + "description": "Get a chart detail information.", "parameters": [ + { + "in": "path", + "name": "pk", + "required": true, + "schema": { + "type": "integer" + } + }, { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/get_info_schema" + "$ref": "#/components/schemas/get_item_schema" } } }, @@ -7002,39 +10278,44 @@ "application/json": { "schema": { "properties": { - "add_columns": { + "description_columns": { + "properties": { + "column_name": { + "description": "The description for the column name. Will be translated by babel", + "example": "A Nice description for the column", + "type": "string" + } + }, "type": "object" }, - "edit_columns": { - "type": "object" + "id": { + "description": "The item id", + "type": "string" }, - "filters": { + "label_columns": { "properties": { "column_name": { - "items": { - "properties": { - "name": { - "description": "The filter name. Will be translated by babel", - "type": "string" - }, - "operator": { - "description": "The filter operation key to use on list filters", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" + "description": "The label for the column name. Will be translated by babel", + "example": "A Nice label for the column", + "type": "string" } }, "type": "object" }, - "permissions": { - "description": "The user permissions for this API resource", + "result": { + "$ref": "#/components/schemas/ChartRestApi.get" + }, + "show_columns": { + "description": "A list of columns", "items": { "type": "string" }, "type": "array" + }, + "show_title": { + "description": "A title to render. Will be translated by babel", + "example": "Show Item Details", + "type": "string" } }, "type": "object" @@ -7049,6 +10330,9 @@ "401": { "$ref": "#/components/responses/401" }, + "404": { + "$ref": "#/components/responses/404" + }, "422": { "$ref": "#/components/responses/422" }, @@ -7061,21 +10345,31 @@ "jwt": [] } ], - "tags": ["Charts"] - } - }, - "/chart/data": { - "post": { - "description": "Takes a query context constructed in the client and returns payload data response for the given query.", + "tags": [ + "Charts" + ] + }, + "put": { + "description": "Changes a Chart.", + "parameters": [ + { + "in": "path", + "name": "pk", + "required": true, + "schema": { + "type": "integer" + } + } + ], "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ChartDataQueryContextSchema" + "$ref": "#/components/schemas/ChartRestApi.put" } } }, - "description": "A query context consists of a datasource from which to fetch data and one or many query objects.", + "description": "Chart schema", "required": true }, "responses": { @@ -7083,21 +10377,19 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ChartDataResponseSchema" - } - } - }, - "description": "Query result" - }, - "202": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ChartDataAsyncResponseSchema" + "properties": { + "id": { + "type": "number" + }, + "result": { + "$ref": "#/components/schemas/ChartRestApi.put" + } + }, + "type": "object" } } }, - "description": "Async job details" + "description": "Chart changed" }, "400": { "$ref": "#/components/responses/400" @@ -7105,47 +10397,8 @@ "401": { "$ref": "#/components/responses/401" }, - "500": { - "$ref": "#/components/responses/500" - } - }, - "security": [ - { - "jwt": [] - } - ], - "tags": ["Charts"] - } - }, - "/chart/data/{cache_key}": { - "get": { - "description": "Takes a query context cache key and returns payload data response for the given query.", - "parameters": [ - { - "in": "path", - "name": "cache_key", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ChartDataResponseSchema" - } - } - }, - "description": "Query result" - }, - "400": { - "$ref": "#/components/responses/400" - }, - "401": { - "$ref": "#/components/responses/401" + "403": { + "$ref": "#/components/responses/403" }, "404": { "$ref": "#/components/responses/404" @@ -7162,18 +10415,28 @@ "jwt": [] } ], - "tags": ["Charts"] + "tags": [ + "Charts" + ] } }, - "/chart/export/": { + "/api/v1/chart/{pk}/cache_screenshot/": { "get": { - "description": "Exports multiple charts and downloads them as YAML files", + "description": "Compute and cache a screenshot.", "parameters": [ + { + "in": "path", + "name": "pk", + "required": true, + "schema": { + "type": "integer" + } + }, { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/get_export_ids_schema" + "$ref": "#/components/schemas/screenshot_query_schema" } } }, @@ -7184,14 +10447,16 @@ "responses": { "200": { "content": { - "application/zip": { + "application/json": { "schema": { - "format": "binary", - "type": "string" + "$ref": "#/components/schemas/ChartCacheScreenshotResponseSchema" } } }, - "description": "A zip file with chart(s), dataset(s) and database(s) as YAML" + "description": "Chart async result" + }, + "302": { + "description": "Redirects to the current digest" }, "400": { "$ref": "#/components/responses/400" @@ -7211,35 +10476,61 @@ "jwt": [] } ], - "tags": ["Charts"] + "tags": [ + "Charts" + ] } }, - "/chart/favorite_status/": { + "/api/v1/chart/{pk}/data/": { "get": { - "description": "Check favorited dashboards for current user", + "description": "Takes a chart ID and uses the query context stored when the chart was saved to return payload data response.", "parameters": [ { + "description": "The chart ID", + "in": "path", + "name": "pk", + "required": true, + "schema": { + "type": "integer" + } + }, + { + "description": "The format in which the data should be returned", + "in": "query", + "name": "format", + "schema": { + "type": "string" + } + }, + { + "description": "The type in which the data should be returned", + "in": "query", + "name": "type", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/get_fav_star_ids_schema" + "$ref": "#/components/schemas/ChartDataResponseSchema" } } }, - "in": "query", - "name": "q" - } - ], - "responses": { - "200": { + "description": "Query result" + }, + "202": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/GetFavStarIdsSchema" + "$ref": "#/components/schemas/ChartDataAsyncResponseSchema" } } }, - "description": "None" + "description": "Async job details" }, "400": { "$ref": "#/components/responses/400" @@ -7247,9 +10538,6 @@ "401": { "$ref": "#/components/responses/401" }, - "404": { - "$ref": "#/components/responses/404" - }, "500": { "$ref": "#/components/responses/500" } @@ -7259,51 +10547,46 @@ "jwt": [] } ], - "tags": ["Charts"] + "tags": [ + "Charts" + ] } }, - "/chart/import/": { - "post": { - "requestBody": { - "content": { - "multipart/form-data": { - "schema": { - "properties": { - "formData": { - "description": "upload file (ZIP)", - "format": "binary", - "type": "string" - }, - "overwrite": { - "description": "overwrite existing databases?", - "type": "boolean" - }, - "passwords": { - "description": "JSON map of passwords for each file", - "type": "string" - } - }, - "type": "object" - } + "/api/v1/chart/{pk}/screenshot/{digest}/": { + "get": { + "description": "Get a computed screenshot from cache.", + "parameters": [ + { + "in": "path", + "name": "pk", + "required": true, + "schema": { + "type": "integer" } }, - "required": true - }, + { + "in": "path", + "name": "digest", + "required": true, + "schema": { + "type": "string" + } + } + ], "responses": { "200": { "content": { - "application/json": { + "image/*": { "schema": { - "properties": { - "message": { - "type": "string" - } - }, - "type": "object" + "format": "binary", + "type": "string" } } }, - "description": "Chart import result" + "description": "Chart thumbnail image" + }, + "302": { + "description": "Redirects to the current digest" }, "400": { "$ref": "#/components/responses/400" @@ -7311,8 +10594,8 @@ "401": { "$ref": "#/components/responses/401" }, - "422": { - "$ref": "#/components/responses/422" + "404": { + "$ref": "#/components/responses/404" }, "500": { "$ref": "#/components/responses/500" @@ -7323,43 +10606,46 @@ "jwt": [] } ], - "tags": ["Charts"] + "tags": [ + "Charts" + ] } }, - "/chart/related/{column_name}": { + "/api/v1/chart/{pk}/thumbnail/{digest}/": { "get": { - "description": "Get a list of all possible owners for a chart. Use `owners` has the `column_name` parameter", + "description": "Compute or get already computed chart thumbnail from cache.", "parameters": [ { "in": "path", - "name": "column_name", + "name": "pk", "required": true, "schema": { - "type": "string" + "type": "integer" } }, { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/get_related_schema" - } - } - }, - "in": "query", - "name": "q" + "in": "path", + "name": "digest", + "required": true, + "schema": { + "type": "string" + } } ], "responses": { "200": { "content": { - "application/json": { + "image/*": { "schema": { - "$ref": "#/components/schemas/RelatedResponseSchema" + "format": "binary", + "type": "string" } } }, - "description": "Related column data" + "description": "Chart thumbnail image" + }, + "302": { + "description": "Redirects to the current digest" }, "400": { "$ref": "#/components/responses/400" @@ -7379,20 +10665,25 @@ "jwt": [] } ], - "tags": ["Charts"] + "tags": [ + "Charts" + ] } }, - "/chart/{pk}": { + "/api/v1/css_template/": { "delete": { - "description": "Deletes a Chart.", + "description": "Deletes multiple css templates in a bulk operation.", "parameters": [ { - "in": "path", - "name": "pk", - "required": true, - "schema": { - "type": "integer" - } + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/get_delete_ids_schema" + } + } + }, + "in": "query", + "name": "q" } ], "responses": { @@ -7409,14 +10700,11 @@ } } }, - "description": "Chart delete" + "description": "CSS templates bulk delete" }, "401": { "$ref": "#/components/responses/401" }, - "403": { - "$ref": "#/components/responses/403" - }, "404": { "$ref": "#/components/responses/404" }, @@ -7432,24 +10720,18 @@ "jwt": [] } ], - "tags": ["Charts"] + "tags": [ + "CSS Templates" + ] }, "get": { - "description": "Get a chart detail information.", + "description": "Get a list of CSS templates, use Rison or JSON query parameters for filtering, sorting, pagination and for selecting specific columns and metadata.", "parameters": [ - { - "in": "path", - "name": "pk", - "required": true, - "schema": { - "type": "integer" - } - }, { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/get_item_schema" + "$ref": "#/components/schemas/get_list_schema" } } }, @@ -7463,6 +10745,10 @@ "application/json": { "schema": { "properties": { + "count": { + "description": "The total record count on the backend", + "type": "number" + }, "description_columns": { "properties": { "column_name": { @@ -7473,9 +10759,12 @@ }, "type": "object" }, - "id": { - "description": "The item id", - "type": "string" + "ids": { + "description": "A list of item ids, useful when you don't know the column id", + "items": { + "type": "string" + }, + "type": "array" }, "label_columns": { "properties": { @@ -7487,27 +10776,38 @@ }, "type": "object" }, - "result": { - "$ref": "#/components/schemas/ChartRestApi.get" - }, - "show_columns": { + "list_columns": { "description": "A list of columns", "items": { "type": "string" }, "type": "array" }, - "show_title": { + "list_title": { "description": "A title to render. Will be translated by babel", - "example": "Show Item Details", + "example": "List Items", "type": "string" + }, + "order_columns": { + "description": "A list of allowed columns to sort", + "items": { + "type": "string" + }, + "type": "array" + }, + "result": { + "description": "The result from the get list query", + "items": { + "$ref": "#/components/schemas/CssTemplateRestApi.get_list" + }, + "type": "array" } }, "type": "object" } } }, - "description": "Item from Model" + "description": "Items from Model" }, "400": { "$ref": "#/components/responses/400" @@ -7515,9 +10815,6 @@ "401": { "$ref": "#/components/responses/401" }, - "404": { - "$ref": "#/components/responses/404" - }, "422": { "$ref": "#/components/responses/422" }, @@ -7530,49 +10827,127 @@ "jwt": [] } ], - "tags": ["Charts"] + "tags": [ + "CSS Templates" + ] }, - "put": { - "description": "Changes a Chart.", - "parameters": [ - { - "in": "path", - "name": "pk", - "required": true, - "schema": { - "type": "integer" - } - } - ], + "post": { + "description": "Create a CSS template", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ChartRestApi.put" + "$ref": "#/components/schemas/CssTemplateRestApi.post" } } }, - "description": "Chart schema", + "description": "Model schema", "required": true }, + "responses": { + "201": { + "content": { + "application/json": { + "schema": { + "properties": { + "id": { + "type": "string" + }, + "result": { + "$ref": "#/components/schemas/CssTemplateRestApi.post" + } + }, + "type": "object" + } + } + }, + "description": "Item inserted" + }, + "400": { + "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "422": { + "$ref": "#/components/responses/422" + }, + "500": { + "$ref": "#/components/responses/500" + } + }, + "security": [ + { + "jwt": [] + } + ], + "tags": [ + "CSS Templates" + ] + } + }, + "/api/v1/css_template/_info": { + "get": { + "description": "Get metadata information about this API resource", + "parameters": [ + { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/get_info_schema" + } + } + }, + "in": "query", + "name": "q" + } + ], "responses": { "200": { "content": { "application/json": { "schema": { "properties": { - "id": { - "type": "number" + "add_columns": { + "type": "object" }, - "result": { - "$ref": "#/components/schemas/ChartRestApi.put" + "edit_columns": { + "type": "object" + }, + "filters": { + "properties": { + "column_name": { + "items": { + "properties": { + "name": { + "description": "The filter name. Will be translated by babel", + "type": "string" + }, + "operator": { + "description": "The filter operation key to use on list filters", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "permissions": { + "description": "The user permissions for this API resource", + "items": { + "type": "string" + }, + "type": "array" } }, "type": "object" } } }, - "description": "Chart changed" + "description": "Item from Model" }, "400": { "$ref": "#/components/responses/400" @@ -7580,12 +10955,6 @@ "401": { "$ref": "#/components/responses/401" }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, "422": { "$ref": "#/components/responses/422" }, @@ -7598,26 +10967,27 @@ "jwt": [] } ], - "tags": ["Charts"] + "tags": [ + "CSS Templates" + ] } }, - "/chart/{pk}/cache_screenshot/": { + "/api/v1/css_template/related/{column_name}": { "get": { - "description": "Compute and cache a screenshot.", "parameters": [ { "in": "path", - "name": "pk", + "name": "column_name", "required": true, "schema": { - "type": "integer" + "type": "string" } }, { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/screenshot_query_schema" + "$ref": "#/components/schemas/get_related_schema" } } }, @@ -7630,14 +11000,11 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ChartCacheScreenshotResponseSchema" + "$ref": "#/components/schemas/RelatedResponseSchema" } } }, - "description": "Chart async result" - }, - "302": { - "description": "Redirects to the current digest" + "description": "Related column data" }, "400": { "$ref": "#/components/responses/400" @@ -7657,37 +11024,22 @@ "jwt": [] } ], - "tags": ["Charts"] + "tags": [ + "CSS Templates" + ] } }, - "/chart/{pk}/data/": { - "get": { - "description": "Takes a chart ID and uses the query context stored when the chart was saved to return payload data response.", + "/api/v1/css_template/{pk}": { + "delete": { + "description": "Delete CSS template", "parameters": [ { - "description": "The chart ID", "in": "path", "name": "pk", "required": true, "schema": { "type": "integer" } - }, - { - "description": "The format in which the data should be returned", - "in": "query", - "name": "format", - "schema": { - "type": "string" - } - }, - { - "description": "The type in which the data should be returned", - "in": "query", - "name": "type", - "schema": { - "type": "string" - } } ], "responses": { @@ -7695,27 +11047,22 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ChartDataResponseSchema" - } - } - }, - "description": "Query result" - }, - "202": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ChartDataAsyncResponseSchema" + "properties": { + "message": { + "type": "string" + } + }, + "type": "object" } } }, - "description": "Async job details" + "description": "Item deleted" }, - "400": { - "$ref": "#/components/responses/400" + "404": { + "$ref": "#/components/responses/404" }, - "401": { - "$ref": "#/components/responses/401" + "422": { + "$ref": "#/components/responses/422" }, "500": { "$ref": "#/components/responses/500" @@ -7726,12 +11073,12 @@ "jwt": [] } ], - "tags": ["Charts"] - } - }, - "/chart/{pk}/screenshot/{digest}/": { + "tags": [ + "CSS Templates" + ] + }, "get": { - "description": "Get a computed screenshot from cache.", + "description": "Get a CSS template", "parameters": [ { "in": "path", @@ -7742,28 +11089,68 @@ } }, { - "in": "path", - "name": "digest", - "required": true, - "schema": { - "type": "string" - } + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/get_item_schema" + } + } + }, + "in": "query", + "name": "q" } ], "responses": { "200": { "content": { - "image/*": { + "application/json": { "schema": { - "format": "binary", - "type": "string" + "properties": { + "description_columns": { + "properties": { + "column_name": { + "description": "The description for the column name. Will be translated by babel", + "example": "A Nice description for the column", + "type": "string" + } + }, + "type": "object" + }, + "id": { + "description": "The item id", + "type": "string" + }, + "label_columns": { + "properties": { + "column_name": { + "description": "The label for the column name. Will be translated by babel", + "example": "A Nice label for the column", + "type": "string" + } + }, + "type": "object" + }, + "result": { + "$ref": "#/components/schemas/CssTemplateRestApi.get" + }, + "show_columns": { + "description": "A list of columns", + "items": { + "type": "string" + }, + "type": "array" + }, + "show_title": { + "description": "A title to render. Will be translated by babel", + "example": "Show Item Details", + "type": "string" + } + }, + "type": "object" } } }, - "description": "Chart thumbnail image" - }, - "302": { - "description": "Redirects to the current digest" + "description": "Item from Model" }, "400": { "$ref": "#/components/responses/400" @@ -7774,6 +11161,9 @@ "404": { "$ref": "#/components/responses/404" }, + "422": { + "$ref": "#/components/responses/422" + }, "500": { "$ref": "#/components/responses/500" } @@ -7783,12 +11173,12 @@ "jwt": [] } ], - "tags": ["Charts"] - } - }, - "/chart/{pk}/thumbnail/{digest}/": { - "get": { - "description": "Compute or get already computed chart thumbnail from cache.", + "tags": [ + "CSS Templates" + ] + }, + "put": { + "description": "Update a CSS template", "parameters": [ { "in": "path", @@ -7797,30 +11187,34 @@ "schema": { "type": "integer" } - }, - { - "in": "path", - "name": "digest", - "required": true, - "schema": { - "type": "string" - } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CssTemplateRestApi.put" + } + } + }, + "description": "Model schema", + "required": true + }, "responses": { "200": { "content": { - "image/*": { + "application/json": { "schema": { - "format": "binary", - "type": "string" + "properties": { + "result": { + "$ref": "#/components/schemas/CssTemplateRestApi.put" + } + }, + "type": "object" } } }, - "description": "Chart thumbnail image" - }, - "302": { - "description": "Redirects to the current digest" + "description": "Item changed" }, "400": { "$ref": "#/components/responses/400" @@ -7831,6 +11225,9 @@ "404": { "$ref": "#/components/responses/404" }, + "422": { + "$ref": "#/components/responses/422" + }, "500": { "$ref": "#/components/responses/500" } @@ -7840,12 +11237,14 @@ "jwt": [] } ], - "tags": ["Charts"] + "tags": [ + "CSS Templates" + ] } }, - "/css_template/": { + "/api/v1/dashboard/": { "delete": { - "description": "Deletes multiple css templates in a bulk operation.", + "description": "Deletes multiple Dashboards in a bulk operation.", "parameters": [ { "content": { @@ -7873,11 +11272,14 @@ } } }, - "description": "CSS templates bulk delete" + "description": "Dashboard bulk delete" }, "401": { "$ref": "#/components/responses/401" }, + "403": { + "$ref": "#/components/responses/403" + }, "404": { "$ref": "#/components/responses/404" }, @@ -7893,10 +11295,12 @@ "jwt": [] } ], - "tags": ["CSS Templates"] + "tags": [ + "Dashboards" + ] }, "get": { - "description": "Get a list of CSS templates, use Rison or JSON query parameters for filtering, sorting, pagination and for selecting specific columns and metadata.", + "description": "Get a list of dashboards, use Rison or JSON query parameters for filtering, sorting, pagination and for selecting specific columns and metadata.", "parameters": [ { "content": { @@ -7969,7 +11373,7 @@ "result": { "description": "The result from the get list query", "items": { - "$ref": "#/components/schemas/CssTemplateRestApi.get_list" + "$ref": "#/components/schemas/DashboardRestApi.get_list" }, "type": "array" } @@ -7998,19 +11402,21 @@ "jwt": [] } ], - "tags": ["CSS Templates"] + "tags": [ + "Dashboards" + ] }, "post": { - "description": "Create a CSS template", + "description": "Create a new Dashboard.", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CssTemplateRestApi.post" + "$ref": "#/components/schemas/DashboardRestApi.post" } } }, - "description": "Model schema", + "description": "Dashboard schema", "required": true }, "responses": { @@ -8020,17 +11426,20 @@ "schema": { "properties": { "id": { - "type": "string" + "type": "number" }, "result": { - "$ref": "#/components/schemas/CssTemplateRestApi.post" + "$ref": "#/components/schemas/DashboardRestApi.post" } }, "type": "object" } } }, - "description": "Item inserted" + "description": "Dashboard added" + }, + "302": { + "description": "Redirects to the current digest" }, "400": { "$ref": "#/components/responses/400" @@ -8038,8 +11447,8 @@ "401": { "$ref": "#/components/responses/401" }, - "422": { - "$ref": "#/components/responses/422" + "404": { + "$ref": "#/components/responses/404" }, "500": { "$ref": "#/components/responses/500" @@ -8050,12 +11459,14 @@ "jwt": [] } ], - "tags": ["CSS Templates"] + "tags": [ + "Dashboards" + ] } }, - "/css_template/_info": { + "/api/v1/dashboard/_info": { "get": { - "description": "Get metadata information about this API resource", + "description": "Several metadata information about dashboard API endpoints.", "parameters": [ { "content": { @@ -8134,25 +11545,20 @@ "jwt": [] } ], - "tags": ["CSS Templates"] + "tags": [ + "Dashboards" + ] } }, - "/css_template/related/{column_name}": { + "/api/v1/dashboard/export/": { "get": { + "description": "Exports multiple Dashboards and downloads them as YAML files.", "parameters": [ - { - "in": "path", - "name": "column_name", - "required": true, - "schema": { - "type": "string" - } - }, { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/get_related_schema" + "$ref": "#/components/schemas/get_export_ids_schema" } } }, @@ -8163,13 +11569,13 @@ "responses": { "200": { "content": { - "application/json": { + "text/plain": { "schema": { - "$ref": "#/components/schemas/RelatedResponseSchema" + "type": "string" } } }, - "description": "Related column data" + "description": "Dashboard export" }, "400": { "$ref": "#/components/responses/400" @@ -8180,6 +11586,9 @@ "404": { "$ref": "#/components/responses/404" }, + "422": { + "$ref": "#/components/responses/422" + }, "500": { "$ref": "#/components/responses/500" } @@ -8189,20 +11598,25 @@ "jwt": [] } ], - "tags": ["CSS Templates"] + "tags": [ + "Dashboards" + ] } }, - "/css_template/{pk}": { - "delete": { - "description": "Delete CSS template", + "/api/v1/dashboard/favorite_status/": { + "get": { + "description": "Check favorited dashboards for current user", "parameters": [ { - "in": "path", - "name": "pk", - "required": true, - "schema": { - "type": "integer" - } + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/get_fav_star_ids_schema" + } + } + }, + "in": "query", + "name": "q" } ], "responses": { @@ -8210,23 +11624,21 @@ "content": { "application/json": { "schema": { - "properties": { - "message": { - "type": "string" - } - }, - "type": "object" + "$ref": "#/components/schemas/GetFavStarIdsSchema" } } }, - "description": "Item deleted" + "description": "None" + }, + "400": { + "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401" }, "404": { "$ref": "#/components/responses/404" }, - "422": { - "$ref": "#/components/responses/422" - }, "500": { "$ref": "#/components/responses/500" } @@ -8236,74 +11648,45 @@ "jwt": [] } ], - "tags": ["CSS Templates"] - }, - "get": { - "description": "Get a CSS template", - "parameters": [ - { - "in": "path", - "name": "pk", - "required": true, - "schema": { - "type": "integer" + "tags": [ + "Dashboards" + ] + } + }, + "/api/v1/dashboard/import/": { + "post": { + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "properties": { + "formData": { + "description": "upload file (ZIP or JSON)", + "format": "binary", + "type": "string" + }, + "overwrite": { + "description": "overwrite existing dashboards?", + "type": "boolean" + }, + "passwords": { + "description": "JSON map of passwords for each featured database in the ZIP file. If the ZIP includes a database config in the path `databases/MyDatabase.yaml`, the password should be provided in the following format: `{\"databases/MyDatabase.yaml\": \"my_password\"}`.", + "type": "string" + } + }, + "type": "object" + } } }, - { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/get_item_schema" - } - } - }, - "in": "query", - "name": "q" - } - ], + "required": true + }, "responses": { "200": { "content": { "application/json": { "schema": { "properties": { - "description_columns": { - "properties": { - "column_name": { - "description": "The description for the column name. Will be translated by babel", - "example": "A Nice description for the column", - "type": "string" - } - }, - "type": "object" - }, - "id": { - "description": "The item id", - "type": "string" - }, - "label_columns": { - "properties": { - "column_name": { - "description": "The label for the column name. Will be translated by babel", - "example": "A Nice label for the column", - "type": "string" - } - }, - "type": "object" - }, - "result": { - "$ref": "#/components/schemas/CssTemplateRestApi.get" - }, - "show_columns": { - "description": "A list of columns", - "items": { - "type": "string" - }, - "type": "array" - }, - "show_title": { - "description": "A title to render. Will be translated by babel", - "example": "Show Item Details", + "message": { "type": "string" } }, @@ -8311,7 +11694,7 @@ } } }, - "description": "Item from Model" + "description": "Dashboard import result" }, "400": { "$ref": "#/components/responses/400" @@ -8319,9 +11702,6 @@ "401": { "$ref": "#/components/responses/401" }, - "404": { - "$ref": "#/components/responses/404" - }, "422": { "$ref": "#/components/responses/422" }, @@ -8334,46 +11714,40 @@ "jwt": [] } ], - "tags": ["CSS Templates"] - }, - "put": { - "description": "Update a CSS template", + "tags": [ + "Dashboards" + ] + } + }, + "/api/v1/dashboard/permalink/{key}": { + "get": { + "description": "Retrives dashboard state associated with a permanent link.", "parameters": [ { "in": "path", - "name": "pk", + "name": "key", "required": true, "schema": { - "type": "integer" + "type": "string" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CssTemplateRestApi.put" - } - } - }, - "description": "Model schema", - "required": true - }, "responses": { "200": { "content": { "application/json": { "schema": { "properties": { - "result": { - "$ref": "#/components/schemas/CssTemplateRestApi.put" + "state": { + "description": "The stored state", + "type": "object" } }, "type": "object" } } }, - "description": "Item changed" + "description": "Returns the stored state." }, "400": { "$ref": "#/components/responses/400" @@ -8396,18 +11770,28 @@ "jwt": [] } ], - "tags": ["CSS Templates"] + "tags": [ + "Dashboard Permanent Link" + ] } }, - "/dashboard/": { - "delete": { - "description": "Deletes multiple Dashboards in a bulk operation.", + "/api/v1/dashboard/related/{column_name}": { + "get": { + "description": "Get a list of all possible owners for a dashboard.", "parameters": [ + { + "in": "path", + "name": "column_name", + "required": true, + "schema": { + "type": "string" + } + }, { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/get_delete_ids_schema" + "$ref": "#/components/schemas/get_related_schema" } } }, @@ -8420,29 +11804,21 @@ "content": { "application/json": { "schema": { - "properties": { - "message": { - "type": "string" - } - }, - "type": "object" + "$ref": "#/components/schemas/RelatedResponseSchema" } } }, - "description": "Dashboard bulk delete" + "description": "Related column data" + }, + "400": { + "$ref": "#/components/responses/400" }, "401": { "$ref": "#/components/responses/401" }, - "403": { - "$ref": "#/components/responses/403" - }, "404": { "$ref": "#/components/responses/404" }, - "422": { - "$ref": "#/components/responses/422" - }, "500": { "$ref": "#/components/responses/500" } @@ -8452,21 +11828,23 @@ "jwt": [] } ], - "tags": ["Dashboards"] - }, + "tags": [ + "Dashboards" + ] + } + }, + "/api/v1/dashboard/{dashboard_id}/filtersets": { "get": { - "description": "Get a list of dashboards, use Rison or JSON query parameters for filtering, sorting, pagination and for selecting specific columns and metadata.", + "description": "Get a dashboard's list of filter sets", "parameters": [ { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/get_list_schema" - } - } - }, - "in": "query", - "name": "q" + "description": "The id of the dashboard", + "in": "path", + "name": "dashboard_id", + "required": true, + "schema": { + "type": "integer" + } } ], "responses": { @@ -8474,70 +11852,42 @@ "content": { "application/json": { "schema": { - "properties": { - "count": { - "description": "The total record count on the backend", - "type": "number" - }, - "description_columns": { - "properties": { - "column_name": { - "description": "The description for the column name. Will be translated by babel", - "example": "A Nice description for the column", - "type": "string" - } - }, - "type": "object" - }, - "ids": { - "description": "A list of item ids, useful when you don't know the column id", - "items": { + "items": { + "properties": { + "description": { + "description": "A description field of the filter set", "type": "string" }, - "type": "array" - }, - "label_columns": { - "properties": { - "column_name": { - "description": "The label for the column name. Will be translated by babel", - "example": "A Nice label for the column", - "type": "string" - } - }, - "type": "object" - }, - "list_columns": { - "description": "A list of columns", - "items": { + "json_metadata": { + "description": "metadata of the filter set", "type": "string" }, - "type": "array" - }, - "list_title": { - "description": "A title to render. Will be translated by babel", - "example": "List Items", - "type": "string" - }, - "order_columns": { - "description": "A list of allowed columns to sort", - "items": { + "name": { + "description": "Name of the Filter set", "type": "string" }, - "type": "array" - }, - "result": { - "description": "The result from the get list query", - "items": { - "$ref": "#/components/schemas/DashboardRestApi.get_list" + "owner_id": { + "description": "A description field of the filter set", + "type": "integer" }, - "type": "array" - } + "owner_type": { + "description": "the Type of the owner ( Dashboard/User)", + "type": "integer" + }, + "parameters": { + "description": "JSON schema defining the needed parameters" + } + }, + "type": "object" }, - "type": "object" + "type": "array" } } }, - "description": "Items from Model" + "description": "FilterSets" + }, + "302": { + "description": "Redirects to the current digest" }, "400": { "$ref": "#/components/responses/400" @@ -8545,11 +11895,8 @@ "401": { "$ref": "#/components/responses/401" }, - "422": { - "$ref": "#/components/responses/422" - }, - "500": { - "$ref": "#/components/responses/500" + "404": { + "$ref": "#/components/responses/404" } }, "security": [ @@ -8557,19 +11904,32 @@ "jwt": [] } ], - "tags": ["Dashboards"] + "tags": [ + "FilterSetRestApi" + ] }, "post": { - "description": "Create a new Dashboard.", + "description": "Create a new Dashboard's Filter Set.", + "parameters": [ + { + "description": "The id of the dashboard", + "in": "path", + "name": "dashboard_id", + "required": true, + "schema": { + "type": "integer" + } + } + ], "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DashboardRestApi.post" + "$ref": "#/components/schemas/FilterSetRestApi.post" } } }, - "description": "Dashboard schema", + "description": "Filter set schema", "required": true }, "responses": { @@ -8582,14 +11942,14 @@ "type": "number" }, "result": { - "$ref": "#/components/schemas/DashboardRestApi.post" + "$ref": "#/components/schemas/FilterSetRestApi.post" } }, "type": "object" } } }, - "description": "Dashboard added" + "description": "Filter set added" }, "302": { "description": "Redirects to the current digest" @@ -8612,71 +11972,122 @@ "jwt": [] } ], - "tags": ["Dashboards"] + "tags": [ + "FilterSetRestApi" + ] } }, - "/dashboard/_info": { - "get": { - "description": "Several metadata information about dashboard API endpoints.", + "/api/v1/dashboard/{dashboard_id}/filtersets/{pk}": { + "delete": { + "description": "Deletes a Dashboard.", "parameters": [ { + "in": "path", + "name": "dashboard_id", + "required": true, + "schema": { + "type": "integer" + } + }, + { + "in": "path", + "name": "pk", + "required": true, + "schema": { + "type": "integer" + } + } + ], + "responses": { + "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/get_info_schema" + "properties": { + "message": { + "type": "string" + } + }, + "type": "object" } } }, - "in": "query", - "name": "q" + "description": "Filter set deleted" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "403": { + "$ref": "#/components/responses/403" + }, + "404": { + "$ref": "#/components/responses/404" + }, + "422": { + "$ref": "#/components/responses/422" + }, + "500": { + "$ref": "#/components/responses/500" + } + }, + "security": [ + { + "jwt": [] } ], + "tags": [ + "FilterSetRestApi" + ] + }, + "put": { + "description": "Changes a Dashboard's Filter set.", + "parameters": [ + { + "in": "path", + "name": "dashboard_id", + "required": true, + "schema": { + "type": "integer" + } + }, + { + "in": "path", + "name": "pk", + "required": true, + "schema": { + "type": "integer" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/FilterSetRestApi.put" + } + } + }, + "description": "Filter set schema", + "required": true + }, "responses": { "200": { "content": { "application/json": { "schema": { "properties": { - "add_columns": { - "type": "object" - }, - "edit_columns": { - "type": "object" - }, - "filters": { - "properties": { - "column_name": { - "items": { - "properties": { - "name": { - "description": "The filter name. Will be translated by babel", - "type": "string" - }, - "operator": { - "description": "The filter operation key to use on list filters", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" + "id": { + "type": "number" }, - "permissions": { - "description": "The user permissions for this API resource", - "items": { - "type": "string" - }, - "type": "array" + "result": { + "$ref": "#/components/schemas/FilterSetRestApi.put" } }, "type": "object" } } }, - "description": "Item from Model" + "description": "Filter set changed" }, "400": { "$ref": "#/components/responses/400" @@ -8684,6 +12095,12 @@ "401": { "$ref": "#/components/responses/401" }, + "403": { + "$ref": "#/components/responses/403" + }, + "404": { + "$ref": "#/components/responses/404" + }, "422": { "$ref": "#/components/responses/422" }, @@ -8696,35 +12113,43 @@ "jwt": [] } ], - "tags": ["Dashboards"] + "tags": [ + "FilterSetRestApi" + ] } }, - "/dashboard/export/": { + "/api/v1/dashboard/{id_or_slug}": { "get": { - "description": "Exports multiple Dashboards and downloads them as YAML files.", + "description": "Get a dashboard detail information.", "parameters": [ { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/get_export_ids_schema" - } - } - }, - "in": "query", - "name": "q" + "description": "Either the id of the dashboard, or its slug", + "in": "path", + "name": "id_or_slug", + "required": true, + "schema": { + "type": "string" + } } ], "responses": { "200": { "content": { - "text/plain": { + "application/json": { "schema": { - "type": "string" + "properties": { + "result": { + "$ref": "#/components/schemas/DashboardGetResponseSchema" + } + }, + "type": "object" } } }, - "description": "Dashboard export" + "description": "Dashboard" + }, + "302": { + "description": "Redirects to the current digest" }, "400": { "$ref": "#/components/responses/400" @@ -8732,14 +12157,11 @@ "401": { "$ref": "#/components/responses/401" }, + "403": { + "$ref": "#/components/responses/403" + }, "404": { "$ref": "#/components/responses/404" - }, - "422": { - "$ref": "#/components/responses/422" - }, - "500": { - "$ref": "#/components/responses/500" } }, "security": [ @@ -8747,23 +12169,81 @@ "jwt": [] } ], - "tags": ["Dashboards"] + "tags": [ + "Dashboards" + ] } }, - "/dashboard/favorite_status/": { + "/api/v1/dashboard/{id_or_slug}/charts": { "get": { - "description": "Check favorited dashboards for current user", + "description": "Get the chart definitions for a given dashboard", "parameters": [ { + "in": "path", + "name": "id_or_slug", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/get_fav_star_ids_schema" + "properties": { + "result": { + "items": { + "$ref": "#/components/schemas/ChartEntityResponseSchema" + }, + "type": "array" + } + }, + "type": "object" } } }, - "in": "query", - "name": "q" + "description": "Dashboard chart definitions" + }, + "302": { + "description": "Redirects to the current digest" + }, + "400": { + "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "403": { + "$ref": "#/components/responses/403" + }, + "404": { + "$ref": "#/components/responses/404" + } + }, + "security": [ + { + "jwt": [] + } + ], + "tags": [ + "Dashboards" + ] + } + }, + "/api/v1/dashboard/{id_or_slug}/datasets": { + "get": { + "description": "Returns a list of a dashboard's datasets. Each dataset includes only the information necessary to render the dashboard's charts.", + "parameters": [ + { + "description": "Either the id of the dashboard, or its slug", + "in": "path", + "name": "id_or_slug", + "required": true, + "schema": { + "type": "string" + } } ], "responses": { @@ -8771,11 +12251,22 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/GetFavStarIdsSchema" + "properties": { + "result": { + "items": { + "$ref": "#/components/schemas/DashboardDatasetSchema" + }, + "type": "array" + } + }, + "type": "object" } } }, - "description": "None" + "description": "Dashboard dataset definitions" + }, + "302": { + "description": "Redirects to the current digest" }, "400": { "$ref": "#/components/responses/400" @@ -8783,11 +12274,11 @@ "401": { "$ref": "#/components/responses/401" }, + "403": { + "$ref": "#/components/responses/403" + }, "404": { "$ref": "#/components/responses/404" - }, - "500": { - "$ref": "#/components/responses/500" } }, "security": [ @@ -8795,36 +12286,24 @@ "jwt": [] } ], - "tags": ["Dashboards"] + "tags": [ + "Dashboards" + ] } }, - "/dashboard/import/": { - "post": { - "requestBody": { - "content": { - "multipart/form-data": { - "schema": { - "properties": { - "formData": { - "description": "upload file (ZIP or JSON)", - "format": "binary", - "type": "string" - }, - "overwrite": { - "description": "overwrite existing databases?", - "type": "boolean" - }, - "passwords": { - "description": "JSON map of passwords for each file", - "type": "string" - } - }, - "type": "object" - } + "/api/v1/dashboard/{pk}": { + "delete": { + "description": "Deletes a Dashboard.", + "parameters": [ + { + "in": "path", + "name": "pk", + "required": true, + "schema": { + "type": "integer" } - }, - "required": true - }, + } + ], "responses": { "200": { "content": { @@ -8839,14 +12318,17 @@ } } }, - "description": "Dashboard import result" - }, - "400": { - "$ref": "#/components/responses/400" + "description": "Dashboard deleted" }, "401": { "$ref": "#/components/responses/401" }, + "403": { + "$ref": "#/components/responses/403" + }, + "404": { + "$ref": "#/components/responses/404" + }, "422": { "$ref": "#/components/responses/422" }, @@ -8859,43 +12341,54 @@ "jwt": [] } ], - "tags": ["Dashboards"] - } - }, - "/dashboard/related/{column_name}": { - "get": { - "description": "Get a list of all possible owners for a dashboard.", + "tags": [ + "Dashboards" + ] + }, + "put": { + "description": "Changes a Dashboard.", "parameters": [ { "in": "path", - "name": "column_name", + "name": "pk", "required": true, "schema": { - "type": "string" + "type": "integer" } - }, - { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/get_related_schema" - } - } - }, - "in": "query", - "name": "q" } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DashboardRestApi.put" + } + } + }, + "description": "Dashboard schema", + "required": true + }, "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RelatedResponseSchema" + "properties": { + "id": { + "type": "number" + }, + "last_modified_time": { + "type": "number" + }, + "result": { + "$ref": "#/components/schemas/DashboardRestApi.put" + } + }, + "type": "object" } } }, - "description": "Related column data" + "description": "Dashboard changed" }, "400": { "$ref": "#/components/responses/400" @@ -8903,9 +12396,15 @@ "401": { "$ref": "#/components/responses/401" }, + "403": { + "$ref": "#/components/responses/403" + }, "404": { "$ref": "#/components/responses/404" }, + "422": { + "$ref": "#/components/responses/422" + }, "500": { "$ref": "#/components/responses/500" } @@ -8915,41 +12414,57 @@ "jwt": [] } ], - "tags": ["Dashboards"] + "tags": [ + "Dashboards" + ] } }, - "/dashboard/{id_or_slug}": { - "get": { - "description": "Get a dashboard detail information.", + "/api/v1/dashboard/{pk}/filter_state": { + "post": { + "description": "Stores a new value.", "parameters": [ { - "description": "Either the id of the dashboard, or its slug", "in": "path", - "name": "id_or_slug", + "name": "pk", "required": true, "schema": { - "type": "string" + "type": "integer" + } + }, + { + "in": "query", + "name": "tab_id", + "schema": { + "type": "integer" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TemporaryCachePostSchema" + } + } + }, + "required": true + }, "responses": { - "200": { + "201": { "content": { "application/json": { "schema": { "properties": { - "result": { - "$ref": "#/components/schemas/DashboardGetResponseSchema" + "key": { + "description": "The key to retrieve the value.", + "type": "string" } }, "type": "object" } } }, - "description": "Dashboard" - }, - "302": { - "description": "Redirects to the current digest" + "description": "The value was stored successfully." }, "400": { "$ref": "#/components/responses/400" @@ -8957,8 +12472,11 @@ "401": { "$ref": "#/components/responses/401" }, - "404": { - "$ref": "#/components/responses/404" + "422": { + "$ref": "#/components/responses/422" + }, + "500": { + "$ref": "#/components/responses/500" } }, "security": [ @@ -8966,16 +12484,27 @@ "jwt": [] } ], - "tags": ["Dashboards"] + "tags": [ + "Dashboard Filter State" + ] } }, - "/dashboard/{id_or_slug}/charts": { - "get": { - "description": "Get the chart definitions for a given dashboard", + "/api/v1/dashboard/{pk}/filter_state/{key}": { + "delete": { + "description": "Deletes a value.", "parameters": [ { "in": "path", - "name": "id_or_slug", + "name": "pk", + "required": true, + "schema": { + "type": "integer" + } + }, + { + "description": "The value key.", + "in": "path", + "name": "key", "required": true, "schema": { "type": "string" @@ -8988,21 +12517,16 @@ "application/json": { "schema": { "properties": { - "result": { - "items": { - "$ref": "#/components/schemas/ChartEntityResponseSchema" - }, - "type": "array" + "message": { + "description": "The result of the operation", + "type": "string" } }, "type": "object" } } }, - "description": "Dashboard chart definitions" - }, - "302": { - "description": "Redirects to the current digest" + "description": "Deleted the stored value." }, "400": { "$ref": "#/components/responses/400" @@ -9012,6 +12536,12 @@ }, "404": { "$ref": "#/components/responses/404" + }, + "422": { + "$ref": "#/components/responses/422" + }, + "500": { + "$ref": "#/components/responses/500" } }, "security": [ @@ -9019,17 +12549,24 @@ "jwt": [] } ], - "tags": ["Dashboards"] - } - }, - "/dashboard/{id_or_slug}/datasets": { + "tags": [ + "Dashboard Filter State" + ] + }, "get": { - "description": "Returns a list of a dashboard's datasets. Each dataset includes only the information necessary to render the dashboard's charts.", + "description": "Retrives a value.", "parameters": [ { - "description": "Either the id of the dashboard, or its slug", "in": "path", - "name": "id_or_slug", + "name": "pk", + "required": true, + "schema": { + "type": "integer" + } + }, + { + "in": "path", + "name": "key", "required": true, "schema": { "type": "string" @@ -9042,21 +12579,16 @@ "application/json": { "schema": { "properties": { - "result": { - "items": { - "$ref": "#/components/schemas/DashboardDatasetSchema" - }, - "type": "array" + "value": { + "description": "The stored value", + "type": "string" } }, "type": "object" } } }, - "description": "Dashboard dataset definitions" - }, - "302": { - "description": "Redirects to the current digest" + "description": "Returns the stored value." }, "400": { "$ref": "#/components/responses/400" @@ -9066,6 +12598,12 @@ }, "404": { "$ref": "#/components/responses/404" + }, + "422": { + "$ref": "#/components/responses/422" + }, + "500": { + "$ref": "#/components/responses/500" } }, "security": [ @@ -9073,12 +12611,12 @@ "jwt": [] } ], - "tags": ["Dashboards"] - } - }, - "/dashboard/{pk}": { - "delete": { - "description": "Deletes a Dashboard.", + "tags": [ + "Dashboard Filter State" + ] + }, + "put": { + "description": "Updates an existing value.", "parameters": [ { "in": "path", @@ -9087,15 +12625,41 @@ "schema": { "type": "integer" } + }, + { + "in": "path", + "name": "key", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "tab_id", + "schema": { + "type": "integer" + } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TemporaryCachePutSchema" + } + } + }, + "required": true + }, "responses": { "200": { "content": { "application/json": { "schema": { "properties": { - "message": { + "key": { + "description": "The key to retrieve the value.", "type": "string" } }, @@ -9103,14 +12667,14 @@ } } }, - "description": "Dashboard deleted" + "description": "The value was stored successfully." + }, + "400": { + "$ref": "#/components/responses/400" }, "401": { "$ref": "#/components/responses/401" }, - "403": { - "$ref": "#/components/responses/403" - }, "404": { "$ref": "#/components/responses/404" }, @@ -9126,17 +12690,21 @@ "jwt": [] } ], - "tags": ["Dashboards"] - }, - "put": { - "description": "Changes a Dashboard.", + "tags": [ + "Dashboard Filter State" + ] + } + }, + "/api/v1/dashboard/{pk}/permalink": { + "post": { + "description": "Stores a new permanent link.", "parameters": [ { "in": "path", "name": "pk", "required": true, "schema": { - "type": "integer" + "type": "string" } } ], @@ -9144,31 +12712,32 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DashboardRestApi.put" + "$ref": "#/components/schemas/DashboardPermalinkPostSchema" } } }, - "description": "Dashboard schema", "required": true }, "responses": { - "200": { + "201": { "content": { "application/json": { "schema": { "properties": { - "id": { - "type": "number" + "key": { + "description": "The key to retrieve the permanent link data.", + "type": "string" }, - "result": { - "$ref": "#/components/schemas/DashboardRestApi.put" + "url": { + "description": "permanent link.", + "type": "string" } }, "type": "object" } } }, - "description": "Dashboard changed" + "description": "The permanent link was stored successfully." }, "400": { "$ref": "#/components/responses/400" @@ -9176,12 +12745,6 @@ "401": { "$ref": "#/components/responses/401" }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, "422": { "$ref": "#/components/responses/422" }, @@ -9194,10 +12757,12 @@ "jwt": [] } ], - "tags": ["Dashboards"] + "tags": [ + "Dashboard Permanent Link" + ] } }, - "/dashboard/{pk}/thumbnail/{digest}/": { + "/api/v1/dashboard/{pk}/thumbnail/{digest}/": { "get": { "description": "Compute async or get already computed dashboard thumbnail from cache.", "parameters": [ @@ -9275,10 +12840,12 @@ "jwt": [] } ], - "tags": ["Dashboards"] + "tags": [ + "Dashboards" + ] } }, - "/database/": { + "/api/v1/database/": { "get": { "description": "Get a list of models", "parameters": [ @@ -9382,7 +12949,9 @@ "jwt": [] } ], - "tags": ["Database"] + "tags": [ + "Database" + ] }, "post": { "description": "Create a new Database.", @@ -9437,10 +13006,12 @@ "jwt": [] } ], - "tags": ["Database"] + "tags": [ + "Database" + ] } }, - "/database/_info": { + "/api/v1/database/_info": { "get": { "description": "Get metadata information about this API resource", "parameters": [ @@ -9521,10 +13092,12 @@ "jwt": [] } ], - "tags": ["Database"] + "tags": [ + "Database" + ] } }, - "/database/available/": { + "/api/v1/database/available/": { "get": { "description": "Get names of databases currently available", "responses": { @@ -9532,45 +13105,43 @@ "content": { "application/json": { "schema": { - "databases": { - "items": { - "properties": { - "available_drivers": { - "description": "Installed drivers for the engine", - "items": { - "type": "string" - }, - "type": "array" - }, - "default_driver": { - "description": "Default driver for the engine", + "items": { + "properties": { + "available_drivers": { + "description": "Installed drivers for the engine", + "items": { "type": "string" }, - "engine": { - "description": "Name of the SQLAlchemy engine", - "type": "string" - }, - "name": { - "description": "Name of the database", - "type": "string" - }, - "parameters": { - "description": "JSON schema defining the needed parameters", - "type": "object" - }, - "preferred": { - "description": "Is the database preferred?", - "type": "boolean" - }, - "sqlalchemy_uri_placeholder": { - "description": "Example placeholder for the SQLAlchemy URI", - "type": "string" - } + "type": "array" }, - "type": "object" + "default_driver": { + "description": "Default driver for the engine", + "type": "string" + }, + "engine": { + "description": "Name of the SQLAlchemy engine", + "type": "string" + }, + "name": { + "description": "Name of the database", + "type": "string" + }, + "parameters": { + "description": "JSON schema defining the needed parameters", + "type": "object" + }, + "preferred": { + "description": "Is the database preferred?", + "type": "boolean" + }, + "sqlalchemy_uri_placeholder": { + "description": "Example placeholder for the SQLAlchemy URI", + "type": "string" + } }, - "type": "array" - } + "type": "object" + }, + "type": "array" } } }, @@ -9588,10 +13159,12 @@ "jwt": [] } ], - "tags": ["Database"] + "tags": [ + "Database" + ] } }, - "/database/export/": { + "/api/v1/database/export/": { "get": { "description": "Download database(s) and associated dataset(s) as a zip file", "parameters": [ @@ -9634,10 +13207,12 @@ "jwt": [] } ], - "tags": ["Database"] + "tags": [ + "Database" + ] } }, - "/database/import/": { + "/api/v1/database/import/": { "post": { "requestBody": { "content": { @@ -9654,7 +13229,7 @@ "type": "boolean" }, "passwords": { - "description": "JSON map of passwords for each file", + "description": "JSON map of passwords for each featured database in the ZIP file. If the ZIP includes a database config in the path `databases/MyDatabase.yaml`, the password should be provided in the following format: `{\"databases/MyDatabase.yaml\": \"my_password\"}`.", "type": "string" } }, @@ -9698,10 +13273,12 @@ "jwt": [] } ], - "tags": ["Database"] + "tags": [ + "Database" + ] } }, - "/database/test_connection": { + "/api/v1/database/test_connection": { "post": { "description": "Tests a database connection", "requestBody": { @@ -9746,10 +13323,12 @@ "jwt": [] } ], - "tags": ["Database"] + "tags": [ + "Database" + ] } }, - "/database/validate_parameters": { + "/api/v1/database/validate_parameters": { "post": { "description": "Validates parameters used to connect to a database", "requestBody": { @@ -9794,10 +13373,12 @@ "jwt": [] } ], - "tags": ["Database"] + "tags": [ + "Database" + ] } }, - "/database/{pk}": { + "/api/v1/database/{pk}": { "delete": { "description": "Deletes a Database.", "parameters": [ @@ -9847,7 +13428,9 @@ "jwt": [] } ], - "tags": ["Database"] + "tags": [ + "Database" + ] }, "get": { "description": "Get an item model", @@ -9945,7 +13528,9 @@ "jwt": [] } ], - "tags": ["Database"] + "tags": [ + "Database" + ] }, "put": { "description": "Changes a Database.", @@ -10013,10 +13598,12 @@ "jwt": [] } ], - "tags": ["Database"] + "tags": [ + "Database" + ] } }, - "/database/{pk}/function_names/": { + "/api/v1/database/{pk}/function_names/": { "get": { "description": "Get function names supported by a database", "parameters": [ @@ -10055,10 +13642,12 @@ "jwt": [] } ], - "tags": ["Database"] + "tags": [ + "Database" + ] } }, - "/database/{pk}/related_objects/": { + "/api/v1/database/{pk}/related_objects/": { "get": { "description": "Get charts and dashboards count associated to a database", "parameters": [ @@ -10097,10 +13686,12 @@ "jwt": [] } ], - "tags": ["Database"] + "tags": [ + "Database" + ] } }, - "/database/{pk}/schemas/": { + "/api/v1/database/{pk}/schemas/": { "get": { "description": "Get all schemas from a database", "parameters": [ @@ -10154,10 +13745,12 @@ "jwt": [] } ], - "tags": ["Database"] + "tags": [ + "Database" + ] } }, - "/database/{pk}/select_star/{table_name}/": { + "/api/v1/database/{pk}/select_star/{table_name}/": { "get": { "description": "Get database select star for table", "parameters": [ @@ -10221,10 +13814,12 @@ "jwt": [] } ], - "tags": ["Database"] + "tags": [ + "Database" + ] } }, - "/database/{pk}/select_star/{table_name}/{schema_name}/": { + "/api/v1/database/{pk}/select_star/{table_name}/{schema_name}/": { "get": { "description": "Get database select star for table", "parameters": [ @@ -10288,10 +13883,12 @@ "jwt": [] } ], - "tags": ["Database"] + "tags": [ + "Database" + ] } }, - "/database/{pk}/table/{table_name}/{schema_name}/": { + "/api/v1/database/{pk}/table/{table_name}/{schema_name}/": { "get": { "description": "Get database table metadata", "parameters": [ @@ -10355,10 +13952,12 @@ "jwt": [] } ], - "tags": ["Database"] + "tags": [ + "Database" + ] } }, - "/dataset/": { + "/api/v1/dataset/": { "delete": { "description": "Deletes multiple Datasets in a bulk operation.", "parameters": [ @@ -10414,7 +14013,9 @@ "jwt": [] } ], - "tags": ["Datasets"] + "tags": [ + "Datasets" + ] }, "get": { "description": "Get a list of models", @@ -10499,7 +14100,254 @@ } } }, - "description": "Items from Model" + "description": "Items from Model" + }, + "400": { + "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "422": { + "$ref": "#/components/responses/422" + }, + "500": { + "$ref": "#/components/responses/500" + } + }, + "security": [ + { + "jwt": [] + } + ], + "tags": [ + "Datasets" + ] + }, + "post": { + "description": "Create a new Dataset", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DatasetRestApi.post" + } + } + }, + "description": "Dataset schema", + "required": true + }, + "responses": { + "201": { + "content": { + "application/json": { + "schema": { + "properties": { + "id": { + "type": "number" + }, + "result": { + "$ref": "#/components/schemas/DatasetRestApi.post" + } + }, + "type": "object" + } + } + }, + "description": "Dataset added" + }, + "400": { + "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "422": { + "$ref": "#/components/responses/422" + }, + "500": { + "$ref": "#/components/responses/500" + } + }, + "security": [ + { + "jwt": [] + } + ], + "tags": [ + "Datasets" + ] + } + }, + "/api/v1/dataset/_info": { + "get": { + "description": "Get metadata information about this API resource", + "parameters": [ + { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/get_info_schema" + } + } + }, + "in": "query", + "name": "q" + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "properties": { + "add_columns": { + "type": "object" + }, + "edit_columns": { + "type": "object" + }, + "filters": { + "properties": { + "column_name": { + "items": { + "properties": { + "name": { + "description": "The filter name. Will be translated by babel", + "type": "string" + }, + "operator": { + "description": "The filter operation key to use on list filters", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "permissions": { + "description": "The user permissions for this API resource", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + } + }, + "description": "Item from Model" + }, + "400": { + "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "422": { + "$ref": "#/components/responses/422" + }, + "500": { + "$ref": "#/components/responses/500" + } + }, + "security": [ + { + "jwt": [] + } + ], + "tags": [ + "Datasets" + ] + } + }, + "/api/v1/dataset/distinct/{column_name}": { + "get": { + "parameters": [ + { + "in": "path", + "name": "column_name", + "required": true, + "schema": { + "type": "string" + } + }, + { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/get_related_schema" + } + } + }, + "in": "query", + "name": "q" + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DistincResponseSchema" + } + } + }, + "description": "Distinct field data" + }, + "400": { + "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "404": { + "$ref": "#/components/responses/404" + }, + "500": { + "$ref": "#/components/responses/500" + } + }, + "security": [ + { + "jwt": [] + } + ], + "tags": [ + "Datasets" + ] + } + }, + "/api/v1/dataset/export/": { + "get": { + "description": "Exports multiple datasets and downloads them as YAML files", + "parameters": [ + { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/get_export_ids_schema" + } + } + }, + "in": "query", + "name": "q" + } + ], + "responses": { + "200": { + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + }, + "description": "Dataset export" }, "400": { "$ref": "#/components/responses/400" @@ -10507,8 +14355,8 @@ "401": { "$ref": "#/components/responses/401" }, - "422": { - "$ref": "#/components/responses/422" + "404": { + "$ref": "#/components/responses/404" }, "500": { "$ref": "#/components/responses/500" @@ -10519,39 +14367,53 @@ "jwt": [] } ], - "tags": ["Datasets"] - }, + "tags": [ + "Datasets" + ] + } + }, + "/api/v1/dataset/import/": { "post": { - "description": "Create a new Dataset", "requestBody": { "content": { - "application/json": { + "multipart/form-data": { "schema": { - "$ref": "#/components/schemas/DatasetRestApi.post" + "properties": { + "formData": { + "description": "upload file (ZIP or YAML)", + "format": "binary", + "type": "string" + }, + "overwrite": { + "description": "overwrite existing datasets?", + "type": "boolean" + }, + "passwords": { + "description": "JSON map of passwords for each featured database in the ZIP file. If the ZIP includes a database config in the path `databases/MyDatabase.yaml`, the password should be provided in the following format: `{\"databases/MyDatabase.yaml\": \"my_password\"}`.", + "type": "string" + } + }, + "type": "object" } } }, - "description": "Dataset schema", "required": true }, "responses": { - "201": { + "200": { "content": { "application/json": { "schema": { "properties": { - "id": { - "type": "number" - }, - "result": { - "$ref": "#/components/schemas/DatasetRestApi.post" + "message": { + "type": "string" } }, "type": "object" } } }, - "description": "Dataset added" + "description": "Dataset import result" }, "400": { "$ref": "#/components/responses/400" @@ -10571,18 +14433,27 @@ "jwt": [] } ], - "tags": ["Datasets"] + "tags": [ + "Datasets" + ] } }, - "/dataset/_info": { + "/api/v1/dataset/related/{column_name}": { "get": { - "description": "Get metadata information about this API resource", "parameters": [ + { + "in": "path", + "name": "column_name", + "required": true, + "schema": { + "type": "string" + } + }, { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/get_info_schema" + "$ref": "#/components/schemas/get_related_schema" } } }, @@ -10590,59 +14461,78 @@ "name": "q" } ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RelatedResponseSchema" + } + } + }, + "description": "Related column data" + }, + "400": { + "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "404": { + "$ref": "#/components/responses/404" + }, + "500": { + "$ref": "#/components/responses/500" + } + }, + "security": [ + { + "jwt": [] + } + ], + "tags": [ + "Datasets" + ] + } + }, + "/api/v1/dataset/{pk}": { + "delete": { + "description": "Deletes a Dataset", + "parameters": [ + { + "in": "path", + "name": "pk", + "required": true, + "schema": { + "type": "integer" + } + } + ], "responses": { "200": { "content": { "application/json": { "schema": { "properties": { - "add_columns": { - "type": "object" - }, - "edit_columns": { - "type": "object" - }, - "filters": { - "properties": { - "column_name": { - "items": { - "properties": { - "name": { - "description": "The filter name. Will be translated by babel", - "type": "string" - }, - "operator": { - "description": "The filter operation key to use on list filters", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "permissions": { - "description": "The user permissions for this API resource", - "items": { - "type": "string" - }, - "type": "array" + "message": { + "type": "string" } }, "type": "object" } } }, - "description": "Item from Model" - }, - "400": { - "$ref": "#/components/responses/400" + "description": "Dataset delete" }, "401": { "$ref": "#/components/responses/401" }, + "403": { + "$ref": "#/components/responses/403" + }, + "404": { + "$ref": "#/components/responses/404" + }, "422": { "$ref": "#/components/responses/422" }, @@ -10655,25 +14545,26 @@ "jwt": [] } ], - "tags": ["Datasets"] - } - }, - "/dataset/distinct/{column_name}": { + "tags": [ + "Datasets" + ] + }, "get": { + "description": "Get an item model", "parameters": [ { "in": "path", - "name": "column_name", + "name": "pk", "required": true, "schema": { - "type": "string" + "type": "integer" } }, { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/get_related_schema" + "$ref": "#/components/schemas/get_item_schema" } } }, @@ -10686,11 +14577,52 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DistincResponseSchema" + "properties": { + "description_columns": { + "properties": { + "column_name": { + "description": "The description for the column name. Will be translated by babel", + "example": "A Nice description for the column", + "type": "string" + } + }, + "type": "object" + }, + "id": { + "description": "The item id", + "type": "string" + }, + "label_columns": { + "properties": { + "column_name": { + "description": "The label for the column name. Will be translated by babel", + "example": "A Nice label for the column", + "type": "string" + } + }, + "type": "object" + }, + "result": { + "$ref": "#/components/schemas/DatasetRestApi.get" + }, + "show_columns": { + "description": "A list of columns", + "items": { + "type": "string" + }, + "type": "array" + }, + "show_title": { + "description": "A title to render. Will be translated by babel", + "example": "Show Item Details", + "type": "string" + } + }, + "type": "object" } } }, - "description": "Distinct field data" + "description": "Item from Model" }, "400": { "$ref": "#/components/responses/400" @@ -10701,6 +14633,9 @@ "404": { "$ref": "#/components/responses/404" }, + "422": { + "$ref": "#/components/responses/422" + }, "500": { "$ref": "#/components/responses/500" } @@ -10710,35 +14645,58 @@ "jwt": [] } ], - "tags": ["Datasets"] - } - }, - "/dataset/export/": { - "get": { - "description": "Exports multiple datasets and downloads them as YAML files", + "tags": [ + "Datasets" + ] + }, + "put": { + "description": "Changes a Dataset", "parameters": [ { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/get_export_ids_schema" - } - } - }, + "in": "path", + "name": "pk", + "required": true, + "schema": { + "type": "integer" + } + }, + { "in": "query", - "name": "q" + "name": "override_columns", + "schema": { + "type": "boolean" + } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DatasetRestApi.put" + } + } + }, + "description": "Dataset schema", + "required": true + }, "responses": { "200": { "content": { - "text/plain": { + "application/json": { "schema": { - "type": "string" + "properties": { + "id": { + "type": "number" + }, + "result": { + "$ref": "#/components/schemas/DatasetRestApi.put" + } + }, + "type": "object" } } }, - "description": "Dataset export" + "description": "Dataset changed" }, "400": { "$ref": "#/components/responses/400" @@ -10746,9 +14704,15 @@ "401": { "$ref": "#/components/responses/401" }, + "403": { + "$ref": "#/components/responses/403" + }, "404": { "$ref": "#/components/responses/404" }, + "422": { + "$ref": "#/components/responses/422" + }, "500": { "$ref": "#/components/responses/500" } @@ -10758,36 +14722,34 @@ "jwt": [] } ], - "tags": ["Datasets"] + "tags": [ + "Datasets" + ] } }, - "/dataset/import/": { - "post": { - "requestBody": { - "content": { - "multipart/form-data": { - "schema": { - "properties": { - "formData": { - "description": "upload file (ZIP or YAML)", - "format": "binary", - "type": "string" - }, - "overwrite": { - "description": "overwrite existing datasets?", - "type": "boolean" - }, - "passwords": { - "description": "JSON map of passwords for each file", - "type": "string" - } - }, - "type": "object" - } + "/api/v1/dataset/{pk}/column/{column_id}": { + "delete": { + "description": "Delete a Dataset column", + "parameters": [ + { + "description": "The dataset pk for this column", + "in": "path", + "name": "pk", + "required": true, + "schema": { + "type": "integer" } }, - "required": true - }, + { + "description": "The column id for this dataset", + "in": "path", + "name": "column_id", + "required": true, + "schema": { + "type": "integer" + } + } + ], "responses": { "200": { "content": { @@ -10802,14 +14764,17 @@ } } }, - "description": "Dataset import result" - }, - "400": { - "$ref": "#/components/responses/400" + "description": "Column deleted" }, "401": { "$ref": "#/components/responses/401" }, + "403": { + "$ref": "#/components/responses/403" + }, + "404": { + "$ref": "#/components/responses/404" + }, "422": { "$ref": "#/components/responses/422" }, @@ -10822,30 +14787,32 @@ "jwt": [] } ], - "tags": ["Datasets"] + "tags": [ + "Datasets" + ] } }, - "/dataset/related/{column_name}": { - "get": { + "/api/v1/dataset/{pk}/metric/{metric_id}": { + "delete": { + "description": "Delete a Dataset metric", "parameters": [ { + "description": "The dataset pk for this column", "in": "path", - "name": "column_name", + "name": "pk", "required": true, "schema": { - "type": "string" + "type": "integer" } }, { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/get_related_schema" - } - } - }, - "in": "query", - "name": "q" + "description": "The metric id for this dataset", + "in": "path", + "name": "metric_id", + "required": true, + "schema": { + "type": "integer" + } } ], "responses": { @@ -10853,21 +14820,29 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RelatedResponseSchema" + "properties": { + "message": { + "type": "string" + } + }, + "type": "object" } } }, - "description": "Related column data" - }, - "400": { - "$ref": "#/components/responses/400" + "description": "Metric deleted" }, "401": { "$ref": "#/components/responses/401" }, + "403": { + "$ref": "#/components/responses/403" + }, "404": { "$ref": "#/components/responses/404" }, + "422": { + "$ref": "#/components/responses/422" + }, "500": { "$ref": "#/components/responses/500" } @@ -10877,12 +14852,14 @@ "jwt": [] } ], - "tags": ["Datasets"] + "tags": [ + "Datasets" + ] } }, - "/dataset/{pk}": { - "delete": { - "description": "Deletes a Dataset", + "/api/v1/dataset/{pk}/refresh": { + "put": { + "description": "Refreshes and updates columns of a dataset", "parameters": [ { "in": "path", @@ -10930,10 +14907,14 @@ "jwt": [] } ], - "tags": ["Datasets"] - }, + "tags": [ + "Datasets" + ] + } + }, + "/api/v1/dataset/{pk}/related_objects": { "get": { - "description": "Get an item model", + "description": "Get charts and dashboards count associated to a dataset", "parameters": [ { "in": "path", @@ -10942,62 +14923,69 @@ "schema": { "type": "integer" } - }, - { + } + ], + "responses": { + "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/get_item_schema" + "$ref": "#/components/schemas/DatasetRelatedObjectsResponse" } } }, + "description": "Query result" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "404": { + "$ref": "#/components/responses/404" + }, + "500": { + "$ref": "#/components/responses/500" + } + }, + "security": [ + { + "jwt": [] + } + ], + "tags": [ + "Datasets" + ] + } + }, + "/api/v1/explore/form_data": { + "post": { + "description": "Stores a new form_data.", + "parameters": [ + { "in": "query", - "name": "q" + "name": "tab_id", + "schema": { + "type": "integer" + } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/FormDataPostSchema" + } + } + }, + "required": true + }, "responses": { - "200": { + "201": { "content": { "application/json": { "schema": { "properties": { - "description_columns": { - "properties": { - "column_name": { - "description": "The description for the column name. Will be translated by babel", - "example": "A Nice description for the column", - "type": "string" - } - }, - "type": "object" - }, - "id": { - "description": "The item id", - "type": "string" - }, - "label_columns": { - "properties": { - "column_name": { - "description": "The label for the column name. Will be translated by babel", - "example": "A Nice label for the column", - "type": "string" - } - }, - "type": "object" - }, - "result": { - "$ref": "#/components/schemas/DatasetRestApi.get" - }, - "show_columns": { - "description": "A list of columns", - "items": { - "type": "string" - }, - "type": "array" - }, - "show_title": { - "description": "A title to render. Will be translated by babel", - "example": "Show Item Details", + "key": { + "description": "The key to retrieve the form_data.", "type": "string" } }, @@ -11005,7 +14993,7 @@ } } }, - "description": "Item from Model" + "description": "The form_data was stored successfully." }, "400": { "$ref": "#/components/responses/400" @@ -11013,9 +15001,6 @@ "401": { "$ref": "#/components/responses/401" }, - "404": { - "$ref": "#/components/responses/404" - }, "422": { "$ref": "#/components/responses/422" }, @@ -11028,56 +15013,41 @@ "jwt": [] } ], - "tags": ["Datasets"] - }, - "put": { - "description": "Changes a Dataset", + "tags": [ + "Explore Form Data" + ] + } + }, + "/api/v1/explore/form_data/{key}": { + "delete": { + "description": "Deletes a form_data.", "parameters": [ { + "description": "The form_data key.", "in": "path", - "name": "pk", + "name": "key", "required": true, "schema": { - "type": "integer" - } - }, - { - "in": "query", - "name": "override_columns", - "schema": { - "type": "boolean" + "type": "string" } } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DatasetRestApi.put" - } - } - }, - "description": "Dataset schema", - "required": true - }, + ], "responses": { "200": { "content": { "application/json": { "schema": { "properties": { - "id": { - "type": "number" - }, - "result": { - "$ref": "#/components/schemas/DatasetRestApi.put" + "message": { + "description": "The result of the operation", + "type": "string" } }, "type": "object" } } }, - "description": "Dataset changed" + "description": "Deleted the stored form_data." }, "400": { "$ref": "#/components/responses/400" @@ -11085,9 +15055,6 @@ "401": { "$ref": "#/components/responses/401" }, - "403": { - "$ref": "#/components/responses/403" - }, "404": { "$ref": "#/components/responses/404" }, @@ -11103,29 +15070,19 @@ "jwt": [] } ], - "tags": ["Datasets"] - } - }, - "/dataset/{pk}/column/{column_id}": { - "delete": { - "description": "Delete a Dataset column", + "tags": [ + "Explore Form Data" + ] + }, + "get": { + "description": "Retrives a form_data.", "parameters": [ { - "description": "The dataset pk for this column", - "in": "path", - "name": "pk", - "required": true, - "schema": { - "type": "integer" - } - }, - { - "description": "The column id for this dataset", "in": "path", - "name": "column_id", + "name": "key", "required": true, "schema": { - "type": "integer" + "type": "string" } } ], @@ -11135,7 +15092,8 @@ "application/json": { "schema": { "properties": { - "message": { + "form_data": { + "description": "The stored form_data", "type": "string" } }, @@ -11143,14 +15101,14 @@ } } }, - "description": "Column deleted" + "description": "Returns the stored form_data." + }, + "400": { + "$ref": "#/components/responses/400" }, "401": { "$ref": "#/components/responses/401" }, - "403": { - "$ref": "#/components/responses/403" - }, "404": { "$ref": "#/components/responses/404" }, @@ -11166,39 +15124,47 @@ "jwt": [] } ], - "tags": ["Datasets"] - } - }, - "/dataset/{pk}/metric/{metric_id}": { - "delete": { - "description": "Delete a Dataset metric", + "tags": [ + "Explore Form Data" + ] + }, + "put": { + "description": "Updates an existing form_data.", "parameters": [ { - "description": "The dataset pk for this column", "in": "path", - "name": "pk", + "name": "key", "required": true, "schema": { - "type": "integer" + "type": "string" } }, { - "description": "The metric id for this dataset", - "in": "path", - "name": "metric_id", - "required": true, + "in": "query", + "name": "tab_id", "schema": { "type": "integer" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/FormDataPutSchema" + } + } + }, + "required": true + }, "responses": { "200": { "content": { "application/json": { "schema": { "properties": { - "message": { + "key": { + "description": "The key to retrieve the form_data.", "type": "string" } }, @@ -11206,14 +15172,14 @@ } } }, - "description": "Metric deleted" + "description": "The form_data was stored successfully." + }, + "400": { + "$ref": "#/components/responses/400" }, "401": { "$ref": "#/components/responses/401" }, - "403": { - "$ref": "#/components/responses/403" - }, "404": { "$ref": "#/components/responses/404" }, @@ -11229,29 +15195,36 @@ "jwt": [] } ], - "tags": ["Datasets"] + "tags": [ + "Explore Form Data" + ] } }, - "/dataset/{pk}/refresh": { - "put": { - "description": "Refreshes and updates columns of a dataset", - "parameters": [ - { - "in": "path", - "name": "pk", - "required": true, - "schema": { - "type": "integer" + "/api/v1/explore/permalink": { + "post": { + "description": "Stores a new permanent link.", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExplorePermalinkPostSchema" + } } - } - ], + }, + "required": true + }, "responses": { - "200": { + "201": { "content": { "application/json": { "schema": { "properties": { - "message": { + "key": { + "description": "The key to retrieve the permanent link data.", + "type": "string" + }, + "url": { + "description": "pemanent link.", "type": "string" } }, @@ -11259,17 +15232,14 @@ } } }, - "description": "Dataset delete" + "description": "The permanent link was stored successfully." + }, + "400": { + "$ref": "#/components/responses/400" }, "401": { "$ref": "#/components/responses/401" }, - "403": { - "$ref": "#/components/responses/403" - }, - "404": { - "$ref": "#/components/responses/404" - }, "422": { "$ref": "#/components/responses/422" }, @@ -11282,19 +15252,21 @@ "jwt": [] } ], - "tags": ["Datasets"] + "tags": [ + "Explore Permanent Link" + ] } }, - "/dataset/{pk}/related_objects": { + "/api/v1/explore/permalink/{key}": { "get": { - "description": "Get charts and dashboards count associated to a dataset", + "description": "Retrives chart state associated with a permanent link.", "parameters": [ { "in": "path", - "name": "pk", + "name": "key", "required": true, "schema": { - "type": "integer" + "type": "string" } } ], @@ -11303,11 +15275,20 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DatasetRelatedObjectsResponse" + "properties": { + "state": { + "description": "The stored state", + "type": "object" + } + }, + "type": "object" } } }, - "description": "Query result" + "description": "Returns the stored form_data." + }, + "400": { + "$ref": "#/components/responses/400" }, "401": { "$ref": "#/components/responses/401" @@ -11315,6 +15296,9 @@ "404": { "$ref": "#/components/responses/404" }, + "422": { + "$ref": "#/components/responses/422" + }, "500": { "$ref": "#/components/responses/500" } @@ -11324,10 +15308,12 @@ "jwt": [] } ], - "tags": ["Datasets"] + "tags": [ + "Explore Permanent Link" + ] } }, - "/log/": { + "/api/v1/log/": { "get": { "description": "Get a list of models", "parameters": [ @@ -11431,7 +15417,9 @@ "jwt": [] } ], - "tags": ["LogRestApi"] + "tags": [ + "LogRestApi" + ] }, "post": { "requestBody": { @@ -11482,10 +15470,12 @@ "jwt": [] } ], - "tags": ["LogRestApi"] + "tags": [ + "LogRestApi" + ] } }, - "/log/{pk}": { + "/api/v1/log/{pk}": { "get": { "description": "Get an item model", "parameters": [ @@ -11582,10 +15572,40 @@ "jwt": [] } ], - "tags": ["LogRestApi"] + "tags": [ + "LogRestApi" + ] + } + }, + "/api/v1/me/": { + "get": { + "description": "Returns the user object corresponding to the agent making the request, or returns a 401 error if the user is unauthenticated.", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "properties": { + "result": { + "$ref": "#/components/schemas/UserResponseSchema" + } + }, + "type": "object" + } + } + }, + "description": "The current user" + }, + "401": { + "$ref": "#/components/responses/401" + } + }, + "tags": [ + "Current User" + ] } }, - "/menu/": { + "/api/v1/menu/": { "get": { "description": "Get the menu data structure. Returns a forest like structure with the menu the user has access to", "responses": { @@ -11641,49 +15661,12 @@ "jwt": [] } ], - "tags": ["Menu"] - } - }, - "/openapi/{version}/_openapi": { - "get": { - "description": "Get the OpenAPI spec for a specific API version", - "parameters": [ - { - "in": "path", - "name": "version", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "content": { - "application/json": { - "schema": { - "type": "object" - } - } - }, - "description": "The OpenAPI spec" - }, - "404": { - "$ref": "#/components/responses/404" - }, - "500": { - "$ref": "#/components/responses/500" - } - }, - "security": [ - { - "jwt": [] - } - ], - "tags": ["OpenApi"] + "tags": [ + "Menu" + ] } }, - "/query/": { + "/api/v1/query/": { "get": { "description": "Get a list of queries, use Rison or JSON query parameters for filtering, sorting, pagination and for selecting specific columns and metadata.", "parameters": [ @@ -11787,10 +15770,12 @@ "jwt": [] } ], - "tags": ["Queries"] + "tags": [ + "Queries" + ] } }, - "/query/distinct/{column_name}": { + "/api/v1/query/distinct/{column_name}": { "get": { "parameters": [ { @@ -11842,10 +15827,12 @@ "jwt": [] } ], - "tags": ["Queries"] + "tags": [ + "Queries" + ] } }, - "/query/related/{column_name}": { + "/api/v1/query/related/{column_name}": { "get": { "parameters": [ { @@ -11897,10 +15884,12 @@ "jwt": [] } ], - "tags": ["Queries"] + "tags": [ + "Queries" + ] } }, - "/query/{pk}": { + "/api/v1/query/{pk}": { "get": { "description": "Get query detail information.", "parameters": [ @@ -11997,10 +15986,12 @@ "jwt": [] } ], - "tags": ["Queries"] + "tags": [ + "Queries" + ] } }, - "/report/": { + "/api/v1/report/": { "delete": { "description": "Deletes multiple report schedules in a bulk operation.", "parameters": [ @@ -12053,7 +16044,9 @@ "jwt": [] } ], - "tags": ["Report Schedules"] + "tags": [ + "Report Schedules" + ] }, "get": { "description": "Get a list of report schedules, use Rison or JSON query parameters for filtering, sorting, pagination and for selecting specific columns and metadata.", @@ -12158,7 +16151,9 @@ "jwt": [] } ], - "tags": ["Report Schedules"] + "tags": [ + "Report Schedules" + ] }, "post": { "description": "Create a report schedule", @@ -12210,10 +16205,12 @@ "jwt": [] } ], - "tags": ["Report Schedules"] + "tags": [ + "Report Schedules" + ] } }, - "/report/_info": { + "/api/v1/report/_info": { "get": { "description": "Get metadata information about this API resource", "parameters": [ @@ -12294,10 +16291,12 @@ "jwt": [] } ], - "tags": ["Report Schedules"] + "tags": [ + "Report Schedules" + ] } }, - "/report/related/{column_name}": { + "/api/v1/report/related/{column_name}": { "get": { "parameters": [ { @@ -12349,10 +16348,12 @@ "jwt": [] } ], - "tags": ["Report Schedules"] + "tags": [ + "Report Schedules" + ] } }, - "/report/{pk}": { + "/api/v1/report/{pk}": { "delete": { "description": "Delete a report schedule", "parameters": [ @@ -12400,7 +16401,9 @@ "jwt": [] } ], - "tags": ["Report Schedules"] + "tags": [ + "Report Schedules" + ] }, "get": { "description": "Get a report schedule", @@ -12498,7 +16501,9 @@ "jwt": [] } ], - "tags": ["Report Schedules"] + "tags": [ + "Report Schedules" + ] }, "put": { "description": "Update a report schedule", @@ -12564,10 +16569,12 @@ "jwt": [] } ], - "tags": ["Report Schedules"] + "tags": [ + "Report Schedules" + ] } }, - "/report/{pk}/log/": { + "/api/v1/report/{pk}/log/": { "get": { "description": "Get a list of report schedule logs, use Rison or JSON query parameters for filtering, sorting, pagination and for selecting specific columns and metadata.", "parameters": [ @@ -12641,10 +16648,12 @@ "jwt": [] } ], - "tags": ["Report Schedules"] + "tags": [ + "Report Schedules" + ] } }, - "/report/{pk}/log/{log_id}": { + "/api/v1/report/{pk}/log/{log_id}": { "get": { "description": "Get a report schedule log", "parameters": [ @@ -12719,10 +16728,12 @@ "jwt": [] } ], - "tags": ["Report Schedules"] + "tags": [ + "Report Schedules" + ] } }, - "/saved_query/": { + "/api/v1/saved_query/": { "delete": { "description": "Deletes multiple saved queries in a bulk operation.", "parameters": [ @@ -12772,7 +16783,9 @@ "jwt": [] } ], - "tags": ["Queries"] + "tags": [ + "Queries" + ] }, "get": { "description": "Get a list of saved queries, use Rison or JSON query parameters for filtering, sorting, pagination and for selecting specific columns and metadata.", @@ -12877,7 +16890,9 @@ "jwt": [] } ], - "tags": ["Queries"] + "tags": [ + "Queries" + ] }, "post": { "description": "Create a saved query", @@ -12929,10 +16944,12 @@ "jwt": [] } ], - "tags": ["Queries"] + "tags": [ + "Queries" + ] } }, - "/saved_query/_info": { + "/api/v1/saved_query/_info": { "get": { "description": "Get metadata information about this API resource", "parameters": [ @@ -13013,10 +17030,12 @@ "jwt": [] } ], - "tags": ["Queries"] + "tags": [ + "Queries" + ] } }, - "/saved_query/distinct/{column_name}": { + "/api/v1/saved_query/distinct/{column_name}": { "get": { "parameters": [ { @@ -13068,10 +17087,12 @@ "jwt": [] } ], - "tags": ["Queries"] + "tags": [ + "Queries" + ] } }, - "/saved_query/export/": { + "/api/v1/saved_query/export/": { "get": { "description": "Exports multiple saved queries and downloads them as YAML files", "parameters": [ @@ -13117,10 +17138,12 @@ "jwt": [] } ], - "tags": ["Queries"] + "tags": [ + "Queries" + ] } }, - "/saved_query/import/": { + "/api/v1/saved_query/import/": { "post": { "requestBody": { "content": { @@ -13137,7 +17160,7 @@ "type": "boolean" }, "passwords": { - "description": "JSON map of passwords for each file", + "description": "JSON map of passwords for each featured database in the ZIP file. If the ZIP includes a database config in the path `databases/MyDatabase.yaml`, the password should be provided in the following format: `{\"databases/MyDatabase.yaml\": \"my_password\"}`.", "type": "string" } }, @@ -13181,10 +17204,12 @@ "jwt": [] } ], - "tags": ["Queries"] + "tags": [ + "Queries" + ] } }, - "/saved_query/related/{column_name}": { + "/api/v1/saved_query/related/{column_name}": { "get": { "parameters": [ { @@ -13236,10 +17261,12 @@ "jwt": [] } ], - "tags": ["Queries"] + "tags": [ + "Queries" + ] } }, - "/saved_query/{pk}": { + "/api/v1/saved_query/{pk}": { "delete": { "description": "Delete saved query", "parameters": [ @@ -13283,7 +17310,9 @@ "jwt": [] } ], - "tags": ["Queries"] + "tags": [ + "Queries" + ] }, "get": { "description": "Get a saved query", @@ -13381,7 +17410,9 @@ "jwt": [] } ], - "tags": ["Queries"] + "tags": [ + "Queries" + ] }, "put": { "description": "Update a saved query", @@ -13443,10 +17474,12 @@ "jwt": [] } ], - "tags": ["Queries"] + "tags": [ + "Queries" + ] } }, - "/security/csrf_token/": { + "/api/v1/security/csrf_token/": { "get": { "description": "Fetch the CSRF token", "responses": { @@ -13477,10 +17510,59 @@ "jwt": [] } ], - "tags": ["Security"] + "tags": [ + "Security" + ] + } + }, + "/api/v1/security/guest_token/": { + "post": { + "description": "Fetches a guest token", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GuestTokenCreate" + } + } + }, + "description": "Parameters for the guest token", + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "properties": { + "token": { + "type": "string" + } + }, + "type": "object" + } + } + }, + "description": "Result contains the guest token" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "500": { + "$ref": "#/components/responses/500" + } + }, + "security": [ + { + "jwt": [] + } + ], + "tags": [ + "Security" + ] } }, - "/security/login": { + "/api/v1/security/login": { "post": { "description": "Authenticate and get a JWT access and refresh token", "requestBody": { @@ -13495,7 +17577,10 @@ }, "provider": { "description": "Choose an authentication provider", - "enum": ["db", "ldap"], + "enum": [ + "db", + "ldap" + ], "example": "db", "type": "string" }, @@ -13545,10 +17630,12 @@ "$ref": "#/components/responses/500" } }, - "tags": ["Security"] + "tags": [ + "Security" + ] } }, - "/security/refresh": { + "/api/v1/security/refresh": { "post": { "description": "Use the refresh token to get a new JWT access token", "responses": { @@ -13580,13 +17667,56 @@ "jwt_refresh": [] } ], - "tags": ["Security"] + "tags": [ + "Security" + ] + } + }, + "/api/{version}/_openapi": { + "get": { + "description": "Get the OpenAPI spec for a specific API version", + "parameters": [ + { + "in": "path", + "name": "version", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "type": "object" + } + } + }, + "description": "The OpenAPI spec" + }, + "404": { + "$ref": "#/components/responses/404" + }, + "500": { + "$ref": "#/components/responses/500" + } + }, + "security": [ + { + "jwt": [] + } + ], + "tags": [ + "OpenApi" + ] } } }, "servers": [ { - "url": "/api/v1" + "url": "http://localhost:8088" } ] } diff --git a/docs/yarn.lock b/docs/yarn.lock index 17e7b8b6a8d12..5acd9afea07f4 100644 --- a/docs/yarn.lock +++ b/docs/yarn.lock @@ -2,24 +2,24 @@ # yarn lockfile v1 -"@algolia/autocomplete-core@1.2.2": - version "1.2.2" - resolved "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.2.2.tgz" - integrity sha512-JOQaURze45qVa8OOFDh+ozj2a/ObSRsVyz6Zd0aiBeej+RSTqrr1hDVpGNbbXYLW26G5ujuc9QIdH+rBHn95nw== +"@algolia/autocomplete-core@1.5.2": + version "1.5.2" + resolved "https://registry.yarnpkg.com/@algolia/autocomplete-core/-/autocomplete-core-1.5.2.tgz#ec0178e07b44fd74a057728ac157291b26cecf37" + integrity sha512-DY0bhyczFSS1b/CqJlTE/nQRtnTAHl6IemIkBy0nEWnhDzRDdtdx4p5Uuk3vwAFxwEEgi1WqKwgSSMx6DpNL4A== dependencies: - "@algolia/autocomplete-shared" "1.2.2" + "@algolia/autocomplete-shared" "1.5.2" -"@algolia/autocomplete-preset-algolia@1.2.2": - version "1.2.2" - resolved "https://registry.npmjs.org/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.2.2.tgz" - integrity sha512-AZkh+bAMaJDzMZTelFOXJTJqkp5VPGH8W3n0B+Ggce7DdozlMRsDLguKTCQAkZ0dJ1EbBPyFL5ztL/JImB137Q== +"@algolia/autocomplete-preset-algolia@1.5.2": + version "1.5.2" + resolved "https://registry.yarnpkg.com/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.5.2.tgz#36c5638cc6dba6ea46a86e5a0314637ca40a77ca" + integrity sha512-3MRYnYQFJyovANzSX2CToS6/5cfVjbLLqFsZTKcvF3abhQzxbqwwaMBlJtt620uBUOeMzhdfasKhCc40+RHiZw== dependencies: - "@algolia/autocomplete-shared" "1.2.2" + "@algolia/autocomplete-shared" "1.5.2" -"@algolia/autocomplete-shared@1.2.2": - version "1.2.2" - resolved "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.2.2.tgz" - integrity sha512-mLTl7d2C1xVVazHt/bqh9EE/u2lbp5YOxLDdcjILXmUqOs5HH1D4SuySblXaQG1uf28FhTqMGp35qE5wJQnqAw== +"@algolia/autocomplete-shared@1.5.2": + version "1.5.2" + resolved "https://registry.yarnpkg.com/@algolia/autocomplete-shared/-/autocomplete-shared-1.5.2.tgz#e157f9ad624ab8fd940ff28bd2094cdf199cdd79" + integrity sha512-ylQAYv5H0YKMfHgVWX0j0NmL8XBcAeeeVQUmppnnMtzDbDnca6CzhKj3Q8eF9cHCgcdTDdb5K+3aKyGWA0obug== "@algolia/cache-browser-local-storage@4.11.0": version "4.11.0" @@ -28,11 +28,23 @@ dependencies: "@algolia/cache-common" "4.11.0" +"@algolia/cache-browser-local-storage@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.13.0.tgz#f8aa4fe31104b19d616ea392f9ed5c2ea847d964" + integrity sha512-nj1vHRZauTqP/bluwkRIgEADEimqojJgoTRCel5f6q8WCa9Y8QeI4bpDQP28FoeKnDRYa3J5CauDlN466jqRhg== + dependencies: + "@algolia/cache-common" "4.13.0" + "@algolia/cache-common@4.11.0": version "4.11.0" resolved "https://registry.npmjs.org/@algolia/cache-common/-/cache-common-4.11.0.tgz" integrity sha512-lODcJRuPXqf+6mp0h6bOxPMlbNoyn3VfjBVcQh70EDP0/xExZbkpecgHyyZK4kWg+evu+mmgvTK3GVHnet/xKw== +"@algolia/cache-common@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/cache-common/-/cache-common-4.13.0.tgz#27b83fd3939d08d72261b36a07eeafc4cb4d2113" + integrity sha512-f9mdZjskCui/dA/fA/5a+6hZ7xnHaaZI5tM/Rw9X8rRB39SUlF/+o3P47onZ33n/AwkpSbi5QOyhs16wHd55kA== + "@algolia/cache-in-memory@4.11.0": version "4.11.0" resolved "https://registry.npmjs.org/@algolia/cache-in-memory/-/cache-in-memory-4.11.0.tgz" @@ -40,6 +52,13 @@ dependencies: "@algolia/cache-common" "4.11.0" +"@algolia/cache-in-memory@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/cache-in-memory/-/cache-in-memory-4.13.0.tgz#10801a74550cbabb64b59ff08c56bce9c278ff2d" + integrity sha512-hHdc+ahPiMM92CQMljmObE75laYzNFYLrNOu0Q3/eyvubZZRtY2SUsEEgyUEyzXruNdzrkcDxFYa7YpWBJYHAg== + dependencies: + "@algolia/cache-common" "4.13.0" + "@algolia/client-account@4.11.0": version "4.11.0" resolved "https://registry.npmjs.org/@algolia/client-account/-/client-account-4.11.0.tgz" @@ -49,6 +68,15 @@ "@algolia/client-search" "4.11.0" "@algolia/transporter" "4.11.0" +"@algolia/client-account@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/client-account/-/client-account-4.13.0.tgz#f8646dd40d1e9e3353e10abbd5d6c293ea92a8e2" + integrity sha512-FzFqFt9b0g/LKszBDoEsW+dVBuUe1K3scp2Yf7q6pgHWM1WqyqUlARwVpLxqyc+LoyJkTxQftOKjyFUqddnPKA== + dependencies: + "@algolia/client-common" "4.13.0" + "@algolia/client-search" "4.13.0" + "@algolia/transporter" "4.13.0" + "@algolia/client-analytics@4.11.0": version "4.11.0" resolved "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-4.11.0.tgz" @@ -59,6 +87,16 @@ "@algolia/requester-common" "4.11.0" "@algolia/transporter" "4.11.0" +"@algolia/client-analytics@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/client-analytics/-/client-analytics-4.13.0.tgz#a00bd02df45d71becb9dd4c5c993d805f2e1786d" + integrity sha512-klmnoq2FIiiMHImkzOm+cGxqRLLu9CMHqFhbgSy9wtXZrqb8BBUIUE2VyBe7azzv1wKcxZV2RUyNOMpFqmnRZA== + dependencies: + "@algolia/client-common" "4.13.0" + "@algolia/client-search" "4.13.0" + "@algolia/requester-common" "4.13.0" + "@algolia/transporter" "4.13.0" + "@algolia/client-common@4.11.0": version "4.11.0" resolved "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.11.0.tgz" @@ -67,6 +105,14 @@ "@algolia/requester-common" "4.11.0" "@algolia/transporter" "4.11.0" +"@algolia/client-common@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/client-common/-/client-common-4.13.0.tgz#8bc373d164dbdcce38b4586912bbe162492bcb86" + integrity sha512-GoXfTp0kVcbgfSXOjfrxx+slSipMqGO9WnNWgeMmru5Ra09MDjrcdunsiiuzF0wua6INbIpBQFTC2Mi5lUNqGA== + dependencies: + "@algolia/requester-common" "4.13.0" + "@algolia/transporter" "4.13.0" + "@algolia/client-personalization@4.11.0": version "4.11.0" resolved "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-4.11.0.tgz" @@ -76,6 +122,15 @@ "@algolia/requester-common" "4.11.0" "@algolia/transporter" "4.11.0" +"@algolia/client-personalization@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/client-personalization/-/client-personalization-4.13.0.tgz#10fb7af356422551f11a67222b39c52306f1512c" + integrity sha512-KneLz2WaehJmNfdr5yt2HQETpLaCYagRdWwIwkTqRVFCv4DxRQ2ChPVW9jeTj4YfAAhfzE6F8hn7wkQ/Jfj6ZA== + dependencies: + "@algolia/client-common" "4.13.0" + "@algolia/requester-common" "4.13.0" + "@algolia/transporter" "4.13.0" + "@algolia/client-search@4.11.0": version "4.11.0" resolved "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.11.0.tgz" @@ -85,11 +140,30 @@ "@algolia/requester-common" "4.11.0" "@algolia/transporter" "4.11.0" +"@algolia/client-search@4.13.0", "@algolia/client-search@^4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/client-search/-/client-search-4.13.0.tgz#2d8ff8e755c4a37ec89968f3f9b358eed005c7f0" + integrity sha512-blgCKYbZh1NgJWzeGf+caKE32mo3j54NprOf0LZVCubQb3Kx37tk1Hc8SDs9bCAE8hUvf3cazMPIg7wscSxspA== + dependencies: + "@algolia/client-common" "4.13.0" + "@algolia/requester-common" "4.13.0" + "@algolia/transporter" "4.13.0" + +"@algolia/events@^4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@algolia/events/-/events-4.0.1.tgz#fd39e7477e7bc703d7f893b556f676c032af3950" + integrity sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ== + "@algolia/logger-common@4.11.0": version "4.11.0" resolved "https://registry.npmjs.org/@algolia/logger-common/-/logger-common-4.11.0.tgz" integrity sha512-pRMJFeOY8hoWKIxWuGHIrqnEKN/kqKh7UilDffG/+PeEGxBuku+Wq5CfdTFG0C9ewUvn8mAJn5BhYA5k8y0Jqg== +"@algolia/logger-common@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/logger-common/-/logger-common-4.13.0.tgz#be2606e71aae618a1ff1ea9a1b5f5a74284b35a8" + integrity sha512-8yqXk7rMtmQJ9wZiHOt/6d4/JDEg5VCk83gJ39I+X/pwUPzIsbKy9QiK4uJ3aJELKyoIiDT1hpYVt+5ia+94IA== + "@algolia/logger-console@4.11.0": version "4.11.0" resolved "https://registry.npmjs.org/@algolia/logger-console/-/logger-console-4.11.0.tgz" @@ -97,6 +171,13 @@ dependencies: "@algolia/logger-common" "4.11.0" +"@algolia/logger-console@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/logger-console/-/logger-console-4.13.0.tgz#f28028a760e3d9191e28a10b12925e48f6c9afde" + integrity sha512-YepRg7w2/87L0vSXRfMND6VJ5d6699sFJBRWzZPOlek2p5fLxxK7O0VncYuc/IbVHEgeApvgXx0WgCEa38GVuQ== + dependencies: + "@algolia/logger-common" "4.13.0" + "@algolia/requester-browser-xhr@4.11.0": version "4.11.0" resolved "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.11.0.tgz" @@ -104,11 +185,23 @@ dependencies: "@algolia/requester-common" "4.11.0" +"@algolia/requester-browser-xhr@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.13.0.tgz#e2483f4e8d7f09e27cd0daf6c77711d15c5a919f" + integrity sha512-Dj+bnoWR5MotrnjblzGKZ2kCdQi2cK/VzPURPnE616NU/il7Ypy6U6DLGZ/ZYz+tnwPa0yypNf21uqt84fOgrg== + dependencies: + "@algolia/requester-common" "4.13.0" + "@algolia/requester-common@4.11.0": version "4.11.0" resolved "https://registry.npmjs.org/@algolia/requester-common/-/requester-common-4.11.0.tgz" integrity sha512-+cZGe/9fuYgGuxjaBC+xTGBkK7OIYdfapxhfvEf03dviLMPmhmVYFJtJlzAjQ2YmGDJpHrGgAYj3i/fbs8yhiA== +"@algolia/requester-common@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/requester-common/-/requester-common-4.13.0.tgz#47fb3464cfb26b55ba43676d13f295d812830596" + integrity sha512-BRTDj53ecK+gn7ugukDWOOcBRul59C4NblCHqj4Zm5msd5UnHFjd/sGX+RLOEoFMhetILAnmg6wMrRrQVac9vw== + "@algolia/requester-node-http@4.11.0": version "4.11.0" resolved "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.11.0.tgz" @@ -116,6 +209,13 @@ dependencies: "@algolia/requester-common" "4.11.0" +"@algolia/requester-node-http@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/requester-node-http/-/requester-node-http-4.13.0.tgz#7d981bbd31492f51dd11820a665f9d8906793c37" + integrity sha512-9b+3O4QFU4azLhGMrZAr/uZPydvzOR4aEZfSL8ZrpLZ7fbbqTO0S/5EVko+QIgglRAtVwxvf8UJ1wzTD2jvKxQ== + dependencies: + "@algolia/requester-common" "4.13.0" + "@algolia/transporter@4.11.0": version "4.11.0" resolved "https://registry.npmjs.org/@algolia/transporter/-/transporter-4.11.0.tgz" @@ -125,6 +225,22 @@ "@algolia/logger-common" "4.11.0" "@algolia/requester-common" "4.11.0" +"@algolia/transporter@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/transporter/-/transporter-4.13.0.tgz#f6379e5329efa2127da68c914d1141f5f21dbd07" + integrity sha512-8tSQYE+ykQENAdeZdofvtkOr5uJ9VcQSWgRhQ9h01AehtBIPAczk/b2CLrMsw5yQZziLs5cZ3pJ3478yI+urhA== + dependencies: + "@algolia/cache-common" "4.13.0" + "@algolia/logger-common" "4.13.0" + "@algolia/requester-common" "4.13.0" + +"@ampproject/remapping@^2.1.0": + version "2.1.2" + resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.1.2.tgz#4edca94973ded9630d20101cd8559cedb8d8bd34" + integrity sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg== + dependencies: + "@jridgewell/trace-mapping" "^0.3.0" + "@ant-design/colors@^6.0.0": version "6.0.0" resolved "https://registry.yarnpkg.com/@ant-design/colors/-/colors-6.0.0.tgz#9b9366257cffcc47db42b9d0203bb592c13c0298" @@ -183,6 +299,11 @@ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.16.8.tgz#31560f9f29fdf1868de8cb55049538a1b9732a60" integrity sha512-m7OkX0IdKLKPpBlJtF561YJal5y/jyI5fNfWbPxh2D/nbzzGI4qRyrD8xO2jB24u7l+5I2a43scCG2IrfjC50Q== +"@babel/compat-data@^7.17.7": + version "7.17.7" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.17.7.tgz#078d8b833fbbcc95286613be8c716cef2b519fa2" + integrity sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ== + "@babel/core@7.12.9": version "7.12.9" resolved "https://registry.npmjs.org/@babel/core/-/core-7.12.9.tgz" @@ -226,7 +347,7 @@ semver "^6.3.0" source-map "^0.5.0" -"@babel/core@^7.15.5", "@babel/core@^7.16.0": +"@babel/core@^7.15.5": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.16.7.tgz#db990f931f6d40cb9b87a0dc7d2adc749f1dcbcf" integrity sha512-aeLaqcqThRNZYmbMqtulsetOQZ/5gbR/dWruUCJcpas4Qoyy+QeagfDsPdMrqwsPRDNxJvBlRiZxxX7THO7qtA== @@ -247,6 +368,27 @@ semver "^6.3.0" source-map "^0.5.0" +"@babel/core@^7.17.5": + version "7.17.8" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.8.tgz#3dac27c190ebc3a4381110d46c80e77efe172e1a" + integrity sha512-OdQDV/7cRBtJHLSOBqqbYNkOcydOgnX59TZx4puf41fzcVtN3e/4yqY8lMQsK+5X2lJtAdmA+6OHqsj1hBJ4IQ== + dependencies: + "@ampproject/remapping" "^2.1.0" + "@babel/code-frame" "^7.16.7" + "@babel/generator" "^7.17.7" + "@babel/helper-compilation-targets" "^7.17.7" + "@babel/helper-module-transforms" "^7.17.7" + "@babel/helpers" "^7.17.8" + "@babel/parser" "^7.17.8" + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.17.3" + "@babel/types" "^7.17.0" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.1.2" + semver "^6.3.0" + "@babel/generator@^7.12.5", "@babel/generator@^7.16.0": version "7.16.0" resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.16.0.tgz" @@ -265,6 +407,15 @@ jsesc "^2.5.1" source-map "^0.5.0" +"@babel/generator@^7.17.3", "@babel/generator@^7.17.7": + version "7.17.7" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.17.7.tgz#8da2599beb4a86194a3b24df6c085931d9ee45ad" + integrity sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w== + dependencies: + "@babel/types" "^7.17.0" + jsesc "^2.5.1" + source-map "^0.5.0" + "@babel/helper-annotate-as-pure@^7.16.0": version "7.16.0" resolved "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.0.tgz" @@ -315,6 +466,16 @@ browserslist "^4.17.5" semver "^6.3.0" +"@babel/helper-compilation-targets@^7.17.7": + version "7.17.7" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz#a3c2924f5e5f0379b356d4cfb313d1414dc30e46" + integrity sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w== + dependencies: + "@babel/compat-data" "^7.17.7" + "@babel/helper-validator-option" "^7.16.7" + browserslist "^4.17.5" + semver "^6.3.0" + "@babel/helper-create-class-features-plugin@^7.16.0": version "7.16.0" resolved "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.0.tgz" @@ -327,6 +488,19 @@ "@babel/helper-replace-supers" "^7.16.0" "@babel/helper-split-export-declaration" "^7.16.0" +"@babel/helper-create-class-features-plugin@^7.16.10": + version "7.17.6" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.6.tgz#3778c1ed09a7f3e65e6d6e0f6fbfcc53809d92c9" + integrity sha512-SogLLSxXm2OkBbSsHZMM4tUi8fUzjs63AT/d0YQIzr6GSd8Hxsbk2KYDX0k0DweAzGMj/YWeiCsorIdtdcW8Eg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-function-name" "^7.16.7" + "@babel/helper-member-expression-to-functions" "^7.16.7" + "@babel/helper-optimise-call-expression" "^7.16.7" + "@babel/helper-replace-supers" "^7.16.7" + "@babel/helper-split-export-declaration" "^7.16.7" + "@babel/helper-create-class-features-plugin@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.7.tgz#9c5b34b53a01f2097daf10678d65135c1b9f84ba" @@ -507,6 +681,20 @@ "@babel/traverse" "^7.16.7" "@babel/types" "^7.16.7" +"@babel/helper-module-transforms@^7.17.7": + version "7.17.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz#3943c7f777139e7954a5355c815263741a9c1cbd" + integrity sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw== + dependencies: + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-module-imports" "^7.16.7" + "@babel/helper-simple-access" "^7.17.7" + "@babel/helper-split-export-declaration" "^7.16.7" + "@babel/helper-validator-identifier" "^7.16.7" + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.17.3" + "@babel/types" "^7.17.0" + "@babel/helper-optimise-call-expression@^7.16.0": version "7.16.0" resolved "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz" @@ -589,6 +777,13 @@ dependencies: "@babel/types" "^7.16.7" +"@babel/helper-simple-access@^7.17.7": + version "7.17.7" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz#aaa473de92b7987c6dfa7ce9a7d9674724823367" + integrity sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA== + dependencies: + "@babel/types" "^7.17.0" + "@babel/helper-skip-transparent-expression-wrappers@^7.16.0": version "7.16.0" resolved "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz" @@ -668,6 +863,15 @@ "@babel/traverse" "^7.16.7" "@babel/types" "^7.16.7" +"@babel/helpers@^7.17.8": + version "7.17.8" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.17.8.tgz#288450be8c6ac7e4e44df37bcc53d345e07bc106" + integrity sha512-QcL86FGxpfSJwGtAvv4iG93UL6bmqBdmoVY0CMCU2g+oD2ezQse3PT5Pa+jiD6LJndBQi0EDlpzOWNlLuhz5gw== + dependencies: + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.17.3" + "@babel/types" "^7.17.0" + "@babel/highlight@^7.16.0": version "7.16.0" resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz" @@ -691,11 +895,16 @@ resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.16.3.tgz" integrity sha512-dcNwU1O4sx57ClvLBVFbEgx0UZWfd0JQX5X6fxFRCLHelFBGXFfSz6Y0FAq2PEwUqlqLkdVjVr4VASEOuUnLJw== -"@babel/parser@^7.16.4", "@babel/parser@^7.16.7", "@babel/parser@^7.16.8": +"@babel/parser@^7.16.7", "@babel/parser@^7.16.8": version "7.16.8" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.16.8.tgz#61c243a3875f7d0b0962b0543a33ece6ff2f1f17" integrity sha512-i7jDUfrVBWc+7OKcBzEe5n7fbv3i2fWtxKzzCvOjnzSxMfWMigAhtfJ7qzZNGFNMsCCd67+uz553dYKWXPvCKw== +"@babel/parser@^7.17.3", "@babel/parser@^7.17.8": + version "7.17.8" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.8.tgz#2817fb9d885dd8132ea0f8eb615a6388cca1c240" + integrity sha512-BoHhDJrJXqcg+ZL16Xv39H9n+AqJ4pcDrQBGZN+wHxIysrLZ3/ECwCBUch/1zUNhnsXULcONU3Ei5Hmkfk6kiQ== + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.16.0": version "7.16.2" 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.16.2.tgz" @@ -949,12 +1158,12 @@ "@babel/helper-create-class-features-plugin" "^7.16.0" "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-proposal-private-methods@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.7.tgz#e418e3aa6f86edd6d327ce84eff188e479f571e0" - integrity sha512-7twV3pzhrRxSwHeIvFE6coPgvo+exNDOiGUMg39o2LiLo1Y+4aKpfkcLGcg1UHonzorCt7SNXnoMyCnnIOA8Sw== +"@babel/plugin-proposal-private-methods@^7.16.11": + version "7.16.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.11.tgz#e8df108288555ff259f4527dbe84813aac3a1c50" + integrity sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw== dependencies: - "@babel/helper-create-class-features-plugin" "^7.16.7" + "@babel/helper-create-class-features-plugin" "^7.16.10" "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-proposal-private-property-in-object@^7.16.0": @@ -1595,10 +1804,10 @@ dependencies: "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-runtime@^7.16.0": - version "7.16.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.16.8.tgz#3339368701103edae708f0fba9e4bfb70a3e5872" - integrity sha512-6Kg2XHPFnIarNweZxmzbgYnnWsXxkx9WQUVk2sksBRL80lBC1RAQV3wQagWxdCHiYHqPN+oenwNIuttlYgIbQQ== +"@babel/plugin-transform-runtime@^7.17.0": + version "7.17.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.17.0.tgz#0a2e08b5e2b2d95c4b1d3b3371a2180617455b70" + integrity sha512-fr7zPWnKXNc1xoHfrIU9mN/4XKX4VLZ45Q+oMhfsYIaHvg7mHgmhfOy/ckRWqDK7XF3QDigRpkh5DKq6+clE8A== dependencies: "@babel/helper-module-imports" "^7.16.7" "@babel/helper-plugin-utils" "^7.16.7" @@ -1798,10 +2007,10 @@ core-js-compat "^3.19.0" semver "^6.3.0" -"@babel/preset-env@^7.16.4": - version "7.16.8" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.16.8.tgz#e682fa0bcd1cf49621d64a8956318ddfb9a05af9" - integrity sha512-9rNKgVCdwHb3z1IlbMyft6yIXIeP3xz6vWvGaLHrJThuEIqWfHb0DNBH9VuTgnDfdbUDhkmkvMZS/YMCtP7Elg== +"@babel/preset-env@^7.16.11": + version "7.16.11" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.16.11.tgz#5dd88fd885fae36f88fd7c8342475c9f0abe2982" + integrity sha512-qcmWG8R7ZW6WBRPZK//y+E3Cli151B20W1Rv7ln27vuPaXU/8TKms6jFdiJtF7UDTxcrb7mZd88tAeK9LjdT8g== dependencies: "@babel/compat-data" "^7.16.8" "@babel/helper-compilation-targets" "^7.16.7" @@ -1821,7 +2030,7 @@ "@babel/plugin-proposal-object-rest-spread" "^7.16.7" "@babel/plugin-proposal-optional-catch-binding" "^7.16.7" "@babel/plugin-proposal-optional-chaining" "^7.16.7" - "@babel/plugin-proposal-private-methods" "^7.16.7" + "@babel/plugin-proposal-private-methods" "^7.16.11" "@babel/plugin-proposal-private-property-in-object" "^7.16.7" "@babel/plugin-proposal-unicode-property-regex" "^7.16.7" "@babel/plugin-syntax-async-generators" "^7.8.4" @@ -1901,7 +2110,7 @@ "@babel/plugin-transform-react-jsx-development" "^7.16.0" "@babel/plugin-transform-react-pure-annotations" "^7.16.0" -"@babel/preset-react@^7.14.5", "@babel/preset-react@^7.16.0": +"@babel/preset-react@^7.14.5", "@babel/preset-react@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.16.7.tgz#4c18150491edc69c183ff818f9f2aecbe5d93852" integrity sha512-fWpyI8UM/HE6DfPBzD8LnhQ/OcH8AgTaqcqP2nGOXEUV+VKBR5JRN9hCk9ai+zQQ57vtm9oWeXguBCPNUjytgA== @@ -1913,7 +2122,7 @@ "@babel/plugin-transform-react-jsx-development" "^7.16.7" "@babel/plugin-transform-react-pure-annotations" "^7.16.7" -"@babel/preset-typescript@^7.15.0", "@babel/preset-typescript@^7.16.0": +"@babel/preset-typescript@^7.15.0", "@babel/preset-typescript@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.16.7.tgz#ab114d68bb2020afc069cd51b37ff98a046a70b9" integrity sha512-WbVEmgXdIyvzB77AQjGBEyYPZx+8tTsO50XtfozQrkW8QB2rLJpH2lgx0TRw5EJrBxOZQ+wCcyPVQvS8tjEHpQ== @@ -1930,6 +2139,14 @@ core-js-pure "^3.19.0" regenerator-runtime "^0.13.4" +"@babel/runtime-corejs3@^7.17.2": + version "7.17.8" + resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.17.8.tgz#d7dd49fb812f29c61c59126da3792d8740d4e284" + integrity sha512-ZbYSUvoSF6dXZmMl/CYTMOvzIFnbGfv4W3SEHYgMvNsFTeLaF2gkGAF4K2ddmtSK4Emej+0aYcnSC6N5dPCXUQ== + dependencies: + core-js-pure "^3.20.2" + regenerator-runtime "^0.13.4" + "@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.3", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.13", "@babel/runtime@^7.15.4", "@babel/runtime@^7.3.1", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": version "7.16.3" resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.3.tgz" @@ -1937,13 +2154,20 @@ dependencies: regenerator-runtime "^0.13.4" -"@babel/runtime@^7.10.1", "@babel/runtime@^7.10.4", "@babel/runtime@^7.11.1", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.16.3", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2": +"@babel/runtime@^7.10.1", "@babel/runtime@^7.10.4", "@babel/runtime@^7.11.1", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.16.7.tgz#03ff99f64106588c9c403c6ecb8c3bafbbdff1fa" integrity sha512-9E9FJowqAsytyOY6LG+1KuueckRL+aQW+mKvXRXnuFGyRAyepJPmEo9vgMfXUA6O9u3IeEdv9MAkppFcaQwogQ== dependencies: regenerator-runtime "^0.13.4" +"@babel/runtime@^7.17.2": + version "7.17.8" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.8.tgz#3e56e4aff81befa55ac3ac6a0967349fd1c5bca2" + integrity sha512-dQpEpK0O9o6lj6oPu0gRDbbnk+4LeHlNcBpspf6Olzt3GIX4P1lWF1gS+pHLDFlaJvbR6q7jCfQ08zA4QJBnmA== + dependencies: + regenerator-runtime "^0.13.4" + "@babel/template@^7.12.7", "@babel/template@^7.16.0": version "7.16.0" resolved "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz" @@ -1993,6 +2217,22 @@ debug "^4.1.0" globals "^11.1.0" +"@babel/traverse@^7.17.3": + version "7.17.3" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.17.3.tgz#0ae0f15b27d9a92ba1f2263358ea7c4e7db47b57" + integrity sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw== + dependencies: + "@babel/code-frame" "^7.16.7" + "@babel/generator" "^7.17.3" + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-function-name" "^7.16.7" + "@babel/helper-hoist-variables" "^7.16.7" + "@babel/helper-split-export-declaration" "^7.16.7" + "@babel/parser" "^7.17.3" + "@babel/types" "^7.17.0" + debug "^4.1.0" + globals "^11.1.0" + "@babel/types@^7.12.6", "@babel/types@^7.12.7", "@babel/types@^7.16.0", "@babel/types@^7.4.4": version "7.16.0" resolved "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz" @@ -2009,6 +2249,14 @@ "@babel/helper-validator-identifier" "^7.16.7" to-fast-properties "^2.0.0" +"@babel/types@^7.17.0": + version "7.17.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.17.0.tgz#a826e368bccb6b3d84acd76acad5c0d87342390b" + integrity sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw== + dependencies: + "@babel/helper-validator-identifier" "^7.16.7" + to-fast-properties "^2.0.0" + "@braintree/sanitize-url@^5.0.2": version "5.0.2" resolved "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-5.0.2.tgz" @@ -2019,77 +2267,79 @@ resolved "https://registry.yarnpkg.com/@ctrl/tinycolor/-/tinycolor-3.4.0.tgz#c3c5ae543c897caa9c2a68630bed355be5f9990f" integrity sha512-JZButFdZ1+/xAfpguQHoabIXkcqRRKpMrWKBkpEZZyxfY9C1DpADFB8PEqGSTeFr135SaTRfKqGKx5xSCLI7ZQ== -"@docsearch/css@3.0.0-alpha.41": - version "3.0.0-alpha.41" - resolved "https://registry.npmjs.org/@docsearch/css/-/css-3.0.0-alpha.41.tgz" - integrity sha512-AP1jqcF/9jCrm4s0lcES3QAtHueyipKjd14L/pguk0CZYK7uI7hC0FWodmRmrgK3/HST9jiHa1waUMR6ZYedlQ== +"@docsearch/css@3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@docsearch/css/-/css-3.0.0.tgz#fe57b474802ffd706d3246eab25d52fac8aa3698" + integrity sha512-1kkV7tkAsiuEd0shunYRByKJe3xQDG2q7wYg24SOw1nV9/2lwEd4WrUYRJC/ukGTl2/kHeFxsaUvtiOy0y6fFA== -"@docsearch/react@^3.0.0-alpha.39": - version "3.0.0-alpha.41" - resolved "https://registry.npmjs.org/@docsearch/react/-/react-3.0.0-alpha.41.tgz" - integrity sha512-UL0Gdter/NUea04lGuBGH0GzQ2/2q/hBfn7Rjo71rRKbjtfkQCM92leJ9tZ+9j9sFLoyuHb9XMm/B8vCjWwTEg== +"@docsearch/react@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@docsearch/react/-/react-3.0.0.tgz#d02ebdc67573412185a6a4df13bc254c7c0da491" + integrity sha512-yhMacqS6TVQYoBh/o603zszIb5Bl8MIXuOc6Vy617I74pirisDzzcNh0NEaYQt50fVVR3khUbeEhUEWEWipESg== dependencies: - "@algolia/autocomplete-core" "1.2.2" - "@algolia/autocomplete-preset-algolia" "1.2.2" - "@docsearch/css" "3.0.0-alpha.41" + "@algolia/autocomplete-core" "1.5.2" + "@algolia/autocomplete-preset-algolia" "1.5.2" + "@docsearch/css" "3.0.0" algoliasearch "^4.0.0" -"@docusaurus/core@2.0.0-beta.15", "@docusaurus/core@^2.0.0-beta.15": - version "2.0.0-beta.15" - resolved "https://registry.yarnpkg.com/@docusaurus/core/-/core-2.0.0-beta.15.tgz#1a3f8361803767072e56c77d60332c87e59f1ad0" - integrity sha512-zXhhD0fApMSvq/9Pkm9DQxa//hGOXVCq9yMHiXOkI5D1tLec7PxtnaC5cLfGHljkN9cKIfRDYUVcG1gHymVfpA== +"@docusaurus/core@2.0.0-beta.17", "@docusaurus/core@^2.0.0-beta.17": + version "2.0.0-beta.17" + resolved "https://registry.yarnpkg.com/@docusaurus/core/-/core-2.0.0-beta.17.tgz#f631aae04405de42a428a31928998242cd1d7b77" + integrity sha512-iNdW7CsmHNOgc4PxD9BFxa+MD8+i7ln7erOBkF3FSMMPnsKUeVqsR3rr31aLmLZRlTXMITSPLxlXwtBZa3KPCw== dependencies: - "@babel/core" "^7.16.0" - "@babel/generator" "^7.16.0" + "@babel/core" "^7.17.5" + "@babel/generator" "^7.17.3" "@babel/plugin-syntax-dynamic-import" "^7.8.3" - "@babel/plugin-transform-runtime" "^7.16.0" - "@babel/preset-env" "^7.16.4" - "@babel/preset-react" "^7.16.0" - "@babel/preset-typescript" "^7.16.0" - "@babel/runtime" "^7.16.3" - "@babel/runtime-corejs3" "^7.16.3" - "@babel/traverse" "^7.16.3" - "@docusaurus/cssnano-preset" "2.0.0-beta.15" - "@docusaurus/logger" "2.0.0-beta.15" - "@docusaurus/mdx-loader" "2.0.0-beta.15" + "@babel/plugin-transform-runtime" "^7.17.0" + "@babel/preset-env" "^7.16.11" + "@babel/preset-react" "^7.16.7" + "@babel/preset-typescript" "^7.16.7" + "@babel/runtime" "^7.17.2" + "@babel/runtime-corejs3" "^7.17.2" + "@babel/traverse" "^7.17.3" + "@docusaurus/cssnano-preset" "2.0.0-beta.17" + "@docusaurus/logger" "2.0.0-beta.17" + "@docusaurus/mdx-loader" "2.0.0-beta.17" "@docusaurus/react-loadable" "5.5.2" - "@docusaurus/utils" "2.0.0-beta.15" - "@docusaurus/utils-common" "2.0.0-beta.15" - "@docusaurus/utils-validation" "2.0.0-beta.15" - "@slorber/static-site-generator-webpack-plugin" "^4.0.0" - "@svgr/webpack" "^6.0.0" - autoprefixer "^10.3.5" - babel-loader "^8.2.2" + "@docusaurus/utils" "2.0.0-beta.17" + "@docusaurus/utils-common" "2.0.0-beta.17" + "@docusaurus/utils-validation" "2.0.0-beta.17" + "@slorber/static-site-generator-webpack-plugin" "^4.0.1" + "@svgr/webpack" "^6.2.1" + autoprefixer "^10.4.2" + babel-loader "^8.2.3" babel-plugin-dynamic-import-node "2.3.0" - boxen "^5.0.1" - chokidar "^3.5.2" - clean-css "^5.1.5" + boxen "^6.2.1" + chokidar "^3.5.3" + clean-css "^5.2.4" + cli-table3 "^0.6.1" + combine-promises "^1.1.0" commander "^5.1.0" - copy-webpack-plugin "^10.2.0" - core-js "^3.18.0" - css-loader "^6.5.1" - css-minimizer-webpack-plugin "^3.3.1" - cssnano "^5.0.8" + copy-webpack-plugin "^10.2.4" + core-js "^3.21.1" + css-loader "^6.6.0" + css-minimizer-webpack-plugin "^3.4.1" + cssnano "^5.0.17" del "^6.0.0" detect-port "^1.3.0" escape-html "^1.0.3" eta "^1.12.3" file-loader "^6.2.0" - fs-extra "^10.0.0" - html-minifier-terser "^6.0.2" + fs-extra "^10.0.1" + html-minifier-terser "^6.1.0" html-tags "^3.1.0" - html-webpack-plugin "^5.4.0" + html-webpack-plugin "^5.5.0" import-fresh "^3.3.0" is-root "^2.1.0" leven "^3.1.0" - lodash "^4.17.20" - mini-css-extract-plugin "^1.6.0" + lodash "^4.17.21" + mini-css-extract-plugin "^2.5.3" nprogress "^0.2.0" - postcss "^8.3.7" - postcss-loader "^6.1.1" - prompts "^2.4.1" + postcss "^8.4.7" + postcss-loader "^6.2.1" + prompts "^2.4.2" react-dev-utils "^12.0.0" - react-helmet "^6.1.0" + react-helmet-async "^1.2.3" react-loadable "npm:@docusaurus/react-loadable@5.5.2" react-loadable-ssr-addon-v5-slorber "^1.0.1" react-router "^5.2.0" @@ -2099,49 +2349,48 @@ rtl-detect "^1.0.4" semver "^7.3.4" serve-handler "^6.1.3" - shelljs "^0.8.4" - strip-ansi "^6.0.0" - terser-webpack-plugin "^5.2.4" + shelljs "^0.8.5" + terser-webpack-plugin "^5.3.1" tslib "^2.3.1" update-notifier "^5.1.0" url-loader "^4.1.1" - wait-on "^6.0.0" - webpack "^5.61.0" - webpack-bundle-analyzer "^4.4.2" - webpack-dev-server "^4.7.1" + wait-on "^6.0.1" + webpack "^5.69.1" + webpack-bundle-analyzer "^4.5.0" + webpack-dev-server "^4.7.4" webpack-merge "^5.8.0" webpackbar "^5.0.2" -"@docusaurus/cssnano-preset@2.0.0-beta.15": - version "2.0.0-beta.15" - resolved "https://registry.yarnpkg.com/@docusaurus/cssnano-preset/-/cssnano-preset-2.0.0-beta.15.tgz#033c52815c428f0f66c87eaff93ea12554ea89df" - integrity sha512-55aYURbB5dqrx64lStNcZxDx5R6bKkAawlCB7mDKx3r+Qnp3ofGW7UExLQSCbTu3axT1vJCF5D7H6ljTRYJLtA== +"@docusaurus/cssnano-preset@2.0.0-beta.17": + version "2.0.0-beta.17" + resolved "https://registry.yarnpkg.com/@docusaurus/cssnano-preset/-/cssnano-preset-2.0.0-beta.17.tgz#f687bc6e5c8cb2139a7830dec757cfcb92dbb681" + integrity sha512-DoBwtLjJ9IY9/lNMHIEdo90L4NDayvU28nLgtjR2Sc6aBIMEB/3a5Ndjehnp+jZAkwcDdNASA86EkZVUyz1O1A== dependencies: - cssnano-preset-advanced "^5.1.4" - postcss "^8.3.7" - postcss-sort-media-queries "^4.1.0" + cssnano-preset-advanced "^5.1.12" + postcss "^8.4.7" + postcss-sort-media-queries "^4.2.1" -"@docusaurus/logger@2.0.0-beta.15": - version "2.0.0-beta.15" - resolved "https://registry.yarnpkg.com/@docusaurus/logger/-/logger-2.0.0-beta.15.tgz#6d17a05fb292d15fdc43b5fa90fd2a49ad5d40ce" - integrity sha512-5bDSHCyLfMtz6QnFfICdL5mgxbGfC7DW1V+/Q17nRdpZSPZgsNKK/Esp0zdDi1oxAyEpXMXx64nLaHL7joJxIg== +"@docusaurus/logger@2.0.0-beta.17": + version "2.0.0-beta.17" + resolved "https://registry.yarnpkg.com/@docusaurus/logger/-/logger-2.0.0-beta.17.tgz#89c5ace3b4efd5274adb0d8919328892c4466d02" + integrity sha512-F9JDl06/VLg+ylsvnq9NpILSUeWtl0j4H2LtlLzX5gufEL4dGiCMlnUzYdHl7FSHSzYJ0A/R7vu0SYofsexC4w== dependencies: chalk "^4.1.2" tslib "^2.3.1" -"@docusaurus/mdx-loader@2.0.0-beta.15": - version "2.0.0-beta.15" - resolved "https://registry.yarnpkg.com/@docusaurus/mdx-loader/-/mdx-loader-2.0.0-beta.15.tgz#da23745bc73c93338dd330dad6bbc9d9fe325553" - integrity sha512-MVpytjDDao7hmPF1QSs9B5zoTgevZjiqjnX3FM1yjqdCv+chyUo0gnmYHjeG/4Gqu7jucp+dDdp6yQpzs4g09A== +"@docusaurus/mdx-loader@2.0.0-beta.17": + version "2.0.0-beta.17" + resolved "https://registry.yarnpkg.com/@docusaurus/mdx-loader/-/mdx-loader-2.0.0-beta.17.tgz#838f87f4cbf12701c4d8eb11e4f9698fb7155bf8" + integrity sha512-AhJ3GWRmjQYCyINHE595pff5tn3Rt83oGpdev5UT9uvG9lPYPC8nEmh1LI6c0ogfw7YkNznzxWSW4hyyVbYQ3A== dependencies: - "@babel/parser" "^7.16.4" - "@babel/traverse" "^7.16.3" - "@docusaurus/logger" "2.0.0-beta.15" - "@docusaurus/utils" "2.0.0-beta.15" - "@mdx-js/mdx" "^1.6.21" + "@babel/parser" "^7.17.3" + "@babel/traverse" "^7.17.3" + "@docusaurus/logger" "2.0.0-beta.17" + "@docusaurus/utils" "2.0.0-beta.17" + "@mdx-js/mdx" "^1.6.22" escape-html "^1.0.3" file-loader "^6.2.0" - fs-extra "^10.0.0" + fs-extra "^10.0.1" image-size "^1.0.1" mdast-util-to-string "^2.0.0" remark-emoji "^2.1.0" @@ -2149,149 +2398,147 @@ tslib "^2.3.1" unist-util-visit "^2.0.2" url-loader "^4.1.1" - webpack "^5.61.0" + webpack "^5.69.1" -"@docusaurus/module-type-aliases@^2.0.0-beta.15": - version "2.0.0-beta.15" - resolved "https://registry.yarnpkg.com/@docusaurus/module-type-aliases/-/module-type-aliases-2.0.0-beta.15.tgz#6878fd073ac735388a00419a0af3170ba7e72318" - integrity sha512-RqAjt2Z9n4ttqVDbgdnzIPXoNzAsUPJzf8EKPeKw8KRiMToBBHkPgmWuwvLFcO7/ZA5w1/ODLMncx9j/ZcM1CQ== +"@docusaurus/module-type-aliases@2.0.0-beta.17", "@docusaurus/module-type-aliases@^2.0.0-beta.17": + version "2.0.0-beta.17" + resolved "https://registry.yarnpkg.com/@docusaurus/module-type-aliases/-/module-type-aliases-2.0.0-beta.17.tgz#73f6d34be202ac093e78769ff72613d353087cd7" + integrity sha512-Tu+8geC/wyygBudbSwvWIHEvt5RwyA7dEoE1JmPbgQtmqUxOZ9bgnfemwXpJW5mKuDiJASbN4of1DhbLqf4sPg== dependencies: - "@docusaurus/types" "2.0.0-beta.15" + "@docusaurus/types" "2.0.0-beta.17" "@types/react" "*" - "@types/react-helmet" "*" "@types/react-router-config" "*" "@types/react-router-dom" "*" - -"@docusaurus/plugin-client-redirects@^2.0.0-beta.15": - version "2.0.0-beta.15" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-client-redirects/-/plugin-client-redirects-2.0.0-beta.15.tgz#ccee67923e7e80ef76a995d7b495a42a1449ae2c" - integrity sha512-FcH1y+a+Bmc5x50kZn5RvLr2a6iPiGnRK4iUP7G1eNozJC+8+93OwyZYSCdEOf2LyoVOtEq06xlfORFP2mfQDQ== - dependencies: - "@docusaurus/core" "2.0.0-beta.15" - "@docusaurus/logger" "2.0.0-beta.15" - "@docusaurus/utils" "2.0.0-beta.15" - "@docusaurus/utils-common" "2.0.0-beta.15" - "@docusaurus/utils-validation" "2.0.0-beta.15" + react-helmet-async "*" + +"@docusaurus/plugin-client-redirects@^2.0.0-beta.17": + version "2.0.0-beta.17" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-client-redirects/-/plugin-client-redirects-2.0.0-beta.17.tgz#82691c22b9e7cf69ea1f5204a1f599dd7faeedd2" + integrity sha512-PfITCVgENyB0j1ErwSOQ3d1dvxbBEcZxiJrlu41v5Q6GiZWWJ4wSJRpOzqZiVUotfhnBn4NmpgVfGnmGkGPK4A== + dependencies: + "@docusaurus/core" "2.0.0-beta.17" + "@docusaurus/logger" "2.0.0-beta.17" + "@docusaurus/utils" "2.0.0-beta.17" + "@docusaurus/utils-common" "2.0.0-beta.17" + "@docusaurus/utils-validation" "2.0.0-beta.17" eta "^1.12.3" - fs-extra "^10.0.0" - lodash "^4.17.20" + fs-extra "^10.0.1" + lodash "^4.17.21" tslib "^2.3.1" -"@docusaurus/plugin-content-blog@2.0.0-beta.15": - version "2.0.0-beta.15" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-blog/-/plugin-content-blog-2.0.0-beta.15.tgz#6d4bf532ad3dedb4f9fd6398b0fbe481af5b77a9" - integrity sha512-VtEwkgkoNIS8JFPe+huBeBuJ8HG8Lq1JNYM/ItwQg/cwGAgP8EgwbEuKDn428oZKEI2PpgAuf5Gv4AzJWIes9A== - dependencies: - "@docusaurus/core" "2.0.0-beta.15" - "@docusaurus/logger" "2.0.0-beta.15" - "@docusaurus/mdx-loader" "2.0.0-beta.15" - "@docusaurus/utils" "2.0.0-beta.15" - "@docusaurus/utils-common" "2.0.0-beta.15" - "@docusaurus/utils-validation" "2.0.0-beta.15" +"@docusaurus/plugin-content-blog@2.0.0-beta.17": + version "2.0.0-beta.17" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-blog/-/plugin-content-blog-2.0.0-beta.17.tgz#1d1063bfda78a80d517694567b965d5c3a70479f" + integrity sha512-gcX4UR+WKT4bhF8FICBQHy+ESS9iRMeaglSboTZbA/YHGax/3EuZtcPU3dU4E/HFJeZ866wgUdbLKpIpsZOidg== + dependencies: + "@docusaurus/core" "2.0.0-beta.17" + "@docusaurus/logger" "2.0.0-beta.17" + "@docusaurus/mdx-loader" "2.0.0-beta.17" + "@docusaurus/utils" "2.0.0-beta.17" + "@docusaurus/utils-common" "2.0.0-beta.17" + "@docusaurus/utils-validation" "2.0.0-beta.17" cheerio "^1.0.0-rc.10" feed "^4.2.2" - fs-extra "^10.0.0" - lodash "^4.17.20" + fs-extra "^10.0.1" + lodash "^4.17.21" reading-time "^1.5.0" remark-admonitions "^1.2.1" tslib "^2.3.1" utility-types "^3.10.0" - webpack "^5.61.0" - -"@docusaurus/plugin-content-docs@2.0.0-beta.15": - version "2.0.0-beta.15" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-docs/-/plugin-content-docs-2.0.0-beta.15.tgz#9486bba8abd2a6284e749718bf56743d8e4446f1" - integrity sha512-HSwNZdUKz4rpJiGbFjl/OFhSleeZUSZ6E6lk98i4iL1A5u6fIm4CHsT53yp4UUOse+lFrePTFZsyqwMA4nZZYA== - dependencies: - "@docusaurus/core" "2.0.0-beta.15" - "@docusaurus/logger" "2.0.0-beta.15" - "@docusaurus/mdx-loader" "2.0.0-beta.15" - "@docusaurus/utils" "2.0.0-beta.15" - "@docusaurus/utils-validation" "2.0.0-beta.15" + webpack "^5.69.1" + +"@docusaurus/plugin-content-docs@2.0.0-beta.17": + version "2.0.0-beta.17" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-docs/-/plugin-content-docs-2.0.0-beta.17.tgz#97f13bb458e165224db6867836e8e9637ea15921" + integrity sha512-YYrBpuRfTfE6NtENrpSHTJ7K7PZifn6j6hcuvdC0QKE+WD8pS+O2/Ws30yoyvHwLnAnfhvaderh1v9Kaa0/ANg== + dependencies: + "@docusaurus/core" "2.0.0-beta.17" + "@docusaurus/logger" "2.0.0-beta.17" + "@docusaurus/mdx-loader" "2.0.0-beta.17" + "@docusaurus/utils" "2.0.0-beta.17" + "@docusaurus/utils-validation" "2.0.0-beta.17" combine-promises "^1.1.0" - fs-extra "^10.0.0" - import-fresh "^3.2.2" - js-yaml "^4.0.0" - lodash "^4.17.20" + fs-extra "^10.0.1" + import-fresh "^3.3.0" + js-yaml "^4.1.0" + lodash "^4.17.21" remark-admonitions "^1.2.1" - shelljs "^0.8.4" tslib "^2.3.1" utility-types "^3.10.0" - webpack "^5.61.0" - -"@docusaurus/plugin-content-pages@2.0.0-beta.15": - version "2.0.0-beta.15" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-pages/-/plugin-content-pages-2.0.0-beta.15.tgz#e488f7dcdd45cd1d46e8c2c5ff5275327a6a3c65" - integrity sha512-N7YhW5RiOY6J228z4lOoP//qX0Q48cRtxDONZ/Ohd9C5OI2vS6TD8iQuDqOIYHxH+BshjNSsKvbJ+SMIQDwysg== - dependencies: - "@docusaurus/core" "2.0.0-beta.15" - "@docusaurus/mdx-loader" "2.0.0-beta.15" - "@docusaurus/utils" "2.0.0-beta.15" - "@docusaurus/utils-validation" "2.0.0-beta.15" - fs-extra "^10.0.0" - globby "^11.0.2" + webpack "^5.69.1" + +"@docusaurus/plugin-content-pages@2.0.0-beta.17": + version "2.0.0-beta.17" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-pages/-/plugin-content-pages-2.0.0-beta.17.tgz#d5955d3cc23722518a6032f830cf8c7b7aeb3d5a" + integrity sha512-d5x0mXTMJ44ojRQccmLyshYoamFOep2AnBe69osCDnwWMbD3Or3pnc2KMK9N7mVpQFnNFKbHNCLrX3Rv0uwEHA== + dependencies: + "@docusaurus/core" "2.0.0-beta.17" + "@docusaurus/mdx-loader" "2.0.0-beta.17" + "@docusaurus/utils" "2.0.0-beta.17" + "@docusaurus/utils-validation" "2.0.0-beta.17" + fs-extra "^10.0.1" remark-admonitions "^1.2.1" tslib "^2.3.1" - webpack "^5.61.0" + webpack "^5.69.1" -"@docusaurus/plugin-debug@2.0.0-beta.15": - version "2.0.0-beta.15" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-debug/-/plugin-debug-2.0.0-beta.15.tgz#b75d706d4f9fc4146f84015097bd837d1afb7c6b" - integrity sha512-Jth11jB/rVqPwCGdkVKSUWeXZPAr/NyPn+yeknTBk2LgQKBJ3YU5dNG0uyt0Ay+UYT01TkousPJkXhLuy4Qrsw== +"@docusaurus/plugin-debug@2.0.0-beta.17": + version "2.0.0-beta.17" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-debug/-/plugin-debug-2.0.0-beta.17.tgz#0185dfd5575aa940443d2cb9fab4bed3308ed3a1" + integrity sha512-p26fjYFRSC0esEmKo/kRrLVwXoFnzPCFDumwrImhPyqfVxbj+IKFaiXkayb2qHnyEGE/1KSDIgRF4CHt/pyhiw== dependencies: - "@docusaurus/core" "2.0.0-beta.15" - "@docusaurus/utils" "2.0.0-beta.15" - fs-extra "^10.0.0" + "@docusaurus/core" "2.0.0-beta.17" + "@docusaurus/utils" "2.0.0-beta.17" + fs-extra "^10.0.1" react-json-view "^1.21.3" tslib "^2.3.1" -"@docusaurus/plugin-google-analytics@2.0.0-beta.15": - version "2.0.0-beta.15" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-2.0.0-beta.15.tgz#6ffebe76d9caac5383cfb78d2baa5883c9c2df6c" - integrity sha512-ELAnxNYiC2i7gfu/ViurNIdm1/DdnbEfVDmpffS9niQhOREM1U3jpxkz/ff1GIC6heOLyHTtini/CZBDoroVGw== +"@docusaurus/plugin-google-analytics@2.0.0-beta.17": + version "2.0.0-beta.17" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-2.0.0-beta.17.tgz#31ca1ef88f0f7874c6e12c642d64abe694494720" + integrity sha512-jvgYIhggYD1W2jymqQVAAyjPJUV1xMCn70bAzaCMxriureMWzhQ/kQMVQpop0ijTMvifOxaV9yTcL1VRXev++A== dependencies: - "@docusaurus/core" "2.0.0-beta.15" - "@docusaurus/utils-validation" "2.0.0-beta.15" + "@docusaurus/core" "2.0.0-beta.17" + "@docusaurus/utils-validation" "2.0.0-beta.17" tslib "^2.3.1" -"@docusaurus/plugin-google-gtag@2.0.0-beta.15": - version "2.0.0-beta.15" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-2.0.0-beta.15.tgz#4db3330d302653e8541dc3cb86a4dbfef0cc96f8" - integrity sha512-E5Rm3+dN7i3A9V5uq5sl9xTNA3aXsLwTZEA2SpOkY571dCpd+sfVvz1lR+KRY9Fy6ZHk8PqrNImgCWfIerRuZQ== +"@docusaurus/plugin-google-gtag@2.0.0-beta.17": + version "2.0.0-beta.17" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-2.0.0-beta.17.tgz#e6baf8f03cea756ed2259a5356fa689388bc303d" + integrity sha512-1pnWHtIk1Jfeqwvr8PlcPE5SODWT1gW4TI+ptmJbJ296FjjyvL/pG0AcGEJmYLY/OQc3oz0VQ0W2ognw9jmFIw== dependencies: - "@docusaurus/core" "2.0.0-beta.15" - "@docusaurus/utils-validation" "2.0.0-beta.15" + "@docusaurus/core" "2.0.0-beta.17" + "@docusaurus/utils-validation" "2.0.0-beta.17" tslib "^2.3.1" -"@docusaurus/plugin-sitemap@2.0.0-beta.15": - version "2.0.0-beta.15" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-sitemap/-/plugin-sitemap-2.0.0-beta.15.tgz#0cc083d9e76041897e81b4b82bcd0ccbfa65d6e5" - integrity sha512-PBjeQb2Qpe4uPdRefWL/eXCeYjrgNB/UArExYeUuP4wiY1dpw2unGNCvFUxv4hzJGmARoTLsnRkeYkUim809LQ== - dependencies: - "@docusaurus/core" "2.0.0-beta.15" - "@docusaurus/utils" "2.0.0-beta.15" - "@docusaurus/utils-common" "2.0.0-beta.15" - "@docusaurus/utils-validation" "2.0.0-beta.15" - fs-extra "^10.0.0" - sitemap "^7.0.0" +"@docusaurus/plugin-sitemap@2.0.0-beta.17": + version "2.0.0-beta.17" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-sitemap/-/plugin-sitemap-2.0.0-beta.17.tgz#e1aa67ff09d9145e8e5522c4541bbcdd6365560c" + integrity sha512-19/PaGCsap6cjUPZPGs87yV9e1hAIyd0CTSeVV6Caega8nmOKk20FTrQGFJjZPeX8jvD9QIXcdg6BJnPxcKkaQ== + dependencies: + "@docusaurus/core" "2.0.0-beta.17" + "@docusaurus/utils" "2.0.0-beta.17" + "@docusaurus/utils-common" "2.0.0-beta.17" + "@docusaurus/utils-validation" "2.0.0-beta.17" + fs-extra "^10.0.1" + sitemap "^7.1.1" tslib "^2.3.1" -"@docusaurus/preset-classic@^2.0.0-beta.15": - version "2.0.0-beta.15" - resolved "https://registry.yarnpkg.com/@docusaurus/preset-classic/-/preset-classic-2.0.0-beta.15.tgz#13d2f3c4fa7c055af35541ae5e93453450efb208" - integrity sha512-3NZIXWTAzk+kOgiB8uAbD+FZv3VFR1qkU6+TW24DRenjRnXof3CkRuldhI1QI0hILm1fuJ319QRkakV8FFtXyA== - dependencies: - "@docusaurus/core" "2.0.0-beta.15" - "@docusaurus/plugin-content-blog" "2.0.0-beta.15" - "@docusaurus/plugin-content-docs" "2.0.0-beta.15" - "@docusaurus/plugin-content-pages" "2.0.0-beta.15" - "@docusaurus/plugin-debug" "2.0.0-beta.15" - "@docusaurus/plugin-google-analytics" "2.0.0-beta.15" - "@docusaurus/plugin-google-gtag" "2.0.0-beta.15" - "@docusaurus/plugin-sitemap" "2.0.0-beta.15" - "@docusaurus/theme-classic" "2.0.0-beta.15" - "@docusaurus/theme-common" "2.0.0-beta.15" - "@docusaurus/theme-search-algolia" "2.0.0-beta.15" +"@docusaurus/preset-classic@^2.0.0-beta.17": + version "2.0.0-beta.17" + resolved "https://registry.yarnpkg.com/@docusaurus/preset-classic/-/preset-classic-2.0.0-beta.17.tgz#a8fc3447aa6fe0e5f259d894cc8dd64c049c7605" + integrity sha512-7YUxPEgM09aZWr25/hpDEp1gPl+1KsCPV1ZTRW43sbQ9TinPm+9AKR3rHVDa8ea8MdiS7BpqCVyK+H/eiyQrUw== + dependencies: + "@docusaurus/core" "2.0.0-beta.17" + "@docusaurus/plugin-content-blog" "2.0.0-beta.17" + "@docusaurus/plugin-content-docs" "2.0.0-beta.17" + "@docusaurus/plugin-content-pages" "2.0.0-beta.17" + "@docusaurus/plugin-debug" "2.0.0-beta.17" + "@docusaurus/plugin-google-analytics" "2.0.0-beta.17" + "@docusaurus/plugin-google-gtag" "2.0.0-beta.17" + "@docusaurus/plugin-sitemap" "2.0.0-beta.17" + "@docusaurus/theme-classic" "2.0.0-beta.17" + "@docusaurus/theme-common" "2.0.0-beta.17" + "@docusaurus/theme-search-algolia" "2.0.0-beta.17" "@docusaurus/react-loadable@5.5.2", "react-loadable@npm:@docusaurus/react-loadable@5.5.2": version "5.5.2" @@ -2301,122 +2548,124 @@ "@types/react" "*" prop-types "^15.6.2" -"@docusaurus/theme-classic@2.0.0-beta.15": - version "2.0.0-beta.15" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-classic/-/theme-classic-2.0.0-beta.15.tgz#35d04232f2d5fcb2007675339b0e6d0e8681be95" - integrity sha512-WwNRcQvMtQ7KDhOEHFKFHxXCdoZwLg66hT3vhqNIFMfGQuPzOP91MX5LUSo1QWHhlrD3H3Og+r7Ik/fy2bf5lQ== - dependencies: - "@docusaurus/core" "2.0.0-beta.15" - "@docusaurus/plugin-content-blog" "2.0.0-beta.15" - "@docusaurus/plugin-content-docs" "2.0.0-beta.15" - "@docusaurus/plugin-content-pages" "2.0.0-beta.15" - "@docusaurus/theme-common" "2.0.0-beta.15" - "@docusaurus/theme-translations" "2.0.0-beta.15" - "@docusaurus/utils" "2.0.0-beta.15" - "@docusaurus/utils-common" "2.0.0-beta.15" - "@docusaurus/utils-validation" "2.0.0-beta.15" - "@mdx-js/react" "^1.6.21" +"@docusaurus/theme-classic@2.0.0-beta.17": + version "2.0.0-beta.17" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-classic/-/theme-classic-2.0.0-beta.17.tgz#1f7a1dd714993819f266ce422d06dd4533d4ab3a" + integrity sha512-xfZ9kpgqo0lP9YO4rJj79wtiQJXU6ARo5wYy10IIwiWN+lg00scJHhkmNV431b05xIUjUr0cKeH9nqZmEsQRKg== + dependencies: + "@docusaurus/core" "2.0.0-beta.17" + "@docusaurus/plugin-content-blog" "2.0.0-beta.17" + "@docusaurus/plugin-content-docs" "2.0.0-beta.17" + "@docusaurus/plugin-content-pages" "2.0.0-beta.17" + "@docusaurus/theme-common" "2.0.0-beta.17" + "@docusaurus/theme-translations" "2.0.0-beta.17" + "@docusaurus/utils" "2.0.0-beta.17" + "@docusaurus/utils-common" "2.0.0-beta.17" + "@docusaurus/utils-validation" "2.0.0-beta.17" + "@mdx-js/react" "^1.6.22" clsx "^1.1.1" copy-text-to-clipboard "^3.0.1" infima "0.2.0-alpha.37" - lodash "^4.17.20" - postcss "^8.3.7" + lodash "^4.17.21" + postcss "^8.4.7" prism-react-renderer "^1.2.1" - prismjs "^1.23.0" + prismjs "^1.27.0" react-router-dom "^5.2.0" rtlcss "^3.3.0" -"@docusaurus/theme-common@2.0.0-beta.15": - version "2.0.0-beta.15" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-common/-/theme-common-2.0.0-beta.15.tgz#5bd338d483e2c19d6d74d133572988241518398a" - integrity sha512-+pvarmzcyECE4nWxw+dCMKRIoes0NegrRuM9+nRsUrS/E5ywsF539kpupKIEqaMjq6AuM0CJtDoHxHHPNe0KaQ== +"@docusaurus/theme-common@2.0.0-beta.17": + version "2.0.0-beta.17" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-common/-/theme-common-2.0.0-beta.17.tgz#3b71bb8b0973a0cee969a1bb76794c81d597f290" + integrity sha512-LJBDhx+Qexn1JHBqZbE4k+7lBaV1LgpE33enXf43ShB7ebhC91d5HLHhBwgt0pih4+elZU4rG+BG/roAmsNM0g== dependencies: - "@docusaurus/plugin-content-blog" "2.0.0-beta.15" - "@docusaurus/plugin-content-docs" "2.0.0-beta.15" - "@docusaurus/plugin-content-pages" "2.0.0-beta.15" + "@docusaurus/module-type-aliases" "2.0.0-beta.17" + "@docusaurus/plugin-content-blog" "2.0.0-beta.17" + "@docusaurus/plugin-content-docs" "2.0.0-beta.17" + "@docusaurus/plugin-content-pages" "2.0.0-beta.17" clsx "^1.1.1" parse-numeric-range "^1.3.0" + prism-react-renderer "^1.3.1" tslib "^2.3.1" utility-types "^3.10.0" -"@docusaurus/theme-search-algolia@2.0.0-beta.15": - version "2.0.0-beta.15" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-search-algolia/-/theme-search-algolia-2.0.0-beta.15.tgz#c3ad7fd8e27fcb3e072990031c08768c602cb9a4" - integrity sha512-XrrQKyjOPzmEuOcdsaAn1tzNJkNMA3PC86PwPZUaah0cYPpBGptcJYDlIW4VHIrCBfkQvhvmg/B3qKF6bMMi8g== - dependencies: - "@docsearch/react" "^3.0.0-alpha.39" - "@docusaurus/core" "2.0.0-beta.15" - "@docusaurus/logger" "2.0.0-beta.15" - "@docusaurus/theme-common" "2.0.0-beta.15" - "@docusaurus/theme-translations" "2.0.0-beta.15" - "@docusaurus/utils" "2.0.0-beta.15" - "@docusaurus/utils-validation" "2.0.0-beta.15" - algoliasearch "^4.10.5" - algoliasearch-helper "^3.5.5" +"@docusaurus/theme-search-algolia@2.0.0-beta.17": + version "2.0.0-beta.17" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-search-algolia/-/theme-search-algolia-2.0.0-beta.17.tgz#880fb965b71e5aa7f01d456a1a2aa8eb6c244082" + integrity sha512-W12XKM7QC5Jmrec359bJ7aDp5U8DNkCxjVKsMNIs8rDunBoI/N+R35ERJ0N7Bg9ONAWO6o7VkUERQsfGqdvr9w== + dependencies: + "@docsearch/react" "^3.0.0" + "@docusaurus/core" "2.0.0-beta.17" + "@docusaurus/logger" "2.0.0-beta.17" + "@docusaurus/theme-common" "2.0.0-beta.17" + "@docusaurus/theme-translations" "2.0.0-beta.17" + "@docusaurus/utils" "2.0.0-beta.17" + "@docusaurus/utils-validation" "2.0.0-beta.17" + algoliasearch "^4.12.1" + algoliasearch-helper "^3.7.0" clsx "^1.1.1" eta "^1.12.3" - lodash "^4.17.20" + fs-extra "^10.0.1" + lodash "^4.17.21" tslib "^2.3.1" utility-types "^3.10.0" -"@docusaurus/theme-translations@2.0.0-beta.15": - version "2.0.0-beta.15" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-translations/-/theme-translations-2.0.0-beta.15.tgz#658397ab4c0d7784043e3cec52cef7ae09d2fb59" - integrity sha512-Lu2JDsnZaB2BcJe8Hpq5nrbS7+7bd09jT08b9vztQyvzR8PgzsthnzlLN4ilOeamRIuYJKo1pUGm0EsQBOP6Nw== +"@docusaurus/theme-translations@2.0.0-beta.17": + version "2.0.0-beta.17" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-translations/-/theme-translations-2.0.0-beta.17.tgz#a4b84fa63befc11847da471922387aa3eb4e5626" + integrity sha512-oxCX6khjZH3lgdRCL0DH06KkUM/kDr9+lzB35+vY8rpFeQruVgRdi8ekPqG3+Wr0U/N+LMhcYE5BmCb6D0Fv2A== dependencies: - fs-extra "^10.0.0" + fs-extra "^10.0.1" tslib "^2.3.1" -"@docusaurus/types@2.0.0-beta.15": - version "2.0.0-beta.15" - resolved "https://registry.yarnpkg.com/@docusaurus/types/-/types-2.0.0-beta.15.tgz#2f7b25a3686f46440204e7ad5490582a39878177" - integrity sha512-djeZe5aDyI4lgfdLkI86pLnliFJRB1CVkcP3iA+PqXaJ3Cp4piPeBX5tZtE+0vJt2JwNATZpkzzkKbFDq5MinQ== +"@docusaurus/types@2.0.0-beta.17": + version "2.0.0-beta.17" + resolved "https://registry.yarnpkg.com/@docusaurus/types/-/types-2.0.0-beta.17.tgz#582e3d961ce4409ed17454669b3f6a7a9f696cdd" + integrity sha512-4o7TXu5sKlQpybfFFtsGUElBXwSpiXKsQyyWaRKj7DRBkvMtkDX6ITZNnZO9+EHfLbP/cfrokB8C/oO7mCQ5BQ== dependencies: commander "^5.1.0" - joi "^17.4.2" + joi "^17.6.0" querystring "0.2.1" utility-types "^3.10.0" - webpack "^5.61.0" + webpack "^5.69.1" webpack-merge "^5.8.0" -"@docusaurus/utils-common@2.0.0-beta.15": - version "2.0.0-beta.15" - resolved "https://registry.yarnpkg.com/@docusaurus/utils-common/-/utils-common-2.0.0-beta.15.tgz#5549b329fc750bd5e9f24952c9e3ff7cf1f63e08" - integrity sha512-kIGlSIvbE/oniUpUjI8GOkSpH8o4NXbYqAh9dqPn+TJ0KbEFY3fc80gzZQU+9SunCwJMJbIxIGevX9Ry+nackw== +"@docusaurus/utils-common@2.0.0-beta.17": + version "2.0.0-beta.17" + resolved "https://registry.yarnpkg.com/@docusaurus/utils-common/-/utils-common-2.0.0-beta.17.tgz#cefd950a7722f5f702690b4de27ea19fd65f3364" + integrity sha512-90WCVdj6zYzs7neEIS594qfLO78cUL6EVK1CsRHJgVkkGjcYlCQ1NwkyO7bOb+nIAwdJrPJRc2FBSpuEGxPD3w== dependencies: tslib "^2.3.1" -"@docusaurus/utils-validation@2.0.0-beta.15": - version "2.0.0-beta.15" - resolved "https://registry.yarnpkg.com/@docusaurus/utils-validation/-/utils-validation-2.0.0-beta.15.tgz#c664bc021194db9254eb45e6b48cb7c2af269041" - integrity sha512-1oOVBCkRrsTXSYrBTsMdnj3a/R56zrx11rjF4xo0+dmm8C01Xw4msFtc3uA7VLX0HQvgHsk8xPzU5GERNdsNpg== +"@docusaurus/utils-validation@2.0.0-beta.17": + version "2.0.0-beta.17" + resolved "https://registry.yarnpkg.com/@docusaurus/utils-validation/-/utils-validation-2.0.0-beta.17.tgz#d7dbfc1a29768c37c0d8a6af85eb1bdfef7656df" + integrity sha512-5UjayUP16fDjgd52eSEhL7SlN9x60pIhyS+K7kt7RmpSLy42+4/bSr2pns2VlATmuaoNOO6iIFdB2jgSYJ6SGA== dependencies: - "@docusaurus/logger" "2.0.0-beta.15" - "@docusaurus/utils" "2.0.0-beta.15" - joi "^17.4.2" + "@docusaurus/logger" "2.0.0-beta.17" + "@docusaurus/utils" "2.0.0-beta.17" + joi "^17.6.0" tslib "^2.3.1" -"@docusaurus/utils@2.0.0-beta.15": - version "2.0.0-beta.15" - resolved "https://registry.yarnpkg.com/@docusaurus/utils/-/utils-2.0.0-beta.15.tgz#60868046700d5585cfa6ffc57c5f3fbed00b61fc" - integrity sha512-xkoPmFxCBkDqbZR4U3SE752OcXtWTGgZnc/pZWxItzb1IYRGNZHrzdIr7CnI7rppriuZzsyivDGiC4Ud9MWhkA== +"@docusaurus/utils@2.0.0-beta.17": + version "2.0.0-beta.17" + resolved "https://registry.yarnpkg.com/@docusaurus/utils/-/utils-2.0.0-beta.17.tgz#6a696e2ec5e50b2271f2d26d31562e9f3e2bc559" + integrity sha512-yRKGdzSc5v6M/6GyQ4omkrAHCleevwKYiIrufCJgRbOtkhYE574d8mIjjirOuA/emcyLxjh+TLtqAA5TwhIryA== dependencies: - "@docusaurus/logger" "2.0.0-beta.15" - "@mdx-js/runtime" "^1.6.22" + "@docusaurus/logger" "2.0.0-beta.17" "@svgr/webpack" "^6.0.0" file-loader "^6.2.0" - fs-extra "^10.0.0" + fs-extra "^10.0.1" github-slugger "^1.4.0" globby "^11.0.4" gray-matter "^4.0.3" - js-yaml "^4.0.0" - lodash "^4.17.20" + js-yaml "^4.1.0" + lodash "^4.17.21" micromatch "^4.0.4" - remark-mdx-remove-exports "^1.6.22" - remark-mdx-remove-imports "^1.6.22" resolve-pathname "^3.0.0" + shelljs "^0.8.5" tslib "^2.3.1" url-loader "^4.1.1" + webpack "^5.69.1" "@emotion/cache@^10.0.27": version "10.0.29" @@ -2428,7 +2677,7 @@ "@emotion/utils" "0.11.3" "@emotion/weak-memoize" "0.2.5" -"@emotion/core@^10.0.0", "@emotion/core@^10.0.28", "@emotion/core@^10.1.1": +"@emotion/core@^10.0.28", "@emotion/core@^10.1.1": version "10.3.1" resolved "https://registry.yarnpkg.com/@emotion/core/-/core-10.3.1.tgz#4021b6d8b33b3304d48b0bb478485e7d7421c69d" integrity sha512-447aUEjPIm0MnE6QYIaFz9VQOHSXf4Iu6EWOIqq11EAPqinkSZmfymPTmlOE3QjLv846lH4JVZBUOtwGbuQoww== @@ -2454,7 +2703,7 @@ resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.8.0.tgz#bbbff68978fefdbe68ccb533bc8cbe1d1afb5413" integrity sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow== -"@emotion/is-prop-valid@0.8.8", "@emotion/is-prop-valid@^0.8.1": +"@emotion/is-prop-valid@0.8.8": version "0.8.8" resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz#db28b1c4368a259b60a97311d6a952d4fd01ac1a" integrity sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA== @@ -2466,11 +2715,6 @@ resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.7.4.tgz#19bf0f5af19149111c40d98bb0cf82119f5d9eeb" integrity sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw== -"@emotion/memoize@^0.7.1": - version "0.7.5" - resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.7.5.tgz#2c40f81449a4e554e9fc6396910ed4843ec2be50" - integrity sha512-igX9a37DR2ZPGYtV6suZ6whr8pTFtyHL3K/oLUotxpSVO2ASaprmAe2Dkq7tBo7CRY7MMDrAa9nuQP9/YG8FxQ== - "@emotion/serialize@^0.11.15", "@emotion/serialize@^0.11.16": version "0.11.16" resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-0.11.16.tgz#dee05f9e96ad2fb25a5206b6d759b2d1ed3379ad" @@ -2497,7 +2741,7 @@ "@emotion/serialize" "^0.11.15" "@emotion/utils" "0.11.3" -"@emotion/styled@^10.0.0", "@emotion/styled@^10.0.27": +"@emotion/styled@^10.0.27": version "10.3.0" resolved "https://registry.yarnpkg.com/@emotion/styled/-/styled-10.3.0.tgz#8ee959bf75730789abb5f67f7c3ded0c30aec876" integrity sha512-GgcUpXBBEU5ido+/p/mCT2/Xx+Oqmp9JzQRuC+a4lYM4i4LBBn/dWvc0rQ19N9ObA8/T4NWMrPNe79kMBDJqoQ== @@ -2537,9 +2781,27 @@ dependencies: "@hapi/hoek" "^9.0.0" -"@mdx-js/mdx@1.6.22", "@mdx-js/mdx@^1.6.21": +"@jridgewell/resolve-uri@^3.0.3": + version "3.0.5" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz#68eb521368db76d040a6315cdb24bf2483037b9c" + integrity sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew== + +"@jridgewell/sourcemap-codec@^1.4.10": + version "1.4.11" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz#771a1d8d744eeb71b6adb35808e1a6c7b9b8c8ec" + integrity sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg== + +"@jridgewell/trace-mapping@^0.3.0": + version "0.3.4" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz#f6a0832dffd5b8a6aaa633b7d9f8e8e94c83a0c3" + integrity sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@mdx-js/mdx@^1.6.22": version "1.6.22" - resolved "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-1.6.22.tgz" + resolved "https://registry.yarnpkg.com/@mdx-js/mdx/-/mdx-1.6.22.tgz#8a723157bf90e78f17dc0f27995398e6c731f1ba" integrity sha512-AMxuLxPz2j5/6TpF/XSdKpQP1NlG0z11dFOlq+2IP/lSgl11GY8ji6S/rgsViN/L0BDvHvUMruRb7ub+24LUYA== dependencies: "@babel/core" "7.12.9" @@ -2562,20 +2824,11 @@ unist-builder "2.0.3" unist-util-visit "2.0.3" -"@mdx-js/react@1.6.22", "@mdx-js/react@^1.0.0", "@mdx-js/react@^1.6.21": +"@mdx-js/react@^1.6.22": version "1.6.22" resolved "https://registry.npmjs.org/@mdx-js/react/-/react-1.6.22.tgz" integrity sha512-TDoPum4SHdfPiGSAaRBw7ECyI8VaHpK8GJugbJIJuqyh6kzw9ZLJZW3HGL3NNrJGxcAixUvqROm+YuQOo5eXtg== -"@mdx-js/runtime@^1.6.22": - version "1.6.22" - resolved "https://registry.npmjs.org/@mdx-js/runtime/-/runtime-1.6.22.tgz" - integrity sha512-p17spaO2+55VLCuxXA3LVHC4phRx60NR2XMdZ+qgVU1lKvEX4y88dmFNOzGDCPLJ03IZyKrJ/rPWWRiBrd9JrQ== - dependencies: - "@mdx-js/mdx" "1.6.22" - "@mdx-js/react" "1.6.22" - buble-jsx-only "^0.19.8" - "@mdx-js/util@1.6.22": version "1.6.22" resolved "https://registry.npmjs.org/@mdx-js/util/-/util-1.6.22.tgz" @@ -2612,10 +2865,10 @@ resolved "https://registry.yarnpkg.com/@saucelabs/theme-github-codeblock/-/theme-github-codeblock-0.1.1.tgz#d2caa3fbf56c38ae2fe974871f1188226bb57d92" integrity sha512-iHzODYjcUAYI4eJzLrNCw/Iq9SWxCKB/cMgEKHjRmNMb2NKch1dsI2ZSCg8lNedIPmOaRfqHT29hLyMoc/5Wpg== -"@sideway/address@^4.1.0": - version "4.1.2" - resolved "https://registry.npmjs.org/@sideway/address/-/address-4.1.2.tgz" - integrity sha512-idTz8ibqWFrPU8kMirL0CoPH/A29XOzzAzpyN3zQ4kAWnzmNfFmRaoMNN6VI8ske5M73HZyhIaW4OuSFIdM4oA== +"@sideway/address@^4.1.3": + version "4.1.4" + resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.4.tgz#03dccebc6ea47fdc226f7d3d1ad512955d4783f0" + integrity sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw== dependencies: "@hapi/hoek" "^9.0.0" @@ -2634,116 +2887,16 @@ resolved "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz" integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== -"@slorber/static-site-generator-webpack-plugin@^4.0.0": - version "4.0.1" - resolved "https://registry.npmjs.org/@slorber/static-site-generator-webpack-plugin/-/static-site-generator-webpack-plugin-4.0.1.tgz" - integrity sha512-PSv4RIVO1Y3kvHxjvqeVisk3E9XFoO04uwYBDWe217MFqKspplYswTuKLiJu0aLORQWzuQjfVsSlLPojwfYsLw== +"@slorber/static-site-generator-webpack-plugin@^4.0.1": + version "4.0.3" + resolved "https://registry.yarnpkg.com/@slorber/static-site-generator-webpack-plugin/-/static-site-generator-webpack-plugin-4.0.3.tgz#79c99c35761a06fd5317e720172518b60af37e64" + integrity sha512-bKSMNTSFp67QrMZQby0X1QpD8XJC1De5Qh7S/DsEeojWnAOSD+VwEYNC0guhlDBTZxUdvgx0CpMaVwnCHSoWmw== dependencies: bluebird "^3.7.1" cheerio "^0.22.0" - eval "^0.1.4" - url "^0.11.0" + eval "0.1.6" webpack-sources "^1.4.3" -"@styled-system/background@^5.1.2": - version "5.1.2" - resolved "https://registry.yarnpkg.com/@styled-system/background/-/background-5.1.2.tgz#75c63d06b497ab372b70186c0bf608d62847a2ba" - integrity sha512-jtwH2C/U6ssuGSvwTN3ri/IyjdHb8W9X/g8Y0JLcrH02G+BW3OS8kZdHphF1/YyRklnrKrBT2ngwGUK6aqqV3A== - dependencies: - "@styled-system/core" "^5.1.2" - -"@styled-system/border@^5.1.5": - version "5.1.5" - resolved "https://registry.yarnpkg.com/@styled-system/border/-/border-5.1.5.tgz#0493d4332d2b59b74bb0d57d08c73eb555761ba6" - integrity sha512-JvddhNrnhGigtzWRCVuAHepniyVi6hBlimxWDVAdcTuk7aRn9BYJUwfHslURtwYFsF5FoEs8Zmr1oZq2M1AP0A== - dependencies: - "@styled-system/core" "^5.1.2" - -"@styled-system/color@^5.1.2": - version "5.1.2" - resolved "https://registry.yarnpkg.com/@styled-system/color/-/color-5.1.2.tgz#b8d6b4af481faabe4abca1a60f8daa4ccc2d9f43" - integrity sha512-1kCkeKDZkt4GYkuFNKc7vJQMcOmTl3bJY3YBUs7fCNM6mMYJeT1pViQ2LwBSBJytj3AB0o4IdLBoepgSgGl5MA== - dependencies: - "@styled-system/core" "^5.1.2" - -"@styled-system/core@^5.1.2": - version "5.1.2" - resolved "https://registry.yarnpkg.com/@styled-system/core/-/core-5.1.2.tgz#b8b7b86455d5a0514f071c4fa8e434b987f6a772" - integrity sha512-XclBDdNIy7OPOsN4HBsawG2eiWfCcuFt6gxKn1x4QfMIgeO6TOlA2pZZ5GWZtIhCUqEPTgIBta6JXsGyCkLBYw== - dependencies: - object-assign "^4.1.1" - -"@styled-system/css@^5.1.5": - version "5.1.5" - resolved "https://registry.yarnpkg.com/@styled-system/css/-/css-5.1.5.tgz#0460d5f3ff962fa649ea128ef58d9584f403bbbc" - integrity sha512-XkORZdS5kypzcBotAMPBoeckDs9aSZVkvrAlq5K3xP8IMAUek+x2O4NtwoSgkYkWWzVBu6DGdFZLR790QWGG+A== - -"@styled-system/flexbox@^5.1.2": - version "5.1.2" - resolved "https://registry.yarnpkg.com/@styled-system/flexbox/-/flexbox-5.1.2.tgz#077090f43f61c3852df63da24e4108087a8beecf" - integrity sha512-6hHV52+eUk654Y1J2v77B8iLeBNtc+SA3R4necsu2VVinSD7+XY5PCCEzBFaWs42dtOEDIa2lMrgL0YBC01mDQ== - dependencies: - "@styled-system/core" "^5.1.2" - -"@styled-system/grid@^5.1.2": - version "5.1.2" - resolved "https://registry.yarnpkg.com/@styled-system/grid/-/grid-5.1.2.tgz#7165049877732900b99cd00759679fbe45c6c573" - integrity sha512-K3YiV1KyHHzgdNuNlaw8oW2ktMuGga99o1e/NAfTEi5Zsa7JXxzwEnVSDSBdJC+z6R8WYTCYRQC6bkVFcvdTeg== - dependencies: - "@styled-system/core" "^5.1.2" - -"@styled-system/layout@^5.1.2": - version "5.1.2" - resolved "https://registry.yarnpkg.com/@styled-system/layout/-/layout-5.1.2.tgz#12d73e79887e10062f4dbbbc2067462eace42339" - integrity sha512-wUhkMBqSeacPFhoE9S6UF3fsMEKFv91gF4AdDWp0Aym1yeMPpqz9l9qS/6vjSsDPF7zOb5cOKC3tcKKOMuDCPw== - dependencies: - "@styled-system/core" "^5.1.2" - -"@styled-system/position@^5.1.2": - version "5.1.2" - resolved "https://registry.yarnpkg.com/@styled-system/position/-/position-5.1.2.tgz#56961266566836f57a24d8e8e33ce0c1adb59dd3" - integrity sha512-60IZfMXEOOZe3l1mCu6sj/2NAyUmES2kR9Kzp7s2D3P4qKsZWxD1Se1+wJvevb+1TP+ZMkGPEYYXRyU8M1aF5A== - dependencies: - "@styled-system/core" "^5.1.2" - -"@styled-system/shadow@^5.1.2": - version "5.1.2" - resolved "https://registry.yarnpkg.com/@styled-system/shadow/-/shadow-5.1.2.tgz#beddab28d7de03cd0177a87ac4ed3b3b6d9831fd" - integrity sha512-wqniqYb7XuZM7K7C0d1Euxc4eGtqEe/lvM0WjuAFsQVImiq6KGT7s7is+0bNI8O4Dwg27jyu4Lfqo/oIQXNzAg== - dependencies: - "@styled-system/core" "^5.1.2" - -"@styled-system/should-forward-prop@^5.1.2": - version "5.1.5" - resolved "https://registry.yarnpkg.com/@styled-system/should-forward-prop/-/should-forward-prop-5.1.5.tgz#c392008c6ae14a6eb78bf1932733594f7f7e5c76" - integrity sha512-+rPRomgCGYnUIaFabDoOgpSDc4UUJ1KsmlnzcEp0tu5lFrBQKgZclSo18Z1URhaZm7a6agGtS5Xif7tuC2s52Q== - dependencies: - "@emotion/is-prop-valid" "^0.8.1" - "@emotion/memoize" "^0.7.1" - styled-system "^5.1.5" - -"@styled-system/space@^5.1.2": - version "5.1.2" - resolved "https://registry.yarnpkg.com/@styled-system/space/-/space-5.1.2.tgz#38925d2fa29a41c0eb20e65b7c3efb6e8efce953" - integrity sha512-+zzYpR8uvfhcAbaPXhH8QgDAV//flxqxSjHiS9cDFQQUSznXMQmxJegbhcdEF7/eNnJgHeIXv1jmny78kipgBA== - dependencies: - "@styled-system/core" "^5.1.2" - -"@styled-system/typography@^5.1.2": - version "5.1.2" - resolved "https://registry.yarnpkg.com/@styled-system/typography/-/typography-5.1.2.tgz#65fb791c67d50cd2900d234583eaacdca8c134f7" - integrity sha512-BxbVUnN8N7hJ4aaPOd7wEsudeT7CxarR+2hns8XCX1zp0DFfbWw4xYa/olA0oQaqx7F1hzDg+eRaGzAJbF+jOg== - dependencies: - "@styled-system/core" "^5.1.2" - -"@styled-system/variant@^5.1.5": - version "5.1.5" - resolved "https://registry.yarnpkg.com/@styled-system/variant/-/variant-5.1.5.tgz#8446d8aad06af3a4c723d717841df2dbe4ddeafd" - integrity sha512-Yn8hXAFoWIro8+Q5J8YJd/mP85Teiut3fsGVR9CAxwgNfIAiqlYxsk5iHU7VHJks/0KjL4ATSjmbtCDC/4l1qw== - dependencies: - "@styled-system/core" "^5.1.2" - "@styled-system/css" "^5.1.5" - "@superset-ui/style@^0.14.23": version "0.14.23" resolved "https://registry.yarnpkg.com/@superset-ui/style/-/style-0.14.23.tgz#f50a2b35ac75e0c08e39347905b25b5f9a4cd5cc" @@ -2879,6 +3032,15 @@ camelcase "^6.2.0" cosmiconfig "^7.0.1" +"@svgr/core@^6.2.1": + version "6.2.1" + resolved "https://registry.yarnpkg.com/@svgr/core/-/core-6.2.1.tgz#195de807a9f27f9e0e0d678e01084b05c54fdf61" + integrity sha512-NWufjGI2WUyrg46mKuySfviEJ6IxHUOm/8a3Ph38VCWSp+83HBraCQrpEM3F3dB6LBs5x8OElS8h3C0oOJaJAA== + dependencies: + "@svgr/plugin-jsx" "^6.2.1" + camelcase "^6.2.0" + cosmiconfig "^7.0.1" + "@svgr/hast-util-to-babel-ast@^5.5.0": version "5.5.0" resolved "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-5.5.0.tgz" @@ -2894,6 +3056,14 @@ "@babel/types" "^7.15.6" entities "^3.0.1" +"@svgr/hast-util-to-babel-ast@^6.2.1": + version "6.2.1" + resolved "https://registry.yarnpkg.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-6.2.1.tgz#ae065567b74cbe745afae617053adf9a764bea25" + integrity sha512-pt7MMkQFDlWJVy9ULJ1h+hZBDGFfSCwlBNW1HkLnVi7jUhyEXUaGYWi1x6bM2IXuAR9l265khBT4Av4lPmaNLQ== + dependencies: + "@babel/types" "^7.15.6" + entities "^3.0.1" + "@svgr/plugin-jsx@^5.5.0": version "5.5.0" resolved "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-5.5.0.tgz" @@ -2914,6 +3084,16 @@ "@svgr/hast-util-to-babel-ast" "^6.0.0" svg-parser "^2.0.2" +"@svgr/plugin-jsx@^6.2.1": + version "6.2.1" + resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-6.2.1.tgz#5668f1d2aa18c2f1bb7a1fc9f682d3f9aed263bd" + integrity sha512-u+MpjTsLaKo6r3pHeeSVsh9hmGRag2L7VzApWIaS8imNguqoUwDq/u6U/NDmYs/KAsrmtBjOEaAAPbwNGXXp1g== + dependencies: + "@babel/core" "^7.15.5" + "@svgr/babel-preset" "^6.2.0" + "@svgr/hast-util-to-babel-ast" "^6.2.1" + svg-parser "^2.0.2" + "@svgr/plugin-svgo@^5.5.0": version "5.5.0" resolved "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-5.5.0.tgz" @@ -2960,6 +3140,20 @@ "@svgr/plugin-jsx" "^6.2.0" "@svgr/plugin-svgo" "^6.2.0" +"@svgr/webpack@^6.2.1": + version "6.2.1" + resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-6.2.1.tgz#ef5d51c1b6be4e7537fb9f76b3f2b2e22b63c58d" + integrity sha512-h09ngMNd13hnePwgXa+Y5CgOjzlCvfWLHg+MBnydEedAnuLRzUHUJmGS3o2OsrhxTOOqEsPOFt5v/f6C5Qulcw== + dependencies: + "@babel/core" "^7.15.5" + "@babel/plugin-transform-react-constant-elements" "^7.14.5" + "@babel/preset-env" "^7.15.6" + "@babel/preset-react" "^7.14.5" + "@babel/preset-typescript" "^7.15.0" + "@svgr/core" "^6.2.1" + "@svgr/plugin-jsx" "^6.2.1" + "@svgr/plugin-svgo" "^6.2.0" + "@szmarczak/http-timer@^1.1.2": version "1.1.2" resolved "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz" @@ -2967,61 +3161,6 @@ dependencies: defer-to-connect "^1.0.1" -"@theme-ui/color-modes@0.3.5": - version "0.3.5" - resolved "https://registry.yarnpkg.com/@theme-ui/color-modes/-/color-modes-0.3.5.tgz#e280d1ff8be9f648c161b899e5049cb45a73cb90" - integrity sha512-3n5ExAnp1gAuVVFdGF2rRLyrVsa7qtmUXx+gj1wPJsADq23EE4ctkppC+aIfPFxT196WhR8fjErrVuO7Rh+wAg== - dependencies: - "@emotion/core" "^10.0.0" - "@theme-ui/core" "0.3.5" - "@theme-ui/css" "0.3.5" - deepmerge "^4.2.2" - -"@theme-ui/components@0.3.5": - version "0.3.5" - resolved "https://registry.yarnpkg.com/@theme-ui/components/-/components-0.3.5.tgz#cd0b5a1292f88b3df2c5b6b299b0a6cdc6da52e5" - integrity sha512-RdWwnN43H1Tq80lGCu6icNuYCWoHHNtwH+LJGaGfiPkv/uMXWrwzKPLMiAuYM5b3ofKtmdaAcxZLjqAld97jkw== - dependencies: - "@emotion/core" "^10.0.0" - "@emotion/styled" "^10.0.0" - "@styled-system/color" "^5.1.2" - "@styled-system/should-forward-prop" "^5.1.2" - "@styled-system/space" "^5.1.2" - "@theme-ui/css" "0.3.5" - -"@theme-ui/core@0.3.5": - version "0.3.5" - resolved "https://registry.yarnpkg.com/@theme-ui/core/-/core-0.3.5.tgz#096ded31193bfe83c50d09eca0fb086cab2ac7e1" - integrity sha512-80gbG4BW0ZQgZ8TWSG7vY72uXDxmkI/GttjpJee7AJlWVrPh7RCD2E3cuFPjqXzt7o4BJ9lZSHmTXcLzixNtRw== - dependencies: - "@emotion/core" "^10.0.0" - "@theme-ui/css" "0.3.5" - deepmerge "^4.2.2" - -"@theme-ui/css@0.3.5": - version "0.3.5" - resolved "https://registry.yarnpkg.com/@theme-ui/css/-/css-0.3.5.tgz#cfd228c74bcc7840a7fe9e507858486ee4d403dc" - integrity sha512-XqsyXmifbnHOui1flSq4V7Lb3U+06Dbn2Q/leyr/cRd6Xgc0naiztdmD0MbXNvxgU51a2Ur9hyP4PnO5wE0yRg== - -"@theme-ui/mdx@0.3.5": - version "0.3.5" - resolved "https://registry.yarnpkg.com/@theme-ui/mdx/-/mdx-0.3.5.tgz#60d26102dcc8b2095269de461dcf8f51fa18cf4c" - integrity sha512-KMf5kkEcItQ3qIj7dston/kBOZc82ST2R0pUcyk/u8ZclX4ingRtZkMxm2zpmxybzdSUY3DIKf2MTK9CxUSpOQ== - dependencies: - "@emotion/core" "^10.0.0" - "@emotion/styled" "^10.0.0" - "@mdx-js/react" "^1.0.0" - -"@theme-ui/theme-provider@0.3.5": - version "0.3.5" - resolved "https://registry.yarnpkg.com/@theme-ui/theme-provider/-/theme-provider-0.3.5.tgz#98ad67d8e2e38a6347ea604878202f49fea38088" - integrity sha512-C1kVsGyrh/pqO/j4+KSF5IvVW1DOnZoQmpaJ9EjyU4bqY0PCTZfuNdNPfydKaDWiYxrKGXKBeX0xjvLLU6R0zQ== - dependencies: - "@emotion/core" "^10.0.0" - "@theme-ui/color-modes" "0.3.5" - "@theme-ui/core" "0.3.5" - "@theme-ui/mdx" "0.3.5" - "@trysound/sax@0.2.0": version "0.2.0" resolved "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz" @@ -3070,6 +3209,14 @@ "@types/eslint" "*" "@types/estree" "*" +"@types/eslint-scope@^3.7.3": + version "3.7.3" + resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.3.tgz#125b88504b61e3c8bc6f870882003253005c3224" + integrity sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g== + dependencies: + "@types/eslint" "*" + "@types/estree" "*" + "@types/eslint@*": version "7.28.2" resolved "https://registry.npmjs.org/@types/eslint/-/eslint-7.28.2.tgz" @@ -3083,6 +3230,11 @@ resolved "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz" integrity sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw== +"@types/estree@^0.0.51": + version "0.0.51" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40" + integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ== + "@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.18": version "4.17.28" resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz#c47def9f34ec81dc6328d0b1b5303d1ec98d86b8" @@ -3156,10 +3308,10 @@ resolved "https://registry.npmjs.org/@types/node/-/node-16.11.7.tgz" integrity sha512-QB5D2sqfSjCmTuWcBWyJ+/44bcjO7VbjSbOE0ucoVbAsSNQc4Lt6QkgkVXkTDwkL4z/beecZNDvVX15D4P8Jbw== -"@types/node@^15.0.1": - version "15.14.9" - resolved "https://registry.npmjs.org/@types/node/-/node-15.14.9.tgz" - integrity sha512-qjd88DrCxupx/kJD5yQgZdcYKZKSIGBVDIBE1/LTGcNm3d2Np/jxojkdePDdfnBHJc5W7vSMpbJ1aB7p/Py69A== +"@types/node@^17.0.5": + version "17.0.23" + resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.23.tgz#3b41a6e643589ac6442bdbd7a4a3ded62f33f7da" + integrity sha512-UxDxWn7dl97rKVeVS61vErvw086aCYhDLyvRQZ5Rk65rZKepaFdm53GeqXaKBuOhED4e9uWq34IC3TdSdJJ2Gw== "@types/parse-json@^4.0.0": version "4.0.0" @@ -3191,13 +3343,6 @@ resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== -"@types/react-helmet@*": - version "6.1.4" - resolved "https://registry.npmjs.org/@types/react-helmet/-/react-helmet-6.1.4.tgz" - integrity sha512-jyx50RNZXVaTGHY3MsoRPNpeiVk8b0XTPgD/O6KHF6COTDnG/+lRjPYvTK5nfWtR3xDOux0w6bHLAsaHo2ZLTA== - dependencies: - "@types/react" "*" - "@types/react-redux@^7.1.20": version "7.1.20" resolved "https://registry.npmjs.org/@types/react-redux/-/react-redux-7.1.20.tgz" @@ -3243,6 +3388,15 @@ "@types/scheduler" "*" csstype "^3.0.2" +"@types/react@^17.0.42": + version "17.0.42" + resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.42.tgz#8242b9219bf8a911c47f248e327206fea3f4ee5a" + integrity sha512-nuab3x3CpJ7VFeNA+3HTUuEkvClYHXqWtWd7Ud6AZYW7Z3NH9WKtgU+tFB0ZLcHq+niB/HnzLcaZPqMJ95+k5Q== + dependencies: + "@types/prop-types" "*" + "@types/scheduler" "*" + csstype "^3.0.2" + "@types/retry@^0.12.0": version "0.12.1" resolved "https://registry.npmjs.org/@types/retry/-/retry-0.12.1.tgz" @@ -3433,36 +3587,26 @@ accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: mime-types "~2.1.24" negotiator "0.6.2" -acorn-dynamic-import@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz" - integrity sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw== - acorn-import-assertions@^1.7.6: version "1.8.0" resolved "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz" integrity sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw== -acorn-jsx@^5.0.1: - version "5.3.2" - resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" - integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== - acorn-walk@^8.0.0: version "8.2.0" resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz" integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== -acorn@^6.1.1: - version "6.4.2" - resolved "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz" - integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== - acorn@^8.0.4, acorn@^8.4.1: version "8.5.0" resolved "https://registry.npmjs.org/acorn/-/acorn-8.5.0.tgz" integrity sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q== +acorn@^8.5.0: + version "8.7.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.0.tgz#90951fde0f8f09df93549481e5fc141445b791cf" + integrity sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ== + address@^1.0.1, address@^1.1.2: version "1.1.2" resolved "https://registry.npmjs.org/address/-/address-1.1.2.tgz" @@ -3515,14 +3659,14 @@ ajv@^8.0.0, ajv@^8.8.0: require-from-string "^2.0.2" uri-js "^4.2.2" -algoliasearch-helper@^3.5.5: - version "3.6.2" - resolved "https://registry.npmjs.org/algoliasearch-helper/-/algoliasearch-helper-3.6.2.tgz" - integrity sha512-Xx0NOA6k4ySn+R2l3UMSONAaMkyfmrZ3AP1geEMo32MxDJQJesZABZYsldO9fa6FKQxH91afhi4hO1G0Zc2opg== +algoliasearch-helper@^3.7.0: + version "3.7.4" + resolved "https://registry.yarnpkg.com/algoliasearch-helper/-/algoliasearch-helper-3.7.4.tgz#3812ea161da52463ec88da52612c9a363c1b181d" + integrity sha512-KmJrsHVm5TmxZ9Oj53XdXuM4CQeu7eVFnB15tpSFt+7is1d1yVCv3hxCLMqYSw/rH42ccv013miQpRr268P8vw== dependencies: - events "^1.1.1" + "@algolia/events" "^4.0.1" -algoliasearch@^4.0.0, algoliasearch@^4.10.5: +algoliasearch@^4.0.0: version "4.11.0" resolved "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.11.0.tgz" integrity sha512-IXRj8kAP2WrMmj+eoPqPc6P7Ncq1yZkFiyDrjTBObV1ADNL8Z/KdZ+dWC5MmYcBLAbcB/mMCpak5N/D1UIZvsA== @@ -3542,12 +3686,32 @@ algoliasearch@^4.0.0, algoliasearch@^4.10.5: "@algolia/requester-node-http" "4.11.0" "@algolia/transporter" "4.11.0" +algoliasearch@^4.12.1: + version "4.13.0" + resolved "https://registry.yarnpkg.com/algoliasearch/-/algoliasearch-4.13.0.tgz#e36611fda82b1fc548c156ae7929a7f486e4b663" + integrity sha512-oHv4faI1Vl2s+YC0YquwkK/TsaJs79g2JFg5FDm2rKN12VItPTAeQ7hyJMHarOPPYuCnNC5kixbtcqvb21wchw== + dependencies: + "@algolia/cache-browser-local-storage" "4.13.0" + "@algolia/cache-common" "4.13.0" + "@algolia/cache-in-memory" "4.13.0" + "@algolia/client-account" "4.13.0" + "@algolia/client-analytics" "4.13.0" + "@algolia/client-common" "4.13.0" + "@algolia/client-personalization" "4.13.0" + "@algolia/client-search" "4.13.0" + "@algolia/logger-common" "4.13.0" + "@algolia/logger-console" "4.13.0" + "@algolia/requester-browser-xhr" "4.13.0" + "@algolia/requester-common" "4.13.0" + "@algolia/requester-node-http" "4.13.0" + "@algolia/transporter" "4.13.0" + alphanum-sort@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz" integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= -ansi-align@^3.0.0: +ansi-align@^3.0.0, ansi-align@^3.0.1: version "3.0.1" resolved "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz" integrity sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w== @@ -3583,10 +3747,15 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0: dependencies: color-convert "^2.0.1" -antd@^4.8.0: - version "4.18.5" - resolved "https://registry.yarnpkg.com/antd/-/antd-4.18.5.tgz#e5ffbe238fd6fdfcd1ed39ba96e4b1bd5f589757" - integrity sha512-5fN3C2lWAzonhOYYlNpzIw2OHl7vxFZ+4cJ7DK/XZrV+75OY61Y+OkanqMJwrFtDDamIez35OM7cAezGko9tew== +ansi-styles@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.1.0.tgz#87313c102b8118abd57371afab34618bf7350ed3" + integrity sha512-VbqNsoz55SYGczauuup0MFUyXNQviSpFTj1RQtFzmQLk18qbVSpTFFGMT293rmDaQuKCT6InmbuEyUne4mTuxQ== + +antd@^4.19.3: + version "4.19.3" + resolved "https://registry.yarnpkg.com/antd/-/antd-4.19.3.tgz#2b6bb938bda9850c797db59c8923f3c8a14a6693" + integrity sha512-q4oT2lIM0Fb60MfcdtjH6LFQcmo5MuM27PN3nJMsRG1FeiQ9n+OPFlkQSdtb0ZWFIFjTH3p0W02T6SbB2U7ChQ== dependencies: "@ant-design/colors" "^6.0.0" "@ant-design/icons" "^4.7.0" @@ -3603,24 +3772,25 @@ antd@^4.8.0: rc-collapse "~3.1.0" rc-dialog "~8.6.0" rc-drawer "~4.4.2" - rc-dropdown "~3.2.0" - rc-field-form "~1.22.0-2" + rc-dropdown "~3.3.2" + rc-field-form "~1.24.0" rc-image "~5.2.5" + rc-input "~0.0.1-alpha.5" rc-input-number "~7.3.0" rc-mentions "~1.6.1" - rc-menu "~9.2.1" + rc-menu "~9.3.2" rc-motion "^2.4.4" rc-notification "~4.5.7" rc-pagination "~3.1.9" - rc-picker "~2.5.17" + rc-picker "~2.6.4" rc-progress "~3.2.1" rc-rate "~2.9.0" rc-resize-observer "^1.2.0" - rc-select "~14.0.0-alpha.15" - rc-slider "~9.7.4" + rc-select "~14.0.2" + rc-slider "~10.0.0-alpha.4" rc-steps "~4.1.0" rc-switch "~3.2.0" - rc-table "~7.22.2" + rc-table "~7.23.0" rc-tabs "~11.10.0" rc-textarea "~0.3.0" rc-tooltip "~5.1.1" @@ -3628,7 +3798,7 @@ antd@^4.8.0: rc-tree-select "~5.1.1" rc-trigger "^5.2.10" rc-upload "~4.3.0" - rc-util "^5.14.0" + rc-util "^5.19.3" scroll-into-view-if-needed "^2.2.25" anymatch@~3.1.2: @@ -3710,7 +3880,7 @@ autolinker@^3.11.0: dependencies: tslib "^1.9.3" -autoprefixer@^10.3.5, autoprefixer@^10.3.7: +autoprefixer@^10.3.7: version "10.4.0" resolved "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.0.tgz" integrity sha512-7FdJ1ONtwzV1G43GDD0kpVMn/qbiNqyOPMFTX5nRffI+7vgWoFEc6DcXOxHJxrWNDXrZh18eDsZjvZGUljSRGA== @@ -3722,20 +3892,32 @@ autoprefixer@^10.3.5, autoprefixer@^10.3.7: picocolors "^1.0.0" postcss-value-parser "^4.1.0" -axios@^0.21.1: - version "0.21.4" - resolved "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz" - integrity sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg== +autoprefixer@^10.4.2: + version "10.4.4" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.4.tgz#3e85a245b32da876a893d3ac2ea19f01e7ea5a1e" + integrity sha512-Tm8JxsB286VweiZ5F0anmbyGiNI3v3wGv3mz9W+cxEDYB/6jbnj6GM9H9mK3wIL8ftgl+C07Lcwb8PG5PCCPzA== dependencies: - follow-redirects "^1.14.0" + browserslist "^4.20.2" + caniuse-lite "^1.0.30001317" + fraction.js "^4.2.0" + normalize-range "^0.1.2" + picocolors "^1.0.0" + postcss-value-parser "^4.2.0" -babel-loader@^8.2.2: - version "8.2.3" - resolved "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.3.tgz" - integrity sha512-n4Zeta8NC3QAsuyiizu0GkmRcQ6clkV9WFUnUf1iXP//IeSKbWjofW3UHyZVwlOB4y039YQKefawyTn64Zwbuw== +axios@^0.25.0: + version "0.25.0" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.25.0.tgz#349cfbb31331a9b4453190791760a8d35b093e0a" + integrity sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g== + dependencies: + follow-redirects "^1.14.7" + +babel-loader@^8.2.3: + version "8.2.4" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.4.tgz#95f5023c791b2e9e2ca6f67b0984f39c82ff384b" + integrity sha512-8dytA3gcvPPPv4Grjhnt8b5IIiTcq/zeXOPk4iTYI0SVXcsmuGg7JtBRDp8S9X+gJfhQ8ektjXZlDu1Bb33U8A== dependencies: find-cache-dir "^3.3.1" - loader-utils "^1.4.0" + loader-utils "^2.0.0" make-dir "^3.1.0" schema-utils "^2.6.5" @@ -3919,7 +4101,7 @@ boolbase@^1.0.0, boolbase@~1.0.0: resolved "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz" integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= -boxen@^5.0.0, boxen@^5.0.1: +boxen@^5.0.0: version "5.1.2" resolved "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz" integrity sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ== @@ -3933,6 +4115,20 @@ boxen@^5.0.0, boxen@^5.0.1: widest-line "^3.1.0" wrap-ansi "^7.0.0" +boxen@^6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/boxen/-/boxen-6.2.1.tgz#b098a2278b2cd2845deef2dff2efc38d329b434d" + integrity sha512-H4PEsJXfFI/Pt8sjDWbHlQPx4zL/bvSQjcilJmaulGt5mLDorHOHpmdXAJcBcmru7PhYSp/cDMWRko4ZUMFkSw== + dependencies: + ansi-align "^3.0.1" + camelcase "^6.2.0" + chalk "^4.1.2" + cli-boxes "^3.0.0" + string-width "^5.0.1" + type-fest "^2.5.0" + widest-line "^4.0.1" + wrap-ansi "^8.0.1" + brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -3981,24 +4177,22 @@ browserslist@^4.19.1: node-releases "^2.0.1" picocolors "^1.0.0" +browserslist@^4.20.2: + version "4.20.2" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.20.2.tgz#567b41508757ecd904dab4d1c646c612cd3d4f88" + integrity sha512-CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA== + dependencies: + caniuse-lite "^1.0.30001317" + electron-to-chromium "^1.4.84" + escalade "^3.1.1" + node-releases "^2.0.2" + picocolors "^1.0.0" + btoa@^1.2.1: version "1.2.1" resolved "https://registry.npmjs.org/btoa/-/btoa-1.2.1.tgz" integrity sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g== -buble-jsx-only@^0.19.8: - version "0.19.8" - resolved "https://registry.npmjs.org/buble-jsx-only/-/buble-jsx-only-0.19.8.tgz" - integrity sha512-7AW19pf7PrKFnGTEDzs6u9+JZqQwM1VnLS19OlqYDhXomtFFknnoQJAPHeg84RMFWAvOhYrG7harizJNwUKJsA== - dependencies: - acorn "^6.1.1" - acorn-dynamic-import "^4.0.0" - acorn-jsx "^5.0.1" - chalk "^2.4.2" - magic-string "^0.25.3" - minimist "^1.2.0" - regexpu-core "^4.5.4" - buffer-from@^1.0.0: version "1.1.2" resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz" @@ -4096,12 +4290,17 @@ caniuse-lite@^1.0.30001312: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001312.tgz#e11eba4b87e24d22697dae05455d5aea28550d5f" integrity sha512-Wiz1Psk2MEK0pX3rUzWaunLTZzqS2JYZFzNKqAiJGiuxIjRPLgV6+VDPOg6lQOUxmDwhTlh198JsTTi8Hzw6aQ== +caniuse-lite@^1.0.30001317: + version "1.0.30001320" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001320.tgz#8397391bec389b8ccce328636499b7284ee13285" + integrity sha512-MWPzG54AGdo3nWx7zHZTefseM5Y1ccM7hlQKHRqJkPozUaw3hNbBTMmLn16GG2FUzjR13Cr3NPfhIieX5PzXDA== + ccount@^1.0.0, ccount@^1.0.3: version "1.1.0" resolved "https://registry.npmjs.org/ccount/-/ccount-1.1.0.tgz" integrity sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg== -chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2: +chalk@^2.0.0, chalk@^2.4.1: version "2.4.2" resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -4179,7 +4378,7 @@ cheerio@^1.0.0-rc.10: parse5-htmlparser2-tree-adapter "^6.0.1" tslib "^2.2.0" -chokidar@^3.4.2, chokidar@^3.5.2: +chokidar@^3.4.2: version "3.5.2" resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz" integrity sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ== @@ -4231,6 +4430,13 @@ clean-css@^5.1.5: dependencies: source-map "~0.6.0" +clean-css@^5.2.2, clean-css@^5.2.4: + version "5.2.4" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-5.2.4.tgz#982b058f8581adb2ae062520808fb2429bd487a4" + integrity sha512-nKseG8wCzEuji/4yrgM/5cthL9oTDc5UOQyFMvW/Q53oP6gLH690o1NbuTh6Y18nujr7BxlsFuS7gXLnLzKJGg== + dependencies: + source-map "~0.6.0" + clean-stack@^2.0.0: version "2.2.0" resolved "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz" @@ -4241,6 +4447,20 @@ cli-boxes@^2.2.1: resolved "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz" integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw== +cli-boxes@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-3.0.0.tgz#71a10c716feeba005e4504f36329ef0b17cf3145" + integrity sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g== + +cli-table3@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.1.tgz#36ce9b7af4847f288d3cdd081fbd09bf7bd237b8" + integrity sha512-w0q/enDHhPLq44ovMGdQeeDLvwxwavsJX7oQGYt/LrBlYsyaxyDnp6z3QzFut/6kLLKnlcUVJLrpB7KBfgG/RA== + dependencies: + string-width "^4.2.0" + optionalDependencies: + colors "1.4.0" + clone-deep@^4.0.1: version "4.0.1" resolved "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz" @@ -4310,6 +4530,11 @@ colorette@^2.0.10: resolved "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz" integrity sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g== +colors@1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" + integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== + combine-promises@^1.1.0: version "1.1.0" resolved "https://registry.npmjs.org/combine-promises/-/combine-promises-1.1.0.tgz" @@ -4335,7 +4560,7 @@ commander@^7.2.0: resolved "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz" integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== -commander@^8.1.0: +commander@^8.1.0, commander@^8.3.0: version "8.3.0" resolved "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz" integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== @@ -4448,7 +4673,7 @@ copy-to-clipboard@^3, copy-to-clipboard@^3.2.0: dependencies: toggle-selection "^1.0.6" -copy-webpack-plugin@^10.2.0: +copy-webpack-plugin@^10.2.4: version "10.2.4" resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-10.2.4.tgz#6c854be3fdaae22025da34b9112ccf81c63308fe" integrity sha512-xFVltahqlsRcyyJqQbDY6EYTtyQZF9rf+JPjwHObLdPFMEISqkFkr7mFoVOC6BfYS/dNThyoQKvziugm+OnwBg== @@ -4481,10 +4706,15 @@ core-js-pure@^3.19.0: resolved "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.19.1.tgz" integrity sha512-Q0Knr8Es84vtv62ei6/6jXH/7izKmOrtrxH9WJTHLCMAVeU+8TF8z8Nr08CsH4Ot0oJKzBzJJL9SJBYIv7WlfQ== -core-js@^3.18.0: - version "3.19.1" - resolved "https://registry.npmjs.org/core-js/-/core-js-3.19.1.tgz" - integrity sha512-Tnc7E9iKd/b/ff7GFbhwPVzJzPztGrChB8X8GLqoYGdEOG8IpLnK1xPyo3ZoO3HsK6TodJS58VGPOxA+hLHQMg== +core-js-pure@^3.20.2: + version "3.21.1" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.21.1.tgz#8c4d1e78839f5f46208de7230cebfb72bc3bdb51" + integrity sha512-12VZfFIu+wyVbBebyHmRTuEE/tZrB4tJToWcwAMcsp3h4+sHR+fMJWbKpYiCRWlhFBq+KNyO8rIV9rTkeVmznQ== + +core-js@^3.21.1: + version "3.21.1" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.21.1.tgz#f2e0ddc1fc43da6f904706e8e955bc19d06a0d94" + integrity sha512-FRq5b/VMrWlrmCzwRrpDYNxyHP9BcAZC+xHJaqTgIE5091ZV1NTmyh0sGOg5XqpnHvR0svdy0sv1gWA1zmhxig== core-util-is@~1.0.0: version "1.0.3" @@ -4546,13 +4776,13 @@ css-declaration-sorter@^6.0.3: dependencies: timsort "^0.3.0" -css-loader@^6.5.1: - version "6.6.0" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.6.0.tgz#c792ad5510bd1712618b49381bd0310574fafbd3" - integrity sha512-FK7H2lisOixPT406s5gZM1S3l8GrfhEBT3ZiL2UX1Ng1XWs0y2GPllz/OTyvbaHe12VgQrIXIzuEGVlbUhodqg== +css-loader@^6.6.0: + version "6.7.1" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.7.1.tgz#e98106f154f6e1baf3fc3bc455cb9981c1d5fd2e" + integrity sha512-yB5CNFa14MbPJcomwNh3wLThtkZgcNyI2bNMRt8iE5Z8Vwl7f8vQXFAzn2HDOJvtDq2NTZBUGMSUNNyrv3/+cw== dependencies: icss-utils "^5.1.0" - postcss "^8.4.5" + postcss "^8.4.7" postcss-modules-extract-imports "^3.0.0" postcss-modules-local-by-default "^4.0.0" postcss-modules-scope "^3.0.0" @@ -4560,7 +4790,7 @@ css-loader@^6.5.1: postcss-value-parser "^4.2.0" semver "^7.3.5" -css-minimizer-webpack-plugin@^3.3.1: +css-minimizer-webpack-plugin@^3.4.1: version "3.4.1" resolved "https://registry.yarnpkg.com/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.4.1.tgz#ab78f781ced9181992fe7b6e4f3422e76429878f" integrity sha512-1u6D71zeIfgngN2XNRJefc/hY7Ybsxd74Jm4qngIXyUEk7fss3VUzuHxLAq/R8NAba4QU9OUSaMZlbpRc7bM4Q== @@ -4649,17 +4879,17 @@ cssesc@^3.0.0: resolved "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz" integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== -cssnano-preset-advanced@^5.1.4: - version "5.1.6" - resolved "https://registry.npmjs.org/cssnano-preset-advanced/-/cssnano-preset-advanced-5.1.6.tgz" - integrity sha512-rkuQ16aS/0zNaTNbJIw/IOhwboqWfBfsmUnchP1qR54ml5lP2qSu8s3Ux7khNBHAi08FTMQq1819/RpDgawXNQ== +cssnano-preset-advanced@^5.1.12: + version "5.3.1" + resolved "https://registry.yarnpkg.com/cssnano-preset-advanced/-/cssnano-preset-advanced-5.3.1.tgz#f4fa7006aab67e354289b3efd512c93a272b3874" + integrity sha512-kfCknalY5VX/JKJ3Iri5/5rhZmQIqkbqgXsA6oaTnfA4flY/tt+w0hMxbExr0/fVuJL8w56j211op+pkQoNzoQ== dependencies: autoprefixer "^10.3.7" - cssnano-preset-default "^5.1.6" - postcss-discard-unused "^5.0.1" - postcss-merge-idents "^5.0.1" - postcss-reduce-idents "^5.0.1" - postcss-zindex "^5.0.1" + cssnano-preset-default "^5.2.5" + postcss-discard-unused "^5.1.0" + postcss-merge-idents "^5.1.1" + postcss-reduce-idents "^5.2.0" + postcss-zindex "^5.1.0" cssnano-preset-default@^5.1.6: version "5.1.6" @@ -4696,12 +4926,61 @@ cssnano-preset-default@^5.1.6: postcss-svgo "^5.0.3" postcss-unique-selectors "^5.0.1" +cssnano-preset-default@^5.2.5: + version "5.2.5" + resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-5.2.5.tgz#267ded811a3e1664d78707f5355fcd89feeb38ac" + integrity sha512-WopL7PzN7sos3X8B54/QGl+CZUh1f0qN4ds+y2d5EPwRSSc3jsitVw81O+Uyop0pXyOfPfZxnc+LmA8w/Ki/WQ== + dependencies: + css-declaration-sorter "^6.0.3" + cssnano-utils "^3.1.0" + postcss-calc "^8.2.3" + postcss-colormin "^5.3.0" + postcss-convert-values "^5.1.0" + postcss-discard-comments "^5.1.1" + postcss-discard-duplicates "^5.1.0" + postcss-discard-empty "^5.1.1" + postcss-discard-overridden "^5.1.0" + postcss-merge-longhand "^5.1.3" + postcss-merge-rules "^5.1.1" + postcss-minify-font-values "^5.1.0" + postcss-minify-gradients "^5.1.1" + postcss-minify-params "^5.1.2" + postcss-minify-selectors "^5.2.0" + postcss-normalize-charset "^5.1.0" + postcss-normalize-display-values "^5.1.0" + postcss-normalize-positions "^5.1.0" + postcss-normalize-repeat-style "^5.1.0" + postcss-normalize-string "^5.1.0" + postcss-normalize-timing-functions "^5.1.0" + postcss-normalize-unicode "^5.1.0" + postcss-normalize-url "^5.1.0" + postcss-normalize-whitespace "^5.1.1" + postcss-ordered-values "^5.1.1" + postcss-reduce-initial "^5.1.0" + postcss-reduce-transforms "^5.1.0" + postcss-svgo "^5.1.0" + postcss-unique-selectors "^5.1.1" + cssnano-utils@^2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-2.0.1.tgz" integrity sha512-i8vLRZTnEH9ubIyfdZCAdIdgnHAUeQeByEeQ2I7oTilvP9oHO6RScpeq3GsFUVqeB8uZgOQ9pw8utofNn32hhQ== -cssnano@^5.0.6, cssnano@^5.0.8: +cssnano-utils@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cssnano-utils/-/cssnano-utils-3.1.0.tgz#95684d08c91511edfc70d2636338ca37ef3a6861" + integrity sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA== + +cssnano@^5.0.17: + version "5.1.5" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-5.1.5.tgz#5f3f519538c7f1c182c527096892243db3e17397" + integrity sha512-VZO1e+bRRVixMeia1zKagrv0lLN1B/r/u12STGNNUFxnp97LIFgZHQa0JxqlwEkvzUyA9Oz/WnCTAFkdEbONmg== + dependencies: + cssnano-preset-default "^5.2.5" + lilconfig "^2.0.3" + yaml "^1.10.2" + +cssnano@^5.0.6: version "5.0.10" resolved "https://registry.npmjs.org/cssnano/-/cssnano-5.0.10.tgz" integrity sha512-YfNhVJJ04imffOpbPbXP2zjIoByf0m8E2c/s/HnvSvjXgzXMfgopVjAEGvxYOjkOpWuRQDg/OZFjO7WW94Ri8w== @@ -5015,6 +5294,11 @@ duplexer@^0.1.2: resolved "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz" integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== +eastasianwidth@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" + integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== + ee-first@1.1.1: version "1.1.1" resolved "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" @@ -5035,6 +5319,11 @@ electron-to-chromium@^1.4.71: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.71.tgz#17056914465da0890ce00351a3b946fd4cd51ff6" integrity sha512-Hk61vXXKRb2cd3znPE9F+2pLWdIOmP7GjiTj45y6L3W/lO+hSnUSUhq+6lEaERWBdZOHbk2s3YV5c9xVl3boVw== +electron-to-chromium@^1.4.84: + version "1.4.92" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.92.tgz#88996e9aceb3a500710fd439abfa89b6cc1ac56c" + integrity sha512-YAVbvQIcDE/IJ/vzDMjD484/hsRbFPW2qXJPaYTfOhtligmfYEYOep+5QojpaEU9kq6bMvNeC2aG7arYvTHYsA== + emitter-component@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/emitter-component/-/emitter-component-1.1.1.tgz#065e2dbed6959bf470679edabeaf7981d1003ab6" @@ -5045,6 +5334,11 @@ emoji-regex@^8.0.0: resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== +emoji-regex@^9.2.2: + version "9.2.2" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== + emojis-list@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz" @@ -5084,6 +5378,14 @@ enhanced-resolve@^5.8.3: graceful-fs "^4.2.4" tapable "^2.2.0" +enhanced-resolve@^5.9.2: + version "5.9.2" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.9.2.tgz#0224dcd6a43389ebfb2d55efee517e5466772dd9" + integrity sha512-GIm3fQfwLJ8YZx2smuHpBKkXC1yOk+OBEmKckVyL0i/ea8mqDEykK3ld5dgH1QYPNyT/lIllxV2LULnxCHaHkA== + dependencies: + graceful-fs "^4.2.4" + tapable "^2.2.0" + entities@^1.1.1, entities@~1.1.1: version "1.1.2" resolved "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz" @@ -5252,9 +5554,9 @@ etag@~1.8.1: resolved "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz" integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= -eval@^0.1.4: +eval@0.1.6: version "0.1.6" - resolved "https://registry.npmjs.org/eval/-/eval-0.1.6.tgz" + resolved "https://registry.yarnpkg.com/eval/-/eval-0.1.6.tgz#9620d7d8c85515e97e6b47c5814f46ae381cb3cc" integrity sha512-o0XUw+5OGkXw4pJZzQoXUk+H87DHuC+7ZE//oSrRGtatTmr12oTnLfg6QOq9DyTt0c/p4TwzgmkKrBzWTSizyQ== dependencies: require-like ">= 0.1.1" @@ -5272,11 +5574,6 @@ eventemitter3@^4.0.0: resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz" integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== -events@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/events/-/events-1.1.1.tgz" - integrity sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ= - events@^3.2.0: version "3.3.0" resolved "https://registry.npmjs.org/events/-/events-3.3.0.tgz" @@ -5527,11 +5824,16 @@ flux@^4.0.1: fbemitter "^3.0.0" fbjs "^3.0.0" -follow-redirects@^1.0.0, follow-redirects@^1.14.0: +follow-redirects@^1.0.0: version "1.14.8" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.8.tgz#016996fb9a11a100566398b1c6839337d7bfa8fc" integrity sha512-1x0S9UVJHsQprFcEC/qnNzBLcIxsjAV905f/UkQxbclCsoTWlacCNOpQa/anodLl2uaEKFhfWOvM2Qg77+15zA== +follow-redirects@^1.14.7: + version "1.14.9" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.9.tgz#dd4ea157de7bfaf9ea9b3fbd85aa16951f78d8d7" + integrity sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w== + fork-ts-checker-webpack-plugin@^6.5.0: version "6.5.0" resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.0.tgz#0282b335fa495a97e167f69018f566ea7d2a2b5e" @@ -5579,15 +5881,20 @@ fraction.js@^4.1.1: resolved "https://registry.npmjs.org/fraction.js/-/fraction.js-4.1.1.tgz" integrity sha512-MHOhvvxHTfRFpF1geTK9czMIZ6xclsEor2wkIGYYq+PxcQqT7vStJqjhe6S1TenZrMZzo+wlqOufBDVepUEgPg== +fraction.js@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.2.0.tgz#448e5109a313a3527f5a3ab2119ec4cf0e0e2950" + integrity sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA== + fresh@0.5.2: version "0.5.2" resolved "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz" integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= -fs-extra@^10.0.0: - version "10.0.0" - resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz" - integrity sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ== +fs-extra@^10.0.1: + version "10.0.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.0.1.tgz#27de43b4320e833f6867cc044bfce29fdf0ef3b8" + integrity sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag== dependencies: graceful-fs "^4.2.0" jsonfile "^6.0.1" @@ -5738,7 +6045,7 @@ globals@^11.1.0: resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== -globby@^11.0.1, globby@^11.0.2, globby@^11.0.4: +globby@^11.0.1, globby@^11.0.4: version "11.0.4" resolved "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz" integrity sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg== @@ -5784,6 +6091,11 @@ graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz" integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg== +graceful-fs@^4.2.9: + version "4.2.9" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.9.tgz#041b05df45755e587a24942279b9d113146e1c96" + integrity sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ== + gray-matter@^4.0.3: version "4.0.3" resolved "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz" @@ -5991,6 +6303,19 @@ html-minifier-terser@^6.0.2: relateurl "^0.2.7" terser "^5.7.2" +html-minifier-terser@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#bfc818934cc07918f6b3669f5774ecdfd48f32ab" + integrity sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw== + dependencies: + camel-case "^4.1.2" + clean-css "^5.2.2" + commander "^8.3.0" + he "^1.2.0" + param-case "^3.0.4" + relateurl "^0.2.7" + terser "^5.10.0" + html-tags@^3.1.0: version "3.1.0" resolved "https://registry.npmjs.org/html-tags/-/html-tags-3.1.0.tgz" @@ -6001,9 +6326,9 @@ html-void-elements@^1.0.0: resolved "https://registry.npmjs.org/html-void-elements/-/html-void-elements-1.0.5.tgz" integrity sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w== -html-webpack-plugin@^5.4.0: +html-webpack-plugin@^5.5.0: version "5.5.0" - resolved "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz" + resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz#c3911936f57681c1f9f4d8b68c158cd9dfe52f50" integrity sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw== dependencies: "@types/html-minifier-terser" "^6.0.0" @@ -6150,7 +6475,7 @@ immutable@^3.x.x: resolved "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz" integrity sha1-wkOZUUVbs5kT2vKBN28VMOEErfM= -import-fresh@^3.1.0, import-fresh@^3.2.1, import-fresh@^3.2.2, import-fresh@^3.3.0: +import-fresh@^3.1.0, import-fresh@^3.2.1, import-fresh@^3.3.0: version "3.3.0" resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz" integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== @@ -6225,7 +6550,7 @@ interpret@^1.0.0: resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== -invariant@^2.2.2: +invariant@^2.2.2, invariant@^2.2.4: version "2.2.4" resolved "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz" integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== @@ -6575,14 +6900,23 @@ jest-worker@^27.0.2, jest-worker@^27.0.6: merge-stream "^2.0.0" supports-color "^8.0.0" -joi@^17.4.0, joi@^17.4.2: - version "17.4.2" - resolved "https://registry.npmjs.org/joi/-/joi-17.4.2.tgz" - integrity sha512-Lm56PP+n0+Z2A2rfRvsfWVDXGEWjXxatPopkQ8qQ5mxCEhwHG+Ettgg5o98FFaxilOxozoa14cFhrE/hOzh/Nw== +jest-worker@^27.4.5: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" + integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +joi@^17.6.0: + version "17.6.0" + resolved "https://registry.yarnpkg.com/joi/-/joi-17.6.0.tgz#0bb54f2f006c09a96e75ce687957bd04290054b2" + integrity sha512-OX5dG6DTbcr/kbMFj0KGYxuew69HPcAE3K/sZpEV2nP6e/j/C0HV+HNiBPCASxdx5T7DMoa0s8UeHWMnb6n2zw== dependencies: "@hapi/hoek" "^9.0.0" "@hapi/topo" "^5.0.0" - "@sideway/address" "^4.1.0" + "@sideway/address" "^4.1.3" "@sideway/formula" "^3.0.0" "@sideway/pinpoint" "^2.0.0" @@ -6596,7 +6930,7 @@ js-file-download@^0.4.12: resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-yaml@=4.1.0, js-yaml@^4.0.0, js-yaml@^4.1.0: +js-yaml@=4.1.0, js-yaml@^4.1.0: version "4.1.0" resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== @@ -6653,13 +6987,6 @@ json2mq@^0.2.0: dependencies: string-convert "^0.2.0" -json5@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz" - integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== - dependencies: - minimist "^1.2.0" - json5@^2.1.2: version "2.2.0" resolved "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz" @@ -6693,9 +7020,9 @@ kleur@^3.0.3: resolved "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz" integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== -klona@^2.0.4: +klona@^2.0.5: version "2.0.5" - resolved "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz" + resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.5.tgz#d166574d90076395d9963aa7a928fabb8d76afbc" integrity sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ== latest-version@^5.1.0: @@ -6725,15 +7052,6 @@ loader-runner@^4.2.0: resolved "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz" integrity sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw== -loader-utils@^1.4.0: - version "1.4.0" - resolved "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz" - integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== - dependencies: - big.js "^5.2.2" - emojis-list "^3.0.0" - json5 "^1.0.1" - loader-utils@^2.0.0: version "2.0.2" resolved "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz" @@ -6906,13 +7224,6 @@ lru-queue@^0.1.0: dependencies: es5-ext "~0.10.2" -magic-string@^0.25.3: - version "0.25.7" - resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz" - integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA== - dependencies: - sourcemap-codec "^1.4.4" - make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0: version "3.1.0" resolved "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz" @@ -7091,14 +7402,12 @@ mini-create-react-context@^0.4.0: "@babel/runtime" "^7.12.1" tiny-warning "^1.0.3" -mini-css-extract-plugin@^1.6.0: - version "1.6.2" - resolved "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-1.6.2.tgz" - integrity sha512-WhDvO3SjGm40oV5y26GjMJYjd2UMqrLAGKy5YS2/3QKJy2F7jgynuHTir/tgUUOiNQu5saXHdc8reo7YuhhT4Q== +mini-css-extract-plugin@^2.5.3: + version "2.6.0" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.6.0.tgz#578aebc7fc14d32c0ad304c2c34f08af44673f5e" + integrity sha512-ndG8nxCEnAemsg4FSgS+yNyHKgkTB4nPKqCOgh65j3/30qqC5RaSQQXMm++Y6sb6E1zRSxPkztj9fqxhS1Eo6w== dependencies: - loader-utils "^2.0.0" - schema-utils "^3.0.0" - webpack-sources "^1.1.0" + schema-utils "^4.0.0" minimalistic-assert@^1.0.0: version "1.0.1" @@ -7169,7 +7478,7 @@ multicast-dns@^6.0.1: dns-packet "^1.3.1" thunky "^1.0.2" -nanoid@^3.1.30, nanoid@^3.2.0: +nanoid@^3.1.30, nanoid@^3.3.1: version "3.3.1" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.1.tgz#6347a18cac88af88f58af0b3594b723d5e99bb35" integrity sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw== @@ -7611,6 +7920,14 @@ postcss-calc@^8.0.0: postcss-selector-parser "^6.0.2" postcss-value-parser "^4.0.2" +postcss-calc@^8.2.3: + version "8.2.4" + resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-8.2.4.tgz#77b9c29bfcbe8a07ff6693dc87050828889739a5" + integrity sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q== + dependencies: + postcss-selector-parser "^6.0.9" + postcss-value-parser "^4.2.0" + postcss-colormin@^5.2.1: version "5.2.1" resolved "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.2.1.tgz" @@ -7621,6 +7938,16 @@ postcss-colormin@^5.2.1: colord "^2.9.1" postcss-value-parser "^4.1.0" +postcss-colormin@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-5.3.0.tgz#3cee9e5ca62b2c27e84fce63affc0cfb5901956a" + integrity sha512-WdDO4gOFG2Z8n4P8TWBpshnL3JpmNmJwdnfP2gbk2qBA8PWwOYcmjmI/t3CmMeL72a7Hkd+x/Mg9O2/0rD54Pg== + dependencies: + browserslist "^4.16.6" + caniuse-api "^3.0.0" + colord "^2.9.1" + postcss-value-parser "^4.2.0" + postcss-convert-values@^5.0.2: version "5.0.2" resolved "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.0.2.tgz" @@ -7628,49 +7955,76 @@ postcss-convert-values@^5.0.2: dependencies: postcss-value-parser "^4.1.0" +postcss-convert-values@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-5.1.0.tgz#f8d3abe40b4ce4b1470702a0706343eac17e7c10" + integrity sha512-GkyPbZEYJiWtQB0KZ0X6qusqFHUepguBCNFi9t5JJc7I2OTXG7C0twbTLvCfaKOLl3rSXmpAwV7W5txd91V84g== + dependencies: + postcss-value-parser "^4.2.0" + postcss-discard-comments@^5.0.1: version "5.0.1" resolved "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.0.1.tgz" integrity sha512-lgZBPTDvWrbAYY1v5GYEv8fEO/WhKOu/hmZqmCYfrpD6eyDWWzAOsl2rF29lpvziKO02Gc5GJQtlpkTmakwOWg== +postcss-discard-comments@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-5.1.1.tgz#e90019e1a0e5b99de05f63516ce640bd0df3d369" + integrity sha512-5JscyFmvkUxz/5/+TB3QTTT9Gi9jHkcn8dcmmuN68JQcv3aQg4y88yEHHhwFB52l/NkaJ43O0dbksGMAo49nfQ== + postcss-discard-duplicates@^5.0.1: version "5.0.1" resolved "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.0.1.tgz" integrity sha512-svx747PWHKOGpAXXQkCc4k/DsWo+6bc5LsVrAsw+OU+Ibi7klFZCyX54gjYzX4TH+f2uzXjRviLARxkMurA2bA== +postcss-discard-duplicates@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz#9eb4fe8456706a4eebd6d3b7b777d07bad03e848" + integrity sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw== + postcss-discard-empty@^5.0.1: version "5.0.1" resolved "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.0.1.tgz" integrity sha512-vfU8CxAQ6YpMxV2SvMcMIyF2LX1ZzWpy0lqHDsOdaKKLQVQGVP1pzhrI9JlsO65s66uQTfkQBKBD/A5gp9STFw== +postcss-discard-empty@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz#e57762343ff7f503fe53fca553d18d7f0c369c6c" + integrity sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A== + postcss-discard-overridden@^5.0.1: version "5.0.1" resolved "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.0.1.tgz" integrity sha512-Y28H7y93L2BpJhrdUR2SR2fnSsT+3TVx1NmVQLbcnZWwIUpJ7mfcTC6Za9M2PG6w8j7UQRfzxqn8jU2VwFxo3Q== -postcss-discard-unused@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-5.0.1.tgz" - integrity sha512-tD6xR/xyZTwfhKYRw0ylfCY8wbfhrjpKAMnDKRTLMy2fNW5hl0hoV6ap5vo2JdCkuHkP3CHw72beO4Y8pzFdww== +postcss-discard-overridden@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz#7e8c5b53325747e9d90131bb88635282fb4a276e" + integrity sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw== + +postcss-discard-unused@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-discard-unused/-/postcss-discard-unused-5.1.0.tgz#8974e9b143d887677304e558c1166d3762501142" + integrity sha512-KwLWymI9hbwXmJa0dkrzpRbSJEh0vVUd7r8t0yOGPcfKzyJJxFM8kLyC5Ev9avji6nY95pOp1W6HqIrfT+0VGw== dependencies: postcss-selector-parser "^6.0.5" -postcss-loader@^6.1.1: - version "6.2.0" - resolved "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.0.tgz" - integrity sha512-H9hv447QjQJVDbHj3OUdciyAXY3v5+UDduzEytAlZCVHCpNAAg/mCSwhYYqZr9BiGYhmYspU8QXxZwiHTLn3yA== +postcss-loader@^6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-6.2.1.tgz#0895f7346b1702103d30fdc66e4d494a93c008ef" + integrity sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q== dependencies: cosmiconfig "^7.0.0" - klona "^2.0.4" + klona "^2.0.5" semver "^7.3.5" -postcss-merge-idents@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-5.0.1.tgz" - integrity sha512-xu8ueVU0RszbI2gKkxR6mluupsOSSLvt8q4gA2fcKFkA+x6SlH3cb4cFHpDvcRCNFbUmCR/VUub+Y6zPOjPx+Q== +postcss-merge-idents@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-merge-idents/-/postcss-merge-idents-5.1.1.tgz#7753817c2e0b75d0853b56f78a89771e15ca04a1" + integrity sha512-pCijL1TREiCoog5nQp7wUe+TUonA2tC2sQ54UGeMmryK3UFGIYKqDyjnqd6RcuI4znFn9hWSLNN8xKE/vWcUQw== dependencies: - cssnano-utils "^2.0.1" - postcss-value-parser "^4.1.0" + cssnano-utils "^3.1.0" + postcss-value-parser "^4.2.0" postcss-merge-longhand@^5.0.3: version "5.0.3" @@ -7681,6 +8035,14 @@ postcss-merge-longhand@^5.0.3: postcss-value-parser "^4.1.0" stylehacks "^5.0.1" +postcss-merge-longhand@^5.1.3: + version "5.1.3" + resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-5.1.3.tgz#a49e2be6237316e3b55e329e0a8da15d1f9f47ab" + integrity sha512-lX8GPGvZ0iGP/IboM7HXH5JwkXvXod1Rr8H8ixwiA372hArk0zP4ZcCy4z4Prg/bfNlbbTf0KCOjCF9kKnpP/w== + dependencies: + postcss-value-parser "^4.2.0" + stylehacks "^5.1.0" + postcss-merge-rules@^5.0.2: version "5.0.2" resolved "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.0.2.tgz" @@ -7692,6 +8054,16 @@ postcss-merge-rules@^5.0.2: postcss-selector-parser "^6.0.5" vendors "^1.0.3" +postcss-merge-rules@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-5.1.1.tgz#d327b221cd07540bcc8d9ff84446d8b404d00162" + integrity sha512-8wv8q2cXjEuCcgpIB1Xx1pIy8/rhMPIQqYKNzEdyx37m6gpq83mQQdCxgIkFgliyEnKvdwJf/C61vN4tQDq4Ww== + dependencies: + browserslist "^4.16.6" + caniuse-api "^3.0.0" + cssnano-utils "^3.1.0" + postcss-selector-parser "^6.0.5" + postcss-minify-font-values@^5.0.1: version "5.0.1" resolved "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.0.1.tgz" @@ -7699,6 +8071,13 @@ postcss-minify-font-values@^5.0.1: dependencies: postcss-value-parser "^4.1.0" +postcss-minify-font-values@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz#f1df0014a726083d260d3bd85d7385fb89d1f01b" + integrity sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA== + dependencies: + postcss-value-parser "^4.2.0" + postcss-minify-gradients@^5.0.3: version "5.0.3" resolved "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.0.3.tgz" @@ -7708,6 +8087,15 @@ postcss-minify-gradients@^5.0.3: cssnano-utils "^2.0.1" postcss-value-parser "^4.1.0" +postcss-minify-gradients@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz#f1fe1b4f498134a5068240c2f25d46fcd236ba2c" + integrity sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw== + dependencies: + colord "^2.9.1" + cssnano-utils "^3.1.0" + postcss-value-parser "^4.2.0" + postcss-minify-params@^5.0.1: version "5.0.1" resolved "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.0.1.tgz" @@ -7719,6 +8107,15 @@ postcss-minify-params@^5.0.1: postcss-value-parser "^4.1.0" uniqs "^2.0.0" +postcss-minify-params@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-5.1.2.tgz#77e250780c64198289c954884ebe3ee4481c3b1c" + integrity sha512-aEP+p71S/urY48HWaRHasyx4WHQJyOYaKpQ6eXl8k0kxg66Wt/30VR6/woh8THgcpRbonJD5IeD+CzNhPi1L8g== + dependencies: + browserslist "^4.16.6" + cssnano-utils "^3.1.0" + postcss-value-parser "^4.2.0" + postcss-minify-selectors@^5.1.0: version "5.1.0" resolved "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.1.0.tgz" @@ -7727,6 +8124,13 @@ postcss-minify-selectors@^5.1.0: alphanum-sort "^1.0.2" postcss-selector-parser "^6.0.5" +postcss-minify-selectors@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-5.2.0.tgz#17c2be233e12b28ffa8a421a02fc8b839825536c" + integrity sha512-vYxvHkW+iULstA+ctVNx0VoRAR4THQQRkG77o0oa4/mBS0OzGvvzLIvHDv/nNEM0crzN2WIyFU5X7wZhaUK3RA== + dependencies: + postcss-selector-parser "^6.0.5" + postcss-modules-extract-imports@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz" @@ -7760,6 +8164,11 @@ postcss-normalize-charset@^5.0.1: resolved "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.0.1.tgz" integrity sha512-6J40l6LNYnBdPSk+BHZ8SF+HAkS4q2twe5jnocgd+xWpz/mx/5Sa32m3W1AA8uE8XaXN+eg8trIlfu8V9x61eg== +postcss-normalize-charset@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz#9302de0b29094b52c259e9b2cf8dc0879879f0ed" + integrity sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg== + postcss-normalize-display-values@^5.0.1: version "5.0.1" resolved "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.0.1.tgz" @@ -7768,6 +8177,13 @@ postcss-normalize-display-values@^5.0.1: cssnano-utils "^2.0.1" postcss-value-parser "^4.1.0" +postcss-normalize-display-values@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz#72abbae58081960e9edd7200fcf21ab8325c3da8" + integrity sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA== + dependencies: + postcss-value-parser "^4.2.0" + postcss-normalize-positions@^5.0.1: version "5.0.1" resolved "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.0.1.tgz" @@ -7775,6 +8191,13 @@ postcss-normalize-positions@^5.0.1: dependencies: postcss-value-parser "^4.1.0" +postcss-normalize-positions@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-5.1.0.tgz#902a7cb97cf0b9e8b1b654d4a43d451e48966458" + integrity sha512-8gmItgA4H5xiUxgN/3TVvXRoJxkAWLW6f/KKhdsH03atg0cB8ilXnrB5PpSshwVu/dD2ZsRFQcR1OEmSBDAgcQ== + dependencies: + postcss-value-parser "^4.2.0" + postcss-normalize-repeat-style@^5.0.1: version "5.0.1" resolved "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.0.1.tgz" @@ -7783,6 +8206,13 @@ postcss-normalize-repeat-style@^5.0.1: cssnano-utils "^2.0.1" postcss-value-parser "^4.1.0" +postcss-normalize-repeat-style@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.0.tgz#f6d6fd5a54f51a741cc84a37f7459e60ef7a6398" + integrity sha512-IR3uBjc+7mcWGL6CtniKNQ4Rr5fTxwkaDHwMBDGGs1x9IVRkYIT/M4NelZWkAOBdV6v3Z9S46zqaKGlyzHSchw== + dependencies: + postcss-value-parser "^4.2.0" + postcss-normalize-string@^5.0.1: version "5.0.1" resolved "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.0.1.tgz" @@ -7790,6 +8220,13 @@ postcss-normalize-string@^5.0.1: dependencies: postcss-value-parser "^4.1.0" +postcss-normalize-string@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz#411961169e07308c82c1f8c55f3e8a337757e228" + integrity sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w== + dependencies: + postcss-value-parser "^4.2.0" + postcss-normalize-timing-functions@^5.0.1: version "5.0.1" resolved "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.0.1.tgz" @@ -7798,6 +8235,13 @@ postcss-normalize-timing-functions@^5.0.1: cssnano-utils "^2.0.1" postcss-value-parser "^4.1.0" +postcss-normalize-timing-functions@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz#d5614410f8f0b2388e9f240aa6011ba6f52dafbb" + integrity sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg== + dependencies: + postcss-value-parser "^4.2.0" + postcss-normalize-unicode@^5.0.1: version "5.0.1" resolved "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.0.1.tgz" @@ -7806,6 +8250,14 @@ postcss-normalize-unicode@^5.0.1: browserslist "^4.16.0" postcss-value-parser "^4.1.0" +postcss-normalize-unicode@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.0.tgz#3d23aede35e160089a285e27bf715de11dc9db75" + integrity sha512-J6M3MizAAZ2dOdSjy2caayJLQT8E8K9XjLce8AUQMwOrCvjCHv24aLC/Lps1R1ylOfol5VIDMaM/Lo9NGlk1SQ== + dependencies: + browserslist "^4.16.6" + postcss-value-parser "^4.2.0" + postcss-normalize-url@^5.0.2: version "5.0.2" resolved "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.0.2.tgz" @@ -7815,6 +8267,14 @@ postcss-normalize-url@^5.0.2: normalize-url "^6.0.1" postcss-value-parser "^4.1.0" +postcss-normalize-url@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz#ed9d88ca82e21abef99f743457d3729a042adcdc" + integrity sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew== + dependencies: + normalize-url "^6.0.1" + postcss-value-parser "^4.2.0" + postcss-normalize-whitespace@^5.0.1: version "5.0.1" resolved "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.0.1.tgz" @@ -7822,6 +8282,13 @@ postcss-normalize-whitespace@^5.0.1: dependencies: postcss-value-parser "^4.1.0" +postcss-normalize-whitespace@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz#08a1a0d1ffa17a7cc6efe1e6c9da969cc4493cfa" + integrity sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA== + dependencies: + postcss-value-parser "^4.2.0" + postcss-ordered-values@^5.0.2: version "5.0.2" resolved "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.0.2.tgz" @@ -7830,12 +8297,20 @@ postcss-ordered-values@^5.0.2: cssnano-utils "^2.0.1" postcss-value-parser "^4.1.0" -postcss-reduce-idents@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-5.0.1.tgz" - integrity sha512-6Rw8iIVFbqtaZExgWK1rpVgP7DPFRPh0DDFZxJ/ADNqPiH10sPCoq5tgo6kLiTyfh9sxjKYjXdc8udLEcPOezg== +postcss-ordered-values@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-5.1.1.tgz#0b41b610ba02906a3341e92cab01ff8ebc598adb" + integrity sha512-7lxgXF0NaoMIgyihL/2boNAEZKiW0+HkMhdKMTD93CjW8TdCy2hSdj8lsAo+uwm7EDG16Da2Jdmtqpedl0cMfw== dependencies: - postcss-value-parser "^4.1.0" + cssnano-utils "^3.1.0" + postcss-value-parser "^4.2.0" + +postcss-reduce-idents@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/postcss-reduce-idents/-/postcss-reduce-idents-5.2.0.tgz#c89c11336c432ac4b28792f24778859a67dfba95" + integrity sha512-BTrLjICoSB6gxbc58D5mdBK8OhXRDqud/zodYfdSi52qvDHdMwk+9kB9xsM8yJThH/sZU5A6QVSmMmaN001gIg== + dependencies: + postcss-value-parser "^4.2.0" postcss-reduce-initial@^5.0.1: version "5.0.1" @@ -7845,6 +8320,14 @@ postcss-reduce-initial@^5.0.1: browserslist "^4.16.0" caniuse-api "^3.0.0" +postcss-reduce-initial@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-5.1.0.tgz#fc31659ea6e85c492fb2a7b545370c215822c5d6" + integrity sha512-5OgTUviz0aeH6MtBjHfbr57tml13PuedK/Ecg8szzd4XRMbYxH4572JFG067z+FqBIf6Zp/d+0581glkvvWMFw== + dependencies: + browserslist "^4.16.6" + caniuse-api "^3.0.0" + postcss-reduce-transforms@^5.0.1: version "5.0.1" resolved "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.0.1.tgz" @@ -7853,6 +8336,13 @@ postcss-reduce-transforms@^5.0.1: cssnano-utils "^2.0.1" postcss-value-parser "^4.1.0" +postcss-reduce-transforms@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz#333b70e7758b802f3dd0ddfe98bb1ccfef96b6e9" + integrity sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ== + dependencies: + postcss-value-parser "^4.2.0" + postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5: version "6.0.6" resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz" @@ -7861,10 +8351,18 @@ postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector cssesc "^3.0.0" util-deprecate "^1.0.2" -postcss-sort-media-queries@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/postcss-sort-media-queries/-/postcss-sort-media-queries-4.1.0.tgz" - integrity sha512-pPiw94cMOqGFSlp4QGzOKrhYr8O3VyMNQnb7qlGM25H4EDEii3iKtIUMoFe5gKiCEAt/Iyk2ah47eoRhGqSBGA== +postcss-selector-parser@^6.0.9: + version "6.0.9" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.9.tgz#ee71c3b9ff63d9cd130838876c13a2ec1a992b2f" + integrity sha512-UO3SgnZOVTwu4kyLR22UQ1xZh086RyNZppb7lLAKBFK8a32ttG5i87Y/P3+2bRSjZNyJ1B7hfFNo273tKe9YxQ== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + +postcss-sort-media-queries@^4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/postcss-sort-media-queries/-/postcss-sort-media-queries-4.2.1.tgz#a99bae69ef1098ee3b64a5fa94d258ec240d0355" + integrity sha512-9VYekQalFZ3sdgcTjXMa0dDjsfBVHXlraYJEMiOJ/2iMmI2JGCMavP16z3kWOaRu8NSaJCTgVpB/IVpH5yT9YQ== dependencies: sort-css-media-queries "2.0.4" @@ -7876,6 +8374,14 @@ postcss-svgo@^5.0.3: postcss-value-parser "^4.1.0" svgo "^2.7.0" +postcss-svgo@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-5.1.0.tgz#0a317400ced789f233a28826e77523f15857d80d" + integrity sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA== + dependencies: + postcss-value-parser "^4.2.0" + svgo "^2.7.0" + postcss-unique-selectors@^5.0.1: version "5.0.1" resolved "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.0.1.tgz" @@ -7885,6 +8391,13 @@ postcss-unique-selectors@^5.0.1: postcss-selector-parser "^6.0.5" uniqs "^2.0.0" +postcss-unique-selectors@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz#a9f273d1eacd09e9aa6088f4b0507b18b1b541b6" + integrity sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA== + dependencies: + postcss-selector-parser "^6.0.5" + postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0: version "4.1.0" resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz" @@ -7895,12 +8408,12 @@ postcss-value-parser@^4.2.0: resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== -postcss-zindex@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-5.0.1.tgz" - integrity sha512-nwgtJJys+XmmSGoYCcgkf/VczP8Mp/0OfSv3v0+fw0uABY4yxw+eFs0Xp9nAZHIKnS5j+e9ywQ+RD+ONyvl5pA== +postcss-zindex@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-zindex/-/postcss-zindex-5.1.0.tgz#4a5c7e5ff1050bd4c01d95b1847dfdcc58a496ff" + integrity sha512-fgFMf0OtVSBR1va1JNHYgMxYk73yhn/qb4uQDq1DLGYolz8gHCyr/sesEuGUaYs58E3ZJRcpoGuPVoB7Meiq9A== -postcss@^8.3.11, postcss@^8.3.5, postcss@^8.3.7: +postcss@^8.3.11, postcss@^8.3.5: version "8.3.11" resolved "https://registry.npmjs.org/postcss/-/postcss-8.3.11.tgz" integrity sha512-hCmlUAIlUiav8Xdqw3Io4LcpA1DOt7h3LSTAC4G6JGHFFaWzI6qvFt9oilvl8BmkbBRX1IhM90ZAmpk68zccQA== @@ -7909,12 +8422,12 @@ postcss@^8.3.11, postcss@^8.3.5, postcss@^8.3.7: picocolors "^1.0.0" source-map-js "^0.6.2" -postcss@^8.4.5: - version "8.4.6" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.6.tgz#c5ff3c3c457a23864f32cb45ac9b741498a09ae1" - integrity sha512-OovjwIzs9Te46vlEx7+uXB0PLijpwjXGKXjVGGPIGubGpq7uh5Xgf6D6FiJ/SzJMBosHDp6a2hiXOS97iBXcaA== +postcss@^8.4.7: + version "8.4.12" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.12.tgz#1e7de78733b28970fa4743f7da6f3763648b1905" + integrity sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg== dependencies: - nanoid "^3.2.0" + nanoid "^3.3.1" picocolors "^1.0.0" source-map-js "^1.0.2" @@ -7941,11 +8454,21 @@ prism-react-renderer@^1.2.1: resolved "https://registry.npmjs.org/prism-react-renderer/-/prism-react-renderer-1.2.1.tgz" integrity sha512-w23ch4f75V1Tnz8DajsYKvY5lF7H1+WvzvLUcF0paFxkTHSp42RS0H5CttdN2Q8RR3DRGZ9v5xD/h3n8C8kGmg== -prismjs@^1.23.0, prismjs@^1.25.0, prismjs@~1.25.0: +prism-react-renderer@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/prism-react-renderer/-/prism-react-renderer-1.3.1.tgz#88fc9d0df6bed06ca2b9097421349f8c2f24e30d" + integrity sha512-xUeDMEz074d0zc5y6rxiMp/dlC7C+5IDDlaEUlcBOFE2wddz7hz5PNupb087mPwTt7T9BrFmewObfCBuf/LKwQ== + +prismjs@^1.25.0, prismjs@~1.25.0: version "1.25.0" resolved "https://registry.npmjs.org/prismjs/-/prismjs-1.25.0.tgz" integrity sha512-WCjJHl1KEWbnkQom1+SzftbtXMKQoezOCYs5rECqMN+jP+apI7ftoflyqigqzopSO3hMhTEb0mFClA8lkolgEg== +prismjs@^1.27.0: + version "1.27.0" + resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.27.0.tgz#bb6ee3138a0b438a3653dd4d6ce0cc6510a45057" + integrity sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA== + process-nextick-args@~2.0.0: version "2.0.1" resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" @@ -7958,7 +8481,7 @@ promise@^7.1.1: dependencies: asap "~2.0.3" -prompts@^2.4.1, prompts@^2.4.2: +prompts@^2.4.2: version "2.4.2" resolved "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz" integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== @@ -8167,19 +8690,20 @@ rc-dropdown@^3.2.0: classnames "^2.2.6" rc-trigger "^5.0.4" -rc-dropdown@~3.2.0: - version "3.2.5" - resolved "https://registry.yarnpkg.com/rc-dropdown/-/rc-dropdown-3.2.5.tgz#c211e571d29d15e7f725b5a75fc8c7f371fc3348" - integrity sha512-dVO2eulOSbEf+F4OyhCY5iGiMVhUYY/qeXxL7Ex2jDBt/xc89jU07mNoowV6aWxwVOc70pxEINff0oM2ogjluA== +rc-dropdown@~3.3.2: + version "3.3.3" + resolved "https://registry.yarnpkg.com/rc-dropdown/-/rc-dropdown-3.3.3.tgz#17ba32ebd066ae397b00e9e4d570c7c21daed88f" + integrity sha512-UNe68VpvtrpU0CS4jh5hD4iGqzi4Pdp7uOya6+H3QIEZxe7K+Xs11BNjZm6W4MaL0jTmzUj+bxvnq5bP3rRoVQ== dependencies: "@babel/runtime" "^7.10.1" classnames "^2.2.6" rc-trigger "^5.0.4" + rc-util "^5.17.0" -rc-field-form@~1.22.0-2: - version "1.22.1" - resolved "https://registry.yarnpkg.com/rc-field-form/-/rc-field-form-1.22.1.tgz#0bd2f4e730ff2f071529d00bef28e062362890f5" - integrity sha512-LweU7nBeqmC5r3HDUjRprcOXXobHXp/TGIxD7ppBq5FX6Iptt3ibdpRVg4RSyNulBNGHOuknHlRcguuIpvVMVg== +rc-field-form@~1.24.0: + version "1.24.0" + resolved "https://registry.yarnpkg.com/rc-field-form/-/rc-field-form-1.24.0.tgz#2510a5c34713831ddcb412d4560be9057fc0dc5e" + integrity sha512-5beNBU5gEyi8YRYyqbTWSu5hO0jZQN0AWpY3U7TcllUKrDLcZZdRXuAOpyxJQcttWFs+UAFsbcRAUtnOGBjl7w== dependencies: "@babel/runtime" "^7.8.4" async-validator "^4.0.2" @@ -8204,6 +8728,15 @@ rc-input-number@~7.3.0: classnames "^2.2.5" rc-util "^5.9.8" +rc-input@~0.0.1-alpha.5: + version "0.0.1-alpha.6" + resolved "https://registry.yarnpkg.com/rc-input/-/rc-input-0.0.1-alpha.6.tgz#b9bcfb41251ca07aa183c03a3574fbc14fa2e426" + integrity sha512-kgpmbxa9vp6kPLW7IP5/Lf6wuaMq+pUq+dPz98vIM58h4wkEKgBQlkMIg9OCEVQIiR8rEPEoe4dO2fc9R0aypQ== + dependencies: + "@babel/runtime" "^7.11.1" + classnames "^2.2.1" + rc-util "^5.18.1" + rc-mentions@~1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/rc-mentions/-/rc-mentions-1.6.1.tgz#46035027d64aa33ef840ba0fbd411871e34617ae" @@ -8216,7 +8749,7 @@ rc-mentions@~1.6.1: rc-trigger "^5.0.4" rc-util "^5.0.1" -rc-menu@^9.0.0: +rc-menu@^9.0.0, rc-menu@~9.3.2: version "9.3.2" resolved "https://registry.yarnpkg.com/rc-menu/-/rc-menu-9.3.2.tgz#bb842d37ebf71da912bea201cf7ef0a27267ad49" integrity sha512-h3m45oY1INZyqphGELkdT0uiPnFzxkML8m0VMhJnk2fowtqfiT7F5tJLT3znEVaPIY80vMy1bClCkgq8U91CzQ== @@ -8229,19 +8762,6 @@ rc-menu@^9.0.0: rc-util "^5.12.0" shallowequal "^1.1.0" -rc-menu@~9.2.1: - version "9.2.1" - resolved "https://registry.yarnpkg.com/rc-menu/-/rc-menu-9.2.1.tgz#6fbe47f4846363bb81a5a21f0960026c3ada497a" - integrity sha512-UbEtn3rflJ8zS+etYGTVQuzy7Fm+yWXR5c0Rl6ecNTS/dPknRyWAyhJcbeR0Hu1+RdQT+0VCqrUPrgKnm4iY+w== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "2.x" - rc-motion "^2.4.3" - rc-overflow "^1.2.0" - rc-trigger "^5.1.2" - rc-util "^5.12.0" - shallowequal "^1.1.0" - rc-motion@^2.0.0, rc-motion@^2.0.1, rc-motion@^2.2.0, rc-motion@^2.3.0, rc-motion@^2.3.4, rc-motion@^2.4.3, rc-motion@^2.4.4: version "2.4.4" resolved "https://registry.yarnpkg.com/rc-motion/-/rc-motion-2.4.4.tgz#e995d5fa24fc93065c24f714857cf2677d655bb0" @@ -8279,10 +8799,10 @@ rc-pagination@~3.1.9: "@babel/runtime" "^7.10.1" classnames "^2.2.1" -rc-picker@~2.5.17: - version "2.5.19" - resolved "https://registry.yarnpkg.com/rc-picker/-/rc-picker-2.5.19.tgz#73d07546fac3992f0bfabf2789654acada39e46f" - integrity sha512-u6myoCu/qiQ0vLbNzSzNrzTQhs7mldArCpPHrEI6OUiifs+IPXmbesqSm0zilJjfzrZJLgYeyyOMSznSlh0GKA== +rc-picker@~2.6.4: + version "2.6.5" + resolved "https://registry.yarnpkg.com/rc-picker/-/rc-picker-2.6.5.tgz#a7cf8eb0723ec81e379c784c4b798b7fe076dd8c" + integrity sha512-4pcg0PgEz4YXBfdwMuHIKaRWaADm3k3g0NtoPIgeGM+VVeOBdUowTx0YSXnT8mQEXcE9lWXX+ZX3biAzQwDM1w== dependencies: "@babel/runtime" "^7.10.1" classnames "^2.2.1" @@ -8321,7 +8841,7 @@ rc-resize-observer@^1.0.0, rc-resize-observer@^1.1.0, rc-resize-observer@^1.2.0: rc-util "^5.15.0" resize-observer-polyfill "^1.5.1" -rc-select@~14.0.0-alpha.15, rc-select@~14.0.0-alpha.23, rc-select@~14.0.0-alpha.8: +rc-select@~14.0.0-alpha.23, rc-select@~14.0.0-alpha.8: version "14.0.0-alpha.25" resolved "https://registry.yarnpkg.com/rc-select/-/rc-select-14.0.0-alpha.25.tgz#9e6ca83b090e020a730fdfdab07c1050549426e4" integrity sha512-U9AMzXsOCCdtn96YIZdUrYbxk+5u6uWUCaYH2129X3FTjQITqAjEPYHfPcxU/G7+lwiD0pIaU95W0NMkg+26qw== @@ -8334,15 +8854,28 @@ rc-select@~14.0.0-alpha.15, rc-select@~14.0.0-alpha.23, rc-select@~14.0.0-alpha. rc-util "^5.16.1" rc-virtual-list "^3.2.0" -rc-slider@~9.7.4: - version "9.7.5" - resolved "https://registry.yarnpkg.com/rc-slider/-/rc-slider-9.7.5.tgz#193141c68e99b1dc3b746daeb6bf852946f5b7f4" - integrity sha512-LV/MWcXFjco1epPbdw1JlLXlTgmWpB9/Y/P2yinf8Pg3wElHxA9uajN21lJiWtZjf5SCUekfSP6QMJfDo4t1hg== +rc-select@~14.0.2: + version "14.0.5" + resolved "https://registry.yarnpkg.com/rc-select/-/rc-select-14.0.5.tgz#145c42e7fd66a7fc6c5c56f6b0cf35d8b50f9e23" + integrity sha512-5X1bcktpE9++7Ef9Uq7f35kobGBNnddaDhkECjeICWIkCsl9xfYtujQiK1YEYXO5EIYoTVLV30PwN/E3mWAKOQ== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "2.x" + rc-motion "^2.0.1" + rc-overflow "^1.0.0" + rc-trigger "^5.0.4" + rc-util "^5.16.1" + rc-virtual-list "^3.2.0" + +rc-slider@~10.0.0-alpha.4: + version "10.0.0-alpha.6" + resolved "https://registry.yarnpkg.com/rc-slider/-/rc-slider-10.0.0-alpha.6.tgz#d1f0098a2044a0063c912d049a1309e3357404d6" + integrity sha512-4tMChJ3lzX0qlttcXqJ2xecQ+CmZYPXJGDOvPnIS5YWsiSl452vt377/l8A1ZnwjwKAAy2V6nrOXNdqPP2Tq7w== dependencies: "@babel/runtime" "^7.10.1" classnames "^2.2.5" rc-tooltip "^5.0.1" - rc-util "^5.16.1" + rc-util "^5.18.1" shallowequal "^1.1.0" rc-steps@~4.1.0: @@ -8363,10 +8896,10 @@ rc-switch@~3.2.0: classnames "^2.2.1" rc-util "^5.0.1" -rc-table@~7.22.2: - version "7.22.2" - resolved "https://registry.yarnpkg.com/rc-table/-/rc-table-7.22.2.tgz#218f3f53bc91660560a344c8290a91a841a60b0a" - integrity sha512-Ng2gNkGi6ybl6dzneRn2H4Gp8XhIbRa5rXQ7ZhZcgWVmfVMok70UHGPXcf68tXW6O0/qckTf/eOVsoviSvK4sw== +rc-table@~7.23.0: + version "7.23.2" + resolved "https://registry.yarnpkg.com/rc-table/-/rc-table-7.23.2.tgz#f6f906e8fafb05ddbfdd69d450feb875ce260a7b" + integrity sha512-opc2IBJOetsPSdNI+u1Lh9yY4Ks+EMgo1oJzZN+yIV4fRcgP81tHtxdPOVvXPFI4rUMO8CKnmHbGPU7jxMRAeg== dependencies: "@babel/runtime" "^7.10.1" classnames "^2.2.5" @@ -8456,6 +8989,15 @@ rc-util@^5.0.1, rc-util@^5.0.6, rc-util@^5.0.7, rc-util@^5.12.0, rc-util@^5.14.0 react-is "^16.12.0" shallowequal "^1.1.0" +rc-util@^5.17.0, rc-util@^5.18.1, rc-util@^5.19.3: + version "5.19.3" + resolved "https://registry.yarnpkg.com/rc-util/-/rc-util-5.19.3.tgz#5f6aa854820f6d5824451d80771035b013eaf6d8" + integrity sha512-S28epi9E2s7Nir05q8Ffl3hzDLwkavTGi0PGH1cTqCmkpG1AeBEuZgQDpksYeU6IgHcds5hWIPE5PUcdFiZl8w== + dependencies: + "@babel/runtime" "^7.12.5" + react-is "^16.12.0" + shallowequal "^1.1.0" + rc-virtual-list@^3.2.0, rc-virtual-list@^3.4.1: version "3.4.2" resolved "https://registry.yarnpkg.com/rc-virtual-list/-/rc-virtual-list-3.4.2.tgz#1078327aa7230b5e456d679ed2ce99f3c036ebd1" @@ -8545,9 +9087,9 @@ react-error-overlay@^6.0.10: resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.10.tgz#0fe26db4fa85d9dbb8624729580e90e7159a59a6" integrity sha512-mKR90fX7Pm5seCOfz8q9F+66VCc1PGsWSBxKbITjfKVQHMNF2zudxHnMdJiB1fRCb+XsbQV9sO9DCkgsMQgBIA== -react-fast-compare@^3.1.1: +react-fast-compare@^3.2.0: version "3.2.0" - resolved "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.0.tgz" + resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-3.2.0.tgz#641a9da81b6a6320f270e89724fb45a0b39e43bb" integrity sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA== react-github-btn@^1.2.0: @@ -8557,15 +9099,16 @@ react-github-btn@^1.2.0: dependencies: github-buttons "^2.8.0" -react-helmet@^6.1.0: - version "6.1.0" - resolved "https://registry.npmjs.org/react-helmet/-/react-helmet-6.1.0.tgz" - integrity sha512-4uMzEY9nlDlgxr61NL3XbKRy1hEkXmKNXhjbAIOVw5vcFrsdYbH2FEwcNyWvWinl103nXgzYNlns9ca+8kFiWw== +react-helmet-async@*, react-helmet-async@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/react-helmet-async/-/react-helmet-async-1.2.3.tgz#57326a69304ea3293036eafb49475e9ba454cb37" + integrity sha512-mCk2silF53Tq/YaYdkl2sB+/tDoPnaxN7dFS/6ZLJb/rhUY2EWGI5Xj2b4jHppScMqY45MbgPSwTxDchKpZ5Kw== dependencies: - object-assign "^4.1.1" + "@babel/runtime" "^7.12.5" + invariant "^2.2.4" prop-types "^15.7.2" - react-fast-compare "^3.1.1" - react-side-effect "^2.1.0" + react-fast-compare "^3.2.0" + shallowequal "^1.1.0" react-immutable-proptypes@2.2.0: version "2.2.0" @@ -8668,11 +9211,6 @@ react-router@5.2.1, react-router@^5.2.0: tiny-invariant "^1.0.2" tiny-warning "^1.0.0" -react-side-effect@^2.1.0: - version "2.1.1" - resolved "https://registry.npmjs.org/react-side-effect/-/react-side-effect-2.1.1.tgz" - integrity sha512-2FoTQzRNTncBVtnzxFOk2mCpcfxQpenBMbk5kSVBg5UcPqV9fRbgY2zhb7GTWWOlpFmAxhClBDlIq8Rsubz1yQ== - react-syntax-highlighter@^15.4.5: version "15.4.5" resolved "https://registry.npmjs.org/react-syntax-highlighter/-/react-syntax-highlighter-15.4.5.tgz" @@ -8802,7 +9340,7 @@ regexp.prototype.flags@^1.2.0: call-bind "^1.0.2" define-properties "^1.1.3" -regexpu-core@^4.5.4, regexpu-core@^4.7.1: +regexpu-core@^4.7.1: version "4.8.0" resolved "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.8.0.tgz" integrity sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg== @@ -8877,20 +9415,6 @@ remark-footnotes@2.0.0: resolved "https://registry.npmjs.org/remark-footnotes/-/remark-footnotes-2.0.0.tgz" integrity sha512-3Clt8ZMH75Ayjp9q4CorNeyjwIxHFcTkaektplKGl2A1jNGEUey8cKL0ZC5vJwfcD5GFGsNLImLG/NGzWIzoMQ== -remark-mdx-remove-exports@^1.6.22: - version "1.6.22" - resolved "https://registry.npmjs.org/remark-mdx-remove-exports/-/remark-mdx-remove-exports-1.6.22.tgz" - integrity sha512-7g2uiTmTGfz5QyVb+toeX25frbk1Y6yd03RXGPtqx0+DVh86Gb7MkNYbk7H2X27zdZ3CQv1W/JqlFO0Oo8IxVA== - dependencies: - unist-util-remove "2.0.0" - -remark-mdx-remove-imports@^1.6.22: - version "1.6.22" - resolved "https://registry.npmjs.org/remark-mdx-remove-imports/-/remark-mdx-remove-imports-1.6.22.tgz" - integrity sha512-lmjAXD8Ltw0TsvBzb45S+Dxx7LTJAtDaMneMAv8LAUIPEyYoKkmGbmVsiF0/pY6mhM1Q16swCmu1TN+ie/vn/A== - dependencies: - unist-util-remove "2.0.0" - remark-mdx@1.6.22: version "1.6.22" resolved "https://registry.npmjs.org/remark-mdx/-/remark-mdx-1.6.22.tgz" @@ -9056,12 +9580,12 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" -rxjs@^7.1.0: - version "7.4.0" - resolved "https://registry.npmjs.org/rxjs/-/rxjs-7.4.0.tgz" - integrity sha512-7SQDi7xeTMCJpqViXh8gL/lebcwlp3d831F05+9B44A4B0WfsEwUQHR64gsH1kvJ+Ep/J9K2+n1hVl1CsGN23w== +rxjs@^7.5.4: + version "7.5.5" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.5.5.tgz#2ebad89af0f560f460ad5cc4213219e1f7dd4e9f" + integrity sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw== dependencies: - tslib "~2.1.0" + tslib "^2.1.0" safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" @@ -9306,7 +9830,7 @@ shell-quote@^1.7.3: resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.3.tgz#aa40edac170445b9a431e17bb62c0b881b9c4123" integrity sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw== -shelljs@^0.8.4: +shelljs@^0.8.5: version "0.8.5" resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.5.tgz#de055408d8361bed66c669d2f000538ced8ee20c" integrity sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow== @@ -9343,12 +9867,12 @@ sisteransi@^1.0.5: resolved "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz" integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== -sitemap@^7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/sitemap/-/sitemap-7.0.0.tgz" - integrity sha512-Ud0jrRQO2k7fEtPAM+cQkBKoMvxQyPKNXKDLn8tRVHxRCsdDQ2JZvw+aZ5IRYYQVAV9iGxEar6boTwZzev+x3g== +sitemap@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/sitemap/-/sitemap-7.1.1.tgz#eeed9ad6d95499161a3eadc60f8c6dce4bea2bef" + integrity sha512-mK3aFtjz4VdJN0igpIJrinf3EO8U8mxOPsTBzSsy06UtjZQJ3YY3o3Xa7zSc5nMqcMrRwlChHZ18Kxg0caiPBg== dependencies: - "@types/node" "^15.0.1" + "@types/node" "^17.0.5" "@types/sax" "^1.2.1" arg "^5.0.0" sax "^1.2.4" @@ -9415,11 +9939,6 @@ source-map@~0.7.2: resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz" integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== -sourcemap-codec@^1.4.4: - version "1.4.8" - resolved "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz" - integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== - space-separated-tokens@^1.0.0: version "1.1.5" resolved "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz" @@ -9485,7 +10004,7 @@ string-convert@^0.2.0: resolved "https://registry.yarnpkg.com/string-convert/-/string-convert-0.2.1.tgz#6982cc3049fbb4cd85f8b24568b9d9bf39eeff97" integrity sha1-aYLMMEn7tM2F+LJFaLnZvznu/5c= -string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.2: +string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2: version "4.2.3" resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -9494,6 +10013,15 @@ string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.2: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" +string-width@^5.0.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" + integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== + dependencies: + eastasianwidth "^0.2.0" + emoji-regex "^9.2.2" + strip-ansi "^7.0.1" + string.prototype.trimend@^1.0.4: version "1.0.4" resolved "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz" @@ -9540,7 +10068,7 @@ strip-ansi@^6.0.0, strip-ansi@^6.0.1: dependencies: ansi-regex "^5.0.1" -strip-ansi@^7.0.0: +strip-ansi@^7.0.0, strip-ansi@^7.0.1: version "7.0.1" resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz" integrity sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw== @@ -9574,25 +10102,6 @@ style-to-object@0.3.0, style-to-object@^0.3.0: dependencies: inline-style-parser "0.1.1" -styled-system@^5.1.5: - version "5.1.5" - resolved "https://registry.yarnpkg.com/styled-system/-/styled-system-5.1.5.tgz#e362d73e1dbb5641a2fd749a6eba1263dc85075e" - integrity sha512-7VoD0o2R3RKzOzPK0jYrVnS8iJdfkKsQJNiLRDjikOpQVqQHns/DXWaPZOH4tIKkhAT7I6wIsy9FWTWh2X3q+A== - dependencies: - "@styled-system/background" "^5.1.2" - "@styled-system/border" "^5.1.5" - "@styled-system/color" "^5.1.2" - "@styled-system/core" "^5.1.2" - "@styled-system/flexbox" "^5.1.2" - "@styled-system/grid" "^5.1.2" - "@styled-system/layout" "^5.1.2" - "@styled-system/position" "^5.1.2" - "@styled-system/shadow" "^5.1.2" - "@styled-system/space" "^5.1.2" - "@styled-system/typography" "^5.1.2" - "@styled-system/variant" "^5.1.5" - object-assign "^4.1.1" - stylehacks@^5.0.1: version "5.0.1" resolved "https://registry.npmjs.org/stylehacks/-/stylehacks-5.0.1.tgz" @@ -9601,6 +10110,14 @@ stylehacks@^5.0.1: browserslist "^4.16.0" postcss-selector-parser "^6.0.4" +stylehacks@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-5.1.0.tgz#a40066490ca0caca04e96c6b02153ddc39913520" + integrity sha512-SzLmvHQTrIWfSgljkQCw2++C9+Ne91d/6Sp92I8c5uHTcy/PgeHamwITIbBW9wnFTY/3ZfSXR9HIL6Ikqmcu6Q== + dependencies: + browserslist "^4.16.6" + postcss-selector-parser "^6.0.4" + supports-color@^5.3.0: version "5.5.0" resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" @@ -9732,7 +10249,7 @@ tapable@^2.0.0, tapable@^2.1.1, tapable@^2.2.0: resolved "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz" integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== -terser-webpack-plugin@^5.1.3, terser-webpack-plugin@^5.2.4: +terser-webpack-plugin@^5.1.3: version "5.2.5" resolved "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.2.5.tgz" integrity sha512-3luOVHku5l0QBeYS8r4CdHYWEGMmIj3H1U64jgkdZzECcSOJAyJ9TjuqcQZvw1Y+4AOBN9SeYJPJmFn2cM4/2g== @@ -9743,6 +10260,27 @@ terser-webpack-plugin@^5.1.3, terser-webpack-plugin@^5.2.4: source-map "^0.6.1" terser "^5.7.2" +terser-webpack-plugin@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz#0320dcc270ad5372c1e8993fabbd927929773e54" + integrity sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g== + dependencies: + jest-worker "^27.4.5" + schema-utils "^3.1.1" + serialize-javascript "^6.0.0" + source-map "^0.6.1" + terser "^5.7.2" + +terser@^5.10.0: + version "5.12.1" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.12.1.tgz#4cf2ebed1f5bceef5c83b9f60104ac4a78b49e9c" + integrity sha512-NXbs+7nisos5E+yXwAD+y7zrcTkMqb0dEJxIGtSKPdCBzopf7ni4odPul2aechpV7EXNvOudYOX2bb5tln1jbQ== + dependencies: + acorn "^8.5.0" + commander "^2.20.0" + source-map "~0.7.2" + source-map-support "~0.5.20" + terser@^5.7.2: version "5.9.0" resolved "https://registry.npmjs.org/terser/-/terser-5.9.0.tgz" @@ -9757,18 +10295,6 @@ text-table@^0.2.0: resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= -theme-ui@^0.3.1: - version "0.3.5" - resolved "https://registry.yarnpkg.com/theme-ui/-/theme-ui-0.3.5.tgz#db29a4df0ad6cbf0fde42aab1cd9941c4b813efc" - integrity sha512-yxooGhvkdjFDotDeIFehKo5k6NnLZ3gsLSe8EDe2aDcoWqg1mZjkjjr8EYtVCrK3mk/tYz97AT5BpEnUfamNCQ== - dependencies: - "@theme-ui/color-modes" "0.3.5" - "@theme-ui/components" "0.3.5" - "@theme-ui/core" "0.3.5" - "@theme-ui/css" "0.3.5" - "@theme-ui/mdx" "0.3.5" - "@theme-ui/theme-provider" "0.3.5" - thunky@^1.0.2: version "1.1.0" resolved "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz" @@ -9859,21 +10385,21 @@ tslib@^1.9.3: resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2.0.3, tslib@^2.2.0, tslib@^2.3.1: +tslib@^2.0.3, tslib@^2.1.0, tslib@^2.2.0, tslib@^2.3.1: version "2.3.1" resolved "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz" integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== -tslib@~2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz" - integrity sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A== - type-fest@^0.20.2: 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== +type-fest@^2.5.0: + version "2.12.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-2.12.1.tgz#d2be8f50bf5f8f0a5fd916d29bf3e98c17e960be" + integrity sha512-AiknQSEqKVGDDjtZqeKrUoTlcj7FKhupmnVUgz6KoOKtvMwRGE6hUNJ/nVear+h7fnUPO1q/htSkYKb1pyntkQ== + type-is@~1.6.17, type-is@~1.6.18: version "1.6.18" resolved "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz" @@ -10012,13 +10538,6 @@ unist-util-remove-position@^2.0.0: dependencies: unist-util-visit "^2.0.0" -unist-util-remove@2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/unist-util-remove/-/unist-util-remove-2.0.0.tgz" - integrity sha512-HwwWyNHKkeg/eXRnE11IpzY8JT55JNM1YCwwU9YNCnfzk6s8GhPXrVBBZWiwLeATJbI7euvoGSzcy9M29UeW3g== - dependencies: - unist-util-is "^4.0.0" - unist-util-remove@^2.0.0: version "2.1.0" resolved "https://registry.npmjs.org/unist-util-remove/-/unist-util-remove-2.1.0.tgz" @@ -10116,7 +10635,7 @@ url-parse@^1.5.3: querystringify "^2.1.1" requires-port "^1.0.0" -url@^0.11.0, url@~0.11.0: +url@~0.11.0: version "0.11.0" resolved "https://registry.npmjs.org/url/-/url-0.11.0.tgz" integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= @@ -10216,16 +10735,16 @@ vfile@^4.0.0: unist-util-stringify-position "^2.0.0" vfile-message "^2.0.0" -wait-on@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/wait-on/-/wait-on-6.0.0.tgz" - integrity sha512-tnUJr9p5r+bEYXPUdRseolmz5XqJTTj98JgOsfBn7Oz2dxfE2g3zw1jE+Mo8lopM3j3et/Mq1yW7kKX6qw7RVw== +wait-on@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/wait-on/-/wait-on-6.0.1.tgz#16bbc4d1e4ebdd41c5b4e63a2e16dbd1f4e5601e" + integrity sha512-zht+KASY3usTY5u2LgaNqn/Cd8MukxLGjdcZxT2ns5QzDmTFc4XoWBgC+C/na+sMRZTuVygQoMYwdcVjHnYIVw== dependencies: - axios "^0.21.1" - joi "^17.4.0" + axios "^0.25.0" + joi "^17.6.0" lodash "^4.17.21" minimist "^1.2.5" - rxjs "^7.1.0" + rxjs "^7.5.4" watchpack@^2.2.0: version "2.2.0" @@ -10235,6 +10754,14 @@ watchpack@^2.2.0: glob-to-regexp "^0.4.1" graceful-fs "^4.1.2" +watchpack@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.3.1.tgz#4200d9447b401156eeca7767ee610f8809bc9d25" + integrity sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA== + dependencies: + glob-to-regexp "^0.4.1" + graceful-fs "^4.1.2" + wbuf@^1.1.0, wbuf@^1.7.3: version "1.7.3" resolved "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz" @@ -10252,9 +10779,9 @@ web-streams-polyfill@4.0.0-beta.1: resolved "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-4.0.0-beta.1.tgz" integrity sha512-3ux37gEX670UUphBF9AMCq8XM6iQ8Ac6A+DSRRjDoRBm1ufCkaCDdNVbaqq60PsEkdNlLKrGtv/YBP4EJXqNtQ== -webpack-bundle-analyzer@^4.4.2: +webpack-bundle-analyzer@^4.5.0: version "4.5.0" - resolved "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.5.0.tgz" + resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.5.0.tgz#1b0eea2947e73528754a6f9af3e91b2b6e0f79d5" integrity sha512-GUMZlM3SKwS8Z+CKeIFx7CVoHn3dXFcUAjT/dcZQQmfSZGvitPfMob2ipjai7ovFFqPvTqkEZ/leL4O0YOdAYQ== dependencies: acorn "^8.0.4" @@ -10278,7 +10805,7 @@ webpack-dev-middleware@^5.3.1: range-parser "^1.2.1" schema-utils "^4.0.0" -webpack-dev-server@^4.7.1: +webpack-dev-server@^4.7.4: version "4.7.4" resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.7.4.tgz#d0ef7da78224578384e795ac228d8efb63d5f945" integrity sha512-nfdsb02Zi2qzkNmgtZjkrMOcXnYZ6FLKcQwpxT7MvmHKc+oTtDsBju8j+NMyAygZ9GW1jMEUpy3itHtqgEhe1A== @@ -10322,7 +10849,7 @@ webpack-merge@^5.8.0: clone-deep "^4.0.1" wildcard "^2.0.0" -webpack-sources@^1.1.0, webpack-sources@^1.4.3: +webpack-sources@^1.4.3: version "1.4.3" resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz" integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== @@ -10335,6 +10862,11 @@ webpack-sources@^3.2.0: resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.1.tgz" integrity sha512-t6BMVLQ0AkjBOoRTZgqrWm7xbXMBzD+XDq2EZ96+vMfn3qKgsvdXZhbPZ4ElUOpdv4u+iiGe+w3+J75iy/bYGA== +webpack-sources@^3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" + integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== + webpack@^5.61.0: version "5.64.0" resolved "https://registry.npmjs.org/webpack/-/webpack-5.64.0.tgz" @@ -10365,6 +10897,36 @@ webpack@^5.61.0: watchpack "^2.2.0" webpack-sources "^3.2.0" +webpack@^5.69.1: + version "5.70.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.70.0.tgz#3461e6287a72b5e6e2f4872700bc8de0d7500e6d" + integrity sha512-ZMWWy8CeuTTjCxbeaQI21xSswseF2oNOwc70QSKNePvmxE7XW36i7vpBMYZFAUHPwQiEbNGCEYIOOlyRbdGmxw== + 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.4.1" + acorn-import-assertions "^1.7.6" + browserslist "^4.14.5" + chrome-trace-event "^1.0.2" + enhanced-resolve "^5.9.2" + 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-better-errors "^1.0.2" + 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.3.1" + webpack-sources "^3.2.3" + webpackbar@^5.0.2: version "5.0.2" resolved "https://registry.yarnpkg.com/webpackbar/-/webpackbar-5.0.2.tgz#d3dd466211c73852741dfc842b7556dcbc2b0570" @@ -10421,6 +10983,13 @@ widest-line@^3.1.0: dependencies: string-width "^4.0.0" +widest-line@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-4.0.1.tgz#a0fc673aaba1ea6f0a0d35b3c2795c9a9cc2ebf2" + integrity sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig== + dependencies: + string-width "^5.0.1" + wildcard@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz" @@ -10435,6 +11004,15 @@ wrap-ansi@^7.0.0: string-width "^4.1.0" strip-ansi "^6.0.0" +wrap-ansi@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.0.1.tgz#2101e861777fec527d0ea90c57c6b03aac56a5b3" + integrity sha512-QFF+ufAqhoYHvoHdajT/Po7KoXVBPXS2bgjIam5isfWJPfIOnQZ50JtUiVvCv/sjgacf3yRrt2ZKUZ/V4itN4g== + dependencies: + ansi-styles "^6.1.0" + string-width "^5.0.1" + strip-ansi "^7.0.1" + wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" diff --git a/requirements/base.txt b/requirements/base.txt index dd2c70aa03de2..6162303b05e1b 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -11,7 +11,7 @@ aiohttp==3.7.4.post0 # via slackclient alembic==1.6.5 # via flask-migrate -amqp==2.6.1 +amqp==5.1.0 # via kombu apispec[yaml]==3.3.2 # via flask-appbuilder @@ -33,17 +33,27 @@ brotli==1.0.9 # via flask-compress cachelib==0.4.1 # via apache-superset -celery==4.4.7 +celery==5.2.2 # via apache-superset cffi==1.14.6 # via cryptography chardet==4.0.0 # via aiohttp -click==7.1.2 +click==8.0.4 # via # apache-superset + # celery + # click-didyoumean + # click-plugins + # click-repl # flask # flask-appbuilder +click-didyoumean==0.3.0 + # via celery +click-plugins==1.1.1 + # via celery +click-repl==0.2.0 + # via celery colorama==0.4.4 # via # apache-superset @@ -56,15 +66,13 @@ croniter==1.0.15 # via apache-superset cryptography==3.4.7 # via apache-superset -defusedxml==0.7.1 - # via python3-openid deprecation==2.1.0 # via apache-superset dnspython==2.1.0 # via email-validator email-validator==1.1.3 # via flask-appbuilder -flask==1.1.4 +flask==2.0.3 # via # apache-superset # flask-appbuilder @@ -74,10 +82,9 @@ flask==1.1.4 # flask-jwt-extended # flask-login # flask-migrate - # flask-openid # flask-sqlalchemy # flask-wtf -flask-appbuilder==3.4.5 +flask-appbuilder==4.0.0 # via apache-superset flask-babel==1.0.0 # via flask-appbuilder @@ -85,14 +92,12 @@ flask-caching==1.10.1 # via apache-superset flask-compress==1.10.1 # via apache-superset -flask-jwt-extended==3.25.1 +flask-jwt-extended==4.3.1 # via flask-appbuilder flask-login==0.4.1 # via flask-appbuilder flask-migrate==3.1.0 # via apache-superset -flask-openid==1.3.0 - # via flask-appbuilder flask-sqlalchemy==2.5.1 # via # flask-appbuilder @@ -113,6 +118,8 @@ graphlib-backport==1.0.3 # via apache-superset gunicorn==20.1.0 # via apache-superset +hashids==1.3.1 + # via apache-superset holidays==0.10.3 # via apache-superset humanize==3.11.0 @@ -123,18 +130,17 @@ idna==3.2 # yarl isodate==0.6.0 # via apache-superset -itsdangerous==1.1.0 +itsdangerous==2.1.1 # via - # apache-superset # flask # flask-wtf -jinja2==2.11.3 +jinja2==3.0.3 # via # flask # flask-babel jsonschema==3.2.0 # via flask-appbuilder -kombu==4.6.11 +kombu==5.2.4 # via celery korean-lunar-calendar==0.2.1 # via holidays @@ -180,11 +186,13 @@ polyline==1.4.0 # via apache-superset prison==0.2.1 # via flask-appbuilder +prompt-toolkit==3.0.28 + # via click-repl pyarrow==5.0.0 # via apache-superset pycparser==2.20 # via cffi -pyjwt==1.7.1 +pyjwt==2.2.0 # via # apache-superset # flask-appbuilder @@ -213,9 +221,7 @@ python-editor==1.0.4 # via alembic python-geohash==0.8.5 # via apache-superset -python3-openid==3.2.0 - # via flask-openid -pytz==2021.1 +pytz==2021.3 # via # babel # celery @@ -237,7 +243,7 @@ simplejson==3.17.3 six==1.16.0 # via # bleach - # flask-jwt-extended + # click-repl # flask-talisman # holidays # isodate @@ -273,13 +279,16 @@ typing-extensions==3.10.0.0 # apache-superset urllib3==1.26.6 # via selenium -vine==1.3.0 +vine==5.0.0 # via # amqp # celery + # kombu +wcwidth==0.2.5 + # via prompt-toolkit webencodings==0.5.1 # via bleach -werkzeug==1.0.1 +werkzeug==2.0.3 # via # flask # flask-jwt-extended diff --git a/requirements/integration.in b/requirements/integration.in index 763cb936e0f0a..eff495d881314 100644 --- a/requirements/integration.in +++ b/requirements/integration.in @@ -18,4 +18,4 @@ pip-compile-multi!=1.5.9 pre-commit tox py>=1.10.0 -click==7.1.2 +click diff --git a/requirements/integration.txt b/requirements/integration.txt index 79431b5dd57c5..edc39fb151267 100644 --- a/requirements/integration.txt +++ b/requirements/integration.txt @@ -1,4 +1,4 @@ -# SHA1:03eb2d96afe21f1bda1ab33b4cf84e670a1efe21 +# SHA1:8e2dd1e795bcad7451376b3653eb03465e4f05d3 # # This file is autogenerated by pip-compile-multi # To update, run: @@ -9,7 +9,7 @@ backports.entry-points-selectable==1.1.0 # via virtualenv cfgv==3.3.0 # via pre-commit -click==7.1.2 +click==8.0.4 # via # -r requirements/integration.in # pip-compile-multi diff --git a/requirements/testing.txt b/requirements/testing.txt index a02d250526edc..3b1ce021873f5 100644 --- a/requirements/testing.txt +++ b/requirements/testing.txt @@ -116,8 +116,6 @@ pexpect==4.8.0 # via ipython pickleshare==0.7.5 # via ipython -prompt-toolkit==3.0.19 - # via ipython proto-plus==1.19.7 # via # google-cloud-bigquery @@ -178,8 +176,6 @@ trino==0.306 # via sqlalchemy-trino typing-inspect==0.7.1 # via libcst -wcwidth==0.2.5 - # via prompt-toolkit websocket-client==1.2.0 # via docker diff --git a/scripts/benchmark_migration.py b/scripts/benchmark_migration.py index 27670b5d4d729..baae8befec1bc 100644 --- a/scripts/benchmark_migration.py +++ b/scripts/benchmark_migration.py @@ -102,7 +102,10 @@ def find_models(module: ModuleType) -> List[Type[Model]]: while tables: table = tables.pop() seen.add(table) - model = getattr(Base.classes, table) + try: + model = getattr(Base.classes, table) + except AttributeError: + continue model.__tablename__ = table models.append(model) diff --git a/scripts/cancel_github_workflows.py b/scripts/cancel_github_workflows.py index 90087fa4f7366..720dc05cbef22 100755 --- a/scripts/cancel_github_workflows.py +++ b/scripts/cancel_github_workflows.py @@ -60,7 +60,8 @@ def request( def list_runs( - repo: str, params: Optional[Dict[str, str]] = None, + repo: str, + params: Optional[Dict[str, str]] = None, ) -> Iterator[Dict[str, Any]]: """List all github workflow runs. Returns: @@ -193,7 +194,11 @@ def cancel_github_workflows( if branch and ":" in branch: [user, branch] = branch.split(":", 2) runs = get_runs( - repo, branch=branch, user=user, statuses=statuses, events=events, + repo, + branch=branch, + user=user, + statuses=statuses, + events=events, ) # sort old jobs to the front, so to cancel older jobs first diff --git a/scripts/tests/run.sh b/scripts/tests/run.sh index 9f78318b72b51..24233010107dd 100755 --- a/scripts/tests/run.sh +++ b/scripts/tests/run.sh @@ -138,5 +138,5 @@ fi if [ $RUN_TESTS -eq 1 ] then - pytest -x -s "${TEST_MODULE}" + pytest --durations=0 --maxfail=1 "${TEST_MODULE}" fi diff --git a/setup.cfg b/setup.cfg index 7f2f83c18e7db..6f667677ec810 100644 --- a/setup.cfg +++ b/setup.cfg @@ -41,7 +41,7 @@ disallow_untyped_calls = true disallow_untyped_defs = true ignore_missing_imports = true no_implicit_optional = true -warn_unused_ignores = true +warn_unused_ignores = false [mypy-superset.migrations.versions.*] ignore_errors = true diff --git a/setup.py b/setup.py index 980fde8a83639..c7cdd2acd2185 100644 --- a/setup.py +++ b/setup.py @@ -23,8 +23,8 @@ from setuptools import find_packages, setup BASE_DIR = os.path.abspath(os.path.dirname(__file__)) - PACKAGE_JSON = os.path.join(BASE_DIR, "superset-frontend", "package.json") + with open(PACKAGE_JSON, "r") as package_file: version_string = json.load(package_file)["version"] @@ -70,15 +70,15 @@ def get_git_sha() -> str: "backoff>=1.8.0", "bleach>=3.0.2, <4.0.0", "cachelib>=0.4.1,<0.5", - "celery>=4.3.0, <5.0.0, !=4.4.1", - "click<8", + "celery>=5.2.2, <6.0.0", + "click>=8.0.3", "colorama", "croniter>=0.3.28", "cron-descriptor", "cryptography>=3.3.2", "deprecation>=2.1.0, <2.2.0", - "flask>=1.1.0, <2.0.0", - "flask-appbuilder>=3.4.5, <4.0.0", + "flask>=2.0.0, <3.0.0", + "flask-appbuilder>=4.0.0, <5.0.0", "flask-caching>=1.10.0", "flask-compress", "flask-talisman", @@ -88,9 +88,9 @@ def get_git_sha() -> str: "geopy", "graphlib-backport", "gunicorn>=20.1.0", + "hashids>=1.3.1, <2", "holidays==0.10.3", # PINNED! https://github.com/dr-prodigy/python-holidays/issues/406 "humanize", - "itsdangerous>=1.0.0, <2.0.0", # https://github.com/apache/superset/pull/14627 "isodate", "markdown>=3.0", "msgpack>=1.0.0, <1.1", @@ -104,13 +104,14 @@ def get_git_sha() -> str: "python-geohash", "pyarrow>=5.0.0, <6.0", "pyyaml>=5.4", - "PyJWT>=1.7.1, <2", + "PyJWT>=2.0.0, <2.3.0", "redis", "selenium>=3.141.0", "simplejson>=3.15.0", "slackclient==2.5.0", # PINNED! slack changes file upload api in the future versions "sqlalchemy>=1.3.16, <1.4, !=1.3.21", "sqlalchemy-utils>=0.37.8, <0.38", + "sqloxide==0.1.15", "sqlparse==0.3.0", # PINNED! see https://github.com/andialbrecht/sqlparse/issues/562 "tabulate==0.8.9", # needed to support Literal (3.8) and TypeGuard (3.10) diff --git a/superset-embedded-sdk/package-lock.json b/superset-embedded-sdk/package-lock.json index f440d613dfe91..cd52282c71c47 100644 --- a/superset-embedded-sdk/package-lock.json +++ b/superset-embedded-sdk/package-lock.json @@ -1,12 +1,12 @@ { "name": "@superset-ui/embedded-sdk", - "version": "0.1.0-alpha.3", + "version": "0.1.0-alpha.6", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@superset-ui/embedded-sdk", - "version": "0.1.0-alpha.3", + "version": "0.1.0-alpha.6", "license": "Apache-2.0", "dependencies": { "@superset-ui/switchboard": "^0.18.26-0" diff --git a/superset-embedded-sdk/package.json b/superset-embedded-sdk/package.json index 5bc4a287855e0..88642e72327f3 100644 --- a/superset-embedded-sdk/package.json +++ b/superset-embedded-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@superset-ui/embedded-sdk", - "version": "0.1.0-alpha.5", + "version": "0.1.0-alpha.6", "description": "SDK for embedding resources from Superset into your own application", "access": "public", "keywords": [ diff --git a/superset-embedded-sdk/src/index.ts b/superset-embedded-sdk/src/index.ts index f6bebe54436cf..34932bd6250d7 100644 --- a/superset-embedded-sdk/src/index.ts +++ b/superset-embedded-sdk/src/index.ts @@ -104,6 +104,7 @@ export async function embedDashboard({ iframe.sandbox.add("allow-same-origin"); // needed for postMessage to work iframe.sandbox.add("allow-scripts"); // obviously the iframe needs scripts iframe.sandbox.add("allow-presentation"); // for fullscreen charts + iframe.sandbox.add("allow-downloads"); // for downloading charts as image // add these ones if it turns out we need them: // iframe.sandbox.add("allow-top-navigation"); // iframe.sandbox.add("allow-forms"); diff --git a/superset-frontend/.eslintrc.js b/superset-frontend/.eslintrc.js index a1d1102694664..facd3431f4367 100644 --- a/superset-frontend/.eslintrc.js +++ b/superset-frontend/.eslintrc.js @@ -67,7 +67,7 @@ module.exports = { version: 'detect', }, }, - plugins: ['prettier', 'react', 'file-progress'], + plugins: ['prettier', 'react', 'file-progress', 'theme-colors'], overrides: [ { files: ['*.ts', '*.tsx'], @@ -183,8 +183,27 @@ module.exports = { 'max-classes-per-file': 0, }, }, + { + files: [ + '*.test.ts', + '*.test.tsx', + '*.test.js', + '*.test.jsx', + '*.stories.tsx', + '*.stories.jsx', + 'fixtures.*', + 'cypress-base/cypress/**/*', + 'Stories.tsx', + 'packages/superset-ui-core/src/style/index.tsx', + ], + rules: { + 'theme-colors/no-literal-colors': 0, + 'no-restricted-imports': 0, + }, + }, ], rules: { + 'theme-colors/no-literal-colors': 1, camelcase: [ 'error', { diff --git a/superset-frontend/.storybook/main.js b/superset-frontend/.storybook/main.js index a344d20f4c292..caa68983579ab 100644 --- a/superset-frontend/.storybook/main.js +++ b/superset-frontend/.storybook/main.js @@ -33,6 +33,7 @@ module.exports = { '@storybook/addon-knobs', 'storybook-addon-paddings', ], + staticDirs: ['../src/assets/images'], webpackFinal: config => ({ ...config, module: { diff --git a/superset-frontend/package-lock.json b/superset-frontend/package-lock.json index fbdb99125958d..59582524ea16a 100644 --- a/superset-frontend/package-lock.json +++ b/superset-frontend/package-lock.json @@ -159,15 +159,15 @@ "@emotion/jest": "^11.3.0", "@hot-loader/react-dom": "^16.13.0", "@istanbuljs/nyc-config-typescript": "^1.0.1", - "@storybook/addon-actions": "^6.3.12", - "@storybook/addon-essentials": "^6.3.12", + "@storybook/addon-actions": "^6.4.19", + "@storybook/addon-essentials": "^6.4.19", "@storybook/addon-knobs": "^6.3.1", - "@storybook/addon-links": "^6.3.12", - "@storybook/addons": "^6.3.12", - "@storybook/builder-webpack5": "^6.3.12", - "@storybook/client-api": "^6.3.12", - "@storybook/manager-webpack5": "^6.3.12", - "@storybook/react": "^6.3.12", + "@storybook/addon-links": "^6.4.19", + "@storybook/addons": "^6.4.19", + "@storybook/builder-webpack5": "^6.4.19", + "@storybook/client-api": "^6.4.19", + "@storybook/manager-webpack5": "^6.4.19", + "@storybook/react": "^6.4.19", "@svgr/webpack": "^5.5.0", "@testing-library/dom": "^7.29.4", "@testing-library/jest-dom": "^5.11.6", @@ -232,6 +232,7 @@ "eslint-plugin-react": "^7.22.0", "eslint-plugin-react-hooks": "^4.2.0", "eslint-plugin-testing-library": "^3.10.1", + "eslint-plugin-theme-colors": "file:tools/eslint-plugin-theme-colors", "exports-loader": "^0.7.0", "fetch-mock": "^7.7.3", "fork-ts-checker-webpack-plugin": "^6.3.3", @@ -277,6 +278,18 @@ "npm": "^7.5.4" } }, + "buildtools/eslint-plugin-theme-colors": { + "version": "1.0.0", + "extraneous": true, + "license": "Apache-2.0", + "dependencies": { + "lodash": "^4.17.21" + }, + "engines": { + "node": "^16.9.1", + "npm": "^7.5.4" + } + }, "node_modules/@actions/core": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.6.0.tgz", @@ -5276,7 +5289,6 @@ "version": "26.6.2", "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", - "dev": true, "dependencies": { "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", @@ -5292,7 +5304,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz", "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==", - "dev": true, "dependencies": { "@types/istanbul-lib-report": "*" } @@ -6279,35 +6290,6 @@ "node": ">=10" } }, - "node_modules/@lerna/create/node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@lerna/create/node_modules/ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, "node_modules/@lerna/create/node_modules/lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -7331,35 +7313,6 @@ "node": ">= 10.18.0" } }, - "node_modules/@lerna/project/node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@lerna/project/node_modules/ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, "node_modules/@lerna/project/node_modules/load-json-file": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-6.2.0.tgz", @@ -7402,15 +7355,6 @@ "node": ">=8" } }, - "node_modules/@lerna/project/node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/@lerna/project/node_modules/strip-bom": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", @@ -8632,9 +8576,9 @@ } }, "node_modules/@mdx-js/mdx/node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dependencies": { "ms": "2.1.2" }, @@ -9941,93 +9885,6 @@ "@octokit/openapi-types": "^11.2.0" } }, - "node_modules/@pmmmwh/react-refresh-webpack-plugin": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.4.3.tgz", - "integrity": "sha512-br5Qwvh8D2OQqSXpd1g/xqXKnK0r+Jz6qVKBbWmpUcrbGOxUrf39V5oZ1876084CGn18uMdR5uvPqBv9UqtBjQ==", - "dependencies": { - "ansi-html": "^0.0.7", - "error-stack-parser": "^2.0.6", - "html-entities": "^1.2.1", - "native-url": "^0.2.6", - "schema-utils": "^2.6.5", - "source-map": "^0.7.3" - }, - "engines": { - "node": ">= 10.x" - }, - "peerDependencies": { - "@types/webpack": "4.x", - "react-refresh": ">=0.8.3 <0.10.0", - "sockjs-client": "^1.4.0", - "type-fest": "^0.13.1", - "webpack": ">=4.43.0 <6.0.0", - "webpack-dev-server": "3.x", - "webpack-hot-middleware": "2.x", - "webpack-plugin-serve": "0.x || 1.x" - }, - "peerDependenciesMeta": { - "@types/webpack": { - "optional": true - }, - "sockjs-client": { - "optional": true - }, - "type-fest": { - "optional": true - }, - "webpack-dev-server": { - "optional": true - }, - "webpack-hot-middleware": { - "optional": true - }, - "webpack-plugin-serve": { - "optional": true - } - } - }, - "node_modules/@pmmmwh/react-refresh-webpack-plugin/node_modules/ansi-html": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", - "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", - "engines": [ - "node >= 0.8.0" - ], - "bin": { - "ansi-html": "bin/ansi-html" - } - }, - "node_modules/@pmmmwh/react-refresh-webpack-plugin/node_modules/html-entities": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.4.0.tgz", - "integrity": "sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA==" - }, - "node_modules/@pmmmwh/react-refresh-webpack-plugin/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==", - "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/@pmmmwh/react-refresh-webpack-plugin/node_modules/source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "engines": { - "node": ">= 8" - } - }, "node_modules/@polka/url": { "version": "1.0.0-next.20", "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.20.tgz", @@ -10155,16 +10012,16 @@ "dev": true }, "node_modules/@storybook/addon-actions": { - "version": "6.4.9", - "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-6.4.9.tgz", - "integrity": "sha512-L1N66p/vr+wPUBfrH3qffjNAcWSS/wvuL370T7cWxALA9LLA8yY9U2EpITc5btuCC5QOxApCeyHkFnrBhNa94g==", - "dependencies": { - "@storybook/addons": "6.4.9", - "@storybook/api": "6.4.9", - "@storybook/components": "6.4.9", - "@storybook/core-events": "6.4.9", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-6.4.19.tgz", + "integrity": "sha512-GpSvP8xV8GfNkmtGJjfCgaOx6mbjtyTK0aT9FqX9pU0s+KVMmoCTrBh43b7dWrwxxas01yleBK9VpYggzhi/Fw==", + "dependencies": { + "@storybook/addons": "6.4.19", + "@storybook/api": "6.4.19", + "@storybook/components": "6.4.19", + "@storybook/core-events": "6.4.19", "@storybook/csf": "0.0.2--canary.87bc651.0", - "@storybook/theming": "6.4.9", + "@storybook/theming": "6.4.19", "core-js": "^3.8.2", "fast-deep-equal": "^3.1.3", "global": "^4.4.0", @@ -10195,110 +10052,18 @@ } } }, - "node_modules/@storybook/addon-actions/node_modules/@storybook/addons": { - "version": "6.4.9", - "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-6.4.9.tgz", - "integrity": "sha512-y+oiN2zd+pbRWwkf6aQj4tPDFn+rQkrv7fiVoMxsYub+kKyZ3CNOuTSJH+A1A+eBL6DmzocChUyO6jvZFuh6Dg==", - "dependencies": { - "@storybook/api": "6.4.9", - "@storybook/channels": "6.4.9", - "@storybook/client-logger": "6.4.9", - "@storybook/core-events": "6.4.9", - "@storybook/csf": "0.0.2--canary.87bc651.0", - "@storybook/router": "6.4.9", - "@storybook/theming": "6.4.9", - "@types/webpack-env": "^1.16.0", - "core-js": "^3.8.2", - "global": "^4.4.0", - "regenerator-runtime": "^0.13.7" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0", - "react-dom": "^16.8.0 || ^17.0.0" - } - }, - "node_modules/@storybook/addon-actions/node_modules/@storybook/addons/node_modules/@storybook/router": { - "version": "6.4.9", - "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.4.9.tgz", - "integrity": "sha512-GT2KtVHo/mBjxDBFB5ZtVJVf8vC+3p5kRlQC4jao68caVp7H24ikPOkcY54VnQwwe4A1aXpGbJXUyTisEPFlhQ==", - "dependencies": { - "@storybook/client-logger": "6.4.9", - "core-js": "^3.8.2", - "fast-deep-equal": "^3.1.3", - "global": "^4.4.0", - "history": "5.0.0", - "lodash": "^4.17.21", - "memoizerific": "^1.11.3", - "qs": "^6.10.0", - "react-router": "^6.0.0", - "react-router-dom": "^6.0.0", - "ts-dedent": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0", - "react-dom": "^16.8.0 || ^17.0.0" - } - }, - "node_modules/@storybook/addon-actions/node_modules/@storybook/addons/node_modules/@storybook/router/node_modules/react-router": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.2.1.tgz", - "integrity": "sha512-2fG0udBtxou9lXtK97eJeET2ki5//UWfQSl1rlJ7quwe6jrktK9FCCc8dQb5QY6jAv3jua8bBQRhhDOM/kVRsg==", - "dependencies": { - "history": "^5.2.0" - }, - "peerDependencies": { - "react": ">=16.8" - } - }, - "node_modules/@storybook/addon-actions/node_modules/@storybook/addons/node_modules/@storybook/router/node_modules/react-router-dom": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.2.1.tgz", - "integrity": "sha512-I6Zax+/TH/cZMDpj3/4Fl2eaNdcvoxxHoH1tYOREsQ22OKDYofGebrNm6CTPUcvLvZm63NL/vzCYdjf9CUhqmA==", - "dependencies": { - "history": "^5.2.0", - "react-router": "6.2.1" - }, - "peerDependencies": { - "react": ">=16.8", - "react-dom": ">=16.8" - } - }, - "node_modules/@storybook/addon-actions/node_modules/@storybook/addons/node_modules/@storybook/router/node_modules/react-router-dom/node_modules/history": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/history/-/history-5.2.0.tgz", - "integrity": "sha512-uPSF6lAJb3nSePJ43hN3eKj1dTWpN9gMod0ZssbFTIsen+WehTmEadgL+kg78xLJFdRfrrC//SavDzmRVdE+Ig==", - "dependencies": { - "@babel/runtime": "^7.7.6" - } - }, - "node_modules/@storybook/addon-actions/node_modules/@storybook/addons/node_modules/@storybook/router/node_modules/react-router/node_modules/history": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/history/-/history-5.2.0.tgz", - "integrity": "sha512-uPSF6lAJb3nSePJ43hN3eKj1dTWpN9gMod0ZssbFTIsen+WehTmEadgL+kg78xLJFdRfrrC//SavDzmRVdE+Ig==", - "dependencies": { - "@babel/runtime": "^7.7.6" - } - }, "node_modules/@storybook/addon-actions/node_modules/@storybook/api": { - "version": "6.4.9", - "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.4.9.tgz", - "integrity": "sha512-U+YKcDQg8xal9sE5eSMXB9vcqk8fD1pSyewyAjjbsW5hV0B3L3i4u7z/EAD9Ujbnor+Cvxq+XGvp+Qnc5Gd40A==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.4.19.tgz", + "integrity": "sha512-aDvea+NpQCBjpNp9YidO1Pr7fzzCp15FSdkG+2ihGQfv5raxrN+IIJnGUXecpe71nvlYiB+29UXBVK7AL0j51Q==", "dependencies": { - "@storybook/channels": "6.4.9", - "@storybook/client-logger": "6.4.9", - "@storybook/core-events": "6.4.9", + "@storybook/channels": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/core-events": "6.4.19", "@storybook/csf": "0.0.2--canary.87bc651.0", - "@storybook/router": "6.4.9", + "@storybook/router": "6.4.19", "@storybook/semver": "^7.3.2", - "@storybook/theming": "6.4.9", + "@storybook/theming": "6.4.19", "core-js": "^3.8.2", "fast-deep-equal": "^3.1.3", "global": "^4.4.0", @@ -10320,11 +10085,11 @@ } }, "node_modules/@storybook/addon-actions/node_modules/@storybook/api/node_modules/@storybook/router": { - "version": "6.4.9", - "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.4.9.tgz", - "integrity": "sha512-GT2KtVHo/mBjxDBFB5ZtVJVf8vC+3p5kRlQC4jao68caVp7H24ikPOkcY54VnQwwe4A1aXpGbJXUyTisEPFlhQ==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.4.19.tgz", + "integrity": "sha512-KWWwIzuyeEIWVezkCihwY2A76Il9tUNg0I410g9qT7NrEsKyqXGRYOijWub7c1GGyNjLqz0jtrrehtixMcJkuA==", "dependencies": { - "@storybook/client-logger": "6.4.9", + "@storybook/client-logger": "6.4.19", "core-js": "^3.8.2", "fast-deep-equal": "^3.1.3", "global": "^4.4.0", @@ -10346,9 +10111,9 @@ } }, "node_modules/@storybook/addon-actions/node_modules/@storybook/api/node_modules/@storybook/router/node_modules/react-router": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.2.1.tgz", - "integrity": "sha512-2fG0udBtxou9lXtK97eJeET2ki5//UWfQSl1rlJ7quwe6jrktK9FCCc8dQb5QY6jAv3jua8bBQRhhDOM/kVRsg==", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.2.2.tgz", + "integrity": "sha512-/MbxyLzd7Q7amp4gDOGaYvXwhEojkJD5BtExkuKmj39VEE0m3l/zipf6h2WIB2jyAO0lI6NGETh4RDcktRm4AQ==", "dependencies": { "history": "^5.2.0" }, @@ -10357,12 +10122,12 @@ } }, "node_modules/@storybook/addon-actions/node_modules/@storybook/api/node_modules/@storybook/router/node_modules/react-router-dom": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.2.1.tgz", - "integrity": "sha512-I6Zax+/TH/cZMDpj3/4Fl2eaNdcvoxxHoH1tYOREsQ22OKDYofGebrNm6CTPUcvLvZm63NL/vzCYdjf9CUhqmA==", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.2.2.tgz", + "integrity": "sha512-AtYEsAST7bDD4dLSQHDnk/qxWLJdad5t1HFa1qJyUrCeGgEuCSw0VB/27ARbF9Fi/W5598ujvJOm3ujUCVzuYQ==", "dependencies": { "history": "^5.2.0", - "react-router": "6.2.1" + "react-router": "6.2.2" }, "peerDependencies": { "react": ">=16.8", @@ -10370,25 +10135,25 @@ } }, "node_modules/@storybook/addon-actions/node_modules/@storybook/api/node_modules/@storybook/router/node_modules/react-router-dom/node_modules/history": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/history/-/history-5.2.0.tgz", - "integrity": "sha512-uPSF6lAJb3nSePJ43hN3eKj1dTWpN9gMod0ZssbFTIsen+WehTmEadgL+kg78xLJFdRfrrC//SavDzmRVdE+Ig==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/history/-/history-5.3.0.tgz", + "integrity": "sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==", "dependencies": { "@babel/runtime": "^7.7.6" } }, "node_modules/@storybook/addon-actions/node_modules/@storybook/api/node_modules/@storybook/router/node_modules/react-router/node_modules/history": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/history/-/history-5.2.0.tgz", - "integrity": "sha512-uPSF6lAJb3nSePJ43hN3eKj1dTWpN9gMod0ZssbFTIsen+WehTmEadgL+kg78xLJFdRfrrC//SavDzmRVdE+Ig==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/history/-/history-5.3.0.tgz", + "integrity": "sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==", "dependencies": { "@babel/runtime": "^7.7.6" } }, "node_modules/@storybook/addon-actions/node_modules/@storybook/channels": { - "version": "6.4.9", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.4.9.tgz", - "integrity": "sha512-DNW1qDg+1WFS2aMdGh658WJXh8xBXliO5KAn0786DKcWCsKjfsPPQg/QCHczHK0+s5SZyzQT5aOBb4kTRHELQA==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.4.19.tgz", + "integrity": "sha512-EwyoncFvTfmIlfsy8jTfayCxo2XchPkZk/9txipugWSmc057HdklMKPLOHWP0z5hLH0IbVIKXzdNISABm36jwQ==", "dependencies": { "core-js": "^3.8.2", "ts-dedent": "^2.0.0", @@ -10400,9 +10165,9 @@ } }, "node_modules/@storybook/addon-actions/node_modules/@storybook/client-logger": { - "version": "6.4.9", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.4.9.tgz", - "integrity": "sha512-BVagmmHcuKDZ/XROADfN3tiolaDW2qG0iLmDhyV1gONnbGE6X5Qm19Jt2VYu3LvjKF1zMPSWm4mz7HtgdwKbuQ==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.4.19.tgz", + "integrity": "sha512-zmg/2wyc9W3uZrvxaW4BfHcr40J0v7AGslqYXk9H+ERLVwIvrR4NhxQFaS6uITjBENyRDxwzfU3Va634WcmdDQ==", "dependencies": { "core-js": "^3.8.2", "global": "^4.4.0" @@ -10413,14 +10178,14 @@ } }, "node_modules/@storybook/addon-actions/node_modules/@storybook/components": { - "version": "6.4.9", - "resolved": "https://registry.npmjs.org/@storybook/components/-/components-6.4.9.tgz", - "integrity": "sha512-uOUR97S6kjptkMCh15pYNM1vAqFXtpyneuonmBco5vADJb3ds0n2a8NeVd+myIbhIXn55x0OHKiSwBH/u7swCQ==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-6.4.19.tgz", + "integrity": "sha512-q/0V37YAJA7CNc+wSiiefeM9+3XVk8ixBNylY36QCGJgIeGQ5/79vPyUe6K4lLmsQwpmZsIq1s1Ad5+VbboeOA==", "dependencies": { "@popperjs/core": "^2.6.0", - "@storybook/client-logger": "6.4.9", + "@storybook/client-logger": "6.4.19", "@storybook/csf": "0.0.2--canary.87bc651.0", - "@storybook/theming": "6.4.9", + "@storybook/theming": "6.4.19", "@types/color-convert": "^2.0.0", "@types/overlayscrollbars": "^1.12.0", "@types/react-syntax-highlighter": "11.0.5", @@ -10467,9 +10232,9 @@ } }, "node_modules/@storybook/addon-actions/node_modules/@storybook/core-events": { - "version": "6.4.9", - "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.4.9.tgz", - "integrity": "sha512-YhU2zJr6wzvh5naYYuy/0UKNJ/SaXu73sIr0Tx60ur3bL08XkRg7eZ9vBhNBTlAa35oZqI0iiGCh0ljiX7yEVQ==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.4.19.tgz", + "integrity": "sha512-KICzUw6XVQUJzFSCXfvhfHAuyhn4Q5J4IZEfuZkcGJS4ODkrO6tmpdYE5Cfr+so95Nfp0ErWiLUuodBsW9/rtA==", "dependencies": { "core-js": "^3.8.2" }, @@ -10487,14 +10252,14 @@ } }, "node_modules/@storybook/addon-actions/node_modules/@storybook/theming": { - "version": "6.4.9", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.4.9.tgz", - "integrity": "sha512-Do6GH6nKjxfnBg6djcIYAjss5FW9SRKASKxLYxX2RyWJBpz0m/8GfcGcRyORy0yFTk6jByA3Hs+WFH3GnEbWkw==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.4.19.tgz", + "integrity": "sha512-V4pWmTvAxmbHR6B3jA4hPkaxZPyExHvCToy7b76DpUTpuHihijNDMAn85KhOQYIeL9q14zP/aiz899tOHsOidg==", "dependencies": { "@emotion/core": "^10.1.1", "@emotion/is-prop-valid": "^0.8.6", "@emotion/styled": "^10.0.27", - "@storybook/client-logger": "6.4.9", + "@storybook/client-logger": "6.4.19", "core-js": "^3.8.2", "deep-object-diff": "^1.1.0", "emotion-theming": "^10.0.27", @@ -10566,20 +10331,20 @@ } }, "node_modules/@storybook/addon-actions/node_modules/polished": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/polished/-/polished-4.1.3.tgz", - "integrity": "sha512-ocPAcVBUOryJEKe0z2KLd1l9EBa1r5mSwlKpExmrLzsnIzJo4axsoU9O2BjOTkDGDT4mZ0WFE5XKTlR3nLnZOA==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/polished/-/polished-4.1.4.tgz", + "integrity": "sha512-Nq5Mbza+Auo7N3sQb1QMFaQiDO+4UexWuSGR7Cjb4Sw11SZIJcrrFtiZ+L0jT9MBsUsxDboHVASbCLbE1rnECg==", "dependencies": { - "@babel/runtime": "^7.14.0" + "@babel/runtime": "^7.16.7" }, "engines": { "node": ">=10" } }, "node_modules/@storybook/addon-actions/node_modules/qs": { - "version": "6.10.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.2.tgz", - "integrity": "sha512-mSIdjzqznWgfd4pMii7sHtaYF8rx8861hBO80SraY5GT0XQibWZWJSid0avzHGkDIZLImux2S5mXO0Hfct2QCw==", + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", "dependencies": { "side-channel": "^1.0.4" }, @@ -10599,24 +10364,24 @@ } }, "node_modules/@storybook/addon-essentials": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/addon-essentials/-/addon-essentials-6.3.12.tgz", - "integrity": "sha512-PK0pPE0xkq00kcbBcFwu/5JGHQTu4GvLIHfwwlEGx6GWNQ05l6Q+1Z4nE7xJGv2PSseSx3CKcjn8qykNLe6O6g==", - "dev": true, - "dependencies": { - "@storybook/addon-actions": "6.3.12", - "@storybook/addon-backgrounds": "6.3.12", - "@storybook/addon-controls": "6.3.12", - "@storybook/addon-docs": "6.3.12", - "@storybook/addon-measure": "^2.0.0", - "@storybook/addon-toolbars": "6.3.12", - "@storybook/addon-viewport": "6.3.12", - "@storybook/addons": "6.3.12", - "@storybook/api": "6.3.12", - "@storybook/node-logger": "6.3.12", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/addon-essentials/-/addon-essentials-6.4.19.tgz", + "integrity": "sha512-vbV8sjepMVEuwhTDBHjO3E6vXluG7RiEeozV1QVuS9lGhjQdvUPdZ9rDNUcP6WHhTdEkS/ffTMaGIy1v8oZd7g==", + "dev": true, + "dependencies": { + "@storybook/addon-actions": "6.4.19", + "@storybook/addon-backgrounds": "6.4.19", + "@storybook/addon-controls": "6.4.19", + "@storybook/addon-docs": "6.4.19", + "@storybook/addon-measure": "6.4.19", + "@storybook/addon-outline": "6.4.19", + "@storybook/addon-toolbars": "6.4.19", + "@storybook/addon-viewport": "6.4.19", + "@storybook/addons": "6.4.19", + "@storybook/api": "6.4.19", + "@storybook/node-logger": "6.4.19", "core-js": "^3.8.2", "regenerator-runtime": "^0.13.7", - "storybook-addon-outline": "^1.4.1", "ts-dedent": "^2.0.0" }, "funding": { @@ -10625,8 +10390,8 @@ }, "peerDependencies": { "@babel/core": "^7.9.6", - "@storybook/vue": "6.3.12", - "@storybook/web-components": "6.3.12", + "@storybook/vue": "6.4.19", + "@storybook/web-components": "6.4.19", "babel-loader": "^8.0.0", "lit-html": "^1.4.1 || ^2.0.0-rc.3", "react": "^16.8.0 || ^17.0.0", @@ -10654,29 +10419,31 @@ } } }, - "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-actions": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-6.3.12.tgz", - "integrity": "sha512-mzuN4Ano4eyicwycM2PueGzzUCAEzt9/6vyptWEIVJu0sjK0J9KtBRlqFi1xGQxmCfimDR/n/vWBBkc7fp2uJA==", + "node_modules/@storybook/addon-essentials/node_modules/@base2/pretty-print-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@base2/pretty-print-object/-/pretty-print-object-1.0.1.tgz", + "integrity": "sha512-4iri8i1AqYHJE2DstZYkyEprg6Pq6sKx3xn5FpySk9sNhH7qN2LLlHJCfDTZRILNwQNPD7mATWM0TBui7uC1pA==", + "dev": true + }, + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-backgrounds": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/addon-backgrounds/-/addon-backgrounds-6.4.19.tgz", + "integrity": "sha512-yn8MTE7lctO48Rdw+DmmA1wKdf5eyAbA/vrug5ske/U2WPgGc65sApzwT8BItZfuyAMjuT5RnCWwd7o6hGRgGQ==", "dev": true, "dependencies": { - "@storybook/addons": "6.3.12", - "@storybook/api": "6.3.12", - "@storybook/client-api": "6.3.12", - "@storybook/components": "6.3.12", - "@storybook/core-events": "6.3.12", - "@storybook/theming": "6.3.12", + "@storybook/addons": "6.4.19", + "@storybook/api": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/components": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/theming": "6.4.19", "core-js": "^3.8.2", - "fast-deep-equal": "^3.1.3", "global": "^4.4.0", - "lodash": "^4.17.20", - "polished": "^4.0.5", - "prop-types": "^15.7.2", - "react-inspector": "^5.1.0", + "memoizerific": "^1.11.3", "regenerator-runtime": "^0.13.7", "ts-dedent": "^2.0.0", - "util-deprecate": "^1.0.2", - "uuid-browser": "^3.1.0" + "util-deprecate": "^1.0.2" }, "funding": { "type": "opencollective", @@ -10695,16 +10462,16 @@ } } }, - "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-actions/node_modules/@storybook/components": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/components/-/components-6.3.12.tgz", - "integrity": "sha512-kdQt8toUjynYAxDLrJzuG7YSNL6as1wJoyzNUaCfG06YPhvIAlKo7le9tS2mThVFN5e9nbKrW3N1V1sp6ypZXQ==", + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-backgrounds/node_modules/@storybook/components": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-6.4.19.tgz", + "integrity": "sha512-q/0V37YAJA7CNc+wSiiefeM9+3XVk8ixBNylY36QCGJgIeGQ5/79vPyUe6K4lLmsQwpmZsIq1s1Ad5+VbboeOA==", "dev": true, "dependencies": { "@popperjs/core": "^2.6.0", - "@storybook/client-logger": "6.3.12", - "@storybook/csf": "0.0.1", - "@storybook/theming": "6.3.12", + "@storybook/client-logger": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/theming": "6.4.19", "@types/color-convert": "^2.0.0", "@types/overlayscrollbars": "^1.12.0", "@types/react-syntax-highlighter": "11.0.5", @@ -10712,7 +10479,7 @@ "core-js": "^3.8.2", "fast-deep-equal": "^3.1.3", "global": "^4.4.0", - "lodash": "^4.17.20", + "lodash": "^4.17.21", "markdown-to-jsx": "^7.1.3", "memoizerific": "^1.11.3", "overlayscrollbars": "^1.13.1", @@ -10735,7 +10502,7 @@ "react-dom": "^16.8.0 || ^17.0.0" } }, - "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-actions/node_modules/@storybook/components/node_modules/react-syntax-highlighter": { + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-backgrounds/node_modules/@storybook/components/node_modules/react-syntax-highlighter": { "version": "13.5.3", "resolved": "https://registry.npmjs.org/react-syntax-highlighter/-/react-syntax-highlighter-13.5.3.tgz", "integrity": "sha512-crPaF+QGPeHNIblxxCdf2Lg936NAHKhNhuMzRL3F9ct6aYXL3NcZtCL0Rms9+qVo6Y1EQLdXGypBNSbPL/r+qg==", @@ -10751,16 +10518,16 @@ "react": ">= 0.14.0" } }, - "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-actions/node_modules/@storybook/theming": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.3.12.tgz", - "integrity": "sha512-wOJdTEa/VFyFB2UyoqyYGaZdym6EN7RALuQOAMT6zHA282FBmKw8nL5DETHEbctpnHdcrMC/391teK4nNSrdOA==", + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-backgrounds/node_modules/@storybook/theming": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.4.19.tgz", + "integrity": "sha512-V4pWmTvAxmbHR6B3jA4hPkaxZPyExHvCToy7b76DpUTpuHihijNDMAn85KhOQYIeL9q14zP/aiz899tOHsOidg==", "dev": true, "dependencies": { "@emotion/core": "^10.1.1", "@emotion/is-prop-valid": "^0.8.6", "@emotion/styled": "^10.0.27", - "@storybook/client-logger": "6.3.12", + "@storybook/client-logger": "6.4.19", "core-js": "^3.8.2", "deep-object-diff": "^1.1.0", "emotion-theming": "^10.0.27", @@ -10779,7 +10546,7 @@ "react-dom": "^16.8.0 || ^17.0.0" } }, - "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-actions/node_modules/@storybook/theming/node_modules/@emotion/styled": { + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-backgrounds/node_modules/@storybook/theming/node_modules/@emotion/styled": { "version": "10.3.0", "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-10.3.0.tgz", "integrity": "sha512-GgcUpXBBEU5ido+/p/mCT2/Xx+Oqmp9JzQRuC+a4lYM4i4LBBn/dWvc0rQ19N9ObA8/T4NWMrPNe79kMBDJqoQ==", @@ -10793,7 +10560,7 @@ "react": ">=16.3.0" } }, - "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-actions/node_modules/@storybook/theming/node_modules/@emotion/styled/node_modules/@emotion/styled-base": { + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-backgrounds/node_modules/@storybook/theming/node_modules/@emotion/styled/node_modules/@emotion/styled-base": { "version": "10.3.0", "resolved": "https://registry.npmjs.org/@emotion/styled-base/-/styled-base-10.3.0.tgz", "integrity": "sha512-PBRqsVKR7QRNkmfH78hTSSwHWcwDpecH9W6heujWAcyp2wdz/64PP73s7fWS1dIPm8/Exc8JAzYS8dEWXjv60w==", @@ -10809,24 +10576,24 @@ "react": ">=16.3.0" } }, - "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-backgrounds": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/addon-backgrounds/-/addon-backgrounds-6.3.12.tgz", - "integrity": "sha512-51cHBx0HV7K/oRofJ/1pE05qti6sciIo8m4iPred1OezXIrJ/ckzP+gApdaUdzgcLAr6/MXQWLk0sJuImClQ6w==", + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-controls": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-6.4.19.tgz", + "integrity": "sha512-JHi5z9i6NsgQLfG5WOeQE1AyOrM+QJLrjT+uOYx40bq+OC1yWHH7qHiphPP8kjJJhCZlaQk1qqXYkkQXgaeHSw==", "dev": true, "dependencies": { - "@storybook/addons": "6.3.12", - "@storybook/api": "6.3.12", - "@storybook/client-logger": "6.3.12", - "@storybook/components": "6.3.12", - "@storybook/core-events": "6.3.12", - "@storybook/theming": "6.3.12", + "@storybook/addons": "6.4.19", + "@storybook/api": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/components": "6.4.19", + "@storybook/core-common": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/node-logger": "6.4.19", + "@storybook/store": "6.4.19", + "@storybook/theming": "6.4.19", "core-js": "^3.8.2", - "global": "^4.4.0", - "memoizerific": "^1.11.3", - "regenerator-runtime": "^0.13.7", - "ts-dedent": "^2.0.0", - "util-deprecate": "^1.0.2" + "lodash": "^4.17.21", + "ts-dedent": "^2.0.0" }, "funding": { "type": "opencollective", @@ -10845,16 +10612,16 @@ } } }, - "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-backgrounds/node_modules/@storybook/components": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/components/-/components-6.3.12.tgz", - "integrity": "sha512-kdQt8toUjynYAxDLrJzuG7YSNL6as1wJoyzNUaCfG06YPhvIAlKo7le9tS2mThVFN5e9nbKrW3N1V1sp6ypZXQ==", + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-controls/node_modules/@storybook/components": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-6.4.19.tgz", + "integrity": "sha512-q/0V37YAJA7CNc+wSiiefeM9+3XVk8ixBNylY36QCGJgIeGQ5/79vPyUe6K4lLmsQwpmZsIq1s1Ad5+VbboeOA==", "dev": true, "dependencies": { "@popperjs/core": "^2.6.0", - "@storybook/client-logger": "6.3.12", - "@storybook/csf": "0.0.1", - "@storybook/theming": "6.3.12", + "@storybook/client-logger": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/theming": "6.4.19", "@types/color-convert": "^2.0.0", "@types/overlayscrollbars": "^1.12.0", "@types/react-syntax-highlighter": "11.0.5", @@ -10862,7 +10629,7 @@ "core-js": "^3.8.2", "fast-deep-equal": "^3.1.3", "global": "^4.4.0", - "lodash": "^4.17.20", + "lodash": "^4.17.21", "markdown-to-jsx": "^7.1.3", "memoizerific": "^1.11.3", "overlayscrollbars": "^1.13.1", @@ -10885,7 +10652,7 @@ "react-dom": "^16.8.0 || ^17.0.0" } }, - "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-backgrounds/node_modules/@storybook/components/node_modules/react-syntax-highlighter": { + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-controls/node_modules/@storybook/components/node_modules/react-syntax-highlighter": { "version": "13.5.3", "resolved": "https://registry.npmjs.org/react-syntax-highlighter/-/react-syntax-highlighter-13.5.3.tgz", "integrity": "sha512-crPaF+QGPeHNIblxxCdf2Lg936NAHKhNhuMzRL3F9ct6aYXL3NcZtCL0Rms9+qVo6Y1EQLdXGypBNSbPL/r+qg==", @@ -10901,62 +10668,61 @@ "react": ">= 0.14.0" } }, - "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-backgrounds/node_modules/@storybook/theming": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.3.12.tgz", - "integrity": "sha512-wOJdTEa/VFyFB2UyoqyYGaZdym6EN7RALuQOAMT6zHA282FBmKw8nL5DETHEbctpnHdcrMC/391teK4nNSrdOA==", + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-controls/node_modules/@storybook/core-common": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-6.4.19.tgz", + "integrity": "sha512-X1pJJkO48DFxl6iyEemIKqRkJ7j9/cBh3BRBUr+xZHXBvnD0GKDXIocwh0PjSxSC6XSu3UCQnqtKi3PbjRl8Dg==", "dev": true, "dependencies": { - "@emotion/core": "^10.1.1", - "@emotion/is-prop-valid": "^0.8.6", - "@emotion/styled": "^10.0.27", - "@storybook/client-logger": "6.3.12", + "@babel/core": "^7.12.10", + "@babel/plugin-proposal-class-properties": "^7.12.1", + "@babel/plugin-proposal-decorators": "^7.12.12", + "@babel/plugin-proposal-export-default-from": "^7.12.1", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1", + "@babel/plugin-proposal-object-rest-spread": "^7.12.1", + "@babel/plugin-proposal-optional-chaining": "^7.12.7", + "@babel/plugin-proposal-private-methods": "^7.12.1", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-transform-arrow-functions": "^7.12.1", + "@babel/plugin-transform-block-scoping": "^7.12.12", + "@babel/plugin-transform-classes": "^7.12.1", + "@babel/plugin-transform-destructuring": "^7.12.1", + "@babel/plugin-transform-for-of": "^7.12.1", + "@babel/plugin-transform-parameters": "^7.12.1", + "@babel/plugin-transform-shorthand-properties": "^7.12.1", + "@babel/plugin-transform-spread": "^7.12.1", + "@babel/preset-env": "^7.12.11", + "@babel/preset-react": "^7.12.10", + "@babel/preset-typescript": "^7.12.7", + "@babel/register": "^7.12.1", + "@storybook/node-logger": "6.4.19", + "@storybook/semver": "^7.3.2", + "@types/node": "^14.0.10", + "@types/pretty-hrtime": "^1.0.0", + "babel-loader": "^8.0.0", + "babel-plugin-macros": "^3.0.1", + "babel-plugin-polyfill-corejs3": "^0.1.0", + "chalk": "^4.1.0", "core-js": "^3.8.2", - "deep-object-diff": "^1.1.0", - "emotion-theming": "^10.0.27", - "global": "^4.4.0", - "memoizerific": "^1.11.3", - "polished": "^4.0.5", + "express": "^4.17.1", + "file-system-cache": "^1.0.5", + "find-up": "^5.0.0", + "fork-ts-checker-webpack-plugin": "^6.0.4", + "fs-extra": "^9.0.1", + "glob": "^7.1.6", + "handlebars": "^4.7.7", + "interpret": "^2.2.0", + "json5": "^2.1.3", + "lazy-universal-dotenv": "^3.0.1", + "picomatch": "^2.3.0", + "pkg-dir": "^5.0.0", + "pretty-hrtime": "^1.0.3", "resolve-from": "^5.0.0", - "ts-dedent": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0", - "react-dom": "^16.8.0 || ^17.0.0" - } - }, - "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-backgrounds/node_modules/@storybook/theming/node_modules/@emotion/styled": { - "version": "10.0.27", - "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-10.0.27.tgz", - "integrity": "sha512-iK/8Sh7+NLJzyp9a5+vIQIXTYxfT4yB/OJbjzQanB2RZpvmzBQOHZWhpAMZWYEKRNNbsD6WfBw5sVWkb6WzS/Q==", - "dev": true, - "dependencies": { - "@emotion/styled-base": "^10.0.27", - "babel-plugin-emotion": "^10.0.27" - }, - "peerDependencies": { - "@emotion/core": "^10.0.27", - "react": ">=16.3.0" - } - }, - "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-controls": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-6.3.12.tgz", - "integrity": "sha512-WO/PbygE4sDg3BbstJ49q0uM3Xu5Nw4lnHR5N4hXSvRAulZt1d1nhphRTHjfX+CW+uBcfzkq9bksm6nKuwmOyw==", - "dev": true, - "dependencies": { - "@storybook/addons": "6.3.12", - "@storybook/api": "6.3.12", - "@storybook/client-api": "6.3.12", - "@storybook/components": "6.3.12", - "@storybook/node-logger": "6.3.12", - "@storybook/theming": "6.3.12", - "core-js": "^3.8.2", - "ts-dedent": "^2.0.0" + "slash": "^3.0.0", + "telejson": "^5.3.2", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2", + "webpack": "4" }, "funding": { "type": "opencollective", @@ -10967,42 +10733,30 @@ "react-dom": "^16.8.0 || ^17.0.0" }, "peerDependenciesMeta": { - "react": { - "optional": true - }, - "react-dom": { + "typescript": { "optional": true } } }, - "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-controls/node_modules/@storybook/components": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/components/-/components-6.3.12.tgz", - "integrity": "sha512-kdQt8toUjynYAxDLrJzuG7YSNL6as1wJoyzNUaCfG06YPhvIAlKo7le9tS2mThVFN5e9nbKrW3N1V1sp6ypZXQ==", + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-controls/node_modules/@storybook/store": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/store/-/store-6.4.19.tgz", + "integrity": "sha512-N9/ZjemRHGfT3InPIbqQqc6snkcfnf3Qh9oOr0smbfaVGJol//KOX65kzzobtzFcid0WxtTDZ3HmgFVH+GvuhQ==", "dev": true, "dependencies": { - "@popperjs/core": "^2.6.0", - "@storybook/client-logger": "6.3.12", - "@storybook/csf": "0.0.1", - "@storybook/theming": "6.3.12", - "@types/color-convert": "^2.0.0", - "@types/overlayscrollbars": "^1.12.0", - "@types/react-syntax-highlighter": "11.0.5", - "color-convert": "^2.0.1", + "@storybook/addons": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", "core-js": "^3.8.2", "fast-deep-equal": "^3.1.3", "global": "^4.4.0", - "lodash": "^4.17.20", - "markdown-to-jsx": "^7.1.3", + "lodash": "^4.17.21", "memoizerific": "^1.11.3", - "overlayscrollbars": "^1.13.1", - "polished": "^4.0.5", - "prop-types": "^15.7.2", - "react-colorful": "^5.1.2", - "react-popper-tooltip": "^3.1.1", - "react-syntax-highlighter": "^13.5.3", - "react-textarea-autosize": "^8.3.0", "regenerator-runtime": "^0.13.7", + "slash": "^3.0.0", + "stable": "^0.1.8", + "synchronous-promise": "^2.0.15", "ts-dedent": "^2.0.0", "util-deprecate": "^1.0.2" }, @@ -11015,32 +10769,16 @@ "react-dom": "^16.8.0 || ^17.0.0" } }, - "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-controls/node_modules/@storybook/components/node_modules/react-syntax-highlighter": { - "version": "13.5.3", - "resolved": "https://registry.npmjs.org/react-syntax-highlighter/-/react-syntax-highlighter-13.5.3.tgz", - "integrity": "sha512-crPaF+QGPeHNIblxxCdf2Lg936NAHKhNhuMzRL3F9ct6aYXL3NcZtCL0Rms9+qVo6Y1EQLdXGypBNSbPL/r+qg==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.3.1", - "highlight.js": "^10.1.1", - "lowlight": "^1.14.0", - "prismjs": "^1.21.0", - "refractor": "^3.1.0" - }, - "peerDependencies": { - "react": ">= 0.14.0" - } - }, "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-controls/node_modules/@storybook/theming": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.3.12.tgz", - "integrity": "sha512-wOJdTEa/VFyFB2UyoqyYGaZdym6EN7RALuQOAMT6zHA282FBmKw8nL5DETHEbctpnHdcrMC/391teK4nNSrdOA==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.4.19.tgz", + "integrity": "sha512-V4pWmTvAxmbHR6B3jA4hPkaxZPyExHvCToy7b76DpUTpuHihijNDMAn85KhOQYIeL9q14zP/aiz899tOHsOidg==", "dev": true, "dependencies": { "@emotion/core": "^10.1.1", "@emotion/is-prop-valid": "^0.8.6", "@emotion/styled": "^10.0.27", - "@storybook/client-logger": "6.3.12", + "@storybook/client-logger": "6.4.19", "core-js": "^3.8.2", "deep-object-diff": "^1.1.0", "emotion-theming": "^10.0.27", @@ -11060,12 +10798,12 @@ } }, "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-controls/node_modules/@storybook/theming/node_modules/@emotion/styled": { - "version": "10.0.27", - "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-10.0.27.tgz", - "integrity": "sha512-iK/8Sh7+NLJzyp9a5+vIQIXTYxfT4yB/OJbjzQanB2RZpvmzBQOHZWhpAMZWYEKRNNbsD6WfBw5sVWkb6WzS/Q==", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-10.3.0.tgz", + "integrity": "sha512-GgcUpXBBEU5ido+/p/mCT2/Xx+Oqmp9JzQRuC+a4lYM4i4LBBn/dWvc0rQ19N9ObA8/T4NWMrPNe79kMBDJqoQ==", "dev": true, "dependencies": { - "@emotion/styled-base": "^10.0.27", + "@emotion/styled-base": "^10.3.0", "babel-plugin-emotion": "^10.0.27" }, "peerDependencies": { @@ -11073,10 +10811,151 @@ "react": ">=16.3.0" } }, + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-controls/node_modules/@storybook/theming/node_modules/@emotion/styled/node_modules/@emotion/styled-base": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@emotion/styled-base/-/styled-base-10.3.0.tgz", + "integrity": "sha512-PBRqsVKR7QRNkmfH78hTSSwHWcwDpecH9W6heujWAcyp2wdz/64PP73s7fWS1dIPm8/Exc8JAzYS8dEWXjv60w==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.5.5", + "@emotion/is-prop-valid": "0.8.8", + "@emotion/serialize": "^0.11.15", + "@emotion/utils": "0.11.3" + }, + "peerDependencies": { + "@emotion/core": "^10.0.28", + "react": ">=16.3.0" + } + }, + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-controls/node_modules/acorn": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-controls/node_modules/babel-plugin-macros": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", + "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.12.5", + "cosmiconfig": "^7.0.0", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">=10", + "npm": ">=6" + } + }, + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-controls/node_modules/loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-controls/node_modules/loader-utils/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-controls/node_modules/terser-webpack-plugin": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz", + "integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==", + "dev": true, + "dependencies": { + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", + "is-wsl": "^1.1.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^4.0.0", + "source-map": "^0.6.1", + "terser": "^4.1.2", + "webpack-sources": "^1.4.0", + "worker-farm": "^1.7.0" + }, + "engines": { + "node": ">= 6.9.0" + }, + "peerDependencies": { + "webpack": "^4.0.0" + } + }, + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-controls/node_modules/webpack": { + "version": "4.46.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.46.0.tgz", + "integrity": "sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/wasm-edit": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "acorn": "^6.4.1", + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^4.5.0", + "eslint-scope": "^4.0.3", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.4.0", + "loader-utils": "^1.2.3", + "memory-fs": "^0.4.1", + "micromatch": "^3.1.10", + "mkdirp": "^0.5.3", + "neo-async": "^2.6.1", + "node-libs-browser": "^2.2.1", + "schema-utils": "^1.0.0", + "tapable": "^1.1.3", + "terser-webpack-plugin": "^1.4.3", + "watchpack": "^1.7.4", + "webpack-sources": "^1.4.1" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=6.11.5" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + }, + "webpack-command": { + "optional": true + } + } + }, "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-6.3.12.tgz", - "integrity": "sha512-iUrqJBMTOn2PgN8AWNQkfxfIPkh8pEg27t8UndMgfOpeGK/VWGw2UEifnA82flvntcilT4McxmVbRHkeBY9K5A==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-6.4.19.tgz", + "integrity": "sha512-OEPyx/5ZXmZOPqIAWoPjlIP8Q/YfNjAmBosA8tmA8t5KCSiq/vpLcAvQhxqK6n0wk/B8Xp67Z8RpLfXjU8R3tw==", "dev": true, "dependencies": { "@babel/core": "^7.12.10", @@ -11088,20 +10967,21 @@ "@mdx-js/loader": "^1.6.22", "@mdx-js/mdx": "^1.6.22", "@mdx-js/react": "^1.6.22", - "@storybook/addons": "6.3.12", - "@storybook/api": "6.3.12", - "@storybook/builder-webpack4": "6.3.12", - "@storybook/client-api": "6.3.12", - "@storybook/client-logger": "6.3.12", - "@storybook/components": "6.3.12", - "@storybook/core": "6.3.12", - "@storybook/core-events": "6.3.12", - "@storybook/csf": "0.0.1", - "@storybook/csf-tools": "6.3.12", - "@storybook/node-logger": "6.3.12", - "@storybook/postinstall": "6.3.12", - "@storybook/source-loader": "6.3.12", - "@storybook/theming": "6.3.12", + "@storybook/addons": "6.4.19", + "@storybook/api": "6.4.19", + "@storybook/builder-webpack4": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/components": "6.4.19", + "@storybook/core": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/csf-tools": "6.4.19", + "@storybook/node-logger": "6.4.19", + "@storybook/postinstall": "6.4.19", + "@storybook/preview-web": "6.4.19", + "@storybook/source-loader": "6.4.19", + "@storybook/store": "6.4.19", + "@storybook/theming": "6.4.19", "acorn": "^7.4.1", "acorn-jsx": "^5.3.1", "acorn-walk": "^7.2.0", @@ -11113,11 +10993,12 @@ "html-tags": "^3.1.0", "js-string-escape": "^1.0.1", "loader-utils": "^2.0.0", - "lodash": "^4.17.20", + "lodash": "^4.17.21", + "nanoid": "^3.1.23", "p-limit": "^3.1.0", - "prettier": "~2.2.1", + "prettier": ">=2.2.1 <=2.3.0", "prop-types": "^15.7.2", - "react-element-to-jsx-string": "^14.3.2", + "react-element-to-jsx-string": "^14.3.4", "regenerator-runtime": "^0.13.7", "remark-external-links": "^8.0.0", "remark-slug": "^6.0.0", @@ -11129,12 +11010,14 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "@storybook/angular": "6.3.12", - "@storybook/vue": "6.3.12", - "@storybook/vue3": "6.3.12", - "@storybook/web-components": "6.3.12", - "lit": "^2.0.0-rc.1", - "lit-html": "^1.4.1 || ^2.0.0-rc.3", + "@storybook/angular": "6.4.19", + "@storybook/html": "6.4.19", + "@storybook/react": "6.4.19", + "@storybook/vue": "6.4.19", + "@storybook/vue3": "6.4.19", + "@storybook/web-components": "6.4.19", + "lit": "^2.0.0", + "lit-html": "^1.4.1 || ^2.0.0", "react": "^16.8.0 || ^17.0.0", "react-dom": "^16.8.0 || ^17.0.0", "svelte": "^3.31.2", @@ -11146,6 +11029,12 @@ "@storybook/angular": { "optional": true }, + "@storybook/html": { + "optional": true + }, + "@storybook/react": { + "optional": true + }, "@storybook/vue": { "optional": true }, @@ -11195,9 +11084,9 @@ } }, "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/builder-webpack4": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/builder-webpack4/-/builder-webpack4-6.3.12.tgz", - "integrity": "sha512-Dlm5Fc1svqpFDnVPZdAaEBiM/IDZHMV3RfEGbUTY/ZC0q8b/Ug1czzp/w0aTIjOFRuBDcG6IcplikaqHL8CJLg==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/builder-webpack4/-/builder-webpack4-6.4.19.tgz", + "integrity": "sha512-wxA6SMH11duc9D53aeVVBwrVRemFIoxHp/dOugkkg6ZZFAb4ZmWzf/ENc3vQIZdZpfNRi7IZIZEOfoHc994cmw==", "dev": true, "dependencies": { "@babel/core": "^7.12.10", @@ -11221,34 +11110,34 @@ "@babel/preset-env": "^7.12.11", "@babel/preset-react": "^7.12.10", "@babel/preset-typescript": "^7.12.7", - "@storybook/addons": "6.3.12", - "@storybook/api": "6.3.12", - "@storybook/channel-postmessage": "6.3.12", - "@storybook/channels": "6.3.12", - "@storybook/client-api": "6.3.12", - "@storybook/client-logger": "6.3.12", - "@storybook/components": "6.3.12", - "@storybook/core-common": "6.3.12", - "@storybook/core-events": "6.3.12", - "@storybook/node-logger": "6.3.12", - "@storybook/router": "6.3.12", + "@storybook/addons": "6.4.19", + "@storybook/api": "6.4.19", + "@storybook/channel-postmessage": "6.4.19", + "@storybook/channels": "6.4.19", + "@storybook/client-api": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/components": "6.4.19", + "@storybook/core-common": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/node-logger": "6.4.19", + "@storybook/preview-web": "6.4.19", + "@storybook/router": "6.4.19", "@storybook/semver": "^7.3.2", - "@storybook/theming": "6.3.12", - "@storybook/ui": "6.3.12", + "@storybook/store": "6.4.19", + "@storybook/theming": "6.4.19", + "@storybook/ui": "6.4.19", "@types/node": "^14.0.10", "@types/webpack": "^4.41.26", "autoprefixer": "^9.8.6", - "babel-loader": "^8.2.2", + "babel-loader": "^8.0.0", "babel-plugin-macros": "^2.8.0", "babel-plugin-polyfill-corejs3": "^0.1.0", "case-sensitive-paths-webpack-plugin": "^2.3.0", "core-js": "^3.8.2", "css-loader": "^3.6.0", - "dotenv-webpack": "^1.8.0", "file-loader": "^6.2.0", "find-up": "^5.0.0", "fork-ts-checker-webpack-plugin": "^4.1.6", - "fs-extra": "^9.0.1", "glob": "^7.1.6", "glob-promise": "^3.4.0", "global": "^4.4.0", @@ -11258,7 +11147,6 @@ "postcss-flexbugs-fixes": "^4.2.1", "postcss-loader": "^4.2.0", "raw-loader": "^4.0.2", - "react-dev-utils": "^11.0.3", "stable": "^0.1.8", "style-loader": "^1.3.0", "terser-webpack-plugin": "^4.2.3", @@ -11268,7 +11156,7 @@ "webpack": "4", "webpack-dev-middleware": "^3.7.3", "webpack-filter-warnings-plugin": "^1.2.1", - "webpack-hot-middleware": "^2.25.0", + "webpack-hot-middleware": "^2.25.1", "webpack-virtual-modules": "^0.2.2" }, "funding": { @@ -11286,9 +11174,9 @@ } }, "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/builder-webpack4/node_modules/@storybook/core-common": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-6.3.12.tgz", - "integrity": "sha512-xlHs2QXELq/moB4MuXjYOczaxU64BIseHsnFBLyboJYN6Yso3qihW5RB7cuJlGohkjb4JwY74dvfT4Ww66rkBA==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-6.4.19.tgz", + "integrity": "sha512-X1pJJkO48DFxl6iyEemIKqRkJ7j9/cBh3BRBUr+xZHXBvnD0GKDXIocwh0PjSxSC6XSu3UCQnqtKi3PbjRl8Dg==", "dev": true, "dependencies": { "@babel/core": "^7.12.10", @@ -11312,13 +11200,11 @@ "@babel/preset-react": "^7.12.10", "@babel/preset-typescript": "^7.12.7", "@babel/register": "^7.12.1", - "@storybook/node-logger": "6.3.12", + "@storybook/node-logger": "6.4.19", "@storybook/semver": "^7.3.2", - "@types/glob-base": "^0.3.0", - "@types/micromatch": "^4.0.1", "@types/node": "^14.0.10", "@types/pretty-hrtime": "^1.0.0", - "babel-loader": "^8.2.2", + "babel-loader": "^8.0.0", "babel-plugin-macros": "^3.0.1", "babel-plugin-polyfill-corejs3": "^0.1.0", "chalk": "^4.1.0", @@ -11327,15 +11213,18 @@ "file-system-cache": "^1.0.5", "find-up": "^5.0.0", "fork-ts-checker-webpack-plugin": "^6.0.4", + "fs-extra": "^9.0.1", "glob": "^7.1.6", - "glob-base": "^0.3.0", + "handlebars": "^4.7.7", "interpret": "^2.2.0", "json5": "^2.1.3", "lazy-universal-dotenv": "^3.0.1", - "micromatch": "^4.0.2", + "picomatch": "^2.3.0", "pkg-dir": "^5.0.0", "pretty-hrtime": "^1.0.3", "resolve-from": "^5.0.0", + "slash": "^3.0.0", + "telejson": "^5.3.2", "ts-dedent": "^2.0.0", "util-deprecate": "^1.0.2", "webpack": "4" @@ -11370,9 +11259,9 @@ } }, "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/builder-webpack4/node_modules/@storybook/core-common/node_modules/fork-ts-checker-webpack-plugin": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.4.0.tgz", - "integrity": "sha512-3I3wFkc4DbzaUDPWEi96wdYGu4EKtxBafhZYm0o4mX51d9bphAY4P3mBl8K5mFXFJqVzHfmdbm9kLGnm7vwwBg==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.0.tgz", + "integrity": "sha512-cS178Y+xxtIjEUorcHddKS7yCMlrDPV31mt47blKKRfMd70Kxu5xruAFE2o9sDY6wVC5deuob/u/alD04YYHnw==", "dev": true, "dependencies": { "@babel/code-frame": "^7.8.3", @@ -11424,19 +11313,6 @@ "node": ">=8" } }, - "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/builder-webpack4/node_modules/@storybook/core-common/node_modules/micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", - "dev": true, - "dependencies": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" - }, - "engines": { - "node": ">=8.6" - } - }, "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/builder-webpack4/node_modules/@storybook/core-common/node_modules/schema-utils": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", @@ -11471,20 +11347,21 @@ } }, "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/builder-webpack4/node_modules/@storybook/router": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.3.12.tgz", - "integrity": "sha512-G/pNGCnrJRetCwyEZulHPT+YOcqEj/vkPVDTUfii2qgqukup6K0cjwgd7IukAURnAnnzTi1gmgFuEKUi8GE/KA==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.4.19.tgz", + "integrity": "sha512-KWWwIzuyeEIWVezkCihwY2A76Il9tUNg0I410g9qT7NrEsKyqXGRYOijWub7c1GGyNjLqz0jtrrehtixMcJkuA==", "dev": true, "dependencies": { - "@reach/router": "^1.3.4", - "@storybook/client-logger": "6.3.12", - "@types/reach__router": "^1.3.7", + "@storybook/client-logger": "6.4.19", "core-js": "^3.8.2", "fast-deep-equal": "^3.1.3", "global": "^4.4.0", - "lodash": "^4.17.20", + "history": "5.0.0", + "lodash": "^4.17.21", "memoizerific": "^1.11.3", "qs": "^6.10.0", + "react-router": "^6.0.0", + "react-router-dom": "^6.0.0", "ts-dedent": "^2.0.0" }, "funding": { @@ -11496,23 +11373,66 @@ "react-dom": "^16.8.0 || ^17.0.0" } }, + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/builder-webpack4/node_modules/@storybook/router/node_modules/react-router": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.2.2.tgz", + "integrity": "sha512-/MbxyLzd7Q7amp4gDOGaYvXwhEojkJD5BtExkuKmj39VEE0m3l/zipf6h2WIB2jyAO0lI6NGETh4RDcktRm4AQ==", + "dev": true, + "dependencies": { + "history": "^5.2.0" + }, + "peerDependencies": { + "react": ">=16.8" + } + }, + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/builder-webpack4/node_modules/@storybook/router/node_modules/react-router-dom": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.2.2.tgz", + "integrity": "sha512-AtYEsAST7bDD4dLSQHDnk/qxWLJdad5t1HFa1qJyUrCeGgEuCSw0VB/27ARbF9Fi/W5598ujvJOm3ujUCVzuYQ==", + "dev": true, + "dependencies": { + "history": "^5.2.0", + "react-router": "6.2.2" + }, + "peerDependencies": { + "react": ">=16.8", + "react-dom": ">=16.8" + } + }, + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/builder-webpack4/node_modules/@storybook/router/node_modules/react-router-dom/node_modules/history": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/history/-/history-5.3.0.tgz", + "integrity": "sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.7.6" + } + }, + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/builder-webpack4/node_modules/@storybook/router/node_modules/react-router/node_modules/history": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/history/-/history-5.3.0.tgz", + "integrity": "sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.7.6" + } + }, "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/builder-webpack4/node_modules/@storybook/ui": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/ui/-/ui-6.3.12.tgz", - "integrity": "sha512-PC2yEz4JMfarq7rUFbeA3hCA+31p5es7YPEtxLRvRwIZhtL0P4zQUfHpotb3KgWdoAIfZesAuoIQwMPQmEFYrw==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/ui/-/ui-6.4.19.tgz", + "integrity": "sha512-gFwdn5LA2U6oQ4bfUFLyHZnNasGQ01YVdwjbi+l6yjmnckBNtZfJoVTZ1rzGUbxSE9rK48InJRU+latTsr7xAg==", "dev": true, "dependencies": { "@emotion/core": "^10.1.1", - "@storybook/addons": "6.3.12", - "@storybook/api": "6.3.12", - "@storybook/channels": "6.3.12", - "@storybook/client-logger": "6.3.12", - "@storybook/components": "6.3.12", - "@storybook/core-events": "6.3.12", - "@storybook/router": "6.3.12", + "@storybook/addons": "6.4.19", + "@storybook/api": "6.4.19", + "@storybook/channels": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/components": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/router": "6.4.19", "@storybook/semver": "^7.3.2", - "@storybook/theming": "6.3.12", - "@types/markdown-to-jsx": "^6.11.3", + "@storybook/theming": "6.4.19", "copy-to-clipboard": "^3.3.1", "core-js": "^3.8.2", "core-js-pure": "^3.8.2", @@ -11520,8 +11440,8 @@ "emotion-theming": "^10.0.27", "fuse.js": "^3.6.1", "global": "^4.4.0", - "lodash": "^4.17.20", - "markdown-to-jsx": "^6.11.4", + "lodash": "^4.17.21", + "markdown-to-jsx": "^7.1.3", "memoizerific": "^1.11.3", "polished": "^4.0.5", "qs": "^6.10.0", @@ -11557,26 +11477,10 @@ "react": ">=16.12.0" } }, - "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/builder-webpack4/node_modules/@storybook/ui/node_modules/markdown-to-jsx": { - "version": "6.11.4", - "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-6.11.4.tgz", - "integrity": "sha512-3lRCD5Sh+tfA52iGgfs/XZiw33f7fFX9Bn55aNnVNUd2GzLDkOWyKYYD8Yju2B1Vn+feiEdgJs8T6Tg0xNokPw==", - "dev": true, - "dependencies": { - "prop-types": "^15.6.2", - "unquote": "^1.1.0" - }, - "engines": { - "node": ">= 4" - }, - "peerDependencies": { - "react": ">= 0.14.0" - } - }, "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/builder-webpack4/node_modules/@storybook/ui/node_modules/react-helmet-async": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/react-helmet-async/-/react-helmet-async-1.1.2.tgz", - "integrity": "sha512-LTTzDDkyIleT/JJ6T/uqx7Y8qi1EuPPSiJawQY/nHHz0h7SPDT6HxP1YDDQx/fzcVxCqpWEEMS3QdrSrNkJYhg==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/react-helmet-async/-/react-helmet-async-1.2.3.tgz", + "integrity": "sha512-mCk2silF53Tq/YaYdkl2sB+/tDoPnaxN7dFS/6ZLJb/rhUY2EWGI5Xj2b4jHppScMqY45MbgPSwTxDchKpZ5Kw==", "dev": true, "dependencies": { "@babel/runtime": "^7.12.5", @@ -11602,10 +11506,10 @@ "node": ">=0.4.0" } }, - "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/builder-webpack4/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/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/builder-webpack4/node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", "dev": true }, "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/builder-webpack4/node_modules/css-loader": { @@ -11692,18 +11596,6 @@ "semver": "bin/semver.js" } }, - "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/builder-webpack4/node_modules/dotenv-webpack": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/dotenv-webpack/-/dotenv-webpack-1.8.0.tgz", - "integrity": "sha512-o8pq6NLBehtrqA8Jv8jFQNtG9nhRtVqmoD4yWbgUyoU3+9WBlPe+c2EAiaJok9RB28QvrWvdWLZGeTT5aATDMg==", - "dev": true, - "dependencies": { - "dotenv-defaults": "^1.0.2" - }, - "peerDependencies": { - "webpack": "^1 || ^2 || ^3 || ^4" - } - }, "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/builder-webpack4/node_modules/file-loader": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", @@ -11724,6 +11616,24 @@ "webpack": "^4.0.0 || ^5.0.0" } }, + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/builder-webpack4/node_modules/file-loader/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==", + "dev": true, + "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/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/builder-webpack4/node_modules/fork-ts-checker-webpack-plugin": { "version": "4.1.6", "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-4.1.6.tgz", @@ -11806,6 +11716,68 @@ "node": ">=4.0.0" } }, + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/builder-webpack4/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/builder-webpack4/node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/builder-webpack4/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/builder-webpack4/node_modules/p-locate/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/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/builder-webpack4/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/builder-webpack4/node_modules/postcss-loader": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-4.3.0.tgz", @@ -11830,6 +11802,24 @@ "webpack": "^4.0.0 || ^5.0.0" } }, + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/builder-webpack4/node_modules/postcss-loader/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==", + "dev": true, + "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/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/builder-webpack4/node_modules/postcss-loader/node_modules/semver": { "version": "7.3.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", @@ -11865,6 +11855,45 @@ "webpack": "^4.0.0 || ^5.0.0" } }, + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/builder-webpack4/node_modules/raw-loader/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==", + "dev": true, + "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/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/builder-webpack4/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/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/builder-webpack4/node_modules/ssri": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", + "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", + "dev": true, + "dependencies": { + "figgy-pudding": "^3.5.1" + } + }, "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/builder-webpack4/node_modules/style-loader": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-1.3.0.tgz", @@ -11930,6 +11959,69 @@ "webpack": "^4.0.0 || ^5.0.0" } }, + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/builder-webpack4/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==", + "dev": true, + "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/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/builder-webpack4/node_modules/url-loader": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-4.1.1.tgz", + "integrity": "sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==", + "dev": true, + "dependencies": { + "loader-utils": "^2.0.0", + "mime-types": "^2.1.27", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "file-loader": "*", + "webpack": "^4.0.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "file-loader": { + "optional": true + } + } + }, + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/builder-webpack4/node_modules/url-loader/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==", + "dev": true, + "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/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/builder-webpack4/node_modules/webpack": { "version": "4.46.0", "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.46.0.tgz", @@ -12106,20 +12198,6 @@ "node": ">=6" } }, - "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/builder-webpack4/node_modules/webpack/node_modules/schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "dependencies": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - }, - "engines": { - "node": ">= 4" - } - }, "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/builder-webpack4/node_modules/webpack/node_modules/serialize-javascript": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", @@ -12170,15 +12248,15 @@ } }, "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/components": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/components/-/components-6.3.12.tgz", - "integrity": "sha512-kdQt8toUjynYAxDLrJzuG7YSNL6as1wJoyzNUaCfG06YPhvIAlKo7le9tS2mThVFN5e9nbKrW3N1V1sp6ypZXQ==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-6.4.19.tgz", + "integrity": "sha512-q/0V37YAJA7CNc+wSiiefeM9+3XVk8ixBNylY36QCGJgIeGQ5/79vPyUe6K4lLmsQwpmZsIq1s1Ad5+VbboeOA==", "dev": true, "dependencies": { "@popperjs/core": "^2.6.0", - "@storybook/client-logger": "6.3.12", - "@storybook/csf": "0.0.1", - "@storybook/theming": "6.3.12", + "@storybook/client-logger": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/theming": "6.4.19", "@types/color-convert": "^2.0.0", "@types/overlayscrollbars": "^1.12.0", "@types/react-syntax-highlighter": "11.0.5", @@ -12186,7 +12264,7 @@ "core-js": "^3.8.2", "fast-deep-equal": "^3.1.3", "global": "^4.4.0", - "lodash": "^4.17.20", + "lodash": "^4.17.21", "markdown-to-jsx": "^7.1.3", "memoizerific": "^1.11.3", "overlayscrollbars": "^1.13.1", @@ -12226,22 +12304,23 @@ } }, "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/core/-/core-6.3.12.tgz", - "integrity": "sha512-FJm2ns8wk85hXWKslLWiUWRWwS9KWRq7jlkN6M9p57ghFseSGr4W71Orcoab4P3M7jI97l5yqBfppbscinE74g==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/core/-/core-6.4.19.tgz", + "integrity": "sha512-55LOQ/h/kf1jMhjN85t/pIEdIwWEG9yV7bdwv3niVvmoypCxyyjn9/QNK0RKYAeDSUtdm6FVoJ6k5CpxWz2d8w==", "dev": true, "dependencies": { - "@storybook/core-client": "6.3.12", - "@storybook/core-server": "6.3.12" + "@storybook/core-client": "6.4.19", + "@storybook/core-server": "6.4.19" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "@storybook/builder-webpack5": "6.3.12", + "@storybook/builder-webpack5": "6.4.19", "react": "^16.8.0 || ^17.0.0", - "react-dom": "^16.8.0 || ^17.0.0" + "react-dom": "^16.8.0 || ^17.0.0", + "webpack": "*" }, "peerDependenciesMeta": { "@storybook/builder-webpack5": { @@ -12253,23 +12332,26 @@ } }, "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/@storybook/core-client": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/core-client/-/core-client-6.3.12.tgz", - "integrity": "sha512-8Smd9BgZHJpAdevLKQYinwtjSyCZAuBMoetP4P5hnn53mWl0NFbrHFaAdT+yNchDLZQUbf7Y18VmIqEH+RCR5w==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/core-client/-/core-client-6.4.19.tgz", + "integrity": "sha512-rQHRZjhArPleE7/S8ZUolgzwY+hC0smSKX/3PQxO2GcebDjnJj6+iSV3h+aSMHMmTdoCQvjYw9aBpT8scuRe+A==", "dev": true, "dependencies": { - "@storybook/addons": "6.3.12", - "@storybook/channel-postmessage": "6.3.12", - "@storybook/client-api": "6.3.12", - "@storybook/client-logger": "6.3.12", - "@storybook/core-events": "6.3.12", - "@storybook/csf": "0.0.1", - "@storybook/ui": "6.3.12", + "@storybook/addons": "6.4.19", + "@storybook/channel-postmessage": "6.4.19", + "@storybook/channel-websocket": "6.4.19", + "@storybook/client-api": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/preview-web": "6.4.19", + "@storybook/store": "6.4.19", + "@storybook/ui": "6.4.19", "airbnb-js-shims": "^2.2.1", "ansi-to-html": "^0.6.11", "core-js": "^3.8.2", "global": "^4.4.0", - "lodash": "^4.17.20", + "lodash": "^4.17.21", "qs": "^6.10.0", "regenerator-runtime": "^0.13.7", "ts-dedent": "^2.0.0", @@ -12292,22 +12374,21 @@ } }, "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/@storybook/core-client/node_modules/@storybook/ui": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/ui/-/ui-6.3.12.tgz", - "integrity": "sha512-PC2yEz4JMfarq7rUFbeA3hCA+31p5es7YPEtxLRvRwIZhtL0P4zQUfHpotb3KgWdoAIfZesAuoIQwMPQmEFYrw==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/ui/-/ui-6.4.19.tgz", + "integrity": "sha512-gFwdn5LA2U6oQ4bfUFLyHZnNasGQ01YVdwjbi+l6yjmnckBNtZfJoVTZ1rzGUbxSE9rK48InJRU+latTsr7xAg==", "dev": true, "dependencies": { "@emotion/core": "^10.1.1", - "@storybook/addons": "6.3.12", - "@storybook/api": "6.3.12", - "@storybook/channels": "6.3.12", - "@storybook/client-logger": "6.3.12", - "@storybook/components": "6.3.12", - "@storybook/core-events": "6.3.12", - "@storybook/router": "6.3.12", + "@storybook/addons": "6.4.19", + "@storybook/api": "6.4.19", + "@storybook/channels": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/components": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/router": "6.4.19", "@storybook/semver": "^7.3.2", - "@storybook/theming": "6.3.12", - "@types/markdown-to-jsx": "^6.11.3", + "@storybook/theming": "6.4.19", "copy-to-clipboard": "^3.3.1", "core-js": "^3.8.2", "core-js-pure": "^3.8.2", @@ -12315,8 +12396,8 @@ "emotion-theming": "^10.0.27", "fuse.js": "^3.6.1", "global": "^4.4.0", - "lodash": "^4.17.20", - "markdown-to-jsx": "^6.11.4", + "lodash": "^4.17.21", + "markdown-to-jsx": "^7.1.3", "memoizerific": "^1.11.3", "polished": "^4.0.5", "qs": "^6.10.0", @@ -12337,20 +12418,21 @@ } }, "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/@storybook/core-client/node_modules/@storybook/ui/node_modules/@storybook/router": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.3.12.tgz", - "integrity": "sha512-G/pNGCnrJRetCwyEZulHPT+YOcqEj/vkPVDTUfii2qgqukup6K0cjwgd7IukAURnAnnzTi1gmgFuEKUi8GE/KA==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.4.19.tgz", + "integrity": "sha512-KWWwIzuyeEIWVezkCihwY2A76Il9tUNg0I410g9qT7NrEsKyqXGRYOijWub7c1GGyNjLqz0jtrrehtixMcJkuA==", "dev": true, "dependencies": { - "@reach/router": "^1.3.4", - "@storybook/client-logger": "6.3.12", - "@types/reach__router": "^1.3.7", + "@storybook/client-logger": "6.4.19", "core-js": "^3.8.2", "fast-deep-equal": "^3.1.3", "global": "^4.4.0", - "lodash": "^4.17.20", + "history": "5.0.0", + "lodash": "^4.17.21", "memoizerific": "^1.11.3", "qs": "^6.10.0", + "react-router": "^6.0.0", + "react-router-dom": "^6.0.0", "ts-dedent": "^2.0.0" }, "funding": { @@ -12362,6 +12444,50 @@ "react-dom": "^16.8.0 || ^17.0.0" } }, + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/@storybook/core-client/node_modules/@storybook/ui/node_modules/@storybook/router/node_modules/react-router": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.2.2.tgz", + "integrity": "sha512-/MbxyLzd7Q7amp4gDOGaYvXwhEojkJD5BtExkuKmj39VEE0m3l/zipf6h2WIB2jyAO0lI6NGETh4RDcktRm4AQ==", + "dev": true, + "dependencies": { + "history": "^5.2.0" + }, + "peerDependencies": { + "react": ">=16.8" + } + }, + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/@storybook/core-client/node_modules/@storybook/ui/node_modules/@storybook/router/node_modules/react-router-dom": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.2.2.tgz", + "integrity": "sha512-AtYEsAST7bDD4dLSQHDnk/qxWLJdad5t1HFa1qJyUrCeGgEuCSw0VB/27ARbF9Fi/W5598ujvJOm3ujUCVzuYQ==", + "dev": true, + "dependencies": { + "history": "^5.2.0", + "react-router": "6.2.2" + }, + "peerDependencies": { + "react": ">=16.8", + "react-dom": ">=16.8" + } + }, + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/@storybook/core-client/node_modules/@storybook/ui/node_modules/@storybook/router/node_modules/react-router-dom/node_modules/history": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/history/-/history-5.3.0.tgz", + "integrity": "sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.7.6" + } + }, + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/@storybook/core-client/node_modules/@storybook/ui/node_modules/@storybook/router/node_modules/react-router/node_modules/history": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/history/-/history-5.3.0.tgz", + "integrity": "sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.7.6" + } + }, "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/@storybook/core-client/node_modules/@storybook/ui/node_modules/downshift": { "version": "6.1.7", "resolved": "https://registry.npmjs.org/downshift/-/downshift-6.1.7.tgz", @@ -12378,26 +12504,10 @@ "react": ">=16.12.0" } }, - "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/@storybook/core-client/node_modules/@storybook/ui/node_modules/markdown-to-jsx": { - "version": "6.11.4", - "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-6.11.4.tgz", - "integrity": "sha512-3lRCD5Sh+tfA52iGgfs/XZiw33f7fFX9Bn55aNnVNUd2GzLDkOWyKYYD8Yju2B1Vn+feiEdgJs8T6Tg0xNokPw==", - "dev": true, - "dependencies": { - "prop-types": "^15.6.2", - "unquote": "^1.1.0" - }, - "engines": { - "node": ">= 4" - }, - "peerDependencies": { - "react": ">= 0.14.0" - } - }, "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/@storybook/core-client/node_modules/@storybook/ui/node_modules/react-helmet-async": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/react-helmet-async/-/react-helmet-async-1.1.2.tgz", - "integrity": "sha512-LTTzDDkyIleT/JJ6T/uqx7Y8qi1EuPPSiJawQY/nHHz0h7SPDT6HxP1YDDQx/fzcVxCqpWEEMS3QdrSrNkJYhg==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/react-helmet-async/-/react-helmet-async-1.2.3.tgz", + "integrity": "sha512-mCk2silF53Tq/YaYdkl2sB+/tDoPnaxN7dFS/6ZLJb/rhUY2EWGI5Xj2b4jHppScMqY45MbgPSwTxDchKpZ5Kw==", "dev": true, "dependencies": { "@babel/runtime": "^7.12.5", @@ -12412,53 +12522,61 @@ } }, "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/@storybook/core-server": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/core-server/-/core-server-6.3.12.tgz", - "integrity": "sha512-T/Mdyi1FVkUycdyOnhXvoo3d9nYXLQFkmaJkltxBFLzAePAJUSgAsPL9odNC3+p8Nr2/UDsDzvu/Ow0IF0mzLQ==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/core-server/-/core-server-6.4.19.tgz", + "integrity": "sha512-bKsUB9f7hl5ya2JXxpIrErmbDQjoH39FVbzYZWjMo4t/b7+Xyi6vYadwyWcqlpUQmis09ZaSMv8L/Tw0TuwLAA==", "dev": true, "dependencies": { "@discoveryjs/json-ext": "^0.5.3", - "@storybook/builder-webpack4": "6.3.12", - "@storybook/core-client": "6.3.12", - "@storybook/core-common": "6.3.12", - "@storybook/csf-tools": "6.3.12", - "@storybook/manager-webpack4": "6.3.12", - "@storybook/node-logger": "6.3.12", + "@storybook/builder-webpack4": "6.4.19", + "@storybook/core-client": "6.4.19", + "@storybook/core-common": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/csf-tools": "6.4.19", + "@storybook/manager-webpack4": "6.4.19", + "@storybook/node-logger": "6.4.19", "@storybook/semver": "^7.3.2", + "@storybook/store": "6.4.19", "@types/node": "^14.0.10", "@types/node-fetch": "^2.5.7", "@types/pretty-hrtime": "^1.0.0", "@types/webpack": "^4.41.26", "better-opn": "^2.1.1", - "boxen": "^4.2.0", + "boxen": "^5.1.2", "chalk": "^4.1.0", - "cli-table3": "0.6.0", + "cli-table3": "^0.6.1", "commander": "^6.2.1", "compression": "^1.7.4", "core-js": "^3.8.2", - "cpy": "^8.1.1", + "cpy": "^8.1.2", "detect-port": "^1.3.0", "express": "^4.17.1", "file-system-cache": "^1.0.5", "fs-extra": "^9.0.1", "globby": "^11.0.2", "ip": "^1.1.5", + "lodash": "^4.17.21", "node-fetch": "^2.6.1", "pretty-hrtime": "^1.0.3", "prompts": "^2.4.0", "regenerator-runtime": "^0.13.7", "serve-favicon": "^2.5.0", + "slash": "^3.0.0", + "telejson": "^5.3.3", "ts-dedent": "^2.0.0", "util-deprecate": "^1.0.2", - "webpack": "4" + "watchpack": "^2.2.0", + "webpack": "4", + "ws": "^8.2.3" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "@storybook/builder-webpack5": "6.3.12", - "@storybook/manager-webpack5": "6.3.12", + "@storybook/builder-webpack5": "6.4.19", + "@storybook/manager-webpack5": "6.4.19", "react": "^16.8.0 || ^17.0.0", "react-dom": "^16.8.0 || ^17.0.0" }, @@ -12475,9 +12593,9 @@ } }, "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/@storybook/core-server/node_modules/@storybook/core-common": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-6.3.12.tgz", - "integrity": "sha512-xlHs2QXELq/moB4MuXjYOczaxU64BIseHsnFBLyboJYN6Yso3qihW5RB7cuJlGohkjb4JwY74dvfT4Ww66rkBA==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-6.4.19.tgz", + "integrity": "sha512-X1pJJkO48DFxl6iyEemIKqRkJ7j9/cBh3BRBUr+xZHXBvnD0GKDXIocwh0PjSxSC6XSu3UCQnqtKi3PbjRl8Dg==", "dev": true, "dependencies": { "@babel/core": "^7.12.10", @@ -12501,13 +12619,11 @@ "@babel/preset-react": "^7.12.10", "@babel/preset-typescript": "^7.12.7", "@babel/register": "^7.12.1", - "@storybook/node-logger": "6.3.12", + "@storybook/node-logger": "6.4.19", "@storybook/semver": "^7.3.2", - "@types/glob-base": "^0.3.0", - "@types/micromatch": "^4.0.1", "@types/node": "^14.0.10", "@types/pretty-hrtime": "^1.0.0", - "babel-loader": "^8.2.2", + "babel-loader": "^8.0.0", "babel-plugin-macros": "^3.0.1", "babel-plugin-polyfill-corejs3": "^0.1.0", "chalk": "^4.1.0", @@ -12516,15 +12632,18 @@ "file-system-cache": "^1.0.5", "find-up": "^5.0.0", "fork-ts-checker-webpack-plugin": "^6.0.4", + "fs-extra": "^9.0.1", "glob": "^7.1.6", - "glob-base": "^0.3.0", + "handlebars": "^4.7.7", "interpret": "^2.2.0", "json5": "^2.1.3", "lazy-universal-dotenv": "^3.0.1", - "micromatch": "^4.0.2", + "picomatch": "^2.3.0", "pkg-dir": "^5.0.0", "pretty-hrtime": "^1.0.3", "resolve-from": "^5.0.0", + "slash": "^3.0.0", + "telejson": "^5.3.2", "ts-dedent": "^2.0.0", "util-deprecate": "^1.0.2", "webpack": "4" @@ -12544,28 +12663,27 @@ } }, "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/@storybook/core-server/node_modules/@storybook/manager-webpack4": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/manager-webpack4/-/manager-webpack4-6.3.12.tgz", - "integrity": "sha512-OkPYNrHXg2yZfKmEfTokP6iKx4OLTr0gdI5yehi/bLEuQCSHeruxBc70Dxm1GBk1Mrf821wD9WqMXNDjY5Qtug==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/manager-webpack4/-/manager-webpack4-6.4.19.tgz", + "integrity": "sha512-R8ugZjTYqXvlc6gDOcw909L65sIleOmIJLZR+N6/H85MivGXHu39jOwONqB7tVACufRty4FNecn8tEiQL2SAKA==", "dev": true, "dependencies": { "@babel/core": "^7.12.10", "@babel/plugin-transform-template-literals": "^7.12.1", "@babel/preset-react": "^7.12.10", - "@storybook/addons": "6.3.12", - "@storybook/core-client": "6.3.12", - "@storybook/core-common": "6.3.12", - "@storybook/node-logger": "6.3.12", - "@storybook/theming": "6.3.12", - "@storybook/ui": "6.3.12", + "@storybook/addons": "6.4.19", + "@storybook/core-client": "6.4.19", + "@storybook/core-common": "6.4.19", + "@storybook/node-logger": "6.4.19", + "@storybook/theming": "6.4.19", + "@storybook/ui": "6.4.19", "@types/node": "^14.0.10", "@types/webpack": "^4.41.26", - "babel-loader": "^8.2.2", + "babel-loader": "^8.0.0", "case-sensitive-paths-webpack-plugin": "^2.3.0", "chalk": "^4.1.0", "core-js": "^3.8.2", "css-loader": "^3.6.0", - "dotenv-webpack": "^1.8.0", "express": "^4.17.1", "file-loader": "^6.2.0", "file-system-cache": "^1.0.5", @@ -12602,22 +12720,21 @@ } }, "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/@storybook/core-server/node_modules/@storybook/manager-webpack4/node_modules/@storybook/ui": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/ui/-/ui-6.3.12.tgz", - "integrity": "sha512-PC2yEz4JMfarq7rUFbeA3hCA+31p5es7YPEtxLRvRwIZhtL0P4zQUfHpotb3KgWdoAIfZesAuoIQwMPQmEFYrw==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/ui/-/ui-6.4.19.tgz", + "integrity": "sha512-gFwdn5LA2U6oQ4bfUFLyHZnNasGQ01YVdwjbi+l6yjmnckBNtZfJoVTZ1rzGUbxSE9rK48InJRU+latTsr7xAg==", "dev": true, "dependencies": { "@emotion/core": "^10.1.1", - "@storybook/addons": "6.3.12", - "@storybook/api": "6.3.12", - "@storybook/channels": "6.3.12", - "@storybook/client-logger": "6.3.12", - "@storybook/components": "6.3.12", - "@storybook/core-events": "6.3.12", - "@storybook/router": "6.3.12", + "@storybook/addons": "6.4.19", + "@storybook/api": "6.4.19", + "@storybook/channels": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/components": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/router": "6.4.19", "@storybook/semver": "^7.3.2", - "@storybook/theming": "6.3.12", - "@types/markdown-to-jsx": "^6.11.3", + "@storybook/theming": "6.4.19", "copy-to-clipboard": "^3.3.1", "core-js": "^3.8.2", "core-js-pure": "^3.8.2", @@ -12625,8 +12742,8 @@ "emotion-theming": "^10.0.27", "fuse.js": "^3.6.1", "global": "^4.4.0", - "lodash": "^4.17.20", - "markdown-to-jsx": "^6.11.4", + "lodash": "^4.17.21", + "markdown-to-jsx": "^7.1.3", "memoizerific": "^1.11.3", "polished": "^4.0.5", "qs": "^6.10.0", @@ -12647,20 +12764,21 @@ } }, "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/@storybook/core-server/node_modules/@storybook/manager-webpack4/node_modules/@storybook/ui/node_modules/@storybook/router": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.3.12.tgz", - "integrity": "sha512-G/pNGCnrJRetCwyEZulHPT+YOcqEj/vkPVDTUfii2qgqukup6K0cjwgd7IukAURnAnnzTi1gmgFuEKUi8GE/KA==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.4.19.tgz", + "integrity": "sha512-KWWwIzuyeEIWVezkCihwY2A76Il9tUNg0I410g9qT7NrEsKyqXGRYOijWub7c1GGyNjLqz0jtrrehtixMcJkuA==", "dev": true, "dependencies": { - "@reach/router": "^1.3.4", - "@storybook/client-logger": "6.3.12", - "@types/reach__router": "^1.3.7", + "@storybook/client-logger": "6.4.19", "core-js": "^3.8.2", "fast-deep-equal": "^3.1.3", "global": "^4.4.0", - "lodash": "^4.17.20", + "history": "5.0.0", + "lodash": "^4.17.21", "memoizerific": "^1.11.3", "qs": "^6.10.0", + "react-router": "^6.0.0", + "react-router-dom": "^6.0.0", "ts-dedent": "^2.0.0" }, "funding": { @@ -12672,6 +12790,50 @@ "react-dom": "^16.8.0 || ^17.0.0" } }, + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/@storybook/core-server/node_modules/@storybook/manager-webpack4/node_modules/@storybook/ui/node_modules/@storybook/router/node_modules/react-router": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.2.2.tgz", + "integrity": "sha512-/MbxyLzd7Q7amp4gDOGaYvXwhEojkJD5BtExkuKmj39VEE0m3l/zipf6h2WIB2jyAO0lI6NGETh4RDcktRm4AQ==", + "dev": true, + "dependencies": { + "history": "^5.2.0" + }, + "peerDependencies": { + "react": ">=16.8" + } + }, + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/@storybook/core-server/node_modules/@storybook/manager-webpack4/node_modules/@storybook/ui/node_modules/@storybook/router/node_modules/react-router-dom": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.2.2.tgz", + "integrity": "sha512-AtYEsAST7bDD4dLSQHDnk/qxWLJdad5t1HFa1qJyUrCeGgEuCSw0VB/27ARbF9Fi/W5598ujvJOm3ujUCVzuYQ==", + "dev": true, + "dependencies": { + "history": "^5.2.0", + "react-router": "6.2.2" + }, + "peerDependencies": { + "react": ">=16.8", + "react-dom": ">=16.8" + } + }, + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/@storybook/core-server/node_modules/@storybook/manager-webpack4/node_modules/@storybook/ui/node_modules/@storybook/router/node_modules/react-router-dom/node_modules/history": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/history/-/history-5.3.0.tgz", + "integrity": "sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.7.6" + } + }, + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/@storybook/core-server/node_modules/@storybook/manager-webpack4/node_modules/@storybook/ui/node_modules/@storybook/router/node_modules/react-router/node_modules/history": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/history/-/history-5.3.0.tgz", + "integrity": "sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.7.6" + } + }, "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/@storybook/core-server/node_modules/@storybook/manager-webpack4/node_modules/@storybook/ui/node_modules/downshift": { "version": "6.1.7", "resolved": "https://registry.npmjs.org/downshift/-/downshift-6.1.7.tgz", @@ -12688,26 +12850,10 @@ "react": ">=16.12.0" } }, - "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/@storybook/core-server/node_modules/@storybook/manager-webpack4/node_modules/@storybook/ui/node_modules/markdown-to-jsx": { - "version": "6.11.4", - "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-6.11.4.tgz", - "integrity": "sha512-3lRCD5Sh+tfA52iGgfs/XZiw33f7fFX9Bn55aNnVNUd2GzLDkOWyKYYD8Yju2B1Vn+feiEdgJs8T6Tg0xNokPw==", - "dev": true, - "dependencies": { - "prop-types": "^15.6.2", - "unquote": "^1.1.0" - }, - "engines": { - "node": ">= 4" - }, - "peerDependencies": { - "react": ">= 0.14.0" - } - }, "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/@storybook/core-server/node_modules/@storybook/manager-webpack4/node_modules/@storybook/ui/node_modules/react-helmet-async": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/react-helmet-async/-/react-helmet-async-1.1.2.tgz", - "integrity": "sha512-LTTzDDkyIleT/JJ6T/uqx7Y8qi1EuPPSiJawQY/nHHz0h7SPDT6HxP1YDDQx/fzcVxCqpWEEMS3QdrSrNkJYhg==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/react-helmet-async/-/react-helmet-async-1.2.3.tgz", + "integrity": "sha512-mCk2silF53Tq/YaYdkl2sB+/tDoPnaxN7dFS/6ZLJb/rhUY2EWGI5Xj2b4jHppScMqY45MbgPSwTxDchKpZ5Kw==", "dev": true, "dependencies": { "@babel/runtime": "^7.12.5", @@ -12721,166 +12867,102 @@ "react-dom": "^16.6.0 || ^17.0.0" } }, - "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/@storybook/core-server/node_modules/cacache": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", - "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", - "dev": true, - "dependencies": { - "@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" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/@storybook/core-server/node_modules/chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/@storybook/core-server/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==", + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/@storybook/core-server/node_modules/css-loader": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-3.6.0.tgz", + "integrity": "sha512-M5lSukoWi1If8dhQAUCvj4H8vUt3vOnwbQBH9DdTm/s4Ym2B/3dPMtYZeJmq7Q3S3Pa+I94DcZ7pc9bP14cWIQ==", "dev": true, "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" + "camelcase": "^5.3.1", + "cssesc": "^3.0.0", + "icss-utils": "^4.1.1", + "loader-utils": "^1.2.3", + "normalize-path": "^3.0.0", + "postcss": "^7.0.32", + "postcss-modules-extract-imports": "^2.0.0", + "postcss-modules-local-by-default": "^3.0.2", + "postcss-modules-scope": "^2.2.0", + "postcss-modules-values": "^3.0.0", + "postcss-value-parser": "^4.1.0", + "schema-utils": "^2.7.0", + "semver": "^6.3.0" }, "engines": { - "node": ">=8" + "node": ">= 8.9.0" }, "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" - } - }, - "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/@storybook/core-server/node_modules/find-cache-dir/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, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/@storybook/core-server/node_modules/find-cache-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, - "dependencies": { - "find-up": "^4.0.0" + "type": "opencollective", + "url": "https://opencollective.com/webpack" }, - "engines": { - "node": ">=8" + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" } }, - "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/@storybook/core-server/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==", + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/@storybook/core-server/node_modules/css-loader/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", "dev": true, "dependencies": { - "p-locate": "^4.1.0" + "minimist": "^1.2.0" }, - "engines": { - "node": ">=8" + "bin": { + "json5": "lib/cli.js" } }, - "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/@storybook/core-server/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==", + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/@storybook/core-server/node_modules/css-loader/node_modules/loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", "dev": true, "dependencies": { - "yallist": "^4.0.0" + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" }, "engines": { - "node": ">=10" + "node": ">=4.0.0" } }, - "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/@storybook/core-server/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==", + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/@storybook/core-server/node_modules/css-loader/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": { - "semver": "^6.0.0" + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" }, "engines": { - "node": ">=8" + "node": ">= 8.9.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, - "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/@storybook/core-server/node_modules/micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/@storybook/core-server/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, "dependencies": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/@storybook/core-server/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" + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" }, "engines": { - "node": ">=10" - } - }, - "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/@storybook/core-server/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" + "node": ">= 10.13.0" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" } }, - "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/@storybook/core-server/node_modules/schema-utils": { + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/@storybook/core-server/node_modules/file-loader/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==", @@ -12898,62 +12980,66 @@ "url": "https://opencollective.com/webpack" } }, - "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/@storybook/core-server/node_modules/serialize-javascript": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", - "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/@storybook/core-server/node_modules/html-webpack-plugin": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-4.5.2.tgz", + "integrity": "sha512-q5oYdzjKUIPQVjOosjgvCHQOv9Ett9CYYHlgvJeXG0qQvdSojnBq4vAdQBwn1+yGveAwHCoe/rMR86ozX3+c2A==", "dev": true, "dependencies": { - "randombytes": "^2.1.0" + "@types/html-minifier-terser": "^5.0.0", + "@types/tapable": "^1.0.5", + "@types/webpack": "^4.41.8", + "html-minifier-terser": "^5.0.1", + "loader-utils": "^1.2.3", + "lodash": "^4.17.20", + "pretty-error": "^2.1.1", + "tapable": "^1.1.3", + "util.promisify": "1.0.0" + }, + "engines": { + "node": ">=6.9" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" } }, - "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/@storybook/core-server/node_modules/ssri": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", - "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/@storybook/core-server/node_modules/html-webpack-plugin/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", "dev": true, "dependencies": { - "minipass": "^3.1.1" + "minimist": "^1.2.0" }, - "engines": { - "node": ">= 8" + "bin": { + "json5": "lib/cli.js" } }, - "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/@storybook/core-server/node_modules/terser": { - "version": "5.9.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.9.0.tgz", - "integrity": "sha512-h5hxa23sCdpzcye/7b8YqbE5OwKca/ni0RQz1uRX3tGh8haaGHqcuSqbGRybuAKNdntZ0mDgFNXPJ48xQ2RXKQ==", + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/@storybook/core-server/node_modules/html-webpack-plugin/node_modules/loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", "dev": true, "dependencies": { - "commander": "^2.20.0", - "source-map": "~0.7.2", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" }, "engines": { - "node": ">=10" + "node": ">=4.0.0" } }, - "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/@storybook/core-server/node_modules/terser-webpack-plugin": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-4.2.3.tgz", - "integrity": "sha512-jTgXh40RnvOrLQNgIkwEKnQ8rmHjHK4u+6UBEi+W+FPmvb+uo+chJXntKe7/3lW5mNysgSWD60KyesnhW8D6MQ==", + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/@storybook/core-server/node_modules/style-loader": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-1.3.0.tgz", + "integrity": "sha512-V7TCORko8rs9rIqkSrlMfkqA63DfoGBBJmK1kKGCcSi+BWb4cqz0SRsnp4l6rU5iwOEd0/2ePv68SV22VXon4Q==", "dev": true, "dependencies": { - "cacache": "^15.0.5", - "find-cache-dir": "^3.3.1", - "jest-worker": "^26.5.0", - "p-limit": "^3.0.2", - "schema-utils": "^3.0.0", - "serialize-javascript": "^5.0.1", - "source-map": "^0.6.1", - "terser": "^5.3.4", - "webpack-sources": "^1.4.3" + "loader-utils": "^2.0.0", + "schema-utils": "^2.7.0" }, "engines": { - "node": ">= 10.13.0" + "node": ">= 8.9.0" }, "funding": { "type": "opencollective", @@ -12963,99 +13049,42 @@ "webpack": "^4.0.0 || ^5.0.0" } }, - "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/@storybook/core-server/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==", - "dev": true - }, - "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/@storybook/core-server/node_modules/terser/node_modules/source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/@storybook/core-server/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/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/acorn": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", - "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/babel-plugin-macros": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", - "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/@storybook/core-server/node_modules/style-loader/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": { - "@babel/runtime": "^7.12.5", - "cosmiconfig": "^7.0.0", - "resolve": "^1.19.0" + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" }, "engines": { - "node": ">=10", - "npm": ">=6" - } - }, - "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/cacache": { - "version": "12.0.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", - "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", - "dev": true, - "dependencies": { - "bluebird": "^3.5.5", - "chownr": "^1.1.1", - "figgy-pudding": "^3.5.1", - "glob": "^7.1.4", - "graceful-fs": "^4.1.15", - "infer-owner": "^1.0.3", - "lru-cache": "^5.1.1", - "mississippi": "^3.0.0", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "promise-inflight": "^1.0.1", - "rimraf": "^2.6.3", - "ssri": "^6.0.1", - "unique-filename": "^1.1.1", - "y18n": "^4.0.0" + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, - "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/css-loader": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-3.6.0.tgz", - "integrity": "sha512-M5lSukoWi1If8dhQAUCvj4H8vUt3vOnwbQBH9DdTm/s4Ym2B/3dPMtYZeJmq7Q3S3Pa+I94DcZ7pc9bP14cWIQ==", + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/@storybook/core-server/node_modules/terser-webpack-plugin": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-4.2.3.tgz", + "integrity": "sha512-jTgXh40RnvOrLQNgIkwEKnQ8rmHjHK4u+6UBEi+W+FPmvb+uo+chJXntKe7/3lW5mNysgSWD60KyesnhW8D6MQ==", "dev": true, "dependencies": { - "camelcase": "^5.3.1", - "cssesc": "^3.0.0", - "icss-utils": "^4.1.1", - "loader-utils": "^1.2.3", - "normalize-path": "^3.0.0", - "postcss": "^7.0.32", - "postcss-modules-extract-imports": "^2.0.0", - "postcss-modules-local-by-default": "^3.0.2", - "postcss-modules-scope": "^2.2.0", - "postcss-modules-values": "^3.0.0", - "postcss-value-parser": "^4.1.0", - "schema-utils": "^2.7.0", - "semver": "^6.3.0" + "cacache": "^15.0.5", + "find-cache-dir": "^3.3.1", + "jest-worker": "^26.5.0", + "p-limit": "^3.0.2", + "schema-utils": "^3.0.0", + "serialize-javascript": "^5.0.1", + "source-map": "^0.6.1", + "terser": "^5.3.4", + "webpack-sources": "^1.4.3" }, "engines": { - "node": ">= 8.9.0" + "node": ">= 10.13.0" }, "funding": { "type": "opencollective", @@ -13065,43 +13094,32 @@ "webpack": "^4.0.0 || ^5.0.0" } }, - "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/css-loader/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==", + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/@storybook/core-server/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==", "dev": true, "dependencies": { - "@types/json-schema": "^7.0.5", - "ajv": "^6.12.4", + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", "ajv-keywords": "^3.5.2" }, "engines": { - "node": ">= 8.9.0" + "node": ">= 10.13.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" } }, - "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/dotenv-webpack": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/dotenv-webpack/-/dotenv-webpack-1.8.0.tgz", - "integrity": "sha512-o8pq6NLBehtrqA8Jv8jFQNtG9nhRtVqmoD4yWbgUyoU3+9WBlPe+c2EAiaJok9RB28QvrWvdWLZGeTT5aATDMg==", - "dev": true, - "dependencies": { - "dotenv-defaults": "^1.0.2" - }, - "peerDependencies": { - "webpack": "^1 || ^2 || ^3 || ^4" - } - }, - "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/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==", + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/@storybook/core-server/node_modules/url-loader": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-4.1.1.tgz", + "integrity": "sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==", "dev": true, "dependencies": { "loader-utils": "^2.0.0", + "mime-types": "^2.1.27", "schema-utils": "^3.0.0" }, "engines": { @@ -13112,24 +13130,16 @@ "url": "https://opencollective.com/webpack" }, "peerDependencies": { + "file-loader": "*", "webpack": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/file-loader/node_modules/loader-utils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", - "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", - "dev": true, - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" }, - "engines": { - "node": ">=8.9.0" + "peerDependenciesMeta": { + "file-loader": { + "optional": true + } } }, - "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/file-loader/node_modules/schema-utils": { + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/@storybook/core-server/node_modules/url-loader/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==", @@ -13147,68 +13157,142 @@ "url": "https://opencollective.com/webpack" } }, - "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/find-cache-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", - "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/@storybook/core-server/node_modules/webpack": { + "version": "4.46.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.46.0.tgz", + "integrity": "sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q==", "dev": true, "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/wasm-edit": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "acorn": "^6.4.1", + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^4.5.0", + "eslint-scope": "^4.0.3", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.4.0", + "loader-utils": "^1.2.3", + "memory-fs": "^0.4.1", + "micromatch": "^3.1.10", + "mkdirp": "^0.5.3", + "neo-async": "^2.6.1", + "node-libs-browser": "^2.2.1", + "schema-utils": "^1.0.0", + "tapable": "^1.1.3", + "terser-webpack-plugin": "^1.4.3", + "watchpack": "^1.7.4", + "webpack-sources": "^1.4.1" + }, + "bin": { + "webpack": "bin/webpack.js" }, "engines": { - "node": ">=6" + "node": ">=6.11.5" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + }, + "webpack-command": { + "optional": true + } } }, - "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/find-cache-dir/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/@storybook/core-server/node_modules/webpack-dev-middleware": { + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz", + "integrity": "sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ==", "dev": true, "dependencies": { - "locate-path": "^3.0.0" + "memory-fs": "^0.4.1", + "mime": "^2.4.4", + "mkdirp": "^0.5.1", + "range-parser": "^1.2.1", + "webpack-log": "^2.0.0" }, "engines": { - "node": ">=6" + "node": ">= 6" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" } }, - "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/find-cache-dir/node_modules/pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/@storybook/core-server/node_modules/webpack/node_modules/cacache": { + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", "dev": true, "dependencies": { - "find-up": "^3.0.0" + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + } + }, + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/@storybook/core-server/node_modules/webpack/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==", + "dev": true + }, + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/@storybook/core-server/node_modules/webpack/node_modules/find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "dev": true, + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" }, "engines": { "node": ">=6" } }, - "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/html-webpack-plugin": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-4.5.2.tgz", - "integrity": "sha512-q5oYdzjKUIPQVjOosjgvCHQOv9Ett9CYYHlgvJeXG0qQvdSojnBq4vAdQBwn1+yGveAwHCoe/rMR86ozX3+c2A==", + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/@storybook/core-server/node_modules/webpack/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "dev": true, "dependencies": { - "@types/html-minifier-terser": "^5.0.0", - "@types/tapable": "^1.0.5", - "@types/webpack": "^4.41.8", - "html-minifier-terser": "^5.0.1", - "loader-utils": "^1.2.3", - "lodash": "^4.17.20", - "pretty-error": "^2.1.1", - "tapable": "^1.1.3", - "util.promisify": "1.0.0" + "locate-path": "^3.0.0" }, "engines": { - "node": ">=6.9" + "node": ">=6" + } + }, + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/@storybook/core-server/node_modules/webpack/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" + "bin": { + "json5": "lib/cli.js" } }, - "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/loader-utils": { + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/@storybook/core-server/node_modules/webpack/node_modules/loader-utils": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", @@ -13222,16 +13306,134 @@ "node": ">=4.0.0" } }, - "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/loader-utils/node_modules/json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/@storybook/core-server/node_modules/webpack/node_modules/pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", "dev": true, "dependencies": { - "minimist": "^1.2.0" + "find-up": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/@storybook/core-server/node_modules/webpack/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/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/@storybook/core-server/node_modules/webpack/node_modules/terser": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", + "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", + "dev": true, + "dependencies": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" }, "bin": { - "json5": "lib/cli.js" + "terser": "bin/terser" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/@storybook/core-server/node_modules/webpack/node_modules/terser-webpack-plugin": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz", + "integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==", + "dev": true, + "dependencies": { + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", + "is-wsl": "^1.1.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^4.0.0", + "source-map": "^0.6.1", + "terser": "^4.1.2", + "webpack-sources": "^1.4.0", + "worker-farm": "^1.7.0" + }, + "engines": { + "node": ">= 6.9.0" + }, + "peerDependencies": { + "webpack": "^4.0.0" + } + }, + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/@storybook/core-server/node_modules/webpack/node_modules/watchpack": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz", + "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0" + }, + "optionalDependencies": { + "chokidar": "^3.4.1", + "watchpack-chokidar2": "^2.0.1" + } + }, + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/acorn": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/babel-plugin-macros": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", + "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.12.5", + "cosmiconfig": "^7.0.0", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">=10", + "npm": ">=6" + } + }, + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/commander": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" } }, "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/lru-cache": { @@ -13243,16 +13445,38 @@ "yallist": "^3.0.2" } }, + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/make-dir/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/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/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==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", "dev": true, "dependencies": { - "p-limit": "^2.2.0" + "p-limit": "^2.0.0" }, "engines": { - "node": ">=8" + "node": ">=6" } }, "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/p-locate/node_modules/p-limit": { @@ -13271,26 +13495,24 @@ } }, "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/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==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", "dev": true, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/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": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" + "glob": "^7.1.3" }, - "engines": { - "node": ">= 4" + "bin": { + "rimraf": "bin.js" } }, "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/semver": { @@ -13302,197 +13524,428 @@ "semver": "bin/semver.js" } }, - "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/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==", + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/ssri": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", + "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", "dev": true, "dependencies": { - "randombytes": "^2.1.0" + "figgy-pudding": "^3.5.1" } }, - "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/style-loader": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-1.3.0.tgz", - "integrity": "sha512-V7TCORko8rs9rIqkSrlMfkqA63DfoGBBJmK1kKGCcSi+BWb4cqz0SRsnp4l6rU5iwOEd0/2ePv68SV22VXon4Q==", + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/watchpack": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz", + "integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==", "dev": true, "dependencies": { - "loader-utils": "^2.0.0", - "schema-utils": "^2.7.0" + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" }, "engines": { - "node": ">= 8.9.0" + "node": ">=10.13.0" + } + }, + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/preview-web": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/preview-web/-/preview-web-6.4.19.tgz", + "integrity": "sha512-jqltoBv5j7lvnxEfV9w8dLX9ASWGuvgz97yg8Yo5FqkftEwrHJenyvMGcTgDJKJPorF+wiz/9aIqnmd3LCAcZQ==", + "dev": true, + "dependencies": { + "@storybook/addons": "6.4.19", + "@storybook/channel-postmessage": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/store": "6.4.19", + "ansi-to-html": "^0.6.11", + "core-js": "^3.8.2", + "global": "^4.4.0", + "lodash": "^4.17.21", + "qs": "^6.10.0", + "regenerator-runtime": "^0.13.7", + "synchronous-promise": "^2.0.15", + "ts-dedent": "^2.0.0", + "unfetch": "^4.2.0", + "util-deprecate": "^1.0.2" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/webpack" + "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" + "react": "^16.8.0 || ^17.0.0", + "react-dom": "^16.8.0 || ^17.0.0" } }, - "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/style-loader/node_modules/loader-utils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", - "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/source-loader": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/source-loader/-/source-loader-6.4.19.tgz", + "integrity": "sha512-XqTsqddRglvfW7mhyjwoqd/B8L6samcBehhO0OEbsFp6FPWa9eXuObCxtRYIcjcSIe+ksbW3D/54ppEs1L/g1Q==", "dev": true, "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" + "@storybook/addons": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "core-js": "^3.8.2", + "estraverse": "^5.2.0", + "global": "^4.4.0", + "loader-utils": "^2.0.0", + "lodash": "^4.17.21", + "prettier": ">=2.2.1 <=2.3.0", + "regenerator-runtime": "^0.13.7" }, - "engines": { - "node": ">=8.9.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0", + "react-dom": "^16.8.0 || ^17.0.0" } }, - "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/style-loader/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==", + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/store": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/store/-/store-6.4.19.tgz", + "integrity": "sha512-N9/ZjemRHGfT3InPIbqQqc6snkcfnf3Qh9oOr0smbfaVGJol//KOX65kzzobtzFcid0WxtTDZ3HmgFVH+GvuhQ==", "dev": true, "dependencies": { - "@types/json-schema": "^7.0.5", - "ajv": "^6.12.4", - "ajv-keywords": "^3.5.2" + "@storybook/addons": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "core-js": "^3.8.2", + "fast-deep-equal": "^3.1.3", + "global": "^4.4.0", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "regenerator-runtime": "^0.13.7", + "slash": "^3.0.0", + "stable": "^0.1.8", + "synchronous-promise": "^2.0.15", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" }, - "engines": { - "node": ">= 8.9.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0", + "react-dom": "^16.8.0 || ^17.0.0" + } + }, + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/theming": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.4.19.tgz", + "integrity": "sha512-V4pWmTvAxmbHR6B3jA4hPkaxZPyExHvCToy7b76DpUTpuHihijNDMAn85KhOQYIeL9q14zP/aiz899tOHsOidg==", + "dev": true, + "dependencies": { + "@emotion/core": "^10.1.1", + "@emotion/is-prop-valid": "^0.8.6", + "@emotion/styled": "^10.0.27", + "@storybook/client-logger": "6.4.19", + "core-js": "^3.8.2", + "deep-object-diff": "^1.1.0", + "emotion-theming": "^10.0.27", + "global": "^4.4.0", + "memoizerific": "^1.11.3", + "polished": "^4.0.5", + "resolve-from": "^5.0.0", + "ts-dedent": "^2.0.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/webpack" + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0", + "react-dom": "^16.8.0 || ^17.0.0" } }, - "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/terser": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", - "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/theming/node_modules/@emotion/styled": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-10.3.0.tgz", + "integrity": "sha512-GgcUpXBBEU5ido+/p/mCT2/Xx+Oqmp9JzQRuC+a4lYM4i4LBBn/dWvc0rQ19N9ObA8/T4NWMrPNe79kMBDJqoQ==", "dev": true, "dependencies": { - "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" + "@emotion/styled-base": "^10.3.0", + "babel-plugin-emotion": "^10.0.27" }, + "peerDependencies": { + "@emotion/core": "^10.0.27", + "react": ">=16.3.0" + } + }, + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/theming/node_modules/@emotion/styled/node_modules/@emotion/styled-base": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@emotion/styled-base/-/styled-base-10.3.0.tgz", + "integrity": "sha512-PBRqsVKR7QRNkmfH78hTSSwHWcwDpecH9W6heujWAcyp2wdz/64PP73s7fWS1dIPm8/Exc8JAzYS8dEWXjv60w==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.5.5", + "@emotion/is-prop-valid": "0.8.8", + "@emotion/serialize": "^0.11.15", + "@emotion/utils": "0.11.3" + }, + "peerDependencies": { + "@emotion/core": "^10.0.28", + "react": ">=16.3.0" + } + }, + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/cacache": { + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", + "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", + "dev": true, + "dependencies": { + "@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" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/cacache/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": { - "terser": "bin/terser" + "mkdirp": "bin/cmd.js" }, "engines": { - "node": ">=6.0.0" + "node": ">=10" } }, - "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/terser-webpack-plugin": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz", - "integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==", + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/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, "dependencies": { - "cacache": "^12.0.2", - "find-cache-dir": "^2.1.0", - "is-wsl": "^1.1.0", - "schema-utils": "^1.0.0", - "serialize-javascript": "^4.0.0", - "source-map": "^0.6.1", - "terser": "^4.1.2", - "webpack-sources": "^1.4.0", - "worker-farm": "^1.7.0" + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" }, "engines": { - "node": ">= 6.9.0" + "node": ">=8" }, - "peerDependencies": { - "webpack": "^4.0.0" + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" } }, - "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/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==", - "dev": true + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/find-cache-dir/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, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } }, - "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/webpack": { - "version": "4.46.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.46.0.tgz", - "integrity": "sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q==", + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/find-cache-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, "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-module-context": "1.9.0", - "@webassemblyjs/wasm-edit": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0", - "acorn": "^6.4.1", - "ajv": "^6.10.2", - "ajv-keywords": "^3.4.1", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^4.5.0", - "eslint-scope": "^4.0.3", - "json-parse-better-errors": "^1.0.2", - "loader-runner": "^2.4.0", - "loader-utils": "^1.2.3", - "memory-fs": "^0.4.1", - "micromatch": "^3.1.10", - "mkdirp": "^0.5.3", - "neo-async": "^2.6.1", - "node-libs-browser": "^2.2.1", - "schema-utils": "^1.0.0", - "tapable": "^1.1.3", - "terser-webpack-plugin": "^1.4.3", - "watchpack": "^1.7.4", - "webpack-sources": "^1.4.1" + "find-up": "^4.0.0" }, - "bin": { - "webpack": "bin/webpack.js" + "engines": { + "node": ">=8" + } + }, + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/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, + "dependencies": { + "p-locate": "^4.1.0" }, "engines": { - "node": ">=6.11.5" + "node": ">=8" + } + }, + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/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/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/p-locate/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": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/react-element-to-jsx-string": { + "version": "14.3.4", + "resolved": "https://registry.npmjs.org/react-element-to-jsx-string/-/react-element-to-jsx-string-14.3.4.tgz", + "integrity": "sha512-t4ZwvV6vwNxzujDQ+37bspnLwA4JlgUPWhLjBJWsNIDceAf6ZKUTCjdm08cN6WeZ5pTMKiCJkmAYnpmR4Bm+dg==", + "dev": true, + "dependencies": { + "@base2/pretty-print-object": "1.0.1", + "is-plain-object": "5.0.0", + "react-is": "17.0.2" }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - }, - "webpack-command": { - "optional": true - } + "peerDependencies": { + "react": "^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1", + "react-dom": "^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1" } }, - "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/core/node_modules/webpack-dev-middleware": { - "version": "3.7.3", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz", - "integrity": "sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ==", + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/serialize-javascript": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", + "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", "dev": true, "dependencies": { - "memory-fs": "^0.4.1", - "mime": "^2.4.4", - "mkdirp": "^0.5.1", - "range-parser": "^1.2.1", - "webpack-log": "^2.0.0" + "randombytes": "^2.1.0" + } + }, + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/terser": { + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.12.1.tgz", + "integrity": "sha512-NXbs+7nisos5E+yXwAD+y7zrcTkMqb0dEJxIGtSKPdCBzopf7ni4odPul2aechpV7EXNvOudYOX2bb5tln1jbQ==", + "dev": true, + "dependencies": { + "acorn": "^8.5.0", + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" }, "engines": { - "node": ">= 6" + "node": ">=10" + } + }, + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/terser/node_modules/acorn": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", + "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/terser/node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-measure": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-6.4.19.tgz", + "integrity": "sha512-PXeU0AlpnGEvnzBQ6snkzmlIpwE0ci8LdFtL1Vz1V1Xk5fbuETWYuEkPuk1oZ7L9igB9cfT32SyJlE5MC1iaGg==", + "dev": true, + "dependencies": { + "@storybook/addons": "6.4.19", + "@storybook/api": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/components": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "core-js": "^3.8.2", + "global": "^4.4.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" + "react": "^16.8.0 || ^17.0.0", + "react-dom": "^16.8.0 || ^17.0.0" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } } }, - "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/source-loader": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/source-loader/-/source-loader-6.3.12.tgz", - "integrity": "sha512-Lfe0LOJGqAJYkZsCL8fhuQOeFSCgv8xwQCt4dkcBd0Rw5zT2xv0IXDOiIOXGaWBMDtrJUZt/qOXPEPlL81Oaqg==", + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-measure/node_modules/@storybook/components": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-6.4.19.tgz", + "integrity": "sha512-q/0V37YAJA7CNc+wSiiefeM9+3XVk8ixBNylY36QCGJgIeGQ5/79vPyUe6K4lLmsQwpmZsIq1s1Ad5+VbboeOA==", "dev": true, "dependencies": { - "@storybook/addons": "6.3.12", - "@storybook/client-logger": "6.3.12", - "@storybook/csf": "0.0.1", + "@popperjs/core": "^2.6.0", + "@storybook/client-logger": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/theming": "6.4.19", + "@types/color-convert": "^2.0.0", + "@types/overlayscrollbars": "^1.12.0", + "@types/react-syntax-highlighter": "11.0.5", + "color-convert": "^2.0.1", "core-js": "^3.8.2", - "estraverse": "^5.2.0", + "fast-deep-equal": "^3.1.3", "global": "^4.4.0", - "loader-utils": "^2.0.0", - "lodash": "^4.17.20", - "prettier": "~2.2.1", - "regenerator-runtime": "^0.13.7" + "lodash": "^4.17.21", + "markdown-to-jsx": "^7.1.3", + "memoizerific": "^1.11.3", + "overlayscrollbars": "^1.13.1", + "polished": "^4.0.5", + "prop-types": "^15.7.2", + "react-colorful": "^5.1.2", + "react-popper-tooltip": "^3.1.1", + "react-syntax-highlighter": "^13.5.3", + "react-textarea-autosize": "^8.3.0", + "regenerator-runtime": "^0.13.7", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" }, "funding": { "type": "opencollective", @@ -13503,16 +13956,16 @@ "react-dom": "^16.8.0 || ^17.0.0" } }, - "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/theming": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.3.12.tgz", - "integrity": "sha512-wOJdTEa/VFyFB2UyoqyYGaZdym6EN7RALuQOAMT6zHA282FBmKw8nL5DETHEbctpnHdcrMC/391teK4nNSrdOA==", + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-measure/node_modules/@storybook/components/node_modules/@storybook/theming": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.4.19.tgz", + "integrity": "sha512-V4pWmTvAxmbHR6B3jA4hPkaxZPyExHvCToy7b76DpUTpuHihijNDMAn85KhOQYIeL9q14zP/aiz899tOHsOidg==", "dev": true, "dependencies": { "@emotion/core": "^10.1.1", "@emotion/is-prop-valid": "^0.8.6", "@emotion/styled": "^10.0.27", - "@storybook/client-logger": "6.3.12", + "@storybook/client-logger": "6.4.19", "core-js": "^3.8.2", "deep-object-diff": "^1.1.0", "emotion-theming": "^10.0.27", @@ -13531,13 +13984,13 @@ "react-dom": "^16.8.0 || ^17.0.0" } }, - "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/@storybook/theming/node_modules/@emotion/styled": { - "version": "10.0.27", - "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-10.0.27.tgz", - "integrity": "sha512-iK/8Sh7+NLJzyp9a5+vIQIXTYxfT4yB/OJbjzQanB2RZpvmzBQOHZWhpAMZWYEKRNNbsD6WfBw5sVWkb6WzS/Q==", + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-measure/node_modules/@storybook/components/node_modules/@storybook/theming/node_modules/@emotion/styled": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-10.3.0.tgz", + "integrity": "sha512-GgcUpXBBEU5ido+/p/mCT2/Xx+Oqmp9JzQRuC+a4lYM4i4LBBn/dWvc0rQ19N9ObA8/T4NWMrPNe79kMBDJqoQ==", "dev": true, "dependencies": { - "@emotion/styled-base": "^10.0.27", + "@emotion/styled-base": "^10.3.0", "babel-plugin-emotion": "^10.0.27" }, "peerDependencies": { @@ -13545,121 +13998,196 @@ "react": ">=16.3.0" } }, - "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true - }, - "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/commander": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", - "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-measure/node_modules/@storybook/components/node_modules/@storybook/theming/node_modules/@emotion/styled/node_modules/@emotion/styled-base": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@emotion/styled-base/-/styled-base-10.3.0.tgz", + "integrity": "sha512-PBRqsVKR7QRNkmfH78hTSSwHWcwDpecH9W6heujWAcyp2wdz/64PP73s7fWS1dIPm8/Exc8JAzYS8dEWXjv60w==", "dev": true, - "engines": { - "node": ">= 6" + "dependencies": { + "@babel/runtime": "^7.5.5", + "@emotion/is-prop-valid": "0.8.8", + "@emotion/serialize": "^0.11.15", + "@emotion/utils": "0.11.3" + }, + "peerDependencies": { + "@emotion/core": "^10.0.28", + "react": ">=16.3.0" } }, - "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-measure/node_modules/@storybook/components/node_modules/react-syntax-highlighter": { + "version": "13.5.3", + "resolved": "https://registry.npmjs.org/react-syntax-highlighter/-/react-syntax-highlighter-13.5.3.tgz", + "integrity": "sha512-crPaF+QGPeHNIblxxCdf2Lg936NAHKhNhuMzRL3F9ct6aYXL3NcZtCL0Rms9+qVo6Y1EQLdXGypBNSbPL/r+qg==", "dev": true, "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "@babel/runtime": "^7.3.1", + "highlight.js": "^10.1.1", + "lowlight": "^1.14.0", + "prismjs": "^1.21.0", + "refractor": "^3.1.0" }, - "engines": { - "node": ">=6" + "peerDependencies": { + "react": ">= 0.14.0" } }, - "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-outline": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/addon-outline/-/addon-outline-6.4.19.tgz", + "integrity": "sha512-7ZDXo8qrms6dx0KRP9PInXIie82h5g9XCNrGOUdfZkQPvgofJVj0kNv6p+WOiGiaVfKPC5KMgIofqzBTFV+k6Q==", "dev": true, "dependencies": { - "pify": "^4.0.1", - "semver": "^5.6.0" + "@storybook/addons": "6.4.19", + "@storybook/api": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/components": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "core-js": "^3.8.2", + "global": "^4.4.0", + "regenerator-runtime": "^0.13.7", + "ts-dedent": "^2.0.0" }, - "engines": { - "node": ">=6" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0", + "react-dom": "^16.8.0 || ^17.0.0" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } } }, - "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-outline/node_modules/@storybook/components": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-6.4.19.tgz", + "integrity": "sha512-q/0V37YAJA7CNc+wSiiefeM9+3XVk8ixBNylY36QCGJgIeGQ5/79vPyUe6K4lLmsQwpmZsIq1s1Ad5+VbboeOA==", "dev": true, "dependencies": { - "p-limit": "^2.0.0" + "@popperjs/core": "^2.6.0", + "@storybook/client-logger": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/theming": "6.4.19", + "@types/color-convert": "^2.0.0", + "@types/overlayscrollbars": "^1.12.0", + "@types/react-syntax-highlighter": "11.0.5", + "color-convert": "^2.0.1", + "core-js": "^3.8.2", + "fast-deep-equal": "^3.1.3", + "global": "^4.4.0", + "lodash": "^4.17.21", + "markdown-to-jsx": "^7.1.3", + "memoizerific": "^1.11.3", + "overlayscrollbars": "^1.13.1", + "polished": "^4.0.5", + "prop-types": "^15.7.2", + "react-colorful": "^5.1.2", + "react-popper-tooltip": "^3.1.1", + "react-syntax-highlighter": "^13.5.3", + "react-textarea-autosize": "^8.3.0", + "regenerator-runtime": "^0.13.7", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" }, - "engines": { - "node": ">=6" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0", + "react-dom": "^16.8.0 || ^17.0.0" } }, - "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/p-locate/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==", + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-outline/node_modules/@storybook/components/node_modules/@storybook/theming": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.4.19.tgz", + "integrity": "sha512-V4pWmTvAxmbHR6B3jA4hPkaxZPyExHvCToy7b76DpUTpuHihijNDMAn85KhOQYIeL9q14zP/aiz899tOHsOidg==", "dev": true, "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" + "@emotion/core": "^10.1.1", + "@emotion/is-prop-valid": "^0.8.6", + "@emotion/styled": "^10.0.27", + "@storybook/client-logger": "6.4.19", + "core-js": "^3.8.2", + "deep-object-diff": "^1.1.0", + "emotion-theming": "^10.0.27", + "global": "^4.4.0", + "memoizerific": "^1.11.3", + "polished": "^4.0.5", + "resolve-from": "^5.0.0", + "ts-dedent": "^2.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0", + "react-dom": "^16.8.0 || ^17.0.0" } }, - "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-outline/node_modules/@storybook/components/node_modules/@storybook/theming/node_modules/@emotion/styled": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-10.3.0.tgz", + "integrity": "sha512-GgcUpXBBEU5ido+/p/mCT2/Xx+Oqmp9JzQRuC+a4lYM4i4LBBn/dWvc0rQ19N9ObA8/T4NWMrPNe79kMBDJqoQ==", "dev": true, - "engines": { - "node": ">=4" + "dependencies": { + "@emotion/styled-base": "^10.3.0", + "babel-plugin-emotion": "^10.0.27" + }, + "peerDependencies": { + "@emotion/core": "^10.0.27", + "react": ">=16.3.0" } }, - "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-outline/node_modules/@storybook/components/node_modules/@storybook/theming/node_modules/@emotion/styled/node_modules/@emotion/styled-base": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@emotion/styled-base/-/styled-base-10.3.0.tgz", + "integrity": "sha512-PBRqsVKR7QRNkmfH78hTSSwHWcwDpecH9W6heujWAcyp2wdz/64PP73s7fWS1dIPm8/Exc8JAzYS8dEWXjv60w==", "dev": true, "dependencies": { - "glob": "^7.1.3" + "@babel/runtime": "^7.5.5", + "@emotion/is-prop-valid": "0.8.8", + "@emotion/serialize": "^0.11.15", + "@emotion/utils": "0.11.3" }, - "bin": { - "rimraf": "bin.js" + "peerDependencies": { + "@emotion/core": "^10.0.28", + "react": ">=16.3.0" } }, - "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/ssri": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", - "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-outline/node_modules/@storybook/components/node_modules/react-syntax-highlighter": { + "version": "13.5.3", + "resolved": "https://registry.npmjs.org/react-syntax-highlighter/-/react-syntax-highlighter-13.5.3.tgz", + "integrity": "sha512-crPaF+QGPeHNIblxxCdf2Lg936NAHKhNhuMzRL3F9ct6aYXL3NcZtCL0Rms9+qVo6Y1EQLdXGypBNSbPL/r+qg==", "dev": true, "dependencies": { - "figgy-pudding": "^3.5.1" + "@babel/runtime": "^7.3.1", + "highlight.js": "^10.1.1", + "lowlight": "^1.14.0", + "prismjs": "^1.21.0", + "refractor": "^3.1.0" + }, + "peerDependencies": { + "react": ">= 0.14.0" } }, - "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-docs/node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - }, "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-toolbars": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-6.3.12.tgz", - "integrity": "sha512-8GvP6zmAfLPRnYRARSaIwLkQClLIRbflRh4HZoFk6IMjQLXZb4NL3JS5OLFKG+HRMMU2UQzfoSDqjI7k7ptyRw==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-6.4.19.tgz", + "integrity": "sha512-2UtuX9yB1rD/CAZv1etnOnunfPTvsEKEg/J2HYMKE1lhenWC5muIUXvDXCXvwDC65WviPJ56nFNKaKK1Zz7JDg==", "dev": true, "dependencies": { - "@storybook/addons": "6.3.12", - "@storybook/api": "6.3.12", - "@storybook/client-api": "6.3.12", - "@storybook/components": "6.3.12", - "@storybook/theming": "6.3.12", + "@storybook/addons": "6.4.19", + "@storybook/api": "6.4.19", + "@storybook/components": "6.4.19", + "@storybook/theming": "6.4.19", "core-js": "^3.8.2", "regenerator-runtime": "^0.13.7" }, @@ -13681,15 +14209,15 @@ } }, "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-toolbars/node_modules/@storybook/components": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/components/-/components-6.3.12.tgz", - "integrity": "sha512-kdQt8toUjynYAxDLrJzuG7YSNL6as1wJoyzNUaCfG06YPhvIAlKo7le9tS2mThVFN5e9nbKrW3N1V1sp6ypZXQ==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-6.4.19.tgz", + "integrity": "sha512-q/0V37YAJA7CNc+wSiiefeM9+3XVk8ixBNylY36QCGJgIeGQ5/79vPyUe6K4lLmsQwpmZsIq1s1Ad5+VbboeOA==", "dev": true, "dependencies": { "@popperjs/core": "^2.6.0", - "@storybook/client-logger": "6.3.12", - "@storybook/csf": "0.0.1", - "@storybook/theming": "6.3.12", + "@storybook/client-logger": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/theming": "6.4.19", "@types/color-convert": "^2.0.0", "@types/overlayscrollbars": "^1.12.0", "@types/react-syntax-highlighter": "11.0.5", @@ -13697,7 +14225,7 @@ "core-js": "^3.8.2", "fast-deep-equal": "^3.1.3", "global": "^4.4.0", - "lodash": "^4.17.20", + "lodash": "^4.17.21", "markdown-to-jsx": "^7.1.3", "memoizerific": "^1.11.3", "overlayscrollbars": "^1.13.1", @@ -13737,15 +14265,15 @@ } }, "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-toolbars/node_modules/@storybook/theming": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.3.12.tgz", - "integrity": "sha512-wOJdTEa/VFyFB2UyoqyYGaZdym6EN7RALuQOAMT6zHA282FBmKw8nL5DETHEbctpnHdcrMC/391teK4nNSrdOA==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.4.19.tgz", + "integrity": "sha512-V4pWmTvAxmbHR6B3jA4hPkaxZPyExHvCToy7b76DpUTpuHihijNDMAn85KhOQYIeL9q14zP/aiz899tOHsOidg==", "dev": true, "dependencies": { "@emotion/core": "^10.1.1", "@emotion/is-prop-valid": "^0.8.6", "@emotion/styled": "^10.0.27", - "@storybook/client-logger": "6.3.12", + "@storybook/client-logger": "6.4.19", "core-js": "^3.8.2", "deep-object-diff": "^1.1.0", "emotion-theming": "^10.0.27", @@ -13765,12 +14293,12 @@ } }, "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-toolbars/node_modules/@storybook/theming/node_modules/@emotion/styled": { - "version": "10.0.27", - "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-10.0.27.tgz", - "integrity": "sha512-iK/8Sh7+NLJzyp9a5+vIQIXTYxfT4yB/OJbjzQanB2RZpvmzBQOHZWhpAMZWYEKRNNbsD6WfBw5sVWkb6WzS/Q==", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-10.3.0.tgz", + "integrity": "sha512-GgcUpXBBEU5ido+/p/mCT2/Xx+Oqmp9JzQRuC+a4lYM4i4LBBn/dWvc0rQ19N9ObA8/T4NWMrPNe79kMBDJqoQ==", "dev": true, "dependencies": { - "@emotion/styled-base": "^10.0.27", + "@emotion/styled-base": "^10.3.0", "babel-plugin-emotion": "^10.0.27" }, "peerDependencies": { @@ -13778,18 +14306,34 @@ "react": ">=16.3.0" } }, + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-toolbars/node_modules/@storybook/theming/node_modules/@emotion/styled/node_modules/@emotion/styled-base": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@emotion/styled-base/-/styled-base-10.3.0.tgz", + "integrity": "sha512-PBRqsVKR7QRNkmfH78hTSSwHWcwDpecH9W6heujWAcyp2wdz/64PP73s7fWS1dIPm8/Exc8JAzYS8dEWXjv60w==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.5.5", + "@emotion/is-prop-valid": "0.8.8", + "@emotion/serialize": "^0.11.15", + "@emotion/utils": "0.11.3" + }, + "peerDependencies": { + "@emotion/core": "^10.0.28", + "react": ">=16.3.0" + } + }, "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-viewport": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-6.3.12.tgz", - "integrity": "sha512-TRjyfm85xouOPmXxeLdEIzXLfJZZ1ePQ7p/5yphDGBHdxMU4m4qiZr8wYpUaxHsRu/UB3dKfaOyGT+ivogbnbw==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-6.4.19.tgz", + "integrity": "sha512-T1hdImxbLj8suQSTbp6HSA1LLHOlqaNK5jjnqzEOoAxY0O8LNPXMJ2jKIeT2fPQ0v+tWGU3tbwf+3xFq0parVQ==", "dev": true, "dependencies": { - "@storybook/addons": "6.3.12", - "@storybook/api": "6.3.12", - "@storybook/client-logger": "6.3.12", - "@storybook/components": "6.3.12", - "@storybook/core-events": "6.3.12", - "@storybook/theming": "6.3.12", + "@storybook/addons": "6.4.19", + "@storybook/api": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/components": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/theming": "6.4.19", "core-js": "^3.8.2", "global": "^4.4.0", "memoizerific": "^1.11.3", @@ -13814,15 +14358,15 @@ } }, "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-viewport/node_modules/@storybook/components": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/components/-/components-6.3.12.tgz", - "integrity": "sha512-kdQt8toUjynYAxDLrJzuG7YSNL6as1wJoyzNUaCfG06YPhvIAlKo7le9tS2mThVFN5e9nbKrW3N1V1sp6ypZXQ==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-6.4.19.tgz", + "integrity": "sha512-q/0V37YAJA7CNc+wSiiefeM9+3XVk8ixBNylY36QCGJgIeGQ5/79vPyUe6K4lLmsQwpmZsIq1s1Ad5+VbboeOA==", "dev": true, "dependencies": { "@popperjs/core": "^2.6.0", - "@storybook/client-logger": "6.3.12", - "@storybook/csf": "0.0.1", - "@storybook/theming": "6.3.12", + "@storybook/client-logger": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/theming": "6.4.19", "@types/color-convert": "^2.0.0", "@types/overlayscrollbars": "^1.12.0", "@types/react-syntax-highlighter": "11.0.5", @@ -13830,7 +14374,7 @@ "core-js": "^3.8.2", "fast-deep-equal": "^3.1.3", "global": "^4.4.0", - "lodash": "^4.17.20", + "lodash": "^4.17.21", "markdown-to-jsx": "^7.1.3", "memoizerific": "^1.11.3", "overlayscrollbars": "^1.13.1", @@ -13870,15 +14414,15 @@ } }, "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-viewport/node_modules/@storybook/theming": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.3.12.tgz", - "integrity": "sha512-wOJdTEa/VFyFB2UyoqyYGaZdym6EN7RALuQOAMT6zHA282FBmKw8nL5DETHEbctpnHdcrMC/391teK4nNSrdOA==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.4.19.tgz", + "integrity": "sha512-V4pWmTvAxmbHR6B3jA4hPkaxZPyExHvCToy7b76DpUTpuHihijNDMAn85KhOQYIeL9q14zP/aiz899tOHsOidg==", "dev": true, "dependencies": { "@emotion/core": "^10.1.1", "@emotion/is-prop-valid": "^0.8.6", "@emotion/styled": "^10.0.27", - "@storybook/client-logger": "6.3.12", + "@storybook/client-logger": "6.4.19", "core-js": "^3.8.2", "deep-object-diff": "^1.1.0", "emotion-theming": "^10.0.27", @@ -13898,12 +14442,12 @@ } }, "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-viewport/node_modules/@storybook/theming/node_modules/@emotion/styled": { - "version": "10.0.27", - "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-10.0.27.tgz", - "integrity": "sha512-iK/8Sh7+NLJzyp9a5+vIQIXTYxfT4yB/OJbjzQanB2RZpvmzBQOHZWhpAMZWYEKRNNbsD6WfBw5sVWkb6WzS/Q==", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-10.3.0.tgz", + "integrity": "sha512-GgcUpXBBEU5ido+/p/mCT2/Xx+Oqmp9JzQRuC+a4lYM4i4LBBn/dWvc0rQ19N9ObA8/T4NWMrPNe79kMBDJqoQ==", "dev": true, "dependencies": { - "@emotion/styled-base": "^10.0.27", + "@emotion/styled-base": "^10.3.0", "babel-plugin-emotion": "^10.0.27" }, "peerDependencies": { @@ -13911,27 +14455,40 @@ "react": ">=16.3.0" } }, + "node_modules/@storybook/addon-essentials/node_modules/@storybook/addon-viewport/node_modules/@storybook/theming/node_modules/@emotion/styled/node_modules/@emotion/styled-base": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@emotion/styled-base/-/styled-base-10.3.0.tgz", + "integrity": "sha512-PBRqsVKR7QRNkmfH78hTSSwHWcwDpecH9W6heujWAcyp2wdz/64PP73s7fWS1dIPm8/Exc8JAzYS8dEWXjv60w==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.5.5", + "@emotion/is-prop-valid": "0.8.8", + "@emotion/serialize": "^0.11.15", + "@emotion/utils": "0.11.3" + }, + "peerDependencies": { + "@emotion/core": "^10.0.28", + "react": ">=16.3.0" + } + }, "node_modules/@storybook/addon-essentials/node_modules/@storybook/api": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.3.12.tgz", - "integrity": "sha512-LScRXUeCWEW/OP+jiooNMQICVdusv7azTmULxtm72fhkXFRiQs2CdRNTiqNg46JLLC9z95f1W+pGK66X6HiiQA==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.4.19.tgz", + "integrity": "sha512-aDvea+NpQCBjpNp9YidO1Pr7fzzCp15FSdkG+2ihGQfv5raxrN+IIJnGUXecpe71nvlYiB+29UXBVK7AL0j51Q==", "dev": true, "dependencies": { - "@reach/router": "^1.3.4", - "@storybook/channels": "6.3.12", - "@storybook/client-logger": "6.3.12", - "@storybook/core-events": "6.3.12", - "@storybook/csf": "0.0.1", - "@storybook/router": "6.3.12", + "@storybook/channels": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/router": "6.4.19", "@storybook/semver": "^7.3.2", - "@storybook/theming": "6.3.12", - "@types/reach__router": "^1.3.7", + "@storybook/theming": "6.4.19", "core-js": "^3.8.2", "fast-deep-equal": "^3.1.3", "global": "^4.4.0", - "lodash": "^4.17.20", + "lodash": "^4.17.21", "memoizerific": "^1.11.3", - "qs": "^6.10.0", "regenerator-runtime": "^0.13.7", "store2": "^2.12.0", "telejson": "^5.3.2", @@ -13948,20 +14505,21 @@ } }, "node_modules/@storybook/addon-essentials/node_modules/@storybook/api/node_modules/@storybook/router": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.3.12.tgz", - "integrity": "sha512-G/pNGCnrJRetCwyEZulHPT+YOcqEj/vkPVDTUfii2qgqukup6K0cjwgd7IukAURnAnnzTi1gmgFuEKUi8GE/KA==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.4.19.tgz", + "integrity": "sha512-KWWwIzuyeEIWVezkCihwY2A76Il9tUNg0I410g9qT7NrEsKyqXGRYOijWub7c1GGyNjLqz0jtrrehtixMcJkuA==", "dev": true, "dependencies": { - "@reach/router": "^1.3.4", - "@storybook/client-logger": "6.3.12", - "@types/reach__router": "^1.3.7", + "@storybook/client-logger": "6.4.19", "core-js": "^3.8.2", "fast-deep-equal": "^3.1.3", "global": "^4.4.0", - "lodash": "^4.17.20", + "history": "5.0.0", + "lodash": "^4.17.21", "memoizerific": "^1.11.3", "qs": "^6.10.0", + "react-router": "^6.0.0", + "react-router-dom": "^6.0.0", "ts-dedent": "^2.0.0" }, "funding": { @@ -13973,16 +14531,60 @@ "react-dom": "^16.8.0 || ^17.0.0" } }, + "node_modules/@storybook/addon-essentials/node_modules/@storybook/api/node_modules/@storybook/router/node_modules/react-router": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.2.2.tgz", + "integrity": "sha512-/MbxyLzd7Q7amp4gDOGaYvXwhEojkJD5BtExkuKmj39VEE0m3l/zipf6h2WIB2jyAO0lI6NGETh4RDcktRm4AQ==", + "dev": true, + "dependencies": { + "history": "^5.2.0" + }, + "peerDependencies": { + "react": ">=16.8" + } + }, + "node_modules/@storybook/addon-essentials/node_modules/@storybook/api/node_modules/@storybook/router/node_modules/react-router-dom": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.2.2.tgz", + "integrity": "sha512-AtYEsAST7bDD4dLSQHDnk/qxWLJdad5t1HFa1qJyUrCeGgEuCSw0VB/27ARbF9Fi/W5598ujvJOm3ujUCVzuYQ==", + "dev": true, + "dependencies": { + "history": "^5.2.0", + "react-router": "6.2.2" + }, + "peerDependencies": { + "react": ">=16.8", + "react-dom": ">=16.8" + } + }, + "node_modules/@storybook/addon-essentials/node_modules/@storybook/api/node_modules/@storybook/router/node_modules/react-router-dom/node_modules/history": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/history/-/history-5.3.0.tgz", + "integrity": "sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.7.6" + } + }, + "node_modules/@storybook/addon-essentials/node_modules/@storybook/api/node_modules/@storybook/router/node_modules/react-router/node_modules/history": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/history/-/history-5.3.0.tgz", + "integrity": "sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.7.6" + } + }, "node_modules/@storybook/addon-essentials/node_modules/@storybook/api/node_modules/@storybook/theming": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.3.12.tgz", - "integrity": "sha512-wOJdTEa/VFyFB2UyoqyYGaZdym6EN7RALuQOAMT6zHA282FBmKw8nL5DETHEbctpnHdcrMC/391teK4nNSrdOA==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.4.19.tgz", + "integrity": "sha512-V4pWmTvAxmbHR6B3jA4hPkaxZPyExHvCToy7b76DpUTpuHihijNDMAn85KhOQYIeL9q14zP/aiz899tOHsOidg==", "dev": true, "dependencies": { "@emotion/core": "^10.1.1", "@emotion/is-prop-valid": "^0.8.6", "@emotion/styled": "^10.0.27", - "@storybook/client-logger": "6.3.12", + "@storybook/client-logger": "6.4.19", "core-js": "^3.8.2", "deep-object-diff": "^1.1.0", "emotion-theming": "^10.0.27", @@ -14002,12 +14604,12 @@ } }, "node_modules/@storybook/addon-essentials/node_modules/@storybook/api/node_modules/@storybook/theming/node_modules/@emotion/styled": { - "version": "10.0.27", - "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-10.0.27.tgz", - "integrity": "sha512-iK/8Sh7+NLJzyp9a5+vIQIXTYxfT4yB/OJbjzQanB2RZpvmzBQOHZWhpAMZWYEKRNNbsD6WfBw5sVWkb6WzS/Q==", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-10.3.0.tgz", + "integrity": "sha512-GgcUpXBBEU5ido+/p/mCT2/Xx+Oqmp9JzQRuC+a4lYM4i4LBBn/dWvc0rQ19N9ObA8/T4NWMrPNe79kMBDJqoQ==", "dev": true, "dependencies": { - "@emotion/styled-base": "^10.0.27", + "@emotion/styled-base": "^10.3.0", "babel-plugin-emotion": "^10.0.27" }, "peerDependencies": { @@ -14015,10 +14617,26 @@ "react": ">=16.3.0" } }, + "node_modules/@storybook/addon-essentials/node_modules/@storybook/api/node_modules/@storybook/theming/node_modules/@emotion/styled/node_modules/@emotion/styled-base": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@emotion/styled-base/-/styled-base-10.3.0.tgz", + "integrity": "sha512-PBRqsVKR7QRNkmfH78hTSSwHWcwDpecH9W6heujWAcyp2wdz/64PP73s7fWS1dIPm8/Exc8JAzYS8dEWXjv60w==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.5.5", + "@emotion/is-prop-valid": "0.8.8", + "@emotion/serialize": "^0.11.15", + "@emotion/utils": "0.11.3" + }, + "peerDependencies": { + "@emotion/core": "^10.0.28", + "react": ">=16.3.0" + } + }, "node_modules/@storybook/addon-essentials/node_modules/@storybook/channels": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.3.12.tgz", - "integrity": "sha512-l4sA+g1PdUV8YCbgs47fIKREdEQAKNdQIZw0b7BfTvY9t0x5yfBywgQhYON/lIeiNGz2OlIuD+VUtqYfCtNSyw==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.4.19.tgz", + "integrity": "sha512-EwyoncFvTfmIlfsy8jTfayCxo2XchPkZk/9txipugWSmc057HdklMKPLOHWP0z5hLH0IbVIKXzdNISABm36jwQ==", "dev": true, "dependencies": { "core-js": "^3.8.2", @@ -14031,9 +14649,9 @@ } }, "node_modules/@storybook/addon-essentials/node_modules/@storybook/client-logger": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.3.12.tgz", - "integrity": "sha512-zNDsamZvHnuqLznDdP9dUeGgQ9TyFh4ray3t1VGO7ZqWVZ2xtVCCXjDvMnOXI2ifMpX5UsrOvshIPeE9fMBmiQ==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.4.19.tgz", + "integrity": "sha512-zmg/2wyc9W3uZrvxaW4BfHcr40J0v7AGslqYXk9H+ERLVwIvrR4NhxQFaS6uITjBENyRDxwzfU3Va634WcmdDQ==", "dev": true, "dependencies": { "core-js": "^3.8.2", @@ -14045,9 +14663,9 @@ } }, "node_modules/@storybook/addon-essentials/node_modules/@storybook/core-events": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.3.12.tgz", - "integrity": "sha512-SXfD7xUUMazaeFkB92qOTUV8Y/RghE4SkEYe5slAdjeocSaH7Nz2WV0rqNEgChg0AQc+JUI66no8L9g0+lw4Gw==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.4.19.tgz", + "integrity": "sha512-KICzUw6XVQUJzFSCXfvhfHAuyhn4Q5J4IZEfuZkcGJS4ODkrO6tmpdYE5Cfr+so95Nfp0ErWiLUuodBsW9/rtA==", "dev": true, "dependencies": { "core-js": "^3.8.2" @@ -14057,10 +14675,19 @@ "url": "https://opencollective.com/storybook" } }, + "node_modules/@storybook/addon-essentials/node_modules/@storybook/csf": { + "version": "0.0.2--canary.87bc651.0", + "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.0.2--canary.87bc651.0.tgz", + "integrity": "sha512-ajk1Uxa+rBpFQHKrCcTmJyQBXZ5slfwHVEaKlkuFaW77it8RgbPJp/ccna3sgoi8oZ7FkkOyvv1Ve4SmwFqRqw==", + "dev": true, + "dependencies": { + "lodash": "^4.17.15" + } + }, "node_modules/@storybook/addon-essentials/node_modules/@types/node": { - "version": "14.17.33", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.33.tgz", - "integrity": "sha512-noEeJ06zbn3lOh4gqe2v7NMGS33jrulfNqYFDjjEbhpDEHR5VTxgYNQSBqBlJIsBJW3uEYDgD6kvMnrrhGzq8g==", + "version": "14.18.12", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.12.tgz", + "integrity": "sha512-q4jlIR71hUpWTnGhXWcakgkZeHa3CCjcQcnuzU8M891BAWA2jHiziiWEPEkdS5pFsz7H9HJiy8BrK7tBRNrY7A==", "dev": true }, "node_modules/@storybook/addon-essentials/node_modules/acorn": { @@ -14102,59 +14729,6 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, - "node_modules/@storybook/addon-essentials/node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@storybook/addon-essentials/node_modules/cacache": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", - "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", - "dev": true, - "dependencies": { - "@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" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/@storybook/addon-essentials/node_modules/cacache/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": ">=10" - } - }, "node_modules/@storybook/addon-essentials/node_modules/chownr": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", @@ -14191,33 +14765,6 @@ "node": ">=0.10.0" } }, - "node_modules/@storybook/addon-essentials/node_modules/enhanced-resolve": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", - "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.5.0", - "tapable": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@storybook/addon-essentials/node_modules/enhanced-resolve/node_modules/memory-fs": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", - "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", - "dev": true, - "dependencies": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - }, - "engines": { - "node": ">=4.3.0 <5.0.0 || >=5.10" - } - }, "node_modules/@storybook/addon-essentials/node_modules/escodegen": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", @@ -14284,99 +14831,6 @@ "node": ">=4.0" } }, - "node_modules/@storybook/addon-essentials/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==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@storybook/addon-essentials/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, - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" - } - }, - "node_modules/@storybook/addon-essentials/node_modules/find-cache-dir/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, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@storybook/addon-essentials/node_modules/find-cache-dir/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, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@storybook/addon-essentials/node_modules/find-cache-dir/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/@storybook/addon-essentials/node_modules/find-cache-dir/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/@storybook/addon-essentials/node_modules/find-cache-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, - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@storybook/addon-essentials/node_modules/find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", @@ -14417,24 +14871,13 @@ "node": ">=6" } }, - "node_modules/@storybook/addon-essentials/node_modules/globby": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", - "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", + "node_modules/@storybook/addon-essentials/node_modules/history": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/history/-/history-5.0.0.tgz", + "integrity": "sha512-3NyRMKIiFSJmIPdq7FxkNMJkQ7ZEtVblOQ38VtKaA0zZMW1Eo6Q6W8oDKEflr1kNNTItSnk4JMCO1deeSgbLLg==", "dev": true, "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "@babel/runtime": "^7.7.6" } }, "node_modules/@storybook/addon-essentials/node_modules/icss-utils": { @@ -14449,22 +14892,13 @@ "node": ">= 6" } }, - "node_modules/@storybook/addon-essentials/node_modules/ignore": { - "version": "5.1.9", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.9.tgz", - "integrity": "sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/@storybook/addon-essentials/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==", + "node_modules/@storybook/addon-essentials/node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", "dev": true, "engines": { - "node": ">=0.12.0" + "node": ">=0.10.0" } }, "node_modules/@storybook/addon-essentials/node_modules/json5": { @@ -14556,16 +14990,6 @@ "semver": "bin/semver.js" } }, - "node_modules/@storybook/addon-essentials/node_modules/memory-fs": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", - "dev": true, - "dependencies": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - }, "node_modules/@storybook/addon-essentials/node_modules/mime": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", @@ -14578,6 +15002,18 @@ "node": ">=4.0.0" } }, + "node_modules/@storybook/addon-essentials/node_modules/nanoid": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz", + "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==", + "dev": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, "node_modules/@storybook/addon-essentials/node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -14684,12 +15120,12 @@ } }, "node_modules/@storybook/addon-essentials/node_modules/polished": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/polished/-/polished-4.1.3.tgz", - "integrity": "sha512-ocPAcVBUOryJEKe0z2KLd1l9EBa1r5mSwlKpExmrLzsnIzJo4axsoU9O2BjOTkDGDT4mZ0WFE5XKTlR3nLnZOA==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/polished/-/polished-4.1.4.tgz", + "integrity": "sha512-Nq5Mbza+Auo7N3sQb1QMFaQiDO+4UexWuSGR7Cjb4Sw11SZIJcrrFtiZ+L0jT9MBsUsxDboHVASbCLbE1rnECg==", "dev": true, "dependencies": { - "@babel/runtime": "^7.14.0" + "@babel/runtime": "^7.16.7" }, "engines": { "node": ">=10" @@ -14763,9 +15199,9 @@ } }, "node_modules/@storybook/addon-essentials/node_modules/prettier": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.2.1.tgz", - "integrity": "sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.3.0.tgz", + "integrity": "sha512-kXtO4s0Lz/DW/IJ9QdWhAf7/NmPWQXkFr/r/WkR3vyI+0v8amTDxiaQSLzs8NBlytfLWX/7uQUMIW677yLKl4w==", "dev": true, "bin": { "prettier": "bin-prettier.js" @@ -14785,9 +15221,9 @@ } }, "node_modules/@storybook/addon-essentials/node_modules/qs": { - "version": "6.10.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz", - "integrity": "sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg==", + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", "dev": true, "dependencies": { "side-channel": "^1.0.4" @@ -14814,13 +15250,18 @@ "node": ">=8" } }, - "node_modules/@storybook/addon-essentials/node_modules/serialize-javascript": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", - "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", + "node_modules/@storybook/addon-essentials/node_modules/schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", "dev": true, "dependencies": { - "randombytes": "^2.1.0" + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + }, + "engines": { + "node": ">= 4" } }, "node_modules/@storybook/addon-essentials/node_modules/slash": { @@ -14865,53 +15306,6 @@ "node": ">=4" } }, - "node_modules/@storybook/addon-essentials/node_modules/tapable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", - "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/@storybook/addon-essentials/node_modules/terser": { - "version": "5.9.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.9.0.tgz", - "integrity": "sha512-h5hxa23sCdpzcye/7b8YqbE5OwKca/ni0RQz1uRX3tGh8haaGHqcuSqbGRybuAKNdntZ0mDgFNXPJ48xQ2RXKQ==", - "dev": true, - "dependencies": { - "commander": "^2.20.0", - "source-map": "~0.7.2", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@storybook/addon-essentials/node_modules/terser/node_modules/source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@storybook/addon-essentials/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==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, "node_modules/@storybook/addon-essentials/node_modules/tslib": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", @@ -14928,6 +15322,27 @@ "source-map": "~0.6.1" } }, + "node_modules/@storybook/addon-essentials/node_modules/ws": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", + "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, "node_modules/@storybook/addon-essentials/node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", @@ -15054,15 +15469,15 @@ } }, "node_modules/@storybook/addon-links": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-6.3.12.tgz", - "integrity": "sha512-NfOGEm0+QxIrAXCa05LOXmxLtI+RlcDqHXZ1jNNj8mjeRoG1nX3qhkB8PWWIBbPuz+bktLV9ox8UZj0W6+ZPOQ==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-6.4.19.tgz", + "integrity": "sha512-ebFHYlGDQkHSmI5QEJb1NxGNToVOLgjKkxXUe+JXX7AfHvrWiXVrN/57aOtBPZzj4h2jRPRTZgwR5glhPIlfEQ==", "dependencies": { - "@storybook/addons": "6.3.12", - "@storybook/client-logger": "6.3.12", - "@storybook/core-events": "6.3.12", - "@storybook/csf": "0.0.1", - "@storybook/router": "6.3.12", + "@storybook/addons": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/router": "6.4.19", "@types/qs": "^6.9.5", "core-js": "^3.8.2", "global": "^4.4.0", @@ -15089,9 +15504,9 @@ } }, "node_modules/@storybook/addon-links/node_modules/@storybook/client-logger": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.3.12.tgz", - "integrity": "sha512-zNDsamZvHnuqLznDdP9dUeGgQ9TyFh4ray3t1VGO7ZqWVZ2xtVCCXjDvMnOXI2ifMpX5UsrOvshIPeE9fMBmiQ==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.4.19.tgz", + "integrity": "sha512-zmg/2wyc9W3uZrvxaW4BfHcr40J0v7AGslqYXk9H+ERLVwIvrR4NhxQFaS6uITjBENyRDxwzfU3Va634WcmdDQ==", "dependencies": { "core-js": "^3.8.2", "global": "^4.4.0" @@ -15102,9 +15517,9 @@ } }, "node_modules/@storybook/addon-links/node_modules/@storybook/core-events": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.3.12.tgz", - "integrity": "sha512-SXfD7xUUMazaeFkB92qOTUV8Y/RghE4SkEYe5slAdjeocSaH7Nz2WV0rqNEgChg0AQc+JUI66no8L9g0+lw4Gw==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.4.19.tgz", + "integrity": "sha512-KICzUw6XVQUJzFSCXfvhfHAuyhn4Q5J4IZEfuZkcGJS4ODkrO6tmpdYE5Cfr+so95Nfp0ErWiLUuodBsW9/rtA==", "dependencies": { "core-js": "^3.8.2" }, @@ -15113,20 +15528,29 @@ "url": "https://opencollective.com/storybook" } }, + "node_modules/@storybook/addon-links/node_modules/@storybook/csf": { + "version": "0.0.2--canary.87bc651.0", + "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.0.2--canary.87bc651.0.tgz", + "integrity": "sha512-ajk1Uxa+rBpFQHKrCcTmJyQBXZ5slfwHVEaKlkuFaW77it8RgbPJp/ccna3sgoi8oZ7FkkOyvv1Ve4SmwFqRqw==", + "dependencies": { + "lodash": "^4.17.15" + } + }, "node_modules/@storybook/addon-links/node_modules/@storybook/router": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.3.12.tgz", - "integrity": "sha512-G/pNGCnrJRetCwyEZulHPT+YOcqEj/vkPVDTUfii2qgqukup6K0cjwgd7IukAURnAnnzTi1gmgFuEKUi8GE/KA==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.4.19.tgz", + "integrity": "sha512-KWWwIzuyeEIWVezkCihwY2A76Il9tUNg0I410g9qT7NrEsKyqXGRYOijWub7c1GGyNjLqz0jtrrehtixMcJkuA==", "dependencies": { - "@reach/router": "^1.3.4", - "@storybook/client-logger": "6.3.12", - "@types/reach__router": "^1.3.7", + "@storybook/client-logger": "6.4.19", "core-js": "^3.8.2", "fast-deep-equal": "^3.1.3", "global": "^4.4.0", - "lodash": "^4.17.20", + "history": "5.0.0", + "lodash": "^4.17.21", "memoizerific": "^1.11.3", "qs": "^6.10.0", + "react-router": "^6.0.0", + "react-router-dom": "^6.0.0", "ts-dedent": "^2.0.0" }, "funding": { @@ -15138,10 +15562,58 @@ "react-dom": "^16.8.0 || ^17.0.0" } }, + "node_modules/@storybook/addon-links/node_modules/@storybook/router/node_modules/react-router": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.2.2.tgz", + "integrity": "sha512-/MbxyLzd7Q7amp4gDOGaYvXwhEojkJD5BtExkuKmj39VEE0m3l/zipf6h2WIB2jyAO0lI6NGETh4RDcktRm4AQ==", + "dependencies": { + "history": "^5.2.0" + }, + "peerDependencies": { + "react": ">=16.8" + } + }, + "node_modules/@storybook/addon-links/node_modules/@storybook/router/node_modules/react-router-dom": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.2.2.tgz", + "integrity": "sha512-AtYEsAST7bDD4dLSQHDnk/qxWLJdad5t1HFa1qJyUrCeGgEuCSw0VB/27ARbF9Fi/W5598ujvJOm3ujUCVzuYQ==", + "dependencies": { + "history": "^5.2.0", + "react-router": "6.2.2" + }, + "peerDependencies": { + "react": ">=16.8", + "react-dom": ">=16.8" + } + }, + "node_modules/@storybook/addon-links/node_modules/@storybook/router/node_modules/react-router-dom/node_modules/history": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/history/-/history-5.3.0.tgz", + "integrity": "sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==", + "dependencies": { + "@babel/runtime": "^7.7.6" + } + }, + "node_modules/@storybook/addon-links/node_modules/@storybook/router/node_modules/react-router/node_modules/history": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/history/-/history-5.3.0.tgz", + "integrity": "sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==", + "dependencies": { + "@babel/runtime": "^7.7.6" + } + }, + "node_modules/@storybook/addon-links/node_modules/history": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/history/-/history-5.0.0.tgz", + "integrity": "sha512-3NyRMKIiFSJmIPdq7FxkNMJkQ7ZEtVblOQ38VtKaA0zZMW1Eo6Q6W8oDKEflr1kNNTItSnk4JMCO1deeSgbLLg==", + "dependencies": { + "@babel/runtime": "^7.7.6" + } + }, "node_modules/@storybook/addon-links/node_modules/qs": { - "version": "6.10.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz", - "integrity": "sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg==", + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", "dependencies": { "side-channel": "^1.0.4" }, @@ -15152,40 +15624,19 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@storybook/addon-measure": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-2.0.0.tgz", - "integrity": "sha512-ZhdT++cX+L9LwjhGYggvYUUVQH/MGn2rwbrAwCMzA/f2QTFvkjxzX8nDgMxIhaLCDC+gHIxfJG2wrWN0jkBr3g==", - "dev": true, - "peerDependencies": { - "@storybook/addons": "^6.3.0", - "@storybook/api": "^6.3.0", - "@storybook/components": "^6.3.0", - "@storybook/core-events": "^6.3.0", - "@storybook/theming": "^6.3.0", - "react": "^16.8.0 || ^17.0.0", - "react-dom": "^16.8.0 || ^17.0.0" - }, - "peerDependenciesMeta": { - "react": { - "optional": true - }, - "react-dom": { - "optional": true - } - } - }, "node_modules/@storybook/addons": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-6.3.12.tgz", - "integrity": "sha512-UgoMyr7Qr0FS3ezt8u6hMEcHgyynQS9ucr5mAwZky3wpXRPFyUTmMto9r4BBUdqyUvTUj/LRKIcmLBfj+/l0Fg==", - "dependencies": { - "@storybook/api": "6.3.12", - "@storybook/channels": "6.3.12", - "@storybook/client-logger": "6.3.12", - "@storybook/core-events": "6.3.12", - "@storybook/router": "6.3.12", - "@storybook/theming": "6.3.12", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-6.4.19.tgz", + "integrity": "sha512-QNyRYhpqmHV8oJxxTBdkRlLSbDFhpBvfvMfIrIT1UXb/eemdBZTaCGVvXZ9UixoEEI7f8VwAQ44IvkU5B1509w==", + "dependencies": { + "@storybook/api": "6.4.19", + "@storybook/channels": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/router": "6.4.19", + "@storybook/theming": "6.4.19", + "@types/webpack-env": "^1.16.0", "core-js": "^3.8.2", "global": "^4.4.0", "regenerator-runtime": "^0.13.7" @@ -15200,25 +15651,22 @@ } }, "node_modules/@storybook/addons/node_modules/@storybook/api": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.3.12.tgz", - "integrity": "sha512-LScRXUeCWEW/OP+jiooNMQICVdusv7azTmULxtm72fhkXFRiQs2CdRNTiqNg46JLLC9z95f1W+pGK66X6HiiQA==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.4.19.tgz", + "integrity": "sha512-aDvea+NpQCBjpNp9YidO1Pr7fzzCp15FSdkG+2ihGQfv5raxrN+IIJnGUXecpe71nvlYiB+29UXBVK7AL0j51Q==", "dependencies": { - "@reach/router": "^1.3.4", - "@storybook/channels": "6.3.12", - "@storybook/client-logger": "6.3.12", - "@storybook/core-events": "6.3.12", - "@storybook/csf": "0.0.1", - "@storybook/router": "6.3.12", + "@storybook/channels": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/router": "6.4.19", "@storybook/semver": "^7.3.2", - "@storybook/theming": "6.3.12", - "@types/reach__router": "^1.3.7", + "@storybook/theming": "6.4.19", "core-js": "^3.8.2", "fast-deep-equal": "^3.1.3", "global": "^4.4.0", - "lodash": "^4.17.20", + "lodash": "^4.17.21", "memoizerific": "^1.11.3", - "qs": "^6.10.0", "regenerator-runtime": "^0.13.7", "store2": "^2.12.0", "telejson": "^5.3.2", @@ -15235,9 +15683,9 @@ } }, "node_modules/@storybook/addons/node_modules/@storybook/channels": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.3.12.tgz", - "integrity": "sha512-l4sA+g1PdUV8YCbgs47fIKREdEQAKNdQIZw0b7BfTvY9t0x5yfBywgQhYON/lIeiNGz2OlIuD+VUtqYfCtNSyw==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.4.19.tgz", + "integrity": "sha512-EwyoncFvTfmIlfsy8jTfayCxo2XchPkZk/9txipugWSmc057HdklMKPLOHWP0z5hLH0IbVIKXzdNISABm36jwQ==", "dependencies": { "core-js": "^3.8.2", "ts-dedent": "^2.0.0", @@ -15249,9 +15697,9 @@ } }, "node_modules/@storybook/addons/node_modules/@storybook/client-logger": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.3.12.tgz", - "integrity": "sha512-zNDsamZvHnuqLznDdP9dUeGgQ9TyFh4ray3t1VGO7ZqWVZ2xtVCCXjDvMnOXI2ifMpX5UsrOvshIPeE9fMBmiQ==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.4.19.tgz", + "integrity": "sha512-zmg/2wyc9W3uZrvxaW4BfHcr40J0v7AGslqYXk9H+ERLVwIvrR4NhxQFaS6uITjBENyRDxwzfU3Va634WcmdDQ==", "dependencies": { "core-js": "^3.8.2", "global": "^4.4.0" @@ -15262,9 +15710,9 @@ } }, "node_modules/@storybook/addons/node_modules/@storybook/core-events": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.3.12.tgz", - "integrity": "sha512-SXfD7xUUMazaeFkB92qOTUV8Y/RghE4SkEYe5slAdjeocSaH7Nz2WV0rqNEgChg0AQc+JUI66no8L9g0+lw4Gw==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.4.19.tgz", + "integrity": "sha512-KICzUw6XVQUJzFSCXfvhfHAuyhn4Q5J4IZEfuZkcGJS4ODkrO6tmpdYE5Cfr+so95Nfp0ErWiLUuodBsW9/rtA==", "dependencies": { "core-js": "^3.8.2" }, @@ -15273,20 +15721,29 @@ "url": "https://opencollective.com/storybook" } }, + "node_modules/@storybook/addons/node_modules/@storybook/csf": { + "version": "0.0.2--canary.87bc651.0", + "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.0.2--canary.87bc651.0.tgz", + "integrity": "sha512-ajk1Uxa+rBpFQHKrCcTmJyQBXZ5slfwHVEaKlkuFaW77it8RgbPJp/ccna3sgoi8oZ7FkkOyvv1Ve4SmwFqRqw==", + "dependencies": { + "lodash": "^4.17.15" + } + }, "node_modules/@storybook/addons/node_modules/@storybook/router": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.3.12.tgz", - "integrity": "sha512-G/pNGCnrJRetCwyEZulHPT+YOcqEj/vkPVDTUfii2qgqukup6K0cjwgd7IukAURnAnnzTi1gmgFuEKUi8GE/KA==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.4.19.tgz", + "integrity": "sha512-KWWwIzuyeEIWVezkCihwY2A76Il9tUNg0I410g9qT7NrEsKyqXGRYOijWub7c1GGyNjLqz0jtrrehtixMcJkuA==", "dependencies": { - "@reach/router": "^1.3.4", - "@storybook/client-logger": "6.3.12", - "@types/reach__router": "^1.3.7", + "@storybook/client-logger": "6.4.19", "core-js": "^3.8.2", "fast-deep-equal": "^3.1.3", "global": "^4.4.0", - "lodash": "^4.17.20", + "history": "5.0.0", + "lodash": "^4.17.21", "memoizerific": "^1.11.3", "qs": "^6.10.0", + "react-router": "^6.0.0", + "react-router-dom": "^6.0.0", "ts-dedent": "^2.0.0" }, "funding": { @@ -15298,15 +15755,55 @@ "react-dom": "^16.8.0 || ^17.0.0" } }, + "node_modules/@storybook/addons/node_modules/@storybook/router/node_modules/react-router": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.2.2.tgz", + "integrity": "sha512-/MbxyLzd7Q7amp4gDOGaYvXwhEojkJD5BtExkuKmj39VEE0m3l/zipf6h2WIB2jyAO0lI6NGETh4RDcktRm4AQ==", + "dependencies": { + "history": "^5.2.0" + }, + "peerDependencies": { + "react": ">=16.8" + } + }, + "node_modules/@storybook/addons/node_modules/@storybook/router/node_modules/react-router-dom": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.2.2.tgz", + "integrity": "sha512-AtYEsAST7bDD4dLSQHDnk/qxWLJdad5t1HFa1qJyUrCeGgEuCSw0VB/27ARbF9Fi/W5598ujvJOm3ujUCVzuYQ==", + "dependencies": { + "history": "^5.2.0", + "react-router": "6.2.2" + }, + "peerDependencies": { + "react": ">=16.8", + "react-dom": ">=16.8" + } + }, + "node_modules/@storybook/addons/node_modules/@storybook/router/node_modules/react-router-dom/node_modules/history": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/history/-/history-5.3.0.tgz", + "integrity": "sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==", + "dependencies": { + "@babel/runtime": "^7.7.6" + } + }, + "node_modules/@storybook/addons/node_modules/@storybook/router/node_modules/react-router/node_modules/history": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/history/-/history-5.3.0.tgz", + "integrity": "sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==", + "dependencies": { + "@babel/runtime": "^7.7.6" + } + }, "node_modules/@storybook/addons/node_modules/@storybook/theming": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.3.12.tgz", - "integrity": "sha512-wOJdTEa/VFyFB2UyoqyYGaZdym6EN7RALuQOAMT6zHA282FBmKw8nL5DETHEbctpnHdcrMC/391teK4nNSrdOA==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.4.19.tgz", + "integrity": "sha512-V4pWmTvAxmbHR6B3jA4hPkaxZPyExHvCToy7b76DpUTpuHihijNDMAn85KhOQYIeL9q14zP/aiz899tOHsOidg==", "dependencies": { "@emotion/core": "^10.1.1", "@emotion/is-prop-valid": "^0.8.6", "@emotion/styled": "^10.0.27", - "@storybook/client-logger": "6.3.12", + "@storybook/client-logger": "6.4.19", "core-js": "^3.8.2", "deep-object-diff": "^1.1.0", "emotion-theming": "^10.0.27", @@ -15326,11 +15823,11 @@ } }, "node_modules/@storybook/addons/node_modules/@storybook/theming/node_modules/@emotion/styled": { - "version": "10.0.27", - "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-10.0.27.tgz", - "integrity": "sha512-iK/8Sh7+NLJzyp9a5+vIQIXTYxfT4yB/OJbjzQanB2RZpvmzBQOHZWhpAMZWYEKRNNbsD6WfBw5sVWkb6WzS/Q==", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-10.3.0.tgz", + "integrity": "sha512-GgcUpXBBEU5ido+/p/mCT2/Xx+Oqmp9JzQRuC+a4lYM4i4LBBn/dWvc0rQ19N9ObA8/T4NWMrPNe79kMBDJqoQ==", "dependencies": { - "@emotion/styled-base": "^10.0.27", + "@emotion/styled-base": "^10.3.0", "babel-plugin-emotion": "^10.0.27" }, "peerDependencies": { @@ -15338,21 +15835,44 @@ "react": ">=16.3.0" } }, + "node_modules/@storybook/addons/node_modules/@storybook/theming/node_modules/@emotion/styled/node_modules/@emotion/styled-base": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@emotion/styled-base/-/styled-base-10.3.0.tgz", + "integrity": "sha512-PBRqsVKR7QRNkmfH78hTSSwHWcwDpecH9W6heujWAcyp2wdz/64PP73s7fWS1dIPm8/Exc8JAzYS8dEWXjv60w==", + "dependencies": { + "@babel/runtime": "^7.5.5", + "@emotion/is-prop-valid": "0.8.8", + "@emotion/serialize": "^0.11.15", + "@emotion/utils": "0.11.3" + }, + "peerDependencies": { + "@emotion/core": "^10.0.28", + "react": ">=16.3.0" + } + }, + "node_modules/@storybook/addons/node_modules/history": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/history/-/history-5.0.0.tgz", + "integrity": "sha512-3NyRMKIiFSJmIPdq7FxkNMJkQ7ZEtVblOQ38VtKaA0zZMW1Eo6Q6W8oDKEflr1kNNTItSnk4JMCO1deeSgbLLg==", + "dependencies": { + "@babel/runtime": "^7.7.6" + } + }, "node_modules/@storybook/addons/node_modules/polished": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/polished/-/polished-4.1.3.tgz", - "integrity": "sha512-ocPAcVBUOryJEKe0z2KLd1l9EBa1r5mSwlKpExmrLzsnIzJo4axsoU9O2BjOTkDGDT4mZ0WFE5XKTlR3nLnZOA==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/polished/-/polished-4.1.4.tgz", + "integrity": "sha512-Nq5Mbza+Auo7N3sQb1QMFaQiDO+4UexWuSGR7Cjb4Sw11SZIJcrrFtiZ+L0jT9MBsUsxDboHVASbCLbE1rnECg==", "dependencies": { - "@babel/runtime": "^7.14.0" + "@babel/runtime": "^7.16.7" }, "engines": { "node": ">=10" } }, "node_modules/@storybook/addons/node_modules/qs": { - "version": "6.10.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz", - "integrity": "sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg==", + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", "dependencies": { "side-channel": "^1.0.4" }, @@ -15421,9 +15941,9 @@ } }, "node_modules/@storybook/builder-webpack5": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-6.3.12.tgz", - "integrity": "sha512-+9uVSW2LFpdWnYKKcdH5sW1HqcKwbqyBJV46oN94ZlUw3fyZgz8TsOI+ZpWgCNqmBtXDr+X54deast9f443Mzw==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-6.4.19.tgz", + "integrity": "sha512-AWM4YMN1gPaf7jfntqZTCGpIQ1tF6YRU1JtczPG4ox28rTaO6NMfOBi9aRhBre/59pPOh9bF6u2gu/MIHmRW+w==", "devOptional": true, "dependencies": { "@babel/core": "^7.12.10", @@ -15446,33 +15966,34 @@ "@babel/preset-env": "^7.12.11", "@babel/preset-react": "^7.12.10", "@babel/preset-typescript": "^7.12.7", - "@storybook/addons": "6.3.12", - "@storybook/api": "6.3.12", - "@storybook/channel-postmessage": "6.3.12", - "@storybook/channels": "6.3.12", - "@storybook/client-api": "6.3.12", - "@storybook/client-logger": "6.3.12", - "@storybook/components": "6.3.12", - "@storybook/core-common": "6.3.12", - "@storybook/core-events": "6.3.12", - "@storybook/node-logger": "6.3.12", - "@storybook/router": "6.3.12", + "@storybook/addons": "6.4.19", + "@storybook/api": "6.4.19", + "@storybook/channel-postmessage": "6.4.19", + "@storybook/channels": "6.4.19", + "@storybook/client-api": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/components": "6.4.19", + "@storybook/core-common": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/node-logger": "6.4.19", + "@storybook/preview-web": "6.4.19", + "@storybook/router": "6.4.19", "@storybook/semver": "^7.3.2", - "@storybook/theming": "6.3.12", + "@storybook/store": "6.4.19", + "@storybook/theming": "6.4.19", "@types/node": "^14.0.10", - "babel-loader": "^8.2.2", + "babel-loader": "^8.0.0", "babel-plugin-macros": "^3.0.1", "babel-plugin-polyfill-corejs3": "^0.1.0", "case-sensitive-paths-webpack-plugin": "^2.3.0", "core-js": "^3.8.2", "css-loader": "^5.0.1", - "dotenv-webpack": "^7.0.0", "fork-ts-checker-webpack-plugin": "^6.0.4", - "fs-extra": "^9.0.1", "glob": "^7.1.6", "glob-promise": "^3.4.0", "html-webpack-plugin": "^5.0.0", - "react-dev-utils": "^11.0.3", + "path-browserify": "^1.0.1", + "process": "^0.11.10", "stable": "^0.1.8", "style-loader": "^2.0.0", "terser-webpack-plugin": "^5.0.3", @@ -15480,7 +16001,7 @@ "util-deprecate": "^1.0.2", "webpack": "^5.9.0", "webpack-dev-middleware": "^4.1.0", - "webpack-hot-middleware": "^2.25.0", + "webpack-hot-middleware": "^2.25.1", "webpack-virtual-modules": "^0.4.1" }, "funding": { @@ -15498,26 +16019,23 @@ } }, "node_modules/@storybook/builder-webpack5/node_modules/@storybook/api": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.3.12.tgz", - "integrity": "sha512-LScRXUeCWEW/OP+jiooNMQICVdusv7azTmULxtm72fhkXFRiQs2CdRNTiqNg46JLLC9z95f1W+pGK66X6HiiQA==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.4.19.tgz", + "integrity": "sha512-aDvea+NpQCBjpNp9YidO1Pr7fzzCp15FSdkG+2ihGQfv5raxrN+IIJnGUXecpe71nvlYiB+29UXBVK7AL0j51Q==", "devOptional": true, "dependencies": { - "@reach/router": "^1.3.4", - "@storybook/channels": "6.3.12", - "@storybook/client-logger": "6.3.12", - "@storybook/core-events": "6.3.12", - "@storybook/csf": "0.0.1", - "@storybook/router": "6.3.12", + "@storybook/channels": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/router": "6.4.19", "@storybook/semver": "^7.3.2", - "@storybook/theming": "6.3.12", - "@types/reach__router": "^1.3.7", + "@storybook/theming": "6.4.19", "core-js": "^3.8.2", "fast-deep-equal": "^3.1.3", "global": "^4.4.0", - "lodash": "^4.17.20", + "lodash": "^4.17.21", "memoizerific": "^1.11.3", - "qs": "^6.10.0", "regenerator-runtime": "^0.13.7", "store2": "^2.12.0", "telejson": "^5.3.2", @@ -15534,9 +16052,9 @@ } }, "node_modules/@storybook/builder-webpack5/node_modules/@storybook/channels": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.3.12.tgz", - "integrity": "sha512-l4sA+g1PdUV8YCbgs47fIKREdEQAKNdQIZw0b7BfTvY9t0x5yfBywgQhYON/lIeiNGz2OlIuD+VUtqYfCtNSyw==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.4.19.tgz", + "integrity": "sha512-EwyoncFvTfmIlfsy8jTfayCxo2XchPkZk/9txipugWSmc057HdklMKPLOHWP0z5hLH0IbVIKXzdNISABm36jwQ==", "devOptional": true, "dependencies": { "core-js": "^3.8.2", @@ -15549,9 +16067,9 @@ } }, "node_modules/@storybook/builder-webpack5/node_modules/@storybook/client-logger": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.3.12.tgz", - "integrity": "sha512-zNDsamZvHnuqLznDdP9dUeGgQ9TyFh4ray3t1VGO7ZqWVZ2xtVCCXjDvMnOXI2ifMpX5UsrOvshIPeE9fMBmiQ==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.4.19.tgz", + "integrity": "sha512-zmg/2wyc9W3uZrvxaW4BfHcr40J0v7AGslqYXk9H+ERLVwIvrR4NhxQFaS6uITjBENyRDxwzfU3Va634WcmdDQ==", "devOptional": true, "dependencies": { "core-js": "^3.8.2", @@ -15563,15 +16081,15 @@ } }, "node_modules/@storybook/builder-webpack5/node_modules/@storybook/components": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/components/-/components-6.3.12.tgz", - "integrity": "sha512-kdQt8toUjynYAxDLrJzuG7YSNL6as1wJoyzNUaCfG06YPhvIAlKo7le9tS2mThVFN5e9nbKrW3N1V1sp6ypZXQ==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-6.4.19.tgz", + "integrity": "sha512-q/0V37YAJA7CNc+wSiiefeM9+3XVk8ixBNylY36QCGJgIeGQ5/79vPyUe6K4lLmsQwpmZsIq1s1Ad5+VbboeOA==", "devOptional": true, "dependencies": { "@popperjs/core": "^2.6.0", - "@storybook/client-logger": "6.3.12", - "@storybook/csf": "0.0.1", - "@storybook/theming": "6.3.12", + "@storybook/client-logger": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/theming": "6.4.19", "@types/color-convert": "^2.0.0", "@types/overlayscrollbars": "^1.12.0", "@types/react-syntax-highlighter": "11.0.5", @@ -15579,7 +16097,7 @@ "core-js": "^3.8.2", "fast-deep-equal": "^3.1.3", "global": "^4.4.0", - "lodash": "^4.17.20", + "lodash": "^4.17.21", "markdown-to-jsx": "^7.1.3", "memoizerific": "^1.11.3", "overlayscrollbars": "^1.13.1", @@ -15619,9 +16137,9 @@ } }, "node_modules/@storybook/builder-webpack5/node_modules/@storybook/core-common": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-6.3.12.tgz", - "integrity": "sha512-xlHs2QXELq/moB4MuXjYOczaxU64BIseHsnFBLyboJYN6Yso3qihW5RB7cuJlGohkjb4JwY74dvfT4Ww66rkBA==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-6.4.19.tgz", + "integrity": "sha512-X1pJJkO48DFxl6iyEemIKqRkJ7j9/cBh3BRBUr+xZHXBvnD0GKDXIocwh0PjSxSC6XSu3UCQnqtKi3PbjRl8Dg==", "devOptional": true, "dependencies": { "@babel/core": "^7.12.10", @@ -15645,13 +16163,11 @@ "@babel/preset-react": "^7.12.10", "@babel/preset-typescript": "^7.12.7", "@babel/register": "^7.12.1", - "@storybook/node-logger": "6.3.12", + "@storybook/node-logger": "6.4.19", "@storybook/semver": "^7.3.2", - "@types/glob-base": "^0.3.0", - "@types/micromatch": "^4.0.1", "@types/node": "^14.0.10", "@types/pretty-hrtime": "^1.0.0", - "babel-loader": "^8.2.2", + "babel-loader": "^8.0.0", "babel-plugin-macros": "^3.0.1", "babel-plugin-polyfill-corejs3": "^0.1.0", "chalk": "^4.1.0", @@ -15660,15 +16176,18 @@ "file-system-cache": "^1.0.5", "find-up": "^5.0.0", "fork-ts-checker-webpack-plugin": "^6.0.4", + "fs-extra": "^9.0.1", "glob": "^7.1.6", - "glob-base": "^0.3.0", + "handlebars": "^4.7.7", "interpret": "^2.2.0", "json5": "^2.1.3", "lazy-universal-dotenv": "^3.0.1", - "micromatch": "^4.0.2", + "picomatch": "^2.3.0", "pkg-dir": "^5.0.0", "pretty-hrtime": "^1.0.3", "resolve-from": "^5.0.0", + "slash": "^3.0.0", + "telejson": "^5.3.2", "ts-dedent": "^2.0.0", "util-deprecate": "^1.0.2", "webpack": "4" @@ -15687,66 +16206,6 @@ } } }, - "node_modules/@storybook/builder-webpack5/node_modules/@storybook/core-common/node_modules/braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "devOptional": true, - "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@storybook/builder-webpack5/node_modules/@storybook/core-common/node_modules/fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "devOptional": true, - "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@storybook/builder-webpack5/node_modules/@storybook/core-common/node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "devOptional": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@storybook/builder-webpack5/node_modules/@storybook/core-common/node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "devOptional": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/@storybook/builder-webpack5/node_modules/@storybook/core-common/node_modules/loader-utils": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", @@ -15836,19 +16295,6 @@ "webpack": "^4.0.0" } }, - "node_modules/@storybook/builder-webpack5/node_modules/@storybook/core-common/node_modules/to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "devOptional": true, - "dependencies": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/@storybook/builder-webpack5/node_modules/@storybook/core-common/node_modules/webpack": { "version": "4.46.0", "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.46.0.tgz", @@ -15898,71 +16344,76 @@ } } }, - "node_modules/@storybook/builder-webpack5/node_modules/@storybook/core-common/node_modules/webpack/node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "node_modules/@storybook/builder-webpack5/node_modules/@storybook/core-events": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.4.19.tgz", + "integrity": "sha512-KICzUw6XVQUJzFSCXfvhfHAuyhn4Q5J4IZEfuZkcGJS4ODkrO6tmpdYE5Cfr+so95Nfp0ErWiLUuodBsW9/rtA==", "devOptional": true, "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" + "core-js": "^3.8.2" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/builder-webpack5/node_modules/@storybook/core-common/node_modules/webpack/node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "node_modules/@storybook/builder-webpack5/node_modules/@storybook/csf": { + "version": "0.0.2--canary.87bc651.0", + "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.0.2--canary.87bc651.0.tgz", + "integrity": "sha512-ajk1Uxa+rBpFQHKrCcTmJyQBXZ5slfwHVEaKlkuFaW77it8RgbPJp/ccna3sgoi8oZ7FkkOyvv1Ve4SmwFqRqw==", "devOptional": true, "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" + "lodash": "^4.17.15" } }, - "node_modules/@storybook/builder-webpack5/node_modules/@storybook/core-events": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.3.12.tgz", - "integrity": "sha512-SXfD7xUUMazaeFkB92qOTUV8Y/RghE4SkEYe5slAdjeocSaH7Nz2WV0rqNEgChg0AQc+JUI66no8L9g0+lw4Gw==", + "node_modules/@storybook/builder-webpack5/node_modules/@storybook/preview-web": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/preview-web/-/preview-web-6.4.19.tgz", + "integrity": "sha512-jqltoBv5j7lvnxEfV9w8dLX9ASWGuvgz97yg8Yo5FqkftEwrHJenyvMGcTgDJKJPorF+wiz/9aIqnmd3LCAcZQ==", "devOptional": true, "dependencies": { - "core-js": "^3.8.2" + "@storybook/addons": "6.4.19", + "@storybook/channel-postmessage": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/store": "6.4.19", + "ansi-to-html": "^0.6.11", + "core-js": "^3.8.2", + "global": "^4.4.0", + "lodash": "^4.17.21", + "qs": "^6.10.0", + "regenerator-runtime": "^0.13.7", + "synchronous-promise": "^2.0.15", + "ts-dedent": "^2.0.0", + "unfetch": "^4.2.0", + "util-deprecate": "^1.0.2" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0", + "react-dom": "^16.8.0 || ^17.0.0" } }, "node_modules/@storybook/builder-webpack5/node_modules/@storybook/router": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.3.12.tgz", - "integrity": "sha512-G/pNGCnrJRetCwyEZulHPT+YOcqEj/vkPVDTUfii2qgqukup6K0cjwgd7IukAURnAnnzTi1gmgFuEKUi8GE/KA==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.4.19.tgz", + "integrity": "sha512-KWWwIzuyeEIWVezkCihwY2A76Il9tUNg0I410g9qT7NrEsKyqXGRYOijWub7c1GGyNjLqz0jtrrehtixMcJkuA==", "devOptional": true, "dependencies": { - "@reach/router": "^1.3.4", - "@storybook/client-logger": "6.3.12", - "@types/reach__router": "^1.3.7", + "@storybook/client-logger": "6.4.19", "core-js": "^3.8.2", "fast-deep-equal": "^3.1.3", "global": "^4.4.0", - "lodash": "^4.17.20", + "history": "5.0.0", + "lodash": "^4.17.21", "memoizerific": "^1.11.3", "qs": "^6.10.0", + "react-router": "^6.0.0", + "react-router-dom": "^6.0.0", "ts-dedent": "^2.0.0" }, "funding": { @@ -15974,16 +16425,91 @@ "react-dom": "^16.8.0 || ^17.0.0" } }, + "node_modules/@storybook/builder-webpack5/node_modules/@storybook/router/node_modules/react-router": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.2.2.tgz", + "integrity": "sha512-/MbxyLzd7Q7amp4gDOGaYvXwhEojkJD5BtExkuKmj39VEE0m3l/zipf6h2WIB2jyAO0lI6NGETh4RDcktRm4AQ==", + "devOptional": true, + "dependencies": { + "history": "^5.2.0" + }, + "peerDependencies": { + "react": ">=16.8" + } + }, + "node_modules/@storybook/builder-webpack5/node_modules/@storybook/router/node_modules/react-router-dom": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.2.2.tgz", + "integrity": "sha512-AtYEsAST7bDD4dLSQHDnk/qxWLJdad5t1HFa1qJyUrCeGgEuCSw0VB/27ARbF9Fi/W5598ujvJOm3ujUCVzuYQ==", + "devOptional": true, + "dependencies": { + "history": "^5.2.0", + "react-router": "6.2.2" + }, + "peerDependencies": { + "react": ">=16.8", + "react-dom": ">=16.8" + } + }, + "node_modules/@storybook/builder-webpack5/node_modules/@storybook/router/node_modules/react-router-dom/node_modules/history": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/history/-/history-5.3.0.tgz", + "integrity": "sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==", + "devOptional": true, + "dependencies": { + "@babel/runtime": "^7.7.6" + } + }, + "node_modules/@storybook/builder-webpack5/node_modules/@storybook/router/node_modules/react-router/node_modules/history": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/history/-/history-5.3.0.tgz", + "integrity": "sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==", + "devOptional": true, + "dependencies": { + "@babel/runtime": "^7.7.6" + } + }, + "node_modules/@storybook/builder-webpack5/node_modules/@storybook/store": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/store/-/store-6.4.19.tgz", + "integrity": "sha512-N9/ZjemRHGfT3InPIbqQqc6snkcfnf3Qh9oOr0smbfaVGJol//KOX65kzzobtzFcid0WxtTDZ3HmgFVH+GvuhQ==", + "devOptional": true, + "dependencies": { + "@storybook/addons": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "core-js": "^3.8.2", + "fast-deep-equal": "^3.1.3", + "global": "^4.4.0", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "regenerator-runtime": "^0.13.7", + "slash": "^3.0.0", + "stable": "^0.1.8", + "synchronous-promise": "^2.0.15", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0", + "react-dom": "^16.8.0 || ^17.0.0" + } + }, "node_modules/@storybook/builder-webpack5/node_modules/@storybook/theming": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.3.12.tgz", - "integrity": "sha512-wOJdTEa/VFyFB2UyoqyYGaZdym6EN7RALuQOAMT6zHA282FBmKw8nL5DETHEbctpnHdcrMC/391teK4nNSrdOA==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.4.19.tgz", + "integrity": "sha512-V4pWmTvAxmbHR6B3jA4hPkaxZPyExHvCToy7b76DpUTpuHihijNDMAn85KhOQYIeL9q14zP/aiz899tOHsOidg==", "devOptional": true, "dependencies": { "@emotion/core": "^10.1.1", "@emotion/is-prop-valid": "^0.8.6", "@emotion/styled": "^10.0.27", - "@storybook/client-logger": "6.3.12", + "@storybook/client-logger": "6.4.19", "core-js": "^3.8.2", "deep-object-diff": "^1.1.0", "emotion-theming": "^10.0.27", @@ -16003,12 +16529,12 @@ } }, "node_modules/@storybook/builder-webpack5/node_modules/@storybook/theming/node_modules/@emotion/styled": { - "version": "10.0.27", - "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-10.0.27.tgz", - "integrity": "sha512-iK/8Sh7+NLJzyp9a5+vIQIXTYxfT4yB/OJbjzQanB2RZpvmzBQOHZWhpAMZWYEKRNNbsD6WfBw5sVWkb6WzS/Q==", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-10.3.0.tgz", + "integrity": "sha512-GgcUpXBBEU5ido+/p/mCT2/Xx+Oqmp9JzQRuC+a4lYM4i4LBBn/dWvc0rQ19N9ObA8/T4NWMrPNe79kMBDJqoQ==", "devOptional": true, "dependencies": { - "@emotion/styled-base": "^10.0.27", + "@emotion/styled-base": "^10.3.0", "babel-plugin-emotion": "^10.0.27" }, "peerDependencies": { @@ -16016,6 +16542,22 @@ "react": ">=16.3.0" } }, + "node_modules/@storybook/builder-webpack5/node_modules/@storybook/theming/node_modules/@emotion/styled/node_modules/@emotion/styled-base": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@emotion/styled-base/-/styled-base-10.3.0.tgz", + "integrity": "sha512-PBRqsVKR7QRNkmfH78hTSSwHWcwDpecH9W6heujWAcyp2wdz/64PP73s7fWS1dIPm8/Exc8JAzYS8dEWXjv60w==", + "devOptional": true, + "dependencies": { + "@babel/runtime": "^7.5.5", + "@emotion/is-prop-valid": "0.8.8", + "@emotion/serialize": "^0.11.15", + "@emotion/utils": "0.11.3" + }, + "peerDependencies": { + "@emotion/core": "^10.0.28", + "react": ">=16.3.0" + } + }, "node_modules/@storybook/builder-webpack5/node_modules/@types/node": { "version": "14.17.19", "resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.19.tgz", @@ -16049,18 +16591,6 @@ "npm": ">=6" } }, - "node_modules/@storybook/builder-webpack5/node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "devOptional": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@storybook/builder-webpack5/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -16122,57 +16652,6 @@ "node": ">=10" } }, - "node_modules/@storybook/builder-webpack5/node_modules/dotenv-defaults": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/dotenv-defaults/-/dotenv-defaults-2.0.2.tgz", - "integrity": "sha512-iOIzovWfsUHU91L5i8bJce3NYK5JXeAwH50Jh6+ARUdLiiGlYWfGw6UkzsYqaXZH/hjE/eCd/PlfM/qqyK0AMg==", - "devOptional": true, - "dependencies": { - "dotenv": "^8.2.0" - } - }, - "node_modules/@storybook/builder-webpack5/node_modules/dotenv-webpack": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/dotenv-webpack/-/dotenv-webpack-7.0.3.tgz", - "integrity": "sha512-O0O9pOEwrk+n1zzR3T2uuXRlw64QxHSPeNN1GaiNBloQFNaCUL9V8jxSVz4jlXXFP/CIqK8YecWf8BAvsSgMjw==", - "devOptional": true, - "dependencies": { - "dotenv-defaults": "^2.0.2" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "webpack": "^4 || ^5" - } - }, - "node_modules/@storybook/builder-webpack5/node_modules/enhanced-resolve": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", - "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", - "devOptional": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.5.0", - "tapable": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@storybook/builder-webpack5/node_modules/enhanced-resolve/node_modules/memory-fs": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", - "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", - "devOptional": true, - "dependencies": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - }, - "engines": { - "node": ">=4.3.0 <5.0.0 || >=5.10" - } - }, "node_modules/@storybook/builder-webpack5/node_modules/eslint-scope": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", @@ -16186,18 +16665,6 @@ "node": ">=4.0.0" } }, - "node_modules/@storybook/builder-webpack5/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==", - "devOptional": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@storybook/builder-webpack5/node_modules/find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", @@ -16238,25 +16705,13 @@ "node": ">=8" } }, - "node_modules/@storybook/builder-webpack5/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "node_modules/@storybook/builder-webpack5/node_modules/history": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/history/-/history-5.0.0.tgz", + "integrity": "sha512-3NyRMKIiFSJmIPdq7FxkNMJkQ7ZEtVblOQ38VtKaA0zZMW1Eo6Q6W8oDKEflr1kNNTItSnk4JMCO1deeSgbLLg==", "devOptional": true, "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@storybook/builder-webpack5/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==", - "devOptional": true, - "engines": { - "node": ">=0.12.0" + "@babel/runtime": "^7.7.6" } }, "node_modules/@storybook/builder-webpack5/node_modules/jest-worker": { @@ -16288,15 +16743,6 @@ "node": ">=6" } }, - "node_modules/@storybook/builder-webpack5/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==", - "devOptional": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/@storybook/builder-webpack5/node_modules/loader-runner": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", @@ -16347,29 +16793,6 @@ "node": ">=10" } }, - "node_modules/@storybook/builder-webpack5/node_modules/memory-fs": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", - "devOptional": true, - "dependencies": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - }, - "node_modules/@storybook/builder-webpack5/node_modules/micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", - "devOptional": true, - "dependencies": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" - }, - "engines": { - "node": ">=8.6" - } - }, "node_modules/@storybook/builder-webpack5/node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -16422,21 +16845,21 @@ } }, "node_modules/@storybook/builder-webpack5/node_modules/polished": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/polished/-/polished-4.1.3.tgz", - "integrity": "sha512-ocPAcVBUOryJEKe0z2KLd1l9EBa1r5mSwlKpExmrLzsnIzJo4axsoU9O2BjOTkDGDT4mZ0WFE5XKTlR3nLnZOA==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/polished/-/polished-4.1.4.tgz", + "integrity": "sha512-Nq5Mbza+Auo7N3sQb1QMFaQiDO+4UexWuSGR7Cjb4Sw11SZIJcrrFtiZ+L0jT9MBsUsxDboHVASbCLbE1rnECg==", "devOptional": true, "dependencies": { - "@babel/runtime": "^7.14.0" + "@babel/runtime": "^7.16.7" }, "engines": { "node": ">=10" } }, "node_modules/@storybook/builder-webpack5/node_modules/qs": { - "version": "6.10.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz", - "integrity": "sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg==", + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", "devOptional": true, "dependencies": { "side-channel": "^1.0.4" @@ -16466,6 +16889,15 @@ "randombytes": "^2.1.0" } }, + "node_modules/@storybook/builder-webpack5/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "devOptional": true, + "engines": { + "node": ">=8" + } + }, "node_modules/@storybook/builder-webpack5/node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -16510,15 +16942,6 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/@storybook/builder-webpack5/node_modules/tapable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", - "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", - "devOptional": true, - "engines": { - "node": ">=6" - } - }, "node_modules/@storybook/builder-webpack5/node_modules/terser": { "version": "5.9.0", "resolved": "https://registry.npmjs.org/terser/-/terser-5.9.0.tgz", @@ -16580,18 +17003,6 @@ "node": ">= 8" } }, - "node_modules/@storybook/builder-webpack5/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==", - "devOptional": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, "node_modules/@storybook/builder-webpack5/node_modules/webpack-dev-middleware": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-4.3.0.tgz", @@ -16639,13 +17050,13 @@ "devOptional": true }, "node_modules/@storybook/channel-postmessage": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/channel-postmessage/-/channel-postmessage-6.3.12.tgz", - "integrity": "sha512-Ou/2Ga3JRTZ/4sSv7ikMgUgLTeZMsXXWLXuscz4oaYhmOqAU9CrJw0G1NitwBgK/+qC83lEFSLujHkWcoQDOKg==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/channel-postmessage/-/channel-postmessage-6.4.19.tgz", + "integrity": "sha512-E5h/itFzQ/6M08LR4kqlgqqmeO3tmavI+nUAlZrkCrotpJFNMHE2i0PQHg0TkFJrRDpYcrwD+AjUW4IwdqrisQ==", "dependencies": { - "@storybook/channels": "6.3.12", - "@storybook/client-logger": "6.3.12", - "@storybook/core-events": "6.3.12", + "@storybook/channels": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/core-events": "6.4.19", "core-js": "^3.8.2", "global": "^4.4.0", "qs": "^6.10.0", @@ -16657,9 +17068,9 @@ } }, "node_modules/@storybook/channel-postmessage/node_modules/@storybook/channels": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.3.12.tgz", - "integrity": "sha512-l4sA+g1PdUV8YCbgs47fIKREdEQAKNdQIZw0b7BfTvY9t0x5yfBywgQhYON/lIeiNGz2OlIuD+VUtqYfCtNSyw==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.4.19.tgz", + "integrity": "sha512-EwyoncFvTfmIlfsy8jTfayCxo2XchPkZk/9txipugWSmc057HdklMKPLOHWP0z5hLH0IbVIKXzdNISABm36jwQ==", "dependencies": { "core-js": "^3.8.2", "ts-dedent": "^2.0.0", @@ -16671,9 +17082,9 @@ } }, "node_modules/@storybook/channel-postmessage/node_modules/@storybook/client-logger": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.3.12.tgz", - "integrity": "sha512-zNDsamZvHnuqLznDdP9dUeGgQ9TyFh4ray3t1VGO7ZqWVZ2xtVCCXjDvMnOXI2ifMpX5UsrOvshIPeE9fMBmiQ==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.4.19.tgz", + "integrity": "sha512-zmg/2wyc9W3uZrvxaW4BfHcr40J0v7AGslqYXk9H+ERLVwIvrR4NhxQFaS6uITjBENyRDxwzfU3Va634WcmdDQ==", "dependencies": { "core-js": "^3.8.2", "global": "^4.4.0" @@ -16684,9 +17095,9 @@ } }, "node_modules/@storybook/channel-postmessage/node_modules/@storybook/core-events": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.3.12.tgz", - "integrity": "sha512-SXfD7xUUMazaeFkB92qOTUV8Y/RghE4SkEYe5slAdjeocSaH7Nz2WV0rqNEgChg0AQc+JUI66no8L9g0+lw4Gw==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.4.19.tgz", + "integrity": "sha512-KICzUw6XVQUJzFSCXfvhfHAuyhn4Q5J4IZEfuZkcGJS4ODkrO6tmpdYE5Cfr+so95Nfp0ErWiLUuodBsW9/rtA==", "dependencies": { "core-js": "^3.8.2" }, @@ -16696,9 +17107,9 @@ } }, "node_modules/@storybook/channel-postmessage/node_modules/qs": { - "version": "6.10.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz", - "integrity": "sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg==", + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", "dependencies": { "side-channel": "^1.0.4" }, @@ -16709,6 +17120,49 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/@storybook/channel-websocket": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/channel-websocket/-/channel-websocket-6.4.19.tgz", + "integrity": "sha512-cXKwQjIXttfdUyZlcHORelUmJ5nUKswsnCA/qy7IRWpZjD8yQJcNk1dYC+tTHDVqFgdRT89pL0hRRB1rlaaR8Q==", + "dependencies": { + "@storybook/channels": "6.4.19", + "@storybook/client-logger": "6.4.19", + "core-js": "^3.8.2", + "global": "^4.4.0", + "telejson": "^5.3.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/channel-websocket/node_modules/@storybook/channels": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.4.19.tgz", + "integrity": "sha512-EwyoncFvTfmIlfsy8jTfayCxo2XchPkZk/9txipugWSmc057HdklMKPLOHWP0z5hLH0IbVIKXzdNISABm36jwQ==", + "dependencies": { + "core-js": "^3.8.2", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/channel-websocket/node_modules/@storybook/client-logger": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.4.19.tgz", + "integrity": "sha512-zmg/2wyc9W3uZrvxaW4BfHcr40J0v7AGslqYXk9H+ERLVwIvrR4NhxQFaS6uITjBENyRDxwzfU3Va634WcmdDQ==", + "dependencies": { + "core-js": "^3.8.2", + "global": "^4.4.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, "node_modules/@storybook/channels": { "version": "6.3.8", "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.3.8.tgz", @@ -16724,26 +17178,28 @@ } }, "node_modules/@storybook/client-api": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/client-api/-/client-api-6.3.12.tgz", - "integrity": "sha512-xnW+lKKK2T774z+rOr9Wopt1aYTStfb86PSs9p3Fpnc2Btcftln+C3NtiHZl8Ccqft8Mz/chLGgewRui6tNI8g==", - "dependencies": { - "@storybook/addons": "6.3.12", - "@storybook/channel-postmessage": "6.3.12", - "@storybook/channels": "6.3.12", - "@storybook/client-logger": "6.3.12", - "@storybook/core-events": "6.3.12", - "@storybook/csf": "0.0.1", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/client-api/-/client-api-6.4.19.tgz", + "integrity": "sha512-OCrT5Um3FDvZnimQKwWtwsaI+5agPwq2i8YiqlofrI/NPMKp0I7DEkCGwE5IRD1Q8BIKqHcMo5tTmfYi0AxyOg==", + "dependencies": { + "@storybook/addons": "6.4.19", + "@storybook/channel-postmessage": "6.4.19", + "@storybook/channels": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/store": "6.4.19", "@types/qs": "^6.9.5", "@types/webpack-env": "^1.16.0", "core-js": "^3.8.2", + "fast-deep-equal": "^3.1.3", "global": "^4.4.0", - "lodash": "^4.17.20", + "lodash": "^4.17.21", "memoizerific": "^1.11.3", "qs": "^6.10.0", "regenerator-runtime": "^0.13.7", - "stable": "^0.1.8", "store2": "^2.12.0", + "synchronous-promise": "^2.0.15", "ts-dedent": "^2.0.0", "util-deprecate": "^1.0.2" }, @@ -16757,9 +17213,9 @@ } }, "node_modules/@storybook/client-api/node_modules/@storybook/channels": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.3.12.tgz", - "integrity": "sha512-l4sA+g1PdUV8YCbgs47fIKREdEQAKNdQIZw0b7BfTvY9t0x5yfBywgQhYON/lIeiNGz2OlIuD+VUtqYfCtNSyw==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.4.19.tgz", + "integrity": "sha512-EwyoncFvTfmIlfsy8jTfayCxo2XchPkZk/9txipugWSmc057HdklMKPLOHWP0z5hLH0IbVIKXzdNISABm36jwQ==", "dependencies": { "core-js": "^3.8.2", "ts-dedent": "^2.0.0", @@ -16771,9 +17227,9 @@ } }, "node_modules/@storybook/client-api/node_modules/@storybook/client-logger": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.3.12.tgz", - "integrity": "sha512-zNDsamZvHnuqLznDdP9dUeGgQ9TyFh4ray3t1VGO7ZqWVZ2xtVCCXjDvMnOXI2ifMpX5UsrOvshIPeE9fMBmiQ==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.4.19.tgz", + "integrity": "sha512-zmg/2wyc9W3uZrvxaW4BfHcr40J0v7AGslqYXk9H+ERLVwIvrR4NhxQFaS6uITjBENyRDxwzfU3Va634WcmdDQ==", "dependencies": { "core-js": "^3.8.2", "global": "^4.4.0" @@ -16784,9 +17240,9 @@ } }, "node_modules/@storybook/client-api/node_modules/@storybook/core-events": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.3.12.tgz", - "integrity": "sha512-SXfD7xUUMazaeFkB92qOTUV8Y/RghE4SkEYe5slAdjeocSaH7Nz2WV0rqNEgChg0AQc+JUI66no8L9g0+lw4Gw==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.4.19.tgz", + "integrity": "sha512-KICzUw6XVQUJzFSCXfvhfHAuyhn4Q5J4IZEfuZkcGJS4ODkrO6tmpdYE5Cfr+so95Nfp0ErWiLUuodBsW9/rtA==", "dependencies": { "core-js": "^3.8.2" }, @@ -16795,6 +17251,44 @@ "url": "https://opencollective.com/storybook" } }, + "node_modules/@storybook/client-api/node_modules/@storybook/csf": { + "version": "0.0.2--canary.87bc651.0", + "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.0.2--canary.87bc651.0.tgz", + "integrity": "sha512-ajk1Uxa+rBpFQHKrCcTmJyQBXZ5slfwHVEaKlkuFaW77it8RgbPJp/ccna3sgoi8oZ7FkkOyvv1Ve4SmwFqRqw==", + "dependencies": { + "lodash": "^4.17.15" + } + }, + "node_modules/@storybook/client-api/node_modules/@storybook/store": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/store/-/store-6.4.19.tgz", + "integrity": "sha512-N9/ZjemRHGfT3InPIbqQqc6snkcfnf3Qh9oOr0smbfaVGJol//KOX65kzzobtzFcid0WxtTDZ3HmgFVH+GvuhQ==", + "dependencies": { + "@storybook/addons": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "core-js": "^3.8.2", + "fast-deep-equal": "^3.1.3", + "global": "^4.4.0", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "regenerator-runtime": "^0.13.7", + "slash": "^3.0.0", + "stable": "^0.1.8", + "synchronous-promise": "^2.0.15", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0", + "react-dom": "^16.8.0 || ^17.0.0" + } + }, "node_modules/@storybook/client-api/node_modules/qs": { "version": "6.10.1", "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz", @@ -16809,6 +17303,14 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/@storybook/client-api/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "engines": { + "node": ">=8" + } + }, "node_modules/@storybook/client-logger": { "version": "6.3.8", "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.3.8.tgz", @@ -16924,10 +17426,11 @@ } }, "node_modules/@storybook/csf-tools": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/csf-tools/-/csf-tools-6.3.12.tgz", - "integrity": "sha512-wNrX+99ajAXxLo0iRwrqw65MLvCV6SFC0XoPLYrtBvyKr+hXOOnzIhO2f5BNEii8velpC2gl2gcLKeacpVYLqA==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/csf-tools/-/csf-tools-6.4.19.tgz", + "integrity": "sha512-gf/zRhGoAVsFwSyV2tc+jeJfZQkxF6QsaZgbUSe24/IUvGFCT/PS/jZq1qy7dECAwrTOfykgu8juyBtj6WhWyw==", "dependencies": { + "@babel/core": "^7.12.10", "@babel/generator": "^7.12.11", "@babel/parser": "^7.12.11", "@babel/plugin-transform-react-jsx": "^7.12.12", @@ -16935,19 +17438,29 @@ "@babel/traverse": "^7.12.11", "@babel/types": "^7.12.11", "@mdx-js/mdx": "^1.6.22", - "@storybook/csf": "^0.0.1", + "@storybook/csf": "0.0.2--canary.87bc651.0", "core-js": "^3.8.2", "fs-extra": "^9.0.1", + "global": "^4.4.0", "js-string-escape": "^1.0.1", - "lodash": "^4.17.20", - "prettier": "~2.2.1", - "regenerator-runtime": "^0.13.7" + "lodash": "^4.17.21", + "prettier": ">=2.2.1 <=2.3.0", + "regenerator-runtime": "^0.13.7", + "ts-dedent": "^2.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" } }, + "node_modules/@storybook/csf-tools/node_modules/@storybook/csf": { + "version": "0.0.2--canary.87bc651.0", + "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.0.2--canary.87bc651.0.tgz", + "integrity": "sha512-ajk1Uxa+rBpFQHKrCcTmJyQBXZ5slfwHVEaKlkuFaW77it8RgbPJp/ccna3sgoi8oZ7FkkOyvv1Ve4SmwFqRqw==", + "dependencies": { + "lodash": "^4.17.15" + } + }, "node_modules/@storybook/csf-tools/node_modules/fs-extra": { "version": "9.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", @@ -16963,9 +17476,9 @@ } }, "node_modules/@storybook/csf-tools/node_modules/prettier": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.2.1.tgz", - "integrity": "sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.3.0.tgz", + "integrity": "sha512-kXtO4s0Lz/DW/IJ9QdWhAf7/NmPWQXkFr/r/WkR3vyI+0v8amTDxiaQSLzs8NBlytfLWX/7uQUMIW677yLKl4w==", "bin": { "prettier": "bin-prettier.js" }, @@ -16974,34 +17487,33 @@ } }, "node_modules/@storybook/manager-webpack5": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/manager-webpack5/-/manager-webpack5-6.3.12.tgz", - "integrity": "sha512-wMZYNBAUomlGSGsDFuATgiWRGF8g6TEk33VCESWrMnKLZZyq80KT+EiL/0+edfIbdrgalaqXwch38+tRwErg2A==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/manager-webpack5/-/manager-webpack5-6.4.19.tgz", + "integrity": "sha512-hVjWhWAOgWaymBy0HeRskN+MfKLpqLP4Txfw+3Xqg1qplgexV0w2O4BQrS/SNEH4V/1qF9h8XTsk3L3oQIj3Mg==", "devOptional": true, "dependencies": { "@babel/core": "^7.12.10", "@babel/plugin-transform-template-literals": "^7.12.1", "@babel/preset-react": "^7.12.10", - "@storybook/addons": "6.3.12", - "@storybook/core-client": "6.3.12", - "@storybook/core-common": "6.3.12", - "@storybook/node-logger": "6.3.12", - "@storybook/theming": "6.3.12", - "@storybook/ui": "6.3.12", + "@storybook/addons": "6.4.19", + "@storybook/core-client": "6.4.19", + "@storybook/core-common": "6.4.19", + "@storybook/node-logger": "6.4.19", + "@storybook/theming": "6.4.19", + "@storybook/ui": "6.4.19", "@types/node": "^14.0.10", - "babel-loader": "^8.2.2", + "babel-loader": "^8.0.0", "case-sensitive-paths-webpack-plugin": "^2.3.0", "chalk": "^4.1.0", "core-js": "^3.8.2", "css-loader": "^5.0.1", - "dotenv-webpack": "^7.0.0", "express": "^4.17.1", - "file-loader": "^6.2.0", "file-system-cache": "^1.0.5", "find-up": "^5.0.0", "fs-extra": "^9.0.1", "html-webpack-plugin": "^5.0.0", "node-fetch": "^2.6.1", + "process": "^0.11.10", "read-pkg-up": "^7.0.1", "regenerator-runtime": "^0.13.7", "resolve-from": "^5.0.0", @@ -17009,7 +17521,6 @@ "telejson": "^5.3.2", "terser-webpack-plugin": "^5.0.3", "ts-dedent": "^2.0.0", - "url-loader": "^4.1.1", "util-deprecate": "^1.0.2", "webpack": "^5.9.0", "webpack-dev-middleware": "^4.1.0", @@ -17030,9 +17541,9 @@ } }, "node_modules/@storybook/manager-webpack5/node_modules/@storybook/channels": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.3.12.tgz", - "integrity": "sha512-l4sA+g1PdUV8YCbgs47fIKREdEQAKNdQIZw0b7BfTvY9t0x5yfBywgQhYON/lIeiNGz2OlIuD+VUtqYfCtNSyw==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.4.19.tgz", + "integrity": "sha512-EwyoncFvTfmIlfsy8jTfayCxo2XchPkZk/9txipugWSmc057HdklMKPLOHWP0z5hLH0IbVIKXzdNISABm36jwQ==", "devOptional": true, "dependencies": { "core-js": "^3.8.2", @@ -17045,9 +17556,9 @@ } }, "node_modules/@storybook/manager-webpack5/node_modules/@storybook/client-logger": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.3.12.tgz", - "integrity": "sha512-zNDsamZvHnuqLznDdP9dUeGgQ9TyFh4ray3t1VGO7ZqWVZ2xtVCCXjDvMnOXI2ifMpX5UsrOvshIPeE9fMBmiQ==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.4.19.tgz", + "integrity": "sha512-zmg/2wyc9W3uZrvxaW4BfHcr40J0v7AGslqYXk9H+ERLVwIvrR4NhxQFaS6uITjBENyRDxwzfU3Va634WcmdDQ==", "devOptional": true, "dependencies": { "core-js": "^3.8.2", @@ -17059,23 +17570,26 @@ } }, "node_modules/@storybook/manager-webpack5/node_modules/@storybook/core-client": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/core-client/-/core-client-6.3.12.tgz", - "integrity": "sha512-8Smd9BgZHJpAdevLKQYinwtjSyCZAuBMoetP4P5hnn53mWl0NFbrHFaAdT+yNchDLZQUbf7Y18VmIqEH+RCR5w==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/core-client/-/core-client-6.4.19.tgz", + "integrity": "sha512-rQHRZjhArPleE7/S8ZUolgzwY+hC0smSKX/3PQxO2GcebDjnJj6+iSV3h+aSMHMmTdoCQvjYw9aBpT8scuRe+A==", "devOptional": true, "dependencies": { - "@storybook/addons": "6.3.12", - "@storybook/channel-postmessage": "6.3.12", - "@storybook/client-api": "6.3.12", - "@storybook/client-logger": "6.3.12", - "@storybook/core-events": "6.3.12", - "@storybook/csf": "0.0.1", - "@storybook/ui": "6.3.12", + "@storybook/addons": "6.4.19", + "@storybook/channel-postmessage": "6.4.19", + "@storybook/channel-websocket": "6.4.19", + "@storybook/client-api": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/preview-web": "6.4.19", + "@storybook/store": "6.4.19", + "@storybook/ui": "6.4.19", "airbnb-js-shims": "^2.2.1", "ansi-to-html": "^0.6.11", "core-js": "^3.8.2", "global": "^4.4.0", - "lodash": "^4.17.20", + "lodash": "^4.17.21", "qs": "^6.10.0", "regenerator-runtime": "^0.13.7", "ts-dedent": "^2.0.0", @@ -17097,10 +17611,73 @@ } } }, + "node_modules/@storybook/manager-webpack5/node_modules/@storybook/core-client/node_modules/@storybook/preview-web": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/preview-web/-/preview-web-6.4.19.tgz", + "integrity": "sha512-jqltoBv5j7lvnxEfV9w8dLX9ASWGuvgz97yg8Yo5FqkftEwrHJenyvMGcTgDJKJPorF+wiz/9aIqnmd3LCAcZQ==", + "devOptional": true, + "dependencies": { + "@storybook/addons": "6.4.19", + "@storybook/channel-postmessage": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/store": "6.4.19", + "ansi-to-html": "^0.6.11", + "core-js": "^3.8.2", + "global": "^4.4.0", + "lodash": "^4.17.21", + "qs": "^6.10.0", + "regenerator-runtime": "^0.13.7", + "synchronous-promise": "^2.0.15", + "ts-dedent": "^2.0.0", + "unfetch": "^4.2.0", + "util-deprecate": "^1.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0", + "react-dom": "^16.8.0 || ^17.0.0" + } + }, + "node_modules/@storybook/manager-webpack5/node_modules/@storybook/core-client/node_modules/@storybook/store": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/store/-/store-6.4.19.tgz", + "integrity": "sha512-N9/ZjemRHGfT3InPIbqQqc6snkcfnf3Qh9oOr0smbfaVGJol//KOX65kzzobtzFcid0WxtTDZ3HmgFVH+GvuhQ==", + "devOptional": true, + "dependencies": { + "@storybook/addons": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "core-js": "^3.8.2", + "fast-deep-equal": "^3.1.3", + "global": "^4.4.0", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "regenerator-runtime": "^0.13.7", + "slash": "^3.0.0", + "stable": "^0.1.8", + "synchronous-promise": "^2.0.15", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0", + "react-dom": "^16.8.0 || ^17.0.0" + } + }, "node_modules/@storybook/manager-webpack5/node_modules/@storybook/core-common": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-6.3.12.tgz", - "integrity": "sha512-xlHs2QXELq/moB4MuXjYOczaxU64BIseHsnFBLyboJYN6Yso3qihW5RB7cuJlGohkjb4JwY74dvfT4Ww66rkBA==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-6.4.19.tgz", + "integrity": "sha512-X1pJJkO48DFxl6iyEemIKqRkJ7j9/cBh3BRBUr+xZHXBvnD0GKDXIocwh0PjSxSC6XSu3UCQnqtKi3PbjRl8Dg==", "devOptional": true, "dependencies": { "@babel/core": "^7.12.10", @@ -17124,13 +17701,11 @@ "@babel/preset-react": "^7.12.10", "@babel/preset-typescript": "^7.12.7", "@babel/register": "^7.12.1", - "@storybook/node-logger": "6.3.12", + "@storybook/node-logger": "6.4.19", "@storybook/semver": "^7.3.2", - "@types/glob-base": "^0.3.0", - "@types/micromatch": "^4.0.1", "@types/node": "^14.0.10", "@types/pretty-hrtime": "^1.0.0", - "babel-loader": "^8.2.2", + "babel-loader": "^8.0.0", "babel-plugin-macros": "^3.0.1", "babel-plugin-polyfill-corejs3": "^0.1.0", "chalk": "^4.1.0", @@ -17139,15 +17714,18 @@ "file-system-cache": "^1.0.5", "find-up": "^5.0.0", "fork-ts-checker-webpack-plugin": "^6.0.4", + "fs-extra": "^9.0.1", "glob": "^7.1.6", - "glob-base": "^0.3.0", + "handlebars": "^4.7.7", "interpret": "^2.2.0", "json5": "^2.1.3", "lazy-universal-dotenv": "^3.0.1", - "micromatch": "^4.0.2", + "picomatch": "^2.3.0", "pkg-dir": "^5.0.0", "pretty-hrtime": "^1.0.3", "resolve-from": "^5.0.0", + "slash": "^3.0.0", + "telejson": "^5.3.2", "ts-dedent": "^2.0.0", "util-deprecate": "^1.0.2", "webpack": "4" @@ -17166,66 +17744,6 @@ } } }, - "node_modules/@storybook/manager-webpack5/node_modules/@storybook/core-common/node_modules/braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "devOptional": true, - "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@storybook/manager-webpack5/node_modules/@storybook/core-common/node_modules/fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "devOptional": true, - "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@storybook/manager-webpack5/node_modules/@storybook/core-common/node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "devOptional": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@storybook/manager-webpack5/node_modules/@storybook/core-common/node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "devOptional": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/@storybook/manager-webpack5/node_modules/@storybook/core-common/node_modules/loader-utils": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", @@ -17315,19 +17833,6 @@ "webpack": "^4.0.0" } }, - "node_modules/@storybook/manager-webpack5/node_modules/@storybook/core-common/node_modules/to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "devOptional": true, - "dependencies": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/@storybook/manager-webpack5/node_modules/@storybook/core-common/node_modules/webpack": { "version": "4.46.0", "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.46.0.tgz", @@ -17377,47 +17882,10 @@ } } }, - "node_modules/@storybook/manager-webpack5/node_modules/@storybook/core-common/node_modules/webpack/node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "devOptional": true, - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@storybook/manager-webpack5/node_modules/@storybook/core-common/node_modules/webpack/node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "devOptional": true, - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/@storybook/manager-webpack5/node_modules/@storybook/core-events": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.3.12.tgz", - "integrity": "sha512-SXfD7xUUMazaeFkB92qOTUV8Y/RghE4SkEYe5slAdjeocSaH7Nz2WV0rqNEgChg0AQc+JUI66no8L9g0+lw4Gw==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.4.19.tgz", + "integrity": "sha512-KICzUw6XVQUJzFSCXfvhfHAuyhn4Q5J4IZEfuZkcGJS4ODkrO6tmpdYE5Cfr+so95Nfp0ErWiLUuodBsW9/rtA==", "devOptional": true, "dependencies": { "core-js": "^3.8.2" @@ -17427,16 +17895,25 @@ "url": "https://opencollective.com/storybook" } }, + "node_modules/@storybook/manager-webpack5/node_modules/@storybook/csf": { + "version": "0.0.2--canary.87bc651.0", + "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.0.2--canary.87bc651.0.tgz", + "integrity": "sha512-ajk1Uxa+rBpFQHKrCcTmJyQBXZ5slfwHVEaKlkuFaW77it8RgbPJp/ccna3sgoi8oZ7FkkOyvv1Ve4SmwFqRqw==", + "devOptional": true, + "dependencies": { + "lodash": "^4.17.15" + } + }, "node_modules/@storybook/manager-webpack5/node_modules/@storybook/theming": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.3.12.tgz", - "integrity": "sha512-wOJdTEa/VFyFB2UyoqyYGaZdym6EN7RALuQOAMT6zHA282FBmKw8nL5DETHEbctpnHdcrMC/391teK4nNSrdOA==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.4.19.tgz", + "integrity": "sha512-V4pWmTvAxmbHR6B3jA4hPkaxZPyExHvCToy7b76DpUTpuHihijNDMAn85KhOQYIeL9q14zP/aiz899tOHsOidg==", "devOptional": true, "dependencies": { "@emotion/core": "^10.1.1", "@emotion/is-prop-valid": "^0.8.6", "@emotion/styled": "^10.0.27", - "@storybook/client-logger": "6.3.12", + "@storybook/client-logger": "6.4.19", "core-js": "^3.8.2", "deep-object-diff": "^1.1.0", "emotion-theming": "^10.0.27", @@ -17456,12 +17933,12 @@ } }, "node_modules/@storybook/manager-webpack5/node_modules/@storybook/theming/node_modules/@emotion/styled": { - "version": "10.0.27", - "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-10.0.27.tgz", - "integrity": "sha512-iK/8Sh7+NLJzyp9a5+vIQIXTYxfT4yB/OJbjzQanB2RZpvmzBQOHZWhpAMZWYEKRNNbsD6WfBw5sVWkb6WzS/Q==", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-10.3.0.tgz", + "integrity": "sha512-GgcUpXBBEU5ido+/p/mCT2/Xx+Oqmp9JzQRuC+a4lYM4i4LBBn/dWvc0rQ19N9ObA8/T4NWMrPNe79kMBDJqoQ==", "devOptional": true, "dependencies": { - "@emotion/styled-base": "^10.0.27", + "@emotion/styled-base": "^10.3.0", "babel-plugin-emotion": "^10.0.27" }, "peerDependencies": { @@ -17469,23 +17946,38 @@ "react": ">=16.3.0" } }, + "node_modules/@storybook/manager-webpack5/node_modules/@storybook/theming/node_modules/@emotion/styled/node_modules/@emotion/styled-base": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@emotion/styled-base/-/styled-base-10.3.0.tgz", + "integrity": "sha512-PBRqsVKR7QRNkmfH78hTSSwHWcwDpecH9W6heujWAcyp2wdz/64PP73s7fWS1dIPm8/Exc8JAzYS8dEWXjv60w==", + "devOptional": true, + "dependencies": { + "@babel/runtime": "^7.5.5", + "@emotion/is-prop-valid": "0.8.8", + "@emotion/serialize": "^0.11.15", + "@emotion/utils": "0.11.3" + }, + "peerDependencies": { + "@emotion/core": "^10.0.28", + "react": ">=16.3.0" + } + }, "node_modules/@storybook/manager-webpack5/node_modules/@storybook/ui": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/ui/-/ui-6.3.12.tgz", - "integrity": "sha512-PC2yEz4JMfarq7rUFbeA3hCA+31p5es7YPEtxLRvRwIZhtL0P4zQUfHpotb3KgWdoAIfZesAuoIQwMPQmEFYrw==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/ui/-/ui-6.4.19.tgz", + "integrity": "sha512-gFwdn5LA2U6oQ4bfUFLyHZnNasGQ01YVdwjbi+l6yjmnckBNtZfJoVTZ1rzGUbxSE9rK48InJRU+latTsr7xAg==", "devOptional": true, "dependencies": { "@emotion/core": "^10.1.1", - "@storybook/addons": "6.3.12", - "@storybook/api": "6.3.12", - "@storybook/channels": "6.3.12", - "@storybook/client-logger": "6.3.12", - "@storybook/components": "6.3.12", - "@storybook/core-events": "6.3.12", - "@storybook/router": "6.3.12", + "@storybook/addons": "6.4.19", + "@storybook/api": "6.4.19", + "@storybook/channels": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/components": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/router": "6.4.19", "@storybook/semver": "^7.3.2", - "@storybook/theming": "6.3.12", - "@types/markdown-to-jsx": "^6.11.3", + "@storybook/theming": "6.4.19", "copy-to-clipboard": "^3.3.1", "core-js": "^3.8.2", "core-js-pure": "^3.8.2", @@ -17493,8 +17985,8 @@ "emotion-theming": "^10.0.27", "fuse.js": "^3.6.1", "global": "^4.4.0", - "lodash": "^4.17.20", - "markdown-to-jsx": "^6.11.4", + "lodash": "^4.17.21", + "markdown-to-jsx": "^7.1.3", "memoizerific": "^1.11.3", "polished": "^4.0.5", "qs": "^6.10.0", @@ -17515,26 +18007,23 @@ } }, "node_modules/@storybook/manager-webpack5/node_modules/@storybook/ui/node_modules/@storybook/api": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.3.12.tgz", - "integrity": "sha512-LScRXUeCWEW/OP+jiooNMQICVdusv7azTmULxtm72fhkXFRiQs2CdRNTiqNg46JLLC9z95f1W+pGK66X6HiiQA==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.4.19.tgz", + "integrity": "sha512-aDvea+NpQCBjpNp9YidO1Pr7fzzCp15FSdkG+2ihGQfv5raxrN+IIJnGUXecpe71nvlYiB+29UXBVK7AL0j51Q==", "devOptional": true, "dependencies": { - "@reach/router": "^1.3.4", - "@storybook/channels": "6.3.12", - "@storybook/client-logger": "6.3.12", - "@storybook/core-events": "6.3.12", - "@storybook/csf": "0.0.1", - "@storybook/router": "6.3.12", + "@storybook/channels": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/router": "6.4.19", "@storybook/semver": "^7.3.2", - "@storybook/theming": "6.3.12", - "@types/reach__router": "^1.3.7", + "@storybook/theming": "6.4.19", "core-js": "^3.8.2", "fast-deep-equal": "^3.1.3", "global": "^4.4.0", - "lodash": "^4.17.20", + "lodash": "^4.17.21", "memoizerific": "^1.11.3", - "qs": "^6.10.0", "regenerator-runtime": "^0.13.7", "store2": "^2.12.0", "telejson": "^5.3.2", @@ -17551,15 +18040,15 @@ } }, "node_modules/@storybook/manager-webpack5/node_modules/@storybook/ui/node_modules/@storybook/components": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/components/-/components-6.3.12.tgz", - "integrity": "sha512-kdQt8toUjynYAxDLrJzuG7YSNL6as1wJoyzNUaCfG06YPhvIAlKo7le9tS2mThVFN5e9nbKrW3N1V1sp6ypZXQ==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-6.4.19.tgz", + "integrity": "sha512-q/0V37YAJA7CNc+wSiiefeM9+3XVk8ixBNylY36QCGJgIeGQ5/79vPyUe6K4lLmsQwpmZsIq1s1Ad5+VbboeOA==", "devOptional": true, "dependencies": { "@popperjs/core": "^2.6.0", - "@storybook/client-logger": "6.3.12", - "@storybook/csf": "0.0.1", - "@storybook/theming": "6.3.12", + "@storybook/client-logger": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/theming": "6.4.19", "@types/color-convert": "^2.0.0", "@types/overlayscrollbars": "^1.12.0", "@types/react-syntax-highlighter": "11.0.5", @@ -17567,7 +18056,7 @@ "core-js": "^3.8.2", "fast-deep-equal": "^3.1.3", "global": "^4.4.0", - "lodash": "^4.17.20", + "lodash": "^4.17.21", "markdown-to-jsx": "^7.1.3", "memoizerific": "^1.11.3", "overlayscrollbars": "^1.13.1", @@ -17590,18 +18079,6 @@ "react-dom": "^16.8.0 || ^17.0.0" } }, - "node_modules/@storybook/manager-webpack5/node_modules/@storybook/ui/node_modules/@storybook/components/node_modules/markdown-to-jsx": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-7.1.3.tgz", - "integrity": "sha512-jtQ6VyT7rMT5tPV0g2EJakEnXLiPksnvlYtwQsVVZ611JsWGN8bQ1tVSDX4s6JllfEH6wmsYxNjTUAMrPmNA8w==", - "devOptional": true, - "engines": { - "node": ">= 10" - }, - "peerDependencies": { - "react": ">= 0.14.0" - } - }, "node_modules/@storybook/manager-webpack5/node_modules/@storybook/ui/node_modules/@storybook/components/node_modules/react-syntax-highlighter": { "version": "13.5.3", "resolved": "https://registry.npmjs.org/react-syntax-highlighter/-/react-syntax-highlighter-13.5.3.tgz", @@ -17619,20 +18096,21 @@ } }, "node_modules/@storybook/manager-webpack5/node_modules/@storybook/ui/node_modules/@storybook/router": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.3.12.tgz", - "integrity": "sha512-G/pNGCnrJRetCwyEZulHPT+YOcqEj/vkPVDTUfii2qgqukup6K0cjwgd7IukAURnAnnzTi1gmgFuEKUi8GE/KA==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.4.19.tgz", + "integrity": "sha512-KWWwIzuyeEIWVezkCihwY2A76Il9tUNg0I410g9qT7NrEsKyqXGRYOijWub7c1GGyNjLqz0jtrrehtixMcJkuA==", "devOptional": true, "dependencies": { - "@reach/router": "^1.3.4", - "@storybook/client-logger": "6.3.12", - "@types/reach__router": "^1.3.7", + "@storybook/client-logger": "6.4.19", "core-js": "^3.8.2", "fast-deep-equal": "^3.1.3", "global": "^4.4.0", - "lodash": "^4.17.20", + "history": "5.0.0", + "lodash": "^4.17.21", "memoizerific": "^1.11.3", "qs": "^6.10.0", + "react-router": "^6.0.0", + "react-router-dom": "^6.0.0", "ts-dedent": "^2.0.0" }, "funding": { @@ -17644,6 +18122,50 @@ "react-dom": "^16.8.0 || ^17.0.0" } }, + "node_modules/@storybook/manager-webpack5/node_modules/@storybook/ui/node_modules/@storybook/router/node_modules/react-router": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.2.2.tgz", + "integrity": "sha512-/MbxyLzd7Q7amp4gDOGaYvXwhEojkJD5BtExkuKmj39VEE0m3l/zipf6h2WIB2jyAO0lI6NGETh4RDcktRm4AQ==", + "devOptional": true, + "dependencies": { + "history": "^5.2.0" + }, + "peerDependencies": { + "react": ">=16.8" + } + }, + "node_modules/@storybook/manager-webpack5/node_modules/@storybook/ui/node_modules/@storybook/router/node_modules/react-router-dom": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.2.2.tgz", + "integrity": "sha512-AtYEsAST7bDD4dLSQHDnk/qxWLJdad5t1HFa1qJyUrCeGgEuCSw0VB/27ARbF9Fi/W5598ujvJOm3ujUCVzuYQ==", + "devOptional": true, + "dependencies": { + "history": "^5.2.0", + "react-router": "6.2.2" + }, + "peerDependencies": { + "react": ">=16.8", + "react-dom": ">=16.8" + } + }, + "node_modules/@storybook/manager-webpack5/node_modules/@storybook/ui/node_modules/@storybook/router/node_modules/react-router-dom/node_modules/history": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/history/-/history-5.3.0.tgz", + "integrity": "sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==", + "devOptional": true, + "dependencies": { + "@babel/runtime": "^7.7.6" + } + }, + "node_modules/@storybook/manager-webpack5/node_modules/@storybook/ui/node_modules/@storybook/router/node_modules/react-router/node_modules/history": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/history/-/history-5.3.0.tgz", + "integrity": "sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==", + "devOptional": true, + "dependencies": { + "@babel/runtime": "^7.7.6" + } + }, "node_modules/@storybook/manager-webpack5/node_modules/@storybook/ui/node_modules/downshift": { "version": "6.1.7", "resolved": "https://registry.npmjs.org/downshift/-/downshift-6.1.7.tgz", @@ -17660,26 +18182,10 @@ "react": ">=16.12.0" } }, - "node_modules/@storybook/manager-webpack5/node_modules/@storybook/ui/node_modules/markdown-to-jsx": { - "version": "6.11.4", - "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-6.11.4.tgz", - "integrity": "sha512-3lRCD5Sh+tfA52iGgfs/XZiw33f7fFX9Bn55aNnVNUd2GzLDkOWyKYYD8Yju2B1Vn+feiEdgJs8T6Tg0xNokPw==", - "devOptional": true, - "dependencies": { - "prop-types": "^15.6.2", - "unquote": "^1.1.0" - }, - "engines": { - "node": ">= 4" - }, - "peerDependencies": { - "react": ">= 0.14.0" - } - }, "node_modules/@storybook/manager-webpack5/node_modules/@storybook/ui/node_modules/react-helmet-async": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/react-helmet-async/-/react-helmet-async-1.1.2.tgz", - "integrity": "sha512-LTTzDDkyIleT/JJ6T/uqx7Y8qi1EuPPSiJawQY/nHHz0h7SPDT6HxP1YDDQx/fzcVxCqpWEEMS3QdrSrNkJYhg==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/react-helmet-async/-/react-helmet-async-1.2.3.tgz", + "integrity": "sha512-mCk2silF53Tq/YaYdkl2sB+/tDoPnaxN7dFS/6ZLJb/rhUY2EWGI5Xj2b4jHppScMqY45MbgPSwTxDchKpZ5Kw==", "devOptional": true, "dependencies": { "@babel/runtime": "^7.12.5", @@ -17726,18 +18232,6 @@ "npm": ">=6" } }, - "node_modules/@storybook/manager-webpack5/node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "devOptional": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@storybook/manager-webpack5/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -17784,57 +18278,6 @@ "webpack": "^4.27.0 || ^5.0.0" } }, - "node_modules/@storybook/manager-webpack5/node_modules/dotenv-defaults": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/dotenv-defaults/-/dotenv-defaults-2.0.2.tgz", - "integrity": "sha512-iOIzovWfsUHU91L5i8bJce3NYK5JXeAwH50Jh6+ARUdLiiGlYWfGw6UkzsYqaXZH/hjE/eCd/PlfM/qqyK0AMg==", - "devOptional": true, - "dependencies": { - "dotenv": "^8.2.0" - } - }, - "node_modules/@storybook/manager-webpack5/node_modules/dotenv-webpack": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/dotenv-webpack/-/dotenv-webpack-7.0.3.tgz", - "integrity": "sha512-O0O9pOEwrk+n1zzR3T2uuXRlw64QxHSPeNN1GaiNBloQFNaCUL9V8jxSVz4jlXXFP/CIqK8YecWf8BAvsSgMjw==", - "devOptional": true, - "dependencies": { - "dotenv-defaults": "^2.0.2" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "webpack": "^4 || ^5" - } - }, - "node_modules/@storybook/manager-webpack5/node_modules/enhanced-resolve": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", - "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", - "devOptional": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.5.0", - "tapable": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@storybook/manager-webpack5/node_modules/enhanced-resolve/node_modules/memory-fs": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", - "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", - "devOptional": true, - "dependencies": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - }, - "engines": { - "node": ">=4.3.0 <5.0.0 || >=5.10" - } - }, "node_modules/@storybook/manager-webpack5/node_modules/eslint-scope": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", @@ -17848,38 +18291,6 @@ "node": ">=4.0.0" } }, - "node_modules/@storybook/manager-webpack5/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==", - "devOptional": true, - "dependencies": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/@storybook/manager-webpack5/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==", - "devOptional": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@storybook/manager-webpack5/node_modules/find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", @@ -17929,25 +18340,13 @@ "node": ">=8" } }, - "node_modules/@storybook/manager-webpack5/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "node_modules/@storybook/manager-webpack5/node_modules/history": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/history/-/history-5.0.0.tgz", + "integrity": "sha512-3NyRMKIiFSJmIPdq7FxkNMJkQ7ZEtVblOQ38VtKaA0zZMW1Eo6Q6W8oDKEflr1kNNTItSnk4JMCO1deeSgbLLg==", "devOptional": true, "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@storybook/manager-webpack5/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==", - "devOptional": true, - "engines": { - "node": ">=0.12.0" + "@babel/runtime": "^7.7.6" } }, "node_modules/@storybook/manager-webpack5/node_modules/jest-worker": { @@ -17979,15 +18378,6 @@ "node": ">=6" } }, - "node_modules/@storybook/manager-webpack5/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==", - "devOptional": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/@storybook/manager-webpack5/node_modules/loader-runner": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", @@ -18038,29 +18428,6 @@ "node": ">=10" } }, - "node_modules/@storybook/manager-webpack5/node_modules/memory-fs": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", - "devOptional": true, - "dependencies": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - }, - "node_modules/@storybook/manager-webpack5/node_modules/micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", - "devOptional": true, - "dependencies": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" - }, - "engines": { - "node": ">=8.6" - } - }, "node_modules/@storybook/manager-webpack5/node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -18113,21 +18480,21 @@ } }, "node_modules/@storybook/manager-webpack5/node_modules/polished": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/polished/-/polished-4.1.3.tgz", - "integrity": "sha512-ocPAcVBUOryJEKe0z2KLd1l9EBa1r5mSwlKpExmrLzsnIzJo4axsoU9O2BjOTkDGDT4mZ0WFE5XKTlR3nLnZOA==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/polished/-/polished-4.1.4.tgz", + "integrity": "sha512-Nq5Mbza+Auo7N3sQb1QMFaQiDO+4UexWuSGR7Cjb4Sw11SZIJcrrFtiZ+L0jT9MBsUsxDboHVASbCLbE1rnECg==", "devOptional": true, "dependencies": { - "@babel/runtime": "^7.14.0" + "@babel/runtime": "^7.16.7" }, "engines": { "node": ">=10" } }, "node_modules/@storybook/manager-webpack5/node_modules/qs": { - "version": "6.10.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz", - "integrity": "sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg==", + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", "devOptional": true, "dependencies": { "side-channel": "^1.0.4" @@ -18178,6 +18545,15 @@ "randombytes": "^2.1.0" } }, + "node_modules/@storybook/manager-webpack5/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "devOptional": true, + "engines": { + "node": ">=8" + } + }, "node_modules/@storybook/manager-webpack5/node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -18222,15 +18598,6 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/@storybook/manager-webpack5/node_modules/tapable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", - "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", - "devOptional": true, - "engines": { - "node": ">=6" - } - }, "node_modules/@storybook/manager-webpack5/node_modules/terser": { "version": "5.9.0", "resolved": "https://registry.npmjs.org/terser/-/terser-5.9.0.tgz", @@ -18292,18 +18659,6 @@ "node": ">= 8" } }, - "node_modules/@storybook/manager-webpack5/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==", - "devOptional": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, "node_modules/@storybook/manager-webpack5/node_modules/tslib": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", @@ -18357,14 +18712,14 @@ "devOptional": true }, "node_modules/@storybook/node-logger": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-6.3.12.tgz", - "integrity": "sha512-iktOem/Ls2+dsZY9PhPeC6T1QhX/y7OInP88neLsqEPEbB2UXca3Ydv7OZBhBVbvN25W45b05MRzbtNUxYLNRw==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-6.4.19.tgz", + "integrity": "sha512-hO2Aar3PgPnPtNq2fVgiuGlqo3EEVR6TKVBXMq7foL3tN2k4BQFKLDHbm5qZQQntyYKurKsRUGKPJFPuI1ov/w==", "dependencies": { "@types/npmlog": "^4.1.2", "chalk": "^4.1.0", "core-js": "^3.8.2", - "npmlog": "^4.1.2", + "npmlog": "^5.0.1", "pretty-hrtime": "^1.0.3" }, "funding": { @@ -18372,10 +18727,105 @@ "url": "https://opencollective.com/storybook" } }, + "node_modules/@storybook/node-logger/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==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@storybook/node-logger/node_modules/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==", + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@storybook/node-logger/node_modules/gauge": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", + "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", + "dependencies": { + "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" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@storybook/node-logger/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/@storybook/node-logger/node_modules/npmlog": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", + "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", + "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/@storybook/node-logger/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==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@storybook/node-logger/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/@storybook/node-logger/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/@storybook/postinstall": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/postinstall/-/postinstall-6.3.12.tgz", - "integrity": "sha512-HkZ+abtZ3W6JbGPS6K7OSnNXbwaTwNNd5R02kRs4gV9B29XsBPDtFT6vIwzM3tmVQC7ihL5a8ceWp2OvzaNOuw==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/postinstall/-/postinstall-6.4.19.tgz", + "integrity": "sha512-/0tHHxyIV82zt1rw4BW70GmrQbDVu9IJPAxOqFzGjC1fNojwJ53mK6FfUsOzbhG5mWk5p0Ip5+zr74moP119AA==", "dev": true, "dependencies": { "core-js": "^3.8.2" @@ -18386,29 +18836,30 @@ } }, "node_modules/@storybook/react": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/react/-/react-6.3.12.tgz", - "integrity": "sha512-c1Y/3/eNzye+ZRwQ3BXJux6pUMVt3lhv1/M9Qagl9JItP3jDSj5Ed3JHCgwEqpprP8mvNNXwEJ8+M7vEQyDuHg==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/react/-/react-6.4.19.tgz", + "integrity": "sha512-5b3i8jkVrjQGmcxxxXwCduHPIh+cluWkfeweKeQOe+lW4BR8fuUICo3AMLrYPAtB/UcaJyYkIYmTvF2mkfepFA==", "dependencies": { "@babel/preset-flow": "^7.12.1", "@babel/preset-react": "^7.12.10", - "@pmmmwh/react-refresh-webpack-plugin": "^0.4.3", - "@storybook/addons": "6.3.12", - "@storybook/core": "6.3.12", - "@storybook/core-common": "6.3.12", - "@storybook/node-logger": "6.3.12", + "@pmmmwh/react-refresh-webpack-plugin": "^0.5.1", + "@storybook/addons": "6.4.19", + "@storybook/core": "6.4.19", + "@storybook/core-common": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/node-logger": "6.4.19", "@storybook/react-docgen-typescript-plugin": "1.0.2-canary.253f8c1.0", "@storybook/semver": "^7.3.2", + "@storybook/store": "6.4.19", "@types/webpack-env": "^1.16.0", "babel-plugin-add-react-displayname": "^0.0.5", "babel-plugin-named-asset-import": "^0.3.1", "babel-plugin-react-docgen": "^4.2.1", "core-js": "^3.8.2", "global": "^4.4.0", - "lodash": "^4.17.20", + "lodash": "^4.17.21", "prop-types": "^15.7.2", - "react-dev-utils": "^11.0.3", - "react-refresh": "^0.8.3", + "react-refresh": "^0.11.0", "read-pkg-up": "^7.0.1", "regenerator-runtime": "^0.13.7", "ts-dedent": "^2.0.0", @@ -18650,10 +19101,72 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" }, + "node_modules/@storybook/react/node_modules/@pmmmwh/react-refresh-webpack-plugin": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.4.tgz", + "integrity": "sha512-zZbZeHQDnoTlt2AF+diQT0wsSXpvWiaIOZwBRdltNFhG1+I3ozyaw7U/nBiUwyJ0D+zwdXp0E3bWOl38Ag2BMw==", + "dependencies": { + "ansi-html-community": "^0.0.8", + "common-path-prefix": "^3.0.0", + "core-js-pure": "^3.8.1", + "error-stack-parser": "^2.0.6", + "find-up": "^5.0.0", + "html-entities": "^2.1.0", + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0", + "source-map": "^0.7.3" + }, + "engines": { + "node": ">= 10.13" + }, + "peerDependencies": { + "@types/webpack": "4.x || 5.x", + "react-refresh": ">=0.10.0 <1.0.0", + "sockjs-client": "^1.4.0", + "type-fest": ">=0.17.0 <3.0.0", + "webpack": ">=4.43.0 <6.0.0", + "webpack-dev-server": "3.x || 4.x", + "webpack-hot-middleware": "2.x", + "webpack-plugin-serve": "0.x || 1.x" + }, + "peerDependenciesMeta": { + "@types/webpack": { + "optional": true + }, + "sockjs-client": { + "optional": true + }, + "type-fest": { + "optional": true + }, + "webpack-dev-server": { + "optional": true + }, + "webpack-hot-middleware": { + "optional": true + }, + "webpack-plugin-serve": { + "optional": true + } + } + }, + "node_modules/@storybook/react/node_modules/@pmmmwh/react-refresh-webpack-plugin/node_modules/loader-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", + "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, "node_modules/@storybook/react/node_modules/@storybook/channels": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.3.12.tgz", - "integrity": "sha512-l4sA+g1PdUV8YCbgs47fIKREdEQAKNdQIZw0b7BfTvY9t0x5yfBywgQhYON/lIeiNGz2OlIuD+VUtqYfCtNSyw==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.4.19.tgz", + "integrity": "sha512-EwyoncFvTfmIlfsy8jTfayCxo2XchPkZk/9txipugWSmc057HdklMKPLOHWP0z5hLH0IbVIKXzdNISABm36jwQ==", "dependencies": { "core-js": "^3.8.2", "ts-dedent": "^2.0.0", @@ -18665,9 +19178,9 @@ } }, "node_modules/@storybook/react/node_modules/@storybook/client-logger": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.3.12.tgz", - "integrity": "sha512-zNDsamZvHnuqLznDdP9dUeGgQ9TyFh4ray3t1VGO7ZqWVZ2xtVCCXjDvMnOXI2ifMpX5UsrOvshIPeE9fMBmiQ==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.4.19.tgz", + "integrity": "sha512-zmg/2wyc9W3uZrvxaW4BfHcr40J0v7AGslqYXk9H+ERLVwIvrR4NhxQFaS6uITjBENyRDxwzfU3Va634WcmdDQ==", "dependencies": { "core-js": "^3.8.2", "global": "^4.4.0" @@ -18678,21 +19191,22 @@ } }, "node_modules/@storybook/react/node_modules/@storybook/core": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/core/-/core-6.3.12.tgz", - "integrity": "sha512-FJm2ns8wk85hXWKslLWiUWRWwS9KWRq7jlkN6M9p57ghFseSGr4W71Orcoab4P3M7jI97l5yqBfppbscinE74g==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/core/-/core-6.4.19.tgz", + "integrity": "sha512-55LOQ/h/kf1jMhjN85t/pIEdIwWEG9yV7bdwv3niVvmoypCxyyjn9/QNK0RKYAeDSUtdm6FVoJ6k5CpxWz2d8w==", "dependencies": { - "@storybook/core-client": "6.3.12", - "@storybook/core-server": "6.3.12" + "@storybook/core-client": "6.4.19", + "@storybook/core-server": "6.4.19" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "@storybook/builder-webpack5": "6.3.12", + "@storybook/builder-webpack5": "6.4.19", "react": "^16.8.0 || ^17.0.0", - "react-dom": "^16.8.0 || ^17.0.0" + "react-dom": "^16.8.0 || ^17.0.0", + "webpack": "*" }, "peerDependenciesMeta": { "@storybook/builder-webpack5": { @@ -18704,9 +19218,9 @@ } }, "node_modules/@storybook/react/node_modules/@storybook/core-common": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-6.3.12.tgz", - "integrity": "sha512-xlHs2QXELq/moB4MuXjYOczaxU64BIseHsnFBLyboJYN6Yso3qihW5RB7cuJlGohkjb4JwY74dvfT4Ww66rkBA==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-6.4.19.tgz", + "integrity": "sha512-X1pJJkO48DFxl6iyEemIKqRkJ7j9/cBh3BRBUr+xZHXBvnD0GKDXIocwh0PjSxSC6XSu3UCQnqtKi3PbjRl8Dg==", "dependencies": { "@babel/core": "^7.12.10", "@babel/plugin-proposal-class-properties": "^7.12.1", @@ -18729,13 +19243,11 @@ "@babel/preset-react": "^7.12.10", "@babel/preset-typescript": "^7.12.7", "@babel/register": "^7.12.1", - "@storybook/node-logger": "6.3.12", + "@storybook/node-logger": "6.4.19", "@storybook/semver": "^7.3.2", - "@types/glob-base": "^0.3.0", - "@types/micromatch": "^4.0.1", "@types/node": "^14.0.10", "@types/pretty-hrtime": "^1.0.0", - "babel-loader": "^8.2.2", + "babel-loader": "^8.0.0", "babel-plugin-macros": "^3.0.1", "babel-plugin-polyfill-corejs3": "^0.1.0", "chalk": "^4.1.0", @@ -18744,15 +19256,18 @@ "file-system-cache": "^1.0.5", "find-up": "^5.0.0", "fork-ts-checker-webpack-plugin": "^6.0.4", + "fs-extra": "^9.0.1", "glob": "^7.1.6", - "glob-base": "^0.3.0", + "handlebars": "^4.7.7", "interpret": "^2.2.0", "json5": "^2.1.3", "lazy-universal-dotenv": "^3.0.1", - "micromatch": "^4.0.2", + "picomatch": "^2.3.0", "pkg-dir": "^5.0.0", "pretty-hrtime": "^1.0.3", "resolve-from": "^5.0.0", + "slash": "^3.0.0", + "telejson": "^5.3.2", "ts-dedent": "^2.0.0", "util-deprecate": "^1.0.2", "webpack": "4" @@ -18771,22 +19286,10 @@ } } }, - "node_modules/@storybook/react/node_modules/@storybook/core-common/node_modules/micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", - "dependencies": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" - }, - "engines": { - "node": ">=8.6" - } - }, "node_modules/@storybook/react/node_modules/@storybook/core-events": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.3.12.tgz", - "integrity": "sha512-SXfD7xUUMazaeFkB92qOTUV8Y/RghE4SkEYe5slAdjeocSaH7Nz2WV0rqNEgChg0AQc+JUI66no8L9g0+lw4Gw==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.4.19.tgz", + "integrity": "sha512-KICzUw6XVQUJzFSCXfvhfHAuyhn4Q5J4IZEfuZkcGJS4ODkrO6tmpdYE5Cfr+so95Nfp0ErWiLUuodBsW9/rtA==", "dependencies": { "core-js": "^3.8.2" }, @@ -18796,22 +19299,25 @@ } }, "node_modules/@storybook/react/node_modules/@storybook/core/node_modules/@storybook/core-client": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/core-client/-/core-client-6.3.12.tgz", - "integrity": "sha512-8Smd9BgZHJpAdevLKQYinwtjSyCZAuBMoetP4P5hnn53mWl0NFbrHFaAdT+yNchDLZQUbf7Y18VmIqEH+RCR5w==", - "dependencies": { - "@storybook/addons": "6.3.12", - "@storybook/channel-postmessage": "6.3.12", - "@storybook/client-api": "6.3.12", - "@storybook/client-logger": "6.3.12", - "@storybook/core-events": "6.3.12", - "@storybook/csf": "0.0.1", - "@storybook/ui": "6.3.12", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/core-client/-/core-client-6.4.19.tgz", + "integrity": "sha512-rQHRZjhArPleE7/S8ZUolgzwY+hC0smSKX/3PQxO2GcebDjnJj6+iSV3h+aSMHMmTdoCQvjYw9aBpT8scuRe+A==", + "dependencies": { + "@storybook/addons": "6.4.19", + "@storybook/channel-postmessage": "6.4.19", + "@storybook/channel-websocket": "6.4.19", + "@storybook/client-api": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/preview-web": "6.4.19", + "@storybook/store": "6.4.19", + "@storybook/ui": "6.4.19", "airbnb-js-shims": "^2.2.1", "ansi-to-html": "^0.6.11", "core-js": "^3.8.2", "global": "^4.4.0", - "lodash": "^4.17.20", + "lodash": "^4.17.21", "qs": "^6.10.0", "regenerator-runtime": "^0.13.7", "ts-dedent": "^2.0.0", @@ -18833,22 +19339,52 @@ } } }, + "node_modules/@storybook/react/node_modules/@storybook/core/node_modules/@storybook/core-client/node_modules/@storybook/preview-web": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/preview-web/-/preview-web-6.4.19.tgz", + "integrity": "sha512-jqltoBv5j7lvnxEfV9w8dLX9ASWGuvgz97yg8Yo5FqkftEwrHJenyvMGcTgDJKJPorF+wiz/9aIqnmd3LCAcZQ==", + "dependencies": { + "@storybook/addons": "6.4.19", + "@storybook/channel-postmessage": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/store": "6.4.19", + "ansi-to-html": "^0.6.11", + "core-js": "^3.8.2", + "global": "^4.4.0", + "lodash": "^4.17.21", + "qs": "^6.10.0", + "regenerator-runtime": "^0.13.7", + "synchronous-promise": "^2.0.15", + "ts-dedent": "^2.0.0", + "unfetch": "^4.2.0", + "util-deprecate": "^1.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0", + "react-dom": "^16.8.0 || ^17.0.0" + } + }, "node_modules/@storybook/react/node_modules/@storybook/core/node_modules/@storybook/core-client/node_modules/@storybook/ui": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/ui/-/ui-6.3.12.tgz", - "integrity": "sha512-PC2yEz4JMfarq7rUFbeA3hCA+31p5es7YPEtxLRvRwIZhtL0P4zQUfHpotb3KgWdoAIfZesAuoIQwMPQmEFYrw==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/ui/-/ui-6.4.19.tgz", + "integrity": "sha512-gFwdn5LA2U6oQ4bfUFLyHZnNasGQ01YVdwjbi+l6yjmnckBNtZfJoVTZ1rzGUbxSE9rK48InJRU+latTsr7xAg==", "dependencies": { "@emotion/core": "^10.1.1", - "@storybook/addons": "6.3.12", - "@storybook/api": "6.3.12", - "@storybook/channels": "6.3.12", - "@storybook/client-logger": "6.3.12", - "@storybook/components": "6.3.12", - "@storybook/core-events": "6.3.12", - "@storybook/router": "6.3.12", + "@storybook/addons": "6.4.19", + "@storybook/api": "6.4.19", + "@storybook/channels": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/components": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/router": "6.4.19", "@storybook/semver": "^7.3.2", - "@storybook/theming": "6.3.12", - "@types/markdown-to-jsx": "^6.11.3", + "@storybook/theming": "6.4.19", "copy-to-clipboard": "^3.3.1", "core-js": "^3.8.2", "core-js-pure": "^3.8.2", @@ -18856,8 +19392,8 @@ "emotion-theming": "^10.0.27", "fuse.js": "^3.6.1", "global": "^4.4.0", - "lodash": "^4.17.20", - "markdown-to-jsx": "^6.11.4", + "lodash": "^4.17.21", + "markdown-to-jsx": "^7.1.3", "memoizerific": "^1.11.3", "polished": "^4.0.5", "qs": "^6.10.0", @@ -18878,25 +19414,22 @@ } }, "node_modules/@storybook/react/node_modules/@storybook/core/node_modules/@storybook/core-client/node_modules/@storybook/ui/node_modules/@storybook/api": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.3.12.tgz", - "integrity": "sha512-LScRXUeCWEW/OP+jiooNMQICVdusv7azTmULxtm72fhkXFRiQs2CdRNTiqNg46JLLC9z95f1W+pGK66X6HiiQA==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.4.19.tgz", + "integrity": "sha512-aDvea+NpQCBjpNp9YidO1Pr7fzzCp15FSdkG+2ihGQfv5raxrN+IIJnGUXecpe71nvlYiB+29UXBVK7AL0j51Q==", "dependencies": { - "@reach/router": "^1.3.4", - "@storybook/channels": "6.3.12", - "@storybook/client-logger": "6.3.12", - "@storybook/core-events": "6.3.12", - "@storybook/csf": "0.0.1", - "@storybook/router": "6.3.12", + "@storybook/channels": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/router": "6.4.19", "@storybook/semver": "^7.3.2", - "@storybook/theming": "6.3.12", - "@types/reach__router": "^1.3.7", + "@storybook/theming": "6.4.19", "core-js": "^3.8.2", "fast-deep-equal": "^3.1.3", "global": "^4.4.0", - "lodash": "^4.17.20", + "lodash": "^4.17.21", "memoizerific": "^1.11.3", - "qs": "^6.10.0", "regenerator-runtime": "^0.13.7", "store2": "^2.12.0", "telejson": "^5.3.2", @@ -18913,14 +19446,14 @@ } }, "node_modules/@storybook/react/node_modules/@storybook/core/node_modules/@storybook/core-client/node_modules/@storybook/ui/node_modules/@storybook/components": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/components/-/components-6.3.12.tgz", - "integrity": "sha512-kdQt8toUjynYAxDLrJzuG7YSNL6as1wJoyzNUaCfG06YPhvIAlKo7le9tS2mThVFN5e9nbKrW3N1V1sp6ypZXQ==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-6.4.19.tgz", + "integrity": "sha512-q/0V37YAJA7CNc+wSiiefeM9+3XVk8ixBNylY36QCGJgIeGQ5/79vPyUe6K4lLmsQwpmZsIq1s1Ad5+VbboeOA==", "dependencies": { "@popperjs/core": "^2.6.0", - "@storybook/client-logger": "6.3.12", - "@storybook/csf": "0.0.1", - "@storybook/theming": "6.3.12", + "@storybook/client-logger": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/theming": "6.4.19", "@types/color-convert": "^2.0.0", "@types/overlayscrollbars": "^1.12.0", "@types/react-syntax-highlighter": "11.0.5", @@ -18928,7 +19461,7 @@ "core-js": "^3.8.2", "fast-deep-equal": "^3.1.3", "global": "^4.4.0", - "lodash": "^4.17.20", + "lodash": "^4.17.21", "markdown-to-jsx": "^7.1.3", "memoizerific": "^1.11.3", "overlayscrollbars": "^1.13.1", @@ -18951,17 +19484,6 @@ "react-dom": "^16.8.0 || ^17.0.0" } }, - "node_modules/@storybook/react/node_modules/@storybook/core/node_modules/@storybook/core-client/node_modules/@storybook/ui/node_modules/@storybook/components/node_modules/markdown-to-jsx": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-7.1.3.tgz", - "integrity": "sha512-jtQ6VyT7rMT5tPV0g2EJakEnXLiPksnvlYtwQsVVZ611JsWGN8bQ1tVSDX4s6JllfEH6wmsYxNjTUAMrPmNA8w==", - "engines": { - "node": ">= 10" - }, - "peerDependencies": { - "react": ">= 0.14.0" - } - }, "node_modules/@storybook/react/node_modules/@storybook/core/node_modules/@storybook/core-client/node_modules/@storybook/ui/node_modules/@storybook/components/node_modules/react-syntax-highlighter": { "version": "13.5.3", "resolved": "https://registry.npmjs.org/react-syntax-highlighter/-/react-syntax-highlighter-13.5.3.tgz", @@ -18978,19 +19500,20 @@ } }, "node_modules/@storybook/react/node_modules/@storybook/core/node_modules/@storybook/core-client/node_modules/@storybook/ui/node_modules/@storybook/router": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.3.12.tgz", - "integrity": "sha512-G/pNGCnrJRetCwyEZulHPT+YOcqEj/vkPVDTUfii2qgqukup6K0cjwgd7IukAURnAnnzTi1gmgFuEKUi8GE/KA==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.4.19.tgz", + "integrity": "sha512-KWWwIzuyeEIWVezkCihwY2A76Il9tUNg0I410g9qT7NrEsKyqXGRYOijWub7c1GGyNjLqz0jtrrehtixMcJkuA==", "dependencies": { - "@reach/router": "^1.3.4", - "@storybook/client-logger": "6.3.12", - "@types/reach__router": "^1.3.7", + "@storybook/client-logger": "6.4.19", "core-js": "^3.8.2", "fast-deep-equal": "^3.1.3", "global": "^4.4.0", - "lodash": "^4.17.20", + "history": "5.0.0", + "lodash": "^4.17.21", "memoizerific": "^1.11.3", "qs": "^6.10.0", + "react-router": "^6.0.0", + "react-router-dom": "^6.0.0", "ts-dedent": "^2.0.0" }, "funding": { @@ -19002,15 +19525,55 @@ "react-dom": "^16.8.0 || ^17.0.0" } }, + "node_modules/@storybook/react/node_modules/@storybook/core/node_modules/@storybook/core-client/node_modules/@storybook/ui/node_modules/@storybook/router/node_modules/react-router": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.2.2.tgz", + "integrity": "sha512-/MbxyLzd7Q7amp4gDOGaYvXwhEojkJD5BtExkuKmj39VEE0m3l/zipf6h2WIB2jyAO0lI6NGETh4RDcktRm4AQ==", + "dependencies": { + "history": "^5.2.0" + }, + "peerDependencies": { + "react": ">=16.8" + } + }, + "node_modules/@storybook/react/node_modules/@storybook/core/node_modules/@storybook/core-client/node_modules/@storybook/ui/node_modules/@storybook/router/node_modules/react-router-dom": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.2.2.tgz", + "integrity": "sha512-AtYEsAST7bDD4dLSQHDnk/qxWLJdad5t1HFa1qJyUrCeGgEuCSw0VB/27ARbF9Fi/W5598ujvJOm3ujUCVzuYQ==", + "dependencies": { + "history": "^5.2.0", + "react-router": "6.2.2" + }, + "peerDependencies": { + "react": ">=16.8", + "react-dom": ">=16.8" + } + }, + "node_modules/@storybook/react/node_modules/@storybook/core/node_modules/@storybook/core-client/node_modules/@storybook/ui/node_modules/@storybook/router/node_modules/react-router-dom/node_modules/history": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/history/-/history-5.3.0.tgz", + "integrity": "sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==", + "dependencies": { + "@babel/runtime": "^7.7.6" + } + }, + "node_modules/@storybook/react/node_modules/@storybook/core/node_modules/@storybook/core-client/node_modules/@storybook/ui/node_modules/@storybook/router/node_modules/react-router/node_modules/history": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/history/-/history-5.3.0.tgz", + "integrity": "sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==", + "dependencies": { + "@babel/runtime": "^7.7.6" + } + }, "node_modules/@storybook/react/node_modules/@storybook/core/node_modules/@storybook/core-client/node_modules/@storybook/ui/node_modules/@storybook/theming": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.3.12.tgz", - "integrity": "sha512-wOJdTEa/VFyFB2UyoqyYGaZdym6EN7RALuQOAMT6zHA282FBmKw8nL5DETHEbctpnHdcrMC/391teK4nNSrdOA==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.4.19.tgz", + "integrity": "sha512-V4pWmTvAxmbHR6B3jA4hPkaxZPyExHvCToy7b76DpUTpuHihijNDMAn85KhOQYIeL9q14zP/aiz899tOHsOidg==", "dependencies": { "@emotion/core": "^10.1.1", "@emotion/is-prop-valid": "^0.8.6", "@emotion/styled": "^10.0.27", - "@storybook/client-logger": "6.3.12", + "@storybook/client-logger": "6.4.19", "core-js": "^3.8.2", "deep-object-diff": "^1.1.0", "emotion-theming": "^10.0.27", @@ -19030,11 +19593,11 @@ } }, "node_modules/@storybook/react/node_modules/@storybook/core/node_modules/@storybook/core-client/node_modules/@storybook/ui/node_modules/@storybook/theming/node_modules/@emotion/styled": { - "version": "10.0.27", - "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-10.0.27.tgz", - "integrity": "sha512-iK/8Sh7+NLJzyp9a5+vIQIXTYxfT4yB/OJbjzQanB2RZpvmzBQOHZWhpAMZWYEKRNNbsD6WfBw5sVWkb6WzS/Q==", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-10.3.0.tgz", + "integrity": "sha512-GgcUpXBBEU5ido+/p/mCT2/Xx+Oqmp9JzQRuC+a4lYM4i4LBBn/dWvc0rQ19N9ObA8/T4NWMrPNe79kMBDJqoQ==", "dependencies": { - "@emotion/styled-base": "^10.0.27", + "@emotion/styled-base": "^10.3.0", "babel-plugin-emotion": "^10.0.27" }, "peerDependencies": { @@ -19042,6 +19605,21 @@ "react": ">=16.3.0" } }, + "node_modules/@storybook/react/node_modules/@storybook/core/node_modules/@storybook/core-client/node_modules/@storybook/ui/node_modules/@storybook/theming/node_modules/@emotion/styled/node_modules/@emotion/styled-base": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@emotion/styled-base/-/styled-base-10.3.0.tgz", + "integrity": "sha512-PBRqsVKR7QRNkmfH78hTSSwHWcwDpecH9W6heujWAcyp2wdz/64PP73s7fWS1dIPm8/Exc8JAzYS8dEWXjv60w==", + "dependencies": { + "@babel/runtime": "^7.5.5", + "@emotion/is-prop-valid": "0.8.8", + "@emotion/serialize": "^0.11.15", + "@emotion/utils": "0.11.3" + }, + "peerDependencies": { + "@emotion/core": "^10.0.28", + "react": ">=16.3.0" + } + }, "node_modules/@storybook/react/node_modules/@storybook/core/node_modules/@storybook/core-client/node_modules/@storybook/ui/node_modules/downshift": { "version": "6.1.7", "resolved": "https://registry.npmjs.org/downshift/-/downshift-6.1.7.tgz", @@ -19057,25 +19635,10 @@ "react": ">=16.12.0" } }, - "node_modules/@storybook/react/node_modules/@storybook/core/node_modules/@storybook/core-client/node_modules/@storybook/ui/node_modules/markdown-to-jsx": { - "version": "6.11.4", - "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-6.11.4.tgz", - "integrity": "sha512-3lRCD5Sh+tfA52iGgfs/XZiw33f7fFX9Bn55aNnVNUd2GzLDkOWyKYYD8Yju2B1Vn+feiEdgJs8T6Tg0xNokPw==", - "dependencies": { - "prop-types": "^15.6.2", - "unquote": "^1.1.0" - }, - "engines": { - "node": ">= 4" - }, - "peerDependencies": { - "react": ">= 0.14.0" - } - }, "node_modules/@storybook/react/node_modules/@storybook/core/node_modules/@storybook/core-client/node_modules/@storybook/ui/node_modules/react-helmet-async": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/react-helmet-async/-/react-helmet-async-1.1.2.tgz", - "integrity": "sha512-LTTzDDkyIleT/JJ6T/uqx7Y8qi1EuPPSiJawQY/nHHz0h7SPDT6HxP1YDDQx/fzcVxCqpWEEMS3QdrSrNkJYhg==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/react-helmet-async/-/react-helmet-async-1.2.3.tgz", + "integrity": "sha512-mCk2silF53Tq/YaYdkl2sB+/tDoPnaxN7dFS/6ZLJb/rhUY2EWGI5Xj2b4jHppScMqY45MbgPSwTxDchKpZ5Kw==", "dependencies": { "@babel/runtime": "^7.12.5", "invariant": "^2.2.4", @@ -19089,52 +19652,60 @@ } }, "node_modules/@storybook/react/node_modules/@storybook/core/node_modules/@storybook/core-server": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/core-server/-/core-server-6.3.12.tgz", - "integrity": "sha512-T/Mdyi1FVkUycdyOnhXvoo3d9nYXLQFkmaJkltxBFLzAePAJUSgAsPL9odNC3+p8Nr2/UDsDzvu/Ow0IF0mzLQ==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/core-server/-/core-server-6.4.19.tgz", + "integrity": "sha512-bKsUB9f7hl5ya2JXxpIrErmbDQjoH39FVbzYZWjMo4t/b7+Xyi6vYadwyWcqlpUQmis09ZaSMv8L/Tw0TuwLAA==", "dependencies": { "@discoveryjs/json-ext": "^0.5.3", - "@storybook/builder-webpack4": "6.3.12", - "@storybook/core-client": "6.3.12", - "@storybook/core-common": "6.3.12", - "@storybook/csf-tools": "6.3.12", - "@storybook/manager-webpack4": "6.3.12", - "@storybook/node-logger": "6.3.12", + "@storybook/builder-webpack4": "6.4.19", + "@storybook/core-client": "6.4.19", + "@storybook/core-common": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/csf-tools": "6.4.19", + "@storybook/manager-webpack4": "6.4.19", + "@storybook/node-logger": "6.4.19", "@storybook/semver": "^7.3.2", + "@storybook/store": "6.4.19", "@types/node": "^14.0.10", "@types/node-fetch": "^2.5.7", "@types/pretty-hrtime": "^1.0.0", "@types/webpack": "^4.41.26", "better-opn": "^2.1.1", - "boxen": "^4.2.0", + "boxen": "^5.1.2", "chalk": "^4.1.0", - "cli-table3": "0.6.0", + "cli-table3": "^0.6.1", "commander": "^6.2.1", "compression": "^1.7.4", "core-js": "^3.8.2", - "cpy": "^8.1.1", + "cpy": "^8.1.2", "detect-port": "^1.3.0", "express": "^4.17.1", "file-system-cache": "^1.0.5", "fs-extra": "^9.0.1", "globby": "^11.0.2", "ip": "^1.1.5", + "lodash": "^4.17.21", "node-fetch": "^2.6.1", "pretty-hrtime": "^1.0.3", "prompts": "^2.4.0", "regenerator-runtime": "^0.13.7", "serve-favicon": "^2.5.0", + "slash": "^3.0.0", + "telejson": "^5.3.3", "ts-dedent": "^2.0.0", "util-deprecate": "^1.0.2", - "webpack": "4" + "watchpack": "^2.2.0", + "webpack": "4", + "ws": "^8.2.3" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "@storybook/builder-webpack5": "6.3.12", - "@storybook/manager-webpack5": "6.3.12", + "@storybook/builder-webpack5": "6.4.19", + "@storybook/manager-webpack5": "6.4.19", "react": "^16.8.0 || ^17.0.0", "react-dom": "^16.8.0 || ^17.0.0" }, @@ -19151,9 +19722,9 @@ } }, "node_modules/@storybook/react/node_modules/@storybook/core/node_modules/@storybook/core-server/node_modules/@storybook/builder-webpack4": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/builder-webpack4/-/builder-webpack4-6.3.12.tgz", - "integrity": "sha512-Dlm5Fc1svqpFDnVPZdAaEBiM/IDZHMV3RfEGbUTY/ZC0q8b/Ug1czzp/w0aTIjOFRuBDcG6IcplikaqHL8CJLg==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/builder-webpack4/-/builder-webpack4-6.4.19.tgz", + "integrity": "sha512-wxA6SMH11duc9D53aeVVBwrVRemFIoxHp/dOugkkg6ZZFAb4ZmWzf/ENc3vQIZdZpfNRi7IZIZEOfoHc994cmw==", "dependencies": { "@babel/core": "^7.12.10", "@babel/plugin-proposal-class-properties": "^7.12.1", @@ -19176,34 +19747,34 @@ "@babel/preset-env": "^7.12.11", "@babel/preset-react": "^7.12.10", "@babel/preset-typescript": "^7.12.7", - "@storybook/addons": "6.3.12", - "@storybook/api": "6.3.12", - "@storybook/channel-postmessage": "6.3.12", - "@storybook/channels": "6.3.12", - "@storybook/client-api": "6.3.12", - "@storybook/client-logger": "6.3.12", - "@storybook/components": "6.3.12", - "@storybook/core-common": "6.3.12", - "@storybook/core-events": "6.3.12", - "@storybook/node-logger": "6.3.12", - "@storybook/router": "6.3.12", + "@storybook/addons": "6.4.19", + "@storybook/api": "6.4.19", + "@storybook/channel-postmessage": "6.4.19", + "@storybook/channels": "6.4.19", + "@storybook/client-api": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/components": "6.4.19", + "@storybook/core-common": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/node-logger": "6.4.19", + "@storybook/preview-web": "6.4.19", + "@storybook/router": "6.4.19", "@storybook/semver": "^7.3.2", - "@storybook/theming": "6.3.12", - "@storybook/ui": "6.3.12", + "@storybook/store": "6.4.19", + "@storybook/theming": "6.4.19", + "@storybook/ui": "6.4.19", "@types/node": "^14.0.10", "@types/webpack": "^4.41.26", "autoprefixer": "^9.8.6", - "babel-loader": "^8.2.2", + "babel-loader": "^8.0.0", "babel-plugin-macros": "^2.8.0", "babel-plugin-polyfill-corejs3": "^0.1.0", "case-sensitive-paths-webpack-plugin": "^2.3.0", "core-js": "^3.8.2", "css-loader": "^3.6.0", - "dotenv-webpack": "^1.8.0", "file-loader": "^6.2.0", "find-up": "^5.0.0", "fork-ts-checker-webpack-plugin": "^4.1.6", - "fs-extra": "^9.0.1", "glob": "^7.1.6", "glob-promise": "^3.4.0", "global": "^4.4.0", @@ -19213,7 +19784,6 @@ "postcss-flexbugs-fixes": "^4.2.1", "postcss-loader": "^4.2.0", "raw-loader": "^4.0.2", - "react-dev-utils": "^11.0.3", "stable": "^0.1.8", "style-loader": "^1.3.0", "terser-webpack-plugin": "^4.2.3", @@ -19223,7 +19793,7 @@ "webpack": "4", "webpack-dev-middleware": "^3.7.3", "webpack-filter-warnings-plugin": "^1.2.1", - "webpack-hot-middleware": "^2.25.0", + "webpack-hot-middleware": "^2.25.1", "webpack-virtual-modules": "^0.2.2" }, "funding": { @@ -19241,25 +19811,22 @@ } }, "node_modules/@storybook/react/node_modules/@storybook/core/node_modules/@storybook/core-server/node_modules/@storybook/builder-webpack4/node_modules/@storybook/api": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.3.12.tgz", - "integrity": "sha512-LScRXUeCWEW/OP+jiooNMQICVdusv7azTmULxtm72fhkXFRiQs2CdRNTiqNg46JLLC9z95f1W+pGK66X6HiiQA==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.4.19.tgz", + "integrity": "sha512-aDvea+NpQCBjpNp9YidO1Pr7fzzCp15FSdkG+2ihGQfv5raxrN+IIJnGUXecpe71nvlYiB+29UXBVK7AL0j51Q==", "dependencies": { - "@reach/router": "^1.3.4", - "@storybook/channels": "6.3.12", - "@storybook/client-logger": "6.3.12", - "@storybook/core-events": "6.3.12", - "@storybook/csf": "0.0.1", - "@storybook/router": "6.3.12", + "@storybook/channels": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/router": "6.4.19", "@storybook/semver": "^7.3.2", - "@storybook/theming": "6.3.12", - "@types/reach__router": "^1.3.7", + "@storybook/theming": "6.4.19", "core-js": "^3.8.2", "fast-deep-equal": "^3.1.3", "global": "^4.4.0", - "lodash": "^4.17.20", + "lodash": "^4.17.21", "memoizerific": "^1.11.3", - "qs": "^6.10.0", "regenerator-runtime": "^0.13.7", "store2": "^2.12.0", "telejson": "^5.3.2", @@ -19276,14 +19843,14 @@ } }, "node_modules/@storybook/react/node_modules/@storybook/core/node_modules/@storybook/core-server/node_modules/@storybook/builder-webpack4/node_modules/@storybook/components": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/components/-/components-6.3.12.tgz", - "integrity": "sha512-kdQt8toUjynYAxDLrJzuG7YSNL6as1wJoyzNUaCfG06YPhvIAlKo7le9tS2mThVFN5e9nbKrW3N1V1sp6ypZXQ==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-6.4.19.tgz", + "integrity": "sha512-q/0V37YAJA7CNc+wSiiefeM9+3XVk8ixBNylY36QCGJgIeGQ5/79vPyUe6K4lLmsQwpmZsIq1s1Ad5+VbboeOA==", "dependencies": { "@popperjs/core": "^2.6.0", - "@storybook/client-logger": "6.3.12", - "@storybook/csf": "0.0.1", - "@storybook/theming": "6.3.12", + "@storybook/client-logger": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/theming": "6.4.19", "@types/color-convert": "^2.0.0", "@types/overlayscrollbars": "^1.12.0", "@types/react-syntax-highlighter": "11.0.5", @@ -19291,7 +19858,7 @@ "core-js": "^3.8.2", "fast-deep-equal": "^3.1.3", "global": "^4.4.0", - "lodash": "^4.17.20", + "lodash": "^4.17.21", "markdown-to-jsx": "^7.1.3", "memoizerific": "^1.11.3", "overlayscrollbars": "^1.13.1", @@ -19329,20 +19896,52 @@ "react": ">= 0.14.0" } }, + "node_modules/@storybook/react/node_modules/@storybook/core/node_modules/@storybook/core-server/node_modules/@storybook/builder-webpack4/node_modules/@storybook/preview-web": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/preview-web/-/preview-web-6.4.19.tgz", + "integrity": "sha512-jqltoBv5j7lvnxEfV9w8dLX9ASWGuvgz97yg8Yo5FqkftEwrHJenyvMGcTgDJKJPorF+wiz/9aIqnmd3LCAcZQ==", + "dependencies": { + "@storybook/addons": "6.4.19", + "@storybook/channel-postmessage": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/store": "6.4.19", + "ansi-to-html": "^0.6.11", + "core-js": "^3.8.2", + "global": "^4.4.0", + "lodash": "^4.17.21", + "qs": "^6.10.0", + "regenerator-runtime": "^0.13.7", + "synchronous-promise": "^2.0.15", + "ts-dedent": "^2.0.0", + "unfetch": "^4.2.0", + "util-deprecate": "^1.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0", + "react-dom": "^16.8.0 || ^17.0.0" + } + }, "node_modules/@storybook/react/node_modules/@storybook/core/node_modules/@storybook/core-server/node_modules/@storybook/builder-webpack4/node_modules/@storybook/router": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.3.12.tgz", - "integrity": "sha512-G/pNGCnrJRetCwyEZulHPT+YOcqEj/vkPVDTUfii2qgqukup6K0cjwgd7IukAURnAnnzTi1gmgFuEKUi8GE/KA==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.4.19.tgz", + "integrity": "sha512-KWWwIzuyeEIWVezkCihwY2A76Il9tUNg0I410g9qT7NrEsKyqXGRYOijWub7c1GGyNjLqz0jtrrehtixMcJkuA==", "dependencies": { - "@reach/router": "^1.3.4", - "@storybook/client-logger": "6.3.12", - "@types/reach__router": "^1.3.7", + "@storybook/client-logger": "6.4.19", "core-js": "^3.8.2", "fast-deep-equal": "^3.1.3", "global": "^4.4.0", - "lodash": "^4.17.20", + "history": "5.0.0", + "lodash": "^4.17.21", "memoizerific": "^1.11.3", "qs": "^6.10.0", + "react-router": "^6.0.0", + "react-router-dom": "^6.0.0", "ts-dedent": "^2.0.0" }, "funding": { @@ -19354,15 +19953,55 @@ "react-dom": "^16.8.0 || ^17.0.0" } }, + "node_modules/@storybook/react/node_modules/@storybook/core/node_modules/@storybook/core-server/node_modules/@storybook/builder-webpack4/node_modules/@storybook/router/node_modules/react-router": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.2.2.tgz", + "integrity": "sha512-/MbxyLzd7Q7amp4gDOGaYvXwhEojkJD5BtExkuKmj39VEE0m3l/zipf6h2WIB2jyAO0lI6NGETh4RDcktRm4AQ==", + "dependencies": { + "history": "^5.2.0" + }, + "peerDependencies": { + "react": ">=16.8" + } + }, + "node_modules/@storybook/react/node_modules/@storybook/core/node_modules/@storybook/core-server/node_modules/@storybook/builder-webpack4/node_modules/@storybook/router/node_modules/react-router-dom": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.2.2.tgz", + "integrity": "sha512-AtYEsAST7bDD4dLSQHDnk/qxWLJdad5t1HFa1qJyUrCeGgEuCSw0VB/27ARbF9Fi/W5598ujvJOm3ujUCVzuYQ==", + "dependencies": { + "history": "^5.2.0", + "react-router": "6.2.2" + }, + "peerDependencies": { + "react": ">=16.8", + "react-dom": ">=16.8" + } + }, + "node_modules/@storybook/react/node_modules/@storybook/core/node_modules/@storybook/core-server/node_modules/@storybook/builder-webpack4/node_modules/@storybook/router/node_modules/react-router-dom/node_modules/history": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/history/-/history-5.3.0.tgz", + "integrity": "sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==", + "dependencies": { + "@babel/runtime": "^7.7.6" + } + }, + "node_modules/@storybook/react/node_modules/@storybook/core/node_modules/@storybook/core-server/node_modules/@storybook/builder-webpack4/node_modules/@storybook/router/node_modules/react-router/node_modules/history": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/history/-/history-5.3.0.tgz", + "integrity": "sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==", + "dependencies": { + "@babel/runtime": "^7.7.6" + } + }, "node_modules/@storybook/react/node_modules/@storybook/core/node_modules/@storybook/core-server/node_modules/@storybook/builder-webpack4/node_modules/@storybook/theming": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.3.12.tgz", - "integrity": "sha512-wOJdTEa/VFyFB2UyoqyYGaZdym6EN7RALuQOAMT6zHA282FBmKw8nL5DETHEbctpnHdcrMC/391teK4nNSrdOA==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.4.19.tgz", + "integrity": "sha512-V4pWmTvAxmbHR6B3jA4hPkaxZPyExHvCToy7b76DpUTpuHihijNDMAn85KhOQYIeL9q14zP/aiz899tOHsOidg==", "dependencies": { "@emotion/core": "^10.1.1", "@emotion/is-prop-valid": "^0.8.6", "@emotion/styled": "^10.0.27", - "@storybook/client-logger": "6.3.12", + "@storybook/client-logger": "6.4.19", "core-js": "^3.8.2", "deep-object-diff": "^1.1.0", "emotion-theming": "^10.0.27", @@ -19382,11 +20021,11 @@ } }, "node_modules/@storybook/react/node_modules/@storybook/core/node_modules/@storybook/core-server/node_modules/@storybook/builder-webpack4/node_modules/@storybook/theming/node_modules/@emotion/styled": { - "version": "10.0.27", - "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-10.0.27.tgz", - "integrity": "sha512-iK/8Sh7+NLJzyp9a5+vIQIXTYxfT4yB/OJbjzQanB2RZpvmzBQOHZWhpAMZWYEKRNNbsD6WfBw5sVWkb6WzS/Q==", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-10.3.0.tgz", + "integrity": "sha512-GgcUpXBBEU5ido+/p/mCT2/Xx+Oqmp9JzQRuC+a4lYM4i4LBBn/dWvc0rQ19N9ObA8/T4NWMrPNe79kMBDJqoQ==", "dependencies": { - "@emotion/styled-base": "^10.0.27", + "@emotion/styled-base": "^10.3.0", "babel-plugin-emotion": "^10.0.27" }, "peerDependencies": { @@ -19394,22 +20033,36 @@ "react": ">=16.3.0" } }, + "node_modules/@storybook/react/node_modules/@storybook/core/node_modules/@storybook/core-server/node_modules/@storybook/builder-webpack4/node_modules/@storybook/theming/node_modules/@emotion/styled/node_modules/@emotion/styled-base": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@emotion/styled-base/-/styled-base-10.3.0.tgz", + "integrity": "sha512-PBRqsVKR7QRNkmfH78hTSSwHWcwDpecH9W6heujWAcyp2wdz/64PP73s7fWS1dIPm8/Exc8JAzYS8dEWXjv60w==", + "dependencies": { + "@babel/runtime": "^7.5.5", + "@emotion/is-prop-valid": "0.8.8", + "@emotion/serialize": "^0.11.15", + "@emotion/utils": "0.11.3" + }, + "peerDependencies": { + "@emotion/core": "^10.0.28", + "react": ">=16.3.0" + } + }, "node_modules/@storybook/react/node_modules/@storybook/core/node_modules/@storybook/core-server/node_modules/@storybook/builder-webpack4/node_modules/@storybook/ui": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/ui/-/ui-6.3.12.tgz", - "integrity": "sha512-PC2yEz4JMfarq7rUFbeA3hCA+31p5es7YPEtxLRvRwIZhtL0P4zQUfHpotb3KgWdoAIfZesAuoIQwMPQmEFYrw==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/ui/-/ui-6.4.19.tgz", + "integrity": "sha512-gFwdn5LA2U6oQ4bfUFLyHZnNasGQ01YVdwjbi+l6yjmnckBNtZfJoVTZ1rzGUbxSE9rK48InJRU+latTsr7xAg==", "dependencies": { "@emotion/core": "^10.1.1", - "@storybook/addons": "6.3.12", - "@storybook/api": "6.3.12", - "@storybook/channels": "6.3.12", - "@storybook/client-logger": "6.3.12", - "@storybook/components": "6.3.12", - "@storybook/core-events": "6.3.12", - "@storybook/router": "6.3.12", + "@storybook/addons": "6.4.19", + "@storybook/api": "6.4.19", + "@storybook/channels": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/components": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/router": "6.4.19", "@storybook/semver": "^7.3.2", - "@storybook/theming": "6.3.12", - "@types/markdown-to-jsx": "^6.11.3", + "@storybook/theming": "6.4.19", "copy-to-clipboard": "^3.3.1", "core-js": "^3.8.2", "core-js-pure": "^3.8.2", @@ -19417,8 +20070,8 @@ "emotion-theming": "^10.0.27", "fuse.js": "^3.6.1", "global": "^4.4.0", - "lodash": "^4.17.20", - "markdown-to-jsx": "^6.11.4", + "lodash": "^4.17.21", + "markdown-to-jsx": "^7.1.3", "memoizerific": "^1.11.3", "polished": "^4.0.5", "qs": "^6.10.0", @@ -19453,25 +20106,10 @@ "react": ">=16.12.0" } }, - "node_modules/@storybook/react/node_modules/@storybook/core/node_modules/@storybook/core-server/node_modules/@storybook/builder-webpack4/node_modules/@storybook/ui/node_modules/markdown-to-jsx": { - "version": "6.11.4", - "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-6.11.4.tgz", - "integrity": "sha512-3lRCD5Sh+tfA52iGgfs/XZiw33f7fFX9Bn55aNnVNUd2GzLDkOWyKYYD8Yju2B1Vn+feiEdgJs8T6Tg0xNokPw==", - "dependencies": { - "prop-types": "^15.6.2", - "unquote": "^1.1.0" - }, - "engines": { - "node": ">= 4" - }, - "peerDependencies": { - "react": ">= 0.14.0" - } - }, "node_modules/@storybook/react/node_modules/@storybook/core/node_modules/@storybook/core-server/node_modules/@storybook/builder-webpack4/node_modules/@storybook/ui/node_modules/react-helmet-async": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/react-helmet-async/-/react-helmet-async-1.1.2.tgz", - "integrity": "sha512-LTTzDDkyIleT/JJ6T/uqx7Y8qi1EuPPSiJawQY/nHHz0h7SPDT6HxP1YDDQx/fzcVxCqpWEEMS3QdrSrNkJYhg==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/react-helmet-async/-/react-helmet-async-1.2.3.tgz", + "integrity": "sha512-mCk2silF53Tq/YaYdkl2sB+/tDoPnaxN7dFS/6ZLJb/rhUY2EWGI5Xj2b4jHppScMqY45MbgPSwTxDchKpZ5Kw==", "dependencies": { "@babel/runtime": "^7.12.5", "invariant": "^2.2.4", @@ -19485,27 +20123,26 @@ } }, "node_modules/@storybook/react/node_modules/@storybook/core/node_modules/@storybook/core-server/node_modules/@storybook/manager-webpack4": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/manager-webpack4/-/manager-webpack4-6.3.12.tgz", - "integrity": "sha512-OkPYNrHXg2yZfKmEfTokP6iKx4OLTr0gdI5yehi/bLEuQCSHeruxBc70Dxm1GBk1Mrf821wD9WqMXNDjY5Qtug==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/manager-webpack4/-/manager-webpack4-6.4.19.tgz", + "integrity": "sha512-R8ugZjTYqXvlc6gDOcw909L65sIleOmIJLZR+N6/H85MivGXHu39jOwONqB7tVACufRty4FNecn8tEiQL2SAKA==", "dependencies": { "@babel/core": "^7.12.10", "@babel/plugin-transform-template-literals": "^7.12.1", "@babel/preset-react": "^7.12.10", - "@storybook/addons": "6.3.12", - "@storybook/core-client": "6.3.12", - "@storybook/core-common": "6.3.12", - "@storybook/node-logger": "6.3.12", - "@storybook/theming": "6.3.12", - "@storybook/ui": "6.3.12", + "@storybook/addons": "6.4.19", + "@storybook/core-client": "6.4.19", + "@storybook/core-common": "6.4.19", + "@storybook/node-logger": "6.4.19", + "@storybook/theming": "6.4.19", + "@storybook/ui": "6.4.19", "@types/node": "^14.0.10", "@types/webpack": "^4.41.26", - "babel-loader": "^8.2.2", + "babel-loader": "^8.0.0", "case-sensitive-paths-webpack-plugin": "^2.3.0", "chalk": "^4.1.0", "core-js": "^3.8.2", "css-loader": "^3.6.0", - "dotenv-webpack": "^1.8.0", "express": "^4.17.1", "file-loader": "^6.2.0", "file-system-cache": "^1.0.5", @@ -19542,14 +20179,14 @@ } }, "node_modules/@storybook/react/node_modules/@storybook/core/node_modules/@storybook/core-server/node_modules/@storybook/manager-webpack4/node_modules/@storybook/theming": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.3.12.tgz", - "integrity": "sha512-wOJdTEa/VFyFB2UyoqyYGaZdym6EN7RALuQOAMT6zHA282FBmKw8nL5DETHEbctpnHdcrMC/391teK4nNSrdOA==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.4.19.tgz", + "integrity": "sha512-V4pWmTvAxmbHR6B3jA4hPkaxZPyExHvCToy7b76DpUTpuHihijNDMAn85KhOQYIeL9q14zP/aiz899tOHsOidg==", "dependencies": { "@emotion/core": "^10.1.1", "@emotion/is-prop-valid": "^0.8.6", "@emotion/styled": "^10.0.27", - "@storybook/client-logger": "6.3.12", + "@storybook/client-logger": "6.4.19", "core-js": "^3.8.2", "deep-object-diff": "^1.1.0", "emotion-theming": "^10.0.27", @@ -19569,11 +20206,11 @@ } }, "node_modules/@storybook/react/node_modules/@storybook/core/node_modules/@storybook/core-server/node_modules/@storybook/manager-webpack4/node_modules/@storybook/theming/node_modules/@emotion/styled": { - "version": "10.0.27", - "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-10.0.27.tgz", - "integrity": "sha512-iK/8Sh7+NLJzyp9a5+vIQIXTYxfT4yB/OJbjzQanB2RZpvmzBQOHZWhpAMZWYEKRNNbsD6WfBw5sVWkb6WzS/Q==", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-10.3.0.tgz", + "integrity": "sha512-GgcUpXBBEU5ido+/p/mCT2/Xx+Oqmp9JzQRuC+a4lYM4i4LBBn/dWvc0rQ19N9ObA8/T4NWMrPNe79kMBDJqoQ==", "dependencies": { - "@emotion/styled-base": "^10.0.27", + "@emotion/styled-base": "^10.3.0", "babel-plugin-emotion": "^10.0.27" }, "peerDependencies": { @@ -19581,22 +20218,36 @@ "react": ">=16.3.0" } }, + "node_modules/@storybook/react/node_modules/@storybook/core/node_modules/@storybook/core-server/node_modules/@storybook/manager-webpack4/node_modules/@storybook/theming/node_modules/@emotion/styled/node_modules/@emotion/styled-base": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@emotion/styled-base/-/styled-base-10.3.0.tgz", + "integrity": "sha512-PBRqsVKR7QRNkmfH78hTSSwHWcwDpecH9W6heujWAcyp2wdz/64PP73s7fWS1dIPm8/Exc8JAzYS8dEWXjv60w==", + "dependencies": { + "@babel/runtime": "^7.5.5", + "@emotion/is-prop-valid": "0.8.8", + "@emotion/serialize": "^0.11.15", + "@emotion/utils": "0.11.3" + }, + "peerDependencies": { + "@emotion/core": "^10.0.28", + "react": ">=16.3.0" + } + }, "node_modules/@storybook/react/node_modules/@storybook/core/node_modules/@storybook/core-server/node_modules/@storybook/manager-webpack4/node_modules/@storybook/ui": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/ui/-/ui-6.3.12.tgz", - "integrity": "sha512-PC2yEz4JMfarq7rUFbeA3hCA+31p5es7YPEtxLRvRwIZhtL0P4zQUfHpotb3KgWdoAIfZesAuoIQwMPQmEFYrw==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/ui/-/ui-6.4.19.tgz", + "integrity": "sha512-gFwdn5LA2U6oQ4bfUFLyHZnNasGQ01YVdwjbi+l6yjmnckBNtZfJoVTZ1rzGUbxSE9rK48InJRU+latTsr7xAg==", "dependencies": { "@emotion/core": "^10.1.1", - "@storybook/addons": "6.3.12", - "@storybook/api": "6.3.12", - "@storybook/channels": "6.3.12", - "@storybook/client-logger": "6.3.12", - "@storybook/components": "6.3.12", - "@storybook/core-events": "6.3.12", - "@storybook/router": "6.3.12", + "@storybook/addons": "6.4.19", + "@storybook/api": "6.4.19", + "@storybook/channels": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/components": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/router": "6.4.19", "@storybook/semver": "^7.3.2", - "@storybook/theming": "6.3.12", - "@types/markdown-to-jsx": "^6.11.3", + "@storybook/theming": "6.4.19", "copy-to-clipboard": "^3.3.1", "core-js": "^3.8.2", "core-js-pure": "^3.8.2", @@ -19604,8 +20255,8 @@ "emotion-theming": "^10.0.27", "fuse.js": "^3.6.1", "global": "^4.4.0", - "lodash": "^4.17.20", - "markdown-to-jsx": "^6.11.4", + "lodash": "^4.17.21", + "markdown-to-jsx": "^7.1.3", "memoizerific": "^1.11.3", "polished": "^4.0.5", "qs": "^6.10.0", @@ -19626,25 +20277,22 @@ } }, "node_modules/@storybook/react/node_modules/@storybook/core/node_modules/@storybook/core-server/node_modules/@storybook/manager-webpack4/node_modules/@storybook/ui/node_modules/@storybook/api": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.3.12.tgz", - "integrity": "sha512-LScRXUeCWEW/OP+jiooNMQICVdusv7azTmULxtm72fhkXFRiQs2CdRNTiqNg46JLLC9z95f1W+pGK66X6HiiQA==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.4.19.tgz", + "integrity": "sha512-aDvea+NpQCBjpNp9YidO1Pr7fzzCp15FSdkG+2ihGQfv5raxrN+IIJnGUXecpe71nvlYiB+29UXBVK7AL0j51Q==", "dependencies": { - "@reach/router": "^1.3.4", - "@storybook/channels": "6.3.12", - "@storybook/client-logger": "6.3.12", - "@storybook/core-events": "6.3.12", - "@storybook/csf": "0.0.1", - "@storybook/router": "6.3.12", + "@storybook/channels": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/router": "6.4.19", "@storybook/semver": "^7.3.2", - "@storybook/theming": "6.3.12", - "@types/reach__router": "^1.3.7", + "@storybook/theming": "6.4.19", "core-js": "^3.8.2", "fast-deep-equal": "^3.1.3", "global": "^4.4.0", - "lodash": "^4.17.20", + "lodash": "^4.17.21", "memoizerific": "^1.11.3", - "qs": "^6.10.0", "regenerator-runtime": "^0.13.7", "store2": "^2.12.0", "telejson": "^5.3.2", @@ -19661,14 +20309,14 @@ } }, "node_modules/@storybook/react/node_modules/@storybook/core/node_modules/@storybook/core-server/node_modules/@storybook/manager-webpack4/node_modules/@storybook/ui/node_modules/@storybook/components": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/components/-/components-6.3.12.tgz", - "integrity": "sha512-kdQt8toUjynYAxDLrJzuG7YSNL6as1wJoyzNUaCfG06YPhvIAlKo7le9tS2mThVFN5e9nbKrW3N1V1sp6ypZXQ==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-6.4.19.tgz", + "integrity": "sha512-q/0V37YAJA7CNc+wSiiefeM9+3XVk8ixBNylY36QCGJgIeGQ5/79vPyUe6K4lLmsQwpmZsIq1s1Ad5+VbboeOA==", "dependencies": { "@popperjs/core": "^2.6.0", - "@storybook/client-logger": "6.3.12", - "@storybook/csf": "0.0.1", - "@storybook/theming": "6.3.12", + "@storybook/client-logger": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/theming": "6.4.19", "@types/color-convert": "^2.0.0", "@types/overlayscrollbars": "^1.12.0", "@types/react-syntax-highlighter": "11.0.5", @@ -19676,7 +20324,7 @@ "core-js": "^3.8.2", "fast-deep-equal": "^3.1.3", "global": "^4.4.0", - "lodash": "^4.17.20", + "lodash": "^4.17.21", "markdown-to-jsx": "^7.1.3", "memoizerific": "^1.11.3", "overlayscrollbars": "^1.13.1", @@ -19699,17 +20347,6 @@ "react-dom": "^16.8.0 || ^17.0.0" } }, - "node_modules/@storybook/react/node_modules/@storybook/core/node_modules/@storybook/core-server/node_modules/@storybook/manager-webpack4/node_modules/@storybook/ui/node_modules/@storybook/components/node_modules/markdown-to-jsx": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-7.1.3.tgz", - "integrity": "sha512-jtQ6VyT7rMT5tPV0g2EJakEnXLiPksnvlYtwQsVVZ611JsWGN8bQ1tVSDX4s6JllfEH6wmsYxNjTUAMrPmNA8w==", - "engines": { - "node": ">= 10" - }, - "peerDependencies": { - "react": ">= 0.14.0" - } - }, "node_modules/@storybook/react/node_modules/@storybook/core/node_modules/@storybook/core-server/node_modules/@storybook/manager-webpack4/node_modules/@storybook/ui/node_modules/@storybook/components/node_modules/react-syntax-highlighter": { "version": "13.5.3", "resolved": "https://registry.npmjs.org/react-syntax-highlighter/-/react-syntax-highlighter-13.5.3.tgz", @@ -19726,19 +20363,20 @@ } }, "node_modules/@storybook/react/node_modules/@storybook/core/node_modules/@storybook/core-server/node_modules/@storybook/manager-webpack4/node_modules/@storybook/ui/node_modules/@storybook/router": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.3.12.tgz", - "integrity": "sha512-G/pNGCnrJRetCwyEZulHPT+YOcqEj/vkPVDTUfii2qgqukup6K0cjwgd7IukAURnAnnzTi1gmgFuEKUi8GE/KA==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.4.19.tgz", + "integrity": "sha512-KWWwIzuyeEIWVezkCihwY2A76Il9tUNg0I410g9qT7NrEsKyqXGRYOijWub7c1GGyNjLqz0jtrrehtixMcJkuA==", "dependencies": { - "@reach/router": "^1.3.4", - "@storybook/client-logger": "6.3.12", - "@types/reach__router": "^1.3.7", + "@storybook/client-logger": "6.4.19", "core-js": "^3.8.2", "fast-deep-equal": "^3.1.3", "global": "^4.4.0", - "lodash": "^4.17.20", + "history": "5.0.0", + "lodash": "^4.17.21", "memoizerific": "^1.11.3", "qs": "^6.10.0", + "react-router": "^6.0.0", + "react-router-dom": "^6.0.0", "ts-dedent": "^2.0.0" }, "funding": { @@ -19750,6 +20388,46 @@ "react-dom": "^16.8.0 || ^17.0.0" } }, + "node_modules/@storybook/react/node_modules/@storybook/core/node_modules/@storybook/core-server/node_modules/@storybook/manager-webpack4/node_modules/@storybook/ui/node_modules/@storybook/router/node_modules/react-router": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.2.2.tgz", + "integrity": "sha512-/MbxyLzd7Q7amp4gDOGaYvXwhEojkJD5BtExkuKmj39VEE0m3l/zipf6h2WIB2jyAO0lI6NGETh4RDcktRm4AQ==", + "dependencies": { + "history": "^5.2.0" + }, + "peerDependencies": { + "react": ">=16.8" + } + }, + "node_modules/@storybook/react/node_modules/@storybook/core/node_modules/@storybook/core-server/node_modules/@storybook/manager-webpack4/node_modules/@storybook/ui/node_modules/@storybook/router/node_modules/react-router-dom": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.2.2.tgz", + "integrity": "sha512-AtYEsAST7bDD4dLSQHDnk/qxWLJdad5t1HFa1qJyUrCeGgEuCSw0VB/27ARbF9Fi/W5598ujvJOm3ujUCVzuYQ==", + "dependencies": { + "history": "^5.2.0", + "react-router": "6.2.2" + }, + "peerDependencies": { + "react": ">=16.8", + "react-dom": ">=16.8" + } + }, + "node_modules/@storybook/react/node_modules/@storybook/core/node_modules/@storybook/core-server/node_modules/@storybook/manager-webpack4/node_modules/@storybook/ui/node_modules/@storybook/router/node_modules/react-router-dom/node_modules/history": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/history/-/history-5.3.0.tgz", + "integrity": "sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==", + "dependencies": { + "@babel/runtime": "^7.7.6" + } + }, + "node_modules/@storybook/react/node_modules/@storybook/core/node_modules/@storybook/core-server/node_modules/@storybook/manager-webpack4/node_modules/@storybook/ui/node_modules/@storybook/router/node_modules/react-router/node_modules/history": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/history/-/history-5.3.0.tgz", + "integrity": "sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==", + "dependencies": { + "@babel/runtime": "^7.7.6" + } + }, "node_modules/@storybook/react/node_modules/@storybook/core/node_modules/@storybook/core-server/node_modules/@storybook/manager-webpack4/node_modules/@storybook/ui/node_modules/downshift": { "version": "6.1.7", "resolved": "https://registry.npmjs.org/downshift/-/downshift-6.1.7.tgz", @@ -19765,25 +20443,10 @@ "react": ">=16.12.0" } }, - "node_modules/@storybook/react/node_modules/@storybook/core/node_modules/@storybook/core-server/node_modules/@storybook/manager-webpack4/node_modules/@storybook/ui/node_modules/markdown-to-jsx": { - "version": "6.11.4", - "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-6.11.4.tgz", - "integrity": "sha512-3lRCD5Sh+tfA52iGgfs/XZiw33f7fFX9Bn55aNnVNUd2GzLDkOWyKYYD8Yju2B1Vn+feiEdgJs8T6Tg0xNokPw==", - "dependencies": { - "prop-types": "^15.6.2", - "unquote": "^1.1.0" - }, - "engines": { - "node": ">= 4" - }, - "peerDependencies": { - "react": ">= 0.14.0" - } - }, "node_modules/@storybook/react/node_modules/@storybook/core/node_modules/@storybook/core-server/node_modules/@storybook/manager-webpack4/node_modules/@storybook/ui/node_modules/react-helmet-async": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/react-helmet-async/-/react-helmet-async-1.1.2.tgz", - "integrity": "sha512-LTTzDDkyIleT/JJ6T/uqx7Y8qi1EuPPSiJawQY/nHHz0h7SPDT6HxP1YDDQx/fzcVxCqpWEEMS3QdrSrNkJYhg==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/react-helmet-async/-/react-helmet-async-1.2.3.tgz", + "integrity": "sha512-mCk2silF53Tq/YaYdkl2sB+/tDoPnaxN7dFS/6ZLJb/rhUY2EWGI5Xj2b4jHppScMqY45MbgPSwTxDchKpZ5Kw==", "dependencies": { "@babel/runtime": "^7.12.5", "invariant": "^2.2.4", @@ -19796,6 +20459,17 @@ "react-dom": "^16.6.0 || ^17.0.0" } }, + "node_modules/@storybook/react/node_modules/@storybook/core/node_modules/acorn": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", + "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/@storybook/react/node_modules/@storybook/core/node_modules/babel-plugin-macros": { "version": "2.8.0", "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz", @@ -19977,23 +20651,6 @@ "node": ">=8" } }, - "node_modules/@storybook/react/node_modules/@storybook/core/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/@storybook/react/node_modules/@storybook/core/node_modules/serialize-javascript": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", @@ -20002,11 +20659,20 @@ "randombytes": "^2.1.0" } }, + "node_modules/@storybook/react/node_modules/@storybook/core/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/@storybook/react/node_modules/@storybook/core/node_modules/terser": { - "version": "5.9.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.9.0.tgz", - "integrity": "sha512-h5hxa23sCdpzcye/7b8YqbE5OwKca/ni0RQz1uRX3tGh8haaGHqcuSqbGRybuAKNdntZ0mDgFNXPJ48xQ2RXKQ==", + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.12.1.tgz", + "integrity": "sha512-NXbs+7nisos5E+yXwAD+y7zrcTkMqb0dEJxIGtSKPdCBzopf7ni4odPul2aechpV7EXNvOudYOX2bb5tln1jbQ==", "dependencies": { + "acorn": "^8.5.0", "commander": "^2.20.0", "source-map": "~0.7.2", "source-map-support": "~0.5.20" @@ -20057,10 +20723,60 @@ "node": ">= 8" } }, + "node_modules/@storybook/react/node_modules/@storybook/core/node_modules/watchpack": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz", + "integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==", + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@storybook/react/node_modules/@storybook/csf": { + "version": "0.0.2--canary.87bc651.0", + "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.0.2--canary.87bc651.0.tgz", + "integrity": "sha512-ajk1Uxa+rBpFQHKrCcTmJyQBXZ5slfwHVEaKlkuFaW77it8RgbPJp/ccna3sgoi8oZ7FkkOyvv1Ve4SmwFqRqw==", + "dependencies": { + "lodash": "^4.17.15" + } + }, + "node_modules/@storybook/react/node_modules/@storybook/store": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/store/-/store-6.4.19.tgz", + "integrity": "sha512-N9/ZjemRHGfT3InPIbqQqc6snkcfnf3Qh9oOr0smbfaVGJol//KOX65kzzobtzFcid0WxtTDZ3HmgFVH+GvuhQ==", + "dependencies": { + "@storybook/addons": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "core-js": "^3.8.2", + "fast-deep-equal": "^3.1.3", + "global": "^4.4.0", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "regenerator-runtime": "^0.13.7", + "slash": "^3.0.0", + "stable": "^0.1.8", + "synchronous-promise": "^2.0.15", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0", + "react-dom": "^16.8.0 || ^17.0.0" + } + }, "node_modules/@storybook/react/node_modules/@types/node": { - "version": "14.17.33", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.33.tgz", - "integrity": "sha512-noEeJ06zbn3lOh4gqe2v7NMGS33jrulfNqYFDjjEbhpDEHR5VTxgYNQSBqBlJIsBJW3uEYDgD6kvMnrrhGzq8g==" + "version": "14.18.12", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.12.tgz", + "integrity": "sha512-q4jlIR71hUpWTnGhXWcakgkZeHa3CCjcQcnuzU8M891BAWA2jHiziiWEPEkdS5pFsz7H9HJiy8BrK7tBRNrY7A==" }, "node_modules/@storybook/react/node_modules/acorn": { "version": "6.4.2", @@ -20098,17 +20814,6 @@ "npm": ">=6" } }, - "node_modules/@storybook/react/node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@storybook/react/node_modules/chownr": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", @@ -20185,42 +20890,6 @@ "semver": "bin/semver.js" } }, - "node_modules/@storybook/react/node_modules/dotenv-webpack": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/dotenv-webpack/-/dotenv-webpack-1.8.0.tgz", - "integrity": "sha512-o8pq6NLBehtrqA8Jv8jFQNtG9nhRtVqmoD4yWbgUyoU3+9WBlPe+c2EAiaJok9RB28QvrWvdWLZGeTT5aATDMg==", - "dependencies": { - "dotenv-defaults": "^1.0.2" - }, - "peerDependencies": { - "webpack": "^1 || ^2 || ^3 || ^4" - } - }, - "node_modules/@storybook/react/node_modules/enhanced-resolve": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", - "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", - "dependencies": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.5.0", - "tapable": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@storybook/react/node_modules/enhanced-resolve/node_modules/memory-fs": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", - "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", - "dependencies": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - }, - "engines": { - "node": ">=4.3.0 <5.0.0 || >=5.10" - } - }, "node_modules/@storybook/react/node_modules/eslint-scope": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", @@ -20265,34 +20934,6 @@ "node": ">=8.9.0" } }, - "node_modules/@storybook/react/node_modules/file-loader/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/@storybook/react/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==", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@storybook/react/node_modules/find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", @@ -20330,23 +20971,12 @@ "node": ">=6" } }, - "node_modules/@storybook/react/node_modules/globby": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", - "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", + "node_modules/@storybook/react/node_modules/history": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/history/-/history-5.0.0.tgz", + "integrity": "sha512-3NyRMKIiFSJmIPdq7FxkNMJkQ7ZEtVblOQ38VtKaA0zZMW1Eo6Q6W8oDKEflr1kNNTItSnk4JMCO1deeSgbLLg==", "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "@babel/runtime": "^7.7.6" } }, "node_modules/@storybook/react/node_modules/html-webpack-plugin": { @@ -20382,22 +21012,6 @@ "node": ">= 6" } }, - "node_modules/@storybook/react/node_modules/ignore": { - "version": "5.1.9", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.9.tgz", - "integrity": "sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ==", - "engines": { - "node": ">= 4" - } - }, - "node_modules/@storybook/react/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==", - "engines": { - "node": ">=0.12.0" - } - }, "node_modules/@storybook/react/node_modules/json5": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", @@ -20467,15 +21081,6 @@ "semver": "bin/semver.js" } }, - "node_modules/@storybook/react/node_modules/memory-fs": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", - "dependencies": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - }, "node_modules/@storybook/react/node_modules/mime": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", @@ -20576,11 +21181,11 @@ } }, "node_modules/@storybook/react/node_modules/polished": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/polished/-/polished-4.1.3.tgz", - "integrity": "sha512-ocPAcVBUOryJEKe0z2KLd1l9EBa1r5mSwlKpExmrLzsnIzJo4axsoU9O2BjOTkDGDT4mZ0WFE5XKTlR3nLnZOA==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/polished/-/polished-4.1.4.tgz", + "integrity": "sha512-Nq5Mbza+Auo7N3sQb1QMFaQiDO+4UexWuSGR7Cjb4Sw11SZIJcrrFtiZ+L0jT9MBsUsxDboHVASbCLbE1rnECg==", "dependencies": { - "@babel/runtime": "^7.14.0" + "@babel/runtime": "^7.16.7" }, "engines": { "node": ">=10" @@ -20638,23 +21243,6 @@ "node": ">=8.9.0" } }, - "node_modules/@storybook/react/node_modules/postcss-loader/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/@storybook/react/node_modules/postcss-loader/node_modules/semver": { "version": "7.3.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", @@ -20715,6 +21303,14 @@ "postcss": "^7.0.6" } }, + "node_modules/@storybook/react/node_modules/postcss/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/@storybook/react/node_modules/pretty-error": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.2.tgz", @@ -20725,9 +21321,9 @@ } }, "node_modules/@storybook/react/node_modules/qs": { - "version": "6.10.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz", - "integrity": "sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg==", + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", "dependencies": { "side-channel": "^1.0.4" }, @@ -20770,23 +21366,6 @@ "node": ">=8.9.0" } }, - "node_modules/@storybook/react/node_modules/raw-loader/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/@storybook/react/node_modules/react-is": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", @@ -20800,19 +21379,6 @@ "node": ">=8" } }, - "node_modules/@storybook/react/node_modules/schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dependencies": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - }, - "engines": { - "node": ">= 4" - } - }, "node_modules/@storybook/react/node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -20822,11 +21388,11 @@ } }, "node_modules/@storybook/react/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==", + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", "engines": { - "node": ">=0.10.0" + "node": ">= 8" } }, "node_modules/@storybook/react/node_modules/ssri": { @@ -20900,14 +21466,6 @@ "node": ">=4" } }, - "node_modules/@storybook/react/node_modules/tapable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", - "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", - "engines": { - "node": ">=6" - } - }, "node_modules/@storybook/react/node_modules/terser-webpack-plugin": { "version": "1.4.5", "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz", @@ -20930,15 +21488,25 @@ "webpack": "^4.0.0" } }, - "node_modules/@storybook/react/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==", + "node_modules/@storybook/react/node_modules/terser-webpack-plugin/node_modules/schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", "dependencies": { - "is-number": "^7.0.0" + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" }, "engines": { - "node": ">=8.0" + "node": ">= 4" + } + }, + "node_modules/@storybook/react/node_modules/terser-webpack-plugin/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/@storybook/react/node_modules/tslib": { @@ -20946,6 +21514,58 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" }, + "node_modules/@storybook/react/node_modules/type-fest": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.12.0.tgz", + "integrity": "sha512-Qe5GRT+n/4GoqCNGGVp5Snapg1Omq3V7irBJB3EaKsp7HWDo5Gv2d/67gfNyV+d5EXD+x/RF5l1h4yJ7qNkcGA==", + "optional": true, + "peer": true, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@storybook/react/node_modules/url-loader": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-4.1.1.tgz", + "integrity": "sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==", + "dependencies": { + "loader-utils": "^2.0.0", + "mime-types": "^2.1.27", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "file-loader": "*", + "webpack": "^4.0.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "file-loader": { + "optional": true + } + } + }, + "node_modules/@storybook/react/node_modules/url-loader/node_modules/loader-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", + "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, "node_modules/@storybook/react/node_modules/webpack": { "version": "4.46.0", "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.46.0.tgz", @@ -21032,6 +21652,47 @@ "source-map": "~0.6.1" } }, + "node_modules/@storybook/react/node_modules/webpack-sources/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/@storybook/react/node_modules/webpack/node_modules/schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dependencies": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/@storybook/react/node_modules/ws": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", + "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, "node_modules/@storybook/react/node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", @@ -21613,7 +22274,6 @@ "version": "7.29.4", "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-7.29.4.tgz", "integrity": "sha512-CtrJRiSYEfbtNGtEsd78mk1n1v2TUbeABlNIcOCJdDfkN5/JTOwQEbbQpoSRxGqzcWPgStMvJ4mNolSuBRv1NA==", - "dev": true, "dependencies": { "@babel/code-frame": "^7.10.4", "@babel/runtime": "^7.12.5", @@ -21632,7 +22292,6 @@ "version": "5.11.6", "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.11.6.tgz", "integrity": "sha512-cVZyUNRWwUKI0++yepYpYX7uhrP398I+tGz4zOlLVlUYnZS+Svuxv4fwLeCIy7TnBYKXUaOlQr3vopxL8ZfEnA==", - "dev": true, "dependencies": { "@babel/runtime": "^7.9.2", "@types/testing-library__jest-dom": "^5.9.1", @@ -21653,7 +22312,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -21666,7 +22324,6 @@ "version": "11.2.0", "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-11.2.0.tgz", "integrity": "sha512-90xKYJzskZ7q/AoSuWraQL4EGZlr75uZvDt3nrO4M+rugN02zjO45tmOBq/JBOgDiMIL1tkhHioKXjJsVaSINA==", - "dev": true, "dependencies": { "@babel/runtime": "^7.12.5", "@testing-library/dom": "^7.27.1" @@ -21683,7 +22340,6 @@ "version": "5.0.3", "resolved": "https://registry.npmjs.org/@testing-library/react-hooks/-/react-hooks-5.0.3.tgz", "integrity": "sha512-UrnnRc5II7LMH14xsYNm/WRch/67cBafmrSQcyFh0v+UUmSf1uzfB7zn5jQXSettGwOSxJwdQUN7PgkT0w22Lg==", - "dev": true, "dependencies": { "@babel/runtime": "^7.12.5", "@types/react": ">=16.9.0", @@ -21710,7 +22366,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/react-error-boundary/-/react-error-boundary-3.1.0.tgz", "integrity": "sha512-lmPrdi5SLRJR+AeJkqdkGlW/CRkAUvZnETahK58J4xb5wpbfDngasEGu+w0T1iXEhVrYBJZeW+c4V1hILCnMWQ==", - "dev": true, "dependencies": { "@babel/runtime": "^7.12.5" }, @@ -21726,7 +22381,6 @@ "version": "12.7.0", "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-12.7.0.tgz", "integrity": "sha512-KzRM1KNDoW8pJ2HTenrUhTjV6wJMHvWAagDs8DDrYSWz6y4PN+K2jSvlm2bMHWNRk5LTJPo9jqIjNjJ3FlqXNw==", - "dev": true, "dependencies": { "@babel/runtime": "^7.12.5" }, @@ -21759,8 +22413,7 @@ "node_modules/@types/aria-query": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-4.2.0.tgz", - "integrity": "sha512-iIgQNzCm0v7QMhhe4Jjn9uRh+I6GoPmt03CbEtwx3ao8/EfoQcmgtqH4vQ5Db/lxiIGaWDv6nwvunuh0RyX0+A==", - "dev": true + "integrity": "sha512-iIgQNzCm0v7QMhhe4Jjn9uRh+I6GoPmt03CbEtwx3ao8/EfoQcmgtqH4vQ5Db/lxiIGaWDv6nwvunuh0RyX0+A==" }, "node_modules/@types/babel__core": { "version": "7.1.9", @@ -21803,11 +22456,6 @@ "@babel/types": "^7.3.0" } }, - "node_modules/@types/braces": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/braces/-/braces-3.0.1.tgz", - "integrity": "sha512-+euflG6ygo4bn0JHtn4pYqcXwRtLvElQ7/nnjDu7iYG56H0+OhCd7d6Ug0IE3WcFpZozBKW2+80FUbv5QGk5AQ==" - }, "node_modules/@types/cheerio": { "version": "0.22.21", "resolved": "https://registry.npmjs.org/@types/cheerio/-/cheerio-0.22.21.tgz", @@ -21987,11 +22635,6 @@ "@types/node": "*" } }, - "node_modules/@types/glob-base": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@types/glob-base/-/glob-base-0.3.0.tgz", - "integrity": "sha1-pYHWiDR+EOUN18F9byiAoQNUMZ0=" - }, "node_modules/@types/graceful-fs": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.3.tgz", @@ -22052,7 +22695,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", - "dev": true, "dependencies": { "@types/istanbul-lib-coverage": "*" } @@ -22071,7 +22713,6 @@ "version": "26.0.23", "resolved": "https://registry.npmjs.org/@types/jest/-/jest-26.0.23.tgz", "integrity": "sha512-ZHLmWMJ9jJ9PTiT58juykZpL7KjwJywFN3Rr2pTSkyQfydf/rk22yS7W8p5DaVUMQ2BQC7oYiU3FjbTM/mYrOA==", - "dev": true, "dependencies": { "jest-diff": "^26.0.0", "pretty-format": "^26.0.0" @@ -22122,14 +22763,6 @@ "@types/lodash": "*" } }, - "node_modules/@types/markdown-to-jsx": { - "version": "6.11.3", - "resolved": "https://registry.npmjs.org/@types/markdown-to-jsx/-/markdown-to-jsx-6.11.3.tgz", - "integrity": "sha512-30nFYpceM/ZEvhGiqWjm5quLUxNeld0HCzJEXMZZDpq53FPkS85mTwkWtCXzCqq8s5JYLgM5W392a02xn8Bdaw==", - "dependencies": { - "@types/react": "*" - } - }, "node_modules/@types/math-expression-evaluator": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/@types/math-expression-evaluator/-/math-expression-evaluator-1.2.1.tgz", @@ -22143,14 +22776,6 @@ "@types/unist": "*" } }, - "node_modules/@types/micromatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/micromatch/-/micromatch-4.0.2.tgz", - "integrity": "sha512-oqXqVb0ci19GtH0vOA/U2TmHTcRY9kuZl4mqUxe0QmJAlIW13kzhuK5pi1i9+ngav8FjpSb9FVS/GE00GLX1VA==", - "dependencies": { - "@types/braces": "*" - } - }, "node_modules/@types/minimatch": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", @@ -22168,9 +22793,9 @@ "integrity": "sha512-DBZCJbhII3r90XbQxI8Y9IjjiiOGlZ0Hr32omXIZvwwZ7p4DMMXGrKXVyPfuoBOri9XNtL0UK69jYIBIsRX3QQ==" }, "node_modules/@types/node-fetch": { - "version": "2.5.12", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.12.tgz", - "integrity": "sha512-MKgC4dlq4kKNa/mYrwpKfzQMB5X3ee5U6fSprkKpToBqBmX4nFZL9cW5jl6sWn+xpRJ7ypWh2yyqqr8UUCstSw==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-oMqjURCaxoSIsHSr1E47QHzbmzNR5rK8McHuNb11BOM9cHcIK3Avy0s/b2JlXHoQGTYS3NsvWzV1M0iK7l0wbA==", "dependencies": { "@types/node": "*", "form-data": "^3.0.0" @@ -22195,9 +22820,9 @@ "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==" }, "node_modules/@types/npmlog": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/@types/npmlog/-/npmlog-4.1.3.tgz", - "integrity": "sha512-1TcL7YDYCtnHmLhTWbum+IIwLlvpaHoEKS2KNIngEwLzwgDeHaebaEHHbQp8IqzNQ9IYiboLKUjAf7MZqG63+w==" + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@types/npmlog/-/npmlog-4.1.4.tgz", + "integrity": "sha512-WKG4gTr8przEZBiJ5r3s8ZIAoMXNbOgQ+j/d5O4X3x6kZJRLNvyUJuUK/KoG3+8BaOHPhp2m7WC6JKKeovDSzQ==" }, "node_modules/@types/overlayscrollbars": { "version": "1.12.1", @@ -22262,7 +22887,6 @@ "version": "16.9.8", "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-16.9.8.tgz", "integrity": "sha512-ykkPQ+5nFknnlU6lDd947WbQ6TE3NNzbQAkInC2EKY1qeYdTKp7onFusmYZb+ityzx2YviqT6BXSu+LyWWJwcA==", - "dev": true, "dependencies": { "@types/react": "*" } @@ -22377,7 +23001,6 @@ "version": "17.0.1", "resolved": "https://registry.npmjs.org/@types/react-test-renderer/-/react-test-renderer-17.0.1.tgz", "integrity": "sha512-3Fi2O6Zzq/f3QR9dRnlnHso9bMl7weKCviFmfF6B4LS1Uat6Hkm15k0ZAQuDz+UBq6B3+g+NM6IT2nr5QgPzCw==", - "dev": true, "dependencies": { "@types/react": "*" } @@ -22517,7 +23140,6 @@ "version": "5.9.5", "resolved": "https://registry.npmjs.org/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.9.5.tgz", "integrity": "sha512-ggn3ws+yRbOHog9GxnXiEZ/35Mow6YtPZpd7Z5mKDeZS/o7zx3yAle0ov/wjhVB5QT4N2Dt+GNoGCdqkBGCajQ==", - "dev": true, "dependencies": { "@types/jest": "*" } @@ -22632,7 +23254,6 @@ "version": "15.0.13", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", - "dev": true, "dependencies": { "@types/yargs-parser": "*" } @@ -22640,8 +23261,7 @@ "node_modules/@types/yargs-parser": { "version": "15.0.0", "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-15.0.0.tgz", - "integrity": "sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw==", - "dev": true + "integrity": "sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw==" }, "node_modules/@types/yauzl": { "version": "2.9.2", @@ -22781,26 +23401,6 @@ "node": ">=10" } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/globby": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", - "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", - "dev": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { "version": "5.1.9", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.9.tgz", @@ -22843,15 +23443,6 @@ "node": ">=10" } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", @@ -23009,35 +23600,6 @@ } } }, - "node_modules/@typescript-eslint/parser/node_modules/globby": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", - "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", - "dev": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@typescript-eslint/parser/node_modules/ignore": { - "version": "5.1.9", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.9.tgz", - "integrity": "sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, "node_modules/@typescript-eslint/parser/node_modules/lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -23071,15 +23633,6 @@ "node": ">=10" } }, - "node_modules/@typescript-eslint/parser/node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/@typescript-eslint/parser/node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", @@ -23200,35 +23753,6 @@ "node": ">=10" } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/globby": { - "version": "11.0.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.2.tgz", - "integrity": "sha512-2ZThXDvvV8fYFRVIxnrMQBipZQDr7MxKAmQK1vujaj9/7eF0efG7BPUKJ7jP7G5SLF37xKDXvO4S/KKLj/Z0og==", - "dev": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, "node_modules/@typescript-eslint/typescript-estree/node_modules/lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -23262,15 +23786,6 @@ "node": ">=10" } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/@typescript-eslint/typescript-estree/node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", @@ -24519,6 +25034,7 @@ "version": "1.1.7", "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", + "dev": true, "dependencies": { "delegates": "^1.0.0", "readable-stream": "^2.0.6" @@ -24536,7 +25052,6 @@ "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, "dependencies": { "@babel/runtime": "^7.10.2", "@babel/runtime-corejs3": "^7.10.2" @@ -24839,9 +25354,9 @@ "peer": true }, "node_modules/async-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", - "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", "optional": true }, "node_modules/async-limiter": { @@ -25741,9 +26256,9 @@ } }, "node_modules/binary-extensions": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.12.0.tgz", - "integrity": "sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", "optional": true, "engines": { "node": ">=0.10.0" @@ -25944,21 +26459,21 @@ "integrity": "sha512-9IdMmj2KjigRq6oWhmwv1W36pDuA4STQZ8q6YO9um+x07xgYNCD3Oou+WP/3L1HNz7iqythGet3/p4wvc8AAwQ==" }, "node_modules/boxen": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-4.2.0.tgz", - "integrity": "sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz", + "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==", "dependencies": { "ansi-align": "^3.0.0", - "camelcase": "^5.3.1", - "chalk": "^3.0.0", - "cli-boxes": "^2.2.0", - "string-width": "^4.1.0", - "term-size": "^2.1.0", - "type-fest": "^0.8.1", - "widest-line": "^3.1.0" + "camelcase": "^6.2.0", + "chalk": "^4.1.0", + "cli-boxes": "^2.2.1", + "string-width": "^4.2.2", + "type-fest": "^0.20.2", + "widest-line": "^3.1.0", + "wrap-ansi": "^7.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -25972,16 +26487,15 @@ "node": ">=8" } }, - "node_modules/boxen/node_modules/chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, + "node_modules/boxen/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/boxen/node_modules/is-fullwidth-code-point": { @@ -26016,6 +26530,33 @@ "node": ">=8" } }, + "node_modules/boxen/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==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/boxen/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/brace": { "version": "0.11.1", "resolved": "https://registry.npmjs.org/brace/-/brace-0.11.1.tgz", @@ -27509,18 +28050,17 @@ } }, "node_modules/cli-table3": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.0.tgz", - "integrity": "sha512-gnB85c3MGC7Nm9I/FkiasNBOKjOiO1RNuXXarQms37q4QMpWdlbBgD/VnOStA2faG1dpXMv31RFApjX1/QdgWQ==", + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.1.tgz", + "integrity": "sha512-w0q/enDHhPLq44ovMGdQeeDLvwxwavsJX7oQGYt/LrBlYsyaxyDnp6z3QzFut/6kLLKnlcUVJLrpB7KBfgG/RA==", "dependencies": { - "object-assign": "^4.1.0", "string-width": "^4.2.0" }, "engines": { "node": "10.* || >= 12.*" }, "optionalDependencies": { - "colors": "^1.1.2" + "colors": "1.4.0" } }, "node_modules/cli-table3/node_modules/ansi-regex": { @@ -27890,8 +28430,6 @@ "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, - "peer": true, "bin": { "color-support": "bin.js" } @@ -28041,6 +28579,11 @@ "dev": true, "peer": true }, + "node_modules/common-path-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", + "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==" + }, "node_modules/common-tags": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.0.tgz", @@ -28649,35 +29192,6 @@ "node": ">=10.13.0" } }, - "node_modules/copy-webpack-plugin/node_modules/globby": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", - "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", - "dev": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/copy-webpack-plugin/node_modules/ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, "node_modules/copy-webpack-plugin/node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -28711,15 +29225,6 @@ "randombytes": "^2.1.0" } }, - "node_modules/copy-webpack-plugin/node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/core-js": { "version": "3.18.1", "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.18.1.tgz", @@ -29135,7 +29640,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/css/-/css-3.0.0.tgz", "integrity": "sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==", - "dev": true, "dependencies": { "inherits": "^2.0.4", "source-map": "^0.6.1", @@ -30038,20 +30542,17 @@ "node_modules/css.escape": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", - "integrity": "sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s=", - "dev": true + "integrity": "sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s=" }, "node_modules/css/node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "node_modules/css/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==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -30060,7 +30561,6 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz", "integrity": "sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==", - "dev": true, "dependencies": { "atob": "^2.1.2", "decode-uri-component": "^0.2.0" @@ -31313,22 +31813,6 @@ "node": ">= 4.2.1" } }, - "node_modules/detect-port-alt": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.6.tgz", - "integrity": "sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==", - "dependencies": { - "address": "^1.0.1", - "debug": "^2.6.0" - }, - "bin": { - "detect": "bin/detect-port", - "detect-port": "bin/detect-port" - }, - "engines": { - "node": ">= 4.2.1" - } - }, "node_modules/dezalgo": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.3.tgz", @@ -31356,7 +31840,6 @@ "version": "26.6.2", "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz", "integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==", - "dev": true, "engines": { "node": ">= 10.14.2" } @@ -31457,8 +31940,7 @@ "node_modules/dom-accessibility-api": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.4.tgz", - "integrity": "sha512-TvrjBckDy2c6v6RLxPv5QXOnU+SmF9nBII5621Ve5fu6Z/BDrENurBEvlC1f44lKEUVqOpK4w9E5Idc5/EgkLQ==", - "dev": true + "integrity": "sha512-TvrjBckDy2c6v6RLxPv5QXOnU+SmF9nBII5621Ve5fu6Z/BDrENurBEvlC1f44lKEUVqOpK4w9E5Idc5/EgkLQ==" }, "node_modules/dom-align": { "version": "1.12.0", @@ -31599,22 +32081,6 @@ "node": ">=10" } }, - "node_modules/dotenv-defaults": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/dotenv-defaults/-/dotenv-defaults-1.1.1.tgz", - "integrity": "sha512-6fPRo9o/3MxKvmRZBD3oNFdxODdhJtIy1zcJeUSCs6HCy4tarUpd+G67UTU9tF6OWXeSPqsm4fPAB+2eY9Rt9Q==", - "dependencies": { - "dotenv": "^6.2.0" - } - }, - "node_modules/dotenv-defaults/node_modules/dotenv": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-6.2.0.tgz", - "integrity": "sha512-HygQCKUBSFl8wKQZBSemMywRWcEDNidvNbjGVyZu3nbZ8qq9ubiPoGLMdRDpfSrpkkm9BXYFkpKxxFX38o/76w==", - "engines": { - "node": ">=6" - } - }, "node_modules/dotenv-expand": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", @@ -31642,7 +32108,8 @@ "node_modules/duplexer": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", - "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==" + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "dev": true }, "node_modules/duplexer2": { "version": "0.1.4", @@ -31782,9 +32249,9 @@ } }, "node_modules/element-resize-detector": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/element-resize-detector/-/element-resize-detector-1.2.3.tgz", - "integrity": "sha512-+dhNzUgLpq9ol5tyhoG7YLoXL3ssjfFW+0gpszXPwRU6NjGr1fVHMEAF8fVzIiRJq57Nre0RFeIjJwI8Nh2NmQ==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/element-resize-detector/-/element-resize-detector-1.2.4.tgz", + "integrity": "sha512-Fl5Ftk6WwXE0wqCgNoseKWndjzZlDCwuPTcoVZfCP9R3EHQF8qUtr3YUPNETegRBOKqQKPW3n4kiIWngGi8tKg==", "dependencies": { "batch-processor": "1.0.0" } @@ -31955,6 +32422,31 @@ "objectorarray": "^1.0.5" } }, + "node_modules/enhanced-resolve": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", + "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", + "dependencies": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.5.0", + "tapable": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/enhanced-resolve/node_modules/memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "dependencies": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + }, + "engines": { + "node": ">=4.3.0 <5.0.0 || >=5.10" + } + }, "node_modules/enquirer": { "version": "2.3.6", "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", @@ -32308,9 +32800,9 @@ } }, "node_modules/error-stack-parser": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.0.6.tgz", - "integrity": "sha512-d51brTeqC+BHlwF0BhPtcYgF5nlzf9ZZ0ZIUQNZpc9ZB9qw5IJ2diTrBY9jlCJkTLITYPjmiX6OWCwH+fuyNgQ==", + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.0.7.tgz", + "integrity": "sha512-chLOW0ZGRf4s8raLrDxa5sdkvPec5YdvwbFnqJme4rk0rFajP8mPtrDL1+I+CwrQDCjswDA5sREX7jYQDQs9vA==", "dependencies": { "stackframe": "^1.1.1" } @@ -32406,9 +32898,9 @@ } }, "node_modules/es5-shim": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/es5-shim/-/es5-shim-4.6.2.tgz", - "integrity": "sha512-n0XTVMGps+Deyr38jtqKPR5F5hb9owYeRQcKJW39eFvzUk/u/9Ww315werRzbiNMnHCUw/YHDPBphTlEnzdi+A==", + "version": "4.6.5", + "resolved": "https://registry.npmjs.org/es5-shim/-/es5-shim-4.6.5.tgz", + "integrity": "sha512-vfQ4UAai8szn0sAubCy97xnZ4sJVDD1gt/Grn736hg8D7540wemIb1YPrYZSTqlM2H69EQX1or4HU/tSwRTI3w==", "engines": { "node": ">=0.4.0" } @@ -33147,6 +33639,10 @@ "node": ">=10" } }, + "node_modules/eslint-plugin-theme-colors": { + "resolved": "tools/eslint-plugin-theme-colors", + "link": true + }, "node_modules/eslint-scope": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", @@ -34291,77 +34787,6 @@ "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/file-loader": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.0.0.tgz", - "integrity": "sha512-/aMOAYEFXDdjG0wytpTL5YQLfZnnTmLNjn+AIrJ/6HVnTfDqLsVKUUwkDf4I4kgex36BvjuXEn/TX9B/1ESyqQ==", - "optional": true, - "peer": true, - "dependencies": { - "loader-utils": "^2.0.0", - "schema-utils": "^2.6.5" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/file-loader/node_modules/json5": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", - "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", - "optional": true, - "peer": true, - "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/file-loader/node_modules/loader-utils": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", - "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", - "optional": true, - "peer": true, - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - }, - "engines": { - "node": ">=8.9.0" - } - }, - "node_modules/file-loader/node_modules/schema-utils": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", - "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", - "optional": true, - "peer": true, - "dependencies": { - "@types/json-schema": "^7.0.4", - "ajv": "^6.12.2", - "ajv-keywords": "^3.4.1" - }, - "engines": { - "node": ">= 8.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, "node_modules/file-system-cache": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/file-system-cache/-/file-system-cache-1.0.5.tgz", @@ -34446,14 +34871,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/filesize": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/filesize/-/filesize-6.1.0.tgz", - "integrity": "sha512-LpCHtPQ3sFx67z+uh2HnSyWSLLu5Jxo21795uRDuar/EOuYWXib5EmPaGIBuSnRqH2IODiKA2k5re/K9OnN/Yg==", - "engines": { - "node": ">= 0.4.0" - } - }, "node_modules/fill-range": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", @@ -34472,7 +34889,6 @@ "version": "0.1.1", "resolved": "https://registry.npmjs.org/filter-console/-/filter-console-0.1.1.tgz", "integrity": "sha512-zrXoV1Uaz52DqPs+qEwNJWJFAWZpYJ47UNmpN9q4j+/EYsz85uV0DC9k8tRND5kYmoVzL0W+Y75q4Rg8sRJCdg==", - "dev": true, "engines": { "node": ">=8" } @@ -35146,14 +35562,6 @@ "node": ">=10" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/tapable": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.1.tgz", - "integrity": "sha512-9I2ydhj8Z9veORCw5PRm4u9uebCn0mcCa6scWoNcbZ6dAtoo2618u9UUzxgmsCOreJpqDDuv61LvwofW7hLcBA==", - "engines": { - "node": ">=6" - } - }, "node_modules/fork-ts-checker-webpack-plugin/node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", @@ -35335,6 +35743,7 @@ "version": "2.7.4", "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "dev": true, "dependencies": { "aproba": "^1.0.3", "console-control-strings": "^1.0.0", @@ -35350,6 +35759,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, "dependencies": { "number-is-nan": "^1.0.0" }, @@ -35361,6 +35771,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, "dependencies": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -36032,45 +36443,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/glob-base": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", - "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", - "dependencies": { - "glob-parent": "^2.0.0", - "is-glob": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/glob-base/node_modules/glob-parent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", - "dependencies": { - "is-glob": "^2.0.0" - } - }, - "node_modules/glob-base/node_modules/is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/glob-base/node_modules/is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dependencies": { - "is-extglob": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/glob-parent": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", @@ -36153,38 +36525,6 @@ "node": ">=10" } }, - "node_modules/global-modules": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", - "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", - "dependencies": { - "global-prefix": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/global-prefix": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", - "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", - "dependencies": { - "ini": "^1.3.5", - "kind-of": "^6.0.2", - "which": "^1.3.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/global-prefix/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==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", @@ -36208,15 +36548,15 @@ } }, "node_modules/globby": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.1.tgz", - "integrity": "sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ==", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dependencies": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", "slash": "^3.0.0" }, "engines": { @@ -36227,9 +36567,9 @@ } }, "node_modules/globby/node_modules/ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", "engines": { "node": ">= 4" } @@ -36320,26 +36660,6 @@ "resolved": "https://registry.npmjs.org/gud/-/gud-1.0.0.tgz", "integrity": "sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw==" }, - "node_modules/gzip-size": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-5.1.1.tgz", - "integrity": "sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA==", - "dependencies": { - "duplexer": "^0.1.1", - "pify": "^4.0.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/gzip-size/node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "engines": { - "node": ">=6" - } - }, "node_modules/h3-js": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/h3-js/-/h3-js-3.7.2.tgz", @@ -36368,7 +36688,6 @@ "version": "4.7.7", "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", - "dev": true, "dependencies": { "minimist": "^1.2.5", "neo-async": "^2.6.0", @@ -36389,7 +36708,6 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -38436,14 +38754,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-root": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz", - "integrity": "sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==", - "engines": { - "node": ">=6" - } - }, "node_modules/is-scoped": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-scoped/-/is-scoped-2.1.0.tgz", @@ -39190,7 +39500,6 @@ "version": "26.6.2", "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz", "integrity": "sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==", - "dev": true, "dependencies": { "chalk": "^4.0.0", "diff-sequences": "^26.6.2", @@ -40169,7 +40478,6 @@ "version": "26.3.0", "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==", - "dev": true, "engines": { "node": ">= 10.14.2" } @@ -42868,7 +43176,6 @@ "version": "1.4.4", "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.4.4.tgz", "integrity": "sha1-wNjq82BZ9wV5bh40SBHPTEmNOiY=", - "dev": true, "bin": { "lz-string": "bin/bin.js" } @@ -43400,35 +43707,6 @@ } } }, - "node_modules/mem-fs-editor/node_modules/globby": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", - "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", - "dev": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mem-fs-editor/node_modules/ignore": { - "version": "5.1.9", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.9.tgz", - "integrity": "sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, "node_modules/mem-fs-editor/node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -43438,15 +43716,6 @@ "node": ">=0.10.0" } }, - "node_modules/mem-fs-editor/node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/mem-fs/node_modules/@types/node": { "version": "15.14.9", "resolved": "https://registry.npmjs.org/@types/node/-/node-15.14.9.tgz", @@ -43487,6 +43756,15 @@ "map-or-similar": "^1.5.0" } }, + "node_modules/memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dependencies": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, "node_modules/meow": { "version": "8.1.2", "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", @@ -44380,14 +44658,6 @@ "dev": true, "optional": true }, - "node_modules/native-url": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/native-url/-/native-url-0.2.6.tgz", - "integrity": "sha512-k4bDC87WtgrdD362gZz6zoiXQrl40kYlBmpfmSjwRO1VU0V5ccwJTlxuE72F6m3V0vc1xOf6n3UCP9QyerRqmA==", - "dependencies": { - "querystring": "^0.2.0" - } - }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -44739,6 +45009,11 @@ "vm-browserify": "^1.0.1" } }, + "node_modules/node-libs-browser/node_modules/path-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==" + }, "node_modules/node-libs-browser/node_modules/punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", @@ -45296,6 +45571,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dev": true, "dependencies": { "are-we-there-yet": "~1.1.2", "console-control-strings": "~1.1.0", @@ -46351,9 +46627,10 @@ } }, "node_modules/path-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", - "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", + "devOptional": true }, "node_modules/path-dirname": { "version": "1.0.2", @@ -46972,7 +47249,6 @@ "version": "26.6.2", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", - "dev": true, "dependencies": { "@jest/types": "^26.6.2", "ansi-regex": "^5.0.0", @@ -46987,7 +47263,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true, "engines": { "node": ">=8" } @@ -46995,8 +47270,7 @@ "node_modules/pretty-format/node_modules/react-is": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "dev": true + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" }, "node_modules/pretty-hrtime": { "version": "1.0.3", @@ -48358,372 +48632,6 @@ "react": "^16.5.0" } }, - "node_modules/react-dev-utils": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-11.0.4.tgz", - "integrity": "sha512-dx0LvIGHcOPtKbeiSUM4jqpBl3TcY7CDjZdfOIcKeznE7BWr9dg0iPG90G5yfVQ+p/rGNMXdbfStvzQZEVEi4A==", - "dependencies": { - "@babel/code-frame": "7.10.4", - "address": "1.1.2", - "browserslist": "4.14.2", - "chalk": "2.4.2", - "cross-spawn": "7.0.3", - "detect-port-alt": "1.1.6", - "escape-string-regexp": "2.0.0", - "filesize": "6.1.0", - "find-up": "4.1.0", - "fork-ts-checker-webpack-plugin": "4.1.6", - "global-modules": "2.0.0", - "globby": "11.0.1", - "gzip-size": "5.1.1", - "immer": "8.0.1", - "is-root": "2.1.0", - "loader-utils": "2.0.0", - "open": "^7.0.2", - "pkg-up": "3.1.0", - "prompts": "2.4.0", - "react-error-overlay": "^6.0.9", - "recursive-readdir": "2.2.2", - "shell-quote": "1.7.2", - "strip-ansi": "6.0.0", - "text-table": "0.2.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/react-dev-utils/node_modules/@babel/code-frame": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", - "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", - "dependencies": { - "@babel/highlight": "^7.10.4" - } - }, - "node_modules/react-dev-utils/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==", - "engines": { - "node": ">=8" - } - }, - "node_modules/react-dev-utils/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==", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/react-dev-utils/node_modules/browserslist": { - "version": "4.14.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.14.2.tgz", - "integrity": "sha512-HI4lPveGKUR0x2StIz+2FXfDk9SfVMrxn6PLh1JeGUwcuoDkdKZebWiyLRJ68iIPDpMI4JLVDf7S7XzslgWOhw==", - "dependencies": { - "caniuse-lite": "^1.0.30001125", - "electron-to-chromium": "^1.3.564", - "escalade": "^3.0.2", - "node-releases": "^1.1.61" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - }, - "funding": { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - }, - "node_modules/react-dev-utils/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==", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/react-dev-utils/node_modules/chalk/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": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/react-dev-utils/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==", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/react-dev-utils/node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "engines": { - "node": ">=8" - } - }, - "node_modules/react-dev-utils/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==", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/react-dev-utils/node_modules/fork-ts-checker-webpack-plugin": { - "version": "4.1.6", - "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-4.1.6.tgz", - "integrity": "sha512-DUxuQaKoqfNne8iikd14SAkh5uw4+8vNifp6gmA73yYNS6ywLIWSLD/n/mBzHQRpW3J7rbATEakmiA8JvkTyZw==", - "dependencies": { - "@babel/code-frame": "^7.5.5", - "chalk": "^2.4.1", - "micromatch": "^3.1.10", - "minimatch": "^3.0.4", - "semver": "^5.6.0", - "tapable": "^1.0.0", - "worker-rpc": "^0.1.0" - }, - "engines": { - "node": ">=6.11.5", - "yarn": ">=1.0.0" - } - }, - "node_modules/react-dev-utils/node_modules/immer": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/immer/-/immer-8.0.1.tgz", - "integrity": "sha512-aqXhGP7//Gui2+UrEtvxZxSquQVXTpZ7KDxfCcKAF3Vysvw0CViVaW9RZ1j1xlIYqaaaipBoqdqeibkc18PNvA==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/immer" - } - }, - "node_modules/react-dev-utils/node_modules/json5": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", - "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", - "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/react-dev-utils/node_modules/loader-utils": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", - "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - }, - "engines": { - "node": ">=8.9.0" - } - }, - "node_modules/react-dev-utils/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==", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/react-dev-utils/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==", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/react-dev-utils/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==", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/react-dev-utils/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==", - "engines": { - "node": ">=6" - } - }, - "node_modules/react-dev-utils/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==", - "engines": { - "node": ">=8" - } - }, - "node_modules/react-dev-utils/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/react-dev-utils/node_modules/pkg-up": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", - "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", - "dependencies": { - "find-up": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/react-dev-utils/node_modules/pkg-up/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/react-dev-utils/node_modules/pkg-up/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/react-dev-utils/node_modules/pkg-up/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/react-dev-utils/node_modules/pkg-up/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "engines": { - "node": ">=4" - } - }, - "node_modules/react-dev-utils/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/react-dev-utils/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/react-dev-utils/node_modules/strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dependencies": { - "ansi-regex": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/react-dev-utils/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/react-dev-utils/node_modules/tapable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", - "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", - "engines": { - "node": ">=6" - } - }, - "node_modules/react-dev-utils/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/react-dnd": { "version": "11.1.3", "resolved": "https://registry.npmjs.org/react-dnd/-/react-dnd-11.1.3.tgz", @@ -48839,11 +48747,6 @@ "react": "^16.0.0-beta.1" } }, - "node_modules/react-error-overlay": { - "version": "6.0.9", - "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.9.tgz", - "integrity": "sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew==" - }, "node_modules/react-fast-compare": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.0.tgz", @@ -49208,9 +49111,9 @@ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, "node_modules/react-refresh": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.8.3.tgz", - "integrity": "sha512-X8jZHc7nCMjaCqoU+V2I0cOhNW+QMBwSUkeXnTi8IPe6zaRWfn60ZzvFDZqWPfmSJfjub7dDW1SP0jaHWLu/hg==", + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.11.0.tgz", + "integrity": "sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A==", "engines": { "node": ">=0.10.0" } @@ -49486,7 +49389,7 @@ "version": "16.9.0", "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-16.9.0.tgz", "integrity": "sha512-R62stB73qZyhrJo7wmCW9jgl/07ai+YzvouvCXIJLBkRlRqLx4j9RqcLEAfNfU3OxTGucqR2Whmn3/Aad6L3hQ==", - "dev": true, + "devOptional": true, "dependencies": { "object-assign": "^4.1.1", "prop-types": "^15.6.2", @@ -49501,7 +49404,7 @@ "version": "16.9.0", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.9.0.tgz", "integrity": "sha512-tJBzzzIgnnRfEm046qRcURvwQnZVXmuCbscxUO5RWrGTXpon2d4c8mI0D8WE6ydVIm29JiLB6+RslkIvym9Rjw==", - "dev": true + "devOptional": true }, "node_modules/react-textarea-autosize": { "version": "8.3.3", @@ -50028,22 +49931,10 @@ "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-1.2.0.tgz", "integrity": "sha1-qkSM8JhtVcxAdzsXF0t90GbLfPs=" }, - "node_modules/recursive-readdir": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.2.tgz", - "integrity": "sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg==", - "dependencies": { - "minimatch": "3.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, "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" @@ -50443,9 +50334,9 @@ } }, "node_modules/remark-mdx/node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dependencies": { "ms": "2.1.2" }, @@ -51287,7 +51178,7 @@ "version": "0.15.0", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.15.0.tgz", "integrity": "sha512-xAefmSfN6jqAa7Kuq7LIJY0bwAPG3xlCj0HMEBQk1lxYiDKZscY2xJ5U/61ZTrYbmNQbXa+gc7czPkVo11tnCg==", - "dev": true, + "devOptional": true, "dependencies": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1" @@ -51652,11 +51543,6 @@ "node": ">=0.10.0" } }, - "node_modules/shell-quote": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz", - "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==" - }, "node_modules/shelljs": { "version": "0.8.5", "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", @@ -52442,9 +52328,9 @@ } }, "node_modules/stackframe": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.2.0.tgz", - "integrity": "sha512-GrdeshiRmS1YLMYgzF16olf2jJ/IzxXY9lhKOskuVziubpTYcYqyOwYeJKzQkwy7uN0fYSsbsC4RQaXf9LCrYA==" + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.2.1.tgz", + "integrity": "sha512-h88QkzREN/hy8eRdyNhhsO7RSJ5oyTqxxmmn0dzBIMUclZsjpfmrsg81vp8mjjAs2vAZ72nyWxRUwSwmh0e4xg==" }, "node_modules/state-toggle": { "version": "1.0.3", @@ -52592,23 +52478,6 @@ "react-dom": "^16.2.0 || ^17.0.0" } }, - "node_modules/storybook-addon-outline": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/storybook-addon-outline/-/storybook-addon-outline-1.4.1.tgz", - "integrity": "sha512-Qvv9X86CoONbi+kYY78zQcTGmCgFaewYnOVR6WL7aOFJoW7TrLiIc/O4hH5X9PsEPZFqjfXEPUPENWVUQim6yw==", - "dev": true, - "dependencies": { - "@storybook/addons": "^6.3.0", - "@storybook/api": "^6.3.0", - "@storybook/components": "^6.3.0", - "@storybook/core-events": "^6.3.0", - "ts-dedent": "^2.1.1" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0", - "react-dom": "^16.8.0 || ^17.0.0" - } - }, "node_modules/storybook-addon-paddings": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/storybook-addon-paddings/-/storybook-addon-paddings-4.2.1.tgz", @@ -53220,6 +53089,11 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/synchronous-promise": { + "version": "2.0.15", + "resolved": "https://registry.npmjs.org/synchronous-promise/-/synchronous-promise-2.0.15.tgz", + "integrity": "sha512-k8uzYIkIVwmT+TcglpdN50pS2y1BDcUnBPK9iJeGu0Pl1lOI8pD6wtzgw91Pjpe+RxtTncw32tLxs/R0yNL2Mg==" + }, "node_modules/table": { "version": "6.7.3", "resolved": "https://registry.npmjs.org/table/-/table-6.7.3.tgz", @@ -53341,6 +53215,14 @@ "minimist": "^1.1.0" } }, + "node_modules/tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "engines": { + "node": ">=6" + } + }, "node_modules/tar": { "version": "6.1.11", "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", @@ -53465,17 +53347,6 @@ "semver": "bin/semver.js" } }, - "node_modules/term-size": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz", - "integrity": "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/terminal-link": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", @@ -54269,7 +54140,6 @@ "version": "3.14.5", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.14.5.tgz", "integrity": "sha512-qZukoSxOG0urUTvjc2ERMTcAy+BiFh3weWAkeurLwjrCba73poHmG3E36XEjd/JGukMzwTL7uCxZiAexj8ppvQ==", - "dev": true, "optional": true, "bin": { "uglifyjs": "bin/uglifyjs" @@ -54544,7 +54414,8 @@ "node_modules/unquote": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", - "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=" + "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=", + "dev": true }, "node_modules/unset-value": { "version": "1.0.0", @@ -54646,59 +54517,6 @@ "querystring": "0.2.0" } }, - "node_modules/url-loader": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-4.1.1.tgz", - "integrity": "sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==", - "dependencies": { - "loader-utils": "^2.0.0", - "mime-types": "^2.1.27", - "schema-utils": "^3.0.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "file-loader": "*", - "webpack": "^4.0.0 || ^5.0.0" - }, - "peerDependenciesMeta": { - "file-loader": { - "optional": true - } - } - }, - "node_modules/url-loader/node_modules/json5": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", - "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", - "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/url-loader/node_modules/loader-utils": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", - "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - }, - "engines": { - "node": ">=8.9.0" - } - }, "node_modules/url-parse": { "version": "1.5.7", "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.7.tgz", @@ -55117,7 +54935,7 @@ "version": "2.1.8", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", - "deprecated": "Chokidar 2 will break on node v14+. Upgrade to chokidar 3 with 15x less dependencies.", + "deprecated": "Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies", "optional": true, "dependencies": { "anymatch": "^2.0.0", @@ -55605,35 +55423,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/webpack-dev-server/node_modules/globby": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", - "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", - "devOptional": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/webpack-dev-server/node_modules/ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", - "devOptional": true, - "engines": { - "node": ">= 4" - } - }, "node_modules/webpack-dev-server/node_modules/is-wsl": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", @@ -58682,8 +58471,14 @@ "prop-types": "^15.7.2" }, "peerDependencies": { + "@ant-design/icons": "^4.2.2", "@emotion/react": "^11.4.1", "@superset-ui/core": "*", + "@testing-library/dom": "^7.29.4", + "@testing-library/jest-dom": "^5.11.6", + "@testing-library/react": "^11.2.0", + "@testing-library/react-hooks": "^5.0.3", + "@testing-library/user-event": "^12.7.0", "@types/enzyme": "^3.10.5", "@types/react": "*", "antd": "^4.9.4", @@ -58709,7 +58504,6 @@ "@types/prop-types": "^15.7.2", "@types/rison": "0.0.6", "@types/seedrandom": "^2.4.28", - "@types/tinycolor2": "^1.4.3", "@vx/responsive": "^0.0.199", "csstype": "^2.6.4", "d3-format": "^1.3.2", @@ -58741,8 +58535,10 @@ "@emotion/styled": "^11.3.0", "@types/react": "*", "@types/react-loadable": "*", + "@types/tinycolor2": "*", "react": "^16.13.1", - "react-loadable": "^5.5.0" + "react-loadable": "^5.5.0", + "tinycolor2": "*" } }, "packages/superset-ui-core/node_modules/@vx/responsive": { @@ -58991,20 +58787,6 @@ "node": ">=0.10.0" } }, - "packages/superset-ui-demo/node_modules/enhanced-resolve": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", - "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.5.0", - "tapable": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "packages/superset-ui-demo/node_modules/fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -59076,19 +58858,6 @@ "node": ">=10" } }, - "packages/superset-ui-demo/node_modules/memory-fs": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", - "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", - "dev": true, - "dependencies": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - }, - "engines": { - "node": ">=4.3.0 <5.0.0 || >=5.10" - } - }, "packages/superset-ui-demo/node_modules/micromatch": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", @@ -59183,15 +58952,6 @@ "node": ">=4" } }, - "packages/superset-ui-demo/node_modules/tapable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", - "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "packages/superset-ui-demo/node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -60017,6 +59777,18 @@ "src": { "version": "0.0.1", "extraneous": true + }, + "tools/eslint-plugin-theme-colors": { + "version": "1.0.0", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "lodash": "^4.17.21" + }, + "engines": { + "node": "^16.9.1", + "npm": "^7.5.4" + } } }, "dependencies": { @@ -63807,7 +63579,6 @@ "version": "26.6.2", "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", - "dev": true, "requires": { "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", @@ -63820,7 +63591,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz", "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==", - "dev": true, "requires": { "@types/istanbul-lib-report": "*" } @@ -64560,26 +64330,6 @@ "universalify": "^2.0.0" } }, - "globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - } - }, - "ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "dev": true - }, "lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -65411,26 +65161,6 @@ "write-json-file": "^4.3.0" }, "dependencies": { - "globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - } - }, - "ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "dev": true - }, "load-json-file": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-6.2.0.tgz", @@ -65461,12 +65191,6 @@ "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true - }, "strip-bom": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", @@ -66489,9 +66213,9 @@ } }, "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "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" } @@ -67531,46 +67255,6 @@ "@octokit/openapi-types": "^11.2.0" } }, - "@pmmmwh/react-refresh-webpack-plugin": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.4.3.tgz", - "integrity": "sha512-br5Qwvh8D2OQqSXpd1g/xqXKnK0r+Jz6qVKBbWmpUcrbGOxUrf39V5oZ1876084CGn18uMdR5uvPqBv9UqtBjQ==", - "requires": { - "ansi-html": "^0.0.7", - "error-stack-parser": "^2.0.6", - "html-entities": "^1.2.1", - "native-url": "^0.2.6", - "schema-utils": "^2.6.5", - "source-map": "^0.7.3" - }, - "dependencies": { - "ansi-html": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", - "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=" - }, - "html-entities": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.4.0.tgz", - "integrity": "sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA==" - }, - "schema-utils": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", - "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", - "requires": { - "@types/json-schema": "^7.0.5", - "ajv": "^6.12.4", - "ajv-keywords": "^3.5.2" - } - }, - "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==" - } - } - }, "@polka/url": { "version": "1.0.0-next.20", "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.20.tgz", @@ -67677,16 +67361,16 @@ "dev": true }, "@storybook/addon-actions": { - "version": "6.4.9", - "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-6.4.9.tgz", - "integrity": "sha512-L1N66p/vr+wPUBfrH3qffjNAcWSS/wvuL370T7cWxALA9LLA8yY9U2EpITc5btuCC5QOxApCeyHkFnrBhNa94g==", - "requires": { - "@storybook/addons": "6.4.9", - "@storybook/api": "6.4.9", - "@storybook/components": "6.4.9", - "@storybook/core-events": "6.4.9", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-6.4.19.tgz", + "integrity": "sha512-GpSvP8xV8GfNkmtGJjfCgaOx6mbjtyTK0aT9FqX9pU0s+KVMmoCTrBh43b7dWrwxxas01yleBK9VpYggzhi/Fw==", + "requires": { + "@storybook/addons": "6.4.19", + "@storybook/api": "6.4.19", + "@storybook/components": "6.4.19", + "@storybook/core-events": "6.4.19", "@storybook/csf": "0.0.2--canary.87bc651.0", - "@storybook/theming": "6.4.9", + "@storybook/theming": "6.4.19", "core-js": "^3.8.2", "fast-deep-equal": "^3.1.3", "global": "^4.4.0", @@ -67701,95 +67385,18 @@ "uuid-browser": "^3.1.0" }, "dependencies": { - "@storybook/addons": { - "version": "6.4.9", - "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-6.4.9.tgz", - "integrity": "sha512-y+oiN2zd+pbRWwkf6aQj4tPDFn+rQkrv7fiVoMxsYub+kKyZ3CNOuTSJH+A1A+eBL6DmzocChUyO6jvZFuh6Dg==", - "requires": { - "@storybook/api": "6.4.9", - "@storybook/channels": "6.4.9", - "@storybook/client-logger": "6.4.9", - "@storybook/core-events": "6.4.9", - "@storybook/csf": "0.0.2--canary.87bc651.0", - "@storybook/router": "6.4.9", - "@storybook/theming": "6.4.9", - "@types/webpack-env": "^1.16.0", - "core-js": "^3.8.2", - "global": "^4.4.0", - "regenerator-runtime": "^0.13.7" - }, - "dependencies": { - "@storybook/router": { - "version": "6.4.9", - "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.4.9.tgz", - "integrity": "sha512-GT2KtVHo/mBjxDBFB5ZtVJVf8vC+3p5kRlQC4jao68caVp7H24ikPOkcY54VnQwwe4A1aXpGbJXUyTisEPFlhQ==", - "requires": { - "@storybook/client-logger": "6.4.9", - "core-js": "^3.8.2", - "fast-deep-equal": "^3.1.3", - "global": "^4.4.0", - "history": "5.0.0", - "lodash": "^4.17.21", - "memoizerific": "^1.11.3", - "qs": "^6.10.0", - "react-router": "^6.0.0", - "react-router-dom": "^6.0.0", - "ts-dedent": "^2.0.0" - }, - "dependencies": { - "react-router": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.2.1.tgz", - "integrity": "sha512-2fG0udBtxou9lXtK97eJeET2ki5//UWfQSl1rlJ7quwe6jrktK9FCCc8dQb5QY6jAv3jua8bBQRhhDOM/kVRsg==", - "requires": { - "history": "^5.2.0" - }, - "dependencies": { - "history": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/history/-/history-5.2.0.tgz", - "integrity": "sha512-uPSF6lAJb3nSePJ43hN3eKj1dTWpN9gMod0ZssbFTIsen+WehTmEadgL+kg78xLJFdRfrrC//SavDzmRVdE+Ig==", - "requires": { - "@babel/runtime": "^7.7.6" - } - } - } - }, - "react-router-dom": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.2.1.tgz", - "integrity": "sha512-I6Zax+/TH/cZMDpj3/4Fl2eaNdcvoxxHoH1tYOREsQ22OKDYofGebrNm6CTPUcvLvZm63NL/vzCYdjf9CUhqmA==", - "requires": { - "history": "^5.2.0", - "react-router": "6.2.1" - }, - "dependencies": { - "history": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/history/-/history-5.2.0.tgz", - "integrity": "sha512-uPSF6lAJb3nSePJ43hN3eKj1dTWpN9gMod0ZssbFTIsen+WehTmEadgL+kg78xLJFdRfrrC//SavDzmRVdE+Ig==", - "requires": { - "@babel/runtime": "^7.7.6" - } - } - } - } - } - } - } - }, "@storybook/api": { - "version": "6.4.9", - "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.4.9.tgz", - "integrity": "sha512-U+YKcDQg8xal9sE5eSMXB9vcqk8fD1pSyewyAjjbsW5hV0B3L3i4u7z/EAD9Ujbnor+Cvxq+XGvp+Qnc5Gd40A==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.4.19.tgz", + "integrity": "sha512-aDvea+NpQCBjpNp9YidO1Pr7fzzCp15FSdkG+2ihGQfv5raxrN+IIJnGUXecpe71nvlYiB+29UXBVK7AL0j51Q==", "requires": { - "@storybook/channels": "6.4.9", - "@storybook/client-logger": "6.4.9", - "@storybook/core-events": "6.4.9", + "@storybook/channels": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/core-events": "6.4.19", "@storybook/csf": "0.0.2--canary.87bc651.0", - "@storybook/router": "6.4.9", + "@storybook/router": "6.4.19", "@storybook/semver": "^7.3.2", - "@storybook/theming": "6.4.9", + "@storybook/theming": "6.4.19", "core-js": "^3.8.2", "fast-deep-equal": "^3.1.3", "global": "^4.4.0", @@ -67803,11 +67410,11 @@ }, "dependencies": { "@storybook/router": { - "version": "6.4.9", - "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.4.9.tgz", - "integrity": "sha512-GT2KtVHo/mBjxDBFB5ZtVJVf8vC+3p5kRlQC4jao68caVp7H24ikPOkcY54VnQwwe4A1aXpGbJXUyTisEPFlhQ==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.4.19.tgz", + "integrity": "sha512-KWWwIzuyeEIWVezkCihwY2A76Il9tUNg0I410g9qT7NrEsKyqXGRYOijWub7c1GGyNjLqz0jtrrehtixMcJkuA==", "requires": { - "@storybook/client-logger": "6.4.9", + "@storybook/client-logger": "6.4.19", "core-js": "^3.8.2", "fast-deep-equal": "^3.1.3", "global": "^4.4.0", @@ -67821,17 +67428,17 @@ }, "dependencies": { "react-router": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.2.1.tgz", - "integrity": "sha512-2fG0udBtxou9lXtK97eJeET2ki5//UWfQSl1rlJ7quwe6jrktK9FCCc8dQb5QY6jAv3jua8bBQRhhDOM/kVRsg==", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.2.2.tgz", + "integrity": "sha512-/MbxyLzd7Q7amp4gDOGaYvXwhEojkJD5BtExkuKmj39VEE0m3l/zipf6h2WIB2jyAO0lI6NGETh4RDcktRm4AQ==", "requires": { "history": "^5.2.0" }, "dependencies": { "history": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/history/-/history-5.2.0.tgz", - "integrity": "sha512-uPSF6lAJb3nSePJ43hN3eKj1dTWpN9gMod0ZssbFTIsen+WehTmEadgL+kg78xLJFdRfrrC//SavDzmRVdE+Ig==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/history/-/history-5.3.0.tgz", + "integrity": "sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==", "requires": { "@babel/runtime": "^7.7.6" } @@ -67839,18 +67446,18 @@ } }, "react-router-dom": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.2.1.tgz", - "integrity": "sha512-I6Zax+/TH/cZMDpj3/4Fl2eaNdcvoxxHoH1tYOREsQ22OKDYofGebrNm6CTPUcvLvZm63NL/vzCYdjf9CUhqmA==", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.2.2.tgz", + "integrity": "sha512-AtYEsAST7bDD4dLSQHDnk/qxWLJdad5t1HFa1qJyUrCeGgEuCSw0VB/27ARbF9Fi/W5598ujvJOm3ujUCVzuYQ==", "requires": { "history": "^5.2.0", - "react-router": "6.2.1" + "react-router": "6.2.2" }, "dependencies": { "history": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/history/-/history-5.2.0.tgz", - "integrity": "sha512-uPSF6lAJb3nSePJ43hN3eKj1dTWpN9gMod0ZssbFTIsen+WehTmEadgL+kg78xLJFdRfrrC//SavDzmRVdE+Ig==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/history/-/history-5.3.0.tgz", + "integrity": "sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==", "requires": { "@babel/runtime": "^7.7.6" } @@ -67862,9 +67469,9 @@ } }, "@storybook/channels": { - "version": "6.4.9", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.4.9.tgz", - "integrity": "sha512-DNW1qDg+1WFS2aMdGh658WJXh8xBXliO5KAn0786DKcWCsKjfsPPQg/QCHczHK0+s5SZyzQT5aOBb4kTRHELQA==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.4.19.tgz", + "integrity": "sha512-EwyoncFvTfmIlfsy8jTfayCxo2XchPkZk/9txipugWSmc057HdklMKPLOHWP0z5hLH0IbVIKXzdNISABm36jwQ==", "requires": { "core-js": "^3.8.2", "ts-dedent": "^2.0.0", @@ -67872,23 +67479,23 @@ } }, "@storybook/client-logger": { - "version": "6.4.9", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.4.9.tgz", - "integrity": "sha512-BVagmmHcuKDZ/XROADfN3tiolaDW2qG0iLmDhyV1gONnbGE6X5Qm19Jt2VYu3LvjKF1zMPSWm4mz7HtgdwKbuQ==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.4.19.tgz", + "integrity": "sha512-zmg/2wyc9W3uZrvxaW4BfHcr40J0v7AGslqYXk9H+ERLVwIvrR4NhxQFaS6uITjBENyRDxwzfU3Va634WcmdDQ==", "requires": { "core-js": "^3.8.2", "global": "^4.4.0" } }, "@storybook/components": { - "version": "6.4.9", - "resolved": "https://registry.npmjs.org/@storybook/components/-/components-6.4.9.tgz", - "integrity": "sha512-uOUR97S6kjptkMCh15pYNM1vAqFXtpyneuonmBco5vADJb3ds0n2a8NeVd+myIbhIXn55x0OHKiSwBH/u7swCQ==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-6.4.19.tgz", + "integrity": "sha512-q/0V37YAJA7CNc+wSiiefeM9+3XVk8ixBNylY36QCGJgIeGQ5/79vPyUe6K4lLmsQwpmZsIq1s1Ad5+VbboeOA==", "requires": { "@popperjs/core": "^2.6.0", - "@storybook/client-logger": "6.4.9", + "@storybook/client-logger": "6.4.19", "@storybook/csf": "0.0.2--canary.87bc651.0", - "@storybook/theming": "6.4.9", + "@storybook/theming": "6.4.19", "@types/color-convert": "^2.0.0", "@types/overlayscrollbars": "^1.12.0", "@types/react-syntax-highlighter": "11.0.5", @@ -67926,9 +67533,9 @@ } }, "@storybook/core-events": { - "version": "6.4.9", - "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.4.9.tgz", - "integrity": "sha512-YhU2zJr6wzvh5naYYuy/0UKNJ/SaXu73sIr0Tx60ur3bL08XkRg7eZ9vBhNBTlAa35oZqI0iiGCh0ljiX7yEVQ==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.4.19.tgz", + "integrity": "sha512-KICzUw6XVQUJzFSCXfvhfHAuyhn4Q5J4IZEfuZkcGJS4ODkrO6tmpdYE5Cfr+so95Nfp0ErWiLUuodBsW9/rtA==", "requires": { "core-js": "^3.8.2" } @@ -67942,14 +67549,14 @@ } }, "@storybook/theming": { - "version": "6.4.9", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.4.9.tgz", - "integrity": "sha512-Do6GH6nKjxfnBg6djcIYAjss5FW9SRKASKxLYxX2RyWJBpz0m/8GfcGcRyORy0yFTk6jByA3Hs+WFH3GnEbWkw==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.4.19.tgz", + "integrity": "sha512-V4pWmTvAxmbHR6B3jA4hPkaxZPyExHvCToy7b76DpUTpuHihijNDMAn85KhOQYIeL9q14zP/aiz899tOHsOidg==", "requires": { "@emotion/core": "^10.1.1", "@emotion/is-prop-valid": "^0.8.6", "@emotion/styled": "^10.0.27", - "@storybook/client-logger": "6.4.9", + "@storybook/client-logger": "6.4.19", "core-js": "^3.8.2", "deep-object-diff": "^1.1.0", "emotion-theming": "^10.0.27", @@ -68006,17 +67613,17 @@ } }, "polished": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/polished/-/polished-4.1.3.tgz", - "integrity": "sha512-ocPAcVBUOryJEKe0z2KLd1l9EBa1r5mSwlKpExmrLzsnIzJo4axsoU9O2BjOTkDGDT4mZ0WFE5XKTlR3nLnZOA==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/polished/-/polished-4.1.4.tgz", + "integrity": "sha512-Nq5Mbza+Auo7N3sQb1QMFaQiDO+4UexWuSGR7Cjb4Sw11SZIJcrrFtiZ+L0jT9MBsUsxDboHVASbCLbE1rnECg==", "requires": { - "@babel/runtime": "^7.14.0" + "@babel/runtime": "^7.16.7" } }, "qs": { - "version": "6.10.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.2.tgz", - "integrity": "sha512-mSIdjzqznWgfd4pMii7sHtaYF8rx8861hBO80SraY5GT0XQibWZWJSid0avzHGkDIZLImux2S5mXO0Hfct2QCw==", + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", "requires": { "side-channel": "^1.0.4" } @@ -68029,62 +67636,64 @@ } }, "@storybook/addon-essentials": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/addon-essentials/-/addon-essentials-6.3.12.tgz", - "integrity": "sha512-PK0pPE0xkq00kcbBcFwu/5JGHQTu4GvLIHfwwlEGx6GWNQ05l6Q+1Z4nE7xJGv2PSseSx3CKcjn8qykNLe6O6g==", - "dev": true, - "requires": { - "@storybook/addon-actions": "6.3.12", - "@storybook/addon-backgrounds": "6.3.12", - "@storybook/addon-controls": "6.3.12", - "@storybook/addon-docs": "6.3.12", - "@storybook/addon-measure": "^2.0.0", - "@storybook/addon-toolbars": "6.3.12", - "@storybook/addon-viewport": "6.3.12", - "@storybook/addons": "6.3.12", - "@storybook/api": "6.3.12", - "@storybook/node-logger": "6.3.12", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/addon-essentials/-/addon-essentials-6.4.19.tgz", + "integrity": "sha512-vbV8sjepMVEuwhTDBHjO3E6vXluG7RiEeozV1QVuS9lGhjQdvUPdZ9rDNUcP6WHhTdEkS/ffTMaGIy1v8oZd7g==", + "dev": true, + "requires": { + "@storybook/addon-actions": "6.4.19", + "@storybook/addon-backgrounds": "6.4.19", + "@storybook/addon-controls": "6.4.19", + "@storybook/addon-docs": "6.4.19", + "@storybook/addon-measure": "6.4.19", + "@storybook/addon-outline": "6.4.19", + "@storybook/addon-toolbars": "6.4.19", + "@storybook/addon-viewport": "6.4.19", + "@storybook/addons": "6.4.19", + "@storybook/api": "6.4.19", + "@storybook/node-logger": "6.4.19", "core-js": "^3.8.2", "regenerator-runtime": "^0.13.7", - "storybook-addon-outline": "^1.4.1", "ts-dedent": "^2.0.0" }, "dependencies": { - "@storybook/addon-actions": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-6.3.12.tgz", - "integrity": "sha512-mzuN4Ano4eyicwycM2PueGzzUCAEzt9/6vyptWEIVJu0sjK0J9KtBRlqFi1xGQxmCfimDR/n/vWBBkc7fp2uJA==", + "@base2/pretty-print-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@base2/pretty-print-object/-/pretty-print-object-1.0.1.tgz", + "integrity": "sha512-4iri8i1AqYHJE2DstZYkyEprg6Pq6sKx3xn5FpySk9sNhH7qN2LLlHJCfDTZRILNwQNPD7mATWM0TBui7uC1pA==", + "dev": true + }, + "@storybook/addon-backgrounds": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/addon-backgrounds/-/addon-backgrounds-6.4.19.tgz", + "integrity": "sha512-yn8MTE7lctO48Rdw+DmmA1wKdf5eyAbA/vrug5ske/U2WPgGc65sApzwT8BItZfuyAMjuT5RnCWwd7o6hGRgGQ==", "dev": true, "requires": { - "@storybook/addons": "6.3.12", - "@storybook/api": "6.3.12", - "@storybook/client-api": "6.3.12", - "@storybook/components": "6.3.12", - "@storybook/core-events": "6.3.12", - "@storybook/theming": "6.3.12", + "@storybook/addons": "6.4.19", + "@storybook/api": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/components": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/theming": "6.4.19", "core-js": "^3.8.2", - "fast-deep-equal": "^3.1.3", "global": "^4.4.0", - "lodash": "^4.17.20", - "polished": "^4.0.5", - "prop-types": "^15.7.2", - "react-inspector": "^5.1.0", + "memoizerific": "^1.11.3", "regenerator-runtime": "^0.13.7", "ts-dedent": "^2.0.0", - "util-deprecate": "^1.0.2", - "uuid-browser": "^3.1.0" + "util-deprecate": "^1.0.2" }, "dependencies": { "@storybook/components": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/components/-/components-6.3.12.tgz", - "integrity": "sha512-kdQt8toUjynYAxDLrJzuG7YSNL6as1wJoyzNUaCfG06YPhvIAlKo7le9tS2mThVFN5e9nbKrW3N1V1sp6ypZXQ==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-6.4.19.tgz", + "integrity": "sha512-q/0V37YAJA7CNc+wSiiefeM9+3XVk8ixBNylY36QCGJgIeGQ5/79vPyUe6K4lLmsQwpmZsIq1s1Ad5+VbboeOA==", "dev": true, "requires": { "@popperjs/core": "^2.6.0", - "@storybook/client-logger": "6.3.12", - "@storybook/csf": "0.0.1", - "@storybook/theming": "6.3.12", + "@storybook/client-logger": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/theming": "6.4.19", "@types/color-convert": "^2.0.0", "@types/overlayscrollbars": "^1.12.0", "@types/react-syntax-highlighter": "11.0.5", @@ -68092,7 +67701,7 @@ "core-js": "^3.8.2", "fast-deep-equal": "^3.1.3", "global": "^4.4.0", - "lodash": "^4.17.20", + "lodash": "^4.17.21", "markdown-to-jsx": "^7.1.3", "memoizerific": "^1.11.3", "overlayscrollbars": "^1.13.1", @@ -68123,15 +67732,15 @@ } }, "@storybook/theming": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.3.12.tgz", - "integrity": "sha512-wOJdTEa/VFyFB2UyoqyYGaZdym6EN7RALuQOAMT6zHA282FBmKw8nL5DETHEbctpnHdcrMC/391teK4nNSrdOA==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.4.19.tgz", + "integrity": "sha512-V4pWmTvAxmbHR6B3jA4hPkaxZPyExHvCToy7b76DpUTpuHihijNDMAn85KhOQYIeL9q14zP/aiz899tOHsOidg==", "dev": true, "requires": { "@emotion/core": "^10.1.1", "@emotion/is-prop-valid": "^0.8.6", "@emotion/styled": "^10.0.27", - "@storybook/client-logger": "6.3.12", + "@storybook/client-logger": "6.4.19", "core-js": "^3.8.2", "deep-object-diff": "^1.1.0", "emotion-theming": "^10.0.27", @@ -68170,36 +67779,36 @@ } } }, - "@storybook/addon-backgrounds": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/addon-backgrounds/-/addon-backgrounds-6.3.12.tgz", - "integrity": "sha512-51cHBx0HV7K/oRofJ/1pE05qti6sciIo8m4iPred1OezXIrJ/ckzP+gApdaUdzgcLAr6/MXQWLk0sJuImClQ6w==", + "@storybook/addon-controls": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-6.4.19.tgz", + "integrity": "sha512-JHi5z9i6NsgQLfG5WOeQE1AyOrM+QJLrjT+uOYx40bq+OC1yWHH7qHiphPP8kjJJhCZlaQk1qqXYkkQXgaeHSw==", "dev": true, "requires": { - "@storybook/addons": "6.3.12", - "@storybook/api": "6.3.12", - "@storybook/client-logger": "6.3.12", - "@storybook/components": "6.3.12", - "@storybook/core-events": "6.3.12", - "@storybook/theming": "6.3.12", + "@storybook/addons": "6.4.19", + "@storybook/api": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/components": "6.4.19", + "@storybook/core-common": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/node-logger": "6.4.19", + "@storybook/store": "6.4.19", + "@storybook/theming": "6.4.19", "core-js": "^3.8.2", - "global": "^4.4.0", - "memoizerific": "^1.11.3", - "regenerator-runtime": "^0.13.7", - "ts-dedent": "^2.0.0", - "util-deprecate": "^1.0.2" + "lodash": "^4.17.21", + "ts-dedent": "^2.0.0" }, "dependencies": { "@storybook/components": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/components/-/components-6.3.12.tgz", - "integrity": "sha512-kdQt8toUjynYAxDLrJzuG7YSNL6as1wJoyzNUaCfG06YPhvIAlKo7le9tS2mThVFN5e9nbKrW3N1V1sp6ypZXQ==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-6.4.19.tgz", + "integrity": "sha512-q/0V37YAJA7CNc+wSiiefeM9+3XVk8ixBNylY36QCGJgIeGQ5/79vPyUe6K4lLmsQwpmZsIq1s1Ad5+VbboeOA==", "dev": true, "requires": { "@popperjs/core": "^2.6.0", - "@storybook/client-logger": "6.3.12", - "@storybook/csf": "0.0.1", - "@storybook/theming": "6.3.12", + "@storybook/client-logger": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/theming": "6.4.19", "@types/color-convert": "^2.0.0", "@types/overlayscrollbars": "^1.12.0", "@types/react-syntax-highlighter": "11.0.5", @@ -68207,7 +67816,7 @@ "core-js": "^3.8.2", "fast-deep-equal": "^3.1.3", "global": "^4.4.0", - "lodash": "^4.17.20", + "lodash": "^4.17.21", "markdown-to-jsx": "^7.1.3", "memoizerific": "^1.11.3", "overlayscrollbars": "^1.13.1", @@ -68237,113 +67846,96 @@ } } }, - "@storybook/theming": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.3.12.tgz", - "integrity": "sha512-wOJdTEa/VFyFB2UyoqyYGaZdym6EN7RALuQOAMT6zHA282FBmKw8nL5DETHEbctpnHdcrMC/391teK4nNSrdOA==", + "@storybook/core-common": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-6.4.19.tgz", + "integrity": "sha512-X1pJJkO48DFxl6iyEemIKqRkJ7j9/cBh3BRBUr+xZHXBvnD0GKDXIocwh0PjSxSC6XSu3UCQnqtKi3PbjRl8Dg==", "dev": true, "requires": { - "@emotion/core": "^10.1.1", - "@emotion/is-prop-valid": "^0.8.6", - "@emotion/styled": "^10.0.27", - "@storybook/client-logger": "6.3.12", + "@babel/core": "^7.12.10", + "@babel/plugin-proposal-class-properties": "^7.12.1", + "@babel/plugin-proposal-decorators": "^7.12.12", + "@babel/plugin-proposal-export-default-from": "^7.12.1", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1", + "@babel/plugin-proposal-object-rest-spread": "^7.12.1", + "@babel/plugin-proposal-optional-chaining": "^7.12.7", + "@babel/plugin-proposal-private-methods": "^7.12.1", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-transform-arrow-functions": "^7.12.1", + "@babel/plugin-transform-block-scoping": "^7.12.12", + "@babel/plugin-transform-classes": "^7.12.1", + "@babel/plugin-transform-destructuring": "^7.12.1", + "@babel/plugin-transform-for-of": "^7.12.1", + "@babel/plugin-transform-parameters": "^7.12.1", + "@babel/plugin-transform-shorthand-properties": "^7.12.1", + "@babel/plugin-transform-spread": "^7.12.1", + "@babel/preset-env": "^7.12.11", + "@babel/preset-react": "^7.12.10", + "@babel/preset-typescript": "^7.12.7", + "@babel/register": "^7.12.1", + "@storybook/node-logger": "6.4.19", + "@storybook/semver": "^7.3.2", + "@types/node": "^14.0.10", + "@types/pretty-hrtime": "^1.0.0", + "babel-loader": "^8.0.0", + "babel-plugin-macros": "^3.0.1", + "babel-plugin-polyfill-corejs3": "^0.1.0", + "chalk": "^4.1.0", "core-js": "^3.8.2", - "deep-object-diff": "^1.1.0", - "emotion-theming": "^10.0.27", - "global": "^4.4.0", - "memoizerific": "^1.11.3", - "polished": "^4.0.5", + "express": "^4.17.1", + "file-system-cache": "^1.0.5", + "find-up": "^5.0.0", + "fork-ts-checker-webpack-plugin": "^6.0.4", + "fs-extra": "^9.0.1", + "glob": "^7.1.6", + "handlebars": "^4.7.7", + "interpret": "^2.2.0", + "json5": "^2.1.3", + "lazy-universal-dotenv": "^3.0.1", + "picomatch": "^2.3.0", + "pkg-dir": "^5.0.0", + "pretty-hrtime": "^1.0.3", "resolve-from": "^5.0.0", - "ts-dedent": "^2.0.0" - }, - "dependencies": { - "@emotion/styled": { - "version": "10.0.27", - "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-10.0.27.tgz", - "integrity": "sha512-iK/8Sh7+NLJzyp9a5+vIQIXTYxfT4yB/OJbjzQanB2RZpvmzBQOHZWhpAMZWYEKRNNbsD6WfBw5sVWkb6WzS/Q==", - "dev": true, - "requires": { - "@emotion/styled-base": "^10.0.27", - "babel-plugin-emotion": "^10.0.27" - } - } + "slash": "^3.0.0", + "telejson": "^5.3.2", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2", + "webpack": "4" } - } - } - }, - "@storybook/addon-controls": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-6.3.12.tgz", - "integrity": "sha512-WO/PbygE4sDg3BbstJ49q0uM3Xu5Nw4lnHR5N4hXSvRAulZt1d1nhphRTHjfX+CW+uBcfzkq9bksm6nKuwmOyw==", - "dev": true, - "requires": { - "@storybook/addons": "6.3.12", - "@storybook/api": "6.3.12", - "@storybook/client-api": "6.3.12", - "@storybook/components": "6.3.12", - "@storybook/node-logger": "6.3.12", - "@storybook/theming": "6.3.12", - "core-js": "^3.8.2", - "ts-dedent": "^2.0.0" - }, - "dependencies": { - "@storybook/components": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/components/-/components-6.3.12.tgz", - "integrity": "sha512-kdQt8toUjynYAxDLrJzuG7YSNL6as1wJoyzNUaCfG06YPhvIAlKo7le9tS2mThVFN5e9nbKrW3N1V1sp6ypZXQ==", + }, + "@storybook/store": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/store/-/store-6.4.19.tgz", + "integrity": "sha512-N9/ZjemRHGfT3InPIbqQqc6snkcfnf3Qh9oOr0smbfaVGJol//KOX65kzzobtzFcid0WxtTDZ3HmgFVH+GvuhQ==", "dev": true, "requires": { - "@popperjs/core": "^2.6.0", - "@storybook/client-logger": "6.3.12", - "@storybook/csf": "0.0.1", - "@storybook/theming": "6.3.12", - "@types/color-convert": "^2.0.0", - "@types/overlayscrollbars": "^1.12.0", - "@types/react-syntax-highlighter": "11.0.5", - "color-convert": "^2.0.1", + "@storybook/addons": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", "core-js": "^3.8.2", "fast-deep-equal": "^3.1.3", "global": "^4.4.0", - "lodash": "^4.17.20", - "markdown-to-jsx": "^7.1.3", + "lodash": "^4.17.21", "memoizerific": "^1.11.3", - "overlayscrollbars": "^1.13.1", - "polished": "^4.0.5", - "prop-types": "^15.7.2", - "react-colorful": "^5.1.2", - "react-popper-tooltip": "^3.1.1", - "react-syntax-highlighter": "^13.5.3", - "react-textarea-autosize": "^8.3.0", "regenerator-runtime": "^0.13.7", + "slash": "^3.0.0", + "stable": "^0.1.8", + "synchronous-promise": "^2.0.15", "ts-dedent": "^2.0.0", "util-deprecate": "^1.0.2" - }, - "dependencies": { - "react-syntax-highlighter": { - "version": "13.5.3", - "resolved": "https://registry.npmjs.org/react-syntax-highlighter/-/react-syntax-highlighter-13.5.3.tgz", - "integrity": "sha512-crPaF+QGPeHNIblxxCdf2Lg936NAHKhNhuMzRL3F9ct6aYXL3NcZtCL0Rms9+qVo6Y1EQLdXGypBNSbPL/r+qg==", - "dev": true, - "requires": { - "@babel/runtime": "^7.3.1", - "highlight.js": "^10.1.1", - "lowlight": "^1.14.0", - "prismjs": "^1.21.0", - "refractor": "^3.1.0" - } - } } }, "@storybook/theming": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.3.12.tgz", - "integrity": "sha512-wOJdTEa/VFyFB2UyoqyYGaZdym6EN7RALuQOAMT6zHA282FBmKw8nL5DETHEbctpnHdcrMC/391teK4nNSrdOA==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.4.19.tgz", + "integrity": "sha512-V4pWmTvAxmbHR6B3jA4hPkaxZPyExHvCToy7b76DpUTpuHihijNDMAn85KhOQYIeL9q14zP/aiz899tOHsOidg==", "dev": true, "requires": { "@emotion/core": "^10.1.1", "@emotion/is-prop-valid": "^0.8.6", "@emotion/styled": "^10.0.27", - "@storybook/client-logger": "6.3.12", + "@storybook/client-logger": "6.4.19", "core-js": "^3.8.2", "deep-object-diff": "^1.1.0", "emotion-theming": "^10.0.27", @@ -68355,23 +67947,124 @@ }, "dependencies": { "@emotion/styled": { - "version": "10.0.27", - "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-10.0.27.tgz", - "integrity": "sha512-iK/8Sh7+NLJzyp9a5+vIQIXTYxfT4yB/OJbjzQanB2RZpvmzBQOHZWhpAMZWYEKRNNbsD6WfBw5sVWkb6WzS/Q==", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-10.3.0.tgz", + "integrity": "sha512-GgcUpXBBEU5ido+/p/mCT2/Xx+Oqmp9JzQRuC+a4lYM4i4LBBn/dWvc0rQ19N9ObA8/T4NWMrPNe79kMBDJqoQ==", "dev": true, "requires": { - "@emotion/styled-base": "^10.0.27", + "@emotion/styled-base": "^10.3.0", "babel-plugin-emotion": "^10.0.27" + }, + "dependencies": { + "@emotion/styled-base": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@emotion/styled-base/-/styled-base-10.3.0.tgz", + "integrity": "sha512-PBRqsVKR7QRNkmfH78hTSSwHWcwDpecH9W6heujWAcyp2wdz/64PP73s7fWS1dIPm8/Exc8JAzYS8dEWXjv60w==", + "dev": true, + "requires": { + "@babel/runtime": "^7.5.5", + "@emotion/is-prop-valid": "0.8.8", + "@emotion/serialize": "^0.11.15", + "@emotion/utils": "0.11.3" + } + } + } + } + } + }, + "acorn": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "dev": true + }, + "babel-plugin-macros": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", + "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.12.5", + "cosmiconfig": "^7.0.0", + "resolve": "^1.19.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" } } } + }, + "terser-webpack-plugin": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz", + "integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==", + "dev": true, + "requires": { + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", + "is-wsl": "^1.1.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^4.0.0", + "source-map": "^0.6.1", + "terser": "^4.1.2", + "webpack-sources": "^1.4.0", + "worker-farm": "^1.7.0" + } + }, + "webpack": { + "version": "4.46.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.46.0.tgz", + "integrity": "sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/wasm-edit": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "acorn": "^6.4.1", + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^4.5.0", + "eslint-scope": "^4.0.3", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.4.0", + "loader-utils": "^1.2.3", + "memory-fs": "^0.4.1", + "micromatch": "^3.1.10", + "mkdirp": "^0.5.3", + "neo-async": "^2.6.1", + "node-libs-browser": "^2.2.1", + "schema-utils": "^1.0.0", + "tapable": "^1.1.3", + "terser-webpack-plugin": "^1.4.3", + "watchpack": "^1.7.4", + "webpack-sources": "^1.4.1" + } } } }, "@storybook/addon-docs": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-6.3.12.tgz", - "integrity": "sha512-iUrqJBMTOn2PgN8AWNQkfxfIPkh8pEg27t8UndMgfOpeGK/VWGw2UEifnA82flvntcilT4McxmVbRHkeBY9K5A==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-6.4.19.tgz", + "integrity": "sha512-OEPyx/5ZXmZOPqIAWoPjlIP8Q/YfNjAmBosA8tmA8t5KCSiq/vpLcAvQhxqK6n0wk/B8Xp67Z8RpLfXjU8R3tw==", "dev": true, "requires": { "@babel/core": "^7.12.10", @@ -68383,20 +68076,21 @@ "@mdx-js/loader": "^1.6.22", "@mdx-js/mdx": "^1.6.22", "@mdx-js/react": "^1.6.22", - "@storybook/addons": "6.3.12", - "@storybook/api": "6.3.12", - "@storybook/builder-webpack4": "6.3.12", - "@storybook/client-api": "6.3.12", - "@storybook/client-logger": "6.3.12", - "@storybook/components": "6.3.12", - "@storybook/core": "6.3.12", - "@storybook/core-events": "6.3.12", - "@storybook/csf": "0.0.1", - "@storybook/csf-tools": "6.3.12", - "@storybook/node-logger": "6.3.12", - "@storybook/postinstall": "6.3.12", - "@storybook/source-loader": "6.3.12", - "@storybook/theming": "6.3.12", + "@storybook/addons": "6.4.19", + "@storybook/api": "6.4.19", + "@storybook/builder-webpack4": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/components": "6.4.19", + "@storybook/core": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/csf-tools": "6.4.19", + "@storybook/node-logger": "6.4.19", + "@storybook/postinstall": "6.4.19", + "@storybook/preview-web": "6.4.19", + "@storybook/source-loader": "6.4.19", + "@storybook/store": "6.4.19", + "@storybook/theming": "6.4.19", "acorn": "^7.4.1", "acorn-jsx": "^5.3.1", "acorn-walk": "^7.2.0", @@ -68408,11 +68102,12 @@ "html-tags": "^3.1.0", "js-string-escape": "^1.0.1", "loader-utils": "^2.0.0", - "lodash": "^4.17.20", + "lodash": "^4.17.21", + "nanoid": "^3.1.23", "p-limit": "^3.1.0", - "prettier": "~2.2.1", + "prettier": ">=2.2.1 <=2.3.0", "prop-types": "^15.7.2", - "react-element-to-jsx-string": "^14.3.2", + "react-element-to-jsx-string": "^14.3.4", "regenerator-runtime": "^0.13.7", "remark-external-links": "^8.0.0", "remark-slug": "^6.0.0", @@ -68428,9 +68123,9 @@ "requires": {} }, "@storybook/builder-webpack4": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/builder-webpack4/-/builder-webpack4-6.3.12.tgz", - "integrity": "sha512-Dlm5Fc1svqpFDnVPZdAaEBiM/IDZHMV3RfEGbUTY/ZC0q8b/Ug1czzp/w0aTIjOFRuBDcG6IcplikaqHL8CJLg==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/builder-webpack4/-/builder-webpack4-6.4.19.tgz", + "integrity": "sha512-wxA6SMH11duc9D53aeVVBwrVRemFIoxHp/dOugkkg6ZZFAb4ZmWzf/ENc3vQIZdZpfNRi7IZIZEOfoHc994cmw==", "dev": true, "requires": { "@babel/core": "^7.12.10", @@ -68454,34 +68149,34 @@ "@babel/preset-env": "^7.12.11", "@babel/preset-react": "^7.12.10", "@babel/preset-typescript": "^7.12.7", - "@storybook/addons": "6.3.12", - "@storybook/api": "6.3.12", - "@storybook/channel-postmessage": "6.3.12", - "@storybook/channels": "6.3.12", - "@storybook/client-api": "6.3.12", - "@storybook/client-logger": "6.3.12", - "@storybook/components": "6.3.12", - "@storybook/core-common": "6.3.12", - "@storybook/core-events": "6.3.12", - "@storybook/node-logger": "6.3.12", - "@storybook/router": "6.3.12", + "@storybook/addons": "6.4.19", + "@storybook/api": "6.4.19", + "@storybook/channel-postmessage": "6.4.19", + "@storybook/channels": "6.4.19", + "@storybook/client-api": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/components": "6.4.19", + "@storybook/core-common": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/node-logger": "6.4.19", + "@storybook/preview-web": "6.4.19", + "@storybook/router": "6.4.19", "@storybook/semver": "^7.3.2", - "@storybook/theming": "6.3.12", - "@storybook/ui": "6.3.12", + "@storybook/store": "6.4.19", + "@storybook/theming": "6.4.19", + "@storybook/ui": "6.4.19", "@types/node": "^14.0.10", "@types/webpack": "^4.41.26", "autoprefixer": "^9.8.6", - "babel-loader": "^8.2.2", + "babel-loader": "^8.0.0", "babel-plugin-macros": "^2.8.0", "babel-plugin-polyfill-corejs3": "^0.1.0", "case-sensitive-paths-webpack-plugin": "^2.3.0", "core-js": "^3.8.2", "css-loader": "^3.6.0", - "dotenv-webpack": "^1.8.0", "file-loader": "^6.2.0", "find-up": "^5.0.0", "fork-ts-checker-webpack-plugin": "^4.1.6", - "fs-extra": "^9.0.1", "glob": "^7.1.6", "glob-promise": "^3.4.0", "global": "^4.4.0", @@ -68491,7 +68186,6 @@ "postcss-flexbugs-fixes": "^4.2.1", "postcss-loader": "^4.2.0", "raw-loader": "^4.0.2", - "react-dev-utils": "^11.0.3", "stable": "^0.1.8", "style-loader": "^1.3.0", "terser-webpack-plugin": "^4.2.3", @@ -68501,14 +68195,14 @@ "webpack": "4", "webpack-dev-middleware": "^3.7.3", "webpack-filter-warnings-plugin": "^1.2.1", - "webpack-hot-middleware": "^2.25.0", + "webpack-hot-middleware": "^2.25.1", "webpack-virtual-modules": "^0.2.2" }, "dependencies": { "@storybook/core-common": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-6.3.12.tgz", - "integrity": "sha512-xlHs2QXELq/moB4MuXjYOczaxU64BIseHsnFBLyboJYN6Yso3qihW5RB7cuJlGohkjb4JwY74dvfT4Ww66rkBA==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-6.4.19.tgz", + "integrity": "sha512-X1pJJkO48DFxl6iyEemIKqRkJ7j9/cBh3BRBUr+xZHXBvnD0GKDXIocwh0PjSxSC6XSu3UCQnqtKi3PbjRl8Dg==", "dev": true, "requires": { "@babel/core": "^7.12.10", @@ -68532,13 +68226,11 @@ "@babel/preset-react": "^7.12.10", "@babel/preset-typescript": "^7.12.7", "@babel/register": "^7.12.1", - "@storybook/node-logger": "6.3.12", + "@storybook/node-logger": "6.4.19", "@storybook/semver": "^7.3.2", - "@types/glob-base": "^0.3.0", - "@types/micromatch": "^4.0.1", "@types/node": "^14.0.10", "@types/pretty-hrtime": "^1.0.0", - "babel-loader": "^8.2.2", + "babel-loader": "^8.0.0", "babel-plugin-macros": "^3.0.1", "babel-plugin-polyfill-corejs3": "^0.1.0", "chalk": "^4.1.0", @@ -68547,15 +68239,18 @@ "file-system-cache": "^1.0.5", "find-up": "^5.0.0", "fork-ts-checker-webpack-plugin": "^6.0.4", + "fs-extra": "^9.0.1", "glob": "^7.1.6", - "glob-base": "^0.3.0", + "handlebars": "^4.7.7", "interpret": "^2.2.0", "json5": "^2.1.3", "lazy-universal-dotenv": "^3.0.1", - "micromatch": "^4.0.2", + "picomatch": "^2.3.0", "pkg-dir": "^5.0.0", "pretty-hrtime": "^1.0.3", "resolve-from": "^5.0.0", + "slash": "^3.0.0", + "telejson": "^5.3.2", "ts-dedent": "^2.0.0", "util-deprecate": "^1.0.2", "webpack": "4" @@ -68573,9 +68268,9 @@ } }, "fork-ts-checker-webpack-plugin": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.4.0.tgz", - "integrity": "sha512-3I3wFkc4DbzaUDPWEi96wdYGu4EKtxBafhZYm0o4mX51d9bphAY4P3mBl8K5mFXFJqVzHfmdbm9kLGnm7vwwBg==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.0.tgz", + "integrity": "sha512-cS178Y+xxtIjEUorcHddKS7yCMlrDPV31mt47blKKRfMd70Kxu5xruAFE2o9sDY6wVC5deuob/u/alD04YYHnw==", "dev": true, "requires": { "@babel/code-frame": "^7.8.3", @@ -68608,16 +68303,6 @@ } } }, - "micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", - "dev": true, - "requires": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" - } - }, "schema-utils": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", @@ -68641,40 +68326,83 @@ } }, "@storybook/router": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.3.12.tgz", - "integrity": "sha512-G/pNGCnrJRetCwyEZulHPT+YOcqEj/vkPVDTUfii2qgqukup6K0cjwgd7IukAURnAnnzTi1gmgFuEKUi8GE/KA==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.4.19.tgz", + "integrity": "sha512-KWWwIzuyeEIWVezkCihwY2A76Il9tUNg0I410g9qT7NrEsKyqXGRYOijWub7c1GGyNjLqz0jtrrehtixMcJkuA==", "dev": true, "requires": { - "@reach/router": "^1.3.4", - "@storybook/client-logger": "6.3.12", - "@types/reach__router": "^1.3.7", + "@storybook/client-logger": "6.4.19", "core-js": "^3.8.2", "fast-deep-equal": "^3.1.3", "global": "^4.4.0", - "lodash": "^4.17.20", + "history": "5.0.0", + "lodash": "^4.17.21", "memoizerific": "^1.11.3", "qs": "^6.10.0", + "react-router": "^6.0.0", + "react-router-dom": "^6.0.0", "ts-dedent": "^2.0.0" + }, + "dependencies": { + "react-router": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.2.2.tgz", + "integrity": "sha512-/MbxyLzd7Q7amp4gDOGaYvXwhEojkJD5BtExkuKmj39VEE0m3l/zipf6h2WIB2jyAO0lI6NGETh4RDcktRm4AQ==", + "dev": true, + "requires": { + "history": "^5.2.0" + }, + "dependencies": { + "history": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/history/-/history-5.3.0.tgz", + "integrity": "sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.6" + } + } + } + }, + "react-router-dom": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.2.2.tgz", + "integrity": "sha512-AtYEsAST7bDD4dLSQHDnk/qxWLJdad5t1HFa1qJyUrCeGgEuCSw0VB/27ARbF9Fi/W5598ujvJOm3ujUCVzuYQ==", + "dev": true, + "requires": { + "history": "^5.2.0", + "react-router": "6.2.2" + }, + "dependencies": { + "history": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/history/-/history-5.3.0.tgz", + "integrity": "sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.6" + } + } + } + } } }, "@storybook/ui": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/ui/-/ui-6.3.12.tgz", - "integrity": "sha512-PC2yEz4JMfarq7rUFbeA3hCA+31p5es7YPEtxLRvRwIZhtL0P4zQUfHpotb3KgWdoAIfZesAuoIQwMPQmEFYrw==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/ui/-/ui-6.4.19.tgz", + "integrity": "sha512-gFwdn5LA2U6oQ4bfUFLyHZnNasGQ01YVdwjbi+l6yjmnckBNtZfJoVTZ1rzGUbxSE9rK48InJRU+latTsr7xAg==", "dev": true, "requires": { "@emotion/core": "^10.1.1", - "@storybook/addons": "6.3.12", - "@storybook/api": "6.3.12", - "@storybook/channels": "6.3.12", - "@storybook/client-logger": "6.3.12", - "@storybook/components": "6.3.12", - "@storybook/core-events": "6.3.12", - "@storybook/router": "6.3.12", + "@storybook/addons": "6.4.19", + "@storybook/api": "6.4.19", + "@storybook/channels": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/components": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/router": "6.4.19", "@storybook/semver": "^7.3.2", - "@storybook/theming": "6.3.12", - "@types/markdown-to-jsx": "^6.11.3", + "@storybook/theming": "6.4.19", "copy-to-clipboard": "^3.3.1", "core-js": "^3.8.2", "core-js-pure": "^3.8.2", @@ -68682,8 +68410,8 @@ "emotion-theming": "^10.0.27", "fuse.js": "^3.6.1", "global": "^4.4.0", - "lodash": "^4.17.20", - "markdown-to-jsx": "^6.11.4", + "lodash": "^4.17.21", + "markdown-to-jsx": "^7.1.3", "memoizerific": "^1.11.3", "polished": "^4.0.5", "qs": "^6.10.0", @@ -68708,20 +68436,10 @@ "tslib": "^2.3.0" } }, - "markdown-to-jsx": { - "version": "6.11.4", - "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-6.11.4.tgz", - "integrity": "sha512-3lRCD5Sh+tfA52iGgfs/XZiw33f7fFX9Bn55aNnVNUd2GzLDkOWyKYYD8Yju2B1Vn+feiEdgJs8T6Tg0xNokPw==", - "dev": true, - "requires": { - "prop-types": "^15.6.2", - "unquote": "^1.1.0" - } - }, "react-helmet-async": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/react-helmet-async/-/react-helmet-async-1.1.2.tgz", - "integrity": "sha512-LTTzDDkyIleT/JJ6T/uqx7Y8qi1EuPPSiJawQY/nHHz0h7SPDT6HxP1YDDQx/fzcVxCqpWEEMS3QdrSrNkJYhg==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/react-helmet-async/-/react-helmet-async-1.2.3.tgz", + "integrity": "sha512-mCk2silF53Tq/YaYdkl2sB+/tDoPnaxN7dFS/6ZLJb/rhUY2EWGI5Xj2b4jHppScMqY45MbgPSwTxDchKpZ5Kw==", "dev": true, "requires": { "@babel/runtime": "^7.12.5", @@ -68739,10 +68457,10 @@ "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", "dev": true }, - "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==", + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", "dev": true }, "css-loader": { @@ -68805,15 +68523,6 @@ } } }, - "dotenv-webpack": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/dotenv-webpack/-/dotenv-webpack-1.8.0.tgz", - "integrity": "sha512-o8pq6NLBehtrqA8Jv8jFQNtG9nhRtVqmoD4yWbgUyoU3+9WBlPe+c2EAiaJok9RB28QvrWvdWLZGeTT5aATDMg==", - "dev": true, - "requires": { - "dotenv-defaults": "^1.0.2" - } - }, "file-loader": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", @@ -68822,6 +68531,19 @@ "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" + } + } } }, "fork-ts-checker-webpack-plugin": { @@ -68891,6 +68613,52 @@ } } }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + }, + "dependencies": { + "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": { + "p-try": "^2.0.0" + } + } + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, "postcss-loader": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-4.3.0.tgz", @@ -68904,6 +68672,17 @@ "semver": "^7.3.4" }, "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" + } + }, "semver": { "version": "7.3.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", @@ -68923,6 +68702,37 @@ "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" + } + } + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "ssri": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", + "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1" } }, "style-loader": { @@ -68963,6 +68773,43 @@ "source-map": "^0.6.1", "terser": "^5.3.4", "webpack-sources": "^1.4.3" + }, + "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" + } + } + } + }, + "url-loader": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-4.1.1.tgz", + "integrity": "sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==", + "dev": true, + "requires": { + "loader-utils": "^2.0.0", + "mime-types": "^2.1.27", + "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" + } + } } }, "webpack": { @@ -69077,17 +68924,6 @@ "find-up": "^3.0.0" } }, - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - }, "serialize-javascript": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", @@ -69150,15 +68986,15 @@ } }, "@storybook/components": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/components/-/components-6.3.12.tgz", - "integrity": "sha512-kdQt8toUjynYAxDLrJzuG7YSNL6as1wJoyzNUaCfG06YPhvIAlKo7le9tS2mThVFN5e9nbKrW3N1V1sp6ypZXQ==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-6.4.19.tgz", + "integrity": "sha512-q/0V37YAJA7CNc+wSiiefeM9+3XVk8ixBNylY36QCGJgIeGQ5/79vPyUe6K4lLmsQwpmZsIq1s1Ad5+VbboeOA==", "dev": true, "requires": { "@popperjs/core": "^2.6.0", - "@storybook/client-logger": "6.3.12", - "@storybook/csf": "0.0.1", - "@storybook/theming": "6.3.12", + "@storybook/client-logger": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/theming": "6.4.19", "@types/color-convert": "^2.0.0", "@types/overlayscrollbars": "^1.12.0", "@types/react-syntax-highlighter": "11.0.5", @@ -69166,7 +69002,7 @@ "core-js": "^3.8.2", "fast-deep-equal": "^3.1.3", "global": "^4.4.0", - "lodash": "^4.17.20", + "lodash": "^4.17.21", "markdown-to-jsx": "^7.1.3", "memoizerific": "^1.11.3", "overlayscrollbars": "^1.13.1", @@ -69197,33 +69033,36 @@ } }, "@storybook/core": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/core/-/core-6.3.12.tgz", - "integrity": "sha512-FJm2ns8wk85hXWKslLWiUWRWwS9KWRq7jlkN6M9p57ghFseSGr4W71Orcoab4P3M7jI97l5yqBfppbscinE74g==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/core/-/core-6.4.19.tgz", + "integrity": "sha512-55LOQ/h/kf1jMhjN85t/pIEdIwWEG9yV7bdwv3niVvmoypCxyyjn9/QNK0RKYAeDSUtdm6FVoJ6k5CpxWz2d8w==", "dev": true, "requires": { - "@storybook/core-client": "6.3.12", - "@storybook/core-server": "6.3.12" + "@storybook/core-client": "6.4.19", + "@storybook/core-server": "6.4.19" }, "dependencies": { "@storybook/core-client": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/core-client/-/core-client-6.3.12.tgz", - "integrity": "sha512-8Smd9BgZHJpAdevLKQYinwtjSyCZAuBMoetP4P5hnn53mWl0NFbrHFaAdT+yNchDLZQUbf7Y18VmIqEH+RCR5w==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/core-client/-/core-client-6.4.19.tgz", + "integrity": "sha512-rQHRZjhArPleE7/S8ZUolgzwY+hC0smSKX/3PQxO2GcebDjnJj6+iSV3h+aSMHMmTdoCQvjYw9aBpT8scuRe+A==", "dev": true, "requires": { - "@storybook/addons": "6.3.12", - "@storybook/channel-postmessage": "6.3.12", - "@storybook/client-api": "6.3.12", - "@storybook/client-logger": "6.3.12", - "@storybook/core-events": "6.3.12", - "@storybook/csf": "0.0.1", - "@storybook/ui": "6.3.12", + "@storybook/addons": "6.4.19", + "@storybook/channel-postmessage": "6.4.19", + "@storybook/channel-websocket": "6.4.19", + "@storybook/client-api": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/preview-web": "6.4.19", + "@storybook/store": "6.4.19", + "@storybook/ui": "6.4.19", "airbnb-js-shims": "^2.2.1", "ansi-to-html": "^0.6.11", "core-js": "^3.8.2", "global": "^4.4.0", - "lodash": "^4.17.20", + "lodash": "^4.17.21", "qs": "^6.10.0", "regenerator-runtime": "^0.13.7", "ts-dedent": "^2.0.0", @@ -69232,22 +69071,21 @@ }, "dependencies": { "@storybook/ui": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/ui/-/ui-6.3.12.tgz", - "integrity": "sha512-PC2yEz4JMfarq7rUFbeA3hCA+31p5es7YPEtxLRvRwIZhtL0P4zQUfHpotb3KgWdoAIfZesAuoIQwMPQmEFYrw==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/ui/-/ui-6.4.19.tgz", + "integrity": "sha512-gFwdn5LA2U6oQ4bfUFLyHZnNasGQ01YVdwjbi+l6yjmnckBNtZfJoVTZ1rzGUbxSE9rK48InJRU+latTsr7xAg==", "dev": true, "requires": { "@emotion/core": "^10.1.1", - "@storybook/addons": "6.3.12", - "@storybook/api": "6.3.12", - "@storybook/channels": "6.3.12", - "@storybook/client-logger": "6.3.12", - "@storybook/components": "6.3.12", - "@storybook/core-events": "6.3.12", - "@storybook/router": "6.3.12", + "@storybook/addons": "6.4.19", + "@storybook/api": "6.4.19", + "@storybook/channels": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/components": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/router": "6.4.19", "@storybook/semver": "^7.3.2", - "@storybook/theming": "6.3.12", - "@types/markdown-to-jsx": "^6.11.3", + "@storybook/theming": "6.4.19", "copy-to-clipboard": "^3.3.1", "core-js": "^3.8.2", "core-js-pure": "^3.8.2", @@ -69255,8 +69093,8 @@ "emotion-theming": "^10.0.27", "fuse.js": "^3.6.1", "global": "^4.4.0", - "lodash": "^4.17.20", - "markdown-to-jsx": "^6.11.4", + "lodash": "^4.17.21", + "markdown-to-jsx": "^7.1.3", "memoizerific": "^1.11.3", "polished": "^4.0.5", "qs": "^6.10.0", @@ -69269,21 +69107,65 @@ }, "dependencies": { "@storybook/router": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.3.12.tgz", - "integrity": "sha512-G/pNGCnrJRetCwyEZulHPT+YOcqEj/vkPVDTUfii2qgqukup6K0cjwgd7IukAURnAnnzTi1gmgFuEKUi8GE/KA==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.4.19.tgz", + "integrity": "sha512-KWWwIzuyeEIWVezkCihwY2A76Il9tUNg0I410g9qT7NrEsKyqXGRYOijWub7c1GGyNjLqz0jtrrehtixMcJkuA==", "dev": true, "requires": { - "@reach/router": "^1.3.4", - "@storybook/client-logger": "6.3.12", - "@types/reach__router": "^1.3.7", + "@storybook/client-logger": "6.4.19", "core-js": "^3.8.2", "fast-deep-equal": "^3.1.3", "global": "^4.4.0", - "lodash": "^4.17.20", + "history": "5.0.0", + "lodash": "^4.17.21", "memoizerific": "^1.11.3", "qs": "^6.10.0", + "react-router": "^6.0.0", + "react-router-dom": "^6.0.0", "ts-dedent": "^2.0.0" + }, + "dependencies": { + "react-router": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.2.2.tgz", + "integrity": "sha512-/MbxyLzd7Q7amp4gDOGaYvXwhEojkJD5BtExkuKmj39VEE0m3l/zipf6h2WIB2jyAO0lI6NGETh4RDcktRm4AQ==", + "dev": true, + "requires": { + "history": "^5.2.0" + }, + "dependencies": { + "history": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/history/-/history-5.3.0.tgz", + "integrity": "sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.6" + } + } + } + }, + "react-router-dom": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.2.2.tgz", + "integrity": "sha512-AtYEsAST7bDD4dLSQHDnk/qxWLJdad5t1HFa1qJyUrCeGgEuCSw0VB/27ARbF9Fi/W5598ujvJOm3ujUCVzuYQ==", + "dev": true, + "requires": { + "history": "^5.2.0", + "react-router": "6.2.2" + }, + "dependencies": { + "history": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/history/-/history-5.3.0.tgz", + "integrity": "sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.6" + } + } + } + } } }, "downshift": { @@ -69299,20 +69181,10 @@ "tslib": "^2.3.0" } }, - "markdown-to-jsx": { - "version": "6.11.4", - "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-6.11.4.tgz", - "integrity": "sha512-3lRCD5Sh+tfA52iGgfs/XZiw33f7fFX9Bn55aNnVNUd2GzLDkOWyKYYD8Yju2B1Vn+feiEdgJs8T6Tg0xNokPw==", - "dev": true, - "requires": { - "prop-types": "^15.6.2", - "unquote": "^1.1.0" - } - }, "react-helmet-async": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/react-helmet-async/-/react-helmet-async-1.1.2.tgz", - "integrity": "sha512-LTTzDDkyIleT/JJ6T/uqx7Y8qi1EuPPSiJawQY/nHHz0h7SPDT6HxP1YDDQx/fzcVxCqpWEEMS3QdrSrNkJYhg==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/react-helmet-async/-/react-helmet-async-1.2.3.tgz", + "integrity": "sha512-mCk2silF53Tq/YaYdkl2sB+/tDoPnaxN7dFS/6ZLJb/rhUY2EWGI5Xj2b4jHppScMqY45MbgPSwTxDchKpZ5Kw==", "dev": true, "requires": { "@babel/runtime": "^7.12.5", @@ -69327,51 +69199,59 @@ } }, "@storybook/core-server": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/core-server/-/core-server-6.3.12.tgz", - "integrity": "sha512-T/Mdyi1FVkUycdyOnhXvoo3d9nYXLQFkmaJkltxBFLzAePAJUSgAsPL9odNC3+p8Nr2/UDsDzvu/Ow0IF0mzLQ==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/core-server/-/core-server-6.4.19.tgz", + "integrity": "sha512-bKsUB9f7hl5ya2JXxpIrErmbDQjoH39FVbzYZWjMo4t/b7+Xyi6vYadwyWcqlpUQmis09ZaSMv8L/Tw0TuwLAA==", "dev": true, "requires": { "@discoveryjs/json-ext": "^0.5.3", - "@storybook/builder-webpack4": "6.3.12", - "@storybook/core-client": "6.3.12", - "@storybook/core-common": "6.3.12", - "@storybook/csf-tools": "6.3.12", - "@storybook/manager-webpack4": "6.3.12", - "@storybook/node-logger": "6.3.12", + "@storybook/builder-webpack4": "6.4.19", + "@storybook/core-client": "6.4.19", + "@storybook/core-common": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/csf-tools": "6.4.19", + "@storybook/manager-webpack4": "6.4.19", + "@storybook/node-logger": "6.4.19", "@storybook/semver": "^7.3.2", + "@storybook/store": "6.4.19", "@types/node": "^14.0.10", "@types/node-fetch": "^2.5.7", "@types/pretty-hrtime": "^1.0.0", "@types/webpack": "^4.41.26", "better-opn": "^2.1.1", - "boxen": "^4.2.0", + "boxen": "^5.1.2", "chalk": "^4.1.0", - "cli-table3": "0.6.0", + "cli-table3": "^0.6.1", "commander": "^6.2.1", "compression": "^1.7.4", "core-js": "^3.8.2", - "cpy": "^8.1.1", + "cpy": "^8.1.2", "detect-port": "^1.3.0", "express": "^4.17.1", "file-system-cache": "^1.0.5", "fs-extra": "^9.0.1", "globby": "^11.0.2", "ip": "^1.1.5", + "lodash": "^4.17.21", "node-fetch": "^2.6.1", "pretty-hrtime": "^1.0.3", "prompts": "^2.4.0", "regenerator-runtime": "^0.13.7", "serve-favicon": "^2.5.0", + "slash": "^3.0.0", + "telejson": "^5.3.3", "ts-dedent": "^2.0.0", "util-deprecate": "^1.0.2", - "webpack": "4" + "watchpack": "^2.2.0", + "webpack": "4", + "ws": "^8.2.3" }, "dependencies": { "@storybook/core-common": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-6.3.12.tgz", - "integrity": "sha512-xlHs2QXELq/moB4MuXjYOczaxU64BIseHsnFBLyboJYN6Yso3qihW5RB7cuJlGohkjb4JwY74dvfT4Ww66rkBA==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-6.4.19.tgz", + "integrity": "sha512-X1pJJkO48DFxl6iyEemIKqRkJ7j9/cBh3BRBUr+xZHXBvnD0GKDXIocwh0PjSxSC6XSu3UCQnqtKi3PbjRl8Dg==", "dev": true, "requires": { "@babel/core": "^7.12.10", @@ -69395,13 +69275,11 @@ "@babel/preset-react": "^7.12.10", "@babel/preset-typescript": "^7.12.7", "@babel/register": "^7.12.1", - "@storybook/node-logger": "6.3.12", + "@storybook/node-logger": "6.4.19", "@storybook/semver": "^7.3.2", - "@types/glob-base": "^0.3.0", - "@types/micromatch": "^4.0.1", "@types/node": "^14.0.10", "@types/pretty-hrtime": "^1.0.0", - "babel-loader": "^8.2.2", + "babel-loader": "^8.0.0", "babel-plugin-macros": "^3.0.1", "babel-plugin-polyfill-corejs3": "^0.1.0", "chalk": "^4.1.0", @@ -69410,43 +69288,45 @@ "file-system-cache": "^1.0.5", "find-up": "^5.0.0", "fork-ts-checker-webpack-plugin": "^6.0.4", + "fs-extra": "^9.0.1", "glob": "^7.1.6", - "glob-base": "^0.3.0", + "handlebars": "^4.7.7", "interpret": "^2.2.0", "json5": "^2.1.3", "lazy-universal-dotenv": "^3.0.1", - "micromatch": "^4.0.2", + "picomatch": "^2.3.0", "pkg-dir": "^5.0.0", "pretty-hrtime": "^1.0.3", "resolve-from": "^5.0.0", + "slash": "^3.0.0", + "telejson": "^5.3.2", "ts-dedent": "^2.0.0", "util-deprecate": "^1.0.2", "webpack": "4" } }, "@storybook/manager-webpack4": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/manager-webpack4/-/manager-webpack4-6.3.12.tgz", - "integrity": "sha512-OkPYNrHXg2yZfKmEfTokP6iKx4OLTr0gdI5yehi/bLEuQCSHeruxBc70Dxm1GBk1Mrf821wD9WqMXNDjY5Qtug==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/manager-webpack4/-/manager-webpack4-6.4.19.tgz", + "integrity": "sha512-R8ugZjTYqXvlc6gDOcw909L65sIleOmIJLZR+N6/H85MivGXHu39jOwONqB7tVACufRty4FNecn8tEiQL2SAKA==", "dev": true, "requires": { "@babel/core": "^7.12.10", "@babel/plugin-transform-template-literals": "^7.12.1", "@babel/preset-react": "^7.12.10", - "@storybook/addons": "6.3.12", - "@storybook/core-client": "6.3.12", - "@storybook/core-common": "6.3.12", - "@storybook/node-logger": "6.3.12", - "@storybook/theming": "6.3.12", - "@storybook/ui": "6.3.12", + "@storybook/addons": "6.4.19", + "@storybook/core-client": "6.4.19", + "@storybook/core-common": "6.4.19", + "@storybook/node-logger": "6.4.19", + "@storybook/theming": "6.4.19", + "@storybook/ui": "6.4.19", "@types/node": "^14.0.10", "@types/webpack": "^4.41.26", - "babel-loader": "^8.2.2", + "babel-loader": "^8.0.0", "case-sensitive-paths-webpack-plugin": "^2.3.0", "chalk": "^4.1.0", "core-js": "^3.8.2", "css-loader": "^3.6.0", - "dotenv-webpack": "^1.8.0", "express": "^4.17.1", "file-loader": "^6.2.0", "file-system-cache": "^1.0.5", @@ -69470,22 +69350,21 @@ }, "dependencies": { "@storybook/ui": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/ui/-/ui-6.3.12.tgz", - "integrity": "sha512-PC2yEz4JMfarq7rUFbeA3hCA+31p5es7YPEtxLRvRwIZhtL0P4zQUfHpotb3KgWdoAIfZesAuoIQwMPQmEFYrw==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/ui/-/ui-6.4.19.tgz", + "integrity": "sha512-gFwdn5LA2U6oQ4bfUFLyHZnNasGQ01YVdwjbi+l6yjmnckBNtZfJoVTZ1rzGUbxSE9rK48InJRU+latTsr7xAg==", "dev": true, "requires": { "@emotion/core": "^10.1.1", - "@storybook/addons": "6.3.12", - "@storybook/api": "6.3.12", - "@storybook/channels": "6.3.12", - "@storybook/client-logger": "6.3.12", - "@storybook/components": "6.3.12", - "@storybook/core-events": "6.3.12", - "@storybook/router": "6.3.12", + "@storybook/addons": "6.4.19", + "@storybook/api": "6.4.19", + "@storybook/channels": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/components": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/router": "6.4.19", "@storybook/semver": "^7.3.2", - "@storybook/theming": "6.3.12", - "@types/markdown-to-jsx": "^6.11.3", + "@storybook/theming": "6.4.19", "copy-to-clipboard": "^3.3.1", "core-js": "^3.8.2", "core-js-pure": "^3.8.2", @@ -69493,8 +69372,8 @@ "emotion-theming": "^10.0.27", "fuse.js": "^3.6.1", "global": "^4.4.0", - "lodash": "^4.17.20", - "markdown-to-jsx": "^6.11.4", + "lodash": "^4.17.21", + "markdown-to-jsx": "^7.1.3", "memoizerific": "^1.11.3", "polished": "^4.0.5", "qs": "^6.10.0", @@ -69507,21 +69386,65 @@ }, "dependencies": { "@storybook/router": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.3.12.tgz", - "integrity": "sha512-G/pNGCnrJRetCwyEZulHPT+YOcqEj/vkPVDTUfii2qgqukup6K0cjwgd7IukAURnAnnzTi1gmgFuEKUi8GE/KA==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.4.19.tgz", + "integrity": "sha512-KWWwIzuyeEIWVezkCihwY2A76Il9tUNg0I410g9qT7NrEsKyqXGRYOijWub7c1GGyNjLqz0jtrrehtixMcJkuA==", "dev": true, "requires": { - "@reach/router": "^1.3.4", - "@storybook/client-logger": "6.3.12", - "@types/reach__router": "^1.3.7", + "@storybook/client-logger": "6.4.19", "core-js": "^3.8.2", "fast-deep-equal": "^3.1.3", "global": "^4.4.0", - "lodash": "^4.17.20", + "history": "5.0.0", + "lodash": "^4.17.21", "memoizerific": "^1.11.3", "qs": "^6.10.0", + "react-router": "^6.0.0", + "react-router-dom": "^6.0.0", "ts-dedent": "^2.0.0" + }, + "dependencies": { + "react-router": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.2.2.tgz", + "integrity": "sha512-/MbxyLzd7Q7amp4gDOGaYvXwhEojkJD5BtExkuKmj39VEE0m3l/zipf6h2WIB2jyAO0lI6NGETh4RDcktRm4AQ==", + "dev": true, + "requires": { + "history": "^5.2.0" + }, + "dependencies": { + "history": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/history/-/history-5.3.0.tgz", + "integrity": "sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.6" + } + } + } + }, + "react-router-dom": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.2.2.tgz", + "integrity": "sha512-AtYEsAST7bDD4dLSQHDnk/qxWLJdad5t1HFa1qJyUrCeGgEuCSw0VB/27ARbF9Fi/W5598ujvJOm3ujUCVzuYQ==", + "dev": true, + "requires": { + "history": "^5.2.0", + "react-router": "6.2.2" + }, + "dependencies": { + "history": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/history/-/history-5.3.0.tgz", + "integrity": "sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.6" + } + } + } + } } }, "downshift": { @@ -69537,20 +69460,10 @@ "tslib": "^2.3.0" } }, - "markdown-to-jsx": { - "version": "6.11.4", - "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-6.11.4.tgz", - "integrity": "sha512-3lRCD5Sh+tfA52iGgfs/XZiw33f7fFX9Bn55aNnVNUd2GzLDkOWyKYYD8Yju2B1Vn+feiEdgJs8T6Tg0xNokPw==", - "dev": true, - "requires": { - "prop-types": "^15.6.2", - "unquote": "^1.1.0" - } - }, "react-helmet-async": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/react-helmet-async/-/react-helmet-async-1.1.2.tgz", - "integrity": "sha512-LTTzDDkyIleT/JJ6T/uqx7Y8qi1EuPPSiJawQY/nHHz0h7SPDT6HxP1YDDQx/fzcVxCqpWEEMS3QdrSrNkJYhg==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/react-helmet-async/-/react-helmet-async-1.2.3.tgz", + "integrity": "sha512-mCk2silF53Tq/YaYdkl2sB+/tDoPnaxN7dFS/6ZLJb/rhUY2EWGI5Xj2b4jHppScMqY45MbgPSwTxDchKpZ5Kw==", "dev": true, "requires": { "@babel/runtime": "^7.12.5", @@ -69564,198 +69477,371 @@ } } }, - "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" - } - }, - "chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "dev": true - }, - "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==", + "css-loader": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-3.6.0.tgz", + "integrity": "sha512-M5lSukoWi1If8dhQAUCvj4H8vUt3vOnwbQBH9DdTm/s4Ym2B/3dPMtYZeJmq7Q3S3Pa+I94DcZ7pc9bP14cWIQ==", "dev": true, "requires": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" + "camelcase": "^5.3.1", + "cssesc": "^3.0.0", + "icss-utils": "^4.1.1", + "loader-utils": "^1.2.3", + "normalize-path": "^3.0.0", + "postcss": "^7.0.32", + "postcss-modules-extract-imports": "^2.0.0", + "postcss-modules-local-by-default": "^3.0.2", + "postcss-modules-scope": "^2.2.0", + "postcss-modules-values": "^3.0.0", + "postcss-value-parser": "^4.1.0", + "schema-utils": "^2.7.0", + "semver": "^6.3.0" }, "dependencies": { - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", "dev": true, "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "minimist": "^1.2.0" } }, - "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==", + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "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": { - "find-up": "^4.0.0" + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.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" - } - }, - "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, - "requires": { - "yallist": "^4.0.0" - } - }, - "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" - } - }, - "micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "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": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" + "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" + } + } } }, - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "html-webpack-plugin": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-4.5.2.tgz", + "integrity": "sha512-q5oYdzjKUIPQVjOosjgvCHQOv9Ett9CYYHlgvJeXG0qQvdSojnBq4vAdQBwn1+yGveAwHCoe/rMR86ozX3+c2A==", "dev": true, "requires": { - "glob": "^7.1.3" + "@types/html-minifier-terser": "^5.0.0", + "@types/tapable": "^1.0.5", + "@types/webpack": "^4.41.8", + "html-minifier-terser": "^5.0.1", + "loader-utils": "^1.2.3", + "lodash": "^4.17.20", + "pretty-error": "^2.1.1", + "tapable": "^1.1.3", + "util.promisify": "1.0.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + } } }, - "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "style-loader": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-1.3.0.tgz", + "integrity": "sha512-V7TCORko8rs9rIqkSrlMfkqA63DfoGBBJmK1kKGCcSi+BWb4cqz0SRsnp4l6rU5iwOEd0/2ePv68SV22VXon4Q==", "dev": true, "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" + "loader-utils": "^2.0.0", + "schema-utils": "^2.7.0" + }, + "dependencies": { + "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": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + } + } } }, - "serialize-javascript": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", - "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", + "terser-webpack-plugin": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-4.2.3.tgz", + "integrity": "sha512-jTgXh40RnvOrLQNgIkwEKnQ8rmHjHK4u+6UBEi+W+FPmvb+uo+chJXntKe7/3lW5mNysgSWD60KyesnhW8D6MQ==", "dev": true, "requires": { - "randombytes": "^2.1.0" + "cacache": "^15.0.5", + "find-cache-dir": "^3.3.1", + "jest-worker": "^26.5.0", + "p-limit": "^3.0.2", + "schema-utils": "^3.0.0", + "serialize-javascript": "^5.0.1", + "source-map": "^0.6.1", + "terser": "^5.3.4", + "webpack-sources": "^1.4.3" + }, + "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" + } + } } }, - "ssri": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", - "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", + "url-loader": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-4.1.1.tgz", + "integrity": "sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==", "dev": true, "requires": { - "minipass": "^3.1.1" + "loader-utils": "^2.0.0", + "mime-types": "^2.1.27", + "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" + } + } } }, - "terser": { - "version": "5.9.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.9.0.tgz", - "integrity": "sha512-h5hxa23sCdpzcye/7b8YqbE5OwKca/ni0RQz1uRX3tGh8haaGHqcuSqbGRybuAKNdntZ0mDgFNXPJ48xQ2RXKQ==", + "webpack": { + "version": "4.46.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.46.0.tgz", + "integrity": "sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q==", "dev": true, "requires": { - "commander": "^2.20.0", - "source-map": "~0.7.2", - "source-map-support": "~0.5.20" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/wasm-edit": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "acorn": "^6.4.1", + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^4.5.0", + "eslint-scope": "^4.0.3", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.4.0", + "loader-utils": "^1.2.3", + "memory-fs": "^0.4.1", + "micromatch": "^3.1.10", + "mkdirp": "^0.5.3", + "neo-async": "^2.6.1", + "node-libs-browser": "^2.2.1", + "schema-utils": "^1.0.0", + "tapable": "^1.1.3", + "terser-webpack-plugin": "^1.4.3", + "watchpack": "^1.7.4", + "webpack-sources": "^1.4.1" }, "dependencies": { + "cacache": { + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", + "dev": true, + "requires": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + } + }, "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==", "dev": true }, - "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.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" + } + }, + "terser": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", + "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", + "dev": true, + "requires": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + } + }, + "terser-webpack-plugin": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz", + "integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==", + "dev": true, + "requires": { + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", + "is-wsl": "^1.1.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^4.0.0", + "source-map": "^0.6.1", + "terser": "^4.1.2", + "webpack-sources": "^1.4.0", + "worker-farm": "^1.7.0" + } + }, + "watchpack": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz", + "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==", + "dev": true, + "requires": { + "chokidar": "^3.4.1", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0", + "watchpack-chokidar2": "^2.0.1" + } } } }, - "terser-webpack-plugin": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-4.2.3.tgz", - "integrity": "sha512-jTgXh40RnvOrLQNgIkwEKnQ8rmHjHK4u+6UBEi+W+FPmvb+uo+chJXntKe7/3lW5mNysgSWD60KyesnhW8D6MQ==", + "webpack-dev-middleware": { + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz", + "integrity": "sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ==", "dev": true, "requires": { - "cacache": "^15.0.5", - "find-cache-dir": "^3.3.1", - "jest-worker": "^26.5.0", - "p-limit": "^3.0.2", - "schema-utils": "^3.0.0", - "serialize-javascript": "^5.0.1", - "source-map": "^0.6.1", - "terser": "^5.3.4", - "webpack-sources": "^1.4.3" + "memory-fs": "^0.4.1", + "mime": "^2.4.4", + "mkdirp": "^0.5.1", + "range-parser": "^1.2.1", + "webpack-log": "^2.0.0" } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true } } }, @@ -69776,174 +69862,26 @@ "resolve": "^1.19.0" } }, - "cacache": { - "version": "12.0.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", - "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", - "dev": true, - "requires": { - "bluebird": "^3.5.5", - "chownr": "^1.1.1", - "figgy-pudding": "^3.5.1", - "glob": "^7.1.4", - "graceful-fs": "^4.1.15", - "infer-owner": "^1.0.3", - "lru-cache": "^5.1.1", - "mississippi": "^3.0.0", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "promise-inflight": "^1.0.1", - "rimraf": "^2.6.3", - "ssri": "^6.0.1", - "unique-filename": "^1.1.1", - "y18n": "^4.0.0" - } - }, - "css-loader": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-3.6.0.tgz", - "integrity": "sha512-M5lSukoWi1If8dhQAUCvj4H8vUt3vOnwbQBH9DdTm/s4Ym2B/3dPMtYZeJmq7Q3S3Pa+I94DcZ7pc9bP14cWIQ==", - "dev": true, - "requires": { - "camelcase": "^5.3.1", - "cssesc": "^3.0.0", - "icss-utils": "^4.1.1", - "loader-utils": "^1.2.3", - "normalize-path": "^3.0.0", - "postcss": "^7.0.32", - "postcss-modules-extract-imports": "^2.0.0", - "postcss-modules-local-by-default": "^3.0.2", - "postcss-modules-scope": "^2.2.0", - "postcss-modules-values": "^3.0.0", - "postcss-value-parser": "^4.1.0", - "schema-utils": "^2.7.0", - "semver": "^6.3.0" - }, - "dependencies": { - "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": { - "@types/json-schema": "^7.0.5", - "ajv": "^6.12.4", - "ajv-keywords": "^3.5.2" - } - } - } - }, - "dotenv-webpack": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/dotenv-webpack/-/dotenv-webpack-1.8.0.tgz", - "integrity": "sha512-o8pq6NLBehtrqA8Jv8jFQNtG9nhRtVqmoD4yWbgUyoU3+9WBlPe+c2EAiaJok9RB28QvrWvdWLZGeTT5aATDMg==", - "dev": true, - "requires": { - "dotenv-defaults": "^1.0.2" - } - }, - "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": { - "loader-utils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", - "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - }, - "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" - } - } - } - }, - "find-cache-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", - "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" - }, - "dependencies": { - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", - "dev": true, - "requires": { - "find-up": "^3.0.0" - } - } - } + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true }, - "html-webpack-plugin": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-4.5.2.tgz", - "integrity": "sha512-q5oYdzjKUIPQVjOosjgvCHQOv9Ett9CYYHlgvJeXG0qQvdSojnBq4vAdQBwn1+yGveAwHCoe/rMR86ozX3+c2A==", - "dev": true, - "requires": { - "@types/html-minifier-terser": "^5.0.0", - "@types/tapable": "^1.0.5", - "@types/webpack": "^4.41.8", - "html-minifier-terser": "^5.0.1", - "loader-utils": "^1.2.3", - "lodash": "^4.17.20", - "pretty-error": "^2.1.1", - "tapable": "^1.1.3", - "util.promisify": "1.0.0" - } + "commander": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "dev": true }, - "loader-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", - "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", "dev": true, "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - }, - "dependencies": { - "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - } + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" } }, "lru-cache": { @@ -69955,202 +69893,161 @@ "yallist": "^3.0.2" } }, - "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": { - "p-limit": "^2.2.0" - }, - "dependencies": { - "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": { - "p-try": "^2.0.0" - } - } - } - }, - "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 - }, - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - }, - "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" - } - }, - "style-loader": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-1.3.0.tgz", - "integrity": "sha512-V7TCORko8rs9rIqkSrlMfkqA63DfoGBBJmK1kKGCcSi+BWb4cqz0SRsnp4l6rU5iwOEd0/2ePv68SV22VXon4Q==", + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", "dev": true, "requires": { - "loader-utils": "^2.0.0", - "schema-utils": "^2.7.0" - }, - "dependencies": { - "loader-utils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", - "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - }, - "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": { - "@types/json-schema": "^7.0.5", - "ajv": "^6.12.4", - "ajv-keywords": "^3.5.2" - } + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true } } }, - "terser": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", - "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", "dev": true, "requires": { - "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" + "p-limit": "^2.0.0" }, "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==", - "dev": true + "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": { + "p-try": "^2.0.0" + } } } }, - "terser-webpack-plugin": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz", - "integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==", + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", "dev": true, "requires": { - "cacache": "^12.0.2", - "find-cache-dir": "^2.1.0", - "is-wsl": "^1.1.0", - "schema-utils": "^1.0.0", - "serialize-javascript": "^4.0.0", - "source-map": "^0.6.1", - "terser": "^4.1.2", - "webpack-sources": "^1.4.0", - "worker-farm": "^1.7.0" + "glob": "^7.1.3" } }, - "webpack": { - "version": "4.46.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.46.0.tgz", - "integrity": "sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q==", + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "ssri": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", + "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-module-context": "1.9.0", - "@webassemblyjs/wasm-edit": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0", - "acorn": "^6.4.1", - "ajv": "^6.10.2", - "ajv-keywords": "^3.4.1", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^4.5.0", - "eslint-scope": "^4.0.3", - "json-parse-better-errors": "^1.0.2", - "loader-runner": "^2.4.0", - "loader-utils": "^1.2.3", - "memory-fs": "^0.4.1", - "micromatch": "^3.1.10", - "mkdirp": "^0.5.3", - "neo-async": "^2.6.1", - "node-libs-browser": "^2.2.1", - "schema-utils": "^1.0.0", - "tapable": "^1.1.3", - "terser-webpack-plugin": "^1.4.3", - "watchpack": "^1.7.4", - "webpack-sources": "^1.4.1" + "figgy-pudding": "^3.5.1" } }, - "webpack-dev-middleware": { - "version": "3.7.3", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz", - "integrity": "sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ==", + "watchpack": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz", + "integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==", "dev": true, "requires": { - "memory-fs": "^0.4.1", - "mime": "^2.4.4", - "mkdirp": "^0.5.1", - "range-parser": "^1.2.1", - "webpack-log": "^2.0.0" + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" } } } }, + "@storybook/preview-web": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/preview-web/-/preview-web-6.4.19.tgz", + "integrity": "sha512-jqltoBv5j7lvnxEfV9w8dLX9ASWGuvgz97yg8Yo5FqkftEwrHJenyvMGcTgDJKJPorF+wiz/9aIqnmd3LCAcZQ==", + "dev": true, + "requires": { + "@storybook/addons": "6.4.19", + "@storybook/channel-postmessage": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/store": "6.4.19", + "ansi-to-html": "^0.6.11", + "core-js": "^3.8.2", + "global": "^4.4.0", + "lodash": "^4.17.21", + "qs": "^6.10.0", + "regenerator-runtime": "^0.13.7", + "synchronous-promise": "^2.0.15", + "ts-dedent": "^2.0.0", + "unfetch": "^4.2.0", + "util-deprecate": "^1.0.2" + } + }, "@storybook/source-loader": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/source-loader/-/source-loader-6.3.12.tgz", - "integrity": "sha512-Lfe0LOJGqAJYkZsCL8fhuQOeFSCgv8xwQCt4dkcBd0Rw5zT2xv0IXDOiIOXGaWBMDtrJUZt/qOXPEPlL81Oaqg==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/source-loader/-/source-loader-6.4.19.tgz", + "integrity": "sha512-XqTsqddRglvfW7mhyjwoqd/B8L6samcBehhO0OEbsFp6FPWa9eXuObCxtRYIcjcSIe+ksbW3D/54ppEs1L/g1Q==", "dev": true, "requires": { - "@storybook/addons": "6.3.12", - "@storybook/client-logger": "6.3.12", - "@storybook/csf": "0.0.1", + "@storybook/addons": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", "core-js": "^3.8.2", "estraverse": "^5.2.0", "global": "^4.4.0", "loader-utils": "^2.0.0", - "lodash": "^4.17.20", - "prettier": "~2.2.1", + "lodash": "^4.17.21", + "prettier": ">=2.2.1 <=2.3.0", "regenerator-runtime": "^0.13.7" } }, + "@storybook/store": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/store/-/store-6.4.19.tgz", + "integrity": "sha512-N9/ZjemRHGfT3InPIbqQqc6snkcfnf3Qh9oOr0smbfaVGJol//KOX65kzzobtzFcid0WxtTDZ3HmgFVH+GvuhQ==", + "dev": true, + "requires": { + "@storybook/addons": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "core-js": "^3.8.2", + "fast-deep-equal": "^3.1.3", + "global": "^4.4.0", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "regenerator-runtime": "^0.13.7", + "slash": "^3.0.0", + "stable": "^0.1.8", + "synchronous-promise": "^2.0.15", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + } + }, "@storybook/theming": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.3.12.tgz", - "integrity": "sha512-wOJdTEa/VFyFB2UyoqyYGaZdym6EN7RALuQOAMT6zHA282FBmKw8nL5DETHEbctpnHdcrMC/391teK4nNSrdOA==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.4.19.tgz", + "integrity": "sha512-V4pWmTvAxmbHR6B3jA4hPkaxZPyExHvCToy7b76DpUTpuHihijNDMAn85KhOQYIeL9q14zP/aiz899tOHsOidg==", "dev": true, "requires": { "@emotion/core": "^10.1.1", "@emotion/is-prop-valid": "^0.8.6", "@emotion/styled": "^10.0.27", - "@storybook/client-logger": "6.3.12", + "@storybook/client-logger": "6.4.19", "core-js": "^3.8.2", "deep-object-diff": "^1.1.0", "emotion-theming": "^10.0.27", @@ -70162,56 +70059,113 @@ }, "dependencies": { "@emotion/styled": { - "version": "10.0.27", - "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-10.0.27.tgz", - "integrity": "sha512-iK/8Sh7+NLJzyp9a5+vIQIXTYxfT4yB/OJbjzQanB2RZpvmzBQOHZWhpAMZWYEKRNNbsD6WfBw5sVWkb6WzS/Q==", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-10.3.0.tgz", + "integrity": "sha512-GgcUpXBBEU5ido+/p/mCT2/Xx+Oqmp9JzQRuC+a4lYM4i4LBBn/dWvc0rQ19N9ObA8/T4NWMrPNe79kMBDJqoQ==", "dev": true, "requires": { - "@emotion/styled-base": "^10.0.27", + "@emotion/styled-base": "^10.3.0", "babel-plugin-emotion": "^10.0.27" + }, + "dependencies": { + "@emotion/styled-base": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@emotion/styled-base/-/styled-base-10.3.0.tgz", + "integrity": "sha512-PBRqsVKR7QRNkmfH78hTSSwHWcwDpecH9W6heujWAcyp2wdz/64PP73s7fWS1dIPm8/Exc8JAzYS8dEWXjv60w==", + "dev": true, + "requires": { + "@babel/runtime": "^7.5.5", + "@emotion/is-prop-valid": "0.8.8", + "@emotion/serialize": "^0.11.15", + "@emotion/utils": "0.11.3" + } + } } } } }, - "chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true - }, - "commander": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", - "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", - "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": { + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + } + } }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "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": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "dependencies": { + "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" + } + }, + "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": { + "find-up": "^4.0.0" + } + } } }, - "make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "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": { - "pify": "^4.0.1", - "semver": "^5.6.0" + "p-locate": "^4.1.0" } }, "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "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": { - "p-limit": "^2.0.0" + "p-limit": "^2.2.0" }, "dependencies": { "p-limit": { @@ -70225,28 +70179,50 @@ } } }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true + "react-element-to-jsx-string": { + "version": "14.3.4", + "resolved": "https://registry.npmjs.org/react-element-to-jsx-string/-/react-element-to-jsx-string-14.3.4.tgz", + "integrity": "sha512-t4ZwvV6vwNxzujDQ+37bspnLwA4JlgUPWhLjBJWsNIDceAf6ZKUTCjdm08cN6WeZ5pTMKiCJkmAYnpmR4Bm+dg==", + "dev": true, + "requires": { + "@base2/pretty-print-object": "1.0.1", + "is-plain-object": "5.0.0", + "react-is": "17.0.2" + } }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "serialize-javascript": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", + "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", "dev": true, "requires": { - "glob": "^7.1.3" + "randombytes": "^2.1.0" } }, - "ssri": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", - "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", + "terser": { + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.12.1.tgz", + "integrity": "sha512-NXbs+7nisos5E+yXwAD+y7zrcTkMqb0dEJxIGtSKPdCBzopf7ni4odPul2aechpV7EXNvOudYOX2bb5tln1jbQ==", "dev": true, "requires": { - "figgy-pudding": "^3.5.1" + "acorn": "^8.5.0", + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.20" + }, + "dependencies": { + "acorn": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", + "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", + "dev": true + }, + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true + } } }, "yallist": { @@ -70257,31 +70233,254 @@ } } }, + "@storybook/addon-measure": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-6.4.19.tgz", + "integrity": "sha512-PXeU0AlpnGEvnzBQ6snkzmlIpwE0ci8LdFtL1Vz1V1Xk5fbuETWYuEkPuk1oZ7L9igB9cfT32SyJlE5MC1iaGg==", + "dev": true, + "requires": { + "@storybook/addons": "6.4.19", + "@storybook/api": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/components": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "core-js": "^3.8.2", + "global": "^4.4.0" + }, + "dependencies": { + "@storybook/components": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-6.4.19.tgz", + "integrity": "sha512-q/0V37YAJA7CNc+wSiiefeM9+3XVk8ixBNylY36QCGJgIeGQ5/79vPyUe6K4lLmsQwpmZsIq1s1Ad5+VbboeOA==", + "dev": true, + "requires": { + "@popperjs/core": "^2.6.0", + "@storybook/client-logger": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/theming": "6.4.19", + "@types/color-convert": "^2.0.0", + "@types/overlayscrollbars": "^1.12.0", + "@types/react-syntax-highlighter": "11.0.5", + "color-convert": "^2.0.1", + "core-js": "^3.8.2", + "fast-deep-equal": "^3.1.3", + "global": "^4.4.0", + "lodash": "^4.17.21", + "markdown-to-jsx": "^7.1.3", + "memoizerific": "^1.11.3", + "overlayscrollbars": "^1.13.1", + "polished": "^4.0.5", + "prop-types": "^15.7.2", + "react-colorful": "^5.1.2", + "react-popper-tooltip": "^3.1.1", + "react-syntax-highlighter": "^13.5.3", + "react-textarea-autosize": "^8.3.0", + "regenerator-runtime": "^0.13.7", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + }, + "dependencies": { + "@storybook/theming": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.4.19.tgz", + "integrity": "sha512-V4pWmTvAxmbHR6B3jA4hPkaxZPyExHvCToy7b76DpUTpuHihijNDMAn85KhOQYIeL9q14zP/aiz899tOHsOidg==", + "dev": true, + "requires": { + "@emotion/core": "^10.1.1", + "@emotion/is-prop-valid": "^0.8.6", + "@emotion/styled": "^10.0.27", + "@storybook/client-logger": "6.4.19", + "core-js": "^3.8.2", + "deep-object-diff": "^1.1.0", + "emotion-theming": "^10.0.27", + "global": "^4.4.0", + "memoizerific": "^1.11.3", + "polished": "^4.0.5", + "resolve-from": "^5.0.0", + "ts-dedent": "^2.0.0" + }, + "dependencies": { + "@emotion/styled": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-10.3.0.tgz", + "integrity": "sha512-GgcUpXBBEU5ido+/p/mCT2/Xx+Oqmp9JzQRuC+a4lYM4i4LBBn/dWvc0rQ19N9ObA8/T4NWMrPNe79kMBDJqoQ==", + "dev": true, + "requires": { + "@emotion/styled-base": "^10.3.0", + "babel-plugin-emotion": "^10.0.27" + }, + "dependencies": { + "@emotion/styled-base": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@emotion/styled-base/-/styled-base-10.3.0.tgz", + "integrity": "sha512-PBRqsVKR7QRNkmfH78hTSSwHWcwDpecH9W6heujWAcyp2wdz/64PP73s7fWS1dIPm8/Exc8JAzYS8dEWXjv60w==", + "dev": true, + "requires": { + "@babel/runtime": "^7.5.5", + "@emotion/is-prop-valid": "0.8.8", + "@emotion/serialize": "^0.11.15", + "@emotion/utils": "0.11.3" + } + } + } + } + } + }, + "react-syntax-highlighter": { + "version": "13.5.3", + "resolved": "https://registry.npmjs.org/react-syntax-highlighter/-/react-syntax-highlighter-13.5.3.tgz", + "integrity": "sha512-crPaF+QGPeHNIblxxCdf2Lg936NAHKhNhuMzRL3F9ct6aYXL3NcZtCL0Rms9+qVo6Y1EQLdXGypBNSbPL/r+qg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.3.1", + "highlight.js": "^10.1.1", + "lowlight": "^1.14.0", + "prismjs": "^1.21.0", + "refractor": "^3.1.0" + } + } + } + } + } + }, + "@storybook/addon-outline": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/addon-outline/-/addon-outline-6.4.19.tgz", + "integrity": "sha512-7ZDXo8qrms6dx0KRP9PInXIie82h5g9XCNrGOUdfZkQPvgofJVj0kNv6p+WOiGiaVfKPC5KMgIofqzBTFV+k6Q==", + "dev": true, + "requires": { + "@storybook/addons": "6.4.19", + "@storybook/api": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/components": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "core-js": "^3.8.2", + "global": "^4.4.0", + "regenerator-runtime": "^0.13.7", + "ts-dedent": "^2.0.0" + }, + "dependencies": { + "@storybook/components": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-6.4.19.tgz", + "integrity": "sha512-q/0V37YAJA7CNc+wSiiefeM9+3XVk8ixBNylY36QCGJgIeGQ5/79vPyUe6K4lLmsQwpmZsIq1s1Ad5+VbboeOA==", + "dev": true, + "requires": { + "@popperjs/core": "^2.6.0", + "@storybook/client-logger": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/theming": "6.4.19", + "@types/color-convert": "^2.0.0", + "@types/overlayscrollbars": "^1.12.0", + "@types/react-syntax-highlighter": "11.0.5", + "color-convert": "^2.0.1", + "core-js": "^3.8.2", + "fast-deep-equal": "^3.1.3", + "global": "^4.4.0", + "lodash": "^4.17.21", + "markdown-to-jsx": "^7.1.3", + "memoizerific": "^1.11.3", + "overlayscrollbars": "^1.13.1", + "polished": "^4.0.5", + "prop-types": "^15.7.2", + "react-colorful": "^5.1.2", + "react-popper-tooltip": "^3.1.1", + "react-syntax-highlighter": "^13.5.3", + "react-textarea-autosize": "^8.3.0", + "regenerator-runtime": "^0.13.7", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + }, + "dependencies": { + "@storybook/theming": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.4.19.tgz", + "integrity": "sha512-V4pWmTvAxmbHR6B3jA4hPkaxZPyExHvCToy7b76DpUTpuHihijNDMAn85KhOQYIeL9q14zP/aiz899tOHsOidg==", + "dev": true, + "requires": { + "@emotion/core": "^10.1.1", + "@emotion/is-prop-valid": "^0.8.6", + "@emotion/styled": "^10.0.27", + "@storybook/client-logger": "6.4.19", + "core-js": "^3.8.2", + "deep-object-diff": "^1.1.0", + "emotion-theming": "^10.0.27", + "global": "^4.4.0", + "memoizerific": "^1.11.3", + "polished": "^4.0.5", + "resolve-from": "^5.0.0", + "ts-dedent": "^2.0.0" + }, + "dependencies": { + "@emotion/styled": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-10.3.0.tgz", + "integrity": "sha512-GgcUpXBBEU5ido+/p/mCT2/Xx+Oqmp9JzQRuC+a4lYM4i4LBBn/dWvc0rQ19N9ObA8/T4NWMrPNe79kMBDJqoQ==", + "dev": true, + "requires": { + "@emotion/styled-base": "^10.3.0", + "babel-plugin-emotion": "^10.0.27" + }, + "dependencies": { + "@emotion/styled-base": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@emotion/styled-base/-/styled-base-10.3.0.tgz", + "integrity": "sha512-PBRqsVKR7QRNkmfH78hTSSwHWcwDpecH9W6heujWAcyp2wdz/64PP73s7fWS1dIPm8/Exc8JAzYS8dEWXjv60w==", + "dev": true, + "requires": { + "@babel/runtime": "^7.5.5", + "@emotion/is-prop-valid": "0.8.8", + "@emotion/serialize": "^0.11.15", + "@emotion/utils": "0.11.3" + } + } + } + } + } + }, + "react-syntax-highlighter": { + "version": "13.5.3", + "resolved": "https://registry.npmjs.org/react-syntax-highlighter/-/react-syntax-highlighter-13.5.3.tgz", + "integrity": "sha512-crPaF+QGPeHNIblxxCdf2Lg936NAHKhNhuMzRL3F9ct6aYXL3NcZtCL0Rms9+qVo6Y1EQLdXGypBNSbPL/r+qg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.3.1", + "highlight.js": "^10.1.1", + "lowlight": "^1.14.0", + "prismjs": "^1.21.0", + "refractor": "^3.1.0" + } + } + } + } + } + }, "@storybook/addon-toolbars": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-6.3.12.tgz", - "integrity": "sha512-8GvP6zmAfLPRnYRARSaIwLkQClLIRbflRh4HZoFk6IMjQLXZb4NL3JS5OLFKG+HRMMU2UQzfoSDqjI7k7ptyRw==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-6.4.19.tgz", + "integrity": "sha512-2UtuX9yB1rD/CAZv1etnOnunfPTvsEKEg/J2HYMKE1lhenWC5muIUXvDXCXvwDC65WviPJ56nFNKaKK1Zz7JDg==", "dev": true, "requires": { - "@storybook/addons": "6.3.12", - "@storybook/api": "6.3.12", - "@storybook/client-api": "6.3.12", - "@storybook/components": "6.3.12", - "@storybook/theming": "6.3.12", + "@storybook/addons": "6.4.19", + "@storybook/api": "6.4.19", + "@storybook/components": "6.4.19", + "@storybook/theming": "6.4.19", "core-js": "^3.8.2", "regenerator-runtime": "^0.13.7" }, "dependencies": { "@storybook/components": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/components/-/components-6.3.12.tgz", - "integrity": "sha512-kdQt8toUjynYAxDLrJzuG7YSNL6as1wJoyzNUaCfG06YPhvIAlKo7le9tS2mThVFN5e9nbKrW3N1V1sp6ypZXQ==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-6.4.19.tgz", + "integrity": "sha512-q/0V37YAJA7CNc+wSiiefeM9+3XVk8ixBNylY36QCGJgIeGQ5/79vPyUe6K4lLmsQwpmZsIq1s1Ad5+VbboeOA==", "dev": true, "requires": { "@popperjs/core": "^2.6.0", - "@storybook/client-logger": "6.3.12", - "@storybook/csf": "0.0.1", - "@storybook/theming": "6.3.12", + "@storybook/client-logger": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/theming": "6.4.19", "@types/color-convert": "^2.0.0", "@types/overlayscrollbars": "^1.12.0", "@types/react-syntax-highlighter": "11.0.5", @@ -70289,7 +70488,7 @@ "core-js": "^3.8.2", "fast-deep-equal": "^3.1.3", "global": "^4.4.0", - "lodash": "^4.17.20", + "lodash": "^4.17.21", "markdown-to-jsx": "^7.1.3", "memoizerific": "^1.11.3", "overlayscrollbars": "^1.13.1", @@ -70320,15 +70519,15 @@ } }, "@storybook/theming": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.3.12.tgz", - "integrity": "sha512-wOJdTEa/VFyFB2UyoqyYGaZdym6EN7RALuQOAMT6zHA282FBmKw8nL5DETHEbctpnHdcrMC/391teK4nNSrdOA==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.4.19.tgz", + "integrity": "sha512-V4pWmTvAxmbHR6B3jA4hPkaxZPyExHvCToy7b76DpUTpuHihijNDMAn85KhOQYIeL9q14zP/aiz899tOHsOidg==", "dev": true, "requires": { "@emotion/core": "^10.1.1", "@emotion/is-prop-valid": "^0.8.6", "@emotion/styled": "^10.0.27", - "@storybook/client-logger": "6.3.12", + "@storybook/client-logger": "6.4.19", "core-js": "^3.8.2", "deep-object-diff": "^1.1.0", "emotion-theming": "^10.0.27", @@ -70340,13 +70539,27 @@ }, "dependencies": { "@emotion/styled": { - "version": "10.0.27", - "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-10.0.27.tgz", - "integrity": "sha512-iK/8Sh7+NLJzyp9a5+vIQIXTYxfT4yB/OJbjzQanB2RZpvmzBQOHZWhpAMZWYEKRNNbsD6WfBw5sVWkb6WzS/Q==", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-10.3.0.tgz", + "integrity": "sha512-GgcUpXBBEU5ido+/p/mCT2/Xx+Oqmp9JzQRuC+a4lYM4i4LBBn/dWvc0rQ19N9ObA8/T4NWMrPNe79kMBDJqoQ==", "dev": true, "requires": { - "@emotion/styled-base": "^10.0.27", + "@emotion/styled-base": "^10.3.0", "babel-plugin-emotion": "^10.0.27" + }, + "dependencies": { + "@emotion/styled-base": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@emotion/styled-base/-/styled-base-10.3.0.tgz", + "integrity": "sha512-PBRqsVKR7QRNkmfH78hTSSwHWcwDpecH9W6heujWAcyp2wdz/64PP73s7fWS1dIPm8/Exc8JAzYS8dEWXjv60w==", + "dev": true, + "requires": { + "@babel/runtime": "^7.5.5", + "@emotion/is-prop-valid": "0.8.8", + "@emotion/serialize": "^0.11.15", + "@emotion/utils": "0.11.3" + } + } } } } @@ -70354,17 +70567,17 @@ } }, "@storybook/addon-viewport": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-6.3.12.tgz", - "integrity": "sha512-TRjyfm85xouOPmXxeLdEIzXLfJZZ1ePQ7p/5yphDGBHdxMU4m4qiZr8wYpUaxHsRu/UB3dKfaOyGT+ivogbnbw==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-6.4.19.tgz", + "integrity": "sha512-T1hdImxbLj8suQSTbp6HSA1LLHOlqaNK5jjnqzEOoAxY0O8LNPXMJ2jKIeT2fPQ0v+tWGU3tbwf+3xFq0parVQ==", "dev": true, "requires": { - "@storybook/addons": "6.3.12", - "@storybook/api": "6.3.12", - "@storybook/client-logger": "6.3.12", - "@storybook/components": "6.3.12", - "@storybook/core-events": "6.3.12", - "@storybook/theming": "6.3.12", + "@storybook/addons": "6.4.19", + "@storybook/api": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/components": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/theming": "6.4.19", "core-js": "^3.8.2", "global": "^4.4.0", "memoizerific": "^1.11.3", @@ -70373,15 +70586,15 @@ }, "dependencies": { "@storybook/components": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/components/-/components-6.3.12.tgz", - "integrity": "sha512-kdQt8toUjynYAxDLrJzuG7YSNL6as1wJoyzNUaCfG06YPhvIAlKo7le9tS2mThVFN5e9nbKrW3N1V1sp6ypZXQ==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-6.4.19.tgz", + "integrity": "sha512-q/0V37YAJA7CNc+wSiiefeM9+3XVk8ixBNylY36QCGJgIeGQ5/79vPyUe6K4lLmsQwpmZsIq1s1Ad5+VbboeOA==", "dev": true, "requires": { "@popperjs/core": "^2.6.0", - "@storybook/client-logger": "6.3.12", - "@storybook/csf": "0.0.1", - "@storybook/theming": "6.3.12", + "@storybook/client-logger": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/theming": "6.4.19", "@types/color-convert": "^2.0.0", "@types/overlayscrollbars": "^1.12.0", "@types/react-syntax-highlighter": "11.0.5", @@ -70389,7 +70602,7 @@ "core-js": "^3.8.2", "fast-deep-equal": "^3.1.3", "global": "^4.4.0", - "lodash": "^4.17.20", + "lodash": "^4.17.21", "markdown-to-jsx": "^7.1.3", "memoizerific": "^1.11.3", "overlayscrollbars": "^1.13.1", @@ -70420,15 +70633,15 @@ } }, "@storybook/theming": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.3.12.tgz", - "integrity": "sha512-wOJdTEa/VFyFB2UyoqyYGaZdym6EN7RALuQOAMT6zHA282FBmKw8nL5DETHEbctpnHdcrMC/391teK4nNSrdOA==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.4.19.tgz", + "integrity": "sha512-V4pWmTvAxmbHR6B3jA4hPkaxZPyExHvCToy7b76DpUTpuHihijNDMAn85KhOQYIeL9q14zP/aiz899tOHsOidg==", "dev": true, "requires": { "@emotion/core": "^10.1.1", "@emotion/is-prop-valid": "^0.8.6", "@emotion/styled": "^10.0.27", - "@storybook/client-logger": "6.3.12", + "@storybook/client-logger": "6.4.19", "core-js": "^3.8.2", "deep-object-diff": "^1.1.0", "emotion-theming": "^10.0.27", @@ -70440,13 +70653,27 @@ }, "dependencies": { "@emotion/styled": { - "version": "10.0.27", - "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-10.0.27.tgz", - "integrity": "sha512-iK/8Sh7+NLJzyp9a5+vIQIXTYxfT4yB/OJbjzQanB2RZpvmzBQOHZWhpAMZWYEKRNNbsD6WfBw5sVWkb6WzS/Q==", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-10.3.0.tgz", + "integrity": "sha512-GgcUpXBBEU5ido+/p/mCT2/Xx+Oqmp9JzQRuC+a4lYM4i4LBBn/dWvc0rQ19N9ObA8/T4NWMrPNe79kMBDJqoQ==", "dev": true, "requires": { - "@emotion/styled-base": "^10.0.27", + "@emotion/styled-base": "^10.3.0", "babel-plugin-emotion": "^10.0.27" + }, + "dependencies": { + "@emotion/styled-base": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@emotion/styled-base/-/styled-base-10.3.0.tgz", + "integrity": "sha512-PBRqsVKR7QRNkmfH78hTSSwHWcwDpecH9W6heujWAcyp2wdz/64PP73s7fWS1dIPm8/Exc8JAzYS8dEWXjv60w==", + "dev": true, + "requires": { + "@babel/runtime": "^7.5.5", + "@emotion/is-prop-valid": "0.8.8", + "@emotion/serialize": "^0.11.15", + "@emotion/utils": "0.11.3" + } + } } } } @@ -70454,26 +70681,23 @@ } }, "@storybook/api": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.3.12.tgz", - "integrity": "sha512-LScRXUeCWEW/OP+jiooNMQICVdusv7azTmULxtm72fhkXFRiQs2CdRNTiqNg46JLLC9z95f1W+pGK66X6HiiQA==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.4.19.tgz", + "integrity": "sha512-aDvea+NpQCBjpNp9YidO1Pr7fzzCp15FSdkG+2ihGQfv5raxrN+IIJnGUXecpe71nvlYiB+29UXBVK7AL0j51Q==", "dev": true, "requires": { - "@reach/router": "^1.3.4", - "@storybook/channels": "6.3.12", - "@storybook/client-logger": "6.3.12", - "@storybook/core-events": "6.3.12", - "@storybook/csf": "0.0.1", - "@storybook/router": "6.3.12", + "@storybook/channels": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/router": "6.4.19", "@storybook/semver": "^7.3.2", - "@storybook/theming": "6.3.12", - "@types/reach__router": "^1.3.7", + "@storybook/theming": "6.4.19", "core-js": "^3.8.2", "fast-deep-equal": "^3.1.3", "global": "^4.4.0", - "lodash": "^4.17.20", + "lodash": "^4.17.21", "memoizerific": "^1.11.3", - "qs": "^6.10.0", "regenerator-runtime": "^0.13.7", "store2": "^2.12.0", "telejson": "^5.3.2", @@ -70482,33 +70706,77 @@ }, "dependencies": { "@storybook/router": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.3.12.tgz", - "integrity": "sha512-G/pNGCnrJRetCwyEZulHPT+YOcqEj/vkPVDTUfii2qgqukup6K0cjwgd7IukAURnAnnzTi1gmgFuEKUi8GE/KA==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.4.19.tgz", + "integrity": "sha512-KWWwIzuyeEIWVezkCihwY2A76Il9tUNg0I410g9qT7NrEsKyqXGRYOijWub7c1GGyNjLqz0jtrrehtixMcJkuA==", "dev": true, "requires": { - "@reach/router": "^1.3.4", - "@storybook/client-logger": "6.3.12", - "@types/reach__router": "^1.3.7", + "@storybook/client-logger": "6.4.19", "core-js": "^3.8.2", "fast-deep-equal": "^3.1.3", "global": "^4.4.0", - "lodash": "^4.17.20", + "history": "5.0.0", + "lodash": "^4.17.21", "memoizerific": "^1.11.3", "qs": "^6.10.0", + "react-router": "^6.0.0", + "react-router-dom": "^6.0.0", "ts-dedent": "^2.0.0" + }, + "dependencies": { + "react-router": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.2.2.tgz", + "integrity": "sha512-/MbxyLzd7Q7amp4gDOGaYvXwhEojkJD5BtExkuKmj39VEE0m3l/zipf6h2WIB2jyAO0lI6NGETh4RDcktRm4AQ==", + "dev": true, + "requires": { + "history": "^5.2.0" + }, + "dependencies": { + "history": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/history/-/history-5.3.0.tgz", + "integrity": "sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.6" + } + } + } + }, + "react-router-dom": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.2.2.tgz", + "integrity": "sha512-AtYEsAST7bDD4dLSQHDnk/qxWLJdad5t1HFa1qJyUrCeGgEuCSw0VB/27ARbF9Fi/W5598ujvJOm3ujUCVzuYQ==", + "dev": true, + "requires": { + "history": "^5.2.0", + "react-router": "6.2.2" + }, + "dependencies": { + "history": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/history/-/history-5.3.0.tgz", + "integrity": "sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.6" + } + } + } + } } }, "@storybook/theming": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.3.12.tgz", - "integrity": "sha512-wOJdTEa/VFyFB2UyoqyYGaZdym6EN7RALuQOAMT6zHA282FBmKw8nL5DETHEbctpnHdcrMC/391teK4nNSrdOA==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.4.19.tgz", + "integrity": "sha512-V4pWmTvAxmbHR6B3jA4hPkaxZPyExHvCToy7b76DpUTpuHihijNDMAn85KhOQYIeL9q14zP/aiz899tOHsOidg==", "dev": true, "requires": { "@emotion/core": "^10.1.1", "@emotion/is-prop-valid": "^0.8.6", "@emotion/styled": "^10.0.27", - "@storybook/client-logger": "6.3.12", + "@storybook/client-logger": "6.4.19", "core-js": "^3.8.2", "deep-object-diff": "^1.1.0", "emotion-theming": "^10.0.27", @@ -70520,13 +70788,27 @@ }, "dependencies": { "@emotion/styled": { - "version": "10.0.27", - "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-10.0.27.tgz", - "integrity": "sha512-iK/8Sh7+NLJzyp9a5+vIQIXTYxfT4yB/OJbjzQanB2RZpvmzBQOHZWhpAMZWYEKRNNbsD6WfBw5sVWkb6WzS/Q==", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-10.3.0.tgz", + "integrity": "sha512-GgcUpXBBEU5ido+/p/mCT2/Xx+Oqmp9JzQRuC+a4lYM4i4LBBn/dWvc0rQ19N9ObA8/T4NWMrPNe79kMBDJqoQ==", "dev": true, "requires": { - "@emotion/styled-base": "^10.0.27", + "@emotion/styled-base": "^10.3.0", "babel-plugin-emotion": "^10.0.27" + }, + "dependencies": { + "@emotion/styled-base": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@emotion/styled-base/-/styled-base-10.3.0.tgz", + "integrity": "sha512-PBRqsVKR7QRNkmfH78hTSSwHWcwDpecH9W6heujWAcyp2wdz/64PP73s7fWS1dIPm8/Exc8JAzYS8dEWXjv60w==", + "dev": true, + "requires": { + "@babel/runtime": "^7.5.5", + "@emotion/is-prop-valid": "0.8.8", + "@emotion/serialize": "^0.11.15", + "@emotion/utils": "0.11.3" + } + } } } } @@ -70534,9 +70816,9 @@ } }, "@storybook/channels": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.3.12.tgz", - "integrity": "sha512-l4sA+g1PdUV8YCbgs47fIKREdEQAKNdQIZw0b7BfTvY9t0x5yfBywgQhYON/lIeiNGz2OlIuD+VUtqYfCtNSyw==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.4.19.tgz", + "integrity": "sha512-EwyoncFvTfmIlfsy8jTfayCxo2XchPkZk/9txipugWSmc057HdklMKPLOHWP0z5hLH0IbVIKXzdNISABm36jwQ==", "dev": true, "requires": { "core-js": "^3.8.2", @@ -70545,9 +70827,9 @@ } }, "@storybook/client-logger": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.3.12.tgz", - "integrity": "sha512-zNDsamZvHnuqLznDdP9dUeGgQ9TyFh4ray3t1VGO7ZqWVZ2xtVCCXjDvMnOXI2ifMpX5UsrOvshIPeE9fMBmiQ==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.4.19.tgz", + "integrity": "sha512-zmg/2wyc9W3uZrvxaW4BfHcr40J0v7AGslqYXk9H+ERLVwIvrR4NhxQFaS6uITjBENyRDxwzfU3Va634WcmdDQ==", "dev": true, "requires": { "core-js": "^3.8.2", @@ -70555,18 +70837,27 @@ } }, "@storybook/core-events": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.3.12.tgz", - "integrity": "sha512-SXfD7xUUMazaeFkB92qOTUV8Y/RghE4SkEYe5slAdjeocSaH7Nz2WV0rqNEgChg0AQc+JUI66no8L9g0+lw4Gw==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.4.19.tgz", + "integrity": "sha512-KICzUw6XVQUJzFSCXfvhfHAuyhn4Q5J4IZEfuZkcGJS4ODkrO6tmpdYE5Cfr+so95Nfp0ErWiLUuodBsW9/rtA==", "dev": true, "requires": { "core-js": "^3.8.2" } }, + "@storybook/csf": { + "version": "0.0.2--canary.87bc651.0", + "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.0.2--canary.87bc651.0.tgz", + "integrity": "sha512-ajk1Uxa+rBpFQHKrCcTmJyQBXZ5slfwHVEaKlkuFaW77it8RgbPJp/ccna3sgoi8oZ7FkkOyvv1Ve4SmwFqRqw==", + "dev": true, + "requires": { + "lodash": "^4.17.15" + } + }, "@types/node": { - "version": "14.17.33", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.33.tgz", - "integrity": "sha512-noEeJ06zbn3lOh4gqe2v7NMGS33jrulfNqYFDjjEbhpDEHR5VTxgYNQSBqBlJIsBJW3uEYDgD6kvMnrrhGzq8g==", + "version": "14.18.12", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.12.tgz", + "integrity": "sha512-q4jlIR71hUpWTnGhXWcakgkZeHa3CCjcQcnuzU8M891BAWA2jHiziiWEPEkdS5pFsz7H9HJiy8BrK7tBRNrY7A==", "dev": true }, "acorn": { @@ -70601,49 +70892,6 @@ } } }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "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": { - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true - } - } - }, "chownr": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", @@ -70671,29 +70919,6 @@ "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", "dev": true }, - "enhanced-resolve": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", - "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.5.0", - "tapable": "^1.0.0" - }, - "dependencies": { - "memory-fs": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", - "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", - "dev": true, - "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - } - } - }, "escodegen": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", @@ -70737,74 +70962,6 @@ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true }, - "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==", - "dev": true, - "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" - }, - "dependencies": { - "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" - } - }, - "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" - } - }, - "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": { - "p-try": "^2.0.0" - } - }, - "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": { - "p-limit": "^2.2.0" - } - }, - "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": { - "find-up": "^4.0.0" - } - } - } - }, "find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", @@ -70833,18 +70990,13 @@ "integrity": "sha512-hT9yh/tiinkmirKrlv4KWOjztdoZo1mx9Qh4KvWqC7isoXwdUY3PNWUxceF4/qO9R6riA2C29jdTOeQOIROjgw==", "dev": true }, - "globby": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", - "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", + "history": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/history/-/history-5.0.0.tgz", + "integrity": "sha512-3NyRMKIiFSJmIPdq7FxkNMJkQ7ZEtVblOQ38VtKaA0zZMW1Eo6Q6W8oDKEflr1kNNTItSnk4JMCO1deeSgbLLg==", "dev": true, "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", - "slash": "^3.0.0" + "@babel/runtime": "^7.7.6" } }, "icss-utils": { @@ -70856,16 +71008,10 @@ "postcss": "^7.0.14" } }, - "ignore": { - "version": "5.1.9", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.9.tgz", - "integrity": "sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ==", - "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-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", "dev": true }, "json5": { @@ -70929,22 +71075,18 @@ } } }, - "memory-fs": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", - "dev": true, - "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - }, "mime": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", "dev": true }, + "nanoid": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz", + "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==", + "dev": true + }, "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -71015,12 +71157,12 @@ } }, "polished": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/polished/-/polished-4.1.3.tgz", - "integrity": "sha512-ocPAcVBUOryJEKe0z2KLd1l9EBa1r5mSwlKpExmrLzsnIzJo4axsoU9O2BjOTkDGDT4mZ0WFE5XKTlR3nLnZOA==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/polished/-/polished-4.1.4.tgz", + "integrity": "sha512-Nq5Mbza+Auo7N3sQb1QMFaQiDO+4UexWuSGR7Cjb4Sw11SZIJcrrFtiZ+L0jT9MBsUsxDboHVASbCLbE1rnECg==", "dev": true, "requires": { - "@babel/runtime": "^7.14.0" + "@babel/runtime": "^7.16.7" } }, "postcss": { @@ -71075,9 +71217,9 @@ } }, "prettier": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.2.1.tgz", - "integrity": "sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.3.0.tgz", + "integrity": "sha512-kXtO4s0Lz/DW/IJ9QdWhAf7/NmPWQXkFr/r/WkR3vyI+0v8amTDxiaQSLzs8NBlytfLWX/7uQUMIW677yLKl4w==", "dev": true }, "pretty-error": { @@ -71091,9 +71233,9 @@ } }, "qs": { - "version": "6.10.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz", - "integrity": "sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg==", + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", "dev": true, "requires": { "side-channel": "^1.0.4" @@ -71111,13 +71253,15 @@ "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true }, - "serialize-javascript": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", - "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", "dev": true, "requires": { - "randombytes": "^2.1.0" + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" } }, "slash": { @@ -71150,40 +71294,6 @@ "has-flag": "^3.0.0" } }, - "tapable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", - "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", - "dev": true - }, - "terser": { - "version": "5.9.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.9.0.tgz", - "integrity": "sha512-h5hxa23sCdpzcye/7b8YqbE5OwKca/ni0RQz1uRX3tGh8haaGHqcuSqbGRybuAKNdntZ0mDgFNXPJ48xQ2RXKQ==", - "dev": true, - "requires": { - "commander": "^2.20.0", - "source-map": "~0.7.2", - "source-map-support": "~0.5.20" - }, - "dependencies": { - "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true - } - } - }, - "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==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - }, "tslib": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", @@ -71200,6 +71310,13 @@ "source-map": "~0.6.1" } }, + "ws": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", + "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", + "dev": true, + "requires": {} + }, "yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", @@ -71296,15 +71413,15 @@ } }, "@storybook/addon-links": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-6.3.12.tgz", - "integrity": "sha512-NfOGEm0+QxIrAXCa05LOXmxLtI+RlcDqHXZ1jNNj8mjeRoG1nX3qhkB8PWWIBbPuz+bktLV9ox8UZj0W6+ZPOQ==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-6.4.19.tgz", + "integrity": "sha512-ebFHYlGDQkHSmI5QEJb1NxGNToVOLgjKkxXUe+JXX7AfHvrWiXVrN/57aOtBPZzj4h2jRPRTZgwR5glhPIlfEQ==", "requires": { - "@storybook/addons": "6.3.12", - "@storybook/client-logger": "6.3.12", - "@storybook/core-events": "6.3.12", - "@storybook/csf": "0.0.1", - "@storybook/router": "6.3.12", + "@storybook/addons": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/router": "6.4.19", "@types/qs": "^6.9.5", "core-js": "^3.8.2", "global": "^4.4.0", @@ -71315,92 +71432,140 @@ }, "dependencies": { "@storybook/client-logger": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.3.12.tgz", - "integrity": "sha512-zNDsamZvHnuqLznDdP9dUeGgQ9TyFh4ray3t1VGO7ZqWVZ2xtVCCXjDvMnOXI2ifMpX5UsrOvshIPeE9fMBmiQ==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.4.19.tgz", + "integrity": "sha512-zmg/2wyc9W3uZrvxaW4BfHcr40J0v7AGslqYXk9H+ERLVwIvrR4NhxQFaS6uITjBENyRDxwzfU3Va634WcmdDQ==", "requires": { "core-js": "^3.8.2", "global": "^4.4.0" } }, "@storybook/core-events": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.3.12.tgz", - "integrity": "sha512-SXfD7xUUMazaeFkB92qOTUV8Y/RghE4SkEYe5slAdjeocSaH7Nz2WV0rqNEgChg0AQc+JUI66no8L9g0+lw4Gw==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.4.19.tgz", + "integrity": "sha512-KICzUw6XVQUJzFSCXfvhfHAuyhn4Q5J4IZEfuZkcGJS4ODkrO6tmpdYE5Cfr+so95Nfp0ErWiLUuodBsW9/rtA==", "requires": { "core-js": "^3.8.2" } }, + "@storybook/csf": { + "version": "0.0.2--canary.87bc651.0", + "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.0.2--canary.87bc651.0.tgz", + "integrity": "sha512-ajk1Uxa+rBpFQHKrCcTmJyQBXZ5slfwHVEaKlkuFaW77it8RgbPJp/ccna3sgoi8oZ7FkkOyvv1Ve4SmwFqRqw==", + "requires": { + "lodash": "^4.17.15" + } + }, "@storybook/router": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.3.12.tgz", - "integrity": "sha512-G/pNGCnrJRetCwyEZulHPT+YOcqEj/vkPVDTUfii2qgqukup6K0cjwgd7IukAURnAnnzTi1gmgFuEKUi8GE/KA==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.4.19.tgz", + "integrity": "sha512-KWWwIzuyeEIWVezkCihwY2A76Il9tUNg0I410g9qT7NrEsKyqXGRYOijWub7c1GGyNjLqz0jtrrehtixMcJkuA==", "requires": { - "@reach/router": "^1.3.4", - "@storybook/client-logger": "6.3.12", - "@types/reach__router": "^1.3.7", + "@storybook/client-logger": "6.4.19", "core-js": "^3.8.2", "fast-deep-equal": "^3.1.3", "global": "^4.4.0", - "lodash": "^4.17.20", + "history": "5.0.0", + "lodash": "^4.17.21", "memoizerific": "^1.11.3", "qs": "^6.10.0", + "react-router": "^6.0.0", + "react-router-dom": "^6.0.0", "ts-dedent": "^2.0.0" + }, + "dependencies": { + "react-router": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.2.2.tgz", + "integrity": "sha512-/MbxyLzd7Q7amp4gDOGaYvXwhEojkJD5BtExkuKmj39VEE0m3l/zipf6h2WIB2jyAO0lI6NGETh4RDcktRm4AQ==", + "requires": { + "history": "^5.2.0" + }, + "dependencies": { + "history": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/history/-/history-5.3.0.tgz", + "integrity": "sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==", + "requires": { + "@babel/runtime": "^7.7.6" + } + } + } + }, + "react-router-dom": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.2.2.tgz", + "integrity": "sha512-AtYEsAST7bDD4dLSQHDnk/qxWLJdad5t1HFa1qJyUrCeGgEuCSw0VB/27ARbF9Fi/W5598ujvJOm3ujUCVzuYQ==", + "requires": { + "history": "^5.2.0", + "react-router": "6.2.2" + }, + "dependencies": { + "history": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/history/-/history-5.3.0.tgz", + "integrity": "sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==", + "requires": { + "@babel/runtime": "^7.7.6" + } + } + } + } + } + }, + "history": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/history/-/history-5.0.0.tgz", + "integrity": "sha512-3NyRMKIiFSJmIPdq7FxkNMJkQ7ZEtVblOQ38VtKaA0zZMW1Eo6Q6W8oDKEflr1kNNTItSnk4JMCO1deeSgbLLg==", + "requires": { + "@babel/runtime": "^7.7.6" } }, "qs": { - "version": "6.10.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz", - "integrity": "sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg==", + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", "requires": { "side-channel": "^1.0.4" } } } }, - "@storybook/addon-measure": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-2.0.0.tgz", - "integrity": "sha512-ZhdT++cX+L9LwjhGYggvYUUVQH/MGn2rwbrAwCMzA/f2QTFvkjxzX8nDgMxIhaLCDC+gHIxfJG2wrWN0jkBr3g==", - "dev": true, - "requires": {} - }, "@storybook/addons": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-6.3.12.tgz", - "integrity": "sha512-UgoMyr7Qr0FS3ezt8u6hMEcHgyynQS9ucr5mAwZky3wpXRPFyUTmMto9r4BBUdqyUvTUj/LRKIcmLBfj+/l0Fg==", - "requires": { - "@storybook/api": "6.3.12", - "@storybook/channels": "6.3.12", - "@storybook/client-logger": "6.3.12", - "@storybook/core-events": "6.3.12", - "@storybook/router": "6.3.12", - "@storybook/theming": "6.3.12", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-6.4.19.tgz", + "integrity": "sha512-QNyRYhpqmHV8oJxxTBdkRlLSbDFhpBvfvMfIrIT1UXb/eemdBZTaCGVvXZ9UixoEEI7f8VwAQ44IvkU5B1509w==", + "requires": { + "@storybook/api": "6.4.19", + "@storybook/channels": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/router": "6.4.19", + "@storybook/theming": "6.4.19", + "@types/webpack-env": "^1.16.0", "core-js": "^3.8.2", "global": "^4.4.0", "regenerator-runtime": "^0.13.7" }, "dependencies": { "@storybook/api": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.3.12.tgz", - "integrity": "sha512-LScRXUeCWEW/OP+jiooNMQICVdusv7azTmULxtm72fhkXFRiQs2CdRNTiqNg46JLLC9z95f1W+pGK66X6HiiQA==", - "requires": { - "@reach/router": "^1.3.4", - "@storybook/channels": "6.3.12", - "@storybook/client-logger": "6.3.12", - "@storybook/core-events": "6.3.12", - "@storybook/csf": "0.0.1", - "@storybook/router": "6.3.12", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.4.19.tgz", + "integrity": "sha512-aDvea+NpQCBjpNp9YidO1Pr7fzzCp15FSdkG+2ihGQfv5raxrN+IIJnGUXecpe71nvlYiB+29UXBVK7AL0j51Q==", + "requires": { + "@storybook/channels": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/router": "6.4.19", "@storybook/semver": "^7.3.2", - "@storybook/theming": "6.3.12", - "@types/reach__router": "^1.3.7", + "@storybook/theming": "6.4.19", "core-js": "^3.8.2", "fast-deep-equal": "^3.1.3", "global": "^4.4.0", - "lodash": "^4.17.20", + "lodash": "^4.17.21", "memoizerific": "^1.11.3", - "qs": "^6.10.0", "regenerator-runtime": "^0.13.7", "store2": "^2.12.0", "telejson": "^5.3.2", @@ -71409,9 +71574,9 @@ } }, "@storybook/channels": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.3.12.tgz", - "integrity": "sha512-l4sA+g1PdUV8YCbgs47fIKREdEQAKNdQIZw0b7BfTvY9t0x5yfBywgQhYON/lIeiNGz2OlIuD+VUtqYfCtNSyw==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.4.19.tgz", + "integrity": "sha512-EwyoncFvTfmIlfsy8jTfayCxo2XchPkZk/9txipugWSmc057HdklMKPLOHWP0z5hLH0IbVIKXzdNISABm36jwQ==", "requires": { "core-js": "^3.8.2", "ts-dedent": "^2.0.0", @@ -71419,48 +71584,96 @@ } }, "@storybook/client-logger": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.3.12.tgz", - "integrity": "sha512-zNDsamZvHnuqLznDdP9dUeGgQ9TyFh4ray3t1VGO7ZqWVZ2xtVCCXjDvMnOXI2ifMpX5UsrOvshIPeE9fMBmiQ==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.4.19.tgz", + "integrity": "sha512-zmg/2wyc9W3uZrvxaW4BfHcr40J0v7AGslqYXk9H+ERLVwIvrR4NhxQFaS6uITjBENyRDxwzfU3Va634WcmdDQ==", "requires": { "core-js": "^3.8.2", "global": "^4.4.0" } }, "@storybook/core-events": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.3.12.tgz", - "integrity": "sha512-SXfD7xUUMazaeFkB92qOTUV8Y/RghE4SkEYe5slAdjeocSaH7Nz2WV0rqNEgChg0AQc+JUI66no8L9g0+lw4Gw==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.4.19.tgz", + "integrity": "sha512-KICzUw6XVQUJzFSCXfvhfHAuyhn4Q5J4IZEfuZkcGJS4ODkrO6tmpdYE5Cfr+so95Nfp0ErWiLUuodBsW9/rtA==", "requires": { "core-js": "^3.8.2" } }, + "@storybook/csf": { + "version": "0.0.2--canary.87bc651.0", + "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.0.2--canary.87bc651.0.tgz", + "integrity": "sha512-ajk1Uxa+rBpFQHKrCcTmJyQBXZ5slfwHVEaKlkuFaW77it8RgbPJp/ccna3sgoi8oZ7FkkOyvv1Ve4SmwFqRqw==", + "requires": { + "lodash": "^4.17.15" + } + }, "@storybook/router": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.3.12.tgz", - "integrity": "sha512-G/pNGCnrJRetCwyEZulHPT+YOcqEj/vkPVDTUfii2qgqukup6K0cjwgd7IukAURnAnnzTi1gmgFuEKUi8GE/KA==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.4.19.tgz", + "integrity": "sha512-KWWwIzuyeEIWVezkCihwY2A76Il9tUNg0I410g9qT7NrEsKyqXGRYOijWub7c1GGyNjLqz0jtrrehtixMcJkuA==", "requires": { - "@reach/router": "^1.3.4", - "@storybook/client-logger": "6.3.12", - "@types/reach__router": "^1.3.7", + "@storybook/client-logger": "6.4.19", "core-js": "^3.8.2", "fast-deep-equal": "^3.1.3", "global": "^4.4.0", - "lodash": "^4.17.20", + "history": "5.0.0", + "lodash": "^4.17.21", "memoizerific": "^1.11.3", "qs": "^6.10.0", + "react-router": "^6.0.0", + "react-router-dom": "^6.0.0", "ts-dedent": "^2.0.0" + }, + "dependencies": { + "react-router": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.2.2.tgz", + "integrity": "sha512-/MbxyLzd7Q7amp4gDOGaYvXwhEojkJD5BtExkuKmj39VEE0m3l/zipf6h2WIB2jyAO0lI6NGETh4RDcktRm4AQ==", + "requires": { + "history": "^5.2.0" + }, + "dependencies": { + "history": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/history/-/history-5.3.0.tgz", + "integrity": "sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==", + "requires": { + "@babel/runtime": "^7.7.6" + } + } + } + }, + "react-router-dom": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.2.2.tgz", + "integrity": "sha512-AtYEsAST7bDD4dLSQHDnk/qxWLJdad5t1HFa1qJyUrCeGgEuCSw0VB/27ARbF9Fi/W5598ujvJOm3ujUCVzuYQ==", + "requires": { + "history": "^5.2.0", + "react-router": "6.2.2" + }, + "dependencies": { + "history": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/history/-/history-5.3.0.tgz", + "integrity": "sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==", + "requires": { + "@babel/runtime": "^7.7.6" + } + } + } + } } }, "@storybook/theming": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.3.12.tgz", - "integrity": "sha512-wOJdTEa/VFyFB2UyoqyYGaZdym6EN7RALuQOAMT6zHA282FBmKw8nL5DETHEbctpnHdcrMC/391teK4nNSrdOA==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.4.19.tgz", + "integrity": "sha512-V4pWmTvAxmbHR6B3jA4hPkaxZPyExHvCToy7b76DpUTpuHihijNDMAn85KhOQYIeL9q14zP/aiz899tOHsOidg==", "requires": { "@emotion/core": "^10.1.1", "@emotion/is-prop-valid": "^0.8.6", "@emotion/styled": "^10.0.27", - "@storybook/client-logger": "6.3.12", + "@storybook/client-logger": "6.4.19", "core-js": "^3.8.2", "deep-object-diff": "^1.1.0", "emotion-theming": "^10.0.27", @@ -71472,28 +71685,49 @@ }, "dependencies": { "@emotion/styled": { - "version": "10.0.27", - "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-10.0.27.tgz", - "integrity": "sha512-iK/8Sh7+NLJzyp9a5+vIQIXTYxfT4yB/OJbjzQanB2RZpvmzBQOHZWhpAMZWYEKRNNbsD6WfBw5sVWkb6WzS/Q==", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-10.3.0.tgz", + "integrity": "sha512-GgcUpXBBEU5ido+/p/mCT2/Xx+Oqmp9JzQRuC+a4lYM4i4LBBn/dWvc0rQ19N9ObA8/T4NWMrPNe79kMBDJqoQ==", "requires": { - "@emotion/styled-base": "^10.0.27", + "@emotion/styled-base": "^10.3.0", "babel-plugin-emotion": "^10.0.27" + }, + "dependencies": { + "@emotion/styled-base": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@emotion/styled-base/-/styled-base-10.3.0.tgz", + "integrity": "sha512-PBRqsVKR7QRNkmfH78hTSSwHWcwDpecH9W6heujWAcyp2wdz/64PP73s7fWS1dIPm8/Exc8JAzYS8dEWXjv60w==", + "requires": { + "@babel/runtime": "^7.5.5", + "@emotion/is-prop-valid": "0.8.8", + "@emotion/serialize": "^0.11.15", + "@emotion/utils": "0.11.3" + } + } } } } }, + "history": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/history/-/history-5.0.0.tgz", + "integrity": "sha512-3NyRMKIiFSJmIPdq7FxkNMJkQ7ZEtVblOQ38VtKaA0zZMW1Eo6Q6W8oDKEflr1kNNTItSnk4JMCO1deeSgbLLg==", + "requires": { + "@babel/runtime": "^7.7.6" + } + }, "polished": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/polished/-/polished-4.1.3.tgz", - "integrity": "sha512-ocPAcVBUOryJEKe0z2KLd1l9EBa1r5mSwlKpExmrLzsnIzJo4axsoU9O2BjOTkDGDT4mZ0WFE5XKTlR3nLnZOA==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/polished/-/polished-4.1.4.tgz", + "integrity": "sha512-Nq5Mbza+Auo7N3sQb1QMFaQiDO+4UexWuSGR7Cjb4Sw11SZIJcrrFtiZ+L0jT9MBsUsxDboHVASbCLbE1rnECg==", "requires": { - "@babel/runtime": "^7.14.0" + "@babel/runtime": "^7.16.7" } }, "qs": { - "version": "6.10.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz", - "integrity": "sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg==", + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", "requires": { "side-channel": "^1.0.4" } @@ -71543,9 +71777,9 @@ } }, "@storybook/builder-webpack5": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-6.3.12.tgz", - "integrity": "sha512-+9uVSW2LFpdWnYKKcdH5sW1HqcKwbqyBJV46oN94ZlUw3fyZgz8TsOI+ZpWgCNqmBtXDr+X54deast9f443Mzw==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-6.4.19.tgz", + "integrity": "sha512-AWM4YMN1gPaf7jfntqZTCGpIQ1tF6YRU1JtczPG4ox28rTaO6NMfOBi9aRhBre/59pPOh9bF6u2gu/MIHmRW+w==", "devOptional": true, "requires": { "@babel/core": "^7.12.10", @@ -71568,33 +71802,34 @@ "@babel/preset-env": "^7.12.11", "@babel/preset-react": "^7.12.10", "@babel/preset-typescript": "^7.12.7", - "@storybook/addons": "6.3.12", - "@storybook/api": "6.3.12", - "@storybook/channel-postmessage": "6.3.12", - "@storybook/channels": "6.3.12", - "@storybook/client-api": "6.3.12", - "@storybook/client-logger": "6.3.12", - "@storybook/components": "6.3.12", - "@storybook/core-common": "6.3.12", - "@storybook/core-events": "6.3.12", - "@storybook/node-logger": "6.3.12", - "@storybook/router": "6.3.12", + "@storybook/addons": "6.4.19", + "@storybook/api": "6.4.19", + "@storybook/channel-postmessage": "6.4.19", + "@storybook/channels": "6.4.19", + "@storybook/client-api": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/components": "6.4.19", + "@storybook/core-common": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/node-logger": "6.4.19", + "@storybook/preview-web": "6.4.19", + "@storybook/router": "6.4.19", "@storybook/semver": "^7.3.2", - "@storybook/theming": "6.3.12", + "@storybook/store": "6.4.19", + "@storybook/theming": "6.4.19", "@types/node": "^14.0.10", - "babel-loader": "^8.2.2", + "babel-loader": "^8.0.0", "babel-plugin-macros": "^3.0.1", "babel-plugin-polyfill-corejs3": "^0.1.0", "case-sensitive-paths-webpack-plugin": "^2.3.0", "core-js": "^3.8.2", "css-loader": "^5.0.1", - "dotenv-webpack": "^7.0.0", "fork-ts-checker-webpack-plugin": "^6.0.4", - "fs-extra": "^9.0.1", "glob": "^7.1.6", "glob-promise": "^3.4.0", "html-webpack-plugin": "^5.0.0", - "react-dev-utils": "^11.0.3", + "path-browserify": "^1.0.1", + "process": "^0.11.10", "stable": "^0.1.8", "style-loader": "^2.0.0", "terser-webpack-plugin": "^5.0.3", @@ -71602,31 +71837,28 @@ "util-deprecate": "^1.0.2", "webpack": "^5.9.0", "webpack-dev-middleware": "^4.1.0", - "webpack-hot-middleware": "^2.25.0", + "webpack-hot-middleware": "^2.25.1", "webpack-virtual-modules": "^0.4.1" }, "dependencies": { "@storybook/api": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.3.12.tgz", - "integrity": "sha512-LScRXUeCWEW/OP+jiooNMQICVdusv7azTmULxtm72fhkXFRiQs2CdRNTiqNg46JLLC9z95f1W+pGK66X6HiiQA==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.4.19.tgz", + "integrity": "sha512-aDvea+NpQCBjpNp9YidO1Pr7fzzCp15FSdkG+2ihGQfv5raxrN+IIJnGUXecpe71nvlYiB+29UXBVK7AL0j51Q==", "devOptional": true, "requires": { - "@reach/router": "^1.3.4", - "@storybook/channels": "6.3.12", - "@storybook/client-logger": "6.3.12", - "@storybook/core-events": "6.3.12", - "@storybook/csf": "0.0.1", - "@storybook/router": "6.3.12", + "@storybook/channels": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/router": "6.4.19", "@storybook/semver": "^7.3.2", - "@storybook/theming": "6.3.12", - "@types/reach__router": "^1.3.7", + "@storybook/theming": "6.4.19", "core-js": "^3.8.2", "fast-deep-equal": "^3.1.3", "global": "^4.4.0", - "lodash": "^4.17.20", + "lodash": "^4.17.21", "memoizerific": "^1.11.3", - "qs": "^6.10.0", "regenerator-runtime": "^0.13.7", "store2": "^2.12.0", "telejson": "^5.3.2", @@ -71635,9 +71867,9 @@ } }, "@storybook/channels": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.3.12.tgz", - "integrity": "sha512-l4sA+g1PdUV8YCbgs47fIKREdEQAKNdQIZw0b7BfTvY9t0x5yfBywgQhYON/lIeiNGz2OlIuD+VUtqYfCtNSyw==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.4.19.tgz", + "integrity": "sha512-EwyoncFvTfmIlfsy8jTfayCxo2XchPkZk/9txipugWSmc057HdklMKPLOHWP0z5hLH0IbVIKXzdNISABm36jwQ==", "devOptional": true, "requires": { "core-js": "^3.8.2", @@ -71646,9 +71878,9 @@ } }, "@storybook/client-logger": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.3.12.tgz", - "integrity": "sha512-zNDsamZvHnuqLznDdP9dUeGgQ9TyFh4ray3t1VGO7ZqWVZ2xtVCCXjDvMnOXI2ifMpX5UsrOvshIPeE9fMBmiQ==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.4.19.tgz", + "integrity": "sha512-zmg/2wyc9W3uZrvxaW4BfHcr40J0v7AGslqYXk9H+ERLVwIvrR4NhxQFaS6uITjBENyRDxwzfU3Va634WcmdDQ==", "devOptional": true, "requires": { "core-js": "^3.8.2", @@ -71656,15 +71888,15 @@ } }, "@storybook/components": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/components/-/components-6.3.12.tgz", - "integrity": "sha512-kdQt8toUjynYAxDLrJzuG7YSNL6as1wJoyzNUaCfG06YPhvIAlKo7le9tS2mThVFN5e9nbKrW3N1V1sp6ypZXQ==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-6.4.19.tgz", + "integrity": "sha512-q/0V37YAJA7CNc+wSiiefeM9+3XVk8ixBNylY36QCGJgIeGQ5/79vPyUe6K4lLmsQwpmZsIq1s1Ad5+VbboeOA==", "devOptional": true, "requires": { "@popperjs/core": "^2.6.0", - "@storybook/client-logger": "6.3.12", - "@storybook/csf": "0.0.1", - "@storybook/theming": "6.3.12", + "@storybook/client-logger": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/theming": "6.4.19", "@types/color-convert": "^2.0.0", "@types/overlayscrollbars": "^1.12.0", "@types/react-syntax-highlighter": "11.0.5", @@ -71672,7 +71904,7 @@ "core-js": "^3.8.2", "fast-deep-equal": "^3.1.3", "global": "^4.4.0", - "lodash": "^4.17.20", + "lodash": "^4.17.21", "markdown-to-jsx": "^7.1.3", "memoizerific": "^1.11.3", "overlayscrollbars": "^1.13.1", @@ -71703,9 +71935,9 @@ } }, "@storybook/core-common": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-6.3.12.tgz", - "integrity": "sha512-xlHs2QXELq/moB4MuXjYOczaxU64BIseHsnFBLyboJYN6Yso3qihW5RB7cuJlGohkjb4JwY74dvfT4Ww66rkBA==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-6.4.19.tgz", + "integrity": "sha512-X1pJJkO48DFxl6iyEemIKqRkJ7j9/cBh3BRBUr+xZHXBvnD0GKDXIocwh0PjSxSC6XSu3UCQnqtKi3PbjRl8Dg==", "devOptional": true, "requires": { "@babel/core": "^7.12.10", @@ -71729,13 +71961,11 @@ "@babel/preset-react": "^7.12.10", "@babel/preset-typescript": "^7.12.7", "@babel/register": "^7.12.1", - "@storybook/node-logger": "6.3.12", + "@storybook/node-logger": "6.4.19", "@storybook/semver": "^7.3.2", - "@types/glob-base": "^0.3.0", - "@types/micromatch": "^4.0.1", "@types/node": "^14.0.10", "@types/pretty-hrtime": "^1.0.0", - "babel-loader": "^8.2.2", + "babel-loader": "^8.0.0", "babel-plugin-macros": "^3.0.1", "babel-plugin-polyfill-corejs3": "^0.1.0", "chalk": "^4.1.0", @@ -71744,70 +71974,23 @@ "file-system-cache": "^1.0.5", "find-up": "^5.0.0", "fork-ts-checker-webpack-plugin": "^6.0.4", + "fs-extra": "^9.0.1", "glob": "^7.1.6", - "glob-base": "^0.3.0", + "handlebars": "^4.7.7", "interpret": "^2.2.0", "json5": "^2.1.3", "lazy-universal-dotenv": "^3.0.1", - "micromatch": "^4.0.2", + "picomatch": "^2.3.0", "pkg-dir": "^5.0.0", "pretty-hrtime": "^1.0.3", "resolve-from": "^5.0.0", + "slash": "^3.0.0", + "telejson": "^5.3.2", "ts-dedent": "^2.0.0", "util-deprecate": "^1.0.2", "webpack": "4" }, "dependencies": { - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "devOptional": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "devOptional": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "devOptional": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "devOptional": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, "loader-utils": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", @@ -71878,16 +72061,6 @@ "worker-farm": "^1.7.0" } }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "devOptional": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - }, "webpack": { "version": "4.46.0", "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.46.0.tgz", @@ -71917,80 +72090,147 @@ "terser-webpack-plugin": "^1.4.3", "watchpack": "^1.7.4", "webpack-sources": "^1.4.1" - }, - "dependencies": { - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "devOptional": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - } - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "devOptional": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - } } } } }, "@storybook/core-events": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.3.12.tgz", - "integrity": "sha512-SXfD7xUUMazaeFkB92qOTUV8Y/RghE4SkEYe5slAdjeocSaH7Nz2WV0rqNEgChg0AQc+JUI66no8L9g0+lw4Gw==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.4.19.tgz", + "integrity": "sha512-KICzUw6XVQUJzFSCXfvhfHAuyhn4Q5J4IZEfuZkcGJS4ODkrO6tmpdYE5Cfr+so95Nfp0ErWiLUuodBsW9/rtA==", "devOptional": true, "requires": { "core-js": "^3.8.2" } }, + "@storybook/csf": { + "version": "0.0.2--canary.87bc651.0", + "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.0.2--canary.87bc651.0.tgz", + "integrity": "sha512-ajk1Uxa+rBpFQHKrCcTmJyQBXZ5slfwHVEaKlkuFaW77it8RgbPJp/ccna3sgoi8oZ7FkkOyvv1Ve4SmwFqRqw==", + "devOptional": true, + "requires": { + "lodash": "^4.17.15" + } + }, + "@storybook/preview-web": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/preview-web/-/preview-web-6.4.19.tgz", + "integrity": "sha512-jqltoBv5j7lvnxEfV9w8dLX9ASWGuvgz97yg8Yo5FqkftEwrHJenyvMGcTgDJKJPorF+wiz/9aIqnmd3LCAcZQ==", + "devOptional": true, + "requires": { + "@storybook/addons": "6.4.19", + "@storybook/channel-postmessage": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/store": "6.4.19", + "ansi-to-html": "^0.6.11", + "core-js": "^3.8.2", + "global": "^4.4.0", + "lodash": "^4.17.21", + "qs": "^6.10.0", + "regenerator-runtime": "^0.13.7", + "synchronous-promise": "^2.0.15", + "ts-dedent": "^2.0.0", + "unfetch": "^4.2.0", + "util-deprecate": "^1.0.2" + } + }, "@storybook/router": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.3.12.tgz", - "integrity": "sha512-G/pNGCnrJRetCwyEZulHPT+YOcqEj/vkPVDTUfii2qgqukup6K0cjwgd7IukAURnAnnzTi1gmgFuEKUi8GE/KA==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.4.19.tgz", + "integrity": "sha512-KWWwIzuyeEIWVezkCihwY2A76Il9tUNg0I410g9qT7NrEsKyqXGRYOijWub7c1GGyNjLqz0jtrrehtixMcJkuA==", "devOptional": true, "requires": { - "@reach/router": "^1.3.4", - "@storybook/client-logger": "6.3.12", - "@types/reach__router": "^1.3.7", + "@storybook/client-logger": "6.4.19", "core-js": "^3.8.2", "fast-deep-equal": "^3.1.3", "global": "^4.4.0", - "lodash": "^4.17.20", + "history": "5.0.0", + "lodash": "^4.17.21", "memoizerific": "^1.11.3", "qs": "^6.10.0", + "react-router": "^6.0.0", + "react-router-dom": "^6.0.0", "ts-dedent": "^2.0.0" + }, + "dependencies": { + "react-router": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.2.2.tgz", + "integrity": "sha512-/MbxyLzd7Q7amp4gDOGaYvXwhEojkJD5BtExkuKmj39VEE0m3l/zipf6h2WIB2jyAO0lI6NGETh4RDcktRm4AQ==", + "devOptional": true, + "requires": { + "history": "^5.2.0" + }, + "dependencies": { + "history": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/history/-/history-5.3.0.tgz", + "integrity": "sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==", + "devOptional": true, + "requires": { + "@babel/runtime": "^7.7.6" + } + } + } + }, + "react-router-dom": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.2.2.tgz", + "integrity": "sha512-AtYEsAST7bDD4dLSQHDnk/qxWLJdad5t1HFa1qJyUrCeGgEuCSw0VB/27ARbF9Fi/W5598ujvJOm3ujUCVzuYQ==", + "devOptional": true, + "requires": { + "history": "^5.2.0", + "react-router": "6.2.2" + }, + "dependencies": { + "history": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/history/-/history-5.3.0.tgz", + "integrity": "sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==", + "devOptional": true, + "requires": { + "@babel/runtime": "^7.7.6" + } + } + } + } + } + }, + "@storybook/store": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/store/-/store-6.4.19.tgz", + "integrity": "sha512-N9/ZjemRHGfT3InPIbqQqc6snkcfnf3Qh9oOr0smbfaVGJol//KOX65kzzobtzFcid0WxtTDZ3HmgFVH+GvuhQ==", + "devOptional": true, + "requires": { + "@storybook/addons": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "core-js": "^3.8.2", + "fast-deep-equal": "^3.1.3", + "global": "^4.4.0", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "regenerator-runtime": "^0.13.7", + "slash": "^3.0.0", + "stable": "^0.1.8", + "synchronous-promise": "^2.0.15", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" } }, "@storybook/theming": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.3.12.tgz", - "integrity": "sha512-wOJdTEa/VFyFB2UyoqyYGaZdym6EN7RALuQOAMT6zHA282FBmKw8nL5DETHEbctpnHdcrMC/391teK4nNSrdOA==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.4.19.tgz", + "integrity": "sha512-V4pWmTvAxmbHR6B3jA4hPkaxZPyExHvCToy7b76DpUTpuHihijNDMAn85KhOQYIeL9q14zP/aiz899tOHsOidg==", "devOptional": true, "requires": { "@emotion/core": "^10.1.1", "@emotion/is-prop-valid": "^0.8.6", "@emotion/styled": "^10.0.27", - "@storybook/client-logger": "6.3.12", + "@storybook/client-logger": "6.4.19", "core-js": "^3.8.2", "deep-object-diff": "^1.1.0", "emotion-theming": "^10.0.27", @@ -72002,13 +72242,27 @@ }, "dependencies": { "@emotion/styled": { - "version": "10.0.27", - "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-10.0.27.tgz", - "integrity": "sha512-iK/8Sh7+NLJzyp9a5+vIQIXTYxfT4yB/OJbjzQanB2RZpvmzBQOHZWhpAMZWYEKRNNbsD6WfBw5sVWkb6WzS/Q==", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-10.3.0.tgz", + "integrity": "sha512-GgcUpXBBEU5ido+/p/mCT2/Xx+Oqmp9JzQRuC+a4lYM4i4LBBn/dWvc0rQ19N9ObA8/T4NWMrPNe79kMBDJqoQ==", "devOptional": true, "requires": { - "@emotion/styled-base": "^10.0.27", + "@emotion/styled-base": "^10.3.0", "babel-plugin-emotion": "^10.0.27" + }, + "dependencies": { + "@emotion/styled-base": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@emotion/styled-base/-/styled-base-10.3.0.tgz", + "integrity": "sha512-PBRqsVKR7QRNkmfH78hTSSwHWcwDpecH9W6heujWAcyp2wdz/64PP73s7fWS1dIPm8/Exc8JAzYS8dEWXjv60w==", + "devOptional": true, + "requires": { + "@babel/runtime": "^7.5.5", + "@emotion/is-prop-valid": "0.8.8", + "@emotion/serialize": "^0.11.15", + "@emotion/utils": "0.11.3" + } + } } } } @@ -72036,15 +72290,6 @@ "resolve": "^1.19.0" } }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "devOptional": true, - "requires": { - "fill-range": "^7.0.1" - } - }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -72089,47 +72334,6 @@ } } }, - "dotenv-defaults": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/dotenv-defaults/-/dotenv-defaults-2.0.2.tgz", - "integrity": "sha512-iOIzovWfsUHU91L5i8bJce3NYK5JXeAwH50Jh6+ARUdLiiGlYWfGw6UkzsYqaXZH/hjE/eCd/PlfM/qqyK0AMg==", - "devOptional": true, - "requires": { - "dotenv": "^8.2.0" - } - }, - "dotenv-webpack": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/dotenv-webpack/-/dotenv-webpack-7.0.3.tgz", - "integrity": "sha512-O0O9pOEwrk+n1zzR3T2uuXRlw64QxHSPeNN1GaiNBloQFNaCUL9V8jxSVz4jlXXFP/CIqK8YecWf8BAvsSgMjw==", - "devOptional": true, - "requires": { - "dotenv-defaults": "^2.0.2" - } - }, - "enhanced-resolve": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", - "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", - "devOptional": true, - "requires": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.5.0", - "tapable": "^1.0.0" - }, - "dependencies": { - "memory-fs": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", - "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", - "devOptional": true, - "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - } - } - }, "eslint-scope": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", @@ -72140,15 +72344,6 @@ "estraverse": "^4.1.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==", - "devOptional": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, "find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", @@ -72177,21 +72372,15 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "devOptional": true }, - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "history": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/history/-/history-5.0.0.tgz", + "integrity": "sha512-3NyRMKIiFSJmIPdq7FxkNMJkQ7ZEtVblOQ38VtKaA0zZMW1Eo6Q6W8oDKEflr1kNNTItSnk4JMCO1deeSgbLLg==", "devOptional": true, "requires": { - "is-plain-object": "^2.0.4" + "@babel/runtime": "^7.7.6" } }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "devOptional": true - }, "jest-worker": { "version": "27.2.3", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.2.3.tgz", @@ -72212,12 +72401,6 @@ "minimist": "^1.2.5" } }, - "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==", - "devOptional": true - }, "loader-runner": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", @@ -72253,26 +72436,6 @@ "yallist": "^4.0.0" } }, - "memory-fs": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", - "devOptional": true, - "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - }, - "micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", - "devOptional": true, - "requires": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" - } - }, "p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -72307,18 +72470,18 @@ } }, "polished": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/polished/-/polished-4.1.3.tgz", - "integrity": "sha512-ocPAcVBUOryJEKe0z2KLd1l9EBa1r5mSwlKpExmrLzsnIzJo4axsoU9O2BjOTkDGDT4mZ0WFE5XKTlR3nLnZOA==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/polished/-/polished-4.1.4.tgz", + "integrity": "sha512-Nq5Mbza+Auo7N3sQb1QMFaQiDO+4UexWuSGR7Cjb4Sw11SZIJcrrFtiZ+L0jT9MBsUsxDboHVASbCLbE1rnECg==", "devOptional": true, "requires": { - "@babel/runtime": "^7.14.0" + "@babel/runtime": "^7.16.7" } }, "qs": { - "version": "6.10.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz", - "integrity": "sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg==", + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", "devOptional": true, "requires": { "side-channel": "^1.0.4" @@ -72339,6 +72502,12 @@ "randombytes": "^2.1.0" } }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "devOptional": true + }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -72364,12 +72533,6 @@ "has-flag": "^4.0.0" } }, - "tapable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", - "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", - "devOptional": true - }, "terser": { "version": "5.9.0", "resolved": "https://registry.npmjs.org/terser/-/terser-5.9.0.tgz", @@ -72403,15 +72566,6 @@ "terser": "^5.7.2" } }, - "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==", - "devOptional": true, - "requires": { - "is-number": "^7.0.0" - } - }, "webpack-dev-middleware": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-4.3.0.tgz", @@ -72451,13 +72605,13 @@ } }, "@storybook/channel-postmessage": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/channel-postmessage/-/channel-postmessage-6.3.12.tgz", - "integrity": "sha512-Ou/2Ga3JRTZ/4sSv7ikMgUgLTeZMsXXWLXuscz4oaYhmOqAU9CrJw0G1NitwBgK/+qC83lEFSLujHkWcoQDOKg==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/channel-postmessage/-/channel-postmessage-6.4.19.tgz", + "integrity": "sha512-E5h/itFzQ/6M08LR4kqlgqqmeO3tmavI+nUAlZrkCrotpJFNMHE2i0PQHg0TkFJrRDpYcrwD+AjUW4IwdqrisQ==", "requires": { - "@storybook/channels": "6.3.12", - "@storybook/client-logger": "6.3.12", - "@storybook/core-events": "6.3.12", + "@storybook/channels": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/core-events": "6.4.19", "core-js": "^3.8.2", "global": "^4.4.0", "qs": "^6.10.0", @@ -72465,9 +72619,9 @@ }, "dependencies": { "@storybook/channels": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.3.12.tgz", - "integrity": "sha512-l4sA+g1PdUV8YCbgs47fIKREdEQAKNdQIZw0b7BfTvY9t0x5yfBywgQhYON/lIeiNGz2OlIuD+VUtqYfCtNSyw==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.4.19.tgz", + "integrity": "sha512-EwyoncFvTfmIlfsy8jTfayCxo2XchPkZk/9txipugWSmc057HdklMKPLOHWP0z5hLH0IbVIKXzdNISABm36jwQ==", "requires": { "core-js": "^3.8.2", "ts-dedent": "^2.0.0", @@ -72475,32 +72629,65 @@ } }, "@storybook/client-logger": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.3.12.tgz", - "integrity": "sha512-zNDsamZvHnuqLznDdP9dUeGgQ9TyFh4ray3t1VGO7ZqWVZ2xtVCCXjDvMnOXI2ifMpX5UsrOvshIPeE9fMBmiQ==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.4.19.tgz", + "integrity": "sha512-zmg/2wyc9W3uZrvxaW4BfHcr40J0v7AGslqYXk9H+ERLVwIvrR4NhxQFaS6uITjBENyRDxwzfU3Va634WcmdDQ==", "requires": { "core-js": "^3.8.2", "global": "^4.4.0" } }, "@storybook/core-events": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.3.12.tgz", - "integrity": "sha512-SXfD7xUUMazaeFkB92qOTUV8Y/RghE4SkEYe5slAdjeocSaH7Nz2WV0rqNEgChg0AQc+JUI66no8L9g0+lw4Gw==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.4.19.tgz", + "integrity": "sha512-KICzUw6XVQUJzFSCXfvhfHAuyhn4Q5J4IZEfuZkcGJS4ODkrO6tmpdYE5Cfr+so95Nfp0ErWiLUuodBsW9/rtA==", "requires": { "core-js": "^3.8.2" } }, "qs": { - "version": "6.10.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz", - "integrity": "sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg==", + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", "requires": { "side-channel": "^1.0.4" } } } }, + "@storybook/channel-websocket": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/channel-websocket/-/channel-websocket-6.4.19.tgz", + "integrity": "sha512-cXKwQjIXttfdUyZlcHORelUmJ5nUKswsnCA/qy7IRWpZjD8yQJcNk1dYC+tTHDVqFgdRT89pL0hRRB1rlaaR8Q==", + "requires": { + "@storybook/channels": "6.4.19", + "@storybook/client-logger": "6.4.19", + "core-js": "^3.8.2", + "global": "^4.4.0", + "telejson": "^5.3.2" + }, + "dependencies": { + "@storybook/channels": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.4.19.tgz", + "integrity": "sha512-EwyoncFvTfmIlfsy8jTfayCxo2XchPkZk/9txipugWSmc057HdklMKPLOHWP0z5hLH0IbVIKXzdNISABm36jwQ==", + "requires": { + "core-js": "^3.8.2", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + } + }, + "@storybook/client-logger": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.4.19.tgz", + "integrity": "sha512-zmg/2wyc9W3uZrvxaW4BfHcr40J0v7AGslqYXk9H+ERLVwIvrR4NhxQFaS6uITjBENyRDxwzfU3Va634WcmdDQ==", + "requires": { + "core-js": "^3.8.2", + "global": "^4.4.0" + } + } + } + }, "@storybook/channels": { "version": "6.3.8", "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.3.8.tgz", @@ -72512,34 +72699,36 @@ } }, "@storybook/client-api": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/client-api/-/client-api-6.3.12.tgz", - "integrity": "sha512-xnW+lKKK2T774z+rOr9Wopt1aYTStfb86PSs9p3Fpnc2Btcftln+C3NtiHZl8Ccqft8Mz/chLGgewRui6tNI8g==", - "requires": { - "@storybook/addons": "6.3.12", - "@storybook/channel-postmessage": "6.3.12", - "@storybook/channels": "6.3.12", - "@storybook/client-logger": "6.3.12", - "@storybook/core-events": "6.3.12", - "@storybook/csf": "0.0.1", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/client-api/-/client-api-6.4.19.tgz", + "integrity": "sha512-OCrT5Um3FDvZnimQKwWtwsaI+5agPwq2i8YiqlofrI/NPMKp0I7DEkCGwE5IRD1Q8BIKqHcMo5tTmfYi0AxyOg==", + "requires": { + "@storybook/addons": "6.4.19", + "@storybook/channel-postmessage": "6.4.19", + "@storybook/channels": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/store": "6.4.19", "@types/qs": "^6.9.5", "@types/webpack-env": "^1.16.0", "core-js": "^3.8.2", + "fast-deep-equal": "^3.1.3", "global": "^4.4.0", - "lodash": "^4.17.20", + "lodash": "^4.17.21", "memoizerific": "^1.11.3", "qs": "^6.10.0", "regenerator-runtime": "^0.13.7", - "stable": "^0.1.8", "store2": "^2.12.0", + "synchronous-promise": "^2.0.15", "ts-dedent": "^2.0.0", "util-deprecate": "^1.0.2" }, "dependencies": { "@storybook/channels": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.3.12.tgz", - "integrity": "sha512-l4sA+g1PdUV8YCbgs47fIKREdEQAKNdQIZw0b7BfTvY9t0x5yfBywgQhYON/lIeiNGz2OlIuD+VUtqYfCtNSyw==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.4.19.tgz", + "integrity": "sha512-EwyoncFvTfmIlfsy8jTfayCxo2XchPkZk/9txipugWSmc057HdklMKPLOHWP0z5hLH0IbVIKXzdNISABm36jwQ==", "requires": { "core-js": "^3.8.2", "ts-dedent": "^2.0.0", @@ -72547,22 +72736,52 @@ } }, "@storybook/client-logger": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.3.12.tgz", - "integrity": "sha512-zNDsamZvHnuqLznDdP9dUeGgQ9TyFh4ray3t1VGO7ZqWVZ2xtVCCXjDvMnOXI2ifMpX5UsrOvshIPeE9fMBmiQ==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.4.19.tgz", + "integrity": "sha512-zmg/2wyc9W3uZrvxaW4BfHcr40J0v7AGslqYXk9H+ERLVwIvrR4NhxQFaS6uITjBENyRDxwzfU3Va634WcmdDQ==", "requires": { "core-js": "^3.8.2", "global": "^4.4.0" } }, "@storybook/core-events": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.3.12.tgz", - "integrity": "sha512-SXfD7xUUMazaeFkB92qOTUV8Y/RghE4SkEYe5slAdjeocSaH7Nz2WV0rqNEgChg0AQc+JUI66no8L9g0+lw4Gw==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.4.19.tgz", + "integrity": "sha512-KICzUw6XVQUJzFSCXfvhfHAuyhn4Q5J4IZEfuZkcGJS4ODkrO6tmpdYE5Cfr+so95Nfp0ErWiLUuodBsW9/rtA==", "requires": { "core-js": "^3.8.2" } }, + "@storybook/csf": { + "version": "0.0.2--canary.87bc651.0", + "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.0.2--canary.87bc651.0.tgz", + "integrity": "sha512-ajk1Uxa+rBpFQHKrCcTmJyQBXZ5slfwHVEaKlkuFaW77it8RgbPJp/ccna3sgoi8oZ7FkkOyvv1Ve4SmwFqRqw==", + "requires": { + "lodash": "^4.17.15" + } + }, + "@storybook/store": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/store/-/store-6.4.19.tgz", + "integrity": "sha512-N9/ZjemRHGfT3InPIbqQqc6snkcfnf3Qh9oOr0smbfaVGJol//KOX65kzzobtzFcid0WxtTDZ3HmgFVH+GvuhQ==", + "requires": { + "@storybook/addons": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "core-js": "^3.8.2", + "fast-deep-equal": "^3.1.3", + "global": "^4.4.0", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "regenerator-runtime": "^0.13.7", + "slash": "^3.0.0", + "stable": "^0.1.8", + "synchronous-promise": "^2.0.15", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + } + }, "qs": { "version": "6.10.1", "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz", @@ -72570,6 +72789,11 @@ "requires": { "side-channel": "^1.0.4" } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" } } }, @@ -72665,10 +72889,11 @@ } }, "@storybook/csf-tools": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/csf-tools/-/csf-tools-6.3.12.tgz", - "integrity": "sha512-wNrX+99ajAXxLo0iRwrqw65MLvCV6SFC0XoPLYrtBvyKr+hXOOnzIhO2f5BNEii8velpC2gl2gcLKeacpVYLqA==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/csf-tools/-/csf-tools-6.4.19.tgz", + "integrity": "sha512-gf/zRhGoAVsFwSyV2tc+jeJfZQkxF6QsaZgbUSe24/IUvGFCT/PS/jZq1qy7dECAwrTOfykgu8juyBtj6WhWyw==", "requires": { + "@babel/core": "^7.12.10", "@babel/generator": "^7.12.11", "@babel/parser": "^7.12.11", "@babel/plugin-transform-react-jsx": "^7.12.12", @@ -72676,15 +72901,25 @@ "@babel/traverse": "^7.12.11", "@babel/types": "^7.12.11", "@mdx-js/mdx": "^1.6.22", - "@storybook/csf": "^0.0.1", + "@storybook/csf": "0.0.2--canary.87bc651.0", "core-js": "^3.8.2", "fs-extra": "^9.0.1", + "global": "^4.4.0", "js-string-escape": "^1.0.1", - "lodash": "^4.17.20", - "prettier": "~2.2.1", - "regenerator-runtime": "^0.13.7" + "lodash": "^4.17.21", + "prettier": ">=2.2.1 <=2.3.0", + "regenerator-runtime": "^0.13.7", + "ts-dedent": "^2.0.0" }, "dependencies": { + "@storybook/csf": { + "version": "0.0.2--canary.87bc651.0", + "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.0.2--canary.87bc651.0.tgz", + "integrity": "sha512-ajk1Uxa+rBpFQHKrCcTmJyQBXZ5slfwHVEaKlkuFaW77it8RgbPJp/ccna3sgoi8oZ7FkkOyvv1Ve4SmwFqRqw==", + "requires": { + "lodash": "^4.17.15" + } + }, "fs-extra": { "version": "9.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", @@ -72697,41 +72932,40 @@ } }, "prettier": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.2.1.tgz", - "integrity": "sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q==" + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.3.0.tgz", + "integrity": "sha512-kXtO4s0Lz/DW/IJ9QdWhAf7/NmPWQXkFr/r/WkR3vyI+0v8amTDxiaQSLzs8NBlytfLWX/7uQUMIW677yLKl4w==" } } }, "@storybook/manager-webpack5": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/manager-webpack5/-/manager-webpack5-6.3.12.tgz", - "integrity": "sha512-wMZYNBAUomlGSGsDFuATgiWRGF8g6TEk33VCESWrMnKLZZyq80KT+EiL/0+edfIbdrgalaqXwch38+tRwErg2A==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/manager-webpack5/-/manager-webpack5-6.4.19.tgz", + "integrity": "sha512-hVjWhWAOgWaymBy0HeRskN+MfKLpqLP4Txfw+3Xqg1qplgexV0w2O4BQrS/SNEH4V/1qF9h8XTsk3L3oQIj3Mg==", "devOptional": true, "requires": { "@babel/core": "^7.12.10", "@babel/plugin-transform-template-literals": "^7.12.1", "@babel/preset-react": "^7.12.10", - "@storybook/addons": "6.3.12", - "@storybook/core-client": "6.3.12", - "@storybook/core-common": "6.3.12", - "@storybook/node-logger": "6.3.12", - "@storybook/theming": "6.3.12", - "@storybook/ui": "6.3.12", + "@storybook/addons": "6.4.19", + "@storybook/core-client": "6.4.19", + "@storybook/core-common": "6.4.19", + "@storybook/node-logger": "6.4.19", + "@storybook/theming": "6.4.19", + "@storybook/ui": "6.4.19", "@types/node": "^14.0.10", - "babel-loader": "^8.2.2", + "babel-loader": "^8.0.0", "case-sensitive-paths-webpack-plugin": "^2.3.0", "chalk": "^4.1.0", "core-js": "^3.8.2", "css-loader": "^5.0.1", - "dotenv-webpack": "^7.0.0", "express": "^4.17.1", - "file-loader": "^6.2.0", "file-system-cache": "^1.0.5", "find-up": "^5.0.0", "fs-extra": "^9.0.1", "html-webpack-plugin": "^5.0.0", "node-fetch": "^2.6.1", + "process": "^0.11.10", "read-pkg-up": "^7.0.1", "regenerator-runtime": "^0.13.7", "resolve-from": "^5.0.0", @@ -72739,7 +72973,6 @@ "telejson": "^5.3.2", "terser-webpack-plugin": "^5.0.3", "ts-dedent": "^2.0.0", - "url-loader": "^4.1.1", "util-deprecate": "^1.0.2", "webpack": "^5.9.0", "webpack-dev-middleware": "^4.1.0", @@ -72747,9 +72980,9 @@ }, "dependencies": { "@storybook/channels": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.3.12.tgz", - "integrity": "sha512-l4sA+g1PdUV8YCbgs47fIKREdEQAKNdQIZw0b7BfTvY9t0x5yfBywgQhYON/lIeiNGz2OlIuD+VUtqYfCtNSyw==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.4.19.tgz", + "integrity": "sha512-EwyoncFvTfmIlfsy8jTfayCxo2XchPkZk/9txipugWSmc057HdklMKPLOHWP0z5hLH0IbVIKXzdNISABm36jwQ==", "devOptional": true, "requires": { "core-js": "^3.8.2", @@ -72758,9 +72991,9 @@ } }, "@storybook/client-logger": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.3.12.tgz", - "integrity": "sha512-zNDsamZvHnuqLznDdP9dUeGgQ9TyFh4ray3t1VGO7ZqWVZ2xtVCCXjDvMnOXI2ifMpX5UsrOvshIPeE9fMBmiQ==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.4.19.tgz", + "integrity": "sha512-zmg/2wyc9W3uZrvxaW4BfHcr40J0v7AGslqYXk9H+ERLVwIvrR4NhxQFaS6uITjBENyRDxwzfU3Va634WcmdDQ==", "devOptional": true, "requires": { "core-js": "^3.8.2", @@ -72768,34 +73001,86 @@ } }, "@storybook/core-client": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/core-client/-/core-client-6.3.12.tgz", - "integrity": "sha512-8Smd9BgZHJpAdevLKQYinwtjSyCZAuBMoetP4P5hnn53mWl0NFbrHFaAdT+yNchDLZQUbf7Y18VmIqEH+RCR5w==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/core-client/-/core-client-6.4.19.tgz", + "integrity": "sha512-rQHRZjhArPleE7/S8ZUolgzwY+hC0smSKX/3PQxO2GcebDjnJj6+iSV3h+aSMHMmTdoCQvjYw9aBpT8scuRe+A==", "devOptional": true, "requires": { - "@storybook/addons": "6.3.12", - "@storybook/channel-postmessage": "6.3.12", - "@storybook/client-api": "6.3.12", - "@storybook/client-logger": "6.3.12", - "@storybook/core-events": "6.3.12", - "@storybook/csf": "0.0.1", - "@storybook/ui": "6.3.12", + "@storybook/addons": "6.4.19", + "@storybook/channel-postmessage": "6.4.19", + "@storybook/channel-websocket": "6.4.19", + "@storybook/client-api": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/preview-web": "6.4.19", + "@storybook/store": "6.4.19", + "@storybook/ui": "6.4.19", "airbnb-js-shims": "^2.2.1", "ansi-to-html": "^0.6.11", "core-js": "^3.8.2", "global": "^4.4.0", - "lodash": "^4.17.20", + "lodash": "^4.17.21", "qs": "^6.10.0", "regenerator-runtime": "^0.13.7", "ts-dedent": "^2.0.0", "unfetch": "^4.2.0", "util-deprecate": "^1.0.2" + }, + "dependencies": { + "@storybook/preview-web": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/preview-web/-/preview-web-6.4.19.tgz", + "integrity": "sha512-jqltoBv5j7lvnxEfV9w8dLX9ASWGuvgz97yg8Yo5FqkftEwrHJenyvMGcTgDJKJPorF+wiz/9aIqnmd3LCAcZQ==", + "devOptional": true, + "requires": { + "@storybook/addons": "6.4.19", + "@storybook/channel-postmessage": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/store": "6.4.19", + "ansi-to-html": "^0.6.11", + "core-js": "^3.8.2", + "global": "^4.4.0", + "lodash": "^4.17.21", + "qs": "^6.10.0", + "regenerator-runtime": "^0.13.7", + "synchronous-promise": "^2.0.15", + "ts-dedent": "^2.0.0", + "unfetch": "^4.2.0", + "util-deprecate": "^1.0.2" + } + }, + "@storybook/store": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/store/-/store-6.4.19.tgz", + "integrity": "sha512-N9/ZjemRHGfT3InPIbqQqc6snkcfnf3Qh9oOr0smbfaVGJol//KOX65kzzobtzFcid0WxtTDZ3HmgFVH+GvuhQ==", + "devOptional": true, + "requires": { + "@storybook/addons": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "core-js": "^3.8.2", + "fast-deep-equal": "^3.1.3", + "global": "^4.4.0", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "regenerator-runtime": "^0.13.7", + "slash": "^3.0.0", + "stable": "^0.1.8", + "synchronous-promise": "^2.0.15", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + } + } } }, "@storybook/core-common": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-6.3.12.tgz", - "integrity": "sha512-xlHs2QXELq/moB4MuXjYOczaxU64BIseHsnFBLyboJYN6Yso3qihW5RB7cuJlGohkjb4JwY74dvfT4Ww66rkBA==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-6.4.19.tgz", + "integrity": "sha512-X1pJJkO48DFxl6iyEemIKqRkJ7j9/cBh3BRBUr+xZHXBvnD0GKDXIocwh0PjSxSC6XSu3UCQnqtKi3PbjRl8Dg==", "devOptional": true, "requires": { "@babel/core": "^7.12.10", @@ -72819,13 +73104,11 @@ "@babel/preset-react": "^7.12.10", "@babel/preset-typescript": "^7.12.7", "@babel/register": "^7.12.1", - "@storybook/node-logger": "6.3.12", + "@storybook/node-logger": "6.4.19", "@storybook/semver": "^7.3.2", - "@types/glob-base": "^0.3.0", - "@types/micromatch": "^4.0.1", "@types/node": "^14.0.10", "@types/pretty-hrtime": "^1.0.0", - "babel-loader": "^8.2.2", + "babel-loader": "^8.0.0", "babel-plugin-macros": "^3.0.1", "babel-plugin-polyfill-corejs3": "^0.1.0", "chalk": "^4.1.0", @@ -72834,70 +73117,23 @@ "file-system-cache": "^1.0.5", "find-up": "^5.0.0", "fork-ts-checker-webpack-plugin": "^6.0.4", + "fs-extra": "^9.0.1", "glob": "^7.1.6", - "glob-base": "^0.3.0", + "handlebars": "^4.7.7", "interpret": "^2.2.0", "json5": "^2.1.3", "lazy-universal-dotenv": "^3.0.1", - "micromatch": "^4.0.2", + "picomatch": "^2.3.0", "pkg-dir": "^5.0.0", "pretty-hrtime": "^1.0.3", "resolve-from": "^5.0.0", + "slash": "^3.0.0", + "telejson": "^5.3.2", "ts-dedent": "^2.0.0", "util-deprecate": "^1.0.2", "webpack": "4" }, "dependencies": { - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "devOptional": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "devOptional": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "devOptional": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "devOptional": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, "loader-utils": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", @@ -72968,16 +73204,6 @@ "worker-farm": "^1.7.0" } }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "devOptional": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - }, "webpack": { "version": "4.46.0", "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.46.0.tgz", @@ -73007,62 +73233,38 @@ "terser-webpack-plugin": "^1.4.3", "watchpack": "^1.7.4", "webpack-sources": "^1.4.1" - }, - "dependencies": { - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "devOptional": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - } - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "devOptional": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - } } } } }, "@storybook/core-events": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.3.12.tgz", - "integrity": "sha512-SXfD7xUUMazaeFkB92qOTUV8Y/RghE4SkEYe5slAdjeocSaH7Nz2WV0rqNEgChg0AQc+JUI66no8L9g0+lw4Gw==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.4.19.tgz", + "integrity": "sha512-KICzUw6XVQUJzFSCXfvhfHAuyhn4Q5J4IZEfuZkcGJS4ODkrO6tmpdYE5Cfr+so95Nfp0ErWiLUuodBsW9/rtA==", "devOptional": true, "requires": { "core-js": "^3.8.2" } }, + "@storybook/csf": { + "version": "0.0.2--canary.87bc651.0", + "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.0.2--canary.87bc651.0.tgz", + "integrity": "sha512-ajk1Uxa+rBpFQHKrCcTmJyQBXZ5slfwHVEaKlkuFaW77it8RgbPJp/ccna3sgoi8oZ7FkkOyvv1Ve4SmwFqRqw==", + "devOptional": true, + "requires": { + "lodash": "^4.17.15" + } + }, "@storybook/theming": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.3.12.tgz", - "integrity": "sha512-wOJdTEa/VFyFB2UyoqyYGaZdym6EN7RALuQOAMT6zHA282FBmKw8nL5DETHEbctpnHdcrMC/391teK4nNSrdOA==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.4.19.tgz", + "integrity": "sha512-V4pWmTvAxmbHR6B3jA4hPkaxZPyExHvCToy7b76DpUTpuHihijNDMAn85KhOQYIeL9q14zP/aiz899tOHsOidg==", "devOptional": true, "requires": { "@emotion/core": "^10.1.1", "@emotion/is-prop-valid": "^0.8.6", "@emotion/styled": "^10.0.27", - "@storybook/client-logger": "6.3.12", + "@storybook/client-logger": "6.4.19", "core-js": "^3.8.2", "deep-object-diff": "^1.1.0", "emotion-theming": "^10.0.27", @@ -73074,34 +73276,47 @@ }, "dependencies": { "@emotion/styled": { - "version": "10.0.27", - "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-10.0.27.tgz", - "integrity": "sha512-iK/8Sh7+NLJzyp9a5+vIQIXTYxfT4yB/OJbjzQanB2RZpvmzBQOHZWhpAMZWYEKRNNbsD6WfBw5sVWkb6WzS/Q==", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-10.3.0.tgz", + "integrity": "sha512-GgcUpXBBEU5ido+/p/mCT2/Xx+Oqmp9JzQRuC+a4lYM4i4LBBn/dWvc0rQ19N9ObA8/T4NWMrPNe79kMBDJqoQ==", "devOptional": true, "requires": { - "@emotion/styled-base": "^10.0.27", + "@emotion/styled-base": "^10.3.0", "babel-plugin-emotion": "^10.0.27" + }, + "dependencies": { + "@emotion/styled-base": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@emotion/styled-base/-/styled-base-10.3.0.tgz", + "integrity": "sha512-PBRqsVKR7QRNkmfH78hTSSwHWcwDpecH9W6heujWAcyp2wdz/64PP73s7fWS1dIPm8/Exc8JAzYS8dEWXjv60w==", + "devOptional": true, + "requires": { + "@babel/runtime": "^7.5.5", + "@emotion/is-prop-valid": "0.8.8", + "@emotion/serialize": "^0.11.15", + "@emotion/utils": "0.11.3" + } + } } } } }, "@storybook/ui": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/ui/-/ui-6.3.12.tgz", - "integrity": "sha512-PC2yEz4JMfarq7rUFbeA3hCA+31p5es7YPEtxLRvRwIZhtL0P4zQUfHpotb3KgWdoAIfZesAuoIQwMPQmEFYrw==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/ui/-/ui-6.4.19.tgz", + "integrity": "sha512-gFwdn5LA2U6oQ4bfUFLyHZnNasGQ01YVdwjbi+l6yjmnckBNtZfJoVTZ1rzGUbxSE9rK48InJRU+latTsr7xAg==", "devOptional": true, "requires": { "@emotion/core": "^10.1.1", - "@storybook/addons": "6.3.12", - "@storybook/api": "6.3.12", - "@storybook/channels": "6.3.12", - "@storybook/client-logger": "6.3.12", - "@storybook/components": "6.3.12", - "@storybook/core-events": "6.3.12", - "@storybook/router": "6.3.12", + "@storybook/addons": "6.4.19", + "@storybook/api": "6.4.19", + "@storybook/channels": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/components": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/router": "6.4.19", "@storybook/semver": "^7.3.2", - "@storybook/theming": "6.3.12", - "@types/markdown-to-jsx": "^6.11.3", + "@storybook/theming": "6.4.19", "copy-to-clipboard": "^3.3.1", "core-js": "^3.8.2", "core-js-pure": "^3.8.2", @@ -73109,8 +73324,8 @@ "emotion-theming": "^10.0.27", "fuse.js": "^3.6.1", "global": "^4.4.0", - "lodash": "^4.17.20", - "markdown-to-jsx": "^6.11.4", + "lodash": "^4.17.21", + "markdown-to-jsx": "^7.1.3", "memoizerific": "^1.11.3", "polished": "^4.0.5", "qs": "^6.10.0", @@ -73123,26 +73338,23 @@ }, "dependencies": { "@storybook/api": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.3.12.tgz", - "integrity": "sha512-LScRXUeCWEW/OP+jiooNMQICVdusv7azTmULxtm72fhkXFRiQs2CdRNTiqNg46JLLC9z95f1W+pGK66X6HiiQA==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.4.19.tgz", + "integrity": "sha512-aDvea+NpQCBjpNp9YidO1Pr7fzzCp15FSdkG+2ihGQfv5raxrN+IIJnGUXecpe71nvlYiB+29UXBVK7AL0j51Q==", "devOptional": true, "requires": { - "@reach/router": "^1.3.4", - "@storybook/channels": "6.3.12", - "@storybook/client-logger": "6.3.12", - "@storybook/core-events": "6.3.12", - "@storybook/csf": "0.0.1", - "@storybook/router": "6.3.12", + "@storybook/channels": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/router": "6.4.19", "@storybook/semver": "^7.3.2", - "@storybook/theming": "6.3.12", - "@types/reach__router": "^1.3.7", + "@storybook/theming": "6.4.19", "core-js": "^3.8.2", "fast-deep-equal": "^3.1.3", "global": "^4.4.0", - "lodash": "^4.17.20", + "lodash": "^4.17.21", "memoizerific": "^1.11.3", - "qs": "^6.10.0", "regenerator-runtime": "^0.13.7", "store2": "^2.12.0", "telejson": "^5.3.2", @@ -73151,15 +73363,15 @@ } }, "@storybook/components": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/components/-/components-6.3.12.tgz", - "integrity": "sha512-kdQt8toUjynYAxDLrJzuG7YSNL6as1wJoyzNUaCfG06YPhvIAlKo7le9tS2mThVFN5e9nbKrW3N1V1sp6ypZXQ==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-6.4.19.tgz", + "integrity": "sha512-q/0V37YAJA7CNc+wSiiefeM9+3XVk8ixBNylY36QCGJgIeGQ5/79vPyUe6K4lLmsQwpmZsIq1s1Ad5+VbboeOA==", "devOptional": true, "requires": { "@popperjs/core": "^2.6.0", - "@storybook/client-logger": "6.3.12", - "@storybook/csf": "0.0.1", - "@storybook/theming": "6.3.12", + "@storybook/client-logger": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/theming": "6.4.19", "@types/color-convert": "^2.0.0", "@types/overlayscrollbars": "^1.12.0", "@types/react-syntax-highlighter": "11.0.5", @@ -73167,7 +73379,7 @@ "core-js": "^3.8.2", "fast-deep-equal": "^3.1.3", "global": "^4.4.0", - "lodash": "^4.17.20", + "lodash": "^4.17.21", "markdown-to-jsx": "^7.1.3", "memoizerific": "^1.11.3", "overlayscrollbars": "^1.13.1", @@ -73182,13 +73394,6 @@ "util-deprecate": "^1.0.2" }, "dependencies": { - "markdown-to-jsx": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-7.1.3.tgz", - "integrity": "sha512-jtQ6VyT7rMT5tPV0g2EJakEnXLiPksnvlYtwQsVVZ611JsWGN8bQ1tVSDX4s6JllfEH6wmsYxNjTUAMrPmNA8w==", - "devOptional": true, - "requires": {} - }, "react-syntax-highlighter": { "version": "13.5.3", "resolved": "https://registry.npmjs.org/react-syntax-highlighter/-/react-syntax-highlighter-13.5.3.tgz", @@ -73205,21 +73410,65 @@ } }, "@storybook/router": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.3.12.tgz", - "integrity": "sha512-G/pNGCnrJRetCwyEZulHPT+YOcqEj/vkPVDTUfii2qgqukup6K0cjwgd7IukAURnAnnzTi1gmgFuEKUi8GE/KA==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.4.19.tgz", + "integrity": "sha512-KWWwIzuyeEIWVezkCihwY2A76Il9tUNg0I410g9qT7NrEsKyqXGRYOijWub7c1GGyNjLqz0jtrrehtixMcJkuA==", "devOptional": true, "requires": { - "@reach/router": "^1.3.4", - "@storybook/client-logger": "6.3.12", - "@types/reach__router": "^1.3.7", + "@storybook/client-logger": "6.4.19", "core-js": "^3.8.2", "fast-deep-equal": "^3.1.3", "global": "^4.4.0", - "lodash": "^4.17.20", + "history": "5.0.0", + "lodash": "^4.17.21", "memoizerific": "^1.11.3", "qs": "^6.10.0", + "react-router": "^6.0.0", + "react-router-dom": "^6.0.0", "ts-dedent": "^2.0.0" + }, + "dependencies": { + "react-router": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.2.2.tgz", + "integrity": "sha512-/MbxyLzd7Q7amp4gDOGaYvXwhEojkJD5BtExkuKmj39VEE0m3l/zipf6h2WIB2jyAO0lI6NGETh4RDcktRm4AQ==", + "devOptional": true, + "requires": { + "history": "^5.2.0" + }, + "dependencies": { + "history": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/history/-/history-5.3.0.tgz", + "integrity": "sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==", + "devOptional": true, + "requires": { + "@babel/runtime": "^7.7.6" + } + } + } + }, + "react-router-dom": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.2.2.tgz", + "integrity": "sha512-AtYEsAST7bDD4dLSQHDnk/qxWLJdad5t1HFa1qJyUrCeGgEuCSw0VB/27ARbF9Fi/W5598ujvJOm3ujUCVzuYQ==", + "devOptional": true, + "requires": { + "history": "^5.2.0", + "react-router": "6.2.2" + }, + "dependencies": { + "history": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/history/-/history-5.3.0.tgz", + "integrity": "sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==", + "devOptional": true, + "requires": { + "@babel/runtime": "^7.7.6" + } + } + } + } } }, "downshift": { @@ -73235,20 +73484,10 @@ "tslib": "^2.3.0" } }, - "markdown-to-jsx": { - "version": "6.11.4", - "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-6.11.4.tgz", - "integrity": "sha512-3lRCD5Sh+tfA52iGgfs/XZiw33f7fFX9Bn55aNnVNUd2GzLDkOWyKYYD8Yju2B1Vn+feiEdgJs8T6Tg0xNokPw==", - "devOptional": true, - "requires": { - "prop-types": "^15.6.2", - "unquote": "^1.1.0" - } - }, "react-helmet-async": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/react-helmet-async/-/react-helmet-async-1.1.2.tgz", - "integrity": "sha512-LTTzDDkyIleT/JJ6T/uqx7Y8qi1EuPPSiJawQY/nHHz0h7SPDT6HxP1YDDQx/fzcVxCqpWEEMS3QdrSrNkJYhg==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/react-helmet-async/-/react-helmet-async-1.2.3.tgz", + "integrity": "sha512-mCk2silF53Tq/YaYdkl2sB+/tDoPnaxN7dFS/6ZLJb/rhUY2EWGI5Xj2b4jHppScMqY45MbgPSwTxDchKpZ5Kw==", "devOptional": true, "requires": { "@babel/runtime": "^7.12.5", @@ -73283,15 +73522,6 @@ "resolve": "^1.19.0" } }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "devOptional": true, - "requires": { - "fill-range": "^7.0.1" - } - }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -73325,47 +73555,6 @@ "semver": "^7.3.5" } }, - "dotenv-defaults": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/dotenv-defaults/-/dotenv-defaults-2.0.2.tgz", - "integrity": "sha512-iOIzovWfsUHU91L5i8bJce3NYK5JXeAwH50Jh6+ARUdLiiGlYWfGw6UkzsYqaXZH/hjE/eCd/PlfM/qqyK0AMg==", - "devOptional": true, - "requires": { - "dotenv": "^8.2.0" - } - }, - "dotenv-webpack": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/dotenv-webpack/-/dotenv-webpack-7.0.3.tgz", - "integrity": "sha512-O0O9pOEwrk+n1zzR3T2uuXRlw64QxHSPeNN1GaiNBloQFNaCUL9V8jxSVz4jlXXFP/CIqK8YecWf8BAvsSgMjw==", - "devOptional": true, - "requires": { - "dotenv-defaults": "^2.0.2" - } - }, - "enhanced-resolve": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", - "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", - "devOptional": true, - "requires": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.5.0", - "tapable": "^1.0.0" - }, - "dependencies": { - "memory-fs": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", - "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", - "devOptional": true, - "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - } - } - }, "eslint-scope": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", @@ -73376,25 +73565,6 @@ "estraverse": "^4.1.1" } }, - "file-loader": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", - "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", - "devOptional": true, - "requires": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0" - } - }, - "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==", - "devOptional": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, "find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", @@ -73429,21 +73599,15 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "devOptional": true }, - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "history": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/history/-/history-5.0.0.tgz", + "integrity": "sha512-3NyRMKIiFSJmIPdq7FxkNMJkQ7ZEtVblOQ38VtKaA0zZMW1Eo6Q6W8oDKEflr1kNNTItSnk4JMCO1deeSgbLLg==", "devOptional": true, "requires": { - "is-plain-object": "^2.0.4" + "@babel/runtime": "^7.7.6" } }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "devOptional": true - }, "jest-worker": { "version": "27.2.3", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.2.3.tgz", @@ -73464,12 +73628,6 @@ "minimist": "^1.2.5" } }, - "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==", - "devOptional": true - }, "loader-runner": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", @@ -73505,26 +73663,6 @@ "yallist": "^4.0.0" } }, - "memory-fs": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", - "devOptional": true, - "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - }, - "micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", - "devOptional": true, - "requires": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" - } - }, "p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -73559,18 +73697,18 @@ } }, "polished": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/polished/-/polished-4.1.3.tgz", - "integrity": "sha512-ocPAcVBUOryJEKe0z2KLd1l9EBa1r5mSwlKpExmrLzsnIzJo4axsoU9O2BjOTkDGDT4mZ0WFE5XKTlR3nLnZOA==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/polished/-/polished-4.1.4.tgz", + "integrity": "sha512-Nq5Mbza+Auo7N3sQb1QMFaQiDO+4UexWuSGR7Cjb4Sw11SZIJcrrFtiZ+L0jT9MBsUsxDboHVASbCLbE1rnECg==", "devOptional": true, "requires": { - "@babel/runtime": "^7.14.0" + "@babel/runtime": "^7.16.7" } }, "qs": { - "version": "6.10.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz", - "integrity": "sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg==", + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", "devOptional": true, "requires": { "side-channel": "^1.0.4" @@ -73606,6 +73744,12 @@ "randombytes": "^2.1.0" } }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "devOptional": true + }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -73631,12 +73775,6 @@ "has-flag": "^4.0.0" } }, - "tapable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", - "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", - "devOptional": true - }, "terser": { "version": "5.9.0", "resolved": "https://registry.npmjs.org/terser/-/terser-5.9.0.tgz", @@ -73670,15 +73808,6 @@ "terser": "^5.7.2" } }, - "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==", - "devOptional": true, - "requires": { - "is-number": "^7.0.0" - } - }, "tslib": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", @@ -73724,60 +73853,165 @@ } }, "@storybook/node-logger": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-6.3.12.tgz", - "integrity": "sha512-iktOem/Ls2+dsZY9PhPeC6T1QhX/y7OInP88neLsqEPEbB2UXca3Ydv7OZBhBVbvN25W45b05MRzbtNUxYLNRw==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-6.4.19.tgz", + "integrity": "sha512-hO2Aar3PgPnPtNq2fVgiuGlqo3EEVR6TKVBXMq7foL3tN2k4BQFKLDHbm5qZQQntyYKurKsRUGKPJFPuI1ov/w==", "requires": { "@types/npmlog": "^4.1.2", "chalk": "^4.1.0", "core-js": "^3.8.2", - "npmlog": "^4.1.2", + "npmlog": "^5.0.1", "pretty-hrtime": "^1.0.3" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + }, + "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==", + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + } + }, + "gauge": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", + "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", + "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" + } + }, + "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==" + }, + "npmlog": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", + "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", + "requires": { + "are-we-there-yet": "^2.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^3.0.0", + "set-blocking": "^2.0.0" + } + }, + "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==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "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": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" + } + } } }, "@storybook/postinstall": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/postinstall/-/postinstall-6.3.12.tgz", - "integrity": "sha512-HkZ+abtZ3W6JbGPS6K7OSnNXbwaTwNNd5R02kRs4gV9B29XsBPDtFT6vIwzM3tmVQC7ihL5a8ceWp2OvzaNOuw==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/postinstall/-/postinstall-6.4.19.tgz", + "integrity": "sha512-/0tHHxyIV82zt1rw4BW70GmrQbDVu9IJPAxOqFzGjC1fNojwJ53mK6FfUsOzbhG5mWk5p0Ip5+zr74moP119AA==", "dev": true, "requires": { "core-js": "^3.8.2" } }, "@storybook/react": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/react/-/react-6.3.12.tgz", - "integrity": "sha512-c1Y/3/eNzye+ZRwQ3BXJux6pUMVt3lhv1/M9Qagl9JItP3jDSj5Ed3JHCgwEqpprP8mvNNXwEJ8+M7vEQyDuHg==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/react/-/react-6.4.19.tgz", + "integrity": "sha512-5b3i8jkVrjQGmcxxxXwCduHPIh+cluWkfeweKeQOe+lW4BR8fuUICo3AMLrYPAtB/UcaJyYkIYmTvF2mkfepFA==", "requires": { "@babel/preset-flow": "^7.12.1", "@babel/preset-react": "^7.12.10", - "@pmmmwh/react-refresh-webpack-plugin": "^0.4.3", - "@storybook/addons": "6.3.12", - "@storybook/core": "6.3.12", - "@storybook/core-common": "6.3.12", - "@storybook/node-logger": "6.3.12", + "@pmmmwh/react-refresh-webpack-plugin": "^0.5.1", + "@storybook/addons": "6.4.19", + "@storybook/core": "6.4.19", + "@storybook/core-common": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/node-logger": "6.4.19", "@storybook/react-docgen-typescript-plugin": "1.0.2-canary.253f8c1.0", "@storybook/semver": "^7.3.2", + "@storybook/store": "6.4.19", "@types/webpack-env": "^1.16.0", "babel-plugin-add-react-displayname": "^0.0.5", "babel-plugin-named-asset-import": "^0.3.1", "babel-plugin-react-docgen": "^4.2.1", "core-js": "^3.8.2", "global": "^4.4.0", - "lodash": "^4.17.20", + "lodash": "^4.17.21", "prop-types": "^15.7.2", - "react-dev-utils": "^11.0.3", - "react-refresh": "^0.8.3", + "react-refresh": "^0.11.0", "read-pkg-up": "^7.0.1", "regenerator-runtime": "^0.13.7", "ts-dedent": "^2.0.0", "webpack": "4" }, "dependencies": { + "@pmmmwh/react-refresh-webpack-plugin": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.4.tgz", + "integrity": "sha512-zZbZeHQDnoTlt2AF+diQT0wsSXpvWiaIOZwBRdltNFhG1+I3ozyaw7U/nBiUwyJ0D+zwdXp0E3bWOl38Ag2BMw==", + "requires": { + "ansi-html-community": "^0.0.8", + "common-path-prefix": "^3.0.0", + "core-js-pure": "^3.8.1", + "error-stack-parser": "^2.0.6", + "find-up": "^5.0.0", + "html-entities": "^2.1.0", + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0", + "source-map": "^0.7.3" + }, + "dependencies": { + "loader-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", + "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + } + } + }, "@storybook/channels": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.3.12.tgz", - "integrity": "sha512-l4sA+g1PdUV8YCbgs47fIKREdEQAKNdQIZw0b7BfTvY9t0x5yfBywgQhYON/lIeiNGz2OlIuD+VUtqYfCtNSyw==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.4.19.tgz", + "integrity": "sha512-EwyoncFvTfmIlfsy8jTfayCxo2XchPkZk/9txipugWSmc057HdklMKPLOHWP0z5hLH0IbVIKXzdNISABm36jwQ==", "requires": { "core-js": "^3.8.2", "ts-dedent": "^2.0.0", @@ -73785,40 +74019,43 @@ } }, "@storybook/client-logger": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.3.12.tgz", - "integrity": "sha512-zNDsamZvHnuqLznDdP9dUeGgQ9TyFh4ray3t1VGO7ZqWVZ2xtVCCXjDvMnOXI2ifMpX5UsrOvshIPeE9fMBmiQ==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.4.19.tgz", + "integrity": "sha512-zmg/2wyc9W3uZrvxaW4BfHcr40J0v7AGslqYXk9H+ERLVwIvrR4NhxQFaS6uITjBENyRDxwzfU3Va634WcmdDQ==", "requires": { "core-js": "^3.8.2", "global": "^4.4.0" } }, "@storybook/core": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/core/-/core-6.3.12.tgz", - "integrity": "sha512-FJm2ns8wk85hXWKslLWiUWRWwS9KWRq7jlkN6M9p57ghFseSGr4W71Orcoab4P3M7jI97l5yqBfppbscinE74g==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/core/-/core-6.4.19.tgz", + "integrity": "sha512-55LOQ/h/kf1jMhjN85t/pIEdIwWEG9yV7bdwv3niVvmoypCxyyjn9/QNK0RKYAeDSUtdm6FVoJ6k5CpxWz2d8w==", "requires": { - "@storybook/core-client": "6.3.12", - "@storybook/core-server": "6.3.12" + "@storybook/core-client": "6.4.19", + "@storybook/core-server": "6.4.19" }, "dependencies": { "@storybook/core-client": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/core-client/-/core-client-6.3.12.tgz", - "integrity": "sha512-8Smd9BgZHJpAdevLKQYinwtjSyCZAuBMoetP4P5hnn53mWl0NFbrHFaAdT+yNchDLZQUbf7Y18VmIqEH+RCR5w==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/core-client/-/core-client-6.4.19.tgz", + "integrity": "sha512-rQHRZjhArPleE7/S8ZUolgzwY+hC0smSKX/3PQxO2GcebDjnJj6+iSV3h+aSMHMmTdoCQvjYw9aBpT8scuRe+A==", "requires": { - "@storybook/addons": "6.3.12", - "@storybook/channel-postmessage": "6.3.12", - "@storybook/client-api": "6.3.12", - "@storybook/client-logger": "6.3.12", - "@storybook/core-events": "6.3.12", - "@storybook/csf": "0.0.1", - "@storybook/ui": "6.3.12", + "@storybook/addons": "6.4.19", + "@storybook/channel-postmessage": "6.4.19", + "@storybook/channel-websocket": "6.4.19", + "@storybook/client-api": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/preview-web": "6.4.19", + "@storybook/store": "6.4.19", + "@storybook/ui": "6.4.19", "airbnb-js-shims": "^2.2.1", "ansi-to-html": "^0.6.11", "core-js": "^3.8.2", "global": "^4.4.0", - "lodash": "^4.17.20", + "lodash": "^4.17.21", "qs": "^6.10.0", "regenerator-runtime": "^0.13.7", "ts-dedent": "^2.0.0", @@ -73826,22 +74063,44 @@ "util-deprecate": "^1.0.2" }, "dependencies": { + "@storybook/preview-web": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/preview-web/-/preview-web-6.4.19.tgz", + "integrity": "sha512-jqltoBv5j7lvnxEfV9w8dLX9ASWGuvgz97yg8Yo5FqkftEwrHJenyvMGcTgDJKJPorF+wiz/9aIqnmd3LCAcZQ==", + "requires": { + "@storybook/addons": "6.4.19", + "@storybook/channel-postmessage": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/store": "6.4.19", + "ansi-to-html": "^0.6.11", + "core-js": "^3.8.2", + "global": "^4.4.0", + "lodash": "^4.17.21", + "qs": "^6.10.0", + "regenerator-runtime": "^0.13.7", + "synchronous-promise": "^2.0.15", + "ts-dedent": "^2.0.0", + "unfetch": "^4.2.0", + "util-deprecate": "^1.0.2" + } + }, "@storybook/ui": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/ui/-/ui-6.3.12.tgz", - "integrity": "sha512-PC2yEz4JMfarq7rUFbeA3hCA+31p5es7YPEtxLRvRwIZhtL0P4zQUfHpotb3KgWdoAIfZesAuoIQwMPQmEFYrw==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/ui/-/ui-6.4.19.tgz", + "integrity": "sha512-gFwdn5LA2U6oQ4bfUFLyHZnNasGQ01YVdwjbi+l6yjmnckBNtZfJoVTZ1rzGUbxSE9rK48InJRU+latTsr7xAg==", "requires": { "@emotion/core": "^10.1.1", - "@storybook/addons": "6.3.12", - "@storybook/api": "6.3.12", - "@storybook/channels": "6.3.12", - "@storybook/client-logger": "6.3.12", - "@storybook/components": "6.3.12", - "@storybook/core-events": "6.3.12", - "@storybook/router": "6.3.12", + "@storybook/addons": "6.4.19", + "@storybook/api": "6.4.19", + "@storybook/channels": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/components": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/router": "6.4.19", "@storybook/semver": "^7.3.2", - "@storybook/theming": "6.3.12", - "@types/markdown-to-jsx": "^6.11.3", + "@storybook/theming": "6.4.19", "copy-to-clipboard": "^3.3.1", "core-js": "^3.8.2", "core-js-pure": "^3.8.2", @@ -73849,8 +74108,8 @@ "emotion-theming": "^10.0.27", "fuse.js": "^3.6.1", "global": "^4.4.0", - "lodash": "^4.17.20", - "markdown-to-jsx": "^6.11.4", + "lodash": "^4.17.21", + "markdown-to-jsx": "^7.1.3", "memoizerific": "^1.11.3", "polished": "^4.0.5", "qs": "^6.10.0", @@ -73863,25 +74122,22 @@ }, "dependencies": { "@storybook/api": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.3.12.tgz", - "integrity": "sha512-LScRXUeCWEW/OP+jiooNMQICVdusv7azTmULxtm72fhkXFRiQs2CdRNTiqNg46JLLC9z95f1W+pGK66X6HiiQA==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.4.19.tgz", + "integrity": "sha512-aDvea+NpQCBjpNp9YidO1Pr7fzzCp15FSdkG+2ihGQfv5raxrN+IIJnGUXecpe71nvlYiB+29UXBVK7AL0j51Q==", "requires": { - "@reach/router": "^1.3.4", - "@storybook/channels": "6.3.12", - "@storybook/client-logger": "6.3.12", - "@storybook/core-events": "6.3.12", - "@storybook/csf": "0.0.1", - "@storybook/router": "6.3.12", + "@storybook/channels": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/router": "6.4.19", "@storybook/semver": "^7.3.2", - "@storybook/theming": "6.3.12", - "@types/reach__router": "^1.3.7", + "@storybook/theming": "6.4.19", "core-js": "^3.8.2", "fast-deep-equal": "^3.1.3", "global": "^4.4.0", - "lodash": "^4.17.20", + "lodash": "^4.17.21", "memoizerific": "^1.11.3", - "qs": "^6.10.0", "regenerator-runtime": "^0.13.7", "store2": "^2.12.0", "telejson": "^5.3.2", @@ -73890,14 +74146,14 @@ } }, "@storybook/components": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/components/-/components-6.3.12.tgz", - "integrity": "sha512-kdQt8toUjynYAxDLrJzuG7YSNL6as1wJoyzNUaCfG06YPhvIAlKo7le9tS2mThVFN5e9nbKrW3N1V1sp6ypZXQ==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-6.4.19.tgz", + "integrity": "sha512-q/0V37YAJA7CNc+wSiiefeM9+3XVk8ixBNylY36QCGJgIeGQ5/79vPyUe6K4lLmsQwpmZsIq1s1Ad5+VbboeOA==", "requires": { "@popperjs/core": "^2.6.0", - "@storybook/client-logger": "6.3.12", - "@storybook/csf": "0.0.1", - "@storybook/theming": "6.3.12", + "@storybook/client-logger": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/theming": "6.4.19", "@types/color-convert": "^2.0.0", "@types/overlayscrollbars": "^1.12.0", "@types/react-syntax-highlighter": "11.0.5", @@ -73905,7 +74161,7 @@ "core-js": "^3.8.2", "fast-deep-equal": "^3.1.3", "global": "^4.4.0", - "lodash": "^4.17.20", + "lodash": "^4.17.21", "markdown-to-jsx": "^7.1.3", "memoizerific": "^1.11.3", "overlayscrollbars": "^1.13.1", @@ -73920,12 +74176,6 @@ "util-deprecate": "^1.0.2" }, "dependencies": { - "markdown-to-jsx": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-7.1.3.tgz", - "integrity": "sha512-jtQ6VyT7rMT5tPV0g2EJakEnXLiPksnvlYtwQsVVZ611JsWGN8bQ1tVSDX4s6JllfEH6wmsYxNjTUAMrPmNA8w==", - "requires": {} - }, "react-syntax-highlighter": { "version": "13.5.3", "resolved": "https://registry.npmjs.org/react-syntax-highlighter/-/react-syntax-highlighter-13.5.3.tgz", @@ -73941,31 +74191,71 @@ } }, "@storybook/router": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.3.12.tgz", - "integrity": "sha512-G/pNGCnrJRetCwyEZulHPT+YOcqEj/vkPVDTUfii2qgqukup6K0cjwgd7IukAURnAnnzTi1gmgFuEKUi8GE/KA==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.4.19.tgz", + "integrity": "sha512-KWWwIzuyeEIWVezkCihwY2A76Il9tUNg0I410g9qT7NrEsKyqXGRYOijWub7c1GGyNjLqz0jtrrehtixMcJkuA==", "requires": { - "@reach/router": "^1.3.4", - "@storybook/client-logger": "6.3.12", - "@types/reach__router": "^1.3.7", + "@storybook/client-logger": "6.4.19", "core-js": "^3.8.2", "fast-deep-equal": "^3.1.3", "global": "^4.4.0", - "lodash": "^4.17.20", + "history": "5.0.0", + "lodash": "^4.17.21", "memoizerific": "^1.11.3", "qs": "^6.10.0", + "react-router": "^6.0.0", + "react-router-dom": "^6.0.0", "ts-dedent": "^2.0.0" + }, + "dependencies": { + "react-router": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.2.2.tgz", + "integrity": "sha512-/MbxyLzd7Q7amp4gDOGaYvXwhEojkJD5BtExkuKmj39VEE0m3l/zipf6h2WIB2jyAO0lI6NGETh4RDcktRm4AQ==", + "requires": { + "history": "^5.2.0" + }, + "dependencies": { + "history": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/history/-/history-5.3.0.tgz", + "integrity": "sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==", + "requires": { + "@babel/runtime": "^7.7.6" + } + } + } + }, + "react-router-dom": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.2.2.tgz", + "integrity": "sha512-AtYEsAST7bDD4dLSQHDnk/qxWLJdad5t1HFa1qJyUrCeGgEuCSw0VB/27ARbF9Fi/W5598ujvJOm3ujUCVzuYQ==", + "requires": { + "history": "^5.2.0", + "react-router": "6.2.2" + }, + "dependencies": { + "history": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/history/-/history-5.3.0.tgz", + "integrity": "sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==", + "requires": { + "@babel/runtime": "^7.7.6" + } + } + } + } } }, "@storybook/theming": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.3.12.tgz", - "integrity": "sha512-wOJdTEa/VFyFB2UyoqyYGaZdym6EN7RALuQOAMT6zHA282FBmKw8nL5DETHEbctpnHdcrMC/391teK4nNSrdOA==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.4.19.tgz", + "integrity": "sha512-V4pWmTvAxmbHR6B3jA4hPkaxZPyExHvCToy7b76DpUTpuHihijNDMAn85KhOQYIeL9q14zP/aiz899tOHsOidg==", "requires": { "@emotion/core": "^10.1.1", "@emotion/is-prop-valid": "^0.8.6", "@emotion/styled": "^10.0.27", - "@storybook/client-logger": "6.3.12", + "@storybook/client-logger": "6.4.19", "core-js": "^3.8.2", "deep-object-diff": "^1.1.0", "emotion-theming": "^10.0.27", @@ -73977,12 +74267,25 @@ }, "dependencies": { "@emotion/styled": { - "version": "10.0.27", - "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-10.0.27.tgz", - "integrity": "sha512-iK/8Sh7+NLJzyp9a5+vIQIXTYxfT4yB/OJbjzQanB2RZpvmzBQOHZWhpAMZWYEKRNNbsD6WfBw5sVWkb6WzS/Q==", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-10.3.0.tgz", + "integrity": "sha512-GgcUpXBBEU5ido+/p/mCT2/Xx+Oqmp9JzQRuC+a4lYM4i4LBBn/dWvc0rQ19N9ObA8/T4NWMrPNe79kMBDJqoQ==", "requires": { - "@emotion/styled-base": "^10.0.27", + "@emotion/styled-base": "^10.3.0", "babel-plugin-emotion": "^10.0.27" + }, + "dependencies": { + "@emotion/styled-base": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@emotion/styled-base/-/styled-base-10.3.0.tgz", + "integrity": "sha512-PBRqsVKR7QRNkmfH78hTSSwHWcwDpecH9W6heujWAcyp2wdz/64PP73s7fWS1dIPm8/Exc8JAzYS8dEWXjv60w==", + "requires": { + "@babel/runtime": "^7.5.5", + "@emotion/is-prop-valid": "0.8.8", + "@emotion/serialize": "^0.11.15", + "@emotion/utils": "0.11.3" + } + } } } } @@ -73999,19 +74302,10 @@ "tslib": "^2.3.0" } }, - "markdown-to-jsx": { - "version": "6.11.4", - "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-6.11.4.tgz", - "integrity": "sha512-3lRCD5Sh+tfA52iGgfs/XZiw33f7fFX9Bn55aNnVNUd2GzLDkOWyKYYD8Yju2B1Vn+feiEdgJs8T6Tg0xNokPw==", - "requires": { - "prop-types": "^15.6.2", - "unquote": "^1.1.0" - } - }, "react-helmet-async": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/react-helmet-async/-/react-helmet-async-1.1.2.tgz", - "integrity": "sha512-LTTzDDkyIleT/JJ6T/uqx7Y8qi1EuPPSiJawQY/nHHz0h7SPDT6HxP1YDDQx/fzcVxCqpWEEMS3QdrSrNkJYhg==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/react-helmet-async/-/react-helmet-async-1.2.3.tgz", + "integrity": "sha512-mCk2silF53Tq/YaYdkl2sB+/tDoPnaxN7dFS/6ZLJb/rhUY2EWGI5Xj2b4jHppScMqY45MbgPSwTxDchKpZ5Kw==", "requires": { "@babel/runtime": "^7.12.5", "invariant": "^2.2.4", @@ -74025,50 +74319,58 @@ } }, "@storybook/core-server": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/core-server/-/core-server-6.3.12.tgz", - "integrity": "sha512-T/Mdyi1FVkUycdyOnhXvoo3d9nYXLQFkmaJkltxBFLzAePAJUSgAsPL9odNC3+p8Nr2/UDsDzvu/Ow0IF0mzLQ==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/core-server/-/core-server-6.4.19.tgz", + "integrity": "sha512-bKsUB9f7hl5ya2JXxpIrErmbDQjoH39FVbzYZWjMo4t/b7+Xyi6vYadwyWcqlpUQmis09ZaSMv8L/Tw0TuwLAA==", "requires": { "@discoveryjs/json-ext": "^0.5.3", - "@storybook/builder-webpack4": "6.3.12", - "@storybook/core-client": "6.3.12", - "@storybook/core-common": "6.3.12", - "@storybook/csf-tools": "6.3.12", - "@storybook/manager-webpack4": "6.3.12", - "@storybook/node-logger": "6.3.12", + "@storybook/builder-webpack4": "6.4.19", + "@storybook/core-client": "6.4.19", + "@storybook/core-common": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/csf-tools": "6.4.19", + "@storybook/manager-webpack4": "6.4.19", + "@storybook/node-logger": "6.4.19", "@storybook/semver": "^7.3.2", + "@storybook/store": "6.4.19", "@types/node": "^14.0.10", "@types/node-fetch": "^2.5.7", "@types/pretty-hrtime": "^1.0.0", "@types/webpack": "^4.41.26", "better-opn": "^2.1.1", - "boxen": "^4.2.0", + "boxen": "^5.1.2", "chalk": "^4.1.0", - "cli-table3": "0.6.0", + "cli-table3": "^0.6.1", "commander": "^6.2.1", "compression": "^1.7.4", "core-js": "^3.8.2", - "cpy": "^8.1.1", + "cpy": "^8.1.2", "detect-port": "^1.3.0", "express": "^4.17.1", "file-system-cache": "^1.0.5", "fs-extra": "^9.0.1", "globby": "^11.0.2", "ip": "^1.1.5", + "lodash": "^4.17.21", "node-fetch": "^2.6.1", "pretty-hrtime": "^1.0.3", "prompts": "^2.4.0", "regenerator-runtime": "^0.13.7", "serve-favicon": "^2.5.0", + "slash": "^3.0.0", + "telejson": "^5.3.3", "ts-dedent": "^2.0.0", "util-deprecate": "^1.0.2", - "webpack": "4" + "watchpack": "^2.2.0", + "webpack": "4", + "ws": "^8.2.3" }, "dependencies": { "@storybook/builder-webpack4": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/builder-webpack4/-/builder-webpack4-6.3.12.tgz", - "integrity": "sha512-Dlm5Fc1svqpFDnVPZdAaEBiM/IDZHMV3RfEGbUTY/ZC0q8b/Ug1czzp/w0aTIjOFRuBDcG6IcplikaqHL8CJLg==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/builder-webpack4/-/builder-webpack4-6.4.19.tgz", + "integrity": "sha512-wxA6SMH11duc9D53aeVVBwrVRemFIoxHp/dOugkkg6ZZFAb4ZmWzf/ENc3vQIZdZpfNRi7IZIZEOfoHc994cmw==", "requires": { "@babel/core": "^7.12.10", "@babel/plugin-proposal-class-properties": "^7.12.1", @@ -74091,34 +74393,34 @@ "@babel/preset-env": "^7.12.11", "@babel/preset-react": "^7.12.10", "@babel/preset-typescript": "^7.12.7", - "@storybook/addons": "6.3.12", - "@storybook/api": "6.3.12", - "@storybook/channel-postmessage": "6.3.12", - "@storybook/channels": "6.3.12", - "@storybook/client-api": "6.3.12", - "@storybook/client-logger": "6.3.12", - "@storybook/components": "6.3.12", - "@storybook/core-common": "6.3.12", - "@storybook/core-events": "6.3.12", - "@storybook/node-logger": "6.3.12", - "@storybook/router": "6.3.12", + "@storybook/addons": "6.4.19", + "@storybook/api": "6.4.19", + "@storybook/channel-postmessage": "6.4.19", + "@storybook/channels": "6.4.19", + "@storybook/client-api": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/components": "6.4.19", + "@storybook/core-common": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/node-logger": "6.4.19", + "@storybook/preview-web": "6.4.19", + "@storybook/router": "6.4.19", "@storybook/semver": "^7.3.2", - "@storybook/theming": "6.3.12", - "@storybook/ui": "6.3.12", + "@storybook/store": "6.4.19", + "@storybook/theming": "6.4.19", + "@storybook/ui": "6.4.19", "@types/node": "^14.0.10", "@types/webpack": "^4.41.26", "autoprefixer": "^9.8.6", - "babel-loader": "^8.2.2", + "babel-loader": "^8.0.0", "babel-plugin-macros": "^2.8.0", "babel-plugin-polyfill-corejs3": "^0.1.0", "case-sensitive-paths-webpack-plugin": "^2.3.0", "core-js": "^3.8.2", "css-loader": "^3.6.0", - "dotenv-webpack": "^1.8.0", "file-loader": "^6.2.0", "find-up": "^5.0.0", "fork-ts-checker-webpack-plugin": "^4.1.6", - "fs-extra": "^9.0.1", "glob": "^7.1.6", "glob-promise": "^3.4.0", "global": "^4.4.0", @@ -74128,7 +74430,6 @@ "postcss-flexbugs-fixes": "^4.2.1", "postcss-loader": "^4.2.0", "raw-loader": "^4.0.2", - "react-dev-utils": "^11.0.3", "stable": "^0.1.8", "style-loader": "^1.3.0", "terser-webpack-plugin": "^4.2.3", @@ -74138,30 +74439,27 @@ "webpack": "4", "webpack-dev-middleware": "^3.7.3", "webpack-filter-warnings-plugin": "^1.2.1", - "webpack-hot-middleware": "^2.25.0", + "webpack-hot-middleware": "^2.25.1", "webpack-virtual-modules": "^0.2.2" }, "dependencies": { "@storybook/api": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.3.12.tgz", - "integrity": "sha512-LScRXUeCWEW/OP+jiooNMQICVdusv7azTmULxtm72fhkXFRiQs2CdRNTiqNg46JLLC9z95f1W+pGK66X6HiiQA==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.4.19.tgz", + "integrity": "sha512-aDvea+NpQCBjpNp9YidO1Pr7fzzCp15FSdkG+2ihGQfv5raxrN+IIJnGUXecpe71nvlYiB+29UXBVK7AL0j51Q==", "requires": { - "@reach/router": "^1.3.4", - "@storybook/channels": "6.3.12", - "@storybook/client-logger": "6.3.12", - "@storybook/core-events": "6.3.12", - "@storybook/csf": "0.0.1", - "@storybook/router": "6.3.12", + "@storybook/channels": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/router": "6.4.19", "@storybook/semver": "^7.3.2", - "@storybook/theming": "6.3.12", - "@types/reach__router": "^1.3.7", + "@storybook/theming": "6.4.19", "core-js": "^3.8.2", "fast-deep-equal": "^3.1.3", "global": "^4.4.0", - "lodash": "^4.17.20", + "lodash": "^4.17.21", "memoizerific": "^1.11.3", - "qs": "^6.10.0", "regenerator-runtime": "^0.13.7", "store2": "^2.12.0", "telejson": "^5.3.2", @@ -74170,14 +74468,14 @@ } }, "@storybook/components": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/components/-/components-6.3.12.tgz", - "integrity": "sha512-kdQt8toUjynYAxDLrJzuG7YSNL6as1wJoyzNUaCfG06YPhvIAlKo7le9tS2mThVFN5e9nbKrW3N1V1sp6ypZXQ==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-6.4.19.tgz", + "integrity": "sha512-q/0V37YAJA7CNc+wSiiefeM9+3XVk8ixBNylY36QCGJgIeGQ5/79vPyUe6K4lLmsQwpmZsIq1s1Ad5+VbboeOA==", "requires": { "@popperjs/core": "^2.6.0", - "@storybook/client-logger": "6.3.12", - "@storybook/csf": "0.0.1", - "@storybook/theming": "6.3.12", + "@storybook/client-logger": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/theming": "6.4.19", "@types/color-convert": "^2.0.0", "@types/overlayscrollbars": "^1.12.0", "@types/react-syntax-highlighter": "11.0.5", @@ -74185,7 +74483,7 @@ "core-js": "^3.8.2", "fast-deep-equal": "^3.1.3", "global": "^4.4.0", - "lodash": "^4.17.20", + "lodash": "^4.17.21", "markdown-to-jsx": "^7.1.3", "memoizerific": "^1.11.3", "overlayscrollbars": "^1.13.1", @@ -74214,32 +74512,95 @@ } } }, + "@storybook/preview-web": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/preview-web/-/preview-web-6.4.19.tgz", + "integrity": "sha512-jqltoBv5j7lvnxEfV9w8dLX9ASWGuvgz97yg8Yo5FqkftEwrHJenyvMGcTgDJKJPorF+wiz/9aIqnmd3LCAcZQ==", + "requires": { + "@storybook/addons": "6.4.19", + "@storybook/channel-postmessage": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/store": "6.4.19", + "ansi-to-html": "^0.6.11", + "core-js": "^3.8.2", + "global": "^4.4.0", + "lodash": "^4.17.21", + "qs": "^6.10.0", + "regenerator-runtime": "^0.13.7", + "synchronous-promise": "^2.0.15", + "ts-dedent": "^2.0.0", + "unfetch": "^4.2.0", + "util-deprecate": "^1.0.2" + } + }, "@storybook/router": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.3.12.tgz", - "integrity": "sha512-G/pNGCnrJRetCwyEZulHPT+YOcqEj/vkPVDTUfii2qgqukup6K0cjwgd7IukAURnAnnzTi1gmgFuEKUi8GE/KA==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.4.19.tgz", + "integrity": "sha512-KWWwIzuyeEIWVezkCihwY2A76Il9tUNg0I410g9qT7NrEsKyqXGRYOijWub7c1GGyNjLqz0jtrrehtixMcJkuA==", "requires": { - "@reach/router": "^1.3.4", - "@storybook/client-logger": "6.3.12", - "@types/reach__router": "^1.3.7", + "@storybook/client-logger": "6.4.19", "core-js": "^3.8.2", "fast-deep-equal": "^3.1.3", "global": "^4.4.0", - "lodash": "^4.17.20", + "history": "5.0.0", + "lodash": "^4.17.21", "memoizerific": "^1.11.3", "qs": "^6.10.0", + "react-router": "^6.0.0", + "react-router-dom": "^6.0.0", "ts-dedent": "^2.0.0" + }, + "dependencies": { + "react-router": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.2.2.tgz", + "integrity": "sha512-/MbxyLzd7Q7amp4gDOGaYvXwhEojkJD5BtExkuKmj39VEE0m3l/zipf6h2WIB2jyAO0lI6NGETh4RDcktRm4AQ==", + "requires": { + "history": "^5.2.0" + }, + "dependencies": { + "history": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/history/-/history-5.3.0.tgz", + "integrity": "sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==", + "requires": { + "@babel/runtime": "^7.7.6" + } + } + } + }, + "react-router-dom": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.2.2.tgz", + "integrity": "sha512-AtYEsAST7bDD4dLSQHDnk/qxWLJdad5t1HFa1qJyUrCeGgEuCSw0VB/27ARbF9Fi/W5598ujvJOm3ujUCVzuYQ==", + "requires": { + "history": "^5.2.0", + "react-router": "6.2.2" + }, + "dependencies": { + "history": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/history/-/history-5.3.0.tgz", + "integrity": "sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==", + "requires": { + "@babel/runtime": "^7.7.6" + } + } + } + } } }, "@storybook/theming": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.3.12.tgz", - "integrity": "sha512-wOJdTEa/VFyFB2UyoqyYGaZdym6EN7RALuQOAMT6zHA282FBmKw8nL5DETHEbctpnHdcrMC/391teK4nNSrdOA==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.4.19.tgz", + "integrity": "sha512-V4pWmTvAxmbHR6B3jA4hPkaxZPyExHvCToy7b76DpUTpuHihijNDMAn85KhOQYIeL9q14zP/aiz899tOHsOidg==", "requires": { "@emotion/core": "^10.1.1", "@emotion/is-prop-valid": "^0.8.6", "@emotion/styled": "^10.0.27", - "@storybook/client-logger": "6.3.12", + "@storybook/client-logger": "6.4.19", "core-js": "^3.8.2", "deep-object-diff": "^1.1.0", "emotion-theming": "^10.0.27", @@ -74251,32 +74612,44 @@ }, "dependencies": { "@emotion/styled": { - "version": "10.0.27", - "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-10.0.27.tgz", - "integrity": "sha512-iK/8Sh7+NLJzyp9a5+vIQIXTYxfT4yB/OJbjzQanB2RZpvmzBQOHZWhpAMZWYEKRNNbsD6WfBw5sVWkb6WzS/Q==", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-10.3.0.tgz", + "integrity": "sha512-GgcUpXBBEU5ido+/p/mCT2/Xx+Oqmp9JzQRuC+a4lYM4i4LBBn/dWvc0rQ19N9ObA8/T4NWMrPNe79kMBDJqoQ==", "requires": { - "@emotion/styled-base": "^10.0.27", + "@emotion/styled-base": "^10.3.0", "babel-plugin-emotion": "^10.0.27" + }, + "dependencies": { + "@emotion/styled-base": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@emotion/styled-base/-/styled-base-10.3.0.tgz", + "integrity": "sha512-PBRqsVKR7QRNkmfH78hTSSwHWcwDpecH9W6heujWAcyp2wdz/64PP73s7fWS1dIPm8/Exc8JAzYS8dEWXjv60w==", + "requires": { + "@babel/runtime": "^7.5.5", + "@emotion/is-prop-valid": "0.8.8", + "@emotion/serialize": "^0.11.15", + "@emotion/utils": "0.11.3" + } + } } } } }, "@storybook/ui": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/ui/-/ui-6.3.12.tgz", - "integrity": "sha512-PC2yEz4JMfarq7rUFbeA3hCA+31p5es7YPEtxLRvRwIZhtL0P4zQUfHpotb3KgWdoAIfZesAuoIQwMPQmEFYrw==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/ui/-/ui-6.4.19.tgz", + "integrity": "sha512-gFwdn5LA2U6oQ4bfUFLyHZnNasGQ01YVdwjbi+l6yjmnckBNtZfJoVTZ1rzGUbxSE9rK48InJRU+latTsr7xAg==", "requires": { "@emotion/core": "^10.1.1", - "@storybook/addons": "6.3.12", - "@storybook/api": "6.3.12", - "@storybook/channels": "6.3.12", - "@storybook/client-logger": "6.3.12", - "@storybook/components": "6.3.12", - "@storybook/core-events": "6.3.12", - "@storybook/router": "6.3.12", + "@storybook/addons": "6.4.19", + "@storybook/api": "6.4.19", + "@storybook/channels": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/components": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/router": "6.4.19", "@storybook/semver": "^7.3.2", - "@storybook/theming": "6.3.12", - "@types/markdown-to-jsx": "^6.11.3", + "@storybook/theming": "6.4.19", "copy-to-clipboard": "^3.3.1", "core-js": "^3.8.2", "core-js-pure": "^3.8.2", @@ -74284,8 +74657,8 @@ "emotion-theming": "^10.0.27", "fuse.js": "^3.6.1", "global": "^4.4.0", - "lodash": "^4.17.20", - "markdown-to-jsx": "^6.11.4", + "lodash": "^4.17.21", + "markdown-to-jsx": "^7.1.3", "memoizerific": "^1.11.3", "polished": "^4.0.5", "qs": "^6.10.0", @@ -74309,19 +74682,10 @@ "tslib": "^2.3.0" } }, - "markdown-to-jsx": { - "version": "6.11.4", - "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-6.11.4.tgz", - "integrity": "sha512-3lRCD5Sh+tfA52iGgfs/XZiw33f7fFX9Bn55aNnVNUd2GzLDkOWyKYYD8Yju2B1Vn+feiEdgJs8T6Tg0xNokPw==", - "requires": { - "prop-types": "^15.6.2", - "unquote": "^1.1.0" - } - }, "react-helmet-async": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/react-helmet-async/-/react-helmet-async-1.1.2.tgz", - "integrity": "sha512-LTTzDDkyIleT/JJ6T/uqx7Y8qi1EuPPSiJawQY/nHHz0h7SPDT6HxP1YDDQx/fzcVxCqpWEEMS3QdrSrNkJYhg==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/react-helmet-async/-/react-helmet-async-1.2.3.tgz", + "integrity": "sha512-mCk2silF53Tq/YaYdkl2sB+/tDoPnaxN7dFS/6ZLJb/rhUY2EWGI5Xj2b4jHppScMqY45MbgPSwTxDchKpZ5Kw==", "requires": { "@babel/runtime": "^7.12.5", "invariant": "^2.2.4", @@ -74335,27 +74699,26 @@ } }, "@storybook/manager-webpack4": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/manager-webpack4/-/manager-webpack4-6.3.12.tgz", - "integrity": "sha512-OkPYNrHXg2yZfKmEfTokP6iKx4OLTr0gdI5yehi/bLEuQCSHeruxBc70Dxm1GBk1Mrf821wD9WqMXNDjY5Qtug==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/manager-webpack4/-/manager-webpack4-6.4.19.tgz", + "integrity": "sha512-R8ugZjTYqXvlc6gDOcw909L65sIleOmIJLZR+N6/H85MivGXHu39jOwONqB7tVACufRty4FNecn8tEiQL2SAKA==", "requires": { "@babel/core": "^7.12.10", "@babel/plugin-transform-template-literals": "^7.12.1", "@babel/preset-react": "^7.12.10", - "@storybook/addons": "6.3.12", - "@storybook/core-client": "6.3.12", - "@storybook/core-common": "6.3.12", - "@storybook/node-logger": "6.3.12", - "@storybook/theming": "6.3.12", - "@storybook/ui": "6.3.12", + "@storybook/addons": "6.4.19", + "@storybook/core-client": "6.4.19", + "@storybook/core-common": "6.4.19", + "@storybook/node-logger": "6.4.19", + "@storybook/theming": "6.4.19", + "@storybook/ui": "6.4.19", "@types/node": "^14.0.10", "@types/webpack": "^4.41.26", - "babel-loader": "^8.2.2", + "babel-loader": "^8.0.0", "case-sensitive-paths-webpack-plugin": "^2.3.0", "chalk": "^4.1.0", "core-js": "^3.8.2", "css-loader": "^3.6.0", - "dotenv-webpack": "^1.8.0", "express": "^4.17.1", "file-loader": "^6.2.0", "file-system-cache": "^1.0.5", @@ -74379,14 +74742,14 @@ }, "dependencies": { "@storybook/theming": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.3.12.tgz", - "integrity": "sha512-wOJdTEa/VFyFB2UyoqyYGaZdym6EN7RALuQOAMT6zHA282FBmKw8nL5DETHEbctpnHdcrMC/391teK4nNSrdOA==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.4.19.tgz", + "integrity": "sha512-V4pWmTvAxmbHR6B3jA4hPkaxZPyExHvCToy7b76DpUTpuHihijNDMAn85KhOQYIeL9q14zP/aiz899tOHsOidg==", "requires": { "@emotion/core": "^10.1.1", "@emotion/is-prop-valid": "^0.8.6", "@emotion/styled": "^10.0.27", - "@storybook/client-logger": "6.3.12", + "@storybook/client-logger": "6.4.19", "core-js": "^3.8.2", "deep-object-diff": "^1.1.0", "emotion-theming": "^10.0.27", @@ -74398,32 +74761,44 @@ }, "dependencies": { "@emotion/styled": { - "version": "10.0.27", - "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-10.0.27.tgz", - "integrity": "sha512-iK/8Sh7+NLJzyp9a5+vIQIXTYxfT4yB/OJbjzQanB2RZpvmzBQOHZWhpAMZWYEKRNNbsD6WfBw5sVWkb6WzS/Q==", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-10.3.0.tgz", + "integrity": "sha512-GgcUpXBBEU5ido+/p/mCT2/Xx+Oqmp9JzQRuC+a4lYM4i4LBBn/dWvc0rQ19N9ObA8/T4NWMrPNe79kMBDJqoQ==", "requires": { - "@emotion/styled-base": "^10.0.27", + "@emotion/styled-base": "^10.3.0", "babel-plugin-emotion": "^10.0.27" + }, + "dependencies": { + "@emotion/styled-base": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@emotion/styled-base/-/styled-base-10.3.0.tgz", + "integrity": "sha512-PBRqsVKR7QRNkmfH78hTSSwHWcwDpecH9W6heujWAcyp2wdz/64PP73s7fWS1dIPm8/Exc8JAzYS8dEWXjv60w==", + "requires": { + "@babel/runtime": "^7.5.5", + "@emotion/is-prop-valid": "0.8.8", + "@emotion/serialize": "^0.11.15", + "@emotion/utils": "0.11.3" + } + } } } } }, "@storybook/ui": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/ui/-/ui-6.3.12.tgz", - "integrity": "sha512-PC2yEz4JMfarq7rUFbeA3hCA+31p5es7YPEtxLRvRwIZhtL0P4zQUfHpotb3KgWdoAIfZesAuoIQwMPQmEFYrw==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/ui/-/ui-6.4.19.tgz", + "integrity": "sha512-gFwdn5LA2U6oQ4bfUFLyHZnNasGQ01YVdwjbi+l6yjmnckBNtZfJoVTZ1rzGUbxSE9rK48InJRU+latTsr7xAg==", "requires": { "@emotion/core": "^10.1.1", - "@storybook/addons": "6.3.12", - "@storybook/api": "6.3.12", - "@storybook/channels": "6.3.12", - "@storybook/client-logger": "6.3.12", - "@storybook/components": "6.3.12", - "@storybook/core-events": "6.3.12", - "@storybook/router": "6.3.12", + "@storybook/addons": "6.4.19", + "@storybook/api": "6.4.19", + "@storybook/channels": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/components": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/router": "6.4.19", "@storybook/semver": "^7.3.2", - "@storybook/theming": "6.3.12", - "@types/markdown-to-jsx": "^6.11.3", + "@storybook/theming": "6.4.19", "copy-to-clipboard": "^3.3.1", "core-js": "^3.8.2", "core-js-pure": "^3.8.2", @@ -74431,8 +74806,8 @@ "emotion-theming": "^10.0.27", "fuse.js": "^3.6.1", "global": "^4.4.0", - "lodash": "^4.17.20", - "markdown-to-jsx": "^6.11.4", + "lodash": "^4.17.21", + "markdown-to-jsx": "^7.1.3", "memoizerific": "^1.11.3", "polished": "^4.0.5", "qs": "^6.10.0", @@ -74445,25 +74820,22 @@ }, "dependencies": { "@storybook/api": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.3.12.tgz", - "integrity": "sha512-LScRXUeCWEW/OP+jiooNMQICVdusv7azTmULxtm72fhkXFRiQs2CdRNTiqNg46JLLC9z95f1W+pGK66X6HiiQA==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.4.19.tgz", + "integrity": "sha512-aDvea+NpQCBjpNp9YidO1Pr7fzzCp15FSdkG+2ihGQfv5raxrN+IIJnGUXecpe71nvlYiB+29UXBVK7AL0j51Q==", "requires": { - "@reach/router": "^1.3.4", - "@storybook/channels": "6.3.12", - "@storybook/client-logger": "6.3.12", - "@storybook/core-events": "6.3.12", - "@storybook/csf": "0.0.1", - "@storybook/router": "6.3.12", + "@storybook/channels": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/router": "6.4.19", "@storybook/semver": "^7.3.2", - "@storybook/theming": "6.3.12", - "@types/reach__router": "^1.3.7", + "@storybook/theming": "6.4.19", "core-js": "^3.8.2", "fast-deep-equal": "^3.1.3", "global": "^4.4.0", - "lodash": "^4.17.20", + "lodash": "^4.17.21", "memoizerific": "^1.11.3", - "qs": "^6.10.0", "regenerator-runtime": "^0.13.7", "store2": "^2.12.0", "telejson": "^5.3.2", @@ -74472,14 +74844,14 @@ } }, "@storybook/components": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/components/-/components-6.3.12.tgz", - "integrity": "sha512-kdQt8toUjynYAxDLrJzuG7YSNL6as1wJoyzNUaCfG06YPhvIAlKo7le9tS2mThVFN5e9nbKrW3N1V1sp6ypZXQ==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-6.4.19.tgz", + "integrity": "sha512-q/0V37YAJA7CNc+wSiiefeM9+3XVk8ixBNylY36QCGJgIeGQ5/79vPyUe6K4lLmsQwpmZsIq1s1Ad5+VbboeOA==", "requires": { "@popperjs/core": "^2.6.0", - "@storybook/client-logger": "6.3.12", - "@storybook/csf": "0.0.1", - "@storybook/theming": "6.3.12", + "@storybook/client-logger": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "@storybook/theming": "6.4.19", "@types/color-convert": "^2.0.0", "@types/overlayscrollbars": "^1.12.0", "@types/react-syntax-highlighter": "11.0.5", @@ -74487,7 +74859,7 @@ "core-js": "^3.8.2", "fast-deep-equal": "^3.1.3", "global": "^4.4.0", - "lodash": "^4.17.20", + "lodash": "^4.17.21", "markdown-to-jsx": "^7.1.3", "memoizerific": "^1.11.3", "overlayscrollbars": "^1.13.1", @@ -74502,12 +74874,6 @@ "util-deprecate": "^1.0.2" }, "dependencies": { - "markdown-to-jsx": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-7.1.3.tgz", - "integrity": "sha512-jtQ6VyT7rMT5tPV0g2EJakEnXLiPksnvlYtwQsVVZ611JsWGN8bQ1tVSDX4s6JllfEH6wmsYxNjTUAMrPmNA8w==", - "requires": {} - }, "react-syntax-highlighter": { "version": "13.5.3", "resolved": "https://registry.npmjs.org/react-syntax-highlighter/-/react-syntax-highlighter-13.5.3.tgz", @@ -74523,20 +74889,60 @@ } }, "@storybook/router": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.3.12.tgz", - "integrity": "sha512-G/pNGCnrJRetCwyEZulHPT+YOcqEj/vkPVDTUfii2qgqukup6K0cjwgd7IukAURnAnnzTi1gmgFuEKUi8GE/KA==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.4.19.tgz", + "integrity": "sha512-KWWwIzuyeEIWVezkCihwY2A76Il9tUNg0I410g9qT7NrEsKyqXGRYOijWub7c1GGyNjLqz0jtrrehtixMcJkuA==", "requires": { - "@reach/router": "^1.3.4", - "@storybook/client-logger": "6.3.12", - "@types/reach__router": "^1.3.7", + "@storybook/client-logger": "6.4.19", "core-js": "^3.8.2", "fast-deep-equal": "^3.1.3", "global": "^4.4.0", - "lodash": "^4.17.20", + "history": "5.0.0", + "lodash": "^4.17.21", "memoizerific": "^1.11.3", "qs": "^6.10.0", + "react-router": "^6.0.0", + "react-router-dom": "^6.0.0", "ts-dedent": "^2.0.0" + }, + "dependencies": { + "react-router": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.2.2.tgz", + "integrity": "sha512-/MbxyLzd7Q7amp4gDOGaYvXwhEojkJD5BtExkuKmj39VEE0m3l/zipf6h2WIB2jyAO0lI6NGETh4RDcktRm4AQ==", + "requires": { + "history": "^5.2.0" + }, + "dependencies": { + "history": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/history/-/history-5.3.0.tgz", + "integrity": "sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==", + "requires": { + "@babel/runtime": "^7.7.6" + } + } + } + }, + "react-router-dom": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.2.2.tgz", + "integrity": "sha512-AtYEsAST7bDD4dLSQHDnk/qxWLJdad5t1HFa1qJyUrCeGgEuCSw0VB/27ARbF9Fi/W5598ujvJOm3ujUCVzuYQ==", + "requires": { + "history": "^5.2.0", + "react-router": "6.2.2" + }, + "dependencies": { + "history": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/history/-/history-5.3.0.tgz", + "integrity": "sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==", + "requires": { + "@babel/runtime": "^7.7.6" + } + } + } + } } }, "downshift": { @@ -74551,19 +74957,10 @@ "tslib": "^2.3.0" } }, - "markdown-to-jsx": { - "version": "6.11.4", - "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-6.11.4.tgz", - "integrity": "sha512-3lRCD5Sh+tfA52iGgfs/XZiw33f7fFX9Bn55aNnVNUd2GzLDkOWyKYYD8Yju2B1Vn+feiEdgJs8T6Tg0xNokPw==", - "requires": { - "prop-types": "^15.6.2", - "unquote": "^1.1.0" - } - }, "react-helmet-async": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/react-helmet-async/-/react-helmet-async-1.1.2.tgz", - "integrity": "sha512-LTTzDDkyIleT/JJ6T/uqx7Y8qi1EuPPSiJawQY/nHHz0h7SPDT6HxP1YDDQx/fzcVxCqpWEEMS3QdrSrNkJYhg==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/react-helmet-async/-/react-helmet-async-1.2.3.tgz", + "integrity": "sha512-mCk2silF53Tq/YaYdkl2sB+/tDoPnaxN7dFS/6ZLJb/rhUY2EWGI5Xj2b4jHppScMqY45MbgPSwTxDchKpZ5Kw==", "requires": { "@babel/runtime": "^7.12.5", "invariant": "^2.2.4", @@ -74578,6 +74975,11 @@ } } }, + "acorn": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", + "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==" + }, "babel-plugin-macros": { "version": "2.8.0", "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz", @@ -74719,16 +75121,6 @@ } } }, - "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" - } - }, "serialize-javascript": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", @@ -74737,11 +75129,17 @@ "randombytes": "^2.1.0" } }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, "terser": { - "version": "5.9.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.9.0.tgz", - "integrity": "sha512-h5hxa23sCdpzcye/7b8YqbE5OwKca/ni0RQz1uRX3tGh8haaGHqcuSqbGRybuAKNdntZ0mDgFNXPJ48xQ2RXKQ==", + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.12.1.tgz", + "integrity": "sha512-NXbs+7nisos5E+yXwAD+y7zrcTkMqb0dEJxIGtSKPdCBzopf7ni4odPul2aechpV7EXNvOudYOX2bb5tln1jbQ==", "requires": { + "acorn": "^8.5.0", "commander": "^2.20.0", "source-map": "~0.7.2", "source-map-support": "~0.5.20" @@ -74774,13 +75172,22 @@ "terser": "^5.3.4", "webpack-sources": "^1.4.3" } + }, + "watchpack": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz", + "integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==", + "requires": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + } } } }, "@storybook/core-common": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-6.3.12.tgz", - "integrity": "sha512-xlHs2QXELq/moB4MuXjYOczaxU64BIseHsnFBLyboJYN6Yso3qihW5RB7cuJlGohkjb4JwY74dvfT4Ww66rkBA==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-6.4.19.tgz", + "integrity": "sha512-X1pJJkO48DFxl6iyEemIKqRkJ7j9/cBh3BRBUr+xZHXBvnD0GKDXIocwh0PjSxSC6XSu3UCQnqtKi3PbjRl8Dg==", "requires": { "@babel/core": "^7.12.10", "@babel/plugin-proposal-class-properties": "^7.12.1", @@ -74803,13 +75210,11 @@ "@babel/preset-react": "^7.12.10", "@babel/preset-typescript": "^7.12.7", "@babel/register": "^7.12.1", - "@storybook/node-logger": "6.3.12", + "@storybook/node-logger": "6.4.19", "@storybook/semver": "^7.3.2", - "@types/glob-base": "^0.3.0", - "@types/micromatch": "^4.0.1", "@types/node": "^14.0.10", "@types/pretty-hrtime": "^1.0.0", - "babel-loader": "^8.2.2", + "babel-loader": "^8.0.0", "babel-plugin-macros": "^3.0.1", "babel-plugin-polyfill-corejs3": "^0.1.0", "chalk": "^4.1.0", @@ -74818,43 +75223,65 @@ "file-system-cache": "^1.0.5", "find-up": "^5.0.0", "fork-ts-checker-webpack-plugin": "^6.0.4", + "fs-extra": "^9.0.1", "glob": "^7.1.6", - "glob-base": "^0.3.0", + "handlebars": "^4.7.7", "interpret": "^2.2.0", "json5": "^2.1.3", "lazy-universal-dotenv": "^3.0.1", - "micromatch": "^4.0.2", + "picomatch": "^2.3.0", "pkg-dir": "^5.0.0", "pretty-hrtime": "^1.0.3", "resolve-from": "^5.0.0", + "slash": "^3.0.0", + "telejson": "^5.3.2", "ts-dedent": "^2.0.0", "util-deprecate": "^1.0.2", "webpack": "4" - }, - "dependencies": { - "micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", - "requires": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" - } - } } }, "@storybook/core-events": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.3.12.tgz", - "integrity": "sha512-SXfD7xUUMazaeFkB92qOTUV8Y/RghE4SkEYe5slAdjeocSaH7Nz2WV0rqNEgChg0AQc+JUI66no8L9g0+lw4Gw==", + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.4.19.tgz", + "integrity": "sha512-KICzUw6XVQUJzFSCXfvhfHAuyhn4Q5J4IZEfuZkcGJS4ODkrO6tmpdYE5Cfr+so95Nfp0ErWiLUuodBsW9/rtA==", "requires": { "core-js": "^3.8.2" } }, + "@storybook/csf": { + "version": "0.0.2--canary.87bc651.0", + "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.0.2--canary.87bc651.0.tgz", + "integrity": "sha512-ajk1Uxa+rBpFQHKrCcTmJyQBXZ5slfwHVEaKlkuFaW77it8RgbPJp/ccna3sgoi8oZ7FkkOyvv1Ve4SmwFqRqw==", + "requires": { + "lodash": "^4.17.15" + } + }, + "@storybook/store": { + "version": "6.4.19", + "resolved": "https://registry.npmjs.org/@storybook/store/-/store-6.4.19.tgz", + "integrity": "sha512-N9/ZjemRHGfT3InPIbqQqc6snkcfnf3Qh9oOr0smbfaVGJol//KOX65kzzobtzFcid0WxtTDZ3HmgFVH+GvuhQ==", + "requires": { + "@storybook/addons": "6.4.19", + "@storybook/client-logger": "6.4.19", + "@storybook/core-events": "6.4.19", + "@storybook/csf": "0.0.2--canary.87bc651.0", + "core-js": "^3.8.2", + "fast-deep-equal": "^3.1.3", + "global": "^4.4.0", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "regenerator-runtime": "^0.13.7", + "slash": "^3.0.0", + "stable": "^0.1.8", + "synchronous-promise": "^2.0.15", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + } + }, "@types/node": { - "version": "14.17.33", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.33.tgz", - "integrity": "sha512-noEeJ06zbn3lOh4gqe2v7NMGS33jrulfNqYFDjjEbhpDEHR5VTxgYNQSBqBlJIsBJW3uEYDgD6kvMnrrhGzq8g==" + "version": "14.18.12", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.12.tgz", + "integrity": "sha512-q4jlIR71hUpWTnGhXWcakgkZeHa3CCjcQcnuzU8M891BAWA2jHiziiWEPEkdS5pFsz7H9HJiy8BrK7tBRNrY7A==" }, "acorn": { "version": "6.4.2", @@ -74879,14 +75306,6 @@ "resolve": "^1.19.0" } }, - "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" - } - }, "chownr": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", @@ -74939,35 +75358,6 @@ } } }, - "dotenv-webpack": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/dotenv-webpack/-/dotenv-webpack-1.8.0.tgz", - "integrity": "sha512-o8pq6NLBehtrqA8Jv8jFQNtG9nhRtVqmoD4yWbgUyoU3+9WBlPe+c2EAiaJok9RB28QvrWvdWLZGeTT5aATDMg==", - "requires": { - "dotenv-defaults": "^1.0.2" - } - }, - "enhanced-resolve": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", - "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", - "requires": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.5.0", - "tapable": "^1.0.0" - }, - "dependencies": { - "memory-fs": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", - "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", - "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - } - } - }, "eslint-scope": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", @@ -74995,27 +75385,9 @@ "emojis-list": "^3.0.0", "json5": "^2.1.2" } - }, - "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" - } } } }, - "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-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", @@ -75041,17 +75413,12 @@ "resolved": "https://registry.npmjs.org/fuse.js/-/fuse.js-3.6.1.tgz", "integrity": "sha512-hT9yh/tiinkmirKrlv4KWOjztdoZo1mx9Qh4KvWqC7isoXwdUY3PNWUxceF4/qO9R6riA2C29jdTOeQOIROjgw==" }, - "globby": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", - "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", + "history": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/history/-/history-5.0.0.tgz", + "integrity": "sha512-3NyRMKIiFSJmIPdq7FxkNMJkQ7ZEtVblOQ38VtKaA0zZMW1Eo6Q6W8oDKEflr1kNNTItSnk4JMCO1deeSgbLLg==", "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", - "slash": "^3.0.0" + "@babel/runtime": "^7.7.6" } }, "html-webpack-plugin": { @@ -75078,16 +75445,6 @@ "postcss": "^7.0.14" } }, - "ignore": { - "version": "5.1.9", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.9.tgz", - "integrity": "sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ==" - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" - }, "json5": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", @@ -75132,15 +75489,6 @@ } } }, - "memory-fs": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", - "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - }, "mime": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", @@ -75202,11 +75550,11 @@ } }, "polished": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/polished/-/polished-4.1.3.tgz", - "integrity": "sha512-ocPAcVBUOryJEKe0z2KLd1l9EBa1r5mSwlKpExmrLzsnIzJo4axsoU9O2BjOTkDGDT4mZ0WFE5XKTlR3nLnZOA==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/polished/-/polished-4.1.4.tgz", + "integrity": "sha512-Nq5Mbza+Auo7N3sQb1QMFaQiDO+4UexWuSGR7Cjb4Sw11SZIJcrrFtiZ+L0jT9MBsUsxDboHVASbCLbE1rnECg==", "requires": { - "@babel/runtime": "^7.14.0" + "@babel/runtime": "^7.16.7" } }, "postcss": { @@ -75216,6 +75564,13 @@ "requires": { "picocolors": "^0.2.1", "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } } }, "postcss-loader": { @@ -75240,16 +75595,6 @@ "json5": "^2.1.2" } }, - "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" - } - }, "semver": { "version": "7.3.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", @@ -75307,9 +75652,9 @@ } }, "qs": { - "version": "6.10.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz", - "integrity": "sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg==", + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", "requires": { "side-channel": "^1.0.4" } @@ -75332,16 +75677,6 @@ "emojis-list": "^3.0.0", "json5": "^2.1.2" } - }, - "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" - } } } }, @@ -75355,25 +75690,15 @@ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==" }, - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - }, "slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" }, "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==" }, "ssri": { "version": "8.0.1", @@ -75422,11 +75747,6 @@ "has-flag": "^3.0.0" } }, - "tapable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", - "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==" - }, "terser-webpack-plugin": { "version": "1.4.5", "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz", @@ -75441,14 +75761,23 @@ "terser": "^4.1.2", "webpack-sources": "^1.4.0", "worker-farm": "^1.7.0" - } - }, - "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": { - "is-number": "^7.0.0" + }, + "dependencies": { + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } } }, "tslib": { @@ -75456,6 +75785,35 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" }, + "type-fest": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.12.0.tgz", + "integrity": "sha512-Qe5GRT+n/4GoqCNGGVp5Snapg1Omq3V7irBJB3EaKsp7HWDo5Gv2d/67gfNyV+d5EXD+x/RF5l1h4yJ7qNkcGA==", + "optional": true, + "peer": true + }, + "url-loader": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-4.1.1.tgz", + "integrity": "sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==", + "requires": { + "loader-utils": "^2.0.0", + "mime-types": "^2.1.27", + "schema-utils": "^3.0.0" + }, + "dependencies": { + "loader-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", + "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + } + } + }, "webpack": { "version": "4.46.0", "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.46.0.tgz", @@ -75484,6 +75842,18 @@ "terser-webpack-plugin": "^1.4.3", "watchpack": "^1.7.4", "webpack-sources": "^1.4.1" + }, + "dependencies": { + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } } }, "webpack-dev-middleware": { @@ -75511,8 +75881,21 @@ "requires": { "source-list-map": "^2.0.0", "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } } }, + "ws": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", + "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", + "requires": {} + }, "yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", @@ -75815,7 +76198,6 @@ "@types/prop-types": "^15.7.2", "@types/rison": "0.0.6", "@types/seedrandom": "^2.4.28", - "@types/tinycolor2": "^1.4.3", "@vx/responsive": "^0.0.199", "csstype": "^2.6.4", "d3-format": "^1.3.2", @@ -76025,17 +76407,6 @@ "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", "dev": true }, - "enhanced-resolve": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", - "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.5.0", - "tapable": "^1.0.0" - } - }, "fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -76091,16 +76462,6 @@ "yallist": "^4.0.0" } }, - "memory-fs": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", - "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", - "dev": true, - "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - }, "micromatch": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", @@ -76164,12 +76525,6 @@ "has-flag": "^3.0.0" } }, - "tapable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", - "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", - "dev": true - }, "to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -76931,7 +77286,6 @@ "version": "7.29.4", "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-7.29.4.tgz", "integrity": "sha512-CtrJRiSYEfbtNGtEsd78mk1n1v2TUbeABlNIcOCJdDfkN5/JTOwQEbbQpoSRxGqzcWPgStMvJ4mNolSuBRv1NA==", - "dev": true, "requires": { "@babel/code-frame": "^7.10.4", "@babel/runtime": "^7.12.5", @@ -76947,7 +77301,6 @@ "version": "5.11.6", "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.11.6.tgz", "integrity": "sha512-cVZyUNRWwUKI0++yepYpYX7uhrP398I+tGz4zOlLVlUYnZS+Svuxv4fwLeCIy7TnBYKXUaOlQr3vopxL8ZfEnA==", - "dev": true, "requires": { "@babel/runtime": "^7.9.2", "@types/testing-library__jest-dom": "^5.9.1", @@ -76963,7 +77316,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -76975,7 +77327,6 @@ "version": "11.2.0", "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-11.2.0.tgz", "integrity": "sha512-90xKYJzskZ7q/AoSuWraQL4EGZlr75uZvDt3nrO4M+rugN02zjO45tmOBq/JBOgDiMIL1tkhHioKXjJsVaSINA==", - "dev": true, "requires": { "@babel/runtime": "^7.12.5", "@testing-library/dom": "^7.27.1" @@ -76985,7 +77336,6 @@ "version": "5.0.3", "resolved": "https://registry.npmjs.org/@testing-library/react-hooks/-/react-hooks-5.0.3.tgz", "integrity": "sha512-UrnnRc5II7LMH14xsYNm/WRch/67cBafmrSQcyFh0v+UUmSf1uzfB7zn5jQXSettGwOSxJwdQUN7PgkT0w22Lg==", - "dev": true, "requires": { "@babel/runtime": "^7.12.5", "@types/react": ">=16.9.0", @@ -76999,7 +77349,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/react-error-boundary/-/react-error-boundary-3.1.0.tgz", "integrity": "sha512-lmPrdi5SLRJR+AeJkqdkGlW/CRkAUvZnETahK58J4xb5wpbfDngasEGu+w0T1iXEhVrYBJZeW+c4V1hILCnMWQ==", - "dev": true, "requires": { "@babel/runtime": "^7.12.5" } @@ -77010,7 +77359,6 @@ "version": "12.7.0", "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-12.7.0.tgz", "integrity": "sha512-KzRM1KNDoW8pJ2HTenrUhTjV6wJMHvWAagDs8DDrYSWz6y4PN+K2jSvlm2bMHWNRk5LTJPo9jqIjNjJ3FlqXNw==", - "dev": true, "requires": { "@babel/runtime": "^7.12.5" } @@ -77030,8 +77378,7 @@ "@types/aria-query": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-4.2.0.tgz", - "integrity": "sha512-iIgQNzCm0v7QMhhe4Jjn9uRh+I6GoPmt03CbEtwx3ao8/EfoQcmgtqH4vQ5Db/lxiIGaWDv6nwvunuh0RyX0+A==", - "dev": true + "integrity": "sha512-iIgQNzCm0v7QMhhe4Jjn9uRh+I6GoPmt03CbEtwx3ao8/EfoQcmgtqH4vQ5Db/lxiIGaWDv6nwvunuh0RyX0+A==" }, "@types/babel__core": { "version": "7.1.9", @@ -77074,11 +77421,6 @@ "@babel/types": "^7.3.0" } }, - "@types/braces": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/braces/-/braces-3.0.1.tgz", - "integrity": "sha512-+euflG6ygo4bn0JHtn4pYqcXwRtLvElQ7/nnjDu7iYG56H0+OhCd7d6Ug0IE3WcFpZozBKW2+80FUbv5QGk5AQ==" - }, "@types/cheerio": { "version": "0.22.21", "resolved": "https://registry.npmjs.org/@types/cheerio/-/cheerio-0.22.21.tgz", @@ -77258,11 +77600,6 @@ "@types/node": "*" } }, - "@types/glob-base": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@types/glob-base/-/glob-base-0.3.0.tgz", - "integrity": "sha1-pYHWiDR+EOUN18F9byiAoQNUMZ0=" - }, "@types/graceful-fs": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.3.tgz", @@ -77323,7 +77660,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", - "dev": true, "requires": { "@types/istanbul-lib-coverage": "*" } @@ -77342,7 +77678,6 @@ "version": "26.0.23", "resolved": "https://registry.npmjs.org/@types/jest/-/jest-26.0.23.tgz", "integrity": "sha512-ZHLmWMJ9jJ9PTiT58juykZpL7KjwJywFN3Rr2pTSkyQfydf/rk22yS7W8p5DaVUMQ2BQC7oYiU3FjbTM/mYrOA==", - "dev": true, "requires": { "jest-diff": "^26.0.0", "pretty-format": "^26.0.0" @@ -77393,14 +77728,6 @@ "@types/lodash": "*" } }, - "@types/markdown-to-jsx": { - "version": "6.11.3", - "resolved": "https://registry.npmjs.org/@types/markdown-to-jsx/-/markdown-to-jsx-6.11.3.tgz", - "integrity": "sha512-30nFYpceM/ZEvhGiqWjm5quLUxNeld0HCzJEXMZZDpq53FPkS85mTwkWtCXzCqq8s5JYLgM5W392a02xn8Bdaw==", - "requires": { - "@types/react": "*" - } - }, "@types/math-expression-evaluator": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/@types/math-expression-evaluator/-/math-expression-evaluator-1.2.1.tgz", @@ -77414,14 +77741,6 @@ "@types/unist": "*" } }, - "@types/micromatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/micromatch/-/micromatch-4.0.2.tgz", - "integrity": "sha512-oqXqVb0ci19GtH0vOA/U2TmHTcRY9kuZl4mqUxe0QmJAlIW13kzhuK5pi1i9+ngav8FjpSb9FVS/GE00GLX1VA==", - "requires": { - "@types/braces": "*" - } - }, "@types/minimatch": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", @@ -77439,9 +77758,9 @@ "integrity": "sha512-DBZCJbhII3r90XbQxI8Y9IjjiiOGlZ0Hr32omXIZvwwZ7p4DMMXGrKXVyPfuoBOri9XNtL0UK69jYIBIsRX3QQ==" }, "@types/node-fetch": { - "version": "2.5.12", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.12.tgz", - "integrity": "sha512-MKgC4dlq4kKNa/mYrwpKfzQMB5X3ee5U6fSprkKpToBqBmX4nFZL9cW5jl6sWn+xpRJ7ypWh2yyqqr8UUCstSw==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-oMqjURCaxoSIsHSr1E47QHzbmzNR5rK8McHuNb11BOM9cHcIK3Avy0s/b2JlXHoQGTYS3NsvWzV1M0iK7l0wbA==", "requires": { "@types/node": "*", "form-data": "^3.0.0" @@ -77465,9 +77784,9 @@ "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==" }, "@types/npmlog": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/@types/npmlog/-/npmlog-4.1.3.tgz", - "integrity": "sha512-1TcL7YDYCtnHmLhTWbum+IIwLlvpaHoEKS2KNIngEwLzwgDeHaebaEHHbQp8IqzNQ9IYiboLKUjAf7MZqG63+w==" + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@types/npmlog/-/npmlog-4.1.4.tgz", + "integrity": "sha512-WKG4gTr8przEZBiJ5r3s8ZIAoMXNbOgQ+j/d5O4X3x6kZJRLNvyUJuUK/KoG3+8BaOHPhp2m7WC6JKKeovDSzQ==" }, "@types/overlayscrollbars": { "version": "1.12.1", @@ -77532,7 +77851,6 @@ "version": "16.9.8", "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-16.9.8.tgz", "integrity": "sha512-ykkPQ+5nFknnlU6lDd947WbQ6TE3NNzbQAkInC2EKY1qeYdTKp7onFusmYZb+ityzx2YviqT6BXSu+LyWWJwcA==", - "dev": true, "requires": { "@types/react": "*" } @@ -77647,7 +77965,6 @@ "version": "17.0.1", "resolved": "https://registry.npmjs.org/@types/react-test-renderer/-/react-test-renderer-17.0.1.tgz", "integrity": "sha512-3Fi2O6Zzq/f3QR9dRnlnHso9bMl7weKCviFmfF6B4LS1Uat6Hkm15k0ZAQuDz+UBq6B3+g+NM6IT2nr5QgPzCw==", - "dev": true, "requires": { "@types/react": "*" } @@ -77789,7 +78106,6 @@ "version": "5.9.5", "resolved": "https://registry.npmjs.org/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.9.5.tgz", "integrity": "sha512-ggn3ws+yRbOHog9GxnXiEZ/35Mow6YtPZpd7Z5mKDeZS/o7zx3yAle0ov/wjhVB5QT4N2Dt+GNoGCdqkBGCajQ==", - "dev": true, "requires": { "@types/jest": "*" } @@ -77895,7 +78211,6 @@ "version": "15.0.13", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", - "dev": true, "requires": { "@types/yargs-parser": "*" } @@ -77903,8 +78218,7 @@ "@types/yargs-parser": { "version": "15.0.0", "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-15.0.0.tgz", - "integrity": "sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw==", - "dev": true + "integrity": "sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw==" }, "@types/yauzl": { "version": "2.9.2", @@ -77988,20 +78302,6 @@ "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", "dev": true }, - "globby": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", - "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", - "dev": true, - "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", - "slash": "^3.0.0" - } - }, "ignore": { "version": "5.1.9", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.9.tgz", @@ -78032,12 +78332,6 @@ "lru-cache": "^6.0.0" } }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true - }, "yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", @@ -78130,26 +78424,6 @@ "ms": "2.1.2" } }, - "globby": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", - "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", - "dev": true, - "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", - "slash": "^3.0.0" - } - }, - "ignore": { - "version": "5.1.9", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.9.tgz", - "integrity": "sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ==", - "dev": true - }, "lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -78174,12 +78448,6 @@ "lru-cache": "^6.0.0" } }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true - }, "yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", @@ -78251,26 +78519,6 @@ "integrity": "sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==", "dev": true }, - "globby": { - "version": "11.0.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.2.tgz", - "integrity": "sha512-2ZThXDvvV8fYFRVIxnrMQBipZQDr7MxKAmQK1vujaj9/7eF0efG7BPUKJ7jP7G5SLF37xKDXvO4S/KKLj/Z0og==", - "dev": true, - "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", - "slash": "^3.0.0" - } - }, - "ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", - "dev": true - }, "lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -78295,12 +78543,6 @@ "lru-cache": "^6.0.0" } }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true - }, "yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", @@ -79344,6 +79586,7 @@ "version": "1.1.7", "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", + "dev": true, "requires": { "delegates": "^1.0.0", "readable-stream": "^2.0.6" @@ -79361,7 +79604,6 @@ "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" @@ -79601,9 +79843,9 @@ "peer": true }, "async-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", - "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", "optional": true }, "async-limiter": { @@ -80298,9 +80540,9 @@ } }, "binary-extensions": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.12.0.tgz", - "integrity": "sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", "optional": true }, "binaryextensions": { @@ -80461,18 +80703,18 @@ "integrity": "sha512-9IdMmj2KjigRq6oWhmwv1W36pDuA4STQZ8q6YO9um+x07xgYNCD3Oou+WP/3L1HNz7iqythGet3/p4wvc8AAwQ==" }, "boxen": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-4.2.0.tgz", - "integrity": "sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz", + "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==", "requires": { "ansi-align": "^3.0.0", - "camelcase": "^5.3.1", - "chalk": "^3.0.0", - "cli-boxes": "^2.2.0", - "string-width": "^4.1.0", - "term-size": "^2.1.0", - "type-fest": "^0.8.1", - "widest-line": "^3.1.0" + "camelcase": "^6.2.0", + "chalk": "^4.1.0", + "cli-boxes": "^2.2.1", + "string-width": "^4.2.2", + "type-fest": "^0.20.2", + "widest-line": "^3.1.0", + "wrap-ansi": "^7.0.0" }, "dependencies": { "ansi-regex": { @@ -80480,14 +80722,10 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" }, - "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } + "camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==" }, "is-fullwidth-code-point": { "version": "3.0.0", @@ -80511,6 +80749,21 @@ "requires": { "ansi-regex": "^5.0.1" } + }, + "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==" + }, + "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": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } } } }, @@ -81661,12 +81914,11 @@ } }, "cli-table3": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.0.tgz", - "integrity": "sha512-gnB85c3MGC7Nm9I/FkiasNBOKjOiO1RNuXXarQms37q4QMpWdlbBgD/VnOStA2faG1dpXMv31RFApjX1/QdgWQ==", + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.1.tgz", + "integrity": "sha512-w0q/enDHhPLq44ovMGdQeeDLvwxwavsJX7oQGYt/LrBlYsyaxyDnp6z3QzFut/6kLLKnlcUVJLrpB7KBfgG/RA==", "requires": { - "colors": "^1.1.2", - "object-assign": "^4.1.0", + "colors": "1.4.0", "string-width": "^4.2.0" }, "dependencies": { @@ -81957,9 +82209,7 @@ "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, - "peer": true + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==" }, "colorbrewer": { "version": "1.0.0", @@ -82081,6 +82331,11 @@ "dev": true, "peer": true }, + "common-path-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", + "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==" + }, "common-tags": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.0.tgz", @@ -82582,26 +82837,6 @@ "is-glob": "^4.0.1" } }, - "globby": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", - "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", - "dev": true, - "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", - "slash": "^3.0.0" - } - }, - "ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", - "dev": true - }, "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -82625,12 +82860,6 @@ "requires": { "randombytes": "^2.1.0" } - }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true } } }, @@ -82954,7 +83183,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/css/-/css-3.0.0.tgz", "integrity": "sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==", - "dev": true, "requires": { "inherits": "^2.0.4", "source-map": "^0.6.1", @@ -82964,20 +83192,17 @@ "inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" }, "source-map-resolve": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz", "integrity": "sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==", - "dev": true, "requires": { "atob": "^2.1.2", "decode-uri-component": "^0.2.0" @@ -83590,8 +83815,7 @@ "css.escape": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", - "integrity": "sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s=", - "dev": true + "integrity": "sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s=" }, "csscolorparser": { "version": "1.0.3", @@ -84603,15 +84827,6 @@ "debug": "^2.6.0" } }, - "detect-port-alt": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.6.tgz", - "integrity": "sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==", - "requires": { - "address": "^1.0.1", - "debug": "^2.6.0" - } - }, "dezalgo": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.3.tgz", @@ -84635,8 +84850,7 @@ "diff-sequences": { "version": "26.6.2", "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz", - "integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==", - "dev": true + "integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==" }, "diffie-hellman": { "version": "5.0.3", @@ -84729,8 +84943,7 @@ "dom-accessibility-api": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.4.tgz", - "integrity": "sha512-TvrjBckDy2c6v6RLxPv5QXOnU+SmF9nBII5621Ve5fu6Z/BDrENurBEvlC1f44lKEUVqOpK4w9E5Idc5/EgkLQ==", - "dev": true + "integrity": "sha512-TvrjBckDy2c6v6RLxPv5QXOnU+SmF9nBII5621Ve5fu6Z/BDrENurBEvlC1f44lKEUVqOpK4w9E5Idc5/EgkLQ==" }, "dom-align": { "version": "1.12.0", @@ -84858,21 +85071,6 @@ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz", "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==" }, - "dotenv-defaults": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/dotenv-defaults/-/dotenv-defaults-1.1.1.tgz", - "integrity": "sha512-6fPRo9o/3MxKvmRZBD3oNFdxODdhJtIy1zcJeUSCs6HCy4tarUpd+G67UTU9tF6OWXeSPqsm4fPAB+2eY9Rt9Q==", - "requires": { - "dotenv": "^6.2.0" - }, - "dependencies": { - "dotenv": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-6.2.0.tgz", - "integrity": "sha512-HygQCKUBSFl8wKQZBSemMywRWcEDNidvNbjGVyZu3nbZ8qq9ubiPoGLMdRDpfSrpkkm9BXYFkpKxxFX38o/76w==" - } - } - }, "dotenv-expand": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", @@ -84897,7 +85095,8 @@ "duplexer": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", - "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==" + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "dev": true }, "duplexer2": { "version": "0.1.4", @@ -85022,9 +85221,9 @@ "dev": true }, "element-resize-detector": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/element-resize-detector/-/element-resize-detector-1.2.3.tgz", - "integrity": "sha512-+dhNzUgLpq9ol5tyhoG7YLoXL3ssjfFW+0gpszXPwRU6NjGr1fVHMEAF8fVzIiRJq57Nre0RFeIjJwI8Nh2NmQ==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/element-resize-detector/-/element-resize-detector-1.2.4.tgz", + "integrity": "sha512-Fl5Ftk6WwXE0wqCgNoseKWndjzZlDCwuPTcoVZfCP9R3EHQF8qUtr3YUPNETegRBOKqQKPW3n4kiIWngGi8tKg==", "requires": { "batch-processor": "1.0.0" } @@ -85180,6 +85379,27 @@ "objectorarray": "^1.0.5" } }, + "enhanced-resolve": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", + "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.5.0", + "tapable": "^1.0.0" + }, + "dependencies": { + "memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + } + } + }, "enquirer": { "version": "2.3.6", "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", @@ -85454,9 +85674,9 @@ } }, "error-stack-parser": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.0.6.tgz", - "integrity": "sha512-d51brTeqC+BHlwF0BhPtcYgF5nlzf9ZZ0ZIUQNZpc9ZB9qw5IJ2diTrBY9jlCJkTLITYPjmiX6OWCwH+fuyNgQ==", + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.0.7.tgz", + "integrity": "sha512-chLOW0ZGRf4s8raLrDxa5sdkvPec5YdvwbFnqJme4rk0rFajP8mPtrDL1+I+CwrQDCjswDA5sREX7jYQDQs9vA==", "requires": { "stackframe": "^1.1.1" } @@ -85538,9 +85758,9 @@ } }, "es5-shim": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/es5-shim/-/es5-shim-4.6.2.tgz", - "integrity": "sha512-n0XTVMGps+Deyr38jtqKPR5F5hb9owYeRQcKJW39eFvzUk/u/9Ww315werRzbiNMnHCUw/YHDPBphTlEnzdi+A==" + "version": "4.6.5", + "resolved": "https://registry.npmjs.org/es5-shim/-/es5-shim-4.6.5.tgz", + "integrity": "sha512-vfQ4UAai8szn0sAubCy97xnZ4sJVDD1gt/Grn736hg8D7540wemIb1YPrYZSTqlM2H69EQX1or4HU/tSwRTI3w==" }, "es6-shim": { "version": "0.35.6", @@ -86247,6 +86467,12 @@ } } }, + "eslint-plugin-theme-colors": { + "version": "file:tools/eslint-plugin-theme-colors", + "requires": { + "lodash": "^4.17.21" + } + }, "eslint-scope": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", @@ -86962,53 +87188,6 @@ "flat-cache": "^3.0.4" } }, - "file-loader": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.0.0.tgz", - "integrity": "sha512-/aMOAYEFXDdjG0wytpTL5YQLfZnnTmLNjn+AIrJ/6HVnTfDqLsVKUUwkDf4I4kgex36BvjuXEn/TX9B/1ESyqQ==", - "optional": true, - "peer": true, - "requires": { - "loader-utils": "^2.0.0", - "schema-utils": "^2.6.5" - }, - "dependencies": { - "json5": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", - "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", - "optional": true, - "peer": true, - "requires": { - "minimist": "^1.2.5" - } - }, - "loader-utils": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", - "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", - "optional": true, - "peer": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - }, - "schema-utils": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", - "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", - "optional": true, - "peer": true, - "requires": { - "@types/json-schema": "^7.0.4", - "ajv": "^6.12.2", - "ajv-keywords": "^3.4.1" - } - } - } - }, "file-system-cache": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/file-system-cache/-/file-system-cache-1.0.5.tgz", @@ -87083,11 +87262,6 @@ "trim-repeated": "^1.0.0" } }, - "filesize": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/filesize/-/filesize-6.1.0.tgz", - "integrity": "sha512-LpCHtPQ3sFx67z+uh2HnSyWSLLu5Jxo21795uRDuar/EOuYWXib5EmPaGIBuSnRqH2IODiKA2k5re/K9OnN/Yg==" - }, "fill-range": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", @@ -87102,8 +87276,7 @@ "filter-console": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/filter-console/-/filter-console-0.1.1.tgz", - "integrity": "sha512-zrXoV1Uaz52DqPs+qEwNJWJFAWZpYJ47UNmpN9q4j+/EYsz85uV0DC9k8tRND5kYmoVzL0W+Y75q4Rg8sRJCdg==", - "dev": true + "integrity": "sha512-zrXoV1Uaz52DqPs+qEwNJWJFAWZpYJ47UNmpN9q4j+/EYsz85uV0DC9k8tRND5kYmoVzL0W+Y75q4Rg8sRJCdg==" }, "filter-obj": { "version": "1.1.0", @@ -87618,11 +87791,6 @@ "lru-cache": "^6.0.0" } }, - "tapable": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.1.tgz", - "integrity": "sha512-9I2ydhj8Z9veORCw5PRm4u9uebCn0mcCa6scWoNcbZ6dAtoo2618u9UUzxgmsCOreJpqDDuv61LvwofW7hLcBA==" - }, "yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", @@ -87761,6 +87929,7 @@ "version": "2.7.4", "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "dev": true, "requires": { "aproba": "^1.0.3", "console-control-strings": "^1.0.0", @@ -87776,6 +87945,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, "requires": { "number-is-nan": "^1.0.0" } @@ -87784,6 +87954,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -88292,38 +88463,6 @@ "path-is-absolute": "^1.0.0" } }, - "glob-base": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", - "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", - "requires": { - "glob-parent": "^2.0.0", - "is-glob": "^2.0.0" - }, - "dependencies": { - "glob-parent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", - "requires": { - "is-glob": "^2.0.0" - } - }, - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "requires": { - "is-extglob": "^1.0.0" - } - } - } - }, "glob-parent": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", @@ -88387,31 +88526,6 @@ } } }, - "global-modules": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", - "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", - "requires": { - "global-prefix": "^3.0.0" - } - }, - "global-prefix": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", - "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", - "requires": { - "ini": "^1.3.5", - "kind-of": "^6.0.2", - "which": "^1.3.1" - }, - "dependencies": { - "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==" - } - } - }, "globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", @@ -88426,22 +88540,22 @@ } }, "globby": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.1.tgz", - "integrity": "sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ==", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "requires": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", "slash": "^3.0.0" }, "dependencies": { "ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==" + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==" }, "slash": { "version": "3.0.0", @@ -88521,22 +88635,6 @@ "resolved": "https://registry.npmjs.org/gud/-/gud-1.0.0.tgz", "integrity": "sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw==" }, - "gzip-size": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-5.1.1.tgz", - "integrity": "sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA==", - "requires": { - "duplexer": "^0.1.1", - "pify": "^4.0.1" - }, - "dependencies": { - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" - } - } - }, "h3-js": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/h3-js/-/h3-js-3.7.2.tgz", @@ -88557,7 +88655,6 @@ "version": "4.7.7", "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", - "dev": true, "requires": { "minimist": "^1.2.5", "neo-async": "^2.6.0", @@ -88569,8 +88666,7 @@ "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" } } }, @@ -90097,11 +90193,6 @@ "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz", "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==" }, - "is-root": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz", - "integrity": "sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==" - }, "is-scoped": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-scoped/-/is-scoped-2.1.0.tgz", @@ -90728,7 +90819,6 @@ "version": "26.6.2", "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz", "integrity": "sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==", - "dev": true, "requires": { "chalk": "^4.0.0", "diff-sequences": "^26.6.2", @@ -91515,8 +91605,7 @@ "jest-get-type": { "version": "26.3.0", "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", - "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==", - "dev": true + "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==" }, "jest-haste-map": { "version": "26.6.2", @@ -93574,8 +93663,7 @@ "lz-string": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.4.4.tgz", - "integrity": "sha1-wNjq82BZ9wV5bh40SBHPTEmNOiY=", - "dev": true + "integrity": "sha1-wNjq82BZ9wV5bh40SBHPTEmNOiY=" }, "magic-string": { "version": "0.22.5", @@ -94013,37 +94101,11 @@ "textextensions": "^5.13.0" }, "dependencies": { - "globby": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", - "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", - "dev": true, - "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", - "slash": "^3.0.0" - } - }, - "ignore": { - "version": "5.1.9", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.9.tgz", - "integrity": "sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ==", - "dev": true - }, "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true - }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true } } }, @@ -94068,6 +94130,15 @@ "map-or-similar": "^1.5.0" } }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, "meow": { "version": "8.1.2", "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", @@ -94777,14 +94848,6 @@ "dev": true, "optional": true }, - "native-url": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/native-url/-/native-url-0.2.6.tgz", - "integrity": "sha512-k4bDC87WtgrdD362gZz6zoiXQrl40kYlBmpfmSjwRO1VU0V5ccwJTlxuE72F6m3V0vc1xOf6n3UCP9QyerRqmA==", - "requires": { - "querystring": "^0.2.0" - } - }, "natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -95085,6 +95148,11 @@ "vm-browserify": "^1.0.1" }, "dependencies": { + "path-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==" + }, "punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", @@ -95526,6 +95594,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dev": true, "requires": { "are-we-there-yet": "~1.1.2", "console-control-strings": "~1.1.0", @@ -96350,9 +96419,10 @@ "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" }, "path-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", - "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", + "devOptional": true }, "path-dirname": { "version": "1.0.2", @@ -96802,7 +96872,6 @@ "version": "26.6.2", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", - "dev": true, "requires": { "@jest/types": "^26.6.2", "ansi-regex": "^5.0.0", @@ -96813,14 +96882,12 @@ "ansi-regex": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" }, "react-is": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "dev": true + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" } } }, @@ -97906,270 +97973,6 @@ "prop-types": "^15.5.7" } }, - "react-dev-utils": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-11.0.4.tgz", - "integrity": "sha512-dx0LvIGHcOPtKbeiSUM4jqpBl3TcY7CDjZdfOIcKeznE7BWr9dg0iPG90G5yfVQ+p/rGNMXdbfStvzQZEVEi4A==", - "requires": { - "@babel/code-frame": "7.10.4", - "address": "1.1.2", - "browserslist": "4.14.2", - "chalk": "2.4.2", - "cross-spawn": "7.0.3", - "detect-port-alt": "1.1.6", - "escape-string-regexp": "2.0.0", - "filesize": "6.1.0", - "find-up": "4.1.0", - "fork-ts-checker-webpack-plugin": "4.1.6", - "global-modules": "2.0.0", - "globby": "11.0.1", - "gzip-size": "5.1.1", - "immer": "8.0.1", - "is-root": "2.1.0", - "loader-utils": "2.0.0", - "open": "^7.0.2", - "pkg-up": "3.1.0", - "prompts": "2.4.0", - "react-error-overlay": "^6.0.9", - "recursive-readdir": "2.2.2", - "shell-quote": "1.7.2", - "strip-ansi": "6.0.0", - "text-table": "0.2.0" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", - "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", - "requires": { - "@babel/highlight": "^7.10.4" - } - }, - "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" - } - }, - "browserslist": { - "version": "4.14.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.14.2.tgz", - "integrity": "sha512-HI4lPveGKUR0x2StIz+2FXfDk9SfVMrxn6PLh1JeGUwcuoDkdKZebWiyLRJ68iIPDpMI4JLVDf7S7XzslgWOhw==", - "requires": { - "caniuse-lite": "^1.0.30001125", - "electron-to-chromium": "^1.3.564", - "escalade": "^3.0.2", - "node-releases": "^1.1.61" - } - }, - "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" - }, - "dependencies": { - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" - } - } - }, - "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" - } - }, - "escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==" - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "fork-ts-checker-webpack-plugin": { - "version": "4.1.6", - "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-4.1.6.tgz", - "integrity": "sha512-DUxuQaKoqfNne8iikd14SAkh5uw4+8vNifp6gmA73yYNS6ywLIWSLD/n/mBzHQRpW3J7rbATEakmiA8JvkTyZw==", - "requires": { - "@babel/code-frame": "^7.5.5", - "chalk": "^2.4.1", - "micromatch": "^3.1.10", - "minimatch": "^3.0.4", - "semver": "^5.6.0", - "tapable": "^1.0.0", - "worker-rpc": "^0.1.0" - } - }, - "immer": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/immer/-/immer-8.0.1.tgz", - "integrity": "sha512-aqXhGP7//Gui2+UrEtvxZxSquQVXTpZ7KDxfCcKAF3Vysvw0CViVaW9RZ1j1xlIYqaaaipBoqdqeibkc18PNvA==" - }, - "json5": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", - "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", - "requires": { - "minimist": "^1.2.5" - } - }, - "loader-utils": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", - "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", - "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==", - "requires": { - "p-locate": "^4.1.0" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "requires": { - "p-try": "^2.0.0" - } - }, - "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==", - "requires": { - "p-limit": "^2.2.0" - } - }, - "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==" - }, - "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==" - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" - }, - "pkg-up": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", - "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", - "requires": { - "find-up": "^3.0.0" - }, - "dependencies": { - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "requires": { - "locate-path": "^3.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "requires": { - "p-limit": "^2.0.0" - } - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" - } - } - }, - "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": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "requires": { - "ansi-regex": "^5.0.0" - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } - }, - "tapable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", - "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==" - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "requires": { - "isexe": "^2.0.0" - } - } - } - }, "react-dnd": { "version": "11.1.3", "resolved": "https://registry.npmjs.org/react-dnd/-/react-dnd-11.1.3.tgz", @@ -98265,11 +98068,6 @@ "integrity": "sha512-5CPSeLJA2igJNppAgFRwnTL9aK3ojenk65enNzhVyoxYNbHpIJXnChUO7+4vPhkncRA9wvQMXq6Azp2XeXd+iQ==", "requires": {} }, - "react-error-overlay": { - "version": "6.0.9", - "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.9.tgz", - "integrity": "sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew==" - }, "react-fast-compare": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.0.tgz", @@ -98558,9 +98356,9 @@ } }, "react-refresh": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.8.3.tgz", - "integrity": "sha512-X8jZHc7nCMjaCqoU+V2I0cOhNW+QMBwSUkeXnTi8IPe6zaRWfn60ZzvFDZqWPfmSJfjub7dDW1SP0jaHWLu/hg==" + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.11.0.tgz", + "integrity": "sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A==" }, "react-resizable": { "version": "3.0.4", @@ -98791,7 +98589,7 @@ "version": "16.9.0", "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-16.9.0.tgz", "integrity": "sha512-R62stB73qZyhrJo7wmCW9jgl/07ai+YzvouvCXIJLBkRlRqLx4j9RqcLEAfNfU3OxTGucqR2Whmn3/Aad6L3hQ==", - "dev": true, + "devOptional": true, "requires": { "object-assign": "^4.1.1", "prop-types": "^15.6.2", @@ -98803,7 +98601,7 @@ "version": "16.9.0", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.9.0.tgz", "integrity": "sha512-tJBzzzIgnnRfEm046qRcURvwQnZVXmuCbscxUO5RWrGTXpon2d4c8mI0D8WE6ydVIm29JiLB6+RslkIvym9Rjw==", - "dev": true + "devOptional": true } } }, @@ -99217,19 +99015,10 @@ } } }, - "recursive-readdir": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.2.tgz", - "integrity": "sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg==", - "requires": { - "minimatch": "3.0.4" - } - }, "redent": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", - "dev": true, "requires": { "indent-string": "^4.0.0", "strip-indent": "^3.0.0" @@ -99550,9 +99339,9 @@ } }, "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "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" } @@ -100178,7 +99967,7 @@ "version": "0.15.0", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.15.0.tgz", "integrity": "sha512-xAefmSfN6jqAa7Kuq7LIJY0bwAPG3xlCj0HMEBQk1lxYiDKZscY2xJ5U/61ZTrYbmNQbXa+gc7czPkVo11tnCg==", - "dev": true, + "devOptional": true, "requires": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1" @@ -100487,11 +100276,6 @@ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" }, - "shell-quote": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz", - "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==" - }, "shelljs": { "version": "0.8.5", "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", @@ -101135,9 +100919,9 @@ } }, "stackframe": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.2.0.tgz", - "integrity": "sha512-GrdeshiRmS1YLMYgzF16olf2jJ/IzxXY9lhKOskuVziubpTYcYqyOwYeJKzQkwy7uN0fYSsbsC4RQaXf9LCrYA==" + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.2.1.tgz", + "integrity": "sha512-h88QkzREN/hy8eRdyNhhsO7RSJ5oyTqxxmmn0dzBIMUclZsjpfmrsg81vp8mjjAs2vAZ72nyWxRUwSwmh0e4xg==" }, "state-toggle": { "version": "1.0.3", @@ -101245,19 +101029,6 @@ "storybook-pretty-props": "^1.0.3" } }, - "storybook-addon-outline": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/storybook-addon-outline/-/storybook-addon-outline-1.4.1.tgz", - "integrity": "sha512-Qvv9X86CoONbi+kYY78zQcTGmCgFaewYnOVR6WL7aOFJoW7TrLiIc/O4hH5X9PsEPZFqjfXEPUPENWVUQim6yw==", - "dev": true, - "requires": { - "@storybook/addons": "^6.3.0", - "@storybook/api": "^6.3.0", - "@storybook/components": "^6.3.0", - "@storybook/core-events": "^6.3.0", - "ts-dedent": "^2.1.1" - } - }, "storybook-addon-paddings": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/storybook-addon-paddings/-/storybook-addon-paddings-4.2.1.tgz", @@ -101730,6 +101501,11 @@ "object.getownpropertydescriptors": "^2.1.2" } }, + "synchronous-promise": { + "version": "2.0.15", + "resolved": "https://registry.npmjs.org/synchronous-promise/-/synchronous-promise-2.0.15.tgz", + "integrity": "sha512-k8uzYIkIVwmT+TcglpdN50pS2y1BDcUnBPK9iJeGu0Pl1lOI8pD6wtzgw91Pjpe+RxtTncw32tLxs/R0yNL2Mg==" + }, "table": { "version": "6.7.3", "resolved": "https://registry.npmjs.org/table/-/table-6.7.3.tgz", @@ -101827,6 +101603,11 @@ "minimist": "^1.1.0" } }, + "tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==" + }, "tar": { "version": "6.1.11", "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", @@ -101921,11 +101702,6 @@ } } }, - "term-size": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz", - "integrity": "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==" - }, "terminal-link": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", @@ -102518,7 +102294,6 @@ "version": "3.14.5", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.14.5.tgz", "integrity": "sha512-qZukoSxOG0urUTvjc2ERMTcAy+BiFh3weWAkeurLwjrCba73poHmG3E36XEjd/JGukMzwTL7uCxZiAexj8ppvQ==", - "dev": true, "optional": true }, "uid-number": { @@ -102736,7 +102511,8 @@ "unquote": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", - "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=" + "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=", + "dev": true }, "unset-value": { "version": "1.0.0", @@ -102826,36 +102602,6 @@ } } }, - "url-loader": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-4.1.1.tgz", - "integrity": "sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==", - "requires": { - "loader-utils": "^2.0.0", - "mime-types": "^2.1.27", - "schema-utils": "^3.0.0" - }, - "dependencies": { - "json5": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", - "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", - "requires": { - "minimist": "^1.2.5" - } - }, - "loader-utils": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", - "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - } - } - }, "url-parse": { "version": "1.5.7", "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.7.tgz", @@ -103757,26 +103503,6 @@ "slash": "^3.0.0" } }, - "globby": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", - "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", - "devOptional": true, - "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", - "slash": "^3.0.0" - } - }, - "ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", - "devOptional": true - }, "is-wsl": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", diff --git a/superset-frontend/package.json b/superset-frontend/package.json index 48c75a9250955..f122d09464390 100644 --- a/superset-frontend/package.json +++ b/superset-frontend/package.json @@ -34,7 +34,7 @@ ], "scripts": { "_lint": "eslint --ignore-path=.eslintignore --ext .js,.jsx,.ts,tsx .", - "_prettier": "prettier './({src,spec,cypress-base,plugins,packages}/**/*{.js,.jsx,.ts,.tsx,.css,.less,.scss,.sass}|package.json)'", + "_prettier": "prettier './({src,spec,cypress-base,plugins,packages,.storybook}/**/*{.js,.jsx,.ts,.tsx,.css,.less,.scss,.sass}|package.json)'", "build": "cross-env NODE_OPTIONS=--max_old_space_size=8192 NODE_ENV=production BABEL_ENV=\"${BABEL_ENV:=production}\" webpack --mode=production --color", "build-dev": "cross-env NODE_OPTIONS=--max_old_space_size=8192 NODE_ENV=development webpack --mode=development --color", "build-instrumented": "cross-env NODE_ENV=production BABEL_ENV=instrumented webpack --mode=production --color", @@ -61,7 +61,7 @@ "prettier-check": "npm run _prettier -- --check", "prod": "npm run build", "prune": "rm -rf ./{packages,plugins}/*/{lib,esm,tsconfig.tsbuildinfo,package-lock.json}", - "storybook": "cross-env NODE_ENV=development BABEL_ENV=development start-storybook -s ./src/assets/images -p 6006", + "storybook": "cross-env NODE_ENV=development BABEL_ENV=development start-storybook -p 6006", "tdd": "cross-env NODE_ENV=test jest --watch", "test": "cross-env NODE_ENV=test jest", "type": "tsc --noEmit" @@ -219,15 +219,15 @@ "@emotion/jest": "^11.3.0", "@hot-loader/react-dom": "^16.13.0", "@istanbuljs/nyc-config-typescript": "^1.0.1", - "@storybook/addon-actions": "^6.3.12", - "@storybook/addon-essentials": "^6.3.12", + "@storybook/addon-actions": "^6.4.19", + "@storybook/addon-essentials": "^6.4.19", "@storybook/addon-knobs": "^6.3.1", - "@storybook/addon-links": "^6.3.12", - "@storybook/addons": "^6.3.12", - "@storybook/builder-webpack5": "^6.3.12", - "@storybook/client-api": "^6.3.12", - "@storybook/manager-webpack5": "^6.3.12", - "@storybook/react": "^6.3.12", + "@storybook/addon-links": "^6.4.19", + "@storybook/addons": "^6.4.19", + "@storybook/builder-webpack5": "^6.4.19", + "@storybook/client-api": "^6.4.19", + "@storybook/manager-webpack5": "^6.4.19", + "@storybook/react": "^6.4.19", "@svgr/webpack": "^5.5.0", "@testing-library/dom": "^7.29.4", "@testing-library/jest-dom": "^5.11.6", @@ -292,6 +292,7 @@ "eslint-plugin-react": "^7.22.0", "eslint-plugin-react-hooks": "^4.2.0", "eslint-plugin-testing-library": "^3.10.1", + "eslint-plugin-theme-colors": "file:tools/eslint-plugin-theme-colors", "exports-loader": "^0.7.0", "fetch-mock": "^7.7.3", "fork-ts-checker-webpack-plugin": "^6.3.3", @@ -334,6 +335,6 @@ }, "engines": { "node": "^16.9.1", - "npm": "^7.5.4" + "npm": "^7.5.4 || ^8.1.2" } } diff --git a/superset-frontend/packages/superset-ui-chart-controls/package.json b/superset-frontend/packages/superset-ui-chart-controls/package.json index f5481c60a3e2d..bdb6be4daf846 100644 --- a/superset-frontend/packages/superset-ui-chart-controls/package.json +++ b/superset-frontend/packages/superset-ui-chart-controls/package.json @@ -2,41 +2,47 @@ "name": "@superset-ui/chart-controls", "version": "0.18.25", "description": "Superset UI control-utils", - "sideEffects": false, - "main": "lib/index.js", - "module": "esm/index.js", - "files": [ - "esm", - "lib" - ], - "repository": { - "type": "git", - "url": "git+https://github.com/apache-superset/superset-ui.git" - }, "keywords": [ "superset" ], - "author": "Superset", - "license": "Apache-2.0", + "homepage": "https://github.com/apache-superset/superset-ui#readme", "bugs": { "url": "https://github.com/apache-superset/superset-ui/issues" }, - "homepage": "https://github.com/apache-superset/superset-ui#readme", - "publishConfig": { - "access": "public" + "repository": { + "type": "git", + "url": "git+https://github.com/apache-superset/superset-ui.git" }, + "license": "Apache-2.0", + "author": "Superset", + "sideEffects": false, + "main": "lib/index.js", + "module": "esm/index.js", + "files": [ + "esm", + "lib" + ], "dependencies": { "@react-icons/all-files": "^4.1.0", "lodash": "^4.17.15", "prop-types": "^15.7.2" }, "peerDependencies": { + "@ant-design/icons": "^4.2.2", "@emotion/react": "^11.4.1", "@superset-ui/core": "*", + "@testing-library/dom": "^7.29.4", + "@testing-library/jest-dom": "^5.11.6", + "@testing-library/react": "^11.2.0", + "@testing-library/react-hooks": "^5.0.3", + "@testing-library/user-event": "^12.7.0", + "@types/enzyme": "^3.10.5", "@types/react": "*", "antd": "^4.9.4", "react": "^16.13.1", - "react-dom": "^16.13.1", - "@types/enzyme": "^3.10.5" + "react-dom": "^16.13.1" + }, + "publishConfig": { + "access": "public" } } diff --git a/superset-frontend/packages/superset-ui-chart-controls/src/components/CertifiedIconWithTooltip.tsx b/superset-frontend/packages/superset-ui-chart-controls/src/components/CertifiedIconWithTooltip.tsx index 194a415082d69..07492a181841c 100644 --- a/superset-frontend/packages/superset-ui-chart-controls/src/components/CertifiedIconWithTooltip.tsx +++ b/superset-frontend/packages/superset-ui-chart-controls/src/components/CertifiedIconWithTooltip.tsx @@ -53,9 +53,9 @@ function CertifiedIconWithTooltip({ theme.gridUnit}px; } @@ -47,40 +49,27 @@ export function ColumnOption({ const type = hasExpression ? 'expression' : type_generic; const [tooltipText, setTooltipText] = useState(column.column_name); - useEffect(() => { + useLayoutEffect(() => { setTooltipText(getColumnTooltipNode(column, labelRef)); }, [labelRef, column]); return ( {showType && type !== undefined && } - {column.is_certified && ( - - )} - - + + + css` + margin-right: ${theme.gridUnit}px; + ` + } + ref={labelRef} + > {getColumnLabelText(column)} - {column.description && ( - - )} {hasExpression && ( )} + + {column.is_certified && ( + + )} ); } diff --git a/superset-frontend/packages/superset-ui-chart-controls/src/components/ColumnTypeLabel.tsx b/superset-frontend/packages/superset-ui-chart-controls/src/components/ColumnTypeLabel.tsx deleted file mode 100644 index d9a3c8c117049..0000000000000 --- a/superset-frontend/packages/superset-ui-chart-controls/src/components/ColumnTypeLabel.tsx +++ /dev/null @@ -1,58 +0,0 @@ -/* eslint-disable no-nested-ternary */ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -import { GenericDataType } from '@superset-ui/core'; -import React from 'react'; - -type StringIcon = '?' | 'Æ’' | 'AGG' | 'ABC' | '#' | 'T/F' | 'time'; - -export type ColumnLabelExtendedType = 'expression' | 'aggregate' | ''; - -export type ColumnTypeLabelProps = { - type?: ColumnLabelExtendedType | GenericDataType; -}; - -export function ColumnTypeLabel({ type }: ColumnTypeLabelProps) { - let stringIcon: StringIcon = '?'; - - if (type === '' || type === 'expression') { - stringIcon = 'Æ’'; - } else if (type === 'aggregate') { - stringIcon = 'AGG'; - } else if (type === GenericDataType.STRING) { - stringIcon = 'ABC'; - } else if (type === GenericDataType.NUMERIC) { - stringIcon = '#'; - } else if (type === GenericDataType.BOOLEAN) { - stringIcon = 'T/F'; - } else if (type === GenericDataType.TEMPORAL) { - stringIcon = 'time'; - } - - const typeIcon = - stringIcon === 'time' ? ( - - ) : ( -
{stringIcon}
- ); - - return {typeIcon}; -} - -export default ColumnTypeLabel; diff --git a/superset-frontend/packages/superset-ui-chart-controls/src/components/ColumnTypeLabel/ColumnTypeLabel.tsx b/superset-frontend/packages/superset-ui-chart-controls/src/components/ColumnTypeLabel/ColumnTypeLabel.tsx new file mode 100644 index 0000000000000..772807e0f0599 --- /dev/null +++ b/superset-frontend/packages/superset-ui-chart-controls/src/components/ColumnTypeLabel/ColumnTypeLabel.tsx @@ -0,0 +1,71 @@ +/* eslint-disable no-nested-ternary */ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +import React, { ReactNode } from 'react'; +import { css, GenericDataType, styled, t } from '@superset-ui/core'; +import { ClockCircleOutlined, QuestionOutlined } from '@ant-design/icons'; +// TODO: move all icons to superset-ui/core +import FunctionSvg from './type-icons/field_derived.svg'; +import BooleanSvg from './type-icons/field_boolean.svg'; +import StringSvg from './type-icons/field_abc.svg'; +import NumSvg from './type-icons/field_num.svg'; + +export type ColumnLabelExtendedType = 'expression' | ''; + +export type ColumnTypeLabelProps = { + type?: ColumnLabelExtendedType | GenericDataType; +}; + +const TypeIconWrapper = styled.div` + ${({ theme }) => css` + display: flex; + justify-content: center; + align-items: center; + width: ${theme.gridUnit * 6}px; + height: ${theme.gridUnit * 6}px; + margin-right: ${theme.gridUnit}px; + + && svg { + margin-right: 0; + margin-left: 0; + } + `}; +`; + +export function ColumnTypeLabel({ type }: ColumnTypeLabelProps) { + let typeIcon: ReactNode = ( + + ); + + if (type === '' || type === 'expression') { + typeIcon = ; + } else if (type === GenericDataType.STRING) { + typeIcon = ; + } else if (type === GenericDataType.NUMERIC) { + typeIcon = ; + } else if (type === GenericDataType.BOOLEAN) { + typeIcon = ; + } else if (type === GenericDataType.TEMPORAL) { + typeIcon = ; + } + + return {typeIcon}; +} + +export default ColumnTypeLabel; diff --git a/superset-frontend/packages/superset-ui-chart-controls/src/components/ColumnTypeLabel/type-icons/field_abc.svg b/superset-frontend/packages/superset-ui-chart-controls/src/components/ColumnTypeLabel/type-icons/field_abc.svg new file mode 100644 index 0000000000000..ce519516c8803 --- /dev/null +++ b/superset-frontend/packages/superset-ui-chart-controls/src/components/ColumnTypeLabel/type-icons/field_abc.svg @@ -0,0 +1,21 @@ + + + + diff --git a/superset-frontend/packages/superset-ui-chart-controls/src/components/ColumnTypeLabel/type-icons/field_boolean.svg b/superset-frontend/packages/superset-ui-chart-controls/src/components/ColumnTypeLabel/type-icons/field_boolean.svg new file mode 100644 index 0000000000000..a804e7d9faa5a --- /dev/null +++ b/superset-frontend/packages/superset-ui-chart-controls/src/components/ColumnTypeLabel/type-icons/field_boolean.svg @@ -0,0 +1,21 @@ + + + + diff --git a/superset-frontend/packages/superset-ui-chart-controls/src/components/ColumnTypeLabel/type-icons/field_date.svg b/superset-frontend/packages/superset-ui-chart-controls/src/components/ColumnTypeLabel/type-icons/field_date.svg new file mode 100644 index 0000000000000..cf796fab70b9b --- /dev/null +++ b/superset-frontend/packages/superset-ui-chart-controls/src/components/ColumnTypeLabel/type-icons/field_date.svg @@ -0,0 +1,21 @@ + + + + diff --git a/superset-frontend/packages/superset-ui-chart-controls/src/components/ColumnTypeLabel/type-icons/field_derived.svg b/superset-frontend/packages/superset-ui-chart-controls/src/components/ColumnTypeLabel/type-icons/field_derived.svg new file mode 100644 index 0000000000000..00e2115bf4863 --- /dev/null +++ b/superset-frontend/packages/superset-ui-chart-controls/src/components/ColumnTypeLabel/type-icons/field_derived.svg @@ -0,0 +1,21 @@ + + + + diff --git a/superset-frontend/packages/superset-ui-chart-controls/src/components/ColumnTypeLabel/type-icons/field_num.svg b/superset-frontend/packages/superset-ui-chart-controls/src/components/ColumnTypeLabel/type-icons/field_num.svg new file mode 100644 index 0000000000000..69b6aa2e337ed --- /dev/null +++ b/superset-frontend/packages/superset-ui-chart-controls/src/components/ColumnTypeLabel/type-icons/field_num.svg @@ -0,0 +1,21 @@ + + + + diff --git a/superset-frontend/packages/superset-ui-chart-controls/src/components/ColumnTypeLabel/type-icons/svgType.d.ts b/superset-frontend/packages/superset-ui-chart-controls/src/components/ColumnTypeLabel/type-icons/svgType.d.ts new file mode 100644 index 0000000000000..5885d9d8fc077 --- /dev/null +++ b/superset-frontend/packages/superset-ui-chart-controls/src/components/ColumnTypeLabel/type-icons/svgType.d.ts @@ -0,0 +1,22 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +declare module '*.svg' { + const content: any; + export default content; +} diff --git a/superset-frontend/packages/superset-ui-chart-controls/src/components/InfoTooltipWithTrigger.tsx b/superset-frontend/packages/superset-ui-chart-controls/src/components/InfoTooltipWithTrigger.tsx index 747a6535fe453..86a4a3d1d1d28 100644 --- a/superset-frontend/packages/superset-ui-chart-controls/src/components/InfoTooltipWithTrigger.tsx +++ b/superset-frontend/packages/superset-ui-chart-controls/src/components/InfoTooltipWithTrigger.tsx @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -import React from 'react'; +import React, { CSSProperties } from 'react'; import { kebabCase } from 'lodash'; import { TooltipPlacement } from 'antd/lib/tooltip'; import { t } from '@superset-ui/core'; @@ -30,6 +30,7 @@ export interface InfoTooltipWithTriggerProps { placement?: TooltipPlacement; bsStyle?: string; className?: string; + iconsStyle?: CSSProperties; } export function InfoTooltipWithTrigger({ @@ -40,6 +41,7 @@ export function InfoTooltipWithTrigger({ icon = 'info-circle', className = 'text-muted', placement = 'right', + iconsStyle = {}, }: InfoTooltipWithTriggerProps) { const iconClass = `fa fa-${icon} ${className} ${ bsStyle ? `text-${bsStyle}` : '' @@ -50,7 +52,7 @@ export function InfoTooltipWithTrigger({ aria-label={t('Show info tooltip')} tabIndex={0} className={iconClass} - style={{ cursor: onClick ? 'pointer' : undefined }} + style={{ cursor: onClick ? 'pointer' : undefined, ...iconsStyle }} onClick={onClick} onKeyPress={ onClick && diff --git a/superset-frontend/packages/superset-ui-chart-controls/src/components/MetricOption.tsx b/superset-frontend/packages/superset-ui-chart-controls/src/components/MetricOption.tsx index 38b8cb6fc1632..1052d1ec7e591 100644 --- a/superset-frontend/packages/superset-ui-chart-controls/src/components/MetricOption.tsx +++ b/superset-frontend/packages/superset-ui-chart-controls/src/components/MetricOption.tsx @@ -16,10 +16,16 @@ * specific language governing permissions and limitations * under the License. */ -import React, { useEffect, useState, ReactNode } from 'react'; -import { styled, Metric, SafeMarkdown } from '@superset-ui/core'; +import React, { useState, ReactNode, useLayoutEffect } from 'react'; +import { + css, + styled, + Metric, + SafeMarkdown, + SupersetTheme, +} from '@superset-ui/core'; import InfoTooltipWithTrigger from './InfoTooltipWithTrigger'; -import { ColumnTypeLabel } from './ColumnTypeLabel'; +import { ColumnTypeLabel } from './ColumnTypeLabel/ColumnTypeLabel'; import CertifiedIconWithTooltip from './CertifiedIconWithTooltip'; import Tooltip from './Tooltip'; import { getMetricTooltipNode } from './labelUtils'; @@ -63,52 +69,48 @@ export function MetricOption({ const [tooltipText, setTooltipText] = useState(metric.metric_name); - useEffect(() => { + useLayoutEffect(() => { setTooltipText(getMetricTooltipNode(metric, labelRef)); }, [labelRef, metric]); return ( {showType && } - {metric.is_certified && ( - - )} - - + + + css` + margin-right: ${theme.gridUnit}px; + ` + } + ref={labelRef} + > {link} - {metric.description && ( - - )} {showFormula && ( )} + {metric.is_certified && ( + + )} {warningMarkdown && ( } label={`warn-${metric.metric_name}`} + iconsStyle={{ marginLeft: 0 }} /> )} diff --git a/superset-frontend/packages/superset-ui-chart-controls/src/components/Tooltip.tsx b/superset-frontend/packages/superset-ui-chart-controls/src/components/Tooltip.tsx index c49931427fbf6..098fb169b6148 100644 --- a/superset-frontend/packages/superset-ui-chart-controls/src/components/Tooltip.tsx +++ b/superset-frontend/packages/superset-ui-chart-controls/src/components/Tooltip.tsx @@ -46,9 +46,17 @@ export const Tooltip = ({ overlayStyle, color, ...props }: TooltipProps) => { overlayStyle={{ fontSize: theme.typography.sizes.s, lineHeight: '1.6', + maxWidth: theme.gridUnit * 62, + minWidth: theme.gridUnit * 30, ...overlayStyle, }} + // make the tooltip display closer to the label + align={{ offset: [0, 1] }} color={defaultColor || color} + trigger="hover" + placement="bottom" + // don't allow hovering over the tooltip + mouseLeaveDelay={0} {...props} /> diff --git a/superset-frontend/packages/superset-ui-chart-controls/src/components/labelUtils.tsx b/superset-frontend/packages/superset-ui-chart-controls/src/components/labelUtils.tsx index ee738e1195683..c132b0918d694 100644 --- a/superset-frontend/packages/superset-ui-chart-controls/src/components/labelUtils.tsx +++ b/superset-frontend/packages/superset-ui-chart-controls/src/components/labelUtils.tsx @@ -18,9 +18,41 @@ */ import React, { ReactNode } from 'react'; -import { t } from '@superset-ui/core'; +import { css, styled, t } from '@superset-ui/core'; import { ColumnMeta, Metric } from '@superset-ui/chart-controls'; +const TooltipSectionWrapper = styled.div` + ${({ theme }) => css` + display: flex; + flex-direction: column; + font-size: ${theme.typography.sizes.s}px; + line-height: 1.2; + + &:not(:last-of-type) { + margin-bottom: ${theme.gridUnit * 2}px; + } + `} +`; + +const TooltipSectionLabel = styled.span` + ${({ theme }) => css` + font-weight: ${theme.typography.weights.bold}; + `} +`; + +const TooltipSection = ({ + label, + text, +}: { + label: ReactNode; + text: ReactNode; +}) => ( + + {label} + {text} + +); + export const isLabelTruncated = (labelRef?: React.RefObject): boolean => !!( labelRef && @@ -35,22 +67,25 @@ export const getColumnTooltipNode = ( column: ColumnMeta, labelRef?: React.RefObject, ): ReactNode => { - // don't show tooltip if it hasn't verbose_name and hasn't truncated - if (!column.verbose_name && !isLabelTruncated(labelRef)) { + if ( + !column.verbose_name && + !column.description && + !isLabelTruncated(labelRef) + ) { return null; } - if (column.verbose_name) { - return ( - <> -
{t('column name: %s', column.column_name)}
-
{t('verbose name: %s', column.verbose_name)}
- - ); - } - - // show column name in tooltip when column truncated - return t('column name: %s', column.column_name); + return ( + <> + + {column.verbose_name && ( + + )} + {column.description && ( + + )} + + ); }; type MetricType = Omit & { label?: string }; @@ -59,23 +94,27 @@ export const getMetricTooltipNode = ( metric: MetricType, labelRef?: React.RefObject, ): ReactNode => { - // don't show tooltip if it hasn't verbose_name, label and hasn't truncated - if (!metric.verbose_name && !metric.label && !isLabelTruncated(labelRef)) { + if ( + !metric.verbose_name && + !metric.description && + !metric.label && + !isLabelTruncated(labelRef) + ) { return null; } - if (metric.verbose_name) { - return ( - <> -
{t('metric name: %s', metric.metric_name)}
-
{t('verbose name: %s', metric.verbose_name)}
- - ); - } - - if (isLabelTruncated(labelRef) && metric.label) { - return t('label name: %s', metric.label); - } - - return t('metric name: %s', metric.metric_name); + return ( + <> + + {(metric.label || metric.verbose_name) && ( + + )} + {metric.description && ( + + )} + + ); }; diff --git a/superset-frontend/packages/superset-ui-chart-controls/src/index.ts b/superset-frontend/packages/superset-ui-chart-controls/src/index.ts index 6f19d0e4686a2..8a151d10e2a4f 100644 --- a/superset-frontend/packages/superset-ui-chart-controls/src/index.ts +++ b/superset-frontend/packages/superset-ui-chart-controls/src/index.ts @@ -27,7 +27,7 @@ export const sections = sectionsModule; export * from './components/InfoTooltipWithTrigger'; export * from './components/ColumnOption'; -export * from './components/ColumnTypeLabel'; +export * from './components/ColumnTypeLabel/ColumnTypeLabel'; export * from './components/MetricOption'; // React control components diff --git a/superset-frontend/packages/superset-ui-chart-controls/src/sections/advancedAnalytics.tsx b/superset-frontend/packages/superset-ui-chart-controls/src/sections/advancedAnalytics.tsx index 983e45ec8e6fa..ebd118d88122c 100644 --- a/superset-frontend/packages/superset-ui-chart-controls/src/sections/advancedAnalytics.tsx +++ b/superset-frontend/packages/superset-ui-chart-controls/src/sections/advancedAnalytics.tsx @@ -170,6 +170,7 @@ export const advancedAnalyticsControls: ControlPanelSectionConfig = { choices: [ ['asfreq', 'Null imputation'], ['zerofill', 'Zero imputation'], + ['linear', 'Linear interpolation'], ['ffill', 'Forward values'], ['bfill', 'Backward values'], ['median', 'Median values'], diff --git a/superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/components/ColumnConfigControl/ColumnConfigItem.tsx b/superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/components/ColumnConfigControl/ColumnConfigItem.tsx index ee9c1ea17b417..06429ef593a5b 100644 --- a/superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/components/ColumnConfigControl/ColumnConfigItem.tsx +++ b/superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/components/ColumnConfigControl/ColumnConfigItem.tsx @@ -19,7 +19,7 @@ import React from 'react'; import { useTheme } from '@superset-ui/core'; import { Popover } from 'antd'; -import ColumnTypeLabel from '../../../components/ColumnTypeLabel'; +import ColumnTypeLabel from '../../../components/ColumnTypeLabel/ColumnTypeLabel'; import ColumnConfigPopover, { ColumnConfigPopoverProps, } from './ColumnConfigPopover'; diff --git a/superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/index.tsx b/superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/index.tsx index ff15a6f4a92da..edd6e30b02fc8 100644 --- a/superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/index.tsx +++ b/superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/index.tsx @@ -44,6 +44,7 @@ import { legacyValidateInteger, validateNonEmpty, JsonArray, + ComparisionType, } from '@superset-ui/core'; import { @@ -455,16 +456,12 @@ const y_axis_format: SharedControlConfig<'SelectControl', SelectDefaultOption> = filterOption: ({ data: option }, search) => option.label.includes(search) || option.value.includes(search), mapStateToProps: state => { - const showWarning = - state.controls?.comparison_type?.value === 'percentage'; + const isPercentage = + state.controls?.comparison_type?.value === ComparisionType.Percentage; return { - warning: showWarning - ? t( - 'When `Calculation type` is set to "Percentage change", the Y ' + - 'Axis Format is forced to `.1%`', - ) - : null, - disabled: showWarning, + choices: isPercentage + ? D3_FORMAT_OPTIONS.filter(option => option[0].includes('%')) + : D3_FORMAT_OPTIONS, }; }, }; diff --git a/superset-frontend/packages/superset-ui-chart-controls/src/utils/D3Formatting.ts b/superset-frontend/packages/superset-ui-chart-controls/src/utils/D3Formatting.ts index 02585cc58db90..0e30f82d7b44e 100644 --- a/superset-frontend/packages/superset-ui-chart-controls/src/utils/D3Formatting.ts +++ b/superset-frontend/packages/superset-ui-chart-controls/src/utils/D3Formatting.ts @@ -25,7 +25,7 @@ export const D3_FORMAT_DOCS = t( // input choices & options export const D3_FORMAT_OPTIONS: [string, string][] = [ - [NumberFormats.SMART_NUMBER, t('Adaptative formating')], + [NumberFormats.SMART_NUMBER, t('Adaptive formatting')], ['~g', t('Original value')], [',d', ',d (12345.432 => 12,345)'], ['.1s', '.1s (12345.432 => 10k)'], @@ -48,7 +48,7 @@ export const D3_TIME_FORMAT_DOCS = t( ); export const D3_TIME_FORMAT_OPTIONS: [string, string][] = [ - [smartDateFormatter.id, t('Adaptative formating')], + [smartDateFormatter.id, t('Adaptive formatting')], ['%d/%m/%Y', '%d/%m/%Y | 14/01/2019'], ['%m/%d/%Y', '%m/%d/%Y | 01/14/2019'], ['%Y-%m-%d', '%Y-%m-%d | 2019-01-14'], diff --git a/superset-frontend/packages/superset-ui-chart-controls/test/components/ColumnOption.test.tsx b/superset-frontend/packages/superset-ui-chart-controls/test/components/ColumnOption.test.tsx index cce693473c6a3..cc0106e9d650c 100644 --- a/superset-frontend/packages/superset-ui-chart-controls/test/components/ColumnOption.test.tsx +++ b/superset-frontend/packages/superset-ui-chart-controls/test/components/ColumnOption.test.tsx @@ -53,12 +53,7 @@ describe('ColumnOption', () => { expect(lbl).toHaveLength(1); expect(lbl.first().text()).toBe('Foo'); }); - it('shows 2 InfoTooltipWithTrigger', () => { - expect(wrapper.find(InfoTooltipWithTrigger)).toHaveLength(2); - }); - it('shows only 1 InfoTooltipWithTrigger when no descr', () => { - delete props.column.description; - wrapper = shallow(factory(props)); + it('shows 1 InfoTooltipWithTrigger', () => { expect(wrapper.find(InfoTooltipWithTrigger)).toHaveLength(1); }); it('shows a label with column_name when no verbose_name', () => { diff --git a/superset-frontend/packages/superset-ui-chart-controls/test/components/ColumnTypeLabel.test.tsx b/superset-frontend/packages/superset-ui-chart-controls/test/components/ColumnTypeLabel.test.tsx index 04f76edca99a0..8369a790968f0 100644 --- a/superset-frontend/packages/superset-ui-chart-controls/test/components/ColumnTypeLabel.test.tsx +++ b/superset-frontend/packages/superset-ui-chart-controls/test/components/ColumnTypeLabel.test.tsx @@ -17,7 +17,8 @@ * under the License. */ import React from 'react'; -import { shallow } from 'enzyme'; +import { render, screen } from '@testing-library/react'; +import '@testing-library/jest-dom'; import { GenericDataType } from '@superset-ui/core'; import { ColumnTypeLabel, ColumnTypeLabelProps } from '../../src'; @@ -29,9 +30,8 @@ describe('ColumnOption', () => { const props = { ...defaultProps }; - function getWrapper(overrides: Partial) { - const wrapper = shallow(); - return wrapper; + function renderColumnTypeLabel(overrides: Partial) { + render(); } it('is a valid element', () => { @@ -40,40 +40,27 @@ describe('ColumnOption', () => { ); }); it('string type shows ABC icon', () => { - const lbl = getWrapper({ type: GenericDataType.STRING }).find( - '.type-label', - ); - expect(lbl).toHaveLength(1); - expect(lbl.first().text()).toBe('ABC'); + renderColumnTypeLabel({ type: GenericDataType.STRING }); + expect(screen.getByLabelText('string type icon')).toBeVisible(); }); it('int type shows # icon', () => { - const lbl = getWrapper({ type: GenericDataType.NUMERIC }).find( - '.type-label', - ); - expect(lbl).toHaveLength(1); - expect(lbl.first().text()).toBe('#'); + renderColumnTypeLabel({ type: GenericDataType.NUMERIC }); + expect(screen.getByLabelText('numeric type icon')).toBeVisible(); }); - it('bool type shows T/F icon', () => { - const lbl = getWrapper({ type: GenericDataType.BOOLEAN }).find( - '.type-label', - ); - expect(lbl).toHaveLength(1); - expect(lbl.first().text()).toBe('T/F'); + it('bool type shows 1|0 icon', () => { + renderColumnTypeLabel({ type: GenericDataType.BOOLEAN }); + expect(screen.getByLabelText('boolean type icon')).toBeVisible(); }); it('expression type shows function icon', () => { - const lbl = getWrapper({ type: 'expression' }).find('.type-label'); - expect(lbl).toHaveLength(1); - expect(lbl.first().text()).toBe('Æ’'); + renderColumnTypeLabel({ type: 'expression' }); + expect(screen.getByLabelText('function type icon')).toBeVisible(); }); it('unknown type shows question mark', () => { - const lbl = getWrapper({ type: undefined }).find('.type-label'); - expect(lbl).toHaveLength(1); - expect(lbl.first().text()).toBe('?'); + renderColumnTypeLabel({ type: undefined }); + expect(screen.getByLabelText('unknown type icon')).toBeVisible(); }); it('datetime type displays', () => { - const lbl = getWrapper({ type: GenericDataType.TEMPORAL }).find( - '.fa-clock-o', - ); - expect(lbl).toHaveLength(1); + renderColumnTypeLabel({ type: GenericDataType.TEMPORAL }); + expect(screen.getByLabelText('temporal type icon')).toBeVisible(); }); }); diff --git a/superset-frontend/packages/superset-ui-chart-controls/test/components/MetricOption.test.tsx b/superset-frontend/packages/superset-ui-chart-controls/test/components/MetricOption.test.tsx index 737e2f3352a10..e71882bd3ee14 100644 --- a/superset-frontend/packages/superset-ui-chart-controls/test/components/MetricOption.test.tsx +++ b/superset-frontend/packages/superset-ui-chart-controls/test/components/MetricOption.test.tsx @@ -51,12 +51,7 @@ describe('MetricOption', () => { expect(lbl).toHaveLength(1); expect(lbl.first().text()).toBe('Foo'); }); - it('shows 3 InfoTooltipWithTrigger', () => { - expect(wrapper.find('InfoTooltipWithTrigger')).toHaveLength(3); - }); - it('shows only 2 InfoTooltipWithTrigger when no descr', () => { - props.metric.description = ''; - wrapper = shallow(factory(props)); + it('shows 2 InfoTooltipWithTrigger', () => { expect(wrapper.find('InfoTooltipWithTrigger')).toHaveLength(2); }); it('shows a label with metric_name when no verbose_name', () => { @@ -64,7 +59,7 @@ describe('MetricOption', () => { wrapper = shallow(factory(props)); expect(wrapper.find('.option-label').first().text()).toBe('foo'); }); - it('shows only 1 InfoTooltipWithTrigger when no descr and no warning', () => { + it('shows only 1 InfoTooltipWithTrigger when no warning', () => { props.metric.warning_text = ''; wrapper = shallow(factory(props)); expect(wrapper.find('InfoTooltipWithTrigger')).toHaveLength(1); diff --git a/superset-frontend/packages/superset-ui-chart-controls/test/components/labelUtils.test.tsx b/superset-frontend/packages/superset-ui-chart-controls/test/components/labelUtils.test.tsx index b5e5cd6adfa21..6d3c89c14659d 100644 --- a/superset-frontend/packages/superset-ui-chart-controls/test/components/labelUtils.test.tsx +++ b/superset-frontend/packages/superset-ui-chart-controls/test/components/labelUtils.test.tsx @@ -16,14 +16,19 @@ * specific language governing permissions and limitations * under the License. */ -import React from 'react'; - +import React, { ReactElement } from 'react'; +import { render, screen } from '@testing-library/react'; +import '@testing-library/jest-dom'; +import { ThemeProvider, supersetTheme } from '@superset-ui/core'; import { getColumnLabelText, getColumnTooltipNode, getMetricTooltipNode, } from '../../src/components/labelUtils'; +const renderWithTheme = (ui: ReactElement) => + render({ui}); + test("should get column name when column doesn't have verbose_name", () => { expect( getColumnLabelText({ @@ -52,66 +57,80 @@ test('should get null as tooltip', () => { id: 123, column_name: 'column name', verbose_name: '', + description: '', }, ref, ), ).toBe(null); }); -test('should get column name and verbose name when it has a verbose name', () => { - const rvNode = ( +test('should get column name, verbose name and description when it has a verbose name', () => { + const ref = { current: { scrollWidth: 100, clientWidth: 100 } }; + renderWithTheme( <> -
column name: column name
-
verbose name: verbose name
- + {getColumnTooltipNode( + { + id: 123, + column_name: 'column name', + verbose_name: 'verbose name', + description: 'A very important column', + }, + ref, + )} + , ); - const ref = { current: { scrollWidth: 100, clientWidth: 100 } }; - expect( - getColumnTooltipNode( - { - id: 123, - column_name: 'column name', - verbose_name: 'verbose name', - }, - ref, - ), - ).toStrictEqual(rvNode); + expect(screen.getByText('Column name')).toBeVisible(); + expect(screen.getByText('column name')).toBeVisible(); + expect(screen.getByText('Label')).toBeVisible(); + expect(screen.getByText('verbose name')).toBeVisible(); + expect(screen.getByText('Description')).toBeVisible(); + expect(screen.getByText('A very important column')).toBeVisible(); }); test('should get column name as tooltip if it overflowed', () => { const ref = { current: { scrollWidth: 200, clientWidth: 100 } }; - expect( - getColumnTooltipNode( - { - id: 123, - column_name: 'long long long long column name', - verbose_name: '', - }, - ref, - ), - ).toBe('column name: long long long long column name'); + renderWithTheme( + <> + {getColumnTooltipNode( + { + id: 123, + column_name: 'long long long long column name', + verbose_name: '', + description: '', + }, + ref, + )} + , + ); + expect(screen.getByText('Column name')).toBeVisible(); + expect(screen.getByText('long long long long column name')).toBeVisible(); + expect(screen.queryByText('Label')).not.toBeInTheDocument(); + expect(screen.queryByText('Description')).not.toBeInTheDocument(); }); -test('should get column name and verbose name as tooltip if it overflowed', () => { - const rvNode = ( +test('should get column name, verbose name and description as tooltip if it overflowed', () => { + const ref = { current: { scrollWidth: 200, clientWidth: 100 } }; + renderWithTheme( <> -
column name: long long long long column name
-
verbose name: long long long long verbose name
- + {getColumnTooltipNode( + { + id: 123, + column_name: 'long long long long column name', + verbose_name: 'long long long long verbose name', + description: 'A very important column', + }, + ref, + )} + , ); - const ref = { current: { scrollWidth: 200, clientWidth: 100 } }; - expect( - getColumnTooltipNode( - { - id: 123, - column_name: 'long long long long column name', - verbose_name: 'long long long long verbose name', - }, - ref, - ), - ).toStrictEqual(rvNode); + expect(screen.getByText('Column name')).toBeVisible(); + expect(screen.getByText('long long long long column name')).toBeVisible(); + expect(screen.getByText('Label')).toBeVisible(); + expect(screen.getByText('long long long long verbose name')).toBeVisible(); + expect(screen.getByText('Description')).toBeVisible(); + expect(screen.getByText('A very important column')).toBeVisible(); }); test('should get null as tooltip in metric', () => { @@ -122,64 +141,76 @@ test('should get null as tooltip in metric', () => { metric_name: 'count', label: '', verbose_name: '', + description: '', }, ref, ), ).toBe(null); }); -test('should get metric name and verbose name as tooltip in metric', () => { - const rvNode = ( +test('should get metric name, verbose name and description as tooltip in metric', () => { + const ref = { current: { scrollWidth: 100, clientWidth: 100 } }; + renderWithTheme( <> -
metric name: count
-
verbose name: count(*)
- + {getMetricTooltipNode( + { + metric_name: 'count', + label: 'count(*)', + verbose_name: 'count(*)', + description: 'Count metric', + }, + ref, + )} + , ); - - const ref = { current: { scrollWidth: 100, clientWidth: 100 } }; - expect( - getMetricTooltipNode( - { - metric_name: 'count', - label: 'count(*)', - verbose_name: 'count(*)', - }, - ref, - ), - ).toStrictEqual(rvNode); + expect(screen.getByText('Metric name')).toBeVisible(); + expect(screen.getByText('count')).toBeVisible(); + expect(screen.getByText('Label')).toBeVisible(); + expect(screen.getByText('count(*)')).toBeVisible(); + expect(screen.getByText('Description')).toBeVisible(); + expect(screen.getByText('Count metric')).toBeVisible(); }); -test('should get metric name and verbose name in tooltip if it overflowed', () => { - const rvNode = ( +test('should get metric name as tooltip if it overflowed', () => { + const ref = { current: { scrollWidth: 200, clientWidth: 100 } }; + renderWithTheme( <> -
metric name: count
-
verbose name: longlonglonglonglong verbose metric
- + {getMetricTooltipNode( + { + metric_name: 'long long long long metric name', + label: '', + verbose_name: '', + description: '', + }, + ref, + )} + , ); - - const ref = { current: { scrollWidth: 200, clientWidth: 100 } }; - expect( - getMetricTooltipNode( - { - metric_name: 'count', - label: '', - verbose_name: 'longlonglonglonglong verbose metric', - }, - ref, - ), - ).toStrictEqual(rvNode); + expect(screen.getByText('Metric name')).toBeVisible(); + expect(screen.getByText('long long long long metric name')).toBeVisible(); + expect(screen.queryByText('Label')).not.toBeInTheDocument(); + expect(screen.queryByText('Description')).not.toBeInTheDocument(); }); -test('should get label name as tooltip in metric if it overflowed', () => { +test('should get metric name, verbose name and description in tooltip if it overflowed', () => { const ref = { current: { scrollWidth: 200, clientWidth: 100 } }; - expect( - getMetricTooltipNode( - { - metric_name: 'count', - label: 'longlonglonglonglong metric label', - verbose_name: '', - }, - ref, - ), - ).toBe('label name: longlonglonglonglong metric label'); + renderWithTheme( + <> + {getMetricTooltipNode( + { + metric_name: 'count', + label: '', + verbose_name: 'longlonglonglonglong verbose metric', + description: 'Count metric', + }, + ref, + )} + , + ); + expect(screen.getByText('Metric name')).toBeVisible(); + expect(screen.getByText('count')).toBeVisible(); + expect(screen.getByText('Label')).toBeVisible(); + expect(screen.getByText('longlonglonglonglong verbose metric')).toBeVisible(); + expect(screen.getByText('Description')).toBeVisible(); + expect(screen.getByText('Count metric')).toBeVisible(); }); diff --git a/superset-frontend/packages/superset-ui-core/src/query/api/v1/handleError.ts b/superset-frontend/packages/superset-ui-core/src/query/api/v1/handleError.ts index d8543466ad9a5..62c13c9d8cd45 100644 --- a/superset-frontend/packages/superset-ui-core/src/query/api/v1/handleError.ts +++ b/superset-frontend/packages/superset-ui-core/src/query/api/v1/handleError.ts @@ -29,7 +29,7 @@ export type ErrorInput = string | Error | Response | SupersetApiErrorPayload; * @param error the catched error from SupersetClient.request(...) */ export default async function handleError(error: ErrorInput): Promise { - // already a Sueprset error + // already a Superset error if (error instanceof SupersetApiError) { throw error; } diff --git a/superset-frontend/packages/superset-ui-core/src/query/types/AnnotationLayer.ts b/superset-frontend/packages/superset-ui-core/src/query/types/AnnotationLayer.ts index 293cebb56df41..a454908d78155 100644 --- a/superset-frontend/packages/superset-ui-core/src/query/types/AnnotationLayer.ts +++ b/superset-frontend/packages/superset-ui-core/src/query/types/AnnotationLayer.ts @@ -162,9 +162,10 @@ export type RecordAnnotationResult = { records: DataRecord[]; }; -export type TimeseriesAnnotationResult = [ - { key: string; values: { x: string | number; y?: number }[] }, -]; +export type TimeseriesAnnotationResult = { + key: string; + values: { x: string | number; y?: number }[]; +}[]; export type AnnotationResult = | RecordAnnotationResult diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/BoxPlot/types.ts b/superset-frontend/plugins/plugin-chart-echarts/src/BoxPlot/types.ts index 73072cb03bd99..005d2a79f0a27 100644 --- a/superset-frontend/plugins/plugin-chart-echarts/src/BoxPlot/types.ts +++ b/superset-frontend/plugins/plugin-chart-echarts/src/BoxPlot/types.ts @@ -53,7 +53,8 @@ export const DEFAULT_FORM_DATA: BoxPlotQueryFormData = { ...DEFAULT_TITLE_FORM_DATA, }; -export interface EchartsBoxPlotChartProps extends ChartProps { +export interface EchartsBoxPlotChartProps + extends ChartProps { formData: BoxPlotQueryFormData; queriesData: ChartDataResponseResult[]; } diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/Funnel/types.ts b/superset-frontend/plugins/plugin-chart-echarts/src/Funnel/types.ts index 39eb087ce6bfc..398fa40d57fb3 100644 --- a/superset-frontend/plugins/plugin-chart-echarts/src/Funnel/types.ts +++ b/superset-frontend/plugins/plugin-chart-echarts/src/Funnel/types.ts @@ -56,7 +56,8 @@ export enum EchartsFunnelLabelTypeType { KeyValuePercent, } -export interface EchartsFunnelChartProps extends ChartProps { +export interface EchartsFunnelChartProps + extends ChartProps { formData: EchartsFunnelFormData; queriesData: ChartDataResponseResult[]; } diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/Gauge/types.ts b/superset-frontend/plugins/plugin-chart-echarts/src/Gauge/types.ts index 32044d4ef648a..f6a1b09ad6604 100644 --- a/superset-frontend/plugins/plugin-chart-echarts/src/Gauge/types.ts +++ b/superset-frontend/plugins/plugin-chart-echarts/src/Gauge/types.ts @@ -32,7 +32,7 @@ export type AxisTickLineStyle = { export type EchartsGaugeFormData = QueryFormData & { colorScheme?: string; groupby: QueryFormColumn[]; - metric?: object; + metric?: string; rowLimit: number; minVal: number; maxVal: number; @@ -78,7 +78,8 @@ export const DEFAULT_FORM_DATA: Partial = { emitFilter: false, }; -export interface EchartsGaugeChartProps extends ChartProps { +export interface EchartsGaugeChartProps + extends ChartProps { formData: EchartsGaugeFormData; queriesData: ChartDataResponseResult[]; } diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/Pie/types.ts b/superset-frontend/plugins/plugin-chart-echarts/src/Pie/types.ts index b6411c8346214..c97afd3a7c9bb 100644 --- a/superset-frontend/plugins/plugin-chart-echarts/src/Pie/types.ts +++ b/superset-frontend/plugins/plugin-chart-echarts/src/Pie/types.ts @@ -61,7 +61,7 @@ export enum EchartsPieLabelType { KeyValuePercent = 'key_value_percent', } -export interface EchartsPieChartProps extends ChartProps { +export interface EchartsPieChartProps extends ChartProps { formData: EchartsPieFormData; queriesData: ChartDataResponseResult[]; } diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/types.ts b/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/types.ts index 9b32b6bf704c0..81b274632a2c2 100644 --- a/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/types.ts +++ b/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/types.ts @@ -122,7 +122,8 @@ export const DEFAULT_FORM_DATA: EchartsTimeseriesFormData = { ...DEFAULT_TITLE_FORM_DATA, }; -export interface EchartsTimeseriesChartProps extends ChartProps { +export interface EchartsTimeseriesChartProps + extends ChartProps { formData: EchartsTimeseriesFormData; queriesData: ChartDataResponseResult[]; } diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/Treemap/types.ts b/superset-frontend/plugins/plugin-chart-echarts/src/Treemap/types.ts index e99874d157e60..f4ed29cc7316c 100644 --- a/superset-frontend/plugins/plugin-chart-echarts/src/Treemap/types.ts +++ b/superset-frontend/plugins/plugin-chart-echarts/src/Treemap/types.ts @@ -49,7 +49,8 @@ export enum EchartsTreemapLabelType { KeyValue = 'key_value', } -export interface EchartsTreemapChartProps extends ChartProps { +export interface EchartsTreemapChartProps + extends ChartProps { formData: EchartsTreemapFormData; queriesData: ChartDataResponseResult[]; } diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/utils/forecast.ts b/superset-frontend/plugins/plugin-chart-echarts/src/utils/forecast.ts index 617aaa5f8c255..63de4f4f6592a 100644 --- a/superset-frontend/plugins/plugin-chart-echarts/src/utils/forecast.ts +++ b/superset-frontend/plugins/plugin-chart-echarts/src/utils/forecast.ts @@ -17,7 +17,7 @@ * under the License. */ import { DataRecord, DTTM_ALIAS, NumberFormatter } from '@superset-ui/core'; -import { CallbackDataParams, OptionName } from 'echarts/types/src/util/types'; +import { OptionName } from 'echarts/types/src/util/types'; import { TooltipMarker } from 'echarts/types/src/util/format'; import { ForecastSeriesContext, @@ -52,7 +52,7 @@ export const extractForecastSeriesContexts = ( }, {} as { [key: string]: ForecastSeriesEnum[] }); export const extractForecastValuesFromTooltipParams = ( - params: (CallbackDataParams & { seriesId: string })[], + params: any[], ): Record => { const values: Record = {}; params.forEach(param => { diff --git a/superset-frontend/plugins/plugin-chart-echarts/test/BigNumber/transformProps.test.ts b/superset-frontend/plugins/plugin-chart-echarts/test/BigNumber/transformProps.test.ts index 4fdb3de8748d8..edcd09e06b087 100644 --- a/superset-frontend/plugins/plugin-chart-echarts/test/BigNumber/transformProps.test.ts +++ b/superset-frontend/plugins/plugin-chart-echarts/test/BigNumber/transformProps.test.ts @@ -57,7 +57,7 @@ const rawFormData = { function generateProps( data: BigNumberDatum[], extraFormData = {}, - extraQueryData = {}, + extraQueryData: any = {}, ): BigNumberWithTrendlineChartProps { return { width: 200, diff --git a/superset-frontend/plugins/plugin-chart-echarts/test/BoxPlot/buildQuery.test.ts b/superset-frontend/plugins/plugin-chart-echarts/test/BoxPlot/buildQuery.test.ts index 10ba3a1ec5757..6859248713442 100644 --- a/superset-frontend/plugins/plugin-chart-echarts/test/BoxPlot/buildQuery.test.ts +++ b/superset-frontend/plugins/plugin-chart-echarts/test/BoxPlot/buildQuery.test.ts @@ -16,12 +16,17 @@ * specific language governing permissions and limitations * under the License. */ -import { isPostProcessingBoxplot } from '@superset-ui/core'; +import { + isPostProcessingBoxplot, + PostProcessingBoxplot, +} from '@superset-ui/core'; +import { DEFAULT_TITLE_FORM_DATA } from '../../src/types'; import buildQuery from '../../src/BoxPlot/buildQuery'; import { BoxPlotQueryFormData } from '../../src/BoxPlot/types'; describe('BoxPlot buildQuery', () => { const formData: BoxPlotQueryFormData = { + ...DEFAULT_TITLE_FORM_DATA, emitFilter: false, columns: [], datasource: '5__table', @@ -42,7 +47,7 @@ describe('BoxPlot buildQuery', () => { expect(query.series_columns).toEqual(['bar']); const [rule] = query.post_processing || []; expect(isPostProcessingBoxplot(rule)).toEqual(true); - expect(rule.options.groupby).toEqual(['bar']); + expect((rule as PostProcessingBoxplot)?.options?.groupby).toEqual(['bar']); }); it('should build non-timeseries query object when columns is defined', () => { @@ -53,6 +58,6 @@ describe('BoxPlot buildQuery', () => { expect(query.series_columns).toEqual(['bar']); const [rule] = query.post_processing || []; expect(isPostProcessingBoxplot(rule)).toEqual(true); - expect(rule.options.groupby).toEqual(['bar']); + expect((rule as PostProcessingBoxplot)?.options?.groupby).toEqual(['bar']); }); }); diff --git a/superset-frontend/plugins/plugin-chart-echarts/test/BoxPlot/transformProps.test.ts b/superset-frontend/plugins/plugin-chart-echarts/test/BoxPlot/transformProps.test.ts index 7ddeb0b5c9b71..08234fb61ed91 100644 --- a/superset-frontend/plugins/plugin-chart-echarts/test/BoxPlot/transformProps.test.ts +++ b/superset-frontend/plugins/plugin-chart-echarts/test/BoxPlot/transformProps.test.ts @@ -16,11 +16,12 @@ * specific language governing permissions and limitations * under the License. */ -import { ChartProps } from '@superset-ui/core'; +import { ChartProps, SqlaFormData } from '@superset-ui/core'; +import { EchartsBoxPlotChartProps } from '../../src/BoxPlot/types'; import transformProps from '../../src/BoxPlot/transformProps'; describe('BoxPlot tranformProps', () => { - const formData = { + const formData: SqlaFormData = { datasource: '5__table', granularity_sqla: 'ds', time_grain_sqla: 'P1Y', @@ -68,7 +69,7 @@ describe('BoxPlot tranformProps', () => { }); it('should tranform chart props for viz', () => { - expect(transformProps(chartProps)).toEqual( + expect(transformProps(chartProps as EchartsBoxPlotChartProps)).toEqual( expect.objectContaining({ width: 800, height: 600, diff --git a/superset-frontend/plugins/plugin-chart-echarts/test/Funnel/transformProps.test.ts b/superset-frontend/plugins/plugin-chart-echarts/test/Funnel/transformProps.test.ts index 1ee293474ea2d..87f377f731f65 100644 --- a/superset-frontend/plugins/plugin-chart-echarts/test/Funnel/transformProps.test.ts +++ b/superset-frontend/plugins/plugin-chart-echarts/test/Funnel/transformProps.test.ts @@ -20,7 +20,10 @@ import { ChartProps, getNumberFormatter } from '@superset-ui/core'; import transformProps, { formatFunnelLabel, } from '../../src/Funnel/transformProps'; -import { EchartsFunnelLabelTypeType } from '../../src/Funnel/types'; +import { + EchartsFunnelChartProps, + EchartsFunnelLabelTypeType, +} from '../../src/Funnel/types'; describe('Funnel tranformProps', () => { const formData = { @@ -45,7 +48,7 @@ describe('Funnel tranformProps', () => { }); it('should tranform chart props for viz', () => { - expect(transformProps(chartProps)).toEqual( + expect(transformProps(chartProps as EchartsFunnelChartProps)).toEqual( expect.objectContaining({ width: 800, height: 600, diff --git a/superset-frontend/plugins/plugin-chart-echarts/test/Gauge/buildQuery.test.ts b/superset-frontend/plugins/plugin-chart-echarts/test/Gauge/buildQuery.test.ts index e300f2cf72331..77f1322f9be95 100644 --- a/superset-frontend/plugins/plugin-chart-echarts/test/Gauge/buildQuery.test.ts +++ b/superset-frontend/plugins/plugin-chart-echarts/test/Gauge/buildQuery.test.ts @@ -26,7 +26,7 @@ describe('Gauge buildQuery', () => { }; it('should build query fields with no group by column', () => { - const formData = { ...baseFormData, groupby: null }; + const formData = { ...baseFormData, groupby: undefined }; const queryContext = buildQuery(formData); const [query] = queryContext.queries; expect(query.groupby).toEqual([]); diff --git a/superset-frontend/plugins/plugin-chart-echarts/test/Gauge/transformProps.test.ts b/superset-frontend/plugins/plugin-chart-echarts/test/Gauge/transformProps.test.ts index 210ba3be80e5b..b4cbc29bcb290 100644 --- a/superset-frontend/plugins/plugin-chart-echarts/test/Gauge/transformProps.test.ts +++ b/superset-frontend/plugins/plugin-chart-echarts/test/Gauge/transformProps.test.ts @@ -16,18 +16,18 @@ * specific language governing permissions and limitations * under the License. */ -import { ChartProps } from '@superset-ui/core'; +import { ChartProps, SqlaFormData } from '@superset-ui/core'; import transformProps from '../../src/Gauge/transformProps'; -import { DEFAULT_GAUGE_SERIES_OPTION } from '../../src/Gauge/constants'; +import { EchartsGaugeChartProps } from '../../src/Gauge/types'; describe('Echarts Gauge transformProps', () => { - const baseFormData = { + const baseFormData: SqlaFormData = { datasource: '26__table', - vizType: 'gauge_chart', + viz_type: 'gauge_chart', metric: 'count', adhocFilters: [], rowLimit: 10, - minVal: '0', + minVal: 0, maxVal: 100, startAngle: 225, endAngle: -45, @@ -46,7 +46,7 @@ describe('Echarts Gauge transformProps', () => { }; it('should transform chart props for no group by column', () => { - const formData = { ...baseFormData, groupby: [] }; + const formData: SqlaFormData = { ...baseFormData, groupby: [] }; const queriesData = [ { colnames: ['count'], @@ -66,7 +66,7 @@ describe('Echarts Gauge transformProps', () => { }; const chartProps = new ChartProps(chartPropsConfig); - expect(transformProps(chartProps)).toEqual( + expect(transformProps(chartProps as EchartsGaugeChartProps)).toEqual( expect.objectContaining({ width: 800, height: 600, @@ -98,7 +98,10 @@ describe('Echarts Gauge transformProps', () => { }); it('should transform chart props for single group by column', () => { - const formData = { ...baseFormData, groupby: ['year'] }; + const formData: SqlaFormData = { + ...baseFormData, + groupby: ['year'], + }; const queriesData = [ { colnames: ['year', 'count'], @@ -123,7 +126,7 @@ describe('Echarts Gauge transformProps', () => { }; const chartProps = new ChartProps(chartPropsConfig); - expect(transformProps(chartProps)).toEqual( + expect(transformProps(chartProps as EchartsGaugeChartProps)).toEqual( expect.objectContaining({ width: 800, height: 600, @@ -170,7 +173,10 @@ describe('Echarts Gauge transformProps', () => { }); it('should transform chart props for multiple group by columns', () => { - const formData = { ...baseFormData, groupby: ['year', 'platform'] }; + const formData: SqlaFormData = { + ...baseFormData, + groupby: ['year', 'platform'], + }; const queriesData = [ { colnames: ['year', 'platform', 'count'], @@ -197,7 +203,7 @@ describe('Echarts Gauge transformProps', () => { }; const chartProps = new ChartProps(chartPropsConfig); - expect(transformProps(chartProps)).toEqual( + expect(transformProps(chartProps as EchartsGaugeChartProps)).toEqual( expect.objectContaining({ width: 800, height: 600, @@ -244,7 +250,7 @@ describe('Echarts Gauge transformProps', () => { }); it('should transform chart props for intervals', () => { - const formData = { + const formData: SqlaFormData = { ...baseFormData, groupby: ['year', 'platform'], intervals: '50,100', @@ -276,7 +282,7 @@ describe('Echarts Gauge transformProps', () => { }; const chartProps = new ChartProps(chartPropsConfig); - expect(transformProps(chartProps)).toEqual( + expect(transformProps(chartProps as EchartsGaugeChartProps)).toEqual( expect.objectContaining({ width: 800, height: 600, diff --git a/superset-frontend/plugins/plugin-chart-echarts/test/Pie/transformProps.test.ts b/superset-frontend/plugins/plugin-chart-echarts/test/Pie/transformProps.test.ts index a2b429b4a3235..41280c7667cc7 100644 --- a/superset-frontend/plugins/plugin-chart-echarts/test/Pie/transformProps.test.ts +++ b/superset-frontend/plugins/plugin-chart-echarts/test/Pie/transformProps.test.ts @@ -22,7 +22,7 @@ import { SqlaFormData, } from '@superset-ui/core'; import transformProps, { formatPieLabel } from '../../src/Pie/transformProps'; -import { EchartsPieLabelType } from '../../src/Pie/types'; +import { EchartsPieChartProps, EchartsPieLabelType } from '../../src/Pie/types'; describe('Pie tranformProps', () => { const formData: SqlaFormData = { @@ -48,7 +48,7 @@ describe('Pie tranformProps', () => { }); it('should tranform chart props for viz', () => { - expect(transformProps(chartProps)).toEqual( + expect(transformProps(chartProps as EchartsPieChartProps)).toEqual( expect.objectContaining({ width: 800, height: 600, diff --git a/superset-frontend/plugins/plugin-chart-echarts/test/Timeseries/transformProps.test.ts b/superset-frontend/plugins/plugin-chart-echarts/test/Timeseries/transformProps.test.ts index 7d21524155e0d..4b5a21e53faf8 100644 --- a/superset-frontend/plugins/plugin-chart-echarts/test/Timeseries/transformProps.test.ts +++ b/superset-frontend/plugins/plugin-chart-echarts/test/Timeseries/transformProps.test.ts @@ -24,12 +24,14 @@ import { EventAnnotationLayer, FormulaAnnotationLayer, IntervalAnnotationLayer, + SqlaFormData, TimeseriesAnnotationLayer, } from '@superset-ui/core'; +import { EchartsTimeseriesChartProps } from '../../src/types'; import transformProps from '../../src/Timeseries/transformProps'; describe('EchartsTimeseries transformProps', () => { - const formData = { + const formData: SqlaFormData = { colorScheme: 'bnbColors', datasource: '3__table', granularity_sqla: 'ds', @@ -54,7 +56,7 @@ describe('EchartsTimeseries transformProps', () => { it('should tranform chart props for viz', () => { const chartProps = new ChartProps(chartPropsConfig); - expect(transformProps(chartProps)).toEqual( + expect(transformProps(chartProps as EchartsTimeseriesChartProps)).toEqual( expect.objectContaining({ width: 800, height: 600, @@ -99,7 +101,7 @@ describe('EchartsTimeseries transformProps', () => { annotationLayers: [formula], }, }); - expect(transformProps(chartProps)).toEqual( + expect(transformProps(chartProps as EchartsTimeseriesChartProps)).toEqual( expect.objectContaining({ width: 800, height: 600, @@ -227,7 +229,7 @@ describe('EchartsTimeseries transformProps', () => { }, ], }); - expect(transformProps(chartProps)).toEqual( + expect(transformProps(chartProps as EchartsTimeseriesChartProps)).toEqual( expect.objectContaining({ echartOptions: expect.objectContaining({ legend: expect.objectContaining({ @@ -266,7 +268,8 @@ describe('Does transformProps transform series correctly', () => { name: string; }; - const formData = { + const formData: SqlaFormData = { + viz_type: 'my_viz', colorScheme: 'bnbColors', datasource: '3__table', granularity_sqla: 'ds', @@ -329,8 +332,9 @@ describe('Does transformProps transform series correctly', () => { it('should show labels when showValue is true', () => { const chartProps = new ChartProps(chartPropsConfig); - const transformedSeries = transformProps(chartProps).echartOptions - .series as seriesType[]; + const transformedSeries = transformProps( + chartProps as EchartsTimeseriesChartProps, + ).echartOptions.series as seriesType[]; transformedSeries.forEach(series => { expect(series.label.show).toBe(true); @@ -345,8 +349,9 @@ describe('Does transformProps transform series correctly', () => { const chartProps = new ChartProps(updatedChartPropsConfig); - const transformedSeries = transformProps(chartProps).echartOptions - .series as seriesType[]; + const transformedSeries = transformProps( + chartProps as EchartsTimeseriesChartProps, + ).echartOptions.series as seriesType[]; transformedSeries.forEach(series => { expect(series.label.show).toBe(false); @@ -361,8 +366,9 @@ describe('Does transformProps transform series correctly', () => { const chartProps = new ChartProps(updatedChartPropsConfig); - const transformedSeries = transformProps(chartProps).echartOptions - .series as seriesType[]; + const transformedSeries = transformProps( + chartProps as EchartsTimeseriesChartProps, + ).echartOptions.series as seriesType[]; const showValueIndexes: number[] = []; @@ -400,8 +406,9 @@ describe('Does transformProps transform series correctly', () => { it('should show labels on values >= percentageThreshold if onlyTotal is false', () => { const chartProps = new ChartProps(chartPropsConfig); - const transformedSeries = transformProps(chartProps).echartOptions - .series as seriesType[]; + const transformedSeries = transformProps( + chartProps as EchartsTimeseriesChartProps, + ).echartOptions.series as seriesType[]; const expectedThresholds = totalStackedValues.map( total => ((formData.percentageThreshold || 0) / 100) * total, @@ -430,8 +437,9 @@ describe('Does transformProps transform series correctly', () => { const chartProps = new ChartProps(updatedChartPropsConfig); - const transformedSeries = transformProps(chartProps).echartOptions - .series as seriesType[]; + const transformedSeries = transformProps( + chartProps as EchartsTimeseriesChartProps, + ).echartOptions.series as seriesType[]; transformedSeries.forEach((series, seriesIndex) => { expect(series.label.show).toBe(true); diff --git a/superset-frontend/plugins/plugin-chart-echarts/test/Treemap/transformProps.test.ts b/superset-frontend/plugins/plugin-chart-echarts/test/Treemap/transformProps.test.ts index 07661fe55574c..9bb6fa03bae4c 100644 --- a/superset-frontend/plugins/plugin-chart-echarts/test/Treemap/transformProps.test.ts +++ b/superset-frontend/plugins/plugin-chart-echarts/test/Treemap/transformProps.test.ts @@ -17,6 +17,7 @@ * under the License. */ import { ChartProps } from '@superset-ui/core'; +import { EchartsTreemapChartProps } from '../../src/Treemap/types'; import transformProps from '../../src/Treemap/transformProps'; describe('Treemap tranformProps', () => { @@ -42,7 +43,7 @@ describe('Treemap tranformProps', () => { }); it('should tranform chart props for viz', () => { - expect(transformProps(chartProps)).toEqual( + expect(transformProps(chartProps as EchartsTreemapChartProps)).toEqual( expect.objectContaining({ width: 800, height: 600, diff --git a/superset-frontend/plugins/plugin-chart-pivot-table/test/plugin/buildQuery.test.ts b/superset-frontend/plugins/plugin-chart-pivot-table/test/plugin/buildQuery.test.ts index e11b9943ba360..a602bd4048f61 100644 --- a/superset-frontend/plugins/plugin-chart-pivot-table/test/plugin/buildQuery.test.ts +++ b/superset-frontend/plugins/plugin-chart-pivot-table/test/plugin/buildQuery.test.ts @@ -18,9 +18,10 @@ */ import buildQuery from '../../src/plugin/buildQuery'; +import { PivotTableQueryFormData } from '../../src/types'; describe('PivotTableChart buildQuery', () => { - const formData = { + const formData: PivotTableQueryFormData = { groupbyRows: ['row1', 'row2'], groupbyColumns: ['col1', 'col2'], metrics: ['metric1', 'metric2'], @@ -46,6 +47,7 @@ describe('PivotTableChart buildQuery', () => { setDataMask: () => {}, legacy_order_by: 'count', order_desc: true, + margin: 0, }; it('should build groupby with series in form data', () => { diff --git a/superset-frontend/plugins/plugin-chart-table/src/types.ts b/superset-frontend/plugins/plugin-chart-table/src/types.ts index e95f55441edf1..7c50f99cb4ae6 100644 --- a/superset-frontend/plugins/plugin-chart-table/src/types.ts +++ b/superset-frontend/plugins/plugin-chart-table/src/types.ts @@ -74,7 +74,7 @@ export type TableChartFormData = QueryFormData & { }; export interface TableChartProps extends ChartProps { - ownCurrentState: { + ownCurrentState?: { pageSize?: number; currentPage?: number; }; diff --git a/superset-frontend/plugins/plugin-chart-table/test/testData.ts b/superset-frontend/plugins/plugin-chart-table/test/testData.ts index 127ac08a3f4c1..fb9b9b7ca9e30 100644 --- a/superset-frontend/plugins/plugin-chart-table/test/testData.ts +++ b/superset-frontend/plugins/plugin-chart-table/test/testData.ts @@ -79,6 +79,8 @@ const basicQueryResult: ChartDataResponseResult = { rowcount: 100, stacktrace: null, status: 'success', + from_dttm: null, + to_dttm: null, }; /** diff --git a/superset-frontend/src/SqlLab/components/App/index.jsx b/superset-frontend/src/SqlLab/components/App/index.jsx index c98ff12e87017..8a0ade9509ac6 100644 --- a/superset-frontend/src/SqlLab/components/App/index.jsx +++ b/superset-frontend/src/SqlLab/components/App/index.jsx @@ -20,7 +20,7 @@ import React from 'react'; import PropTypes from 'prop-types'; import { bindActionCreators } from 'redux'; import { connect } from 'react-redux'; -import { t, supersetTheme, ThemeProvider } from '@superset-ui/core'; +import { t } from '@superset-ui/core'; import throttle from 'lodash/throttle'; import ToastContainer from 'src/components/MessageToasts/ToastContainer'; import { @@ -98,13 +98,11 @@ class App extends React.PureComponent { return window.location.replace('/superset/sqllab/history/'); } return ( - -
- - - -
-
+
+ + + +
); } } diff --git a/superset-frontend/src/SqlLab/components/ResultSet/index.tsx b/superset-frontend/src/SqlLab/components/ResultSet/index.tsx index 4d8818b1d9747..dbde25ef2b4f2 100644 --- a/superset-frontend/src/SqlLab/components/ResultSet/index.tsx +++ b/superset-frontend/src/SqlLab/components/ResultSet/index.tsx @@ -278,7 +278,10 @@ export default class ResultSet extends React.PureComponent< dbId, datasetToOverwrite.datasetId, sql, - results.selected_columns.map(d => ({ column_name: d.name })), + results.selected_columns.map(d => ({ + column_name: d.name, + is_dttm: d.is_date, + })), datasetToOverwrite.owners.map((o: DatasetOwner) => o.id), true, ); diff --git a/superset-frontend/src/SqlLab/components/RunQueryActionButton/RunQueryActionButton.test.jsx b/superset-frontend/src/SqlLab/components/RunQueryActionButton/RunQueryActionButton.test.jsx index 198759c69ecb6..823f10741ac09 100644 --- a/superset-frontend/src/SqlLab/components/RunQueryActionButton/RunQueryActionButton.test.jsx +++ b/superset-frontend/src/SqlLab/components/RunQueryActionButton/RunQueryActionButton.test.jsx @@ -17,8 +17,8 @@ * under the License. */ import React from 'react'; -import { shallow } from 'enzyme'; - +import { mount } from 'enzyme'; +import { supersetTheme, ThemeProvider } from '@superset-ui/core'; import RunQueryActionButton from 'src/SqlLab/components/RunQueryActionButton'; import Button from 'src/components/Button'; @@ -35,7 +35,10 @@ describe('RunQueryActionButton', () => { }; beforeEach(() => { - wrapper = shallow(); + wrapper = mount(, { + wrappingComponent: ThemeProvider, + wrappingComponentProps: { theme: supersetTheme }, + }); }); it('is a valid react element', () => { diff --git a/superset-frontend/src/SqlLab/components/RunQueryActionButton/index.tsx b/superset-frontend/src/SqlLab/components/RunQueryActionButton/index.tsx index 398ec3011008d..2a9e0fbaf8d8b 100644 --- a/superset-frontend/src/SqlLab/components/RunQueryActionButton/index.tsx +++ b/superset-frontend/src/SqlLab/components/RunQueryActionButton/index.tsx @@ -17,7 +17,7 @@ * under the License. */ import React from 'react'; -import { t, styled, supersetTheme } from '@superset-ui/core'; +import { t, styled, useTheme } from '@superset-ui/core'; import { Menu } from 'src/components/Menu'; import Button, { ButtonProps } from 'src/components/Button'; @@ -93,6 +93,8 @@ const RunQueryActionButton = ({ runQuery, stopQuery, }: Props) => { + const theme = useTheme(); + const shouldShowStopBtn = !!queryState && ['running', 'pending'].indexOf(queryState) > -1; @@ -123,8 +125,8 @@ const RunQueryActionButton = ({ diff --git a/superset-frontend/src/SqlLab/components/SouthPane/index.tsx b/superset-frontend/src/SqlLab/components/SouthPane/index.tsx index 3fb0f9c5261e4..afdb13e6f7fb3 100644 --- a/superset-frontend/src/SqlLab/components/SouthPane/index.tsx +++ b/superset-frontend/src/SqlLab/components/SouthPane/index.tsx @@ -94,6 +94,7 @@ const StyledPane = styled.div` } `; +const EXTRA_HEIGHT_RESULTS = 24; // we need extra height in RESULTS tab. because the height from props was calculated based on PREVIEW tab. const StyledEmptyStateWrapper = styled.div` height: 100%; .ant-empty-image img { @@ -164,7 +165,7 @@ export default function SouthPane({ query={latestQuery} actions={actions} user={user} - height={innerTabContentHeight} + height={innerTabContentHeight + EXTRA_HEIGHT_RESULTS} database={databases[latestQuery.dbId]} displayLimit={displayLimit} defaultQueryLimit={defaultQueryLimit} diff --git a/superset-frontend/src/SqlLab/types.ts b/superset-frontend/src/SqlLab/types.ts index b60ca8604be90..f1e088f003ee1 100644 --- a/superset-frontend/src/SqlLab/types.ts +++ b/superset-frontend/src/SqlLab/types.ts @@ -23,6 +23,7 @@ import { ToastType } from 'src/components/MessageToasts/types'; export type Column = { name: string; + is_date?: boolean; }; export type QueryState = diff --git a/superset-frontend/src/assets/images/icons/drag.svg b/superset-frontend/src/assets/images/icons/drag.svg index 7e2a5dc69c7b2..9d4aa0a5f941d 100644 --- a/superset-frontend/src/assets/images/icons/drag.svg +++ b/superset-frontend/src/assets/images/icons/drag.svg @@ -16,7 +16,7 @@ KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --> - - - + + + diff --git a/superset-frontend/src/components/Button/index.tsx b/superset-frontend/src/components/Button/index.tsx index bfe8bdb6597a3..ea8cd4cd3525c 100644 --- a/superset-frontend/src/components/Button/index.tsx +++ b/superset-frontend/src/components/Button/index.tsx @@ -229,10 +229,19 @@ export default function Button(props: ButtonProps) { id={`${kebabCase(tooltip)}-tooltip`} title={tooltip} > - {/* this ternary wraps the button in a span so that the tooltip shows up - when the button is disabled. */} + {/* wrap the button in a span so that the tooltip shows up + when the button is disabled. */} {disabled ? ( - {button} + .superset-button': { + marginLeft: theme.gridUnit * 2, + }, + }} + > + {button} + ) : ( button )} diff --git a/superset-frontend/src/components/CertifiedBadge/index.tsx b/superset-frontend/src/components/CertifiedBadge/index.tsx index 6ad82fb1c83a8..80581e6320d70 100644 --- a/superset-frontend/src/components/CertifiedBadge/index.tsx +++ b/superset-frontend/src/components/CertifiedBadge/index.tsx @@ -17,7 +17,7 @@ * under the License. */ import React from 'react'; -import { t, supersetTheme } from '@superset-ui/core'; +import { t, useTheme } from '@superset-ui/core'; import Icons, { IconType } from 'src/components/Icons'; import { Tooltip } from 'src/components/Tooltip'; @@ -32,6 +32,8 @@ function CertifiedBadge({ details, size = 'l', }: CertifiedBadgeProps) { + const theme = useTheme(); + return ( } > - + ); } diff --git a/superset-frontend/src/components/Datasource/DatasourceModal.tsx b/superset-frontend/src/components/Datasource/DatasourceModal.tsx index 92f35d622edd8..e03c416505a39 100644 --- a/superset-frontend/src/components/Datasource/DatasourceModal.tsx +++ b/superset-frontend/src/components/Datasource/DatasourceModal.tsx @@ -226,7 +226,18 @@ const DatasourceModal: FunctionComponent = ({ buttonStyle="primary" data-test="datasource-modal-save" onClick={onClickSave} - disabled={isSaving || errors.length > 0} + disabled={ + isSaving || + errors.length > 0 || + currentDatasource.is_managed_externally + } + tooltip={ + currentDatasource.is_managed_externally + ? t( + "This dataset is managed externally, and can't be edited in Superset", + ) + : '' + } > {t('Save')} diff --git a/superset-frontend/src/components/Form/LabeledErrorBoundInput.tsx b/superset-frontend/src/components/Form/LabeledErrorBoundInput.tsx index a5225e8ef4d39..be9e0af16f2c1 100644 --- a/superset-frontend/src/components/Form/LabeledErrorBoundInput.tsx +++ b/superset-frontend/src/components/Form/LabeledErrorBoundInput.tsx @@ -29,7 +29,7 @@ export interface LabeledErrorBoundInputProps { validationMethods: | { onBlur: (value: any) => void } | { onChange: (value: any) => void }; - errorMessage: string | null; + errorMessage?: string | null; helpText?: string; required?: boolean; hasTooltip?: boolean; diff --git a/superset-frontend/src/components/Icons/Icon.tsx b/superset-frontend/src/components/Icons/Icon.tsx index d45943502dbd5..7d698d0d542a8 100644 --- a/superset-frontend/src/components/Icons/Icon.tsx +++ b/superset-frontend/src/components/Icons/Icon.tsx @@ -42,7 +42,7 @@ export const StyledIcon = styled(AntdIconComponent)` : '24px'}; `; -interface IconProps extends IconType { +export interface IconProps extends IconType { fileName: string; } diff --git a/superset-frontend/src/components/ReportModal/index.tsx b/superset-frontend/src/components/ReportModal/index.tsx index 0963c0fe9f4e7..c8273bd985801 100644 --- a/superset-frontend/src/components/ReportModal/index.tsx +++ b/superset-frontend/src/components/ReportModal/index.tsx @@ -31,6 +31,7 @@ import { connect, useDispatch, useSelector } from 'react-redux'; import { addReport, editReport } from 'src/reports/actions/reports'; import { AlertObject } from 'src/views/CRUD/alert/types'; +import Alert from 'src/components/Alert'; import TimezoneSelector from 'src/components/TimezoneSelector'; import LabeledErrorBoundInput from 'src/components/Form/LabeledErrorBoundInput'; import Icons from 'src/components/Icons'; @@ -38,6 +39,7 @@ import withToasts from 'src/components/MessageToasts/withToasts'; import { CronError } from 'src/components/CronPicker'; import { RadioChangeEvent } from 'src/components'; import { + antDErrorAlertStyles, StyledModal, StyledTopSection, StyledBottomSection, @@ -73,7 +75,7 @@ export interface ReportObject { working_timeout: number; creation_method: string; force_screenshot: boolean; - error?: string; + error: string; } interface ChartObject { @@ -93,6 +95,7 @@ interface ReportProps { addReport: (report?: ReportObject) => {}; onHide: () => {}; onReportAdd: (report?: ReportObject) => {}; + addDangerToast: (msg: string) => void; show: boolean; userId: number; userEmail: string; @@ -128,9 +131,7 @@ type ReportActionType = } | { type: ActionType.error; - payload: { - name: string[]; - }; + payload: { name: string[] }; }; const TEXT_BASED_VISUALIZATION_TYPES = [ @@ -146,6 +147,10 @@ const NOTIFICATION_FORMATS = { CSV: 'CSV', }; +const defaultErrorMsg = t( + 'We were unable to create your report. Please try again.', +); + const reportReducer = ( state: Partial | null, action: ReportActionType, @@ -171,7 +176,7 @@ const reportReducer = ( case ActionType.error: return { ...state, - error: action.payload.name[0], + error: action.payload?.name[0] || defaultErrorMsg, }; default: return state; @@ -250,9 +255,8 @@ const ReportModal: FunctionComponent = ({ await dispatch(addReport(newReportValues as ReportObject)); onHide(); } catch (e) { - const parsedError = await getClientErrorObject(e); - const errorMessage = parsedError.message; - onReducerChange(ActionType.error, errorMessage); + const { message } = await getClientErrorObject(e); + onReducerChange(ActionType.error, message); } } @@ -315,6 +319,15 @@ const ReportModal: FunctionComponent = ({ ); + const errorAlert = () => ( + antDErrorAlertStyles(theme)} + message={t('Report Creation Error')} + description={currentReport?.error} + /> + ); + return ( = ({ value: target.value, }), }} - errorMessage={currentReport?.error || ''} label="Report Name" data-test="report-name-test" /> - = ({ value: target.value, }), }} - errorMessage="" label={t('Description')} placeholder={t( 'Include a description that will be sent with your report', @@ -401,6 +411,7 @@ const ReportModal: FunctionComponent = ({ /> {isChart && renderMessageContentSection} + {currentReport?.error && errorAlert()} ); }; diff --git a/superset-frontend/src/components/ReportModal/styles.tsx b/superset-frontend/src/components/ReportModal/styles.tsx index ce71ab47256f7..b37939b4feca6 100644 --- a/superset-frontend/src/components/ReportModal/styles.tsx +++ b/superset-frontend/src/components/ReportModal/styles.tsx @@ -106,3 +106,24 @@ export const StyledRadio = styled(Radio)` export const StyledRadioGroup = styled(Radio.Group)` margin-left: ${({ theme }) => theme.gridUnit * 0.5}px; `; + +export const antDErrorAlertStyles = (theme: SupersetTheme) => css` + border: ${theme.colors.error.base} 1px solid; + padding: ${theme.gridUnit * 4}px; + margin: ${theme.gridUnit * 8}px ${theme.gridUnit * 4}px; + color: ${theme.colors.error.dark2}; + .ant-alert-message { + font-size: ${theme.typography.sizes.s + 1}px; + font-weight: bold; + } + .ant-alert-description { + font-size: ${theme.typography.sizes.s + 1}px; + line-height: ${theme.gridUnit * 4}px; + .ant-alert-icon { + margin-right: ${theme.gridUnit * 2.5}px; + font-size: ${theme.typography.sizes.l + 1}px; + position: relative; + top: ${theme.gridUnit / 4}px; + } + } +`; diff --git a/superset-frontend/src/components/Select/Select.tsx b/superset-frontend/src/components/Select/Select.tsx index fde08fdf3d336..9c7b92c38cf88 100644 --- a/superset-frontend/src/components/Select/Select.tsx +++ b/superset-frontend/src/components/Select/Select.tsx @@ -42,7 +42,7 @@ import Icons from 'src/components/Icons'; import { getClientErrorObject } from 'src/utils/getClientErrorObject'; import { SLOW_DEBOUNCE } from 'src/constants'; import { rankedSearchCompare } from 'src/utils/rankedSearchCompare'; -import { getValue, hasOption } from './utils'; +import { getValue, hasOption, isObject } from './utils'; const { Option } = AntdSelect; @@ -385,18 +385,20 @@ const Select = ( const hasCustomLabels = fullSelectOptions.some(opt => !!opt?.customLabel); - const handleOnSelect = (selectedItem: string | number | AntdLabeledValue) => { + const handleOnSelect = ( + selectedItem: string | number | AntdLabeledValue | undefined, + ) => { if (isSingleMode) { setSelectValue(selectedItem); } else { setSelectValue(previousState => { const array = ensureIsArray(previousState); - const isObject = typeof selectedItem === 'object'; - const value = isObject ? selectedItem.value : selectedItem; + const isLabeledValue = isObject(selectedItem); + const value = isLabeledValue ? selectedItem.value : selectedItem; // Tokenized values can contain duplicated values if (!hasOption(value, array)) { const result = [...array, selectedItem]; - return isObject + return isLabeledValue ? (result as AntdLabeledValue[]) : (result as (string | number)[]); } @@ -406,9 +408,11 @@ const Select = ( setInputValue(''); }; - const handleOnDeselect = (value: string | number | AntdLabeledValue) => { + const handleOnDeselect = ( + value: string | number | AntdLabeledValue | undefined, + ) => { if (Array.isArray(selectValue)) { - if (typeof value === 'number' || typeof value === 'string') { + if (typeof value === 'number' || typeof value === 'string' || !value) { const array = selectValue as (string | number)[]; setSelectValue(array.filter(element => element !== value)); } else { diff --git a/superset-frontend/src/components/Select/utils.ts b/superset-frontend/src/components/Select/utils.ts index 4eda84a7411db..73c6dd3533242 100644 --- a/superset-frontend/src/components/Select/utils.ts +++ b/superset-frontend/src/components/Select/utils.ts @@ -25,7 +25,7 @@ import { GroupedOptionsType, } from 'react-select'; -function isObject(value: unknown): value is Record { +export function isObject(value: unknown): value is Record { return ( value !== null && typeof value === 'object' && diff --git a/superset-frontend/src/dashboard/components/Header/index.jsx b/superset-frontend/src/dashboard/components/Header/index.jsx index 89b1b9bee673c..7fd1afc82eb3b 100644 --- a/superset-frontend/src/dashboard/components/Header/index.jsx +++ b/superset-frontend/src/dashboard/components/Header/index.jsx @@ -492,7 +492,8 @@ class Header extends React.PureComponent { } = this.props; const userCanEdit = dashboardInfo.dash_edit_perm && - filterboxMigrationState !== FILTER_BOX_MIGRATION_STATES.REVIEWING; + filterboxMigrationState !== FILTER_BOX_MIGRATION_STATES.REVIEWING && + !dashboardInfo.is_managed_externally; const userCanShare = dashboardInfo.dash_share_perm; const userCanSaveAs = dashboardInfo.dash_save_perm && diff --git a/superset-frontend/src/dashboard/components/PropertiesModal/index.tsx b/superset-frontend/src/dashboard/components/PropertiesModal/index.tsx index 67c86cb1fc7de..effd18b3d07c4 100644 --- a/superset-frontend/src/dashboard/components/PropertiesModal/index.tsx +++ b/superset-frontend/src/dashboard/components/PropertiesModal/index.tsx @@ -75,6 +75,7 @@ type DashboardInfo = { slug: string; certifiedBy: string; certificationDetails: string; + isManagedExternally: boolean; }; const PropertiesModal = ({ @@ -151,6 +152,7 @@ const PropertiesModal = ({ owners, roles, metadata, + is_managed_externally, } = dashboardData; const dashboardInfo = { id, @@ -158,6 +160,7 @@ const PropertiesModal = ({ slug: slug || '', certifiedBy: certified_by || '', certificationDetails: certification_details || '', + isManagedExternally: is_managed_externally || false, }; form.setFieldsValue(dashboardInfo); @@ -515,6 +518,14 @@ const PropertiesModal = ({ buttonStyle="primary" className="m-r-5" cta + disabled={dashboardInfo?.isManagedExternally} + tooltip={ + dashboardInfo?.isManagedExternally + ? t( + "This dashboard is managed externally, and can't be edited in Superset", + ) + : '' + } > {saveLabel} diff --git a/superset-frontend/src/dashboard/components/dnd/DragHandle.tsx b/superset-frontend/src/dashboard/components/dnd/DragHandle.tsx index 08a224e4b80a3..5209c99fee728 100644 --- a/superset-frontend/src/dashboard/components/dnd/DragHandle.tsx +++ b/superset-frontend/src/dashboard/components/dnd/DragHandle.tsx @@ -17,33 +17,35 @@ * under the License. */ import React, { LegacyRef } from 'react'; -import cx from 'classnames'; +import { css, styled } from '@superset-ui/core'; +import Icons from 'src/components/Icons'; interface DragHandleProps { position: 'left' | 'top'; - innerRef: LegacyRef | undefined; - dotCount: number; + innerRef?: LegacyRef | undefined; } +const DragHandleContainer = styled.div<{ position: 'left' | 'top' }>` + ${({ theme, position }) => css` + height: ${theme.gridUnit * 5}px; + overflow: hidden; + cursor: move; + ${position === 'top' && + css` + transform: rotate(90deg); + `} + & path { + fill: ${theme.colors.grayscale.base}; + } + `} +`; export default function DragHandle({ position = 'left', innerRef = null, - dotCount = 8, }: DragHandleProps) { return ( -
- {Array(dotCount) - .fill(null) - .map((_, i) => ( -
- ))} -
+ + + ); } diff --git a/superset-frontend/src/dashboard/components/nativeFilters/FilterBar/FilterSets/FilterSetUnit.tsx b/superset-frontend/src/dashboard/components/nativeFilters/FilterBar/FilterSets/FilterSetUnit.tsx index 2c21dc6afe01f..53ea1c94c5289 100644 --- a/superset-frontend/src/dashboard/components/nativeFilters/FilterBar/FilterSets/FilterSetUnit.tsx +++ b/superset-frontend/src/dashboard/components/nativeFilters/FilterBar/FilterSets/FilterSetUnit.tsx @@ -24,7 +24,7 @@ import { FilterSet, HandlerFunction, styled, - supersetTheme, + useTheme, t, } from '@superset-ui/core'; import { CheckOutlined, EllipsisOutlined } from '@ant-design/icons'; @@ -76,6 +76,8 @@ const FilterSetUnit: FC = ({ isApplied, onRebuild, }) => { + const theme = useTheme(); + const menu = ( {t('Edit')} @@ -105,9 +107,7 @@ const FilterSetUnit: FC = ({ {isApplied && ( - + )} {onDelete && ( = ({ drag(drop(ref)); return ( - +
{children}
); diff --git a/superset-frontend/src/dashboard/stylesheets/dnd.less b/superset-frontend/src/dashboard/stylesheets/dnd.less index 59293407a9a2c..2465c6fac0661 100644 --- a/superset-frontend/src/dashboard/stylesheets/dnd.less +++ b/superset-frontend/src/dashboard/stylesheets/dnd.less @@ -91,33 +91,6 @@ min-height: 16px; } -/* drag handles */ -.drag-handle { - overflow: hidden; - width: 16px; - cursor: move; -} - -.drag-handle--left { - width: 8px; -} - -.drag-handle-dot { - float: left; - height: 2px; - margin: 1px; - width: 2px; - - &:after { - content: ''; - background: @gray; - float: left; - height: 2px; - margin: -1px; - width: 2px; - } -} - /* empty drop targets */ .dashboard-component-tabs-content { & > .empty-droptarget { diff --git a/superset-frontend/src/explore/components/DatasourcePanel/DatasourcePanelDragOption/index.tsx b/superset-frontend/src/explore/components/DatasourcePanel/DatasourcePanelDragOption/index.tsx index 518f7ebabc8be..613a58e15d6d3 100644 --- a/superset-frontend/src/explore/components/DatasourcePanel/DatasourcePanelDragOption/index.tsx +++ b/superset-frontend/src/explore/components/DatasourcePanel/DatasourcePanelDragOption/index.tsx @@ -18,29 +18,36 @@ */ import React from 'react'; import { useDrag } from 'react-dnd'; -import { Metric, styled } from '@superset-ui/core'; +import { css, Metric, styled } from '@superset-ui/core'; +import { ColumnMeta } from '@superset-ui/chart-controls'; import { DndItemType } from 'src/explore/components/DndItemType'; import { StyledColumnOption, StyledMetricOption, } from 'src/explore/components/optionRenderers'; -import { ColumnMeta } from '@superset-ui/chart-controls'; +import Icons from 'src/components/Icons'; + import { DatasourcePanelDndItem } from '../types'; const DatasourceItemContainer = styled.div` - display: flex; - align-items: center; - width: 100%; - height: ${({ theme }) => theme.gridUnit * 6}px; - cursor: pointer; - - > div { + ${({ theme }) => css` + display: flex; + align-items: center; + justify-content: space-between; width: 100%; - } + height: ${theme.gridUnit * 6}px; + padding: 0 ${theme.gridUnit}px; + + // hack to make the drag preview image corners rounded + transform: translate(0, 0); + background-color: inherit; + border-radius: 4px; - :hover { - background-color: ${({ theme }) => theme.colors.grayscale.light2}; - } + > div { + min-width: 0; + margin-right: ${theme.gridUnit * 2}px; + } + `} `; interface DatasourcePanelDragOptionProps extends DatasourcePanelDndItem { @@ -79,6 +86,7 @@ export default function DatasourcePanelDragOption( ) : ( )} + ); } diff --git a/superset-frontend/src/explore/components/DatasourcePanel/index.tsx b/superset-frontend/src/explore/components/DatasourcePanel/index.tsx index 04378cb9985be..ebed661be9e46 100644 --- a/superset-frontend/src/explore/components/DatasourcePanel/index.tsx +++ b/superset-frontend/src/explore/components/DatasourcePanel/index.tsx @@ -17,6 +17,7 @@ * under the License. */ import React, { useEffect, useMemo, useRef, useState } from 'react'; +import { css, styled, t } from '@superset-ui/core'; import { ControlConfig, DatasourceMeta, @@ -24,7 +25,6 @@ import { } from '@superset-ui/chart-controls'; import { debounce } from 'lodash'; import { matchSorter, rankings } from 'match-sorter'; -import { css, styled, t } from '@superset-ui/core'; import Collapse from 'src/components/Collapse'; import { Input } from 'src/components/Input'; import { FAST_DEBOUNCE } from 'src/constants'; @@ -49,6 +49,10 @@ export interface Props { shouldForceUpdate?: number; } +const enableExploreDnd = isFeatureEnabled( + FeatureFlag.ENABLE_EXPLORE_DRAG_AND_DROP, +); + const Button = styled.button` background: none; border: none; @@ -63,7 +67,7 @@ const ButtonContainer = styled.div` const DatasourceContainer = styled.div` ${({ theme }) => css` - background-color: ${theme.colors.grayscale.light4}; + background-color: ${theme.colors.grayscale.light5}; position: relative; height: 100%; display: flex; @@ -97,26 +101,55 @@ const DatasourceContainer = styled.div` `; const LabelWrapper = styled.div` - overflow: hidden; - text-overflow: ellipsis; + ${({ theme }) => css` + overflow: hidden; + text-overflow: ellipsis; + font-size: ${theme.typography.sizes.s}px; + background-color: ${theme.colors.grayscale.light4}; + margin: ${theme.gridUnit * 2}px 0; + border-radius: 4px; + padding: 0 ${theme.gridUnit}px; - & > span { - white-space: nowrap; - } + &:first-of-type { + margin-top: 0; + } + &:last-of-type { + margin-bottom: 0; + } - .option-label { - display: inline; - } + ${enableExploreDnd && + css` + padding: 0; + cursor: pointer; + &:hover { + background-color: ${theme.colors.grayscale.light3}; + } + `} - .metric-option { - & > svg { - min-width: ${({ theme }) => `${theme.gridUnit * 4}px`}; + & > span { + white-space: nowrap; } - & > .option-label { - overflow: hidden; - text-overflow: ellipsis; + + .option-label { + display: inline; + } + + .metric-option { + & > svg { + min-width: ${theme.gridUnit * 4}px; + } + & > .option-label { + overflow: hidden; + text-overflow: ellipsis; + } } - } + `} +`; + +const SectionHeader = styled.span` + ${({ theme }) => css` + font-size: ${theme.typography.sizes.s}px; + `} `; const LabelContainer = (props: { @@ -134,10 +167,6 @@ const LabelContainer = (props: { ); }; -const enableExploreDnd = isFeatureEnabled( - FeatureFlag.ENABLE_EXPLORE_DRAG_AND_DROP, -); - export default function DataSourcePanel({ datasource, controls: { datasource: datasourceControl }, @@ -273,13 +302,12 @@ export default function DataSourcePanel({ />
{t('Metrics')}} + header={{t('Metrics')}} key="metrics" >
@@ -315,7 +343,7 @@ export default function DataSourcePanel({ )} {t('Columns')}} + header={{t('Columns')}} key="column" >
diff --git a/superset-frontend/src/explore/components/ExploreViewContainer/index.jsx b/superset-frontend/src/explore/components/ExploreViewContainer/index.jsx index eba2fc8ebdeac..527392275c51c 100644 --- a/superset-frontend/src/explore/components/ExploreViewContainer/index.jsx +++ b/superset-frontend/src/explore/components/ExploreViewContainer/index.jsx @@ -101,7 +101,7 @@ const Styles = styled.div` max-height: 100%; } .data-source-selection { - background-color: ${({ theme }) => theme.colors.grayscale.light4}; + background-color: ${({ theme }) => theme.colors.grayscale.light5}; padding: ${({ theme }) => 2 * theme.gridUnit}px 0; border-right: 1px solid ${({ theme }) => theme.colors.grayscale.light2}; } diff --git a/superset-frontend/src/explore/components/PropertiesModal/index.tsx b/superset-frontend/src/explore/components/PropertiesModal/index.tsx index 484ae7d9abbfc..7fa4ef4580ec1 100644 --- a/superset-frontend/src/explore/components/PropertiesModal/index.tsx +++ b/superset-frontend/src/explore/components/PropertiesModal/index.tsx @@ -204,7 +204,14 @@ function PropertiesModal({ buttonSize="small" buttonStyle="primary" onClick={form.submit} - disabled={submitting || !name} + disabled={submitting || !name || slice.is_managed_externally} + tooltip={ + slice.is_managed_externally + ? t( + "This chart is managed externally, and can't be edited in Superset", + ) + : '' + } cta > {t('Save')} diff --git a/superset-frontend/src/explore/components/SaveModal.tsx b/superset-frontend/src/explore/components/SaveModal.tsx index b5c47145e0c97..9c3e01eba072b 100644 --- a/superset-frontend/src/explore/components/SaveModal.tsx +++ b/superset-frontend/src/explore/components/SaveModal.tsx @@ -79,7 +79,10 @@ class SaveModal extends React.Component { } canOverwriteSlice(): boolean { - return this.props.slice?.owners?.includes(this.props.userId); + return ( + this.props.slice?.owners?.includes(this.props.userId) && + !this.props.slice?.is_managed_externally + ); } componentDidMount() { diff --git a/superset-frontend/src/explore/components/controls/DatasourceControl/DatasourceControl.test.jsx b/superset-frontend/src/explore/components/controls/DatasourceControl/DatasourceControl.test.jsx index 4248e8634cc9e..73c2777663a19 100644 --- a/superset-frontend/src/explore/components/controls/DatasourceControl/DatasourceControl.test.jsx +++ b/superset-frontend/src/explore/components/controls/DatasourceControl/DatasourceControl.test.jsx @@ -19,7 +19,8 @@ import React from 'react'; import sinon from 'sinon'; import configureStore from 'redux-mock-store'; -import { shallow } from 'enzyme'; +import { mount, shallow } from 'enzyme'; +import { supersetTheme, ThemeProvider } from '@superset-ui/core'; import { Menu } from 'src/components/Menu'; import { DatasourceModal, @@ -60,8 +61,10 @@ describe('DatasourceControl', () => { ...defaultProps, ...overrideProps, }; - return shallow(, { + return mount(, { context: { store }, + wrappingComponent: ThemeProvider, + wrappingComponentProps: { theme: supersetTheme }, }); } @@ -80,7 +83,7 @@ describe('DatasourceControl', () => { expect(wrapper.find('[data-test="datasource-menu"]')).toExist(); let menuWrapper = shallow(
- {wrapper.find('[data-test="datasource-menu"]').prop('overlay')} + {wrapper.find('[data-test="datasource-menu"]').first().prop('overlay')}
, ); expect(menuWrapper.find(Menu.Item)).toHaveLength(3); @@ -91,7 +94,7 @@ describe('DatasourceControl', () => { expect(wrapper.find('[data-test="datasource-menu"]')).toExist(); menuWrapper = shallow(
- {wrapper.find('[data-test="datasource-menu"]').prop('overlay')} + {wrapper.find('[data-test="datasource-menu"]').first().prop('overlay')}
, ); expect(menuWrapper.find(Menu.Item)).toHaveLength(2); @@ -113,7 +116,7 @@ describe('DatasourceControl', () => { expect(wrapper.find('[data-test="datasource-menu"]')).toExist(); menuWrapper = shallow(
- {wrapper.find('[data-test="datasource-menu"]').prop('overlay')} + {wrapper.find('[data-test="datasource-menu"]').first().prop('overlay')}
, ); expect(menuWrapper.find(Menu.Item)).toHaveLength(2); diff --git a/superset-frontend/src/explore/components/controls/DatasourceControl/DatasourceControl.test.tsx b/superset-frontend/src/explore/components/controls/DatasourceControl/DatasourceControl.test.tsx index 43ac29b2c7a05..f4f66ef43ead8 100644 --- a/superset-frontend/src/explore/components/controls/DatasourceControl/DatasourceControl.test.tsx +++ b/superset-frontend/src/explore/components/controls/DatasourceControl/DatasourceControl.test.tsx @@ -33,6 +33,7 @@ const createProps = () => ({ default: null, description: null, value: '25__table', + form_data: {}, datasource: { id: 25, database: { diff --git a/superset-frontend/src/explore/components/controls/DatasourceControl/index.jsx b/superset-frontend/src/explore/components/controls/DatasourceControl/index.jsx index 35004e43cbf0a..f7cda8b752504 100644 --- a/superset-frontend/src/explore/components/controls/DatasourceControl/index.jsx +++ b/superset-frontend/src/explore/components/controls/DatasourceControl/index.jsx @@ -19,7 +19,7 @@ */ import React from 'react'; import PropTypes from 'prop-types'; -import { t, styled, supersetTheme } from '@superset-ui/core'; +import { t, styled, withTheme } from '@superset-ui/core'; import { getUrlParam } from 'src/utils/urlUtils'; import { AntdDropdown } from 'src/components'; @@ -183,7 +183,7 @@ class DatasourceControl extends React.PureComponent { render() { const { showChangeDatasourceModal, showEditDatasourceModal } = this.state; - const { datasource, onChange } = this.props; + const { datasource, onChange, theme } = this.props; const isMissingDatasource = datasource.id == null; let isMissingParams = false; if (isMissingDatasource) { @@ -235,7 +235,7 @@ class DatasourceControl extends React.PureComponent { )} {healthCheckMessage && ( - + )} {extra?.warning_markdown && ( @@ -325,4 +325,4 @@ class DatasourceControl extends React.PureComponent { DatasourceControl.propTypes = propTypes; DatasourceControl.defaultProps = defaultProps; -export default DatasourceControl; +export default withTheme(DatasourceControl); diff --git a/superset-frontend/src/explore/components/controls/FilterControl/AdhocFilterEditPopoverSimpleTabContent/index.tsx b/superset-frontend/src/explore/components/controls/FilterControl/AdhocFilterEditPopoverSimpleTabContent/index.tsx index 58b1b25081f2a..4c521d8aad451 100644 --- a/superset-frontend/src/explore/components/controls/FilterControl/AdhocFilterEditPopoverSimpleTabContent/index.tsx +++ b/superset-frontend/src/explore/components/controls/FilterControl/AdhocFilterEditPopoverSimpleTabContent/index.tsx @@ -406,11 +406,15 @@ const AdhocFilterEditPopoverSimpleTabContent: React.FC = props => { {...operatorSelectProps} /> {MULTI_OPERATORS.has(operatorId) || suggestions.length > 0 ? ( - + // We need to delay rendering the select because we can't pass a primitive value without options + // We can't pass value = [null] and options=[] + comparatorSelectProps.value && suggestions.length === 0 ? null : ( + + ) ) : ( { it('renders a StyledColumnOption given a column', () => { - const wrapper = shallow( - , - ); - expect(wrapper.find(StyledColumnOption)).toExist(); + render(); + expect(screen.getByText('a_column')).toBeVisible(); }); it('renders a StyledColumnOption given an adhoc metric', () => { - const wrapper = shallow( - , - ); - expect(wrapper.find(StyledColumnOption)).toExist(); + render(); + expect(screen.getByText('SUM(source)')).toBeVisible(); }); it('renders the metric name given a saved metric', () => { - const wrapper = mount( + render( , ); - expect(wrapper.find('.option-label').text()).toBe('my_custom_metric'); + expect(screen.getByText('my_custom_metric')).toBeVisible(); }); }); diff --git a/superset-frontend/src/explore/components/controls/OptionControls/index.tsx b/superset-frontend/src/explore/components/controls/OptionControls/index.tsx index 0e68b5d4d0459..b97d197cdc9a5 100644 --- a/superset-frontend/src/explore/components/controls/OptionControls/index.tsx +++ b/superset-frontend/src/explore/components/controls/OptionControls/index.tsx @@ -56,7 +56,6 @@ export const Label = styled.div` padding-left: ${theme.gridUnit}px; svg { margin-right: ${theme.gridUnit}px; - margin-left: ${theme.gridUnit}px; } .type-label { margin-right: ${theme.gridUnit * 2}px; @@ -306,7 +305,7 @@ export const OptionControlLabel = ({ {isExtra && ( diff --git a/superset-frontend/src/explore/controls.jsx b/superset-frontend/src/explore/controls.jsx index 2abcd9bb8cc84..974a79b9af7d8 100644 --- a/superset-frontend/src/explore/controls.jsx +++ b/superset-frontend/src/explore/controls.jsx @@ -75,7 +75,7 @@ export const PRIMARY_COLOR = { r: 0, g: 122, b: 135, a: 1 }; // input choices & options export const D3_FORMAT_OPTIONS = [ - ['SMART_NUMBER', 'Adaptative formating'], + ['SMART_NUMBER', 'Adaptive formatting'], ['~g', 'Original value'], [',d', ',d (12345.432 => 12,345)'], ['.1s', '.1s (12345.432 => 10k)'], @@ -98,7 +98,7 @@ export const D3_FORMAT_DOCS = 'D3 format syntax: https://github.com/d3/d3-format'; export const D3_TIME_FORMAT_OPTIONS = [ - ['smart_date', 'Adaptative formating'], + ['smart_date', 'Adaptive formatting'], ['%d/%m/%Y', '%d/%m/%Y | 14/01/2019'], ['%m/%d/%Y', '%m/%d/%Y | 01/14/2019'], ['%Y-%m-%d', '%Y-%m-%d | 2019-01-14'], diff --git a/superset-frontend/src/types/Chart.ts b/superset-frontend/src/types/Chart.ts index 866cdedf2479d..cf4a64b6baa66 100644 --- a/superset-frontend/src/types/Chart.ts +++ b/superset-frontend/src/types/Chart.ts @@ -43,6 +43,7 @@ export interface Chart { form_data: { viz_type: string; }; + is_managed_externally: boolean; } export type Slice = { @@ -55,6 +56,7 @@ export type Slice = { certification_details?: string; form_data?: QueryFormData; query_context?: object; + is_managed_externally: boolean; }; export default Chart; diff --git a/superset-frontend/src/views/CRUD/alert/components/AlertStatusIcon.tsx b/superset-frontend/src/views/CRUD/alert/components/AlertStatusIcon.tsx index 048a12f35e5e5..dca3563b63fbe 100644 --- a/superset-frontend/src/views/CRUD/alert/components/AlertStatusIcon.tsx +++ b/superset-frontend/src/views/CRUD/alert/components/AlertStatusIcon.tsx @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -import { t, supersetTheme, useTheme } from '@superset-ui/core'; +import { t, SupersetTheme, useTheme } from '@superset-ui/core'; import React from 'react'; import { Tooltip } from 'src/components/Tooltip'; import Icons from 'src/components/Icons'; @@ -25,7 +25,7 @@ import { AlertState } from '../types'; function getStatusColor( status: string, isReportEnabled: boolean, - theme: typeof supersetTheme, + theme: SupersetTheme, ) { switch (status) { case AlertState.Working: diff --git a/superset-frontend/src/views/CRUD/chart/types.ts b/superset-frontend/src/views/CRUD/chart/types.ts index 209d009fd3b28..e16b42a23f185 100644 --- a/superset-frontend/src/views/CRUD/chart/types.ts +++ b/superset-frontend/src/views/CRUD/chart/types.ts @@ -24,4 +24,5 @@ export type ChartObject = { cache_timeout?: number; datasource_id?: number; datasource_type?: number; + is_managed_externally: boolean; }; diff --git a/superset-frontend/src/views/CRUD/data/database/DatabaseModal/index.tsx b/superset-frontend/src/views/CRUD/data/database/DatabaseModal/index.tsx index 81ae065b23de7..a92d6f6440eda 100644 --- a/superset-frontend/src/views/CRUD/data/database/DatabaseModal/index.tsx +++ b/superset-frontend/src/views/CRUD/data/database/DatabaseModal/index.tsx @@ -348,6 +348,7 @@ function dbReducer( } as DatabaseObject['extra_json']; deserializeExtraJSON = { + ...deserializeExtraJSON, ...JSON.parse(action.payload.extra || ''), metadata_params: JSON.stringify(extra_json?.metadata_params), engine_params: JSON.stringify(extra_json?.engine_params), @@ -816,12 +817,24 @@ const DatabaseModal: FunctionComponent = ({ return []; }; - const renderEditModalFooter = () => ( + const renderEditModalFooter = (db: Partial | null) => ( <> {t('Close')} - + {t('Finish')} @@ -1032,7 +1045,7 @@ const DatabaseModal: FunctionComponent = ({ title={

{isEditMode ? t('Edit database') : t('Connect a database')}

} - footer={isEditMode ? renderEditModalFooter() : renderModalFooter()} + footer={isEditMode ? renderEditModalFooter(db) : renderModalFooter()} > diff --git a/superset-frontend/src/views/CRUD/data/database/types.ts b/superset-frontend/src/views/CRUD/data/database/types.ts index c03891689e90b..f8e1a7806e316 100644 --- a/superset-frontend/src/views/CRUD/data/database/types.ts +++ b/superset-frontend/src/views/CRUD/data/database/types.ts @@ -95,6 +95,9 @@ export type DatabaseObject = { disable_data_preview?: boolean; // in SQL Lab }; + // External management + is_managed_externally: boolean; + // Temporary storage catalog?: Array; query_input?: string; diff --git a/superset-frontend/src/views/CRUD/data/dataset/types.ts b/superset-frontend/src/views/CRUD/data/dataset/types.ts index f8fdc7bdcde73..97d6f5a28048b 100644 --- a/superset-frontend/src/views/CRUD/data/dataset/types.ts +++ b/superset-frontend/src/views/CRUD/data/dataset/types.ts @@ -59,4 +59,5 @@ export type DatasetObject = { columns: ColumnObject[]; metrics: MetricObject[]; extra?: string; + is_managed_externally: boolean; }; diff --git a/superset-frontend/src/views/CRUD/hooks.ts b/superset-frontend/src/views/CRUD/hooks.ts index ae58aef0d9e0f..b0ca13d96a2d6 100644 --- a/superset-frontend/src/views/CRUD/hooks.ts +++ b/superset-frontend/src/views/CRUD/hooks.ts @@ -566,6 +566,7 @@ export const useChartEditModal = ( cache_timeout: chart.cache_timeout, certified_by: chart.certified_by, certification_details: chart.certification_details, + is_managed_externally: chart.is_managed_externally, }); } diff --git a/superset-frontend/tools/eslint-plugin-theme-colors/colors.js b/superset-frontend/tools/eslint-plugin-theme-colors/colors.js new file mode 100644 index 0000000000000..7c4d3a1a5d25c --- /dev/null +++ b/superset-frontend/tools/eslint-plugin-theme-colors/colors.js @@ -0,0 +1,172 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +// https://www.w3.org/wiki/CSS/Properties/color/keywords +module.exports = [ + 'black', + 'silver', + 'gray', + 'grey', + 'white', + 'maroon', + 'red', + 'purple', + 'fuchsia', + 'green', + 'lime', + 'olive', + 'yellow', + 'navy', + 'blue', + 'teal', + 'aqua', + 'aliceblue', + 'antiquewhite', + 'aquamarine', + 'azure', + 'beige', + 'bisque', + 'blanchedalmond', + 'blueviolet', + 'brown', + 'burlywood', + 'cadetblue', + 'chartreuse', + 'chocolate', + 'coral', + 'cornflowerblue', + 'cornsilk', + 'crimson', + 'cyan', + 'darkblue', + 'darkcyan', + 'darkgoldenrod', + 'darkgray', + 'darkgreen', + 'darkgrey', + 'darkkhaki', + 'darkmagenta', + 'darkolivegreen', + 'darkorange', + 'darkorchid', + 'darkred', + 'darksalmon', + 'darkseagreen', + 'darkslateblue', + 'darkslategray', + 'darkslategrey', + 'darkturquoise', + 'darkviolet', + 'deeppink', + 'deepskyblue', + 'dimgray', + 'dimgrey', + 'dodgerblue', + 'firebrick', + 'floralwhite', + 'forestgreen', + 'fuchsia', + 'gainsboro', + 'ghostwhite', + 'gold', + 'goldenrod', + 'greenyellow', + 'honeydew', + 'hotpink', + 'indianred', + 'indigo', + 'ivory', + 'khaki', + 'lavender', + 'lavenderblush', + 'lawngreen', + 'lemonchiffon', + 'lightblue', + 'lightcoral', + 'lightcyan', + 'lightgoldenrodyellow', + 'lightgray', + 'lightgreen', + 'lightgrey', + 'lightpink', + 'lightsalmon', + 'lightseagreen', + 'lightskyblue', + 'lightslategray', + 'lightslategrey', + 'lightsteelblue', + 'lightyellow', + 'limegreen', + 'linen', + 'magenta', + 'maroon', + 'mediumaquamarine', + 'mediumblue', + 'mediumorchid', + 'mediumpurple', + 'mediumseagreen', + 'mediumslateblue', + 'mediumspringgreen', + 'mediumturquoise', + 'mediumvioletred', + 'midnightblue', + 'mintcream', + 'mistyrose', + 'moccasin', + 'navajowhite', + 'oldlace', + 'olivedrab', + 'orange', + 'orangered', + 'orchid', + 'palegoldenrod', + 'palegreen', + 'paleturquoise', + 'palevioletred', + 'papayawhip', + 'peachpuff', + 'peru', + 'pink', + 'plum', + 'powderblue', + 'rosybrown', + 'royalblue', + 'saddlebrown', + 'salmon', + 'sandybrown', + 'seagreen', + 'seashell', + 'sienna', + 'skyblue', + 'slateblue', + 'slategray', + 'slategrey', + 'snow', + 'springgreen', + 'steelblue', + 'tan', + 'teal', + 'thistle', + 'tomato', + 'turquoise', + 'violet', + 'wheat', + 'whitesmoke', + 'yellowgreen', +]; diff --git a/superset-frontend/tools/eslint-plugin-theme-colors/index.js b/superset-frontend/tools/eslint-plugin-theme-colors/index.js new file mode 100644 index 0000000000000..ce0d492a1ce5f --- /dev/null +++ b/superset-frontend/tools/eslint-plugin-theme-colors/index.js @@ -0,0 +1,114 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +/** + * @fileoverview Rule to warn about literal colors + * @author Apache + */ + +const COLOR_KEYWORDS = require('./colors'); + +function hasHexColor(quasi) { + if (typeof quasi === 'string') { + const regex = /#([a-f0-9]{3}|[a-f0-9]{4}(?:[a-f0-9]{2}){0,2})\b/gi; + return !!quasi.match(regex); + } + return false; +} + +function hasRgbColor(quasi) { + if (typeof quasi === 'string') { + const regex = /rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*(\d+(?:\.\d+)?))?\)/i; + return !!quasi.match(regex); + } + return false; +} + +function hasLiteralColor(quasi, strict = false) { + if (typeof quasi === 'string') { + // matches literal colors at the start or end of a CSS prop + return COLOR_KEYWORDS.some(color => { + const regexColon = new RegExp(`: ${color}`); + const regexSemicolon = new RegExp(` ${color};`); + return ( + !!quasi.match(regexColon) || + !!quasi.match(regexSemicolon) || + (strict && quasi === color) + ); + }); + } + return false; +} + +const WARNING_MESSAGE = + 'Theme color variables are preferred over rgb(a)/hex/literal colors'; + +//------------------------------------------------------------------------------ +// Rule Definition +//------------------------------------------------------------------------------ + +/** @type {import('eslint').Rule.RuleModule} */ +module.exports = { + rules: { + 'no-literal-colors': { + create(context) { + const warned = []; + return { + TemplateElement(node) { + const rawValue = node?.value?.raw; + const isParentProperty = + node?.parent?.parent?.type === 'TaggedTemplateExpression'; + const loc = node?.parent?.parent?.loc; + const locId = loc && JSON.stringify(loc); + const hasWarned = warned.includes(locId); + if ( + !hasWarned && + isParentProperty && + rawValue && + (hasLiteralColor(rawValue) || + hasHexColor(rawValue) || + hasRgbColor(rawValue)) + ) { + context.report(node, loc, WARNING_MESSAGE); + warned.push(locId); + } + }, + Literal(node) { + const value = node?.value; + const isParentProperty = node?.parent?.type === 'Property'; + const locId = JSON.stringify(node.loc); + const hasWarned = warned.includes(locId); + + if ( + !hasWarned && + isParentProperty && + value && + (hasLiteralColor(value, true) || + hasHexColor(value) || + hasRgbColor(value)) + ) { + context.report(node, node.loc, WARNING_MESSAGE); + warned.push(locId); + } + }, + }; + }, + }, + }, +}; diff --git a/superset-frontend/tools/eslint-plugin-theme-colors/package.json b/superset-frontend/tools/eslint-plugin-theme-colors/package.json new file mode 100644 index 0000000000000..6832811e8a386 --- /dev/null +++ b/superset-frontend/tools/eslint-plugin-theme-colors/package.json @@ -0,0 +1,17 @@ +{ + "name": "eslint-plugin-theme-colors", + "version": "1.0.0", + "description": "Warns about rgb(a)/hex/literal colors", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [], + "license": "Apache-2.0", + "author": "Apache", + "dependencies": {}, + "engines": { + "node": "^16.9.1", + "npm": "^7.5.4" + } +} diff --git a/superset-frontend/tsconfig.json b/superset-frontend/tsconfig.json index a040843986bae..818147ca7cc87 100644 --- a/superset-frontend/tsconfig.json +++ b/superset-frontend/tsconfig.json @@ -72,6 +72,7 @@ "./packages/*/types/**/*", "./plugins/*/src/**/*", "./plugins/*/types/**/*", - "./packages/*/test/**/*" + "./packages/*/test/**/*", + "./plugins/*/test/**/*" ] } diff --git a/superset-frontend/webpack.config.js b/superset-frontend/webpack.config.js index 6b3c4e30a8b13..c2c818dbeadd0 100644 --- a/superset-frontend/webpack.config.js +++ b/superset-frontend/webpack.config.js @@ -414,6 +414,7 @@ const config = { svgoConfig: { plugins: { removeViewBox: false, + icon: true, }, }, }, diff --git a/superset/annotation_layers/annotations/commands/update.py b/superset/annotation_layers/annotations/commands/update.py index ccf11b6536582..9e3012acb69bf 100644 --- a/superset/annotation_layers/annotations/commands/update.py +++ b/superset/annotation_layers/annotations/commands/update.py @@ -73,7 +73,9 @@ def validate(self) -> None: # Validate short descr uniqueness on this layer if not AnnotationDAO.validate_update_uniqueness( - layer_id, short_descr, annotation_id=self._model_id, + layer_id, + short_descr, + annotation_id=self._model_id, ): exceptions.append(AnnotationUniquenessValidationError()) else: diff --git a/superset/annotation_layers/annotations/schemas.py b/superset/annotation_layers/annotations/schemas.py index fd03b14f51b4f..5e0bac56f73e0 100644 --- a/superset/annotation_layers/annotations/schemas.py +++ b/superset/annotation_layers/annotations/schemas.py @@ -64,13 +64,17 @@ class AnnotationPostSchema(Schema): ) long_descr = fields.String(description=annotation_long_descr, allow_none=True) start_dttm = fields.DateTime( - description=annotation_start_dttm, required=True, allow_none=False, + description=annotation_start_dttm, + required=True, + allow_none=False, ) end_dttm = fields.DateTime( description=annotation_end_dttm, required=True, allow_none=False ) json_metadata = fields.String( - description=annotation_json_metadata, validate=validate_json, allow_none=True, + description=annotation_json_metadata, + validate=validate_json, + allow_none=True, ) diff --git a/superset/cachekeys/api.py b/superset/cachekeys/api.py index ff19f3a0fe834..6eb0d54d9eef0 100644 --- a/superset/cachekeys/api.py +++ b/superset/cachekeys/api.py @@ -110,8 +110,10 @@ def invalidate(self) -> Response: ) try: - delete_stmt = CacheKey.__table__.delete().where( # pylint: disable=no-member - CacheKey.cache_key.in_(cache_keys) + delete_stmt = ( + CacheKey.__table__.delete().where( # pylint: disable=no-member + CacheKey.cache_key.in_(cache_keys) + ) ) db.session.execute(delete_stmt) db.session.commit() diff --git a/superset/cachekeys/schemas.py b/superset/cachekeys/schemas.py index a97aebdf2c66d..a44a7c545add4 100644 --- a/superset/cachekeys/schemas.py +++ b/superset/cachekeys/schemas.py @@ -25,9 +25,15 @@ class Datasource(Schema): - database_name = fields.String(description="Datasource name",) - datasource_name = fields.String(description=datasource_name_description,) - schema = fields.String(description="Datasource schema",) + database_name = fields.String( + description="Datasource name", + ) + datasource_name = fields.String( + description=datasource_name_description, + ) + schema = fields.String( + description="Datasource schema", + ) datasource_type = fields.String( description=datasource_type_description, validate=validate.OneOf(choices=("druid", "table", "view")), @@ -37,7 +43,8 @@ class Datasource(Schema): class CacheInvalidationRequestSchema(Schema): datasource_uids = fields.List( - fields.String(), description=datasource_uid_description, + fields.String(), + description=datasource_uid_description, ) datasources = fields.List( fields.Nested(Datasource), diff --git a/superset/charts/api.py b/superset/charts/api.py index df36a203ea0b6..260ae4442c75c 100644 --- a/superset/charts/api.py +++ b/superset/charts/api.py @@ -125,9 +125,11 @@ def ensure_thumbnails_enabled(self) -> Optional[Response]: "slice_name", "viz_type", "query_context", + "is_managed_externally", ] show_select_columns = show_columns + ["table.id"] list_columns = [ + "is_managed_externally", "certified_by", "certification_details", "cache_timeout", diff --git a/superset/charts/schemas.py b/superset/charts/schemas.py index 27ea165919d5b..2a967eda27f9d 100644 --- a/superset/charts/schemas.py +++ b/superset/charts/schemas.py @@ -209,6 +209,8 @@ class ChartPostSchema(Schema): certification_details = fields.String( description=certification_details_description, allow_none=True ) + is_managed_externally = fields.Boolean(allow_none=True, default=False) + external_url = fields.String(allow_none=True) class ChartPutSchema(Schema): @@ -250,6 +252,8 @@ class ChartPutSchema(Schema): certification_details = fields.String( description=certification_details_description, allow_none=True ) + is_managed_externally = fields.Boolean(allow_none=True, default=False) + external_url = fields.String(allow_none=True) class ChartGetDatasourceObjectDataResponseSchema(Schema): @@ -275,7 +279,8 @@ class ChartCacheScreenshotResponseSchema(Schema): class ChartDataColumnSchema(Schema): column_name = fields.String( - description="The name of the target column", example="mycol", + description="The name of the target column", + example="mycol", ) type = fields.String(description="Type of target column", example="BIGINT") @@ -321,7 +326,8 @@ class ChartDataAdhocMetricSchema(Schema): example="metric_aec60732-fac0-4b17-b736-93f1a5c93e30", ) timeGrain = fields.String( - description="Optional time grain for temporal filters", example="PT1M", + description="Optional time grain for temporal filters", + example="PT1M", ) isExtra = fields.Boolean( description="Indicates if the filter has been added by a filter component as " @@ -366,7 +372,8 @@ class ChartDataAggregateOptionsSchema(ChartDataPostProcessingOperationOptionsSch groupby = ( fields.List( fields.String( - allow_none=False, description="Columns by which to group by", + allow_none=False, + description="Columns by which to group by", ), minLength=1, required=True, @@ -421,7 +428,9 @@ class ChartDataRollingOptionsSchema(ChartDataPostProcessingOperationOptionsSchem example="percentile", ) window = fields.Integer( - description="Size of the rolling window in days.", required=True, example=7, + description="Size of the rolling window in days.", + required=True, + example=7, ) rolling_type_options = fields.Dict( desctiption="Optional options to pass to rolling method. Needed for " @@ -588,7 +597,9 @@ class ChartDataBoxplotOptionsSchema(ChartDataPostProcessingOperationOptionsSchem """ groupby = fields.List( - fields.String(description="Columns by which to group the query.",), + fields.String( + description="Columns by which to group the query.", + ), allow_none=True, ) @@ -695,13 +706,16 @@ class ChartDataGeohashDecodeOptionsSchema( """ geohash = fields.String( - description="Name of source column containing geohash string", required=True, + description="Name of source column containing geohash string", + required=True, ) latitude = fields.String( - description="Name of target column for decoded latitude", required=True, + description="Name of target column for decoded latitude", + required=True, ) longitude = fields.String( - description="Name of target column for decoded longitude", required=True, + description="Name of target column for decoded longitude", + required=True, ) @@ -713,13 +727,16 @@ class ChartDataGeohashEncodeOptionsSchema( """ latitude = fields.String( - description="Name of source latitude column", required=True, + description="Name of source latitude column", + required=True, ) longitude = fields.String( - description="Name of source longitude column", required=True, + description="Name of source longitude column", + required=True, ) geohash = fields.String( - description="Name of target column for encoded geohash string", required=True, + description="Name of target column for encoded geohash string", + required=True, ) @@ -735,10 +752,12 @@ class ChartDataGeodeticParseOptionsSchema( required=True, ) latitude = fields.String( - description="Name of target column for decoded latitude", required=True, + description="Name of target column for decoded latitude", + required=True, ) longitude = fields.String( - description="Name of target column for decoded longitude", required=True, + description="Name of target column for decoded longitude", + required=True, ) altitude = fields.String( description="Name of target column for decoded altitude. If omitted, " @@ -785,7 +804,10 @@ class ChartDataPostProcessingOperationSchema(Schema): "column": "age", "options": {"q": 0.25}, }, - "age_mean": {"operator": "mean", "column": "age",}, + "age_mean": { + "operator": "mean", + "column": "age", + }, }, }, ) @@ -812,7 +834,8 @@ class ChartDataFilterSchema(Schema): example=["China", "France", "Japan"], ) grain = fields.String( - description="Optional time grain for temporal filters", example="PT1M", + description="Optional time grain for temporal filters", + example="PT1M", ) isExtra = fields.Boolean( description="Indicates if the filter has been added by a filter component as " @@ -869,7 +892,10 @@ class AnnotationLayerSchema(Schema): description="Type of annotation layer", validate=validate.OneOf(choices=[ann.value for ann in AnnotationType]), ) - color = fields.String(description="Layer color", allow_none=True,) + color = fields.String( + description="Layer color", + allow_none=True, + ) descriptionColumns = fields.List( fields.String(), description="Columns to use as the description. If none are provided, " @@ -907,7 +933,8 @@ class AnnotationLayerSchema(Schema): ) show = fields.Boolean(description="Should the layer be shown", required=True) showLabel = fields.Boolean( - description="Should the label always be shown", allow_none=True, + description="Should the label always be shown", + allow_none=True, ) showMarkers = fields.Boolean( description="Should markers be shown. Only applies to line annotations.", @@ -915,16 +942,34 @@ class AnnotationLayerSchema(Schema): ) sourceType = fields.String( description="Type of source for annotation data", - validate=validate.OneOf(choices=("", "line", "NATIVE", "table",)), + validate=validate.OneOf( + choices=( + "", + "line", + "NATIVE", + "table", + ) + ), ) style = fields.String( description="Line style. Only applies to time-series annotations", - validate=validate.OneOf(choices=("dashed", "dotted", "solid", "longDashed",)), + validate=validate.OneOf( + choices=( + "dashed", + "dotted", + "solid", + "longDashed", + ) + ), ) timeColumn = fields.String( - description="Column with event date or interval start date", allow_none=True, + description="Column with event date or interval start date", + allow_none=True, + ) + titleColumn = fields.String( + description="Column with title", + allow_none=True, ) - titleColumn = fields.String(description="Column with title", allow_none=True,) width = fields.Float( description="Width of annotation line", validate=[ @@ -944,7 +989,10 @@ class AnnotationLayerSchema(Schema): class ChartDataDatasourceSchema(Schema): description = "Chart datasource" - id = fields.Integer(description="Datasource id", required=True,) + id = fields.Integer( + description="Datasource id", + required=True, + ) type = fields.String( description="Datasource type", validate=validate.OneOf(choices=("druid", "table")), @@ -1035,7 +1083,8 @@ class Meta: # pylint: disable=too-few-public-methods allow_none=True, ) is_timeseries = fields.Boolean( - description="Is the `query_object` a timeseries.", allow_none=True, + description="Is the `query_object` a timeseries.", + allow_none=True, ) series_columns = fields.List( fields.Raw(), @@ -1080,7 +1129,8 @@ class Meta: # pylint: disable=too-few-public-methods ], ) order_desc = fields.Boolean( - description="Reverse order. Default: `false`", allow_none=True, + description="Reverse order. Default: `false`", + allow_none=True, ) extras = fields.Nested( ChartDataExtrasSchema, @@ -1147,7 +1197,10 @@ class Meta: # pylint: disable=too-few-public-methods description="Should the rowcount of the actual query be returned", allow_none=True, ) - time_offsets = fields.List(fields.String(), allow_none=True,) + time_offsets = fields.List( + fields.String(), + allow_none=True, + ) class ChartDataQueryContextSchema(Schema): @@ -1186,7 +1239,9 @@ class AnnotationDataSchema(Schema): required=True, ) records = fields.List( - fields.Dict(keys=fields.String(),), + fields.Dict( + keys=fields.String(), + ), description="records mapping the column name to it's value", required=True, ) @@ -1202,10 +1257,14 @@ class ChartDataResponseResult(Schema): allow_none=True, ) cache_key = fields.String( - description="Unique cache key for query object", required=True, allow_none=True, + description="Unique cache key for query object", + required=True, + allow_none=True, ) cached_dttm = fields.String( - description="Cache timestamp", required=True, allow_none=True, + description="Cache timestamp", + required=True, + allow_none=True, ) cache_timeout = fields.Integer( description="Cache timeout in following order: custom timeout, datasource " @@ -1213,12 +1272,19 @@ class ChartDataResponseResult(Schema): required=True, allow_none=True, ) - error = fields.String(description="Error", allow_none=True,) + error = fields.String( + description="Error", + allow_none=True, + ) is_cached = fields.Boolean( - description="Is the result cached", required=True, allow_none=None, + description="Is the result cached", + required=True, + allow_none=None, ) query = fields.String( - description="The executed query statement", required=True, allow_none=False, + description="The executed query statement", + required=True, + allow_none=False, ) status = fields.String( description="Status of the query", @@ -1236,10 +1302,12 @@ class ChartDataResponseResult(Schema): allow_none=False, ) stacktrace = fields.String( - desciption="Stacktrace if there was an error", allow_none=True, + desciption="Stacktrace if there was an error", + allow_none=True, ) rowcount = fields.Integer( - description="Amount of rows in result set", allow_none=False, + description="Amount of rows in result set", + allow_none=False, ) data = fields.List(fields.Dict(), description="A list with results") colnames = fields.List(fields.String(), description="A list of column names") @@ -1269,13 +1337,24 @@ class ChartDataResponseSchema(Schema): class ChartDataAsyncResponseSchema(Schema): channel_id = fields.String( - description="Unique session async channel ID", allow_none=False, + description="Unique session async channel ID", + allow_none=False, + ) + job_id = fields.String( + description="Unique async job ID", + allow_none=False, + ) + user_id = fields.String( + description="Requesting user ID", + allow_none=True, + ) + status = fields.String( + description="Status value for async job", + allow_none=False, ) - job_id = fields.String(description="Unique async job ID", allow_none=False,) - user_id = fields.String(description="Requesting user ID", allow_none=True,) - status = fields.String(description="Status value for async job", allow_none=False,) result_url = fields.String( - description="Unique result URL for fetching async query data", allow_none=False, + description="Unique result URL for fetching async query data", + allow_none=False, ) @@ -1300,6 +1379,8 @@ class ImportV1ChartSchema(Schema): uuid = fields.UUID(required=True) version = fields.String(required=True) dataset_uuid = fields.UUID(required=True) + is_managed_externally = fields.Boolean(allow_none=True, default=False) + external_url = fields.String(allow_none=True) CHART_SCHEMAS = ( diff --git a/superset/cli/examples.py b/superset/cli/examples.py index 97394633ba047..26ed9451f0765 100755 --- a/superset/cli/examples.py +++ b/superset/cli/examples.py @@ -93,10 +93,16 @@ def load_examples_run( @click.option("--load-test-data", "-t", is_flag=True, help="Load additional test data") @click.option("--load-big-data", "-b", is_flag=True, help="Load additional big data") @click.option( - "--only-metadata", "-m", is_flag=True, help="Only load metadata, skip actual data", + "--only-metadata", + "-m", + is_flag=True, + help="Only load metadata, skip actual data", ) @click.option( - "--force", "-f", is_flag=True, help="Force load data even if table already exists", + "--force", + "-f", + is_flag=True, + help="Force load data even if table already exists", ) def load_examples( load_test_data: bool, diff --git a/superset/cli/importexport.py b/superset/cli/importexport.py index 8ca86939f2065..d6bbeb67fe287 100755 --- a/superset/cli/importexport.py +++ b/superset/cli/importexport.py @@ -36,10 +36,16 @@ @click.command() @click.argument("directory") @click.option( - "--overwrite", "-o", is_flag=True, help="Overwriting existing metadata definitions", + "--overwrite", + "-o", + is_flag=True, + help="Overwriting existing metadata definitions", ) @click.option( - "--force", "-f", is_flag=True, help="Force load data even if table already exists", + "--force", + "-f", + is_flag=True, + help="Force load data even if table already exists", ) def import_directory(directory: str, overwrite: bool, force: bool) -> None: """Imports configs from a given directory""" @@ -47,7 +53,9 @@ def import_directory(directory: str, overwrite: bool, force: bool) -> None: from superset.examples.utils import load_configs_from_directory load_configs_from_directory( - root=Path(directory), overwrite=overwrite, force_data=force, + root=Path(directory), + overwrite=overwrite, + force_data=force, ) @@ -56,7 +64,9 @@ def import_directory(directory: str, overwrite: bool, force: bool) -> None: @click.command() @with_appcontext @click.option( - "--dashboard-file", "-f", help="Specify the the file to export to", + "--dashboard-file", + "-f", + help="Specify the the file to export to", ) def export_dashboards(dashboard_file: Optional[str] = None) -> None: """Export dashboards to ZIP file""" @@ -64,7 +74,9 @@ def export_dashboards(dashboard_file: Optional[str] = None) -> None: from superset.dashboards.commands.export import ExportDashboardsCommand from superset.models.dashboard import Dashboard - g.user = security_manager.find_user(username="admin") + g.user = security_manager.find_user( # pylint: disable=assigning-non-slot + username="admin" + ) dashboard_ids = [id_ for (id_,) in db.session.query(Dashboard.id).all()] timestamp = datetime.now().strftime("%Y%m%dT%H%M%S") @@ -88,7 +100,9 @@ def export_dashboards(dashboard_file: Optional[str] = None) -> None: @click.command() @with_appcontext @click.option( - "--datasource-file", "-f", help="Specify the the file to export to", + "--datasource-file", + "-f", + help="Specify the the file to export to", ) def export_datasources(datasource_file: Optional[str] = None) -> None: """Export datasources to ZIP file""" @@ -96,7 +110,9 @@ def export_datasources(datasource_file: Optional[str] = None) -> None: from superset.connectors.sqla.models import SqlaTable from superset.datasets.commands.export import ExportDatasetsCommand - g.user = security_manager.find_user(username="admin") + g.user = security_manager.find_user( # pylint: disable=assigning-non-slot + username="admin" + ) dataset_ids = [id_ for (id_,) in db.session.query(SqlaTable.id).all()] timestamp = datetime.now().strftime("%Y%m%dT%H%M%S") @@ -118,7 +134,9 @@ def export_datasources(datasource_file: Optional[str] = None) -> None: @click.command() @with_appcontext @click.option( - "--path", "-p", help="Path to a single ZIP file", + "--path", + "-p", + help="Path to a single ZIP file", ) @click.option( "--username", @@ -135,7 +153,9 @@ def import_dashboards(path: str, username: Optional[str]) -> None: ) if username is not None: - g.user = security_manager.find_user(username=username) + g.user = security_manager.find_user( # pylint: disable=assigning-non-slot + username=username + ) if is_zipfile(path): with ZipFile(path) as bundle: contents = get_contents_from_bundle(bundle) @@ -154,7 +174,9 @@ def import_dashboards(path: str, username: Optional[str]) -> None: @click.command() @with_appcontext @click.option( - "--path", "-p", help="Path to a single ZIP file", + "--path", + "-p", + help="Path to a single ZIP file", ) def import_datasources(path: str) -> None: """Import datasources from ZIP file""" @@ -179,7 +201,6 @@ def import_datasources(path: str) -> None: ) sys.exit(1) - else: @click.command() @@ -299,7 +320,9 @@ def import_dashboards(path: str, recursive: bool, username: str) -> None: elif path_object.exists() and recursive: files.extend(path_object.rglob("*.json")) if username is not None: - g.user = security_manager.find_user(username=username) + g.user = security_manager.find_user( # pylint: disable=assigning-non-slot + username=username + ) contents = {} for path_ in files: with open(path_) as file: diff --git a/superset/cli/main.py b/superset/cli/main.py index a1a03e9de26d0..aaad7be42e864 100755 --- a/superset/cli/main.py +++ b/superset/cli/main.py @@ -32,7 +32,8 @@ @click.group( - cls=FlaskGroup, context_settings={"token_normalize_func": normalize_token}, + cls=FlaskGroup, + context_settings={"token_normalize_func": normalize_token}, ) @with_appcontext def superset() -> None: diff --git a/superset/cli/test.py b/superset/cli/test.py index df0142b654094..db065287b008b 100755 --- a/superset/cli/test.py +++ b/superset/cli/test.py @@ -15,7 +15,6 @@ # specific language governing permissions and limitations # under the License. import logging -from datetime import datetime, timedelta import click from colorama import Fore @@ -23,7 +22,6 @@ import superset.utils.database as database_utils from superset import app, security_manager -from superset.utils.celery import session_scope logger = logging.getLogger(__name__) @@ -88,23 +86,3 @@ def load_test_users_run() -> None: password="general", ) sm.get_session.commit() - - -@click.command() -@with_appcontext -def alert() -> None: - """Run the alert scheduler loop""" - # this command is just for testing purposes - # pylint: disable=import-outside-toplevel - from superset.models.schedules import ScheduleType - from superset.tasks.schedules import schedule_window - - click.secho("Processing one alert loop", fg="green") - with session_scope(nullpool=True) as session: - schedule_window( - report_type=ScheduleType.alert, - start_at=datetime.now() - timedelta(1000), - stop_at=datetime.now(), - resolution=6000, - session=session, - ) diff --git a/superset/cli/thumbnails.py b/superset/cli/thumbnails.py index 5615d947bf30f..5556cff92f620 100755 --- a/superset/cli/thumbnails.py +++ b/superset/cli/thumbnails.py @@ -44,7 +44,11 @@ help="Only process dashboards", ) @click.option( - "--charts_only", "-c", is_flag=True, default=False, help="Only process charts", + "--charts_only", + "-c", + is_flag=True, + default=False, + help="Only process charts", ) @click.option( "--force", diff --git a/superset/cli/update.py b/superset/cli/update.py index c3a7a2d5a8a24..f7b4edd1269b8 100755 --- a/superset/cli/update.py +++ b/superset/cli/update.py @@ -128,7 +128,7 @@ def update_api_docs() -> None: """Regenerate the openapi.json file in docs""" superset_dir = os.path.abspath(os.path.dirname(__file__)) openapi_json = os.path.join( - superset_dir, "..", "docs", "src", "resources", "openapi.json" + superset_dir, "..", "..", "docs", "static", "resources", "openapi.json" ) api_version = "v1" @@ -149,6 +149,7 @@ def update_api_docs() -> None: click.secho("Generating openapi.json", fg="green") with open(openapi_json, "w") as outfile: json.dump(api_spec.to_dict(), outfile, sort_keys=True, indent=2) + outfile.write("\n") else: click.secho("API version not found", err=True) diff --git a/superset/columns/models.py b/superset/columns/models.py index 039f73ff57579..fbe045e3d3925 100644 --- a/superset/columns/models.py +++ b/superset/columns/models.py @@ -35,7 +35,10 @@ class Column( - Model, AuditMixinNullable, ExtraJSONMixin, ImportExportMixin, + Model, + AuditMixinNullable, + ExtraJSONMixin, + ImportExportMixin, ): """ A "column". diff --git a/superset/commands/base.py b/superset/commands/base.py index 2592a03fa77e2..552b95feb2e1e 100644 --- a/superset/commands/base.py +++ b/superset/commands/base.py @@ -24,7 +24,7 @@ class BaseCommand(ABC): """ - Base class for all Command like Superset Logic objects + Base class for all Command like Superset Logic objects """ @abstractmethod diff --git a/superset/commands/exceptions.py b/superset/commands/exceptions.py index 8b4b717f31d72..2a60318b46e05 100644 --- a/superset/commands/exceptions.py +++ b/superset/commands/exceptions.py @@ -23,7 +23,7 @@ class CommandException(SupersetException): - """ Common base class for Command exceptions. """ + """Common base class for Command exceptions.""" def __repr__(self) -> str: if self._exception: @@ -52,7 +52,7 @@ def __init__( class CommandInvalidError(CommandException): - """ Common base class for Command Invalid errors. """ + """Common base class for Command Invalid errors.""" status = 422 diff --git a/superset/commands/importers/v1/utils.py b/superset/commands/importers/v1/utils.py index de86e3f3cc6ab..3999669356ae9 100644 --- a/superset/commands/importers/v1/utils.py +++ b/superset/commands/importers/v1/utils.py @@ -79,7 +79,9 @@ def load_metadata(contents: Dict[str, str]) -> Dict[str, str]: def validate_metadata_type( - metadata: Optional[Dict[str, str]], type_: str, exceptions: List[ValidationError], + metadata: Optional[Dict[str, str]], + type_: str, + exceptions: List[ValidationError], ) -> None: """Validate that the type declared in METADATA_FILE_NAME is correct""" if metadata and "type" in metadata: diff --git a/superset/commands/utils.py b/superset/commands/utils.py index c68dde3d5a758..f7564b3de7689 100644 --- a/superset/commands/utils.py +++ b/superset/commands/utils.py @@ -34,7 +34,9 @@ def populate_owners( - user: User, owner_ids: Optional[List[int]], default_to_user: bool, + user: User, + owner_ids: Optional[List[int]], + default_to_user: bool, ) -> List[User]: """ Helper function for commands, will fetch all users from owners id's diff --git a/superset/common/query_actions.py b/superset/common/query_actions.py index 6664db9fe5c1a..2b85125b0e98a 100644 --- a/superset/common/query_actions.py +++ b/superset/common/query_actions.py @@ -79,7 +79,9 @@ def _get_timegrains( def _get_query( - query_context: "QueryContext", query_obj: "QueryObject", _: bool, + query_context: "QueryContext", + query_obj: "QueryObject", + _: bool, ) -> Dict[str, Any]: datasource = _get_datasource(query_context, query_obj) result = {"language": datasource.query_language} diff --git a/superset/common/query_context.py b/superset/common/query_context.py index bc906a92c7321..4a91c6ad6db17 100644 --- a/superset/common/query_context.py +++ b/superset/common/query_context.py @@ -69,7 +69,7 @@ def __init__( result_format: ChartDataResultFormat, force: bool = False, custom_cache_timeout: Optional[int] = None, - cache_values: Dict[str, Any] + cache_values: Dict[str, Any], ) -> None: self.datasource = datasource self.result_type = result_type @@ -81,11 +81,16 @@ def __init__( self.cache_values = cache_values self._processor = QueryContextProcessor(self) - def get_data(self, df: pd.DataFrame,) -> Union[str, List[Dict[str, Any]]]: + def get_data( + self, + df: pd.DataFrame, + ) -> Union[str, List[Dict[str, Any]]]: return self._processor.get_data(df) def get_payload( - self, cache_query_context: Optional[bool] = False, force_cached: bool = False, + self, + cache_query_context: Optional[bool] = False, + force_cached: bool = False, ) -> Dict[str, Any]: """Returns the query results with both metadata and data""" return self._processor.get_payload(cache_query_context, force_cached) @@ -103,7 +108,9 @@ def query_cache_key(self, query_obj: QueryObject, **kwargs: Any) -> Optional[str return self._processor.query_cache_key(query_obj, **kwargs) def get_df_payload( - self, query_obj: QueryObject, force_cached: Optional[bool] = False, + self, + query_obj: QueryObject, + force_cached: Optional[bool] = False, ) -> Dict[str, Any]: return self._processor.get_df_payload(query_obj, force_cached) @@ -111,7 +118,9 @@ def get_query_result(self, query_object: QueryObject) -> QueryResult: return self._processor.get_query_result(query_object) def processing_time_offsets( - self, df: pd.DataFrame, query_object: QueryObject, + self, + df: pd.DataFrame, + query_object: QueryObject, ) -> CachedTimeOffset: return self._processor.processing_time_offsets(df, query_object) diff --git a/superset/common/query_context_factory.py b/superset/common/query_context_factory.py index 50eb6b02f3bea..cb40b9540818c 100644 --- a/superset/common/query_context_factory.py +++ b/superset/common/query_context_factory.py @@ -50,7 +50,7 @@ def create( result_type: Optional[ChartDataResultType] = None, result_format: Optional[ChartDataResultFormat] = None, force: bool = False, - custom_cache_timeout: Optional[int] = None + custom_cache_timeout: Optional[int] = None, ) -> QueryContext: datasource_model_instance = None if datasource: diff --git a/superset/common/query_context_processor.py b/superset/common/query_context_processor.py index 7954f86cdba0c..202088c853ed7 100644 --- a/superset/common/query_context_processor.py +++ b/superset/common/query_context_processor.py @@ -99,7 +99,10 @@ def get_df_payload( """Handles caching around the df payload retrieval""" cache_key = self.query_cache_key(query_obj) cache = QueryCacheManager.get( - cache_key, CacheRegion.DATA, self._query_context.force, force_cached, + cache_key, + CacheRegion.DATA, + self._query_context.force, + force_cached, ) if query_obj and cache_key and not cache.is_loaded: @@ -235,7 +238,9 @@ def normalize_df(self, df: pd.DataFrame, query_object: QueryObject) -> pd.DataFr return df def processing_time_offsets( # pylint: disable=too-many-locals - self, df: pd.DataFrame, query_object: QueryObject, + self, + df: pd.DataFrame, + query_object: QueryObject, ) -> CachedTimeOffset: query_context = self._query_context # ensure query_object is immutable @@ -250,7 +255,8 @@ def processing_time_offsets( # pylint: disable=too-many-locals for offset in time_offsets: try: query_object_clone.from_dttm = get_past_or_future( - offset, outer_from_dttm, + offset, + outer_from_dttm, ) query_object_clone.to_dttm = get_past_or_future(offset, outer_to_dttm) except ValueError as ex: @@ -322,7 +328,9 @@ def processing_time_offsets( # pylint: disable=too-many-locals # df left join `offset_metrics_df` offset_df = df_utils.left_join_df( - left_df=df, right_df=offset_metrics_df, join_keys=join_keys, + left_df=df, + right_df=offset_metrics_df, + join_keys=join_keys, ) offset_slice = offset_df[metrics_mapping.values()] @@ -358,7 +366,9 @@ def get_data(self, df: pd.DataFrame) -> Union[str, List[Dict[str, Any]]]: return df.to_dict(orient="records") def get_payload( - self, cache_query_context: Optional[bool] = False, force_cached: bool = False, + self, + cache_query_context: Optional[bool] = False, + force_cached: bool = False, ) -> Dict[str, Any]: """Returns the query results with both metadata and data""" diff --git a/superset/common/query_object.py b/superset/common/query_object.py index b2e6fe1bb330d..78a76fc3cdee7 100644 --- a/superset/common/query_object.py +++ b/superset/common/query_object.py @@ -341,7 +341,11 @@ def to_dict(self) -> Dict[str, Any]: def __repr__(self) -> str: # we use `print` or `logging` output QueryObject - return json.dumps(self.to_dict(), sort_keys=True, default=str,) + return json.dumps( + self.to_dict(), + sort_keys=True, + default=str, + ) def cache_key(self, **extra: Any) -> str: """ diff --git a/superset/common/query_object_factory.py b/superset/common/query_object_factory.py index 2d051e36c729e..64ae99deebabc 100644 --- a/superset/common/query_object_factory.py +++ b/superset/common/query_object_factory.py @@ -80,7 +80,8 @@ def _convert_to_model(self, datasource: DatasourceDict) -> BaseDatasource: ) def _process_extras( # pylint: disable=no-self-use - self, extras: Optional[Dict[str, Any]], + self, + extras: Optional[Dict[str, Any]], ) -> Dict[str, Any]: extras = extras or {} return extras diff --git a/superset/common/utils/dataframe_utils.py b/superset/common/utils/dataframe_utils.py index 55d03e6343410..a0216ad54e839 100644 --- a/superset/common/utils/dataframe_utils.py +++ b/superset/common/utils/dataframe_utils.py @@ -26,7 +26,9 @@ def left_join_df( - left_df: pd.DataFrame, right_df: pd.DataFrame, join_keys: List[str], + left_df: pd.DataFrame, + right_df: pd.DataFrame, + join_keys: List[str], ) -> pd.DataFrame: df = left_df.set_index(join_keys).join(right_df.set_index(join_keys)) df.reset_index(inplace=True) diff --git a/superset/config.py b/superset/config.py index bd32fc54a32b2..4c68aa25515dd 100644 --- a/superset/config.py +++ b/superset/config.py @@ -43,7 +43,6 @@ from superset.constants import CHANGE_ME_SECRET_KEY from superset.jinja_context import BaseTemplateProcessor -from superset.key_value.types import KeyType from superset.stats_logger import DummyStatsLogger from superset.superset_typing import CacheConfig from superset.utils.core import is_test, parse_boolean_string @@ -300,8 +299,6 @@ def _try_json_readsha(filepath: str, length: int) -> Optional[str]: # { 'name': 'Yahoo', 'url': 'https://open.login.yahoo.com/' }, # { 'name': 'Flickr', 'url': 'https://www.flickr.com/' }, -AUTH_STRICT_RESPONSE_CODES = True - # --------------------------------------------------- # Roles config # --------------------------------------------------- @@ -602,8 +599,6 @@ def _try_json_readsha(filepath: str, length: int) -> Optional[str]: # store cache keys by datasource UID (via CacheKey) for custom processing/invalidation STORE_CACHE_KEYS_IN_METADATA_DB = False -PERMALINK_KEY_TYPE: KeyType = "uuid" - # CORS Options ENABLE_CORS = False CORS_OPTIONS: Dict[Any, Any] = {} @@ -747,13 +742,13 @@ def _try_json_readsha(filepath: str, length: int) -> Optional[str]: class CeleryConfig: # pylint: disable=too-few-public-methods - BROKER_URL = "sqla+sqlite:///celerydb.sqlite" - CELERY_IMPORTS = ("superset.sql_lab", "superset.tasks") - CELERY_RESULT_BACKEND = "db+sqlite:///celery_results.sqlite" - CELERYD_LOG_LEVEL = "DEBUG" - CELERYD_PREFETCH_MULTIPLIER = 1 - CELERY_ACKS_LATE = False - CELERY_ANNOTATIONS = { + broker_url = "sqla+sqlite:///celerydb.sqlite" + imports = ("superset.sql_lab",) + result_backend = "db+sqlite:///celery_results.sqlite" + worker_log_level = "DEBUG" + worker_prefetch_multiplier = 1 + task_acks_late = False + task_annotations = { "sql_lab.get_sql_results": {"rate_limit": "100/s"}, "email_reports.send": { "rate_limit": "1/s", @@ -762,7 +757,7 @@ class CeleryConfig: # pylint: disable=too-few-public-methods "ignore_result": True, }, } - CELERYBEAT_SCHEDULE = { + beat_schedule = { "email_reports.schedule_hourly": { "task": "email_reports.schedule_hourly", "schedule": crontab(minute=1, hour="*"), @@ -1056,17 +1051,10 @@ def SQL_QUERY_MUTATOR( # pylint: disable=invalid-name,unused-argument return sql -# Enable / disable scheduled email reports -# -# Warning: This config key is deprecated and will be removed in version 2.0.0" -ENABLE_SCHEDULED_EMAIL_REPORTS = False - -# Enable / disable Alerts, where users can define custom SQL that -# will send emails with screenshots of charts or dashboards periodically -# if it meets the criteria -# -# Warning: This config key is deprecated and will be removed in version 2.0.0" -ENABLE_ALERTS = False +# This auth provider is used by background (offline) tasks that need to access +# protected resources. Can be overridden by end users in order to support +# custom auth mechanisms +MACHINE_AUTH_PROVIDER_CLASS = "superset.utils.machine_auth.MachineAuthProvider" # --------------------------------------------------- # Alerts & Reports @@ -1092,43 +1080,6 @@ def SQL_QUERY_MUTATOR( # pylint: disable=invalid-name,unused-argument SLACK_API_TOKEN: Optional[Union[Callable[[], str], str]] = None SLACK_PROXY = None -# If enabled, certain features are run in debug mode -# Current list: -# * Emails are sent using dry-run mode (logging only) -# -# Warning: This config key is deprecated and will be removed in version 2.0.0" -SCHEDULED_EMAIL_DEBUG_MODE = False - -# This auth provider is used by background (offline) tasks that need to access -# protected resources. Can be overridden by end users in order to support -# custom auth mechanisms -MACHINE_AUTH_PROVIDER_CLASS = "superset.utils.machine_auth.MachineAuthProvider" - -# Email reports - minimum time resolution (in minutes) for the crontab -# -# Warning: This config key is deprecated and will be removed in version 2.0.0" -EMAIL_REPORTS_CRON_RESOLUTION = 15 - -# The MAX duration (in seconds) a email schedule can run for before being killed -# by celery. -# -# Warning: This config key is deprecated and will be removed in version 2.0.0" -EMAIL_ASYNC_TIME_LIMIT_SEC = int(timedelta(minutes=5).total_seconds()) - -# Send bcc of all reports to this address. Set to None to disable. -# This is useful for maintaining an audit trail of all email deliveries. -# -# Warning: This config key is deprecated and will be removed in version 2.0.0" -EMAIL_REPORT_BCC_ADDRESS = None - -# User credentials to use for generating reports -# This user should have permissions to browse all the dashboards and -# slices. -# TODO: In the future, login as the owner of the item to generate reports -# -# Warning: This config key is deprecated and will be removed in version 2.0.0" -EMAIL_REPORTS_USER = "admin" - # The webdriver to use for generating reports. Use one of the following # firefox # Requires: geckodriver and firefox installations @@ -1255,12 +1206,6 @@ def SQL_QUERY_MUTATOR( # pylint: disable=invalid-name,unused-argument # Example: SSL_CERT_PATH = "/certs" SSL_CERT_PATH: Optional[str] = None -# Turn this key to False to disable ownership check on the old dataset MVC and -# datasource API /datasource/save. -# -# Warning: This config key is deprecated and will be removed in version 2.0.0" -OLD_API_CHECK_DATASET_OWNERSHIP = True - # SQLA table mutator, every time we fetch the metadata for a certain table # (superset.connectors.sqla.models.SqlaTable), we call this hook # to allow mutating the object with this callback. diff --git a/superset/connectors/base/models.py b/superset/connectors/base/models.py index 939a1fc1c7c27..9aacb0dc8c641 100644 --- a/superset/connectors/base/models.py +++ b/superset/connectors/base/models.py @@ -117,6 +117,8 @@ def name(self) -> str: owners: List[User] update_from_object_fields: List[str] + extra_import_fields = ["is_managed_externally", "external_url"] + @property def kind(self) -> DatasourceKind: return DatasourceKind.VIRTUAL if self.sql else DatasourceKind.PHYSICAL diff --git a/superset/connectors/druid/models.py b/superset/connectors/druid/models.py index 3a17ec5319374..bc4d0ba3817a4 100644 --- a/superset/connectors/druid/models.py +++ b/superset/connectors/druid/models.py @@ -128,7 +128,6 @@ def __init__(self, name: str, post_aggregator: Dict[str, Any]) -> None: self.name = name self.post_aggregator = post_aggregator - except NameError: pass diff --git a/superset/connectors/druid/views.py b/superset/connectors/druid/views.py index cd7e5d279ba25..b387aff6962e8 100644 --- a/superset/connectors/druid/views.py +++ b/superset/connectors/druid/views.py @@ -62,7 +62,9 @@ def ensure_enabled(self) -> None: class DruidColumnInlineView( # pylint: disable=too-many-ancestors - CompactCRUDMixin, EnsureEnabledMixin, SupersetModelView, + CompactCRUDMixin, + EnsureEnabledMixin, + SupersetModelView, ): datamodel = SQLAInterface(models.DruidColumn) include_route_methods = RouteMethod.RELATED_VIEW_SET @@ -151,7 +153,9 @@ def post_add(self, item: "DruidColumnInlineView") -> None: class DruidMetricInlineView( # pylint: disable=too-many-ancestors - CompactCRUDMixin, EnsureEnabledMixin, SupersetModelView, + CompactCRUDMixin, + EnsureEnabledMixin, + SupersetModelView, ): datamodel = SQLAInterface(models.DruidMetric) include_route_methods = RouteMethod.RELATED_VIEW_SET @@ -206,7 +210,10 @@ class DruidMetricInlineView( # pylint: disable=too-many-ancestors class DruidClusterModelView( # pylint: disable=too-many-ancestors - EnsureEnabledMixin, SupersetModelView, DeleteMixin, YamlExportMixin, + EnsureEnabledMixin, + SupersetModelView, + DeleteMixin, + YamlExportMixin, ): datamodel = SQLAInterface(models.DruidCluster) include_route_methods = RouteMethod.CRUD_SET @@ -270,7 +277,10 @@ def _delete(self, pk: int) -> None: class DruidDatasourceModelView( # pylint: disable=too-many-ancestors - EnsureEnabledMixin, DatasourceModelView, DeleteMixin, YamlExportMixin, + EnsureEnabledMixin, + DatasourceModelView, + DeleteMixin, + YamlExportMixin, ): datamodel = SQLAInterface(models.DruidDatasource) include_route_methods = RouteMethod.CRUD_SET diff --git a/superset/connectors/sqla/models.py b/superset/connectors/sqla/models.py index bbd1b5d84dad7..5b89919d0e8d6 100644 --- a/superset/connectors/sqla/models.py +++ b/superset/connectors/sqla/models.py @@ -78,6 +78,7 @@ from superset.connectors.sqla.utils import ( get_physical_table_metadata, get_virtual_table_metadata, + load_or_create_tables, validate_adhoc_subquery, ) from superset.datasets.models import Dataset as NewDataset @@ -311,7 +312,9 @@ def datasource(self) -> RelationshipProperty: return self.table def get_time_filter( - self, start_dttm: DateTime, end_dttm: DateTime, + self, + start_dttm: DateTime, + end_dttm: DateTime, ) -> ColumnElement: col = self.get_sqla_col(label="__time") l = [] @@ -687,7 +690,9 @@ def external_metadata(self) -> List[Dict[str, str]]: if self.sql: return get_virtual_table_metadata(dataset=self) return get_physical_table_metadata( - database=self.database, table_name=self.table_name, schema_name=self.schema, + database=self.database, + table_name=self.table_name, + schema_name=self.schema, ) @property @@ -1013,7 +1018,10 @@ def _get_sqla_row_level_filters( return all_filters except TemplateError as ex: raise QueryObjectValidationError( - _("Error in jinja expression in RLS filters: %(msg)s", msg=ex.message,) + _( + "Error in jinja expression in RLS filters: %(msg)s", + msg=ex.message, + ) ) from ex def text(self, clause: str) -> TextClause: @@ -1233,7 +1241,8 @@ def get_sqla_query( # pylint: disable=too-many-arguments,too-many-locals,too-ma ): time_filters.append( columns_by_name[self.main_dttm_col].get_time_filter( - from_dttm, to_dttm, + from_dttm, + to_dttm, ) ) time_filters.append(dttm_col.get_time_filter(from_dttm, to_dttm)) @@ -1444,7 +1453,8 @@ def get_sqla_query( # pylint: disable=too-many-arguments,too-many-locals,too-ma if dttm_col and not db_engine_spec.time_groupby_inline: inner_time_filter = [ dttm_col.get_time_filter( - inner_from_dttm or from_dttm, inner_to_dttm or to_dttm, + inner_from_dttm or from_dttm, + inner_to_dttm or to_dttm, ) ] subq = subq.where(and_(*(where_clause_and + inner_time_filter))) @@ -1473,7 +1483,9 @@ def get_sqla_query( # pylint: disable=too-many-arguments,too-many-locals,too-ma orderby = [ ( self._get_series_orderby( - series_limit_metric, metrics_by_name, columns_by_name, + series_limit_metric, + metrics_by_name, + columns_by_name, ), not order_desc, ) @@ -1549,7 +1561,10 @@ def _get_series_orderby( return ob def _normalize_prequery_result_type( - self, row: pd.Series, dimension: str, columns_by_name: Dict[str, TableColumn], + self, + row: pd.Series, + dimension: str, + columns_by_name: Dict[str, TableColumn], ) -> Union[str, int, float, bool, Text]: """ Convert a prequery result type to its equivalent Python type. @@ -1594,7 +1609,9 @@ def _get_top_groups( group = [] for dimension in dimensions: value = self._normalize_prequery_result_type( - row, dimension, columns_by_name, + row, + dimension, + columns_by_name, ) group.append(groupby_exprs[dimension] == value) @@ -1933,7 +1950,9 @@ def update_table( # pylint: disable=unused-argument @staticmethod def after_insert( - mapper: Mapper, connection: Connection, target: "SqlaTable", + mapper: Mapper, + connection: Connection, + target: "SqlaTable", ) -> None: """ Shadow write the dataset to new models. @@ -1962,7 +1981,9 @@ def after_insert( @staticmethod def after_delete( # pylint: disable=unused-argument - mapper: Mapper, connection: Connection, target: "SqlaTable", + mapper: Mapper, + connection: Connection, + target: "SqlaTable", ) -> None: """ Shadow write the dataset to new models. @@ -1985,7 +2006,9 @@ def after_delete( # pylint: disable=unused-argument @staticmethod def after_update( # pylint: disable=too-many-branches, too-many-locals, too-many-statements - mapper: Mapper, connection: Connection, target: "SqlaTable", + mapper: Mapper, + connection: Connection, + target: "SqlaTable", ) -> None: """ Shadow write the dataset to new models. @@ -2220,7 +2243,10 @@ def write_shadow_dataset( # pylint: disable=too-many-locals if column.is_active is False: continue - extra_json = json.loads(column.extra or "{}") + try: + extra_json = json.loads(column.extra or "{}") + except json.decoder.JSONDecodeError: + extra_json = {} for attr in {"groupby", "filterable", "verbose_name", "python_date_format"}: value = getattr(column, attr) if value: @@ -2247,7 +2273,10 @@ def write_shadow_dataset( # pylint: disable=too-many-locals # create metrics for metric in dataset.metrics: - extra_json = json.loads(metric.extra or "{}") + try: + extra_json = json.loads(metric.extra or "{}") + except json.decoder.JSONDecodeError: + extra_json = {} for attr in {"verbose_name", "metric_type", "d3format"}: value = getattr(metric, attr) if value: @@ -2278,8 +2307,7 @@ def write_shadow_dataset( # pylint: disable=too-many-locals ) # physical dataset - tables = [] - if dataset.sql is None: + if not dataset.sql: physical_columns = [column for column in columns if column.is_physical] # create table @@ -2292,7 +2320,7 @@ def write_shadow_dataset( # pylint: disable=too-many-locals is_managed_externally=dataset.is_managed_externally, external_url=dataset.external_url, ) - tables.append(table) + tables = [table] # virtual dataset else: @@ -2303,18 +2331,14 @@ def write_shadow_dataset( # pylint: disable=too-many-locals # find referenced tables parsed = ParsedQuery(dataset.sql) referenced_tables = parsed.tables - - # predicate for finding the referenced tables - predicate = or_( - *[ - and_( - NewTable.schema == (table.schema or dataset.schema), - NewTable.name == table.table, - ) - for table in referenced_tables - ] + tables = load_or_create_tables( + session, + dataset.database_id, + dataset.schema, + referenced_tables, + conditional_quote, + engine, ) - tables = session.query(NewTable).filter(predicate).all() # create the new dataset new_dataset = NewDataset( @@ -2323,7 +2347,7 @@ def write_shadow_dataset( # pylint: disable=too-many-locals expression=dataset.sql or conditional_quote(dataset.table_name), tables=tables, columns=columns, - is_physical=dataset.sql is None, + is_physical=not dataset.sql, is_managed_externally=dataset.is_managed_externally, external_url=dataset.external_url, ) diff --git a/superset/connectors/sqla/utils.py b/superset/connectors/sqla/utils.py index 984eef78f4b76..4fc11a4d1d16b 100644 --- a/superset/connectors/sqla/utils.py +++ b/superset/connectors/sqla/utils.py @@ -15,13 +15,17 @@ # specific language governing permissions and limitations # under the License. from contextlib import closing -from typing import Dict, List, Optional, TYPE_CHECKING +from typing import Callable, Dict, List, Optional, Set, TYPE_CHECKING import sqlparse from flask_babel import lazy_gettext as _ +from sqlalchemy import and_, inspect, or_ +from sqlalchemy.engine import Engine from sqlalchemy.exc import NoSuchTableError +from sqlalchemy.orm import Session from sqlalchemy.sql.type_api import TypeEngine +from superset.columns.models import Column as NewColumn from superset.errors import ErrorLevel, SupersetError, SupersetErrorType from superset.exceptions import ( SupersetGenericDBErrorException, @@ -29,14 +33,20 @@ ) from superset.models.core import Database from superset.result_set import SupersetResultSet -from superset.sql_parse import has_table_query, ParsedQuery +from superset.sql_parse import has_table_query, ParsedQuery, Table +from superset.tables.models import Table as NewTable if TYPE_CHECKING: from superset.connectors.sqla.models import SqlaTable +TEMPORAL_TYPES = {"DATETIME", "DATE", "TIME", "TIMEDELTA"} + + def get_physical_table_metadata( - database: Database, table_name: str, schema_name: Optional[str] = None, + database: Database, + table_name: str, + schema_name: Optional[str] = None, ) -> List[Dict[str, str]]: """Use SQLAlchemy inspector to get table metadata""" db_engine_spec = database.db_engine_spec @@ -72,7 +82,11 @@ def get_physical_table_metadata( # from different drivers that fall outside CompileError except Exception: # pylint: disable=broad-except col.update( - {"type": "UNKNOWN", "generic_type": None, "is_dttm": None,} + { + "type": "UNKNOWN", + "generic_type": None, + "is_dttm": None, + } ) return cols @@ -145,3 +159,78 @@ def validate_adhoc_subquery(raw_sql: str) -> None: ) ) return + + +def load_or_create_tables( # pylint: disable=too-many-arguments + session: Session, + database_id: int, + default_schema: Optional[str], + tables: Set[Table], + conditional_quote: Callable[[str], str], + engine: Engine, +) -> List[NewTable]: + """ + Load or create new table model instances. + """ + if not tables: + return [] + + # set the default schema in tables that don't have it + if default_schema: + fixed_tables = list(tables) + for i, table in enumerate(fixed_tables): + if table.schema is None: + fixed_tables[i] = Table(table.table, default_schema, table.catalog) + tables = set(fixed_tables) + + # load existing tables + predicate = or_( + *[ + and_( + NewTable.database_id == database_id, + NewTable.schema == table.schema, + NewTable.name == table.table, + ) + for table in tables + ] + ) + new_tables = session.query(NewTable).filter(predicate).all() + + # add missing tables + existing = {(table.schema, table.name) for table in new_tables} + for table in tables: + if (table.schema, table.table) not in existing: + try: + inspector = inspect(engine) + column_metadata = inspector.get_columns( + table.table, schema=table.schema + ) + except Exception: # pylint: disable=broad-except + continue + columns = [ + NewColumn( + name=column["name"], + type=str(column["type"]), + expression=conditional_quote(column["name"]), + is_temporal=column["type"].python_type.__name__.upper() + in TEMPORAL_TYPES, + is_aggregation=False, + is_physical=True, + is_spatial=False, + is_partition=False, + is_increase_desired=True, + ) + for column in column_metadata + ] + new_tables.append( + NewTable( + name=table.table, + schema=table.schema, + catalog=None, + database_id=database_id, + columns=columns, + ) + ) + existing.add((table.schema, table.table)) + + return new_tables diff --git a/superset/connectors/sqla/views.py b/superset/connectors/sqla/views.py index 4b43d2f046f6b..116b18869d009 100644 --- a/superset/connectors/sqla/views.py +++ b/superset/connectors/sqla/views.py @@ -17,17 +17,15 @@ """Views used by the SqlAlchemy connector""" import logging import re -from dataclasses import dataclass, field -from typing import Any, cast, Dict, List, Union +from typing import Any, cast from flask import current_app, flash, Markup, redirect from flask_appbuilder import CompactCRUDMixin, expose -from flask_appbuilder.actions import action from flask_appbuilder.fieldwidgets import Select2Widget from flask_appbuilder.hooks import before_request from flask_appbuilder.models.sqla.interface import SQLAInterface from flask_appbuilder.security.decorators import has_access -from flask_babel import gettext as __, lazy_gettext as _ +from flask_babel import lazy_gettext as _ from werkzeug.exceptions import NotFound from wtforms.ext.sqlalchemy.fields import QuerySelectField from wtforms.validators import Regexp @@ -39,14 +37,12 @@ from superset.superset_typing import FlaskResponse from superset.utils import core as utils from superset.views.base import ( - check_ownership, create_table_permissions, DatasourceFilter, DeleteMixin, ListWidgetWithCheckboxes, SupersetListWidget, SupersetModelView, - validate_sqlatable, YamlExportMixin, ) @@ -181,27 +177,6 @@ class TableColumnInlineView(CompactCRUDMixin, SupersetModelView): edit_form_extra_fields = add_form_extra_fields - def pre_add(self, item: "models.SqlMetric") -> None: - logger.warning( - "This endpoint is deprecated and will be removed in version 2.0.0" - ) - if app.config["OLD_API_CHECK_DATASET_OWNERSHIP"]: - check_ownership(item.table) - - def pre_update(self, item: "models.SqlMetric") -> None: - logger.warning( - "This endpoint is deprecated and will be removed in version 2.0.0" - ) - if app.config["OLD_API_CHECK_DATASET_OWNERSHIP"]: - check_ownership(item.table) - - def pre_delete(self, item: "models.SqlMetric") -> None: - logger.warning( - "This endpoint is deprecated and will be removed in version 2.0.0" - ) - if app.config["OLD_API_CHECK_DATASET_OWNERSHIP"]: - check_ownership(item.table) - class SqlMetricInlineView(CompactCRUDMixin, SupersetModelView): datamodel = SQLAInterface(models.SqlMetric) @@ -274,27 +249,6 @@ class SqlMetricInlineView(CompactCRUDMixin, SupersetModelView): edit_form_extra_fields = add_form_extra_fields - def pre_add(self, item: "models.SqlMetric") -> None: - logger.warning( - "This endpoint is deprecated and will be removed in version 2.0.0" - ) - if app.config["OLD_API_CHECK_DATASET_OWNERSHIP"]: - check_ownership(item.table) - - def pre_update(self, item: "models.SqlMetric") -> None: - logger.warning( - "This endpoint is deprecated and will be removed in version 2.0.0" - ) - if app.config["OLD_API_CHECK_DATASET_OWNERSHIP"]: - check_ownership(item.table) - - def pre_delete(self, item: "models.SqlMetric") -> None: - logger.warning( - "This endpoint is deprecated and will be removed in version 2.0.0" - ) - if app.config["OLD_API_CHECK_DATASET_OWNERSHIP"]: - check_ownership(item.table) - class RowLevelSecurityListWidget( SupersetListWidget @@ -513,19 +467,6 @@ class TableModelView( # pylint: disable=too-many-ancestors ) } - def pre_add(self, item: "TableModelView") -> None: - logger.warning( - "This endpoint is deprecated and will be removed in version 2.0.0" - ) - validate_sqlatable(item) - - def pre_update(self, item: "TableModelView") -> None: - logger.warning( - "This endpoint is deprecated and will be removed in version 2.0.0" - ) - if app.config["OLD_API_CHECK_DATASET_OWNERSHIP"]: - check_ownership(item) - def post_add( # pylint: disable=arguments-differ self, item: "TableModelView", @@ -561,89 +502,6 @@ def edit(self, pk: str) -> FlaskResponse: return resp return redirect("/superset/explore/table/{}/".format(pk)) - @action( - "refresh", __("Refresh Metadata"), __("Refresh column metadata"), "fa-refresh" - ) - def refresh( # pylint: disable=no-self-use, - self, tables: Union["TableModelView", List["TableModelView"]] - ) -> FlaskResponse: - logger.warning( - "This endpoint is deprecated and will be removed in version 2.0.0" - ) - if not isinstance(tables, list): - tables = [tables] - - @dataclass - class RefreshResults: - successes: List[TableModelView] = field(default_factory=list) - failures: List[TableModelView] = field(default_factory=list) - added: Dict[str, List[str]] = field(default_factory=dict) - removed: Dict[str, List[str]] = field(default_factory=dict) - modified: Dict[str, List[str]] = field(default_factory=dict) - - results = RefreshResults() - - for table_ in tables: - try: - metadata_results = table_.fetch_metadata() - if metadata_results.added: - results.added[table_.table_name] = metadata_results.added - if metadata_results.removed: - results.removed[table_.table_name] = metadata_results.removed - if metadata_results.modified: - results.modified[table_.table_name] = metadata_results.modified - results.successes.append(table_) - except Exception: # pylint: disable=broad-except - results.failures.append(table_) - - if len(results.successes) > 0: - success_msg = _( - "Metadata refreshed for the following table(s): %(tables)s", - tables=", ".join([t.table_name for t in results.successes]), - ) - flash(success_msg, "info") - if results.added: - added_tables = [] - for table, cols in results.added.items(): - added_tables.append(f"{table} ({', '.join(cols)})") - flash( - _( - "The following tables added new columns: %(tables)s", - tables=", ".join(added_tables), - ), - "info", - ) - if results.removed: - removed_tables = [] - for table, cols in results.removed.items(): - removed_tables.append(f"{table} ({', '.join(cols)})") - flash( - _( - "The following tables removed columns: %(tables)s", - tables=", ".join(removed_tables), - ), - "info", - ) - if results.modified: - modified_tables = [] - for table, cols in results.modified.items(): - modified_tables.append(f"{table} ({', '.join(cols)})") - flash( - _( - "The following tables update column metadata: %(tables)s", - tables=", ".join(modified_tables), - ), - "info", - ) - if len(results.failures) > 0: - failure_msg = _( - "Unable to refresh metadata for the following table(s): %(tables)s", - tables=", ".join([t.table_name for t in results.failures]), - ) - flash(failure_msg, "danger") - - return redirect("/tablemodelview/list/") - @expose("/list/") @has_access def list(self) -> FlaskResponse: diff --git a/superset/dashboards/api.py b/superset/dashboards/api.py index df67d8f775c52..5e761cdd1f092 100644 --- a/superset/dashboards/api.py +++ b/superset/dashboards/api.py @@ -147,6 +147,7 @@ def ensure_thumbnails_enabled(self) -> Optional[Response]: "owners.email", "roles.id", "roles.name", + "is_managed_externally", ] list_select_columns = list_columns + ["changed_on", "changed_by_fk"] order_columns = [ diff --git a/superset/dashboards/commands/importers/v0.py b/superset/dashboards/commands/importers/v0.py index f317d51086c9d..a7fbb51c057d5 100644 --- a/superset/dashboards/commands/importers/v0.py +++ b/superset/dashboards/commands/importers/v0.py @@ -151,7 +151,8 @@ def alter_native_filters(dashboard: Dashboard) -> None: old_dataset_id = target.get("datasetId") if dataset_id_mapping and old_dataset_id is not None: target["datasetId"] = dataset_id_mapping.get( - old_dataset_id, old_dataset_id, + old_dataset_id, + old_dataset_id, ) dashboard.json_metadata = json.dumps(json_metadata) diff --git a/superset/dashboards/filter_sets/commands/base.py b/superset/dashboards/filter_sets/commands/base.py index af31bbd7a1a94..0e902e5e687ca 100644 --- a/superset/dashboards/filter_sets/commands/base.py +++ b/superset/dashboards/filter_sets/commands/base.py @@ -85,7 +85,8 @@ def check_ownership(self) -> None: ) except NotAuthorizedException as err: raise FilterSetForbiddenError( - str(self._filter_set_id), "user not authorized to access the filterset", + str(self._filter_set_id), + "user not authorized to access the filterset", ) from err except FilterSetForbiddenError as err: raise err diff --git a/superset/dashboards/filter_sets/schemas.py b/superset/dashboards/filter_sets/schemas.py index 3c0436d697b23..c1a13b424e815 100644 --- a/superset/dashboards/filter_sets/schemas.py +++ b/superset/dashboards/filter_sets/schemas.py @@ -46,7 +46,11 @@ def _validate_json_meta_data(self, json_meta_data: str) -> None: class FilterSetPostSchema(FilterSetSchema): json_metadata_schema: JsonMetadataSchema = JsonMetadataSchema() # pylint: disable=W0613 - name = fields.String(required=True, allow_none=False, validate=Length(0, 500),) + name = fields.String( + required=True, + allow_none=False, + validate=Length(0, 500), + ) description = fields.String( required=False, allow_none=True, validate=[Length(1, 1000)] ) diff --git a/superset/dashboards/filter_state/commands/create.py b/superset/dashboards/filter_state/commands/create.py index a37ee072fa75e..137623027a1fc 100644 --- a/superset/dashboards/filter_state/commands/create.py +++ b/superset/dashboards/filter_state/commands/create.py @@ -18,10 +18,11 @@ from superset.dashboards.dao import DashboardDAO from superset.extensions import cache_manager +from superset.key_value.utils import random_key from superset.temporary_cache.commands.create import CreateTemporaryCacheCommand from superset.temporary_cache.commands.entry import Entry from superset.temporary_cache.commands.parameters import CommandParameters -from superset.temporary_cache.utils import cache_key, random_key +from superset.temporary_cache.utils import cache_key class CreateFilterStateCommand(CreateTemporaryCacheCommand): diff --git a/superset/dashboards/filter_state/commands/update.py b/superset/dashboards/filter_state/commands/update.py index 6a9cd3931c9c8..d27277f9afb97 100644 --- a/superset/dashboards/filter_state/commands/update.py +++ b/superset/dashboards/filter_state/commands/update.py @@ -20,11 +20,12 @@ from superset.dashboards.dao import DashboardDAO from superset.extensions import cache_manager +from superset.key_value.utils import random_key from superset.temporary_cache.commands.entry import Entry from superset.temporary_cache.commands.exceptions import TemporaryCacheAccessDeniedError from superset.temporary_cache.commands.parameters import CommandParameters from superset.temporary_cache.commands.update import UpdateTemporaryCacheCommand -from superset.temporary_cache.utils import cache_key, random_key +from superset.temporary_cache.utils import cache_key class UpdateFilterStateCommand(UpdateTemporaryCacheCommand): diff --git a/superset/dashboards/filters.py b/superset/dashboards/filters.py index e398af97b744a..5f79392e71ecd 100644 --- a/superset/dashboards/filters.py +++ b/superset/dashboards/filters.py @@ -170,7 +170,9 @@ class FilterRelatedRoles(BaseFilter): # pylint: disable=too-few-public-methods def apply(self, query: Query, value: Optional[Any]) -> Query: role_model = security_manager.role_model if value: - return query.filter(role_model.name.ilike(f"%{value}%"),) + return query.filter( + role_model.name.ilike(f"%{value}%"), + ) return query @@ -184,7 +186,15 @@ class DashboardCertifiedFilter(BaseFilter): # pylint: disable=too-few-public-me def apply(self, query: Query, value: Any) -> Query: if value is True: - return query.filter(and_(Dashboard.certified_by.isnot(None),)) + return query.filter( + and_( + Dashboard.certified_by.isnot(None), + ) + ) if value is False: - return query.filter(and_(Dashboard.certified_by.is_(None),)) + return query.filter( + and_( + Dashboard.certified_by.is_(None), + ) + ) return query diff --git a/superset/dashboards/permalink/api.py b/superset/dashboards/permalink/api.py index 2236c4de2a1af..ca536af8f7400 100644 --- a/superset/dashboards/permalink/api.py +++ b/superset/dashboards/permalink/api.py @@ -16,7 +16,7 @@ # under the License. import logging -from flask import current_app, g, request, Response +from flask import g, request, Response from flask_appbuilder.api import BaseApi, expose, protect, safe from marshmallow import ValidationError @@ -101,18 +101,22 @@ def post(self, pk: str) -> Response: 500: $ref: '#/components/responses/500' """ - key_type = current_app.config["PERMALINK_KEY_TYPE"] try: state = self.add_model_schema.load(request.json) key = CreateDashboardPermalinkCommand( - actor=g.user, dashboard_id=pk, state=state, key_type=key_type, + actor=g.user, + dashboard_id=pk, + state=state, ).run() http_origin = request.headers.environ.get("HTTP_ORIGIN") url = f"{http_origin}/superset/dashboard/p/{key}/" return self.response(201, key=key, url=url) except (ValidationError, DashboardPermalinkInvalidStateError) as ex: return self.response(400, message=str(ex)) - except (DashboardAccessDeniedError, KeyValueAccessDeniedError,) as ex: + except ( + DashboardAccessDeniedError, + KeyValueAccessDeniedError, + ) as ex: return self.response(403, message=str(ex)) except DashboardNotFoundError as ex: return self.response(404, message=str(ex)) @@ -158,10 +162,7 @@ def get(self, key: str) -> Response: $ref: '#/components/responses/500' """ try: - key_type = current_app.config["PERMALINK_KEY_TYPE"] - value = GetDashboardPermalinkCommand( - actor=g.user, key=key, key_type=key_type - ).run() + value = GetDashboardPermalinkCommand(actor=g.user, key=key).run() if not value: return self.response_404() return self.response(200, **value) diff --git a/superset/dashboards/permalink/commands/base.py b/superset/dashboards/permalink/commands/base.py index 2c0343810e024..f4dc4f0726110 100644 --- a/superset/dashboards/permalink/commands/base.py +++ b/superset/dashboards/permalink/commands/base.py @@ -17,7 +17,13 @@ from abc import ABC from superset.commands.base import BaseCommand +from superset.key_value.shared_entries import get_permalink_salt +from superset.key_value.types import KeyValueResource, SharedKey class BaseDashboardPermalinkCommand(BaseCommand, ABC): - resource = "dashboard_permalink" + resource = KeyValueResource.DASHBOARD_PERMALINK + + @property + def salt(self) -> str: + return get_permalink_salt(SharedKey.DASHBOARD_PERMALINK_SALT) diff --git a/superset/dashboards/permalink/commands/create.py b/superset/dashboards/permalink/commands/create.py index a97f228dd83d1..4ffd41104ea08 100644 --- a/superset/dashboards/permalink/commands/create.py +++ b/superset/dashboards/permalink/commands/create.py @@ -24,7 +24,7 @@ from superset.dashboards.permalink.exceptions import DashboardPermalinkCreateFailedError from superset.dashboards.permalink.types import DashboardPermalinkState from superset.key_value.commands.create import CreateKeyValueCommand -from superset.key_value.types import KeyType +from superset.key_value.utils import encode_permalink_key logger = logging.getLogger(__name__) @@ -35,12 +35,10 @@ def __init__( actor: User, dashboard_id: str, state: DashboardPermalinkState, - key_type: KeyType, ): self.actor = actor self.dashboard_id = dashboard_id self.state = state - self.key_type = key_type def run(self) -> str: self.validate() @@ -50,12 +48,14 @@ def run(self) -> str: "dashboardId": self.dashboard_id, "state": self.state, } - return CreateKeyValueCommand( + key = CreateKeyValueCommand( actor=self.actor, resource=self.resource, value=value, - key_type=self.key_type, ).run() + if key.id is None: + raise DashboardPermalinkCreateFailedError("Unexpected missing key id") + return encode_permalink_key(key=key.id, salt=self.salt) except SQLAlchemyError as ex: logger.exception("Error running create command") raise DashboardPermalinkCreateFailedError() from ex diff --git a/superset/dashboards/permalink/commands/get.py b/superset/dashboards/permalink/commands/get.py index 6cb2749cbacb9..24bf77834a60c 100644 --- a/superset/dashboards/permalink/commands/get.py +++ b/superset/dashboards/permalink/commands/get.py @@ -27,25 +27,21 @@ from superset.dashboards.permalink.types import DashboardPermalinkValue from superset.key_value.commands.get import GetKeyValueCommand from superset.key_value.exceptions import KeyValueGetFailedError, KeyValueParseKeyError -from superset.key_value.types import KeyType +from superset.key_value.utils import decode_permalink_id logger = logging.getLogger(__name__) class GetDashboardPermalinkCommand(BaseDashboardPermalinkCommand): - def __init__( - self, actor: User, key: str, key_type: KeyType, - ): + def __init__(self, actor: User, key: str): self.actor = actor self.key = key - self.key_type = key_type def run(self) -> Optional[DashboardPermalinkValue]: self.validate() try: - command = GetKeyValueCommand( - resource=self.resource, key=self.key, key_type=self.key_type - ) + key = decode_permalink_id(self.key, salt=self.salt) + command = GetKeyValueCommand(resource=self.resource, key=key) value: Optional[DashboardPermalinkValue] = command.run() if value: DashboardDAO.get_by_id_or_slug(value["dashboardId"]) diff --git a/superset/dashboards/permalink/schemas.py b/superset/dashboards/permalink/schemas.py index 91d60b02c23b7..a0fc1cbc5598f 100644 --- a/superset/dashboards/permalink/schemas.py +++ b/superset/dashboards/permalink/schemas.py @@ -19,7 +19,9 @@ class DashboardPermalinkPostSchema(Schema): filterState = fields.Dict( - required=True, allow_none=False, description="Native filter state", + required=False, + allow_none=True, + description="Native filter state", ) urlParams = fields.List( fields.Tuple( diff --git a/superset/dashboards/permalink/types.py b/superset/dashboards/permalink/types.py index 815c5bfe91d47..e93076ba23785 100644 --- a/superset/dashboards/permalink/types.py +++ b/superset/dashboards/permalink/types.py @@ -18,7 +18,7 @@ class DashboardPermalinkState(TypedDict): - filterState: Dict[str, Any] + filterState: Optional[Dict[str, Any]] hash: Optional[str] urlParams: Optional[List[Tuple[str, str]]] diff --git a/superset/dashboards/schemas.py b/superset/dashboards/schemas.py index 661c61e1c2483..9b668df7212d0 100644 --- a/superset/dashboards/schemas.py +++ b/superset/dashboards/schemas.py @@ -166,6 +166,7 @@ class DashboardGetResponseSchema(Schema): owners = fields.List(fields.Nested(UserSchema)) roles = fields.List(fields.Nested(RolesSchema)) changed_on_humanized = fields.String(data_key="changed_on_delta_humanized") + is_managed_externally = fields.Boolean(allow_none=True, default=False) class DatabaseSchema(Schema): @@ -242,13 +243,16 @@ class DashboardPostSchema(BaseDashboardSchema): ) css = fields.String() json_metadata = fields.String( - description=json_metadata_description, validate=validate_json_metadata, + description=json_metadata_description, + validate=validate_json_metadata, ) published = fields.Boolean(description=published_description) certified_by = fields.String(description=certified_by_description, allow_none=True) certification_details = fields.String( description=certification_details_description, allow_none=True ) + is_managed_externally = fields.Boolean(allow_none=True, default=False) + external_url = fields.String(allow_none=True) class DashboardPutSchema(BaseDashboardSchema): @@ -278,6 +282,8 @@ class DashboardPutSchema(BaseDashboardSchema): certification_details = fields.String( description=certification_details_description, allow_none=True ) + is_managed_externally = fields.Boolean(allow_none=True, default=False) + external_url = fields.String(allow_none=True) class ChartFavStarResponseResult(Schema): @@ -301,3 +307,5 @@ class ImportV1DashboardSchema(Schema): position = fields.Dict() metadata = fields.Dict() version = fields.String(required=True) + is_managed_externally = fields.Boolean(allow_none=True, default=False) + external_url = fields.String(allow_none=True) diff --git a/superset/databases/api.py b/superset/databases/api.py index 3737addedeb92..0de8bcf83e9ba 100644 --- a/superset/databases/api.py +++ b/superset/databases/api.py @@ -123,6 +123,7 @@ class DatabaseRestApi(BaseSupersetModelRestApi): "parameters_schema", "server_cert", "sqlalchemy_uri", + "is_managed_externally", ] list_columns = [ "allow_file_upload", @@ -880,7 +881,10 @@ def function_names(self, pk: int) -> Response: database = DatabaseDAO.find_by_id(pk) if not database: return self.response_404() - return self.response(200, function_names=database.function_names,) + return self.response( + 200, + function_names=database.function_names, + ) @expose("/available/", methods=["GET"]) @protect() diff --git a/superset/databases/commands/exceptions.py b/superset/databases/commands/exceptions.py index 9ba58373e197a..bde76c021c88a 100644 --- a/superset/databases/commands/exceptions.py +++ b/superset/databases/commands/exceptions.py @@ -47,7 +47,8 @@ def __init__(self) -> None: class DatabaseRequiredFieldValidationError(ValidationError): def __init__(self, field_name: str) -> None: super().__init__( - [_("Field is required")], field_name=field_name, + [_("Field is required")], + field_name=field_name, ) @@ -100,7 +101,8 @@ class DatabaseUpdateFailedError(UpdateFailedError): class DatabaseConnectionFailedError( # pylint: disable=too-many-ancestors - DatabaseCreateFailedError, DatabaseUpdateFailedError, + DatabaseCreateFailedError, + DatabaseUpdateFailedError, ): message = _("Connection failed, please check your connection settings") diff --git a/superset/databases/commands/test_connection.py b/superset/databases/commands/test_connection.py index d3076017bc404..1155f4774db42 100644 --- a/superset/databases/commands/test_connection.py +++ b/superset/databases/commands/test_connection.py @@ -91,8 +91,9 @@ def run(self) -> None: engine.dialect.do_ping, args=(conn,), ) - except sqlite3.ProgrammingError: + except (sqlite3.ProgrammingError, RuntimeError): # SQLite can't run on a separate thread, so ``func_timeout`` fails + # RuntimeError catches the equivalent error from duckdb. alive = engine.dialect.do_ping(conn) except FunctionTimedOut as ex: raise SupersetTimeoutException( diff --git a/superset/databases/commands/validate.py b/superset/databases/commands/validate.py index e2dcc581d7fbf..91e76d8d55efb 100644 --- a/superset/databases/commands/validate.py +++ b/superset/databases/commands/validate.py @@ -57,7 +57,8 @@ def run(self) -> None: raise InvalidEngineError( SupersetError( message=__( - 'Engine "%(engine)s" is not a valid engine.', engine=engine, + 'Engine "%(engine)s" is not a valid engine.', + engine=engine, ), error_type=SupersetErrorType.GENERIC_DB_ENGINE_ERROR, level=ErrorLevel.ERROR, @@ -101,7 +102,8 @@ def run(self) -> None: # try to connect sqlalchemy_uri = engine_spec.build_sqlalchemy_uri( # type: ignore - self._properties.get("parameters"), encrypted_extra, + self._properties.get("parameters"), + encrypted_extra, ) if self._model and sqlalchemy_uri == self._model.safe_sqlalchemy_uri(): sqlalchemy_uri = self._model.sqlalchemy_uri_decrypted diff --git a/superset/databases/dao.py b/superset/databases/dao.py index 3d2cdf6d4ffa0..d8813dc8eba3e 100644 --- a/superset/databases/dao.py +++ b/superset/databases/dao.py @@ -42,7 +42,8 @@ def validate_uniqueness(database_name: str) -> bool: @staticmethod def validate_update_uniqueness(database_id: int, database_name: str) -> bool: database_query = db.session.query(Database).filter( - Database.database_name == database_name, Database.id != database_id, + Database.database_name == database_name, + Database.id != database_id, ) return not db.session.query(database_query.exists()).scalar() diff --git a/superset/databases/filters.py b/superset/databases/filters.py index bee7d2c7b2134..bd0729767ee4e 100644 --- a/superset/databases/filters.py +++ b/superset/databases/filters.py @@ -27,7 +27,8 @@ class DatabaseFilter(BaseFilter): # TODO(bogdan): consider caching. def can_access_databases( # noqa pylint: disable=no-self-use - self, view_menu_name: str, + self, + view_menu_name: str, ) -> Set[str]: return { security_manager.unpack_database_and_schema(vm).database diff --git a/superset/databases/schemas.py b/superset/databases/schemas.py index 4483b051f1be0..4fa38415ef2fc 100644 --- a/superset/databases/schemas.py +++ b/superset/databases/schemas.py @@ -308,7 +308,12 @@ def get_engine_spec(engine: Optional[str]) -> Type[BaseEngineSpec]: engine_specs = get_engine_specs() if engine not in engine_specs: raise ValidationError( - [_('Engine "%(engine)s" is not a valid engine.', engine=engine,)] + [ + _( + 'Engine "%(engine)s" is not a valid engine.', + engine=engine, + ) + ] ) return engine_specs[engine] @@ -324,7 +329,9 @@ class Meta: # pylint: disable=too-few-public-methods description="DB-specific parameters for configuration", ) database_name = fields.String( - description=database_name_description, allow_none=True, validate=Length(1, 250), + description=database_name_description, + allow_none=True, + validate=Length(1, 250), ) impersonate_user = fields.Boolean(description=impersonate_user_description) extra = fields.String(description=extra_description, validate=extra_validator) @@ -351,7 +358,9 @@ class Meta: # pylint: disable=too-few-public-methods unknown = EXCLUDE database_name = fields.String( - description=database_name_description, required=True, validate=Length(1, 250), + description=database_name_description, + required=True, + validate=Length(1, 250), ) cache_timeout = fields.Integer( description=cache_timeout_description, allow_none=True @@ -386,6 +395,8 @@ class Meta: # pylint: disable=too-few-public-methods description=sqlalchemy_uri_description, validate=[Length(1, 1024), sqlalchemy_uri_validator], ) + is_managed_externally = fields.Boolean(allow_none=True, default=False) + external_url = fields.String(allow_none=True) class DatabasePutSchema(Schema, DatabaseParametersSchemaMixin): @@ -393,7 +404,9 @@ class Meta: # pylint: disable=too-few-public-methods unknown = EXCLUDE database_name = fields.String( - description=database_name_description, allow_none=True, validate=Length(1, 250), + description=database_name_description, + allow_none=True, + validate=Length(1, 250), ) cache_timeout = fields.Integer( description=cache_timeout_description, allow_none=True @@ -428,11 +441,15 @@ class Meta: # pylint: disable=too-few-public-methods description=sqlalchemy_uri_description, validate=[Length(0, 1024), sqlalchemy_uri_validator], ) + is_managed_externally = fields.Boolean(allow_none=True, default=False) + external_url = fields.String(allow_none=True) class DatabaseTestConnectionSchema(Schema, DatabaseParametersSchemaMixin): database_name = fields.String( - description=database_name_description, allow_none=True, validate=Length(1, 250), + description=database_name_description, + allow_none=True, + validate=Length(1, 250), ) impersonate_user = fields.Boolean(description=impersonate_user_description) extra = fields.String(description=extra_description, validate=extra_validator) @@ -619,6 +636,8 @@ def fix_allow_csv_upload( extra = fields.Nested(ImportV1DatabaseExtraSchema) uuid = fields.UUID(required=True) version = fields.String(required=True) + is_managed_externally = fields.Boolean(allow_none=True, default=False) + external_url = fields.String(allow_none=True) # pylint: disable=no-self-use, unused-argument @validates_schema diff --git a/superset/datasets/api.py b/superset/datasets/api.py index b94b9ca12482a..bf7147cb7f176 100644 --- a/superset/datasets/api.py +++ b/superset/datasets/api.py @@ -163,7 +163,11 @@ class DatasetRestApi(BaseSupersetModelRestApi): "url", "extra", ] - show_columns = show_select_columns + ["columns.type_generic", "database.backend"] + show_columns = show_select_columns + [ + "columns.type_generic", + "database.backend", + "is_managed_externally", + ] add_model_schema = DatasetPostSchema() edit_model_schema = DatasetPutSchema() add_columns = ["database", "schema", "table_name", "owners"] diff --git a/superset/datasets/commands/importers/v0.py b/superset/datasets/commands/importers/v0.py index 1508298a23e88..7f13261edd3d4 100644 --- a/superset/datasets/commands/importers/v0.py +++ b/superset/datasets/commands/importers/v0.py @@ -285,7 +285,10 @@ class ImportDatasetsCommand(BaseCommand): # pylint: disable=unused-argument def __init__( - self, contents: Dict[str, str], *args: Any, **kwargs: Any, + self, + contents: Dict[str, str], + *args: Any, + **kwargs: Any, ): self.contents = contents self._configs: Dict[str, Any] = {} diff --git a/superset/datasets/commands/update.py b/superset/datasets/commands/update.py index 9ae2bd4a189c9..9d448a6c19392 100644 --- a/superset/datasets/commands/update.py +++ b/superset/datasets/commands/update.py @@ -65,7 +65,8 @@ def run(self) -> Model: if self._model: try: dataset = DatasetDAO.update( - model=self._model, properties=self._properties, + model=self._model, + properties=self._properties, ) return dataset except DAOUpdateFailedError as ex: diff --git a/superset/datasets/schemas.py b/superset/datasets/schemas.py index 775798d274fa7..8e4ded92d7057 100644 --- a/superset/datasets/schemas.py +++ b/superset/datasets/schemas.py @@ -80,6 +80,8 @@ class DatasetPostSchema(Schema): schema = fields.String(validate=Length(0, 250)) table_name = fields.String(required=True, allow_none=False, validate=Length(1, 250)) owners = fields.List(fields.Integer()) + is_managed_externally = fields.Boolean(allow_none=True, default=False) + external_url = fields.String(allow_none=True) class DatasetPutSchema(Schema): @@ -100,6 +102,8 @@ class DatasetPutSchema(Schema): columns = fields.List(fields.Nested(DatasetColumnsPutSchema)) metrics = fields.List(fields.Nested(DatasetMetricsPutSchema)) extra = fields.String(allow_none=True) + is_managed_externally = fields.Boolean(allow_none=True, default=False) + external_url = fields.String(allow_none=True) class DatasetRelatedChart(Schema): @@ -212,6 +216,8 @@ def fix_extra(self, data: Dict[str, Any], **kwargs: Any) -> Dict[str, Any]: version = fields.String(required=True) database_uuid = fields.UUID(required=True) data = fields.URL() + is_managed_externally = fields.Boolean(allow_none=True, default=False) + external_url = fields.String(allow_none=True) class DatasetSchema(SQLAlchemyAutoSchema): diff --git a/superset/db_engine_specs/base.py b/superset/db_engine_specs/base.py index 5c73e2f666e26..200c7c8eac83c 100644 --- a/superset/db_engine_specs/base.py +++ b/superset/db_engine_specs/base.py @@ -205,7 +205,11 @@ class BaseEngineSpec: # pylint: disable=too-many-public-methods types.BigInteger(), GenericDataType.NUMERIC, ), - (re.compile(r"^long", re.IGNORECASE), types.Float(), GenericDataType.NUMERIC,), + ( + re.compile(r"^long", re.IGNORECASE), + types.Float(), + GenericDataType.NUMERIC, + ), ( re.compile(r"^decimal", re.IGNORECASE), types.Numeric(), @@ -216,13 +220,21 @@ class BaseEngineSpec: # pylint: disable=too-many-public-methods types.Numeric(), GenericDataType.NUMERIC, ), - (re.compile(r"^float", re.IGNORECASE), types.Float(), GenericDataType.NUMERIC,), + ( + re.compile(r"^float", re.IGNORECASE), + types.Float(), + GenericDataType.NUMERIC, + ), ( re.compile(r"^double", re.IGNORECASE), types.Float(), GenericDataType.NUMERIC, ), - (re.compile(r"^real", re.IGNORECASE), types.REAL, GenericDataType.NUMERIC,), + ( + re.compile(r"^real", re.IGNORECASE), + types.REAL, + GenericDataType.NUMERIC, + ), ( re.compile(r"^smallserial", re.IGNORECASE), types.SmallInteger(), @@ -258,7 +270,11 @@ class BaseEngineSpec: # pylint: disable=too-many-public-methods types.DateTime(), GenericDataType.TEMPORAL, ), - (re.compile(r"^time", re.IGNORECASE), types.Time(), GenericDataType.TEMPORAL,), + ( + re.compile(r"^time", re.IGNORECASE), + types.Time(), + GenericDataType.TEMPORAL, + ), ( re.compile(r"^interval", re.IGNORECASE), types.Interval(), @@ -351,7 +367,8 @@ def get_dbapi_mapped_exception(cls, exception: Exception) -> Exception: @classmethod def get_allow_cost_estimate( # pylint: disable=unused-argument - cls, extra: Dict[str, Any], + cls, + extra: Dict[str, Any], ) -> bool: return False @@ -618,7 +635,10 @@ def normalize_indexes(cls, indexes: List[Dict[str, Any]]) -> List[Dict[str, Any] @classmethod def extra_table_metadata( # pylint: disable=unused-argument - cls, database: "Database", table_name: str, schema_name: str, + cls, + database: "Database", + table_name: str, + schema_name: str, ) -> Dict[str, Any]: """ Returns engine-specific table metadata @@ -944,7 +964,10 @@ def get_schema_names(cls, inspector: Inspector) -> List[str]: @classmethod def get_table_names( # pylint: disable=unused-argument - cls, database: "Database", inspector: Inspector, schema: Optional[str], + cls, + database: "Database", + inspector: Inspector, + schema: Optional[str], ) -> List[str]: """ Get all tables from schema @@ -961,7 +984,10 @@ def get_table_names( # pylint: disable=unused-argument @classmethod def get_view_names( # pylint: disable=unused-argument - cls, database: "Database", inspector: Inspector, schema: Optional[str], + cls, + database: "Database", + inspector: Inspector, + schema: Optional[str], ) -> List[str]: """ Get all views from schema @@ -1193,7 +1219,10 @@ def modify_url_for_impersonation( @classmethod def update_impersonation_config( - cls, connect_args: Dict[str, Any], uri: str, username: Optional[str], + cls, + connect_args: Dict[str, Any], + uri: str, + username: Optional[str], ) -> None: """ Update a configuration dictionary @@ -1207,7 +1236,10 @@ def update_impersonation_config( @classmethod def execute( # pylint: disable=unused-argument - cls, cursor: Any, query: str, **kwargs: Any, + cls, + cursor: Any, + query: str, + **kwargs: Any, ) -> None: """ Execute a SQL query @@ -1333,7 +1365,8 @@ def column_datatype_to_string( @classmethod def get_function_names( # pylint: disable=unused-argument - cls, database: "Database", + cls, + database: "Database", ) -> List[str]: """ Get a list of function names that are able to be called on the database. @@ -1471,7 +1504,9 @@ def has_implicit_cancel(cls) -> bool: @classmethod def get_cancel_query_id( # pylint: disable=unused-argument - cls, cursor: Any, query: Query, + cls, + cursor: Any, + query: Query, ) -> Optional[str]: """ Select identifiers from the database engine that uniquely identifies the @@ -1487,7 +1522,10 @@ def get_cancel_query_id( # pylint: disable=unused-argument @classmethod def cancel_query( # pylint: disable=unused-argument - cls, cursor: Any, query: Query, cancel_query_id: str, + cls, + cursor: Any, + query: Query, + cancel_query_id: str, ) -> bool: """ Cancel query in the underlying database. @@ -1515,7 +1553,7 @@ class BasicParametersSchema(Schema): port = fields.Integer( required=True, description=__("Database port"), - validate=Range(min=0, max=2 ** 16, max_inclusive=False), + validate=Range(min=0, max=2**16, max_inclusive=False), ) database = fields.String(required=True, description=__("Database name")) query = fields.Dict( @@ -1665,7 +1703,7 @@ def validate_parameters( extra={"invalid": ["port"]}, ), ) - if not (isinstance(port, int) and 0 <= port < 2 ** 16): + if not (isinstance(port, int) and 0 <= port < 2**16): errors.append( SupersetError( message=( diff --git a/superset/db_engine_specs/bigquery.py b/superset/db_engine_specs/bigquery.py index 30e04c4f2fe9b..2c9f81b1bdde0 100644 --- a/superset/db_engine_specs/bigquery.py +++ b/superset/db_engine_specs/bigquery.py @@ -72,7 +72,8 @@ class BigQueryParametersSchema(Schema): credentials_info = EncryptedString( - required=False, description="Contents of BigQuery JSON credentials.", + required=False, + description="Contents of BigQuery JSON credentials.", ) query = fields.Dict(required=False) diff --git a/superset/db_engine_specs/duckdb.py b/superset/db_engine_specs/duckdb.py new file mode 100644 index 0000000000000..9f2d7422128b1 --- /dev/null +++ b/superset/db_engine_specs/duckdb.py @@ -0,0 +1,80 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +from __future__ import annotations + +import re +from datetime import datetime +from typing import Any, Dict, List, Optional, Pattern, Tuple, TYPE_CHECKING + +from flask_babel import gettext as __ +from sqlalchemy.engine.reflection import Inspector + +from superset.db_engine_specs.base import BaseEngineSpec +from superset.errors import SupersetErrorType +from superset.utils import core as utils + +if TYPE_CHECKING: + # prevent circular imports + from superset.models.core import Database + + +COLUMN_DOES_NOT_EXIST_REGEX = re.compile("no such column: (?P.+)") + + +class DuckDBEngineSpec(BaseEngineSpec): + engine = "duckdb" + engine_name = "DuckDB" + + _time_grain_expressions = { + None: "{col}", + "PT1S": "DATE_TRUNC('second', {col})", + "PT1M": "DATE_TRUNC('minute', {col})", + "PT1H": "DATE_TRUNC('hour', {col})", + "P1D": "DATE_TRUNC('day', {col})", + "P1W": "DATE_TRUNC('week', {col})", + "P1M": "DATE_TRUNC('month', {col})", + "P0.25Y": "DATE_TRUNC('quarter', {col})", + "P1Y": "DATE_TRUNC('year', {col})", + } + + custom_errors: Dict[Pattern[str], Tuple[str, SupersetErrorType, Dict[str, Any]]] = { + COLUMN_DOES_NOT_EXIST_REGEX: ( + __('We can\'t seem to resolve the column "%(column_name)s"'), + SupersetErrorType.COLUMN_DOES_NOT_EXIST_ERROR, + {}, + ), + } + + @classmethod + def epoch_to_dttm(cls) -> str: + return "datetime({col}, 'unixepoch')" + + @classmethod + def convert_dttm( + cls, target_type: str, dttm: datetime, db_extra: Optional[Dict[str, Any]] = None + ) -> Optional[str]: + tt = target_type.upper() + if tt in (utils.TemporalType.TEXT, utils.TemporalType.DATETIME): + return f"""'{dttm.isoformat(sep=" ", timespec="microseconds")}'""" + return None + + @classmethod + def get_table_names( + cls, database: Database, inspector: Inspector, schema: Optional[str] + ) -> List[str]: + """Need to disregard the schema for DuckDB""" + return sorted(inspector.get_table_names()) diff --git a/superset/db_engine_specs/gsheets.py b/superset/db_engine_specs/gsheets.py index 3889e990795d9..888513f518482 100644 --- a/superset/db_engine_specs/gsheets.py +++ b/superset/db_engine_specs/gsheets.py @@ -82,7 +82,10 @@ class GSheetsEngineSpec(SqliteEngineSpec): @classmethod def modify_url_for_impersonation( - cls, url: URL, impersonate_user: bool, username: Optional[str], + cls, + url: URL, + impersonate_user: bool, + username: Optional[str], ) -> None: if impersonate_user and username is not None: user = security_manager.find_user(username=username) @@ -91,7 +94,10 @@ def modify_url_for_impersonation( @classmethod def extra_table_metadata( - cls, database: "Database", table_name: str, schema_name: str, + cls, + database: "Database", + table_name: str, + schema_name: str, ) -> Dict[str, Any]: engine = cls.get_engine(database, schema=schema_name) with closing(engine.raw_connection()) as conn: @@ -150,7 +156,8 @@ def parameters_json_schema(cls) -> Any: @classmethod def validate_parameters( - cls, parameters: GSheetsParametersType, + cls, + parameters: GSheetsParametersType, ) -> List[SupersetError]: errors: List[SupersetError] = [] encrypted_credentials = parameters.get("service_account_info") or "{}" @@ -173,7 +180,9 @@ def validate_parameters( subject = g.user.email if g.user else None engine = create_engine( - "gsheets://", service_account_info=encrypted_credentials, subject=subject, + "gsheets://", + service_account_info=encrypted_credentials, + subject=subject, ) conn = engine.connect() idx = 0 diff --git a/superset/db_engine_specs/hive.py b/superset/db_engine_specs/hive.py index 611a98448b2ce..5f7e01d50271f 100644 --- a/superset/db_engine_specs/hive.py +++ b/superset/db_engine_specs/hive.py @@ -496,7 +496,10 @@ def modify_url_for_impersonation( @classmethod def update_impersonation_config( - cls, connect_args: Dict[str, Any], uri: str, username: Optional[str], + cls, + connect_args: Dict[str, Any], + uri: str, + username: Optional[str], ) -> None: """ Update a configuration dictionary diff --git a/superset/db_engine_specs/mysql.py b/superset/db_engine_specs/mysql.py index 90cbe621faf56..9aa3c85e0fe62 100644 --- a/superset/db_engine_specs/mysql.py +++ b/superset/db_engine_specs/mysql.py @@ -74,24 +74,56 @@ class MySQLEngineSpec(BaseEngineSpec, BasicParametersMixin): encryption_parameters = {"ssl": "1"} column_type_mappings = ( - (re.compile(r"^int.*", re.IGNORECASE), INTEGER(), GenericDataType.NUMERIC,), - (re.compile(r"^tinyint", re.IGNORECASE), TINYINT(), GenericDataType.NUMERIC,), + ( + re.compile(r"^int.*", re.IGNORECASE), + INTEGER(), + GenericDataType.NUMERIC, + ), + ( + re.compile(r"^tinyint", re.IGNORECASE), + TINYINT(), + GenericDataType.NUMERIC, + ), ( re.compile(r"^mediumint", re.IGNORECASE), MEDIUMINT(), GenericDataType.NUMERIC, ), - (re.compile(r"^decimal", re.IGNORECASE), DECIMAL(), GenericDataType.NUMERIC,), - (re.compile(r"^float", re.IGNORECASE), FLOAT(), GenericDataType.NUMERIC,), - (re.compile(r"^double", re.IGNORECASE), DOUBLE(), GenericDataType.NUMERIC,), - (re.compile(r"^bit", re.IGNORECASE), BIT(), GenericDataType.NUMERIC,), - (re.compile(r"^tinytext", re.IGNORECASE), TINYTEXT(), GenericDataType.STRING,), + ( + re.compile(r"^decimal", re.IGNORECASE), + DECIMAL(), + GenericDataType.NUMERIC, + ), + ( + re.compile(r"^float", re.IGNORECASE), + FLOAT(), + GenericDataType.NUMERIC, + ), + ( + re.compile(r"^double", re.IGNORECASE), + DOUBLE(), + GenericDataType.NUMERIC, + ), + ( + re.compile(r"^bit", re.IGNORECASE), + BIT(), + GenericDataType.NUMERIC, + ), + ( + re.compile(r"^tinytext", re.IGNORECASE), + TINYTEXT(), + GenericDataType.STRING, + ), ( re.compile(r"^mediumtext", re.IGNORECASE), MEDIUMTEXT(), GenericDataType.STRING, ), - (re.compile(r"^longtext", re.IGNORECASE), LONGTEXT(), GenericDataType.STRING,), + ( + re.compile(r"^longtext", re.IGNORECASE), + LONGTEXT(), + GenericDataType.STRING, + ), ) _time_grain_expressions = { diff --git a/superset/db_engine_specs/postgres.py b/superset/db_engine_specs/postgres.py index f6c6888ee97bb..f81e2f7b3e4a6 100644 --- a/superset/db_engine_specs/postgres.py +++ b/superset/db_engine_specs/postgres.py @@ -188,8 +188,16 @@ class PostgresEngineSpec(PostgresBaseEngineSpec, BasicParametersMixin): lambda match: ARRAY(int(match[2])) if match[2] else String(), GenericDataType.STRING, ), - (re.compile(r"^json.*", re.IGNORECASE), JSON(), GenericDataType.STRING,), - (re.compile(r"^enum.*", re.IGNORECASE), ENUM(), GenericDataType.STRING,), + ( + re.compile(r"^json.*", re.IGNORECASE), + JSON(), + GenericDataType.STRING, + ), + ( + re.compile(r"^enum.*", re.IGNORECASE), + ENUM(), + GenericDataType.STRING, + ), ) @classmethod diff --git a/superset/db_engine_specs/presto.py b/superset/db_engine_specs/presto.py index 62e2f349f1e4e..60cb9c7acaca6 100644 --- a/superset/db_engine_specs/presto.py +++ b/superset/db_engine_specs/presto.py @@ -214,7 +214,10 @@ def get_allow_cost_estimate(cls, extra: Dict[str, Any]) -> bool: @classmethod def update_impersonation_config( - cls, connect_args: Dict[str, Any], uri: str, username: Optional[str], + cls, + connect_args: Dict[str, Any], + uri: str, + username: Optional[str], ) -> None: """ Update a configuration dictionary @@ -487,7 +490,11 @@ def _show_columns( types.VARBINARY(), GenericDataType.STRING, ), - (re.compile(r"^json.*", re.IGNORECASE), types.JSON(), GenericDataType.STRING,), + ( + re.compile(r"^json.*", re.IGNORECASE), + types.JSON(), + GenericDataType.STRING, + ), ( re.compile(r"^date.*", re.IGNORECASE), types.DATETIME(), diff --git a/superset/db_engine_specs/trino.py b/superset/db_engine_specs/trino.py index d902a917a6a11..31e9a0aa7b3a3 100644 --- a/superset/db_engine_specs/trino.py +++ b/superset/db_engine_specs/trino.py @@ -94,7 +94,10 @@ def adjust_database_uri( @classmethod def update_impersonation_config( - cls, connect_args: Dict[str, Any], uri: str, username: Optional[str], + cls, + connect_args: Dict[str, Any], + uri: str, + username: Optional[str], ) -> None: """ Update a configuration dictionary diff --git a/superset/examples/birth_names.py b/superset/examples/birth_names.py index 830d39801124d..1380958b2ad4a 100644 --- a/superset/examples/birth_names.py +++ b/superset/examples/birth_names.py @@ -186,8 +186,16 @@ def create_slices(tbl: SqlaTable, admin_owner: bool) -> Tuple[List[Slice], List[ default_query_context = { "result_format": "json", "result_type": "full", - "datasource": {"id": tbl.id, "type": "table",}, - "queries": [{"columns": [], "metrics": [],},], + "datasource": { + "id": tbl.id, + "type": "table", + }, + "queries": [ + { + "columns": [], + "metrics": [], + }, + ], } admin = get_admin_user() @@ -381,7 +389,12 @@ def create_slices(tbl: SqlaTable, admin_owner: bool) -> Tuple[List[Slice], List[ ), query_context=get_slice_json( default_query_context, - queries=[{"columns": ["name", "state"], "metrics": [metric],}], + queries=[ + { + "columns": ["name", "state"], + "metrics": [metric], + } + ], ), ), ] diff --git a/superset/examples/world_bank.py b/superset/examples/world_bank.py index 0b0473f93232e..015a8f9297978 100644 --- a/superset/examples/world_bank.py +++ b/superset/examples/world_bank.py @@ -43,7 +43,9 @@ def load_world_bank_health_n_pop( # pylint: disable=too-many-locals, too-many-statements - only_metadata: bool = False, force: bool = False, sample: bool = False, + only_metadata: bool = False, + force: bool = False, + sample: bool = False, ) -> None: """Loads the world bank health dataset, slices and a dashboard""" tbl_name = "wb_health_population" diff --git a/superset/exceptions.py b/superset/exceptions.py index 6b259044862ba..2ae75f122970f 100644 --- a/superset/exceptions.py +++ b/superset/exceptions.py @@ -129,7 +129,10 @@ def __init__( extra: Optional[Dict[str, Any]] = None, ) -> None: super().__init__( - SupersetErrorType.GENERIC_DB_ENGINE_ERROR, message, level, extra, + SupersetErrorType.GENERIC_DB_ENGINE_ERROR, + message, + level, + extra, ) @@ -144,7 +147,10 @@ def __init__( extra: Optional[Dict[str, Any]] = None, ) -> None: super().__init__( - error, message, level, extra, + error, + message, + level, + extra, ) diff --git a/superset/explore/form_data/commands/create.py b/superset/explore/form_data/commands/create.py index a325241c6641d..7b1f866c505df 100644 --- a/superset/explore/form_data/commands/create.py +++ b/superset/explore/form_data/commands/create.py @@ -24,8 +24,9 @@ from superset.explore.form_data.commands.state import TemporaryExploreState from superset.explore.utils import check_access from superset.extensions import cache_manager +from superset.key_value.utils import random_key from superset.temporary_cache.commands.exceptions import TemporaryCacheCreateFailedError -from superset.temporary_cache.utils import cache_key, random_key +from superset.temporary_cache.utils import cache_key from superset.utils.schema import validate_json logger = logging.getLogger(__name__) diff --git a/superset/explore/form_data/commands/update.py b/superset/explore/form_data/commands/update.py index 0c986ee102cb0..596c5f6e27ef2 100644 --- a/superset/explore/form_data/commands/update.py +++ b/superset/explore/form_data/commands/update.py @@ -26,11 +26,12 @@ from superset.explore.form_data.commands.state import TemporaryExploreState from superset.explore.utils import check_access from superset.extensions import cache_manager +from superset.key_value.utils import random_key from superset.temporary_cache.commands.exceptions import ( TemporaryCacheAccessDeniedError, TemporaryCacheUpdateFailedError, ) -from superset.temporary_cache.utils import cache_key, random_key +from superset.temporary_cache.utils import cache_key from superset.utils.schema import validate_json logger = logging.getLogger(__name__) @@ -38,7 +39,8 @@ class UpdateFormDataCommand(BaseCommand, ABC): def __init__( - self, cmd_params: CommandParameters, + self, + cmd_params: CommandParameters, ): self._cmd_params = cmd_params diff --git a/superset/explore/permalink/api.py b/superset/explore/permalink/api.py index 025b1a45481c8..1d78e4354ae19 100644 --- a/superset/explore/permalink/api.py +++ b/superset/explore/permalink/api.py @@ -16,7 +16,7 @@ # under the License. import logging -from flask import current_app, g, request, Response +from flask import g, request, Response from flask_appbuilder.api import BaseApi, expose, protect, safe from marshmallow import ValidationError @@ -98,12 +98,9 @@ def post(self) -> Response: 500: $ref: '#/components/responses/500' """ - key_type = current_app.config["PERMALINK_KEY_TYPE"] try: state = self.add_model_schema.load(request.json) - key = CreateExplorePermalinkCommand( - actor=g.user, state=state, key_type=key_type, - ).run() + key = CreateExplorePermalinkCommand(actor=g.user, state=state).run() http_origin = request.headers.environ.get("HTTP_ORIGIN") url = f"{http_origin}/superset/explore/p/{key}/" return self.response(201, key=key, url=url) @@ -159,16 +156,16 @@ def get(self, key: str) -> Response: $ref: '#/components/responses/500' """ try: - key_type = current_app.config["PERMALINK_KEY_TYPE"] - value = GetExplorePermalinkCommand( - actor=g.user, key=key, key_type=key_type - ).run() + value = GetExplorePermalinkCommand(actor=g.user, key=key).run() if not value: return self.response_404() return self.response(200, **value) except ExplorePermalinkInvalidStateError as ex: return self.response(400, message=str(ex)) - except (ChartAccessDeniedError, DatasetAccessDeniedError,) as ex: + except ( + ChartAccessDeniedError, + DatasetAccessDeniedError, + ) as ex: return self.response(403, message=str(ex)) except (ChartNotFoundError, DatasetNotFoundError) as ex: return self.response(404, message=str(ex)) diff --git a/superset/explore/permalink/commands/base.py b/superset/explore/permalink/commands/base.py index 01a96405da026..bef9546e21686 100644 --- a/superset/explore/permalink/commands/base.py +++ b/superset/explore/permalink/commands/base.py @@ -17,7 +17,13 @@ from abc import ABC from superset.commands.base import BaseCommand +from superset.key_value.shared_entries import get_permalink_salt +from superset.key_value.types import KeyValueResource, SharedKey class BaseExplorePermalinkCommand(BaseCommand, ABC): - resource = "explore_permalink" + resource: KeyValueResource = KeyValueResource.EXPLORE_PERMALINK + + @property + def salt(self) -> str: + return get_permalink_salt(SharedKey.EXPLORE_PERMALINK_SALT) diff --git a/superset/explore/permalink/commands/create.py b/superset/explore/permalink/commands/create.py index 936f20063b9bd..c09ca3b372121 100644 --- a/superset/explore/permalink/commands/create.py +++ b/superset/explore/permalink/commands/create.py @@ -24,18 +24,17 @@ from superset.explore.permalink.exceptions import ExplorePermalinkCreateFailedError from superset.explore.utils import check_access from superset.key_value.commands.create import CreateKeyValueCommand -from superset.key_value.types import KeyType +from superset.key_value.utils import encode_permalink_key logger = logging.getLogger(__name__) class CreateExplorePermalinkCommand(BaseExplorePermalinkCommand): - def __init__(self, actor: User, state: Dict[str, Any], key_type: KeyType): + def __init__(self, actor: User, state: Dict[str, Any]): self.actor = actor self.chart_id: Optional[int] = state["formData"].get("slice_id") self.datasource: str = state["formData"]["datasource"] self.state = state - self.key_type = key_type def run(self) -> str: self.validate() @@ -52,9 +51,11 @@ def run(self) -> str: actor=self.actor, resource=self.resource, value=value, - key_type=self.key_type, ) - return command.run() + key = command.run() + if key.id is None: + raise ExplorePermalinkCreateFailedError("Unexpected missing key id") + return encode_permalink_key(key=key.id, salt=self.salt) except SQLAlchemyError as ex: logger.exception("Error running create command") raise ExplorePermalinkCreateFailedError() from ex diff --git a/superset/explore/permalink/commands/get.py b/superset/explore/permalink/commands/get.py index e22ab8332f3dc..1e3ea1fdc6f92 100644 --- a/superset/explore/permalink/commands/get.py +++ b/superset/explore/permalink/commands/get.py @@ -27,24 +27,23 @@ from superset.explore.utils import check_access from superset.key_value.commands.get import GetKeyValueCommand from superset.key_value.exceptions import KeyValueGetFailedError, KeyValueParseKeyError -from superset.key_value.types import KeyType +from superset.key_value.utils import decode_permalink_id logger = logging.getLogger(__name__) class GetExplorePermalinkCommand(BaseExplorePermalinkCommand): - def __init__( - self, actor: User, key: str, key_type: KeyType, - ): + def __init__(self, actor: User, key: str): self.actor = actor self.key = key - self.key_type = key_type def run(self) -> Optional[ExplorePermalinkValue]: self.validate() try: + key = decode_permalink_id(self.key, salt=self.salt) value: Optional[ExplorePermalinkValue] = GetKeyValueCommand( - resource=self.resource, key=self.key, key_type=self.key_type + resource=self.resource, + key=key, ).run() if value: chart_id: Optional[int] = value.get("chartId") diff --git a/superset/explore/permalink/schemas.py b/superset/explore/permalink/schemas.py index 7392c2deda250..e1f9d069b853f 100644 --- a/superset/explore/permalink/schemas.py +++ b/superset/explore/permalink/schemas.py @@ -19,7 +19,9 @@ class ExplorePermalinkPostSchema(Schema): formData = fields.Dict( - required=True, allow_none=False, description="Chart form data", + required=True, + allow_none=False, + description="Chart form data", ) urlParams = fields.List( fields.Tuple( diff --git a/superset/extensions/metastore_cache.py b/superset/extensions/metastore_cache.py index 156f7771fbce7..1e5cff7ee3ccf 100644 --- a/superset/extensions/metastore_cache.py +++ b/superset/extensions/metastore_cache.py @@ -16,7 +16,6 @@ # under the License. from datetime import datetime, timedelta -from hashlib import md5 from typing import Any, Dict, List, Optional from uuid import UUID, uuid3 @@ -24,10 +23,10 @@ from flask_caching import BaseCache from superset.key_value.exceptions import KeyValueCreateFailedError -from superset.key_value.types import KeyType +from superset.key_value.types import KeyValueResource +from superset.key_value.utils import get_uuid_namespace -RESOURCE = "superset_metastore_cache" -KEY_TYPE: KeyType = "uuid" +RESOURCE = KeyValueResource.METASTORE_CACHE class SupersetMetastoreCache(BaseCache): @@ -39,15 +38,12 @@ def __init__(self, namespace: UUID, default_timeout: int = 300) -> None: def factory( cls, app: Flask, config: Dict[str, Any], args: List[Any], kwargs: Dict[str, Any] ) -> BaseCache: - # base namespace for generating deterministic UUIDs - md5_obj = md5() seed = config.get("CACHE_KEY_PREFIX", "") - md5_obj.update(seed.encode("utf-8")) - kwargs["namespace"] = UUID(md5_obj.hexdigest()) + kwargs["namespace"] = get_uuid_namespace(seed) return cls(*args, **kwargs) - def get_key(self, key: str) -> str: - return str(uuid3(self.namespace, key)) + def get_key(self, key: str) -> UUID: + return uuid3(self.namespace, key) @staticmethod def _prune() -> None: @@ -70,7 +66,6 @@ def set(self, key: str, value: Any, timeout: Optional[int] = None) -> bool: UpsertKeyValueCommand( resource=RESOURCE, - key_type=KEY_TYPE, key=self.get_key(key), value=value, expires_on=self._get_expiry(timeout), @@ -85,7 +80,6 @@ def add(self, key: str, value: Any, timeout: Optional[int] = None) -> bool: CreateKeyValueCommand( resource=RESOURCE, value=value, - key_type=KEY_TYPE, key=self.get_key(key), expires_on=self._get_expiry(timeout), ).run() @@ -98,9 +92,7 @@ def get(self, key: str) -> Any: # pylint: disable=import-outside-toplevel from superset.key_value.commands.get import GetKeyValueCommand - return GetKeyValueCommand( - resource=RESOURCE, key_type=KEY_TYPE, key=self.get_key(key), - ).run() + return GetKeyValueCommand(resource=RESOURCE, key=self.get_key(key)).run() def has(self, key: str) -> bool: entry = self.get(key) @@ -112,6 +104,4 @@ def delete(self, key: str) -> Any: # pylint: disable=import-outside-toplevel from superset.key_value.commands.delete import DeleteKeyValueCommand - return DeleteKeyValueCommand( - resource=RESOURCE, key_type=KEY_TYPE, key=self.get_key(key), - ).run() + return DeleteKeyValueCommand(resource=RESOURCE, key=self.get_key(key)).run() diff --git a/superset/tasks/alerts/__init__.py b/superset/importexport/__init__.py similarity index 97% rename from superset/tasks/alerts/__init__.py rename to superset/importexport/__init__.py index fd9417fe5c1e9..13a83393a9124 100644 --- a/superset/tasks/alerts/__init__.py +++ b/superset/importexport/__init__.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information diff --git a/superset/initialization/__init__.py b/superset/initialization/__init__.py index f6ffd3ec3a09e..2b970b718fadf 100644 --- a/superset/initialization/__init__.py +++ b/superset/initialization/__init__.py @@ -150,13 +150,7 @@ def init_views(self) -> None: from superset.reports.logs.api import ReportExecutionLogRestApi from superset.security.api import SecurityRestApi from superset.views.access_requests import AccessRequestsModelView - from superset.views.alerts import ( - AlertLogModelView, - AlertModelView, - AlertObservationModelView, - AlertView, - ReportView, - ) + from superset.views.alerts import AlertView from superset.views.annotations import ( AnnotationLayerModelView, AnnotationModelView, @@ -185,10 +179,6 @@ def init_views(self) -> None: from superset.views.log.api import LogRestApi from superset.views.log.views import LogModelView from superset.views.redirects import R - from superset.views.schedules import ( - DashboardEmailScheduleView, - SliceEmailScheduleView, - ) from superset.views.sql_lab import ( SavedQueryView, SavedQueryViewApi, @@ -393,50 +383,6 @@ def init_views(self) -> None: # # Conditionally setup email views # - if self.config["ENABLE_SCHEDULED_EMAIL_REPORTS"]: - logging.warning( - "ENABLE_SCHEDULED_EMAIL_REPORTS " - "is deprecated and will be removed in version 2.0.0" - ) - - appbuilder.add_separator( - "Manage", cond=lambda: self.config["ENABLE_SCHEDULED_EMAIL_REPORTS"] - ) - appbuilder.add_view( - DashboardEmailScheduleView, - "Dashboard Email Schedules", - label=__("Dashboard Emails"), - category="Manage", - category_label=__("Manage"), - icon="fa-search", - menu_cond=lambda: self.config["ENABLE_SCHEDULED_EMAIL_REPORTS"], - ) - appbuilder.add_view( - SliceEmailScheduleView, - "Chart Emails", - label=__("Chart Email Schedules"), - category="Manage", - category_label=__("Manage"), - icon="fa-search", - menu_cond=lambda: self.config["ENABLE_SCHEDULED_EMAIL_REPORTS"], - ) - - if self.config["ENABLE_ALERTS"]: - logging.warning( - "ENABLE_ALERTS is deprecated and will be removed in version 2.0.0" - ) - - appbuilder.add_view( - AlertModelView, - "Alerts", - label=__("Alerts"), - category="Manage", - category_label=__("Manage"), - icon="fa-exclamation-triangle", - menu_cond=lambda: bool(self.config["ENABLE_ALERTS"]), - ) - appbuilder.add_view_no_menu(AlertLogModelView) - appbuilder.add_view_no_menu(AlertObservationModelView) appbuilder.add_view( AlertView, @@ -447,7 +393,6 @@ def init_views(self) -> None: icon="fa-exclamation-triangle", menu_cond=lambda: feature_flag_manager.is_feature_enabled("ALERT_REPORTS"), ) - appbuilder.add_view_no_menu(ReportView) appbuilder.add_view( AccessRequestsModelView, diff --git a/superset/jinja_context.py b/superset/jinja_context.py index f21fbbb1b745a..ab3aa5070ca66 100644 --- a/superset/jinja_context.py +++ b/superset/jinja_context.py @@ -355,7 +355,10 @@ def safe_proxy(func: Callable[..., Any], *args: Any, **kwargs: Any) -> Any: return_value = json.loads(json.dumps(return_value)) except TypeError as ex: raise SupersetTemplateException( - _("Unsupported return value for method %(name)s", name=func.__name__,) + _( + "Unsupported return value for method %(name)s", + name=func.__name__, + ) ) from ex return return_value diff --git a/superset/key_value/commands/__init__.py b/superset/key_value/commands/__init__.py new file mode 100644 index 0000000000000..13a83393a9124 --- /dev/null +++ b/superset/key_value/commands/__init__.py @@ -0,0 +1,16 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. diff --git a/superset/key_value/commands/create.py b/superset/key_value/commands/create.py index e3c228adbac56..5125ce7b01e28 100644 --- a/superset/key_value/commands/create.py +++ b/superset/key_value/commands/create.py @@ -17,7 +17,7 @@ import logging import pickle from datetime import datetime -from typing import Any, Optional +from typing import Any, Optional, Union from uuid import UUID from flask_appbuilder.security.sqla.models import User @@ -27,27 +27,25 @@ from superset.commands.base import BaseCommand from superset.key_value.exceptions import KeyValueCreateFailedError from superset.key_value.models import KeyValueEntry -from superset.key_value.types import KeyType -from superset.key_value.utils import extract_key +from superset.key_value.types import Key, KeyValueResource logger = logging.getLogger(__name__) class CreateKeyValueCommand(BaseCommand): actor: Optional[User] - resource: str + resource: KeyValueResource value: Any - key_type: KeyType - key: Optional[str] + key: Optional[Union[int, UUID]] expires_on: Optional[datetime] + # pylint: disable=too-many-arguments def __init__( self, - resource: str, + resource: KeyValueResource, value: Any, - key_type: KeyType = "uuid", actor: Optional[User] = None, - key: Optional[str] = None, + key: Optional[Union[int, UUID]] = None, expires_on: Optional[datetime] = None, ): """ @@ -55,7 +53,6 @@ def __init__( :param resource: the resource (dashboard, chart etc) :param value: the value to persist in the key-value store - :param key_type: the type of the key to return :param actor: the user performing the command :param key: id of entry (autogenerated if undefined) :param expires_on: entry expiration time @@ -64,11 +61,10 @@ def __init__( self.resource = resource self.actor = actor self.value = value - self.key_type = key_type self.key = key self.expires_on = expires_on - def run(self) -> str: + def run(self) -> Key: try: return self.create() except SQLAlchemyError as ex: @@ -79,9 +75,9 @@ def run(self) -> str: def validate(self) -> None: pass - def create(self) -> str: + def create(self) -> Key: entry = KeyValueEntry( - resource=self.resource, + resource=self.resource.value, value=pickle.dumps(self.value), created_on=datetime.now(), created_by_fk=None @@ -91,12 +87,12 @@ def create(self) -> str: ) if self.key is not None: try: - if self.key_type == "uuid": - entry.uuid = UUID(self.key) + if isinstance(self.key, UUID): + entry.uuid = self.key else: - entry.id = int(self.key) + entry.id = self.key except ValueError as ex: raise KeyValueCreateFailedError() from ex db.session.add(entry) db.session.commit() - return extract_key(entry, self.key_type) + return Key(id=entry.id, uuid=entry.uuid) diff --git a/superset/key_value/commands/delete.py b/superset/key_value/commands/delete.py index 06cf4230c1ee2..f8ad291714ae1 100644 --- a/superset/key_value/commands/delete.py +++ b/superset/key_value/commands/delete.py @@ -15,40 +15,35 @@ # specific language governing permissions and limitations # under the License. import logging -from typing import Optional +from typing import Union +from uuid import UUID -from flask_appbuilder.security.sqla.models import User from sqlalchemy.exc import SQLAlchemyError from superset import db from superset.commands.base import BaseCommand from superset.key_value.exceptions import KeyValueDeleteFailedError from superset.key_value.models import KeyValueEntry -from superset.key_value.types import KeyType +from superset.key_value.types import KeyValueResource from superset.key_value.utils import get_filter logger = logging.getLogger(__name__) class DeleteKeyValueCommand(BaseCommand): - key: str - key_type: KeyType - resource: str + key: Union[int, UUID] + resource: KeyValueResource - def __init__( - self, resource: str, key: str, key_type: KeyType = "uuid", - ): + def __init__(self, resource: KeyValueResource, key: Union[int, UUID]): """ Delete a key-value pair :param resource: the resource (dashboard, chart etc) :param key: the key to delete - :param key_type: the type of key :return: was the entry deleted or not """ self.resource = resource self.key = key - self.key_type = key_type def run(self) -> bool: try: @@ -62,7 +57,7 @@ def validate(self) -> None: pass def delete(self) -> bool: - filter_ = get_filter(self.resource, self.key, self.key_type) + filter_ = get_filter(self.resource, self.key) entry = ( db.session.query(KeyValueEntry) .filter_by(**filter_) diff --git a/superset/key_value/commands/delete_expired.py b/superset/key_value/commands/delete_expired.py index 09507397e187f..4031d13968302 100644 --- a/superset/key_value/commands/delete_expired.py +++ b/superset/key_value/commands/delete_expired.py @@ -17,20 +17,22 @@ import logging from datetime import datetime +from sqlalchemy import and_ from sqlalchemy.exc import SQLAlchemyError from superset import db from superset.commands.base import BaseCommand from superset.key_value.exceptions import KeyValueDeleteFailedError from superset.key_value.models import KeyValueEntry +from superset.key_value.types import KeyValueResource logger = logging.getLogger(__name__) class DeleteExpiredKeyValueCommand(BaseCommand): - resource: str + resource: KeyValueResource - def __init__(self, resource: str): + def __init__(self, resource: KeyValueResource): """ Delete all expired key-value pairs @@ -50,11 +52,15 @@ def run(self) -> None: def validate(self) -> None: pass - @staticmethod - def delete_expired() -> None: + def delete_expired(self) -> None: ( db.session.query(KeyValueEntry) - .filter(KeyValueEntry.expires_on <= datetime.now()) + .filter( + and_( + KeyValueEntry.resource == self.resource.value, + KeyValueEntry.expires_on <= datetime.now(), + ) + ) .delete() ) db.session.commit() diff --git a/superset/key_value/commands/get.py b/superset/key_value/commands/get.py index b0530b976ba7c..01560949e37ff 100644 --- a/superset/key_value/commands/get.py +++ b/superset/key_value/commands/get.py @@ -18,7 +18,8 @@ import logging import pickle from datetime import datetime -from typing import Any, Optional +from typing import Any, Optional, Union +from uuid import UUID from sqlalchemy.exc import SQLAlchemyError @@ -26,29 +27,26 @@ from superset.commands.base import BaseCommand from superset.key_value.exceptions import KeyValueGetFailedError from superset.key_value.models import KeyValueEntry -from superset.key_value.types import KeyType +from superset.key_value.types import KeyValueResource from superset.key_value.utils import get_filter logger = logging.getLogger(__name__) class GetKeyValueCommand(BaseCommand): - key: str - key_type: KeyType - resource: str + resource: KeyValueResource + key: Union[int, UUID] - def __init__(self, resource: str, key: str, key_type: KeyType = "uuid"): + def __init__(self, resource: KeyValueResource, key: Union[int, UUID]): """ Retrieve a key value entry :param resource: the resource (dashboard, chart etc) :param key: the key to retrieve - :param key_type: the type of the key to retrieve :return: the value associated with the key if present """ self.resource = resource self.key = key - self.key_type = key_type def run(self) -> Any: try: @@ -61,7 +59,7 @@ def validate(self) -> None: pass def get(self) -> Optional[Any]: - filter_ = get_filter(self.resource, self.key, self.key_type) + filter_ = get_filter(self.resource, self.key) entry = ( db.session.query(KeyValueEntry) .filter_by(**filter_) diff --git a/superset/key_value/commands/update.py b/superset/key_value/commands/update.py index b739cfea86041..48fd8daa8a458 100644 --- a/superset/key_value/commands/update.py +++ b/superset/key_value/commands/update.py @@ -18,7 +18,8 @@ import logging import pickle from datetime import datetime -from typing import Any, Optional +from typing import Any, Optional, Union +from uuid import UUID from flask_appbuilder.security.sqla.models import User from sqlalchemy.exc import SQLAlchemyError @@ -27,27 +28,26 @@ from superset.commands.base import BaseCommand from superset.key_value.exceptions import KeyValueUpdateFailedError from superset.key_value.models import KeyValueEntry -from superset.key_value.types import KeyType -from superset.key_value.utils import extract_key, get_filter +from superset.key_value.types import Key, KeyValueResource +from superset.key_value.utils import get_filter logger = logging.getLogger(__name__) class UpdateKeyValueCommand(BaseCommand): actor: Optional[User] - resource: str + resource: KeyValueResource value: Any - key: str - key_type: KeyType + key: Union[int, UUID] expires_on: Optional[datetime] + # pylint: disable=too-many-argumentsåå def __init__( self, - resource: str, - key: str, + resource: KeyValueResource, + key: Union[int, UUID], value: Any, actor: Optional[User] = None, - key_type: KeyType = "uuid", expires_on: Optional[datetime] = None, ): """ @@ -57,7 +57,6 @@ def __init__( :param key: the key to update :param value: the value to persist in the key-value store :param actor: the user performing the command - :param key_type: the type of the key to update :param expires_on: entry expiration time :return: the key associated with the updated value """ @@ -65,10 +64,9 @@ def __init__( self.resource = resource self.key = key self.value = value - self.key_type = key_type self.expires_on = expires_on - def run(self) -> Optional[str]: + def run(self) -> Optional[Key]: try: return self.update() except SQLAlchemyError as ex: @@ -79,8 +77,8 @@ def run(self) -> Optional[str]: def validate(self) -> None: pass - def update(self) -> Optional[str]: - filter_ = get_filter(self.resource, self.key, self.key_type) + def update(self) -> Optional[Key]: + filter_ = get_filter(self.resource, self.key) entry: KeyValueEntry = ( db.session.query(KeyValueEntry) .filter_by(**filter_) @@ -96,6 +94,6 @@ def update(self) -> Optional[str]: ) db.session.merge(entry) db.session.commit() - return extract_key(entry, self.key_type) + return Key(id=entry.id, uuid=entry.uuid) return None diff --git a/superset/key_value/commands/upsert.py b/superset/key_value/commands/upsert.py index 4afc4c38e424a..8fd0bd240f2be 100644 --- a/superset/key_value/commands/upsert.py +++ b/superset/key_value/commands/upsert.py @@ -18,7 +18,8 @@ import logging import pickle from datetime import datetime -from typing import Any, Optional +from typing import Any, Optional, Union +from uuid import UUID from flask_appbuilder.security.sqla.models import User from sqlalchemy.exc import SQLAlchemyError @@ -28,27 +29,26 @@ from superset.key_value.commands.create import CreateKeyValueCommand from superset.key_value.exceptions import KeyValueUpdateFailedError from superset.key_value.models import KeyValueEntry -from superset.key_value.types import KeyType -from superset.key_value.utils import extract_key, get_filter +from superset.key_value.types import Key, KeyValueResource +from superset.key_value.utils import get_filter logger = logging.getLogger(__name__) class UpsertKeyValueCommand(BaseCommand): actor: Optional[User] - resource: str + resource: KeyValueResource value: Any - key: str - key_type: KeyType + key: Union[int, UUID] expires_on: Optional[datetime] + # pylint: disable=too-many-arguments def __init__( self, - resource: str, - key: str, + resource: KeyValueResource, + key: Union[int, UUID], value: Any, actor: Optional[User] = None, - key_type: KeyType = "uuid", expires_on: Optional[datetime] = None, ): """ @@ -66,10 +66,9 @@ def __init__( self.resource = resource self.key = key self.value = value - self.key_type = key_type self.expires_on = expires_on - def run(self) -> Optional[str]: + def run(self) -> Optional[Key]: try: return self.upsert() except SQLAlchemyError as ex: @@ -80,8 +79,8 @@ def run(self) -> Optional[str]: def validate(self) -> None: pass - def upsert(self) -> Optional[str]: - filter_ = get_filter(self.resource, self.key, self.key_type) + def upsert(self) -> Optional[Key]: + filter_ = get_filter(self.resource, self.key) entry: KeyValueEntry = ( db.session.query(KeyValueEntry) .filter_by(**filter_) @@ -97,13 +96,11 @@ def upsert(self) -> Optional[str]: ) db.session.merge(entry) db.session.commit() - return extract_key(entry, self.key_type) - else: - return CreateKeyValueCommand( - resource=self.resource, - value=self.value, - key_type=self.key_type, - actor=self.actor, - key=self.key, - expires_on=self.expires_on, - ).run() + return Key(entry.id, entry.uuid) + return CreateKeyValueCommand( + resource=self.resource, + value=self.value, + actor=self.actor, + key=self.key, + expires_on=self.expires_on, + ).run() diff --git a/superset/key_value/shared_entries.py b/superset/key_value/shared_entries.py new file mode 100644 index 0000000000000..5dda89a7b3163 --- /dev/null +++ b/superset/key_value/shared_entries.py @@ -0,0 +1,51 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +from typing import Any, Optional +from uuid import uuid3 + +from superset.key_value.types import KeyValueResource, SharedKey +from superset.key_value.utils import get_uuid_namespace, random_key +from superset.utils.memoized import memoized + +RESOURCE = KeyValueResource.APP +NAMESPACE = get_uuid_namespace("") + + +def get_shared_value(key: SharedKey) -> Optional[Any]: + # pylint: disable=import-outside-toplevel + from superset.key_value.commands.get import GetKeyValueCommand + + uuid_key = uuid3(NAMESPACE, key) + return GetKeyValueCommand(RESOURCE, key=uuid_key).run() + + +def set_shared_value(key: SharedKey, value: Any) -> None: + # pylint: disable=import-outside-toplevel + from superset.key_value.commands.create import CreateKeyValueCommand + + uuid_key = uuid3(NAMESPACE, key) + CreateKeyValueCommand(resource=RESOURCE, value=value, key=uuid_key).run() + + +@memoized +def get_permalink_salt(key: SharedKey) -> str: + salt = get_shared_value(key) + if salt is None: + salt = random_key() + set_shared_value(key, value=salt) + return salt diff --git a/superset/key_value/types.py b/superset/key_value/types.py index d36520ddbfb75..c3064fbef4d42 100644 --- a/superset/key_value/types.py +++ b/superset/key_value/types.py @@ -15,7 +15,8 @@ # specific language governing permissions and limitations # under the License. from dataclasses import dataclass -from typing import Literal, Optional, TypedDict +from enum import Enum +from typing import Optional, TypedDict from uuid import UUID @@ -25,10 +26,19 @@ class Key: uuid: Optional[UUID] -KeyType = Literal["id", "uuid"] - - class KeyValueFilter(TypedDict, total=False): resource: str id: Optional[int] uuid: Optional[UUID] + + +class KeyValueResource(str, Enum): + APP = "app" + DASHBOARD_PERMALINK = "dashboard_permalink" + EXPLORE_PERMALINK = "explore_permalink" + METASTORE_CACHE = "superset_metastore_cache" + + +class SharedKey(str, Enum): + DASHBOARD_PERMALINK_SALT = "dashboard_permalink_salt" + EXPLORE_PERMALINK_SALT = "explore_permalink_salt" diff --git a/superset/key_value/utils.py b/superset/key_value/utils.py index 50aa34918e434..b2e8e729b0466 100644 --- a/superset/key_value/utils.py +++ b/superset/key_value/utils.py @@ -14,44 +14,52 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -from typing import Literal +from __future__ import annotations + +from hashlib import md5 +from secrets import token_urlsafe +from typing import Union from uuid import UUID -from flask import current_app +import hashids +from flask_babel import gettext as _ from superset.key_value.exceptions import KeyValueParseKeyError -from superset.key_value.models import KeyValueEntry -from superset.key_value.types import Key, KeyType, KeyValueFilter - - -def parse_permalink_key(key: str) -> Key: - key_type: Literal["id", "uuid"] = current_app.config["PERMALINK_KEY_TYPE"] - if key_type == "id": - return Key(id=int(key), uuid=None) - return Key(id=None, uuid=UUID(key)) +from superset.key_value.types import KeyValueFilter, KeyValueResource +HASHIDS_MIN_LENGTH = 11 -def format_permalink_key(key: Key) -> str: - """ - return the string representation of the key - :param key: a key object with either a numerical or uuid key - :return: a formatted string - """ - return str(key.id if key.id is not None else key.uuid) +def random_key() -> str: + return token_urlsafe(48) -def extract_key(entry: KeyValueEntry, key_type: KeyType) -> str: - return str(entry.id if key_type == "id" else entry.uuid) - - -def get_filter(resource: str, key: str, key_type: KeyType) -> KeyValueFilter: +def get_filter(resource: KeyValueResource, key: Union[int, UUID]) -> KeyValueFilter: try: - filter_: KeyValueFilter = {"resource": resource} - if key_type == "uuid": - filter_["uuid"] = UUID(key) + filter_: KeyValueFilter = {"resource": resource.value} + if isinstance(key, UUID): + filter_["uuid"] = key else: - filter_["id"] = int(key) + filter_["id"] = key return filter_ except ValueError as ex: raise KeyValueParseKeyError() from ex + + +def encode_permalink_key(key: int, salt: str) -> str: + obj = hashids.Hashids(salt, min_length=HASHIDS_MIN_LENGTH) + return obj.encode(key) + + +def decode_permalink_id(key: str, salt: str) -> int: + obj = hashids.Hashids(salt, min_length=HASHIDS_MIN_LENGTH) + ids = obj.decode(key) + if len(ids) == 1: + return ids[0] + raise KeyValueParseKeyError(_("Invalid permalink key")) + + +def get_uuid_namespace(seed: str) -> UUID: + md5_obj = md5() + md5_obj.update(seed.encode("utf-8")) + return UUID(md5_obj.hexdigest()) diff --git a/superset/migrations/shared/security_converge.py b/superset/migrations/shared/security_converge.py index 856efc27bc417..19caa3932b874 100644 --- a/superset/migrations/shared/security_converge.py +++ b/superset/migrations/shared/security_converge.py @@ -214,7 +214,9 @@ def _delete_old_permissions( def migrate_roles( - session: Session, pvm_key_map: PvmMigrationMapType, commit: bool = False, + session: Session, + pvm_key_map: PvmMigrationMapType, + commit: bool = False, ) -> None: """ Migrates all existing roles that have the permissions to be migrated diff --git a/superset/migrations/shared/utils.py b/superset/migrations/shared/utils.py index 03317181178d7..bff25e05d137f 100644 --- a/superset/migrations/shared/utils.py +++ b/superset/migrations/shared/utils.py @@ -14,10 +14,39 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. +import logging +from typing import Any, Iterator, Optional, Set + from alembic import op from sqlalchemy import engine_from_config from sqlalchemy.engine import reflection from sqlalchemy.exc import NoSuchTableError +from sqloxide import parse_sql + +from superset.sql_parse import ParsedQuery, Table + +logger = logging.getLogger("alembic") + + +# mapping between sqloxide and SQLAlchemy dialects +sqloxide_dialects = { + "ansi": {"trino", "trinonative", "presto"}, + "hive": {"hive", "databricks"}, + "ms": {"mssql"}, + "mysql": {"mysql"}, + "postgres": { + "cockroachdb", + "hana", + "netezza", + "postgres", + "postgresql", + "redshift", + "vertica", + }, + "snowflake": {"snowflake"}, + "sqlite": {"sqlite", "gsheets", "shillelagh"}, + "clickhouse": {"clickhouse"}, +} def table_has_column(table: str, column: str) -> bool: @@ -38,3 +67,40 @@ def table_has_column(table: str, column: str) -> bool: return any(col["name"] == column for col in insp.get_columns(table)) except NoSuchTableError: return False + + +def find_nodes_by_key(element: Any, target: str) -> Iterator[Any]: + """ + Find all nodes in a SQL tree matching a given key. + """ + if isinstance(element, list): + for child in element: + yield from find_nodes_by_key(child, target) + elif isinstance(element, dict): + for key, value in element.items(): + if key == target: + yield value + else: + yield from find_nodes_by_key(value, target) + + +def extract_table_references(sql_text: str, sqla_dialect: str) -> Set[Table]: + """ + Return all the dependencies from a SQL sql_text. + """ + dialect = "generic" + for dialect, sqla_dialects in sqloxide_dialects.items(): + if sqla_dialect in sqla_dialects: + break + try: + tree = parse_sql(sql_text, dialect=dialect) + except Exception: # pylint: disable=broad-except + logger.warning("Unable to parse query with sqloxide: %s", sql_text) + # fallback to sqlparse + parsed = ParsedQuery(sql_text) + return parsed.tables + + return { + Table(*[part["value"] for part in table["name"][::-1]]) + for table in find_nodes_by_key(tree, "Table") + } diff --git a/superset/migrations/versions/021b81fe4fbb_add_type_to_native_filter_configuration.py b/superset/migrations/versions/021b81fe4fbb_add_type_to_native_filter_configuration.py index 8238e8f6391ef..9c26159ba0a89 100644 --- a/superset/migrations/versions/021b81fe4fbb_add_type_to_native_filter_configuration.py +++ b/superset/migrations/versions/021b81fe4fbb_add_type_to_native_filter_configuration.py @@ -91,7 +91,8 @@ def downgrade(): for dashboard in session.query(Dashboard).all(): logger.info( - "[RemoveTypeToNativeFilter] Updating Dashobard", dashboard.id, + "[RemoveTypeToNativeFilter] Updating Dashobard", + dashboard.id, ) if not dashboard.json_metadata: logger.info( diff --git a/superset/migrations/versions/1f6dca87d1a2_security_converge_dashboards.py b/superset/migrations/versions/1f6dca87d1a2_security_converge_dashboards.py index f9743873b9b72..ae350848c25d4 100644 --- a/superset/migrations/versions/1f6dca87d1a2_security_converge_dashboards.py +++ b/superset/migrations/versions/1f6dca87d1a2_security_converge_dashboards.py @@ -39,24 +39,63 @@ Pvm, ) -NEW_PVMS = {"Dashboard": ("can_read", "can_write",)} +NEW_PVMS = { + "Dashboard": ( + "can_read", + "can_write", + ) +} PVM_MAP = { Pvm("DashboardModelView", "can_add"): (Pvm("Dashboard", "can_write"),), Pvm("DashboardModelView", "can_delete"): (Pvm("Dashboard", "can_write"),), - Pvm("DashboardModelView", "can_download_dashboards",): ( - Pvm("Dashboard", "can_read"), - ), - Pvm("DashboardModelView", "can_edit",): (Pvm("Dashboard", "can_write"),), - Pvm("DashboardModelView", "can_favorite_status",): (Pvm("Dashboard", "can_read"),), - Pvm("DashboardModelView", "can_list",): (Pvm("Dashboard", "can_read"),), - Pvm("DashboardModelView", "can_mulexport",): (Pvm("Dashboard", "can_read"),), - Pvm("DashboardModelView", "can_show",): (Pvm("Dashboard", "can_read"),), - Pvm("DashboardModelView", "muldelete",): (Pvm("Dashboard", "can_write"),), - Pvm("DashboardModelView", "mulexport",): (Pvm("Dashboard", "can_read"),), - Pvm("DashboardModelViewAsync", "can_list",): (Pvm("Dashboard", "can_read"),), - Pvm("DashboardModelViewAsync", "muldelete",): (Pvm("Dashboard", "can_write"),), - Pvm("DashboardModelViewAsync", "mulexport",): (Pvm("Dashboard", "can_read"),), - Pvm("Dashboard", "can_new",): (Pvm("Dashboard", "can_write"),), + Pvm( + "DashboardModelView", + "can_download_dashboards", + ): (Pvm("Dashboard", "can_read"),), + Pvm( + "DashboardModelView", + "can_edit", + ): (Pvm("Dashboard", "can_write"),), + Pvm( + "DashboardModelView", + "can_favorite_status", + ): (Pvm("Dashboard", "can_read"),), + Pvm( + "DashboardModelView", + "can_list", + ): (Pvm("Dashboard", "can_read"),), + Pvm( + "DashboardModelView", + "can_mulexport", + ): (Pvm("Dashboard", "can_read"),), + Pvm( + "DashboardModelView", + "can_show", + ): (Pvm("Dashboard", "can_read"),), + Pvm( + "DashboardModelView", + "muldelete", + ): (Pvm("Dashboard", "can_write"),), + Pvm( + "DashboardModelView", + "mulexport", + ): (Pvm("Dashboard", "can_read"),), + Pvm( + "DashboardModelViewAsync", + "can_list", + ): (Pvm("Dashboard", "can_read"),), + Pvm( + "DashboardModelViewAsync", + "muldelete", + ): (Pvm("Dashboard", "can_write"),), + Pvm( + "DashboardModelViewAsync", + "mulexport", + ): (Pvm("Dashboard", "can_read"),), + Pvm( + "Dashboard", + "can_new", + ): (Pvm("Dashboard", "can_write"),), } diff --git a/superset/migrations/versions/2e5a0ee25ed4_refractor_alerting.py b/superset/migrations/versions/2e5a0ee25ed4_refractor_alerting.py index 98bd8a4f54443..4eca5f147bd60 100644 --- a/superset/migrations/versions/2e5a0ee25ed4_refractor_alerting.py +++ b/superset/migrations/versions/2e5a0ee25ed4_refractor_alerting.py @@ -43,9 +43,18 @@ def upgrade(): sa.Column("created_by_fk", sa.Integer(), nullable=True), sa.Column("changed_by_fk", sa.Integer(), nullable=True), sa.Column("alert_id", sa.Integer(), nullable=False), - sa.ForeignKeyConstraint(["alert_id"], ["alerts.id"],), - sa.ForeignKeyConstraint(["changed_by_fk"], ["ab_user.id"],), - sa.ForeignKeyConstraint(["created_by_fk"], ["ab_user.id"],), + sa.ForeignKeyConstraint( + ["alert_id"], + ["alerts.id"], + ), + sa.ForeignKeyConstraint( + ["changed_by_fk"], + ["ab_user.id"], + ), + sa.ForeignKeyConstraint( + ["created_by_fk"], + ["ab_user.id"], + ), sa.PrimaryKeyConstraint("id"), ) op.create_table( @@ -58,10 +67,22 @@ def upgrade(): sa.Column("changed_by_fk", sa.Integer(), nullable=True), sa.Column("alert_id", sa.Integer(), nullable=False), sa.Column("database_id", sa.Integer(), nullable=False), - sa.ForeignKeyConstraint(["alert_id"], ["alerts.id"],), - sa.ForeignKeyConstraint(["changed_by_fk"], ["ab_user.id"],), - sa.ForeignKeyConstraint(["created_by_fk"], ["ab_user.id"],), - sa.ForeignKeyConstraint(["database_id"], ["dbs.id"],), + sa.ForeignKeyConstraint( + ["alert_id"], + ["alerts.id"], + ), + sa.ForeignKeyConstraint( + ["changed_by_fk"], + ["ab_user.id"], + ), + sa.ForeignKeyConstraint( + ["created_by_fk"], + ["ab_user.id"], + ), + sa.ForeignKeyConstraint( + ["database_id"], + ["dbs.id"], + ), sa.PrimaryKeyConstraint("id"), ) op.create_table( @@ -72,8 +93,14 @@ def upgrade(): sa.Column("alert_id", sa.Integer(), nullable=True), sa.Column("value", sa.Float(), nullable=True), sa.Column("error_msg", sa.String(length=500), nullable=True), - sa.ForeignKeyConstraint(["alert_id"], ["alerts.id"],), - sa.ForeignKeyConstraint(["observer_id"], ["sql_observers.id"],), + sa.ForeignKeyConstraint( + ["alert_id"], + ["alerts.id"], + ), + sa.ForeignKeyConstraint( + ["observer_id"], + ["sql_observers.id"], + ), sa.PrimaryKeyConstraint("id"), ) op.create_index( diff --git a/superset/migrations/versions/2f1d15e8a6af_add_alerts.py b/superset/migrations/versions/2f1d15e8a6af_add_alerts.py index a817f558e8ace..bb85d51983763 100644 --- a/superset/migrations/versions/2f1d15e8a6af_add_alerts.py +++ b/superset/migrations/versions/2f1d15e8a6af_add_alerts.py @@ -49,8 +49,14 @@ def upgrade(): sa.Column("dashboard_id", sa.Integer(), nullable=True), sa.Column("last_eval_dttm", sa.DateTime(), nullable=True), sa.Column("last_state", sa.String(length=10), nullable=True), - sa.ForeignKeyConstraint(["dashboard_id"], ["dashboards.id"],), - sa.ForeignKeyConstraint(["slice_id"], ["slices.id"],), + sa.ForeignKeyConstraint( + ["dashboard_id"], + ["dashboards.id"], + ), + sa.ForeignKeyConstraint( + ["slice_id"], + ["slices.id"], + ), sa.PrimaryKeyConstraint("id"), ) op.create_index(op.f("ix_alerts_active"), "alerts", ["active"], unique=False) @@ -62,7 +68,10 @@ def upgrade(): sa.Column("dttm_end", sa.DateTime(), nullable=True), sa.Column("alert_id", sa.Integer(), nullable=True), sa.Column("state", sa.String(length=10), nullable=True), - sa.ForeignKeyConstraint(["alert_id"], ["alerts.id"],), + sa.ForeignKeyConstraint( + ["alert_id"], + ["alerts.id"], + ), sa.PrimaryKeyConstraint("id"), ) op.create_table( @@ -70,8 +79,14 @@ def upgrade(): sa.Column("id", sa.Integer(), nullable=False), sa.Column("user_id", sa.Integer(), nullable=True), sa.Column("alert_id", sa.Integer(), nullable=True), - sa.ForeignKeyConstraint(["alert_id"], ["alerts.id"],), - sa.ForeignKeyConstraint(["user_id"], ["ab_user.id"],), + sa.ForeignKeyConstraint( + ["alert_id"], + ["alerts.id"], + ), + sa.ForeignKeyConstraint( + ["user_id"], + ["ab_user.id"], + ), sa.PrimaryKeyConstraint("id"), ) diff --git a/superset/migrations/versions/3317e9248280_add_creation_method_to_reports_model.py b/superset/migrations/versions/3317e9248280_add_creation_method_to_reports_model.py index 68b4383ca9da7..0a5608ae77087 100644 --- a/superset/migrations/versions/3317e9248280_add_creation_method_to_reports_model.py +++ b/superset/migrations/versions/3317e9248280_add_creation_method_to_reports_model.py @@ -34,7 +34,9 @@ def upgrade(): with op.batch_alter_table("report_schedule") as batch_op: batch_op.add_column( sa.Column( - "creation_method", sa.VARCHAR(255), server_default="alerts_reports", + "creation_method", + sa.VARCHAR(255), + server_default="alerts_reports", ) ) batch_op.create_index( diff --git a/superset/migrations/versions/40f16acf1ba7_security_converge_reports.py b/superset/migrations/versions/40f16acf1ba7_security_converge_reports.py index 227c421944a53..2886bfbb15d7a 100644 --- a/superset/migrations/versions/40f16acf1ba7_security_converge_reports.py +++ b/superset/migrations/versions/40f16acf1ba7_security_converge_reports.py @@ -39,13 +39,27 @@ Pvm, ) -NEW_PVMS = {"ReportSchedule": ("can_read", "can_write",)} +NEW_PVMS = { + "ReportSchedule": ( + "can_read", + "can_write", + ) +} PVM_MAP = { Pvm("ReportSchedule", "can_list"): (Pvm("ReportSchedule", "can_read"),), Pvm("ReportSchedule", "can_show"): (Pvm("ReportSchedule", "can_read"),), - Pvm("ReportSchedule", "can_add",): (Pvm("ReportSchedule", "can_write"),), - Pvm("ReportSchedule", "can_edit",): (Pvm("ReportSchedule", "can_write"),), - Pvm("ReportSchedule", "can_delete",): (Pvm("ReportSchedule", "can_write"),), + Pvm( + "ReportSchedule", + "can_add", + ): (Pvm("ReportSchedule", "can_write"),), + Pvm( + "ReportSchedule", + "can_edit", + ): (Pvm("ReportSchedule", "can_write"),), + Pvm( + "ReportSchedule", + "can_delete", + ): (Pvm("ReportSchedule", "can_write"),), } diff --git a/superset/migrations/versions/42b4c9e01447_security_converge_databases.py b/superset/migrations/versions/42b4c9e01447_security_converge_databases.py index 3c3c31fb663fc..d8d6a2a3315bd 100644 --- a/superset/migrations/versions/42b4c9e01447_security_converge_databases.py +++ b/superset/migrations/versions/42b4c9e01447_security_converge_databases.py @@ -39,17 +39,43 @@ Pvm, ) -NEW_PVMS = {"Database": ("can_read", "can_write",)} +NEW_PVMS = { + "Database": ( + "can_read", + "can_write", + ) +} PVM_MAP = { Pvm("DatabaseView", "can_add"): (Pvm("Database", "can_write"),), Pvm("DatabaseView", "can_delete"): (Pvm("Database", "can_write"),), - Pvm("DatabaseView", "can_edit",): (Pvm("Database", "can_write"),), - Pvm("DatabaseView", "can_list",): (Pvm("Database", "can_read"),), - Pvm("DatabaseView", "can_mulexport",): (Pvm("Database", "can_read"),), - Pvm("DatabaseView", "can_post",): (Pvm("Database", "can_write"),), - Pvm("DatabaseView", "can_show",): (Pvm("Database", "can_read"),), - Pvm("DatabaseView", "muldelete",): (Pvm("Database", "can_write"),), - Pvm("DatabaseView", "yaml_export",): (Pvm("Database", "can_read"),), + Pvm( + "DatabaseView", + "can_edit", + ): (Pvm("Database", "can_write"),), + Pvm( + "DatabaseView", + "can_list", + ): (Pvm("Database", "can_read"),), + Pvm( + "DatabaseView", + "can_mulexport", + ): (Pvm("Database", "can_read"),), + Pvm( + "DatabaseView", + "can_post", + ): (Pvm("Database", "can_write"),), + Pvm( + "DatabaseView", + "can_show", + ): (Pvm("Database", "can_read"),), + Pvm( + "DatabaseView", + "muldelete", + ): (Pvm("Database", "can_write"),), + Pvm( + "DatabaseView", + "yaml_export", + ): (Pvm("Database", "can_read"),), } diff --git a/superset/migrations/versions/45731db65d9c_security_converge_datasets.py b/superset/migrations/versions/45731db65d9c_security_converge_datasets.py index 5b4670857faf4..c7a1c81629ebf 100644 --- a/superset/migrations/versions/45731db65d9c_security_converge_datasets.py +++ b/superset/migrations/versions/45731db65d9c_security_converge_datasets.py @@ -38,7 +38,12 @@ Pvm, ) -NEW_PVMS = {"Dataset": ("can_read", "can_write",)} +NEW_PVMS = { + "Dataset": ( + "can_read", + "can_write", + ) +} PVM_MAP = { Pvm("SqlMetricInlineView", "can_add"): (Pvm("Dataset", "can_write"),), Pvm("SqlMetricInlineView", "can_delete"): (Pvm("Dataset", "can_write"),), @@ -50,15 +55,33 @@ Pvm("TableColumnInlineView", "can_edit"): (Pvm("Dataset", "can_write"),), Pvm("TableColumnInlineView", "can_list"): (Pvm("Dataset", "can_read"),), Pvm("TableColumnInlineView", "can_show"): (Pvm("Dataset", "can_read"),), - Pvm("TableModelView", "can_add",): (Pvm("Dataset", "can_write"),), - Pvm("TableModelView", "can_delete",): (Pvm("Dataset", "can_write"),), - Pvm("TableModelView", "can_edit",): (Pvm("Dataset", "can_write"),), + Pvm( + "TableModelView", + "can_add", + ): (Pvm("Dataset", "can_write"),), + Pvm( + "TableModelView", + "can_delete", + ): (Pvm("Dataset", "can_write"),), + Pvm( + "TableModelView", + "can_edit", + ): (Pvm("Dataset", "can_write"),), Pvm("TableModelView", "can_list"): (Pvm("Dataset", "can_read"),), Pvm("TableModelView", "can_mulexport"): (Pvm("Dataset", "can_read"),), Pvm("TableModelView", "can_show"): (Pvm("Dataset", "can_read"),), - Pvm("TableModelView", "muldelete",): (Pvm("Dataset", "can_write"),), - Pvm("TableModelView", "refresh",): (Pvm("Dataset", "can_write"),), - Pvm("TableModelView", "yaml_export",): (Pvm("Dataset", "can_read"),), + Pvm( + "TableModelView", + "muldelete", + ): (Pvm("Dataset", "can_write"),), + Pvm( + "TableModelView", + "refresh", + ): (Pvm("Dataset", "can_write"),), + Pvm( + "TableModelView", + "yaml_export", + ): (Pvm("Dataset", "can_read"),), } diff --git a/superset/migrations/versions/49b5a32daba5_add_report_schedules.py b/superset/migrations/versions/49b5a32daba5_add_report_schedules.py index edf65728b577c..3a3b172bfe65f 100644 --- a/superset/migrations/versions/49b5a32daba5_add_report_schedules.py +++ b/superset/migrations/versions/49b5a32daba5_add_report_schedules.py @@ -114,8 +114,14 @@ def upgrade(): sa.Column("id", sa.Integer(), nullable=False), sa.Column("user_id", sa.Integer(), nullable=False), sa.Column("report_schedule_id", sa.Integer(), nullable=False), - sa.ForeignKeyConstraint(["report_schedule_id"], ["report_schedule.id"],), - sa.ForeignKeyConstraint(["user_id"], ["ab_user.id"],), + sa.ForeignKeyConstraint( + ["report_schedule_id"], + ["report_schedule.id"], + ), + sa.ForeignKeyConstraint( + ["user_id"], + ["ab_user.id"], + ), sa.PrimaryKeyConstraint("id"), ) diff --git a/superset/migrations/versions/4b84f97828aa_security_converge_logs.py b/superset/migrations/versions/4b84f97828aa_security_converge_logs.py index 51862e3430513..284b7f7525e3e 100644 --- a/superset/migrations/versions/4b84f97828aa_security_converge_logs.py +++ b/superset/migrations/versions/4b84f97828aa_security_converge_logs.py @@ -37,10 +37,18 @@ revision = "4b84f97828aa" down_revision = "45731db65d9c" -NEW_PVMS = {"Log": ("can_read", "can_write",)} +NEW_PVMS = { + "Log": ( + "can_read", + "can_write", + ) +} PVM_MAP = { Pvm("LogModelView", "can_show"): (Pvm("Log", "can_read"),), - Pvm("LogModelView", "can_add",): (Pvm("Log", "can_write"),), + Pvm( + "LogModelView", + "can_add", + ): (Pvm("Log", "can_write"),), Pvm("LogModelView", "can_list"): (Pvm("Log", "can_read"),), } diff --git a/superset/migrations/versions/58df9d617f14_add_on_saved_query_delete_tab_state_.py b/superset/migrations/versions/58df9d617f14_add_on_saved_query_delete_tab_state_.py index 220370f828049..57e13cf1488e6 100644 --- a/superset/migrations/versions/58df9d617f14_add_on_saved_query_delete_tab_state_.py +++ b/superset/migrations/versions/58df9d617f14_add_on_saved_query_delete_tab_state_.py @@ -62,5 +62,8 @@ def downgrade(): ) batch_op.create_foreign_key( - "saved_query_id", "saved_query", ["saved_query_id"], ["id"], + "saved_query_id", + "saved_query", + ["saved_query_id"], + ["id"], ) diff --git a/superset/migrations/versions/73fd22e742ab_add_dynamic_plugins_py.py b/superset/migrations/versions/73fd22e742ab_add_dynamic_plugins_py.py index 0a9e37aac2ec6..e4c2d0bc519ff 100644 --- a/superset/migrations/versions/73fd22e742ab_add_dynamic_plugins_py.py +++ b/superset/migrations/versions/73fd22e742ab_add_dynamic_plugins_py.py @@ -42,8 +42,14 @@ def upgrade(): sa.Column("bundle_url", sa.String(length=1000), nullable=False), sa.Column("created_by_fk", sa.Integer(), nullable=True), sa.Column("changed_by_fk", sa.Integer(), nullable=True), - sa.ForeignKeyConstraint(["changed_by_fk"], ["ab_user.id"],), - sa.ForeignKeyConstraint(["created_by_fk"], ["ab_user.id"],), + sa.ForeignKeyConstraint( + ["changed_by_fk"], + ["ab_user.id"], + ), + sa.ForeignKeyConstraint( + ["created_by_fk"], + ["ab_user.id"], + ), sa.PrimaryKeyConstraint("id"), sa.UniqueConstraint("key"), sa.UniqueConstraint("name"), diff --git a/superset/migrations/versions/8ee129739cf9_security_converge_css_templates.py b/superset/migrations/versions/8ee129739cf9_security_converge_css_templates.py index cc641006d6afb..401dc5c4b143f 100644 --- a/superset/migrations/versions/8ee129739cf9_security_converge_css_templates.py +++ b/superset/migrations/versions/8ee129739cf9_security_converge_css_templates.py @@ -39,16 +39,39 @@ Pvm, ) -NEW_PVMS = {"CssTemplate": ("can_read", "can_write",)} +NEW_PVMS = { + "CssTemplate": ( + "can_read", + "can_write", + ) +} PVM_MAP = { Pvm("CssTemplateModelView", "can_list"): (Pvm("CssTemplate", "can_read"),), Pvm("CssTemplateModelView", "can_show"): (Pvm("CssTemplate", "can_read"),), - Pvm("CssTemplateModelView", "can_add",): (Pvm("CssTemplate", "can_write"),), - Pvm("CssTemplateModelView", "can_edit",): (Pvm("CssTemplate", "can_write"),), - Pvm("CssTemplateModelView", "can_delete",): (Pvm("CssTemplate", "can_write"),), - Pvm("CssTemplateModelView", "muldelete",): (Pvm("CssTemplate", "can_write"),), - Pvm("CssTemplateAsyncModelView", "can_list",): (Pvm("CssTemplate", "can_read"),), - Pvm("CssTemplateAsyncModelView", "muldelete",): (Pvm("CssTemplate", "can_write"),), + Pvm( + "CssTemplateModelView", + "can_add", + ): (Pvm("CssTemplate", "can_write"),), + Pvm( + "CssTemplateModelView", + "can_edit", + ): (Pvm("CssTemplate", "can_write"),), + Pvm( + "CssTemplateModelView", + "can_delete", + ): (Pvm("CssTemplate", "can_write"),), + Pvm( + "CssTemplateModelView", + "muldelete", + ): (Pvm("CssTemplate", "can_write"),), + Pvm( + "CssTemplateAsyncModelView", + "can_list", + ): (Pvm("CssTemplate", "can_read"),), + Pvm( + "CssTemplateAsyncModelView", + "muldelete", + ): (Pvm("CssTemplate", "can_write"),), } diff --git a/superset/migrations/versions/96e99fb176a0_add_import_mixing_to_saved_query.py b/superset/migrations/versions/96e99fb176a0_add_import_mixing_to_saved_query.py index 2dc38e214a633..57d22aa089aa2 100644 --- a/superset/migrations/versions/96e99fb176a0_add_import_mixing_to_saved_query.py +++ b/superset/migrations/versions/96e99fb176a0_add_import_mixing_to_saved_query.py @@ -65,7 +65,10 @@ def upgrade(): with op.batch_alter_table("saved_query") as batch_op: batch_op.add_column( sa.Column( - "uuid", UUIDType(binary=True), primary_key=False, default=uuid4, + "uuid", + UUIDType(binary=True), + primary_key=False, + default=uuid4, ), ) except OperationalError: diff --git a/superset/migrations/versions/978245563a02_migrate_iframe_to_dash_markdown.py b/superset/migrations/versions/978245563a02_migrate_iframe_to_dash_markdown.py index ccc845cdc0041..6b63c468eca0c 100644 --- a/superset/migrations/versions/978245563a02_migrate_iframe_to_dash_markdown.py +++ b/superset/migrations/versions/978245563a02_migrate_iframe_to_dash_markdown.py @@ -159,7 +159,10 @@ def upgrade(): for key_to_remove in keys_to_remove: del position_dict[key_to_remove] dashboard.position_json = json.dumps( - position_dict, indent=None, separators=(",", ":"), sort_keys=True, + position_dict, + indent=None, + separators=(",", ":"), + sort_keys=True, ) session.merge(dashboard) diff --git a/superset/migrations/versions/abe27eaf93db_add_extra_config_column_to_alerts.py b/superset/migrations/versions/abe27eaf93db_add_extra_config_column_to_alerts.py index a956058434118..5a20fc894a639 100644 --- a/superset/migrations/versions/abe27eaf93db_add_extra_config_column_to_alerts.py +++ b/superset/migrations/versions/abe27eaf93db_add_extra_config_column_to_alerts.py @@ -39,7 +39,12 @@ def upgrade(): with op.batch_alter_table("report_schedule") as batch_op: batch_op.add_column( - sa.Column("extra", sa.Text(), nullable=True, default="{}",), + sa.Column( + "extra", + sa.Text(), + nullable=True, + default="{}", + ), ) bind.execute(report_schedule.update().values({"extra": "{}"})) with op.batch_alter_table("report_schedule") as batch_op: diff --git a/superset/migrations/versions/af30ca79208f_collapse_alerting_models_into_a_single_.py b/superset/migrations/versions/af30ca79208f_collapse_alerting_models_into_a_single_.py index 4d3c5983e3fb1..9502a66f4db32 100644 --- a/superset/migrations/versions/af30ca79208f_collapse_alerting_models_into_a_single_.py +++ b/superset/migrations/versions/af30ca79208f_collapse_alerting_models_into_a_single_.py @@ -118,7 +118,8 @@ def upgrade(): sa.Column("validator_config", sa.Text(), default="", nullable=True), ) op.add_column( - "alerts", sa.Column("database_id", sa.Integer(), default=0, nullable=False), + "alerts", + sa.Column("database_id", sa.Integer(), default=0, nullable=False), ) op.add_column("alerts", sa.Column("sql", sa.Text(), default="", nullable=False)) op.add_column( @@ -159,7 +160,10 @@ def upgrade(): sa.Column("alert_id", sa.Integer(), nullable=True), sa.Column("value", sa.Float(), nullable=True), sa.Column("error_msg", sa.String(length=500), nullable=True), - sa.ForeignKeyConstraint(["alert_id"], ["alerts.id"],), + sa.ForeignKeyConstraint( + ["alert_id"], + ["alerts.id"], + ), sa.PrimaryKeyConstraint("id"), ) else: @@ -192,7 +196,11 @@ def downgrade(): sa.Column("created_on", sa.DateTime(), nullable=True), sa.Column("changed_on", sa.DateTime(), nullable=True), sa.Column("id", sa.Integer(), autoincrement=True, nullable=False), - sa.Column("validator_type", sa.String(length=100), nullable=False,), + sa.Column( + "validator_type", + sa.String(length=100), + nullable=False, + ), sa.Column("config", sa.Text(), nullable=True), sa.Column("created_by_fk", sa.Integer(), autoincrement=False, nullable=True), sa.Column("changed_by_fk", sa.Integer(), autoincrement=False, nullable=True), @@ -261,10 +269,22 @@ def downgrade(): sa.Column("created_by_fk", sa.Integer(), nullable=True), sa.Column("created_on", sa.DateTime(), nullable=True), sa.Column("slack_channel", sa.Text(), nullable=True), - sa.ForeignKeyConstraint(["dashboard_id"], ["dashboards.id"],), - sa.ForeignKeyConstraint(["slice_id"], ["slices.id"],), - sa.ForeignKeyConstraint(["created_by_fk"], ["ab_user.id"],), - sa.ForeignKeyConstraint(["changed_by_fk"], ["ab_user.id"],), + sa.ForeignKeyConstraint( + ["dashboard_id"], + ["dashboards.id"], + ), + sa.ForeignKeyConstraint( + ["slice_id"], + ["slices.id"], + ), + sa.ForeignKeyConstraint( + ["created_by_fk"], + ["ab_user.id"], + ), + sa.ForeignKeyConstraint( + ["changed_by_fk"], + ["ab_user.id"], + ), sa.PrimaryKeyConstraint("id"), ) else: diff --git a/superset/migrations/versions/b4456560d4f3_change_table_unique_constraint.py b/superset/migrations/versions/b4456560d4f3_change_table_unique_constraint.py index d22f72cf03c7d..5ce049f8e4a2e 100644 --- a/superset/migrations/versions/b4456560d4f3_change_table_unique_constraint.py +++ b/superset/migrations/versions/b4456560d4f3_change_table_unique_constraint.py @@ -42,6 +42,6 @@ def upgrade(): def downgrade(): try: # Trying since sqlite doesn't like constraints - op.drop_constraint(u"_customer_location_uc", "tables", type_="unique") + op.drop_constraint("_customer_location_uc", "tables", type_="unique") except Exception: pass diff --git a/superset/migrations/versions/b56500de1855_add_uuid_column_to_import_mixin.py b/superset/migrations/versions/b56500de1855_add_uuid_column_to_import_mixin.py index 7bef33bc87260..747ec9fb4f77f 100644 --- a/superset/migrations/versions/b56500de1855_add_uuid_column_to_import_mixin.py +++ b/superset/migrations/versions/b56500de1855_add_uuid_column_to_import_mixin.py @@ -171,7 +171,10 @@ def upgrade(): with op.batch_alter_table(table_name) as batch_op: batch_op.add_column( sa.Column( - "uuid", UUIDType(binary=True), primary_key=False, default=uuid4, + "uuid", + UUIDType(binary=True), + primary_key=False, + default=uuid4, ), ) diff --git a/superset/migrations/versions/b5998378c225_add_certificate_to_dbs.py b/superset/migrations/versions/b5998378c225_add_certificate_to_dbs.py index ae99486807194..404ea96e4402a 100644 --- a/superset/migrations/versions/b5998378c225_add_certificate_to_dbs.py +++ b/superset/migrations/versions/b5998378c225_add_certificate_to_dbs.py @@ -36,7 +36,8 @@ def upgrade(): kwargs: Dict[str, str] = {} bind = op.get_bind() op.add_column( - "dbs", sa.Column("server_cert", sa.LargeBinary(), nullable=True, **kwargs), + "dbs", + sa.Column("server_cert", sa.LargeBinary(), nullable=True, **kwargs), ) diff --git a/superset/migrations/versions/b8d3a24d9131_new_dataset_models.py b/superset/migrations/versions/b8d3a24d9131_new_dataset_models.py index d0a999d8542d1..75f5293034ead 100644 --- a/superset/migrations/versions/b8d3a24d9131_new_dataset_models.py +++ b/superset/migrations/versions/b8d3a24d9131_new_dataset_models.py @@ -25,7 +25,7 @@ """ import json -from typing import List +from typing import Callable, List, Optional, Set from uuid import uuid4 import sqlalchemy as sa @@ -40,7 +40,9 @@ from superset import app, db from superset.connectors.sqla.models import ADDITIVE_METRIC_TYPES from superset.extensions import encrypted_field_factory -from superset.sql_parse import ParsedQuery +from superset.migrations.shared.utils import extract_table_references +from superset.models.core import Database as OriginalDatabase +from superset.sql_parse import Table # revision identifiers, used by Alembic. revision = "b8d3a24d9131" @@ -228,6 +230,85 @@ class NewDataset(Base): external_url = sa.Column(sa.Text, nullable=True) +TEMPORAL_TYPES = {"DATETIME", "DATE", "TIME", "TIMEDELTA"} + + +def load_or_create_tables( + session: Session, + database_id: int, + default_schema: Optional[str], + tables: Set[Table], + conditional_quote: Callable[[str], str], +) -> List[NewTable]: + """ + Load or create new table model instances. + """ + if not tables: + return [] + + # set the default schema in tables that don't have it + if default_schema: + tables = list(tables) + for i, table in enumerate(tables): + if table.schema is None: + tables[i] = Table(table.table, default_schema, table.catalog) + + # load existing tables + predicate = or_( + *[ + and_( + NewTable.database_id == database_id, + NewTable.schema == table.schema, + NewTable.name == table.table, + ) + for table in tables + ] + ) + new_tables = session.query(NewTable).filter(predicate).all() + + # use original database model to get the engine + engine = ( + session.query(OriginalDatabase) + .filter_by(id=database_id) + .one() + .get_sqla_engine(default_schema) + ) + inspector = inspect(engine) + + # add missing tables + existing = {(table.schema, table.name) for table in new_tables} + for table in tables: + if (table.schema, table.table) not in existing: + column_metadata = inspector.get_columns(table.table, schema=table.schema) + columns = [ + NewColumn( + name=column["name"], + type=str(column["type"]), + expression=conditional_quote(column["name"]), + is_temporal=column["type"].python_type.__name__.upper() + in TEMPORAL_TYPES, + is_aggregation=False, + is_physical=True, + is_spatial=False, + is_partition=False, + is_increase_desired=True, + ) + for column in column_metadata + ] + new_tables.append( + NewTable( + name=table.table, + schema=table.schema, + catalog=None, + database_id=database_id, + columns=columns, + ) + ) + existing.add((table.schema, table.table)) + + return new_tables + + def after_insert(target: SqlaTable) -> None: # pylint: disable=too-many-locals """ Copy old datasets to the new models. @@ -253,7 +334,10 @@ def after_insert(target: SqlaTable) -> None: # pylint: disable=too-many-locals if column.is_active is False: continue - extra_json = json.loads(column.extra or "{}") + try: + extra_json = json.loads(column.extra or "{}") + except json.decoder.JSONDecodeError: + extra_json = {} for attr in {"groupby", "filterable", "verbose_name", "python_date_format"}: value = getattr(column, attr) if value: @@ -279,7 +363,10 @@ def after_insert(target: SqlaTable) -> None: # pylint: disable=too-many-locals # create metrics for metric in target.metrics: - extra_json = json.loads(metric.extra or "{}") + try: + extra_json = json.loads(metric.extra or "{}") + except json.decoder.JSONDecodeError: + extra_json = {} for attr in {"verbose_name", "metric_type", "d3format"}: value = getattr(metric, attr) if value: @@ -309,8 +396,7 @@ def after_insert(target: SqlaTable) -> None: # pylint: disable=too-many-locals ) # physical dataset - tables = [] - if target.sql is None: + if not target.sql: physical_columns = [column for column in columns if column.is_physical] # create table @@ -323,7 +409,7 @@ def after_insert(target: SqlaTable) -> None: # pylint: disable=too-many-locals is_managed_externally=target.is_managed_externally, external_url=target.external_url, ) - tables.append(table) + tables = [table] # virtual dataset else: @@ -332,20 +418,14 @@ def after_insert(target: SqlaTable) -> None: # pylint: disable=too-many-locals column.is_physical = False # find referenced tables - parsed = ParsedQuery(target.sql) - referenced_tables = parsed.tables - - # predicate for finding the referenced tables - predicate = or_( - *[ - and_( - NewTable.schema == (table.schema or target.schema), - NewTable.name == table.table, - ) - for table in referenced_tables - ] + referenced_tables = extract_table_references(target.sql, dialect_class.name) + tables = load_or_create_tables( + session, + target.database_id, + target.schema, + referenced_tables, + conditional_quote, ) - tables = session.query(NewTable).filter(predicate).all() # create the new dataset dataset = NewDataset( @@ -354,7 +434,7 @@ def after_insert(target: SqlaTable) -> None: # pylint: disable=too-many-locals expression=target.sql or conditional_quote(target.table_name), tables=tables, columns=columns, - is_physical=target.sql is None, + is_physical=not target.sql, is_managed_externally=target.is_managed_externally, external_url=target.external_url, ) @@ -379,16 +459,46 @@ def upgrade(): sa.Column("name", sa.TEXT(), nullable=False), sa.Column("type", sa.TEXT(), nullable=False), sa.Column("expression", sa.TEXT(), nullable=False), - sa.Column("is_physical", sa.BOOLEAN(), nullable=False, default=True,), + sa.Column( + "is_physical", + sa.BOOLEAN(), + nullable=False, + default=True, + ), sa.Column("description", sa.TEXT(), nullable=True), sa.Column("warning_text", sa.TEXT(), nullable=True), sa.Column("unit", sa.TEXT(), nullable=True), sa.Column("is_temporal", sa.BOOLEAN(), nullable=False), - sa.Column("is_spatial", sa.BOOLEAN(), nullable=False, default=False,), - sa.Column("is_partition", sa.BOOLEAN(), nullable=False, default=False,), - sa.Column("is_aggregation", sa.BOOLEAN(), nullable=False, default=False,), - sa.Column("is_additive", sa.BOOLEAN(), nullable=False, default=False,), - sa.Column("is_increase_desired", sa.BOOLEAN(), nullable=False, default=True,), + sa.Column( + "is_spatial", + sa.BOOLEAN(), + nullable=False, + default=False, + ), + sa.Column( + "is_partition", + sa.BOOLEAN(), + nullable=False, + default=False, + ), + sa.Column( + "is_aggregation", + sa.BOOLEAN(), + nullable=False, + default=False, + ), + sa.Column( + "is_additive", + sa.BOOLEAN(), + nullable=False, + default=False, + ), + sa.Column( + "is_increase_desired", + sa.BOOLEAN(), + nullable=False, + default=True, + ), sa.Column( "is_managed_externally", sa.Boolean(), @@ -459,7 +569,12 @@ def upgrade(): sa.Column("sqlatable_id", sa.INTEGER(), nullable=True), sa.Column("name", sa.TEXT(), nullable=False), sa.Column("expression", sa.TEXT(), nullable=False), - sa.Column("is_physical", sa.BOOLEAN(), nullable=False, default=False,), + sa.Column( + "is_physical", + sa.BOOLEAN(), + nullable=False, + default=False, + ), sa.Column( "is_managed_externally", sa.Boolean(), diff --git a/superset/migrations/versions/c25cb2c78727_security_converge_annotations.py b/superset/migrations/versions/c25cb2c78727_security_converge_annotations.py index 33099dd2e74b2..eedc721c98788 100644 --- a/superset/migrations/versions/c25cb2c78727_security_converge_annotations.py +++ b/superset/migrations/versions/c25cb2c78727_security_converge_annotations.py @@ -39,19 +39,51 @@ down_revision = "ccb74baaa89b" -NEW_PVMS = {"Annotation": ("can_read", "can_write",)} +NEW_PVMS = { + "Annotation": ( + "can_read", + "can_write", + ) +} PVM_MAP = { Pvm("AnnotationLayerModelView", "can_delete"): (Pvm("Annotation", "can_write"),), Pvm("AnnotationLayerModelView", "can_list"): (Pvm("Annotation", "can_read"),), - Pvm("AnnotationLayerModelView", "can_show",): (Pvm("Annotation", "can_read"),), - Pvm("AnnotationLayerModelView", "can_add",): (Pvm("Annotation", "can_write"),), - Pvm("AnnotationLayerModelView", "can_edit",): (Pvm("Annotation", "can_write"),), - Pvm("AnnotationModelView", "can_annotation",): (Pvm("Annotation", "can_read"),), - Pvm("AnnotationModelView", "can_show",): (Pvm("Annotation", "can_read"),), - Pvm("AnnotationModelView", "can_add",): (Pvm("Annotation", "can_write"),), - Pvm("AnnotationModelView", "can_delete",): (Pvm("Annotation", "can_write"),), - Pvm("AnnotationModelView", "can_edit",): (Pvm("Annotation", "can_write"),), - Pvm("AnnotationModelView", "can_list",): (Pvm("Annotation", "can_read"),), + Pvm( + "AnnotationLayerModelView", + "can_show", + ): (Pvm("Annotation", "can_read"),), + Pvm( + "AnnotationLayerModelView", + "can_add", + ): (Pvm("Annotation", "can_write"),), + Pvm( + "AnnotationLayerModelView", + "can_edit", + ): (Pvm("Annotation", "can_write"),), + Pvm( + "AnnotationModelView", + "can_annotation", + ): (Pvm("Annotation", "can_read"),), + Pvm( + "AnnotationModelView", + "can_show", + ): (Pvm("Annotation", "can_read"),), + Pvm( + "AnnotationModelView", + "can_add", + ): (Pvm("Annotation", "can_write"),), + Pvm( + "AnnotationModelView", + "can_delete", + ): (Pvm("Annotation", "can_write"),), + Pvm( + "AnnotationModelView", + "can_edit", + ): (Pvm("Annotation", "can_write"),), + Pvm( + "AnnotationModelView", + "can_list", + ): (Pvm("Annotation", "can_read"),), } diff --git a/superset/migrations/versions/c501b7c653a3_add_missing_uuid_column.py b/superset/migrations/versions/c501b7c653a3_add_missing_uuid_column.py index f8b252ed0cba3..4cfbc104c01db 100644 --- a/superset/migrations/versions/c501b7c653a3_add_missing_uuid_column.py +++ b/superset/migrations/versions/c501b7c653a3_add_missing_uuid_column.py @@ -67,7 +67,10 @@ def upgrade(): with op.batch_alter_table(table_name) as batch_op: batch_op.add_column( sa.Column( - "uuid", UUIDType(binary=True), primary_key=False, default=uuid4, + "uuid", + UUIDType(binary=True), + primary_key=False, + default=uuid4, ), ) add_uuids(model, table_name, session) diff --git a/superset/migrations/versions/c82ee8a39623_add_implicit_tags.py b/superset/migrations/versions/c82ee8a39623_add_implicit_tags.py index 3bab3f6ec3af9..ad809d3e4564e 100644 --- a/superset/migrations/versions/c82ee8a39623_add_implicit_tags.py +++ b/superset/migrations/versions/c82ee8a39623_add_implicit_tags.py @@ -52,7 +52,10 @@ class AuditMixinNullable(AuditMixin): @declared_attr def created_by_fk(self) -> Column: return Column( - Integer, ForeignKey("ab_user.id"), default=self.get_user_id, nullable=True, + Integer, + ForeignKey("ab_user.id"), + default=self.get_user_id, + nullable=True, ) @declared_attr diff --git a/superset/migrations/versions/c878781977c6_alert_reports_shared_uniqueness.py b/superset/migrations/versions/c878781977c6_alert_reports_shared_uniqueness.py index 62b4501bc343c..bb8f628bd7c24 100644 --- a/superset/migrations/versions/c878781977c6_alert_reports_shared_uniqueness.py +++ b/superset/migrations/versions/c878781977c6_alert_reports_shared_uniqueness.py @@ -80,7 +80,8 @@ def upgrade(): if isinstance(bind.dialect, MySQLDialect): op.drop_index( - op.f("name"), table_name="report_schedule", + op.f("name"), + table_name="report_schedule", ) if isinstance(bind.dialect, PGDialect): diff --git a/superset/migrations/versions/ccb74baaa89b_security_converge_charts.py b/superset/migrations/versions/ccb74baaa89b_security_converge_charts.py index d025cd5762f98..66fc547d54496 100644 --- a/superset/migrations/versions/ccb74baaa89b_security_converge_charts.py +++ b/superset/migrations/versions/ccb74baaa89b_security_converge_charts.py @@ -39,22 +39,63 @@ Pvm, ) -NEW_PVMS = {"Chart": ("can_read", "can_write",)} +NEW_PVMS = { + "Chart": ( + "can_read", + "can_write", + ) +} PVM_MAP = { Pvm("SliceModelView", "can_list"): (Pvm("Chart", "can_read"),), Pvm("SliceModelView", "can_show"): (Pvm("Chart", "can_read"),), - Pvm("SliceModelView", "can_edit",): (Pvm("Chart", "can_write"),), - Pvm("SliceModelView", "can_delete",): (Pvm("Chart", "can_write"),), - Pvm("SliceModelView", "can_add",): (Pvm("Chart", "can_write"),), - Pvm("SliceModelView", "can_download",): (Pvm("Chart", "can_read"),), - Pvm("SliceModelView", "muldelete",): (Pvm("Chart", "can_write"),), - Pvm("SliceModelView", "can_mulexport",): (Pvm("Chart", "can_read"),), - Pvm("SliceModelView", "can_favorite_status",): (Pvm("Chart", "can_read"),), - Pvm("SliceModelView", "can_cache_screenshot",): (Pvm("Chart", "can_read"),), - Pvm("SliceModelView", "can_screenshot",): (Pvm("Chart", "can_read"),), - Pvm("SliceModelView", "can_data_from_cache",): (Pvm("Chart", "can_read"),), - Pvm("SliceAsync", "can_list",): (Pvm("Chart", "can_read"),), - Pvm("SliceAsync", "muldelete",): (Pvm("Chart", "can_write"),), + Pvm( + "SliceModelView", + "can_edit", + ): (Pvm("Chart", "can_write"),), + Pvm( + "SliceModelView", + "can_delete", + ): (Pvm("Chart", "can_write"),), + Pvm( + "SliceModelView", + "can_add", + ): (Pvm("Chart", "can_write"),), + Pvm( + "SliceModelView", + "can_download", + ): (Pvm("Chart", "can_read"),), + Pvm( + "SliceModelView", + "muldelete", + ): (Pvm("Chart", "can_write"),), + Pvm( + "SliceModelView", + "can_mulexport", + ): (Pvm("Chart", "can_read"),), + Pvm( + "SliceModelView", + "can_favorite_status", + ): (Pvm("Chart", "can_read"),), + Pvm( + "SliceModelView", + "can_cache_screenshot", + ): (Pvm("Chart", "can_read"),), + Pvm( + "SliceModelView", + "can_screenshot", + ): (Pvm("Chart", "can_read"),), + Pvm( + "SliceModelView", + "can_data_from_cache", + ): (Pvm("Chart", "can_read"),), + Pvm( + "SliceAsync", + "can_list", + ): (Pvm("Chart", "can_read"),), + Pvm( + "SliceAsync", + "muldelete", + ): (Pvm("Chart", "can_write"),), } diff --git a/superset/migrations/versions/d416d0d715cc_add_limiting_factor_column_to_query_.py b/superset/migrations/versions/d416d0d715cc_add_limiting_factor_column_to_query_.py index 47db03d4555b5..532da44886643 100644 --- a/superset/migrations/versions/d416d0d715cc_add_limiting_factor_column_to_query_.py +++ b/superset/migrations/versions/d416d0d715cc_add_limiting_factor_column_to_query_.py @@ -33,7 +33,11 @@ def upgrade(): with op.batch_alter_table("query") as batch_op: batch_op.add_column( - sa.Column("limiting_factor", sa.VARCHAR(255), server_default="UNKNOWN",) + sa.Column( + "limiting_factor", + sa.VARCHAR(255), + server_default="UNKNOWN", + ) ) diff --git a/superset/migrations/versions/e38177dbf641_security_converge_saved_queries.py b/superset/migrations/versions/e38177dbf641_security_converge_saved_queries.py index 85ce431758dd4..d3342fe535686 100644 --- a/superset/migrations/versions/e38177dbf641_security_converge_saved_queries.py +++ b/superset/migrations/versions/e38177dbf641_security_converge_saved_queries.py @@ -39,20 +39,55 @@ Pvm, ) -NEW_PVMS = {"SavedQuery": ("can_read", "can_write",)} +NEW_PVMS = { + "SavedQuery": ( + "can_read", + "can_write", + ) +} PVM_MAP = { Pvm("SavedQueryView", "can_list"): (Pvm("SavedQuery", "can_read"),), Pvm("SavedQueryView", "can_show"): (Pvm("SavedQuery", "can_read"),), - Pvm("SavedQueryView", "can_add",): (Pvm("SavedQuery", "can_write"),), - Pvm("SavedQueryView", "can_edit",): (Pvm("SavedQuery", "can_write"),), - Pvm("SavedQueryView", "can_delete",): (Pvm("SavedQuery", "can_write"),), - Pvm("SavedQueryView", "muldelete",): (Pvm("SavedQuery", "can_write"),), - Pvm("SavedQueryView", "can_mulexport",): (Pvm("SavedQuery", "can_read"),), - Pvm("SavedQueryViewApi", "can_show",): (Pvm("SavedQuery", "can_read"),), - Pvm("SavedQueryViewApi", "can_edit",): (Pvm("SavedQuery", "can_write"),), - Pvm("SavedQueryViewApi", "can_list",): (Pvm("SavedQuery", "can_read"),), - Pvm("SavedQueryViewApi", "can_add",): (Pvm("SavedQuery", "can_write"),), - Pvm("SavedQueryViewApi", "muldelete",): (Pvm("SavedQuery", "can_write"),), + Pvm( + "SavedQueryView", + "can_add", + ): (Pvm("SavedQuery", "can_write"),), + Pvm( + "SavedQueryView", + "can_edit", + ): (Pvm("SavedQuery", "can_write"),), + Pvm( + "SavedQueryView", + "can_delete", + ): (Pvm("SavedQuery", "can_write"),), + Pvm( + "SavedQueryView", + "muldelete", + ): (Pvm("SavedQuery", "can_write"),), + Pvm( + "SavedQueryView", + "can_mulexport", + ): (Pvm("SavedQuery", "can_read"),), + Pvm( + "SavedQueryViewApi", + "can_show", + ): (Pvm("SavedQuery", "can_read"),), + Pvm( + "SavedQueryViewApi", + "can_edit", + ): (Pvm("SavedQuery", "can_write"),), + Pvm( + "SavedQueryViewApi", + "can_list", + ): (Pvm("SavedQuery", "can_read"),), + Pvm( + "SavedQueryViewApi", + "can_add", + ): (Pvm("SavedQuery", "can_write"),), + Pvm( + "SavedQueryViewApi", + "muldelete", + ): (Pvm("SavedQuery", "can_write"),), } diff --git a/superset/migrations/versions/e5ef6828ac4e_add_rls_filter_type_and_grouping_key.py b/superset/migrations/versions/e5ef6828ac4e_add_rls_filter_type_and_grouping_key.py index 01fcf60e93357..7e1de6112889e 100644 --- a/superset/migrations/versions/e5ef6828ac4e_add_rls_filter_type_and_grouping_key.py +++ b/superset/migrations/versions/e5ef6828ac4e_add_rls_filter_type_and_grouping_key.py @@ -53,6 +53,8 @@ def upgrade(): def downgrade(): with op.batch_alter_table("row_level_security_filters") as batch_op: - batch_op.drop_index(op.f("ix_row_level_security_filters_filter_type"),) + batch_op.drop_index( + op.f("ix_row_level_security_filters_filter_type"), + ) batch_op.drop_column("filter_type") batch_op.drop_column("group_key") diff --git a/superset/models/__init__.py b/superset/models/__init__.py index 573d22d1094fd..a102a0fff59a4 100644 --- a/superset/models/__init__.py +++ b/superset/models/__init__.py @@ -14,12 +14,4 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -from . import ( - alerts, - core, - datasource_access_request, - dynamic_plugins, - schedules, - sql_lab, - user_attributes, -) +from . import core, datasource_access_request, dynamic_plugins, sql_lab, user_attributes diff --git a/superset/models/alerts.py b/superset/models/alerts.py deleted file mode 100644 index 163dcf027de0e..0000000000000 --- a/superset/models/alerts.py +++ /dev/null @@ -1,176 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -"""Models for scheduled execution of jobs""" -import json -import textwrap -from datetime import datetime -from typing import Any, Optional - -from flask_appbuilder import Model -from sqlalchemy import ( - Boolean, - Column, - DateTime, - Float, - ForeignKey, - Integer, - String, - Table, - Text, -) -from sqlalchemy.ext.declarative import declared_attr -from sqlalchemy.orm import backref, relationship, RelationshipProperty - -from superset import db, security_manager -from superset.models.helpers import AuditMixinNullable - -metadata = Model.metadata # pylint: disable=no-member - - -alert_owner = Table( - "alert_owner", - metadata, - Column("id", Integer, primary_key=True), - Column("user_id", Integer, ForeignKey("ab_user.id")), - Column("alert_id", Integer, ForeignKey("alerts.id")), -) - - -class Alert(Model, AuditMixinNullable): - - """Schedules for emailing slices / dashboards""" - - __tablename__ = "alerts" - - id = Column(Integer, primary_key=True) - label = Column(String(150), nullable=False) - active = Column(Boolean, default=True, index=True) - # TODO(bkyryliuk): enforce minimal supported frequency - crontab = Column(String(50), nullable=False) - - alert_type = Column(String(50)) - owners = relationship(security_manager.user_model, secondary=alert_owner) - recipients = Column(Text) - slack_channel = Column(Text) - - # TODO(bkyryliuk): implement log_retention - log_retention = Column(Integer, default=90) - grace_period = Column(Integer, default=60 * 60 * 24) - - slice_id = Column(Integer, ForeignKey("slices.id")) - slice = relationship("Slice", backref="alerts", foreign_keys=[slice_id]) - - dashboard_id = Column(Integer, ForeignKey("dashboards.id")) - dashboard = relationship("Dashboard", backref="alert", foreign_keys=[dashboard_id]) - - last_eval_dttm = Column(DateTime, default=datetime.utcnow) - last_state = Column(String(10)) - - # Observation related columns - sql = Column(Text, nullable=False) - - # Validation related columns - validator_type = Column(String(100), nullable=False) - validator_config = Column( - Text, - default=textwrap.dedent( - """ - { - - } - """ - ), - ) - - @declared_attr - def database_id(self) -> int: - return Column(Integer, ForeignKey("dbs.id"), nullable=False) - - @declared_attr - def database(self) -> RelationshipProperty: - return relationship( - "Database", - foreign_keys=[self.database_id], - backref=backref("sql_observers", cascade="all, delete-orphan"), - ) - - def get_last_observation(self) -> Optional[Any]: - observations = list( - db.session.query(SQLObservation) - .filter_by(alert_id=self.id) - .order_by(SQLObservation.dttm.desc()) - .limit(1) - ) - - if observations: - return observations[0] - - return None - - def __str__(self) -> str: - return f"<{self.id}:{self.label}>" - - @property - def pretty_config(self) -> str: - """String representing the comparison that will trigger a validator""" - config = json.loads(self.validator_config) - - if self.validator_type.lower() == "operator": - return f"{config['op']} {config['threshold']}" - - if self.validator_type.lower() == "not null": - return "!= Null or 0" - - return "" - - -class AlertLog(Model): - """Keeps track of alert-related operations""" - - __tablename__ = "alert_logs" - - id = Column(Integer, primary_key=True) - scheduled_dttm = Column(DateTime) - dttm_start = Column(DateTime, default=datetime.utcnow) - dttm_end = Column(DateTime, default=datetime.utcnow) - alert_id = Column(Integer, ForeignKey("alerts.id")) - alert = relationship("Alert", backref="logs", foreign_keys=[alert_id]) - state = Column(String(10)) - - @property - def duration(self) -> int: - return (self.dttm_end - self.dttm_start).total_seconds() - - -# TODO: Currently SQLObservation table will constantly grow with no limit, -# add some retention restriction or more to a more scalable db e.g. -# https://github.com/apache/superset/blob/master/superset/utils/log.py#L32 -class SQLObservation(Model): # pylint: disable=too-few-public-methods - """Keeps track of the collected observations for alerts.""" - - __tablename__ = "sql_observations" - - id = Column(Integer, primary_key=True) - dttm = Column(DateTime, default=datetime.utcnow, index=True) - alert_id = Column(Integer, ForeignKey("alerts.id")) - alert = relationship( - "Alert", - foreign_keys=[alert_id], - backref=backref("observations", cascade="all, delete-orphan"), - ) - value = Column(Float) - error_msg = Column(String(500)) diff --git a/superset/models/core.py b/superset/models/core.py index 51f0731009950..fcc7cf16d8ef2 100755 --- a/superset/models/core.py +++ b/superset/models/core.py @@ -165,7 +165,7 @@ class Database( "allow_file_upload", "extra", ] - extra_import_fields = ["password"] + extra_import_fields = ["password", "is_managed_externally", "external_url"] export_children = ["tables"] def __repr__(self) -> str: @@ -322,7 +322,9 @@ def set_sqlalchemy_uri(self, uri: str) -> None: self.sqlalchemy_uri = str(conn) # hides the password def get_effective_user( - self, object_url: URL, user_name: Optional[str] = None, + self, + object_url: URL, + user_name: Optional[str] = None, ) -> Optional[str]: """ Get the effective user, especially during impersonation. diff --git a/superset/models/dashboard.py b/superset/models/dashboard.py index 55bf909b97353..7a8710af0d4af 100644 --- a/superset/models/dashboard.py +++ b/superset/models/dashboard.py @@ -163,6 +163,7 @@ class Dashboard(Model, AuditMixinNullable, ImportExportMixin): "css", "slug", ] + extra_import_fields = ["is_managed_externally", "external_url"] def __repr__(self) -> str: return f"Dashboard<{self.id or self.slug}>" @@ -278,6 +279,7 @@ def data(self) -> Dict[str, Any]: "slices": [slc.data for slc in self.slices], "position_json": positions, "last_modified_time": self.changed_on.replace(microsecond=0).timestamp(), + "is_managed_externally": self.is_managed_externally, } @cache_manager.cache.memoize( @@ -342,7 +344,8 @@ def clear_cache_for_slice(cls, slice_id: int) -> None: @debounce(0.1) def clear_cache_for_datasource(cls, datasource_id: int) -> None: filter_query = select( - [dashboard_slices.c.dashboard_id], distinct=True, + [dashboard_slices.c.dashboard_id], + distinct=True, ).select_from( join( dashboard_slices, diff --git a/superset/models/schedules.py b/superset/models/schedules.py deleted file mode 100644 index f60890bfc3b56..0000000000000 --- a/superset/models/schedules.py +++ /dev/null @@ -1,104 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -"""Models for scheduled execution of jobs""" -import enum -from typing import Optional, Type - -from flask_appbuilder import Model -from sqlalchemy import Boolean, Column, Enum, ForeignKey, Integer, String, Text -from sqlalchemy.ext.declarative import declared_attr -from sqlalchemy.orm import relationship, RelationshipProperty - -from superset import security_manager -from superset.models.alerts import Alert -from superset.models.helpers import AuditMixinNullable, ImportExportMixin - -metadata = Model.metadata # pylint: disable=no-member - - -class ScheduleType(str, enum.Enum): - # pylint: disable=invalid-name - slice = "slice" - dashboard = "dashboard" - alert = "alert" - - -class EmailDeliveryType(str, enum.Enum): - # pylint: disable=invalid-name - attachment = "Attachment" - inline = "Inline" - - -class SliceEmailReportFormat(str, enum.Enum): - # pylint: disable=invalid-name - visualization = "Visualization" - data = "Raw data" - - -class EmailSchedule: - - """Schedules for emailing slices / dashboards""" - - __tablename__ = "email_schedules" - - id = Column(Integer, primary_key=True) - active = Column(Boolean, default=True, index=True) - crontab = Column(String(50)) - - @declared_attr - def user_id(self) -> int: - return Column(Integer, ForeignKey("ab_user.id")) - - @declared_attr - def user(self) -> RelationshipProperty: - return relationship( - security_manager.user_model, - backref=self.__tablename__, - foreign_keys=[self.user_id], - ) - - recipients = Column(Text) - slack_channel = Column(Text) - deliver_as_group = Column(Boolean, default=False) - delivery_type = Column(Enum(EmailDeliveryType)) - - -class DashboardEmailSchedule( - Model, AuditMixinNullable, ImportExportMixin, EmailSchedule -): - __tablename__ = "dashboard_email_schedules" - dashboard_id = Column(Integer, ForeignKey("dashboards.id")) - dashboard = relationship( - "Dashboard", backref="email_schedules", foreign_keys=[dashboard_id] - ) - - -class SliceEmailSchedule(Model, AuditMixinNullable, ImportExportMixin, EmailSchedule): - __tablename__ = "slice_email_schedules" - slice_id = Column(Integer, ForeignKey("slices.id")) - slice = relationship("Slice", backref="email_schedules", foreign_keys=[slice_id]) - email_format = Column(Enum(SliceEmailReportFormat)) - - -def get_scheduler_model(report_type: str) -> Optional[Type[EmailSchedule]]: - if report_type == ScheduleType.dashboard: - return DashboardEmailSchedule - if report_type == ScheduleType.slice: - return SliceEmailSchedule - if report_type == ScheduleType.alert: - return Alert - return None diff --git a/superset/models/slice.py b/superset/models/slice.py index 9c22efec6d4db..862edb9ec8ce8 100644 --- a/superset/models/slice.py +++ b/superset/models/slice.py @@ -119,6 +119,7 @@ class Slice( # pylint: disable=too-many-public-methods "cache_timeout", ] export_parent = "table" + extra_import_fields = ["is_managed_externally", "external_url"] def __repr__(self) -> str: return self.slice_name or str(self.id) @@ -226,6 +227,7 @@ def data(self) -> Dict[str, Any]: "slice_url": self.slice_url, "certified_by": self.certified_by, "certification_details": self.certification_details, + "is_managed_externally": self.is_managed_externally, } @property diff --git a/superset/queries/saved_queries/schemas.py b/superset/queries/saved_queries/schemas.py index ca2ef800a67e9..1fbaf758a95a2 100644 --- a/superset/queries/saved_queries/schemas.py +++ b/superset/queries/saved_queries/schemas.py @@ -18,7 +18,11 @@ from marshmallow.validate import Length openapi_spec_methods_override = { - "get": {"get": {"description": "Get a saved query",}}, + "get": { + "get": { + "description": "Get a saved query", + } + }, "get_list": { "get": { "description": "Get a list of saved queries, use Rison or JSON " diff --git a/superset/reports/commands/base.py b/superset/reports/commands/base.py index 3582767ef65f2..b17975a5a63e4 100644 --- a/superset/reports/commands/base.py +++ b/superset/reports/commands/base.py @@ -47,7 +47,7 @@ def validate(self) -> None: def validate_chart_dashboard( self, exceptions: List[ValidationError], update: bool = False ) -> None: - """ Validate chart or dashboard relation """ + """Validate chart or dashboard relation""" chart_id = self._properties.get("chart") dashboard_id = self._properties.get("dashboard") creation_method = self._properties.get("creation_method") diff --git a/superset/reports/commands/execute.py b/superset/reports/commands/execute.py index 2a75d2e738ff3..c006d007c4c57 100644 --- a/superset/reports/commands/execute.py +++ b/superset/reports/commands/execute.py @@ -95,7 +95,9 @@ def __init__( self._execution_id = execution_id def set_state_and_log( - self, state: ReportState, error_message: Optional[str] = None, + self, + state: ReportState, + error_message: Optional[str] = None, ) -> None: """ Updates current ReportSchedule state and TS. If on final state writes the log @@ -104,7 +106,8 @@ def set_state_and_log( now_dttm = datetime.utcnow() self.set_state(state, now_dttm) self.create_log( - state, error_message=error_message, + state, + error_message=error_message, ) def set_state(self, state: ReportState, dttm: datetime) -> None: @@ -531,12 +534,14 @@ def next(self) -> None: if self.is_on_working_timeout(): exception_timeout = ReportScheduleWorkingTimeoutError() self.set_state_and_log( - ReportState.ERROR, error_message=str(exception_timeout), + ReportState.ERROR, + error_message=str(exception_timeout), ) raise exception_timeout exception_working = ReportSchedulePreviousWorkingError() self.set_state_and_log( - ReportState.WORKING, error_message=str(exception_working), + ReportState.WORKING, + error_message=str(exception_working), ) raise exception_working diff --git a/superset/reports/dao.py b/superset/reports/dao.py index 11947a349a650..079788fbd0e5f 100644 --- a/superset/reports/dao.py +++ b/superset/reports/dao.py @@ -227,7 +227,8 @@ def find_active(session: Optional[Session] = None) -> List[ReportSchedule]: @staticmethod def find_last_success_log( - report_schedule: ReportSchedule, session: Optional[Session] = None, + report_schedule: ReportSchedule, + session: Optional[Session] = None, ) -> Optional[ReportExecutionLog]: """ Finds last success execution log for a given report @@ -245,7 +246,8 @@ def find_last_success_log( @staticmethod def find_last_entered_working_log( - report_schedule: ReportSchedule, session: Optional[Session] = None, + report_schedule: ReportSchedule, + session: Optional[Session] = None, ) -> Optional[ReportExecutionLog]: """ Finds last success execution log for a given report @@ -264,7 +266,8 @@ def find_last_entered_working_log( @staticmethod def find_last_error_notification( - report_schedule: ReportSchedule, session: Optional[Session] = None, + report_schedule: ReportSchedule, + session: Optional[Session] = None, ) -> Optional[ReportExecutionLog]: """ Finds last error email sent diff --git a/superset/reports/schemas.py b/superset/reports/schemas.py index 733903f8ea705..4076a2041cd99 100644 --- a/superset/reports/schemas.py +++ b/superset/reports/schemas.py @@ -203,7 +203,9 @@ class ReportSchedulePostSchema(Schema): default=ReportDataFormat.VISUALIZATION, validate=validate.OneOf(choices=tuple(key.value for key in ReportDataFormat)), ) - extra = fields.Dict(default=None,) + extra = fields.Dict( + default=None, + ) force_screenshot = fields.Boolean(default=False) @validates_schema diff --git a/superset/security/manager.py b/superset/security/manager.py index ac764d240549d..57f3f2f9586e3 100644 --- a/superset/security/manager.py +++ b/superset/security/manager.py @@ -1307,7 +1307,7 @@ def can_access_based_on_dashboard(datasource: "BaseDatasource") -> bool: @staticmethod def _get_current_epoch_time() -> float: - """ This is used so the tests can mock time """ + """This is used so the tests can mock time""" return time.time() @staticmethod @@ -1376,7 +1376,8 @@ def get_guest_user_from_request(self, req: Request) -> Optional[GuestUser]: def get_guest_user_from_token(self, token: GuestToken) -> GuestUser: return self.guest_user_cls( - token=token, roles=[self.find_role(current_app.config["GUEST_ROLE_NAME"])], + token=token, + roles=[self.find_role(current_app.config["GUEST_ROLE_NAME"])], ) def parse_jwt_guest_token(self, raw_token: str) -> Dict[str, Any]: diff --git a/superset/sqllab/command.py b/superset/sqllab/command.py index 1c2674b060f19..bdc570b603433 100644 --- a/superset/sqllab/command.py +++ b/superset/sqllab/command.py @@ -170,7 +170,10 @@ def _validate_access(self, query: Query) -> None: except Exception as ex: raise QueryIsForbiddenToAccessException(self._execution_context, ex) from ex - def _set_query_limit_if_required(self, rendered_query: str,) -> None: + def _set_query_limit_if_required( + self, + rendered_query: str, + ) -> None: if self._is_required_to_set_limit(): self._set_query_limit(rendered_query) diff --git a/superset/sqllab/query_render.py b/superset/sqllab/query_render.py index a280e303a3669..c2f96542898d9 100644 --- a/superset/sqllab/query_render.py +++ b/superset/sqllab/query_render.py @@ -100,7 +100,12 @@ def _raise_undefined_parameter_exception( extra={ "undefined_parameters": list(undefined_parameters), "template_parameters": execution_context.template_params, - "issue_codes": [{"code": 1006, "message": MSG_OF_1006,}], + "issue_codes": [ + { + "code": 1006, + "message": MSG_OF_1006, + } + ], }, ) diff --git a/superset/stats_logger.py b/superset/stats_logger.py index 29f77112e0239..4b869042a90df 100644 --- a/superset/stats_logger.py +++ b/superset/stats_logger.py @@ -107,6 +107,5 @@ def timing(self, key: str, value: float) -> None: def gauge(self, key: str, value: float) -> None: self.client.gauge(key, value) - except Exception: # pylint: disable=broad-except pass diff --git a/superset/tasks/alerts/observer.py b/superset/tasks/alerts/observer.py deleted file mode 100644 index cbe73d886ae94..0000000000000 --- a/superset/tasks/alerts/observer.py +++ /dev/null @@ -1,96 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. - -import logging -from datetime import datetime -from typing import Optional - -import pandas as pd -from sqlalchemy.orm import Session - -from superset import jinja_context -from superset.models.alerts import Alert, SQLObservation - -logger = logging.getLogger("tasks.email_reports") - - -# Session needs to be passed along in the celery workers and db.session cannot be used. -# For more info see: https://github.com/apache/superset/issues/10530 -def observe(alert_id: int, session: Session) -> Optional[str]: - """Collect observations for the alert. - Returns an error message if the observer value was not valid - """ - - alert = session.query(Alert).filter_by(id=alert_id).one() - - value = None - - tp = jinja_context.get_template_processor(database=alert.database) - rendered_sql = tp.process_template(alert.sql) - df = alert.database.get_df(rendered_sql) - - error_msg = validate_observer_result(df, alert.id, alert.label) - - if not error_msg and not df.empty and df.to_records()[0][1] is not None: - value = float(df.to_records()[0][1]) - - observation = SQLObservation( - alert_id=alert_id, dttm=datetime.utcnow(), value=value, error_msg=error_msg, - ) - - session.add(observation) - session.commit() - - return error_msg - - -def validate_observer_result( - sql_result: pd.DataFrame, alert_id: int, alert_label: str -) -> Optional[str]: - """ - Verifies if a DataFrame SQL query result to see if - it contains a valid value for a SQLObservation. - Returns an error message if the result is invalid. - """ - try: - if sql_result.empty: - # empty results are used for the not null validator - return None - - rows = sql_result.to_records() - - assert ( - len(rows) == 1 - ), f"Observer for alert <{alert_id}:{alert_label}> returned more than 1 row" - - assert ( - len(rows[0]) == 2 - ), f"Observer for alert <{alert_id}:{alert_label}> returned more than 1 column" - - if rows[0][1] is None: - return None - - float(rows[0][1]) - - except AssertionError as error: - return str(error) - except (TypeError, ValueError): - return ( - f"Observer for alert <{alert_id}:{alert_label}> returned a non-number value" - ) - - return None diff --git a/superset/tasks/alerts/validator.py b/superset/tasks/alerts/validator.py deleted file mode 100644 index 38b5791341591..0000000000000 --- a/superset/tasks/alerts/validator.py +++ /dev/null @@ -1,111 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -import enum -import json -from operator import eq, ge, gt, le, lt, ne -from typing import Callable, Optional - -import numpy as np - -from superset.exceptions import SupersetException -from superset.models.alerts import Alert - -OPERATOR_FUNCTIONS = {">=": ge, ">": gt, "<=": le, "<": lt, "==": eq, "!=": ne} - - -class AlertValidatorType(str, enum.Enum): - NOT_NULL = "not null" - OPERATOR = "operator" - - @classmethod - def valid_type(cls, validator_type: str) -> bool: - return any(val_type.value == validator_type for val_type in cls) - - -def check_validator(validator_type: str, config: str) -> None: - if not AlertValidatorType.valid_type(validator_type): - raise SupersetException( - f"Error: {validator_type} is not a valid validator type." - ) - - config_dict = json.loads(config) - - if validator_type == AlertValidatorType.OPERATOR.value: - - if not (config_dict.get("op") and config_dict.get("threshold") is not None): - raise SupersetException( - "Error: Operator Validator needs specified operator and threshold " - 'values. Add "op" and "threshold" to config.' - ) - - if not config_dict["op"] in OPERATOR_FUNCTIONS.keys(): - raise SupersetException( - f'Error: {config_dict["op"]} is an invalid operator type. Change ' - f'the "op" value in the config to one of ' - f'["<", "<=", ">", ">=", "==", "!="]' - ) - - if not isinstance(config_dict["threshold"], (int, float)): - raise SupersetException( - f'Error: {config_dict["threshold"]} is an invalid threshold value.' - f' Change the "threshold" value in the config.' - ) - - -def not_null_validator( - alert: Alert, validator_config: str # pylint: disable=unused-argument -) -> bool: - """Returns True if a recent observation is not NULL""" - - observation = alert.get_last_observation() - # TODO: Validate malformed observations/observations with errors separately - if ( - not observation - or observation.error_msg - or observation.value in (0, None, np.nan) - ): - return False - return True - - -def operator_validator(alert: Alert, validator_config: str) -> bool: - """ - Returns True if a recent observation is greater than or equal to - the value given in the validator config - """ - observation = alert.get_last_observation() - if not observation or observation.value in (None, np.nan): - return False - - operator = json.loads(validator_config)["op"] - threshold = json.loads(validator_config)["threshold"] - return OPERATOR_FUNCTIONS[operator](observation.value, threshold) - - -def get_validator_function( - validator_type: str, -) -> Optional[Callable[[Alert, str], bool]]: - """Returns a validation function based on validator_type""" - - alert_validators = { - AlertValidatorType.NOT_NULL.value: not_null_validator, - AlertValidatorType.OPERATOR.value: operator_validator, - } - if alert_validators.get(validator_type.lower()): - return alert_validators[validator_type.lower()] - - return None diff --git a/superset/tasks/async_queries.py b/superset/tasks/async_queries.py index fcd6f91ebf754..6a42d961e9d9d 100644 --- a/superset/tasks/async_queries.py +++ b/superset/tasks/async_queries.py @@ -47,13 +47,17 @@ def ensure_user_is_set(user_id: Optional[int]) -> None: user_is_not_set = not (hasattr(g, "user") and g.user is not None) if user_is_not_set and user_id is not None: - g.user = security_manager.get_user_by_id(user_id) + g.user = security_manager.get_user_by_id( # pylint: disable=assigning-non-slot + user_id + ) elif user_is_not_set: - g.user = security_manager.get_anonymous_user() + g.user = ( # pylint: disable=assigning-non-slot + security_manager.get_anonymous_user() + ) def set_form_data(form_data: Dict[str, Any]) -> None: - g.form_data = form_data + g.form_data = form_data # pylint: disable=assigning-non-slot def _create_query_context_from_form(form_data: Dict[str, Any]) -> QueryContext: @@ -67,7 +71,8 @@ def _create_query_context_from_form(form_data: Dict[str, Any]) -> QueryContext: @celery_app.task(name="load_chart_data_into_cache", soft_time_limit=query_timeout) def load_chart_data_into_cache( - job_metadata: Dict[str, Any], form_data: Dict[str, Any], + job_metadata: Dict[str, Any], + form_data: Dict[str, Any], ) -> None: # pylint: disable=import-outside-toplevel from superset.charts.data.commands.get_data_command import ChartDataCommand @@ -81,7 +86,9 @@ def load_chart_data_into_cache( cache_key = result["cache_key"] result_url = f"/api/v1/chart/data/{cache_key}" async_query_manager.update_job( - job_metadata, async_query_manager.STATUS_DONE, result_url=result_url, + job_metadata, + async_query_manager.STATUS_DONE, + result_url=result_url, ) except SoftTimeLimitExceeded as ex: logger.warning("A timeout occurred while loading chart data, error: %s", ex) @@ -136,7 +143,9 @@ def load_explore_json_into_cache( # pylint: disable=too-many-locals set_and_log_cache(cache_manager.cache, cache_key, cache_value) result_url = f"/superset/explore_json/data/{cache_key}" async_query_manager.update_job( - job_metadata, async_query_manager.STATUS_DONE, result_url=result_url, + job_metadata, + async_query_manager.STATUS_DONE, + result_url=result_url, ) except SoftTimeLimitExceeded as ex: logger.warning("A timeout occurred while loading explore json, error: %s", ex) diff --git a/superset/tasks/celery_app.py b/superset/tasks/celery_app.py index f8b9bef0d7328..850709bfb4866 100644 --- a/superset/tasks/celery_app.py +++ b/superset/tasks/celery_app.py @@ -32,7 +32,7 @@ # Need to import late, as the celery_app will have been setup by "create_app()" # pylint: disable=wrong-import-position, unused-import -from . import cache, schedules, scheduler # isort:skip +from . import cache, scheduler # isort:skip # Export the celery app globally for Celery (as run on the cmd line) to find app = celery_app diff --git a/superset/tasks/scheduler.py b/superset/tasks/scheduler.py index 4b1debea4b1b2..f4c6365df36e6 100644 --- a/superset/tasks/scheduler.py +++ b/superset/tasks/scheduler.py @@ -61,7 +61,13 @@ def scheduler() -> None: active_schedule.working_timeout + app.config["ALERT_REPORTS_WORKING_SOFT_TIME_OUT_LAG"] ) - execute.apply_async((active_schedule.id, schedule,), **async_options) + execute.apply_async( + ( + active_schedule.id, + schedule, + ), + **async_options + ) @celery_app.task(name="reports.execute") @@ -70,7 +76,9 @@ def execute(report_schedule_id: int, scheduled_dttm: str) -> None: task_id = execute.request.id scheduled_dttm_ = parser.parse(scheduled_dttm) AsyncExecuteReportScheduleCommand( - task_id, report_schedule_id, scheduled_dttm_, + task_id, + report_schedule_id, + scheduled_dttm_, ).run() except ReportScheduleUnexpectedError as ex: logger.error( diff --git a/superset/tasks/schedules.py b/superset/tasks/schedules.py deleted file mode 100644 index 05506d077a973..0000000000000 --- a/superset/tasks/schedules.py +++ /dev/null @@ -1,855 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -""" -DEPRECATION NOTICE: this module is deprecated as of v1.0.0. -It will be removed in future versions of Superset. Please -migrate to the new scheduler: `superset.tasks.scheduler`. -""" - -import logging -import time -import urllib.request -from collections import namedtuple -from datetime import datetime, timedelta -from email.utils import make_msgid, parseaddr -from enum import Enum -from typing import ( - Any, - Callable, - Dict, - Iterator, - NamedTuple, - Optional, - Tuple, - TYPE_CHECKING, - Union, -) -from urllib.error import URLError - -import croniter -import simplejson as json -from celery.app.task import Task -from dateutil.tz import tzlocal -from flask import current_app, render_template, url_for -from flask_babel import gettext as __ -from selenium.common.exceptions import WebDriverException -from selenium.webdriver import chrome, firefox -from selenium.webdriver.remote.webdriver import WebDriver -from sqlalchemy import func -from sqlalchemy.exc import NoSuchColumnError, ResourceClosedError -from sqlalchemy.orm import Session - -from superset import app, security_manager, thumbnail_cache -from superset.extensions import celery_app, machine_auth_provider_factory -from superset.models.alerts import Alert, AlertLog -from superset.models.dashboard import Dashboard -from superset.models.schedules import ( - EmailDeliveryType, - get_scheduler_model, - ScheduleType, - SliceEmailReportFormat, -) -from superset.models.slice import Slice -from superset.tasks.alerts.observer import observe -from superset.tasks.alerts.validator import get_validator_function -from superset.tasks.slack_util import deliver_slack_msg -from superset.utils.celery import session_scope -from superset.utils.core import get_email_address_list, send_email_smtp -from superset.utils.retries import retry_call -from superset.utils.screenshots import ChartScreenshot, WebDriverProxy -from superset.utils.urls import get_url_path - -if TYPE_CHECKING: - from flask_appbuilder.security.sqla.models import User - from werkzeug.datastructures import TypeConversionDict - -# Globals -config = app.config -logger = logging.getLogger("tasks.email_reports") -logger.setLevel(logging.INFO) - -stats_logger = current_app.config["STATS_LOGGER"] -EMAIL_PAGE_RENDER_WAIT = config["EMAIL_PAGE_RENDER_WAIT"] -WEBDRIVER_BASEURL = config["WEBDRIVER_BASEURL"] -WEBDRIVER_BASEURL_USER_FRIENDLY = config["WEBDRIVER_BASEURL_USER_FRIENDLY"] - -ReportContent = namedtuple( - "ReportContent", - [ - "body", # email body - "data", # attachments - "images", # embedded images for the email - "slack_message", # html not supported, only markdown - # attachments for the slack message, embedding not supported - "slack_attachment", - ], -) - - -class ScreenshotData(NamedTuple): - url: str # url to chat/dashboard for this screenshot - image: Optional[bytes] # bytes for the screenshot - - -class AlertContent(NamedTuple): - label: str # alert name - sql: str # sql statement for alert - observation_value: str # value from observation that triggered the alert - validation_error_message: str # a string of the comparison that triggered an alert - alert_url: str # url to alert details - image_data: Optional[ScreenshotData] # data for the alert screenshot - - -def _get_email_to_and_bcc( - recipients: str, deliver_as_group: bool -) -> Iterator[Tuple[str, str]]: - bcc = config["EMAIL_REPORT_BCC_ADDRESS"] - - if deliver_as_group: - to = recipients - yield (to, bcc) - else: - for to in get_email_address_list(recipients): - yield (to, bcc) - - -# TODO(bkyryliuk): move email functionality into a separate module. -def _deliver_email( # pylint: disable=too-many-arguments - recipients: str, - deliver_as_group: bool, - subject: str, - body: str, - data: Optional[Dict[str, Any]], - images: Optional[Dict[str, bytes]], -) -> None: - for (to, bcc) in _get_email_to_and_bcc(recipients, deliver_as_group): - send_email_smtp( - to, - subject, - body, - config, - data=data, - images=images, - bcc=bcc, - mime_subtype="related", - dryrun=config["SCHEDULED_EMAIL_DEBUG_MODE"], - ) - - -def _generate_report_content( - delivery_type: EmailDeliveryType, screenshot: bytes, name: str, url: str -) -> ReportContent: - data: Optional[Dict[str, Any]] - - # how to: https://api.slack.com/reference/surfaces/formatting - slack_message = __( - """ - *%(name)s*\n - <%(url)s|Explore in Superset> - """, - name=name, - url=url, - ) - - if delivery_type == EmailDeliveryType.attachment: - images = None - data = {"screenshot": screenshot} - body = __( - 'Explore in Superset

', - name=name, - url=url, - ) - elif delivery_type == EmailDeliveryType.inline: - # Get the domain from the 'From' address .. - # and make a message id without the < > in the ends - domain = parseaddr(config["SMTP_MAIL_FROM"])[1].split("@")[1] - msgid = make_msgid(domain)[1:-1] - - images = {msgid: screenshot} - data = None - body = __( - """ - Explore in Superset

- - """, - name=name, - url=url, - msgid=msgid, - ) - - return ReportContent(body, data, images, slack_message, screenshot) - - -def _get_url_path(view: str, user_friendly: bool = False, **kwargs: Any) -> str: - with app.test_request_context(): - base_url = ( - WEBDRIVER_BASEURL_USER_FRIENDLY if user_friendly else WEBDRIVER_BASEURL - ) - return urllib.parse.urljoin(str(base_url), url_for(view, **kwargs)) - - -def create_webdriver(session: Session) -> WebDriver: - return WebDriverProxy(driver_type=config["WEBDRIVER_TYPE"]).auth( - get_reports_user(session) - ) - - -def get_reports_user(session: Session) -> "User": - return ( - session.query(security_manager.user_model) - .filter( - func.lower(security_manager.user_model.username) - == func.lower(config["EMAIL_REPORTS_USER"]) - ) - .one() - ) - - -def destroy_webdriver( - driver: Union[chrome.webdriver.WebDriver, firefox.webdriver.WebDriver] -) -> None: - """ - Destroy a driver - """ - - # This is some very flaky code in selenium. Hence the retries - # and catch-all exceptions - try: - retry_call(driver.close, max_tries=2) - except Exception: # pylint: disable=broad-except - pass - try: - driver.quit() - except Exception: # pylint: disable=broad-except - pass - - -def deliver_dashboard( # pylint: disable=too-many-locals - dashboard_id: int, - recipients: Optional[str], - slack_channel: Optional[str], - delivery_type: EmailDeliveryType, - deliver_as_group: bool, -) -> None: - - """ - Given a schedule, delivery the dashboard as an email report - """ - with session_scope(nullpool=True) as session: - dashboard = session.query(Dashboard).filter_by(id=dashboard_id).one() - - dashboard_url = _get_url_path( - "Superset.dashboard", dashboard_id_or_slug=dashboard.id - ) - dashboard_url_user_friendly = _get_url_path( - "Superset.dashboard", user_friendly=True, dashboard_id_or_slug=dashboard.id - ) - - # Create a driver, fetch the page, wait for the page to render - driver = create_webdriver(session) - window = config["WEBDRIVER_WINDOW"]["dashboard"] - driver.set_window_size(*window) - driver.get(dashboard_url) - time.sleep(EMAIL_PAGE_RENDER_WAIT) - - # Set up a function to retry once for the element. - # This is buggy in certain selenium versions with firefox driver - get_element = getattr(driver, "find_element_by_class_name") - element = retry_call( - get_element, - fargs=["grid-container"], - max_tries=2, - interval=EMAIL_PAGE_RENDER_WAIT, - ) - - try: - screenshot = element.screenshot_as_png - except WebDriverException: - # Some webdrivers do not support screenshots for elements. - # In such cases, take a screenshot of the entire page. - screenshot = driver.screenshot() - finally: - destroy_webdriver(driver) - - # Generate the email body and attachments - report_content = _generate_report_content( - delivery_type, - screenshot, - dashboard.dashboard_title, - dashboard_url_user_friendly, - ) - - subject = __( - "%(prefix)s %(title)s", - prefix=config["EMAIL_REPORTS_SUBJECT_PREFIX"], - title=dashboard.dashboard_title, - ) - - if recipients: - _deliver_email( - recipients, - deliver_as_group, - subject, - report_content.body, - report_content.data, - report_content.images, - ) - if slack_channel: - deliver_slack_msg( - slack_channel, - subject, - report_content.slack_message, - report_content.slack_attachment, - ) - - -def _get_slice_data( - slc: Slice, delivery_type: EmailDeliveryType, session: Session -) -> ReportContent: - slice_url = _get_url_path( - "Superset.explore_json", csv="true", form_data=json.dumps({"slice_id": slc.id}) - ) - - # URL to include in the email - slice_url_user_friendly = _get_url_path( - "Superset.slice", slice_id=slc.id, user_friendly=True - ) - - # Login on behalf of the "reports" user in order to get cookies to deal with auth - auth_cookies = machine_auth_provider_factory.instance.get_auth_cookies( - get_reports_user(session) - ) - # Build something like "session=cool_sess.val;other-cookie=awesome_other_cookie" - cookie_str = ";".join([f"{key}={val}" for key, val in auth_cookies.items()]) - - opener = urllib.request.build_opener() - opener.addheaders.append(("Cookie", cookie_str)) - response = opener.open(slice_url) - if response.getcode() != 200: - raise URLError(response.getcode()) - - # TODO: Move to the csv module - content = response.read() - rows = [r.split(b",") for r in content.splitlines()] - - if delivery_type == EmailDeliveryType.inline: - data = None - - # Parse the csv file and generate HTML - columns = rows.pop(0) - with app.app_context(): - body = render_template( - "superset/reports/slice_data.html", - columns=columns, - rows=rows, - name=slc.slice_name, - link=slice_url_user_friendly, - ) - - elif delivery_type == EmailDeliveryType.attachment: - data = {__("%(name)s.csv", name=slc.slice_name): content} - body = __( - 'Explore in Superset

', - name=slc.slice_name, - url=slice_url_user_friendly, - ) - - # how to: https://api.slack.com/reference/surfaces/formatting - slack_message = __( - """ - *%(slice_name)s*\n - <%(slice_url_user_friendly)s|Explore in Superset> - """, - slice_name=slc.slice_name, - slice_url_user_friendly=slice_url_user_friendly, - ) - - return ReportContent(body, data, None, slack_message, content) - - -def _get_slice_screenshot(slice_id: int, session: Session) -> ScreenshotData: - slice_obj = session.query(Slice).get(slice_id) - - chart_url = get_url_path("Superset.slice", slice_id=slice_obj.id, standalone="true") - screenshot = ChartScreenshot(chart_url, slice_obj.digest) - image_url = _get_url_path( - "Superset.slice", user_friendly=True, slice_id=slice_obj.id, - ) - - user = security_manager.get_user_by_username( - current_app.config["THUMBNAIL_SELENIUM_USER"], session=session - ) - image_data = screenshot.compute_and_cache( - user=user, cache=thumbnail_cache, force=True, - ) - - session.commit() - return ScreenshotData(image_url, image_data) - - -def _get_slice_visualization( - slc: Slice, delivery_type: EmailDeliveryType, session: Session -) -> ReportContent: - # Create a driver, fetch the page, wait for the page to render - driver = create_webdriver(session) - window = config["WEBDRIVER_WINDOW"]["slice"] - driver.set_window_size(*window) - - slice_url = _get_url_path("Superset.slice", slice_id=slc.id) - slice_url_user_friendly = _get_url_path( - "Superset.slice", slice_id=slc.id, user_friendly=True - ) - - driver.get(slice_url) - time.sleep(EMAIL_PAGE_RENDER_WAIT) - - # Set up a function to retry once for the element. - # This is buggy in certain selenium versions with firefox driver - element = retry_call( - driver.find_element_by_class_name, - fargs=["chart-container"], - max_tries=2, - interval=EMAIL_PAGE_RENDER_WAIT, - ) - - try: - screenshot = element.screenshot_as_png - except WebDriverException: - # Some webdrivers do not support screenshots for elements. - # In such cases, take a screenshot of the entire page. - screenshot = driver.screenshot() - finally: - destroy_webdriver(driver) - - # Generate the email body and attachments - return _generate_report_content( - delivery_type, screenshot, slc.slice_name, slice_url_user_friendly - ) - - -def deliver_slice( # pylint: disable=too-many-arguments - slice_id: int, - recipients: Optional[str], - slack_channel: Optional[str], - delivery_type: EmailDeliveryType, - email_format: SliceEmailReportFormat, - deliver_as_group: bool, - session: Session, -) -> None: - """ - Given a schedule, delivery the slice as an email report - """ - slc = session.query(Slice).filter_by(id=slice_id).one() - - if email_format == SliceEmailReportFormat.data: - report_content = _get_slice_data(slc, delivery_type, session) - elif email_format == SliceEmailReportFormat.visualization: - report_content = _get_slice_visualization(slc, delivery_type, session) - else: - raise RuntimeError("Unknown email report format") - - subject = __( - "%(prefix)s %(title)s", - prefix=config["EMAIL_REPORTS_SUBJECT_PREFIX"], - title=slc.slice_name, - ) - - if recipients: - _deliver_email( - recipients, - deliver_as_group, - subject, - report_content.body, - report_content.data, - report_content.images, - ) - if slack_channel: - deliver_slack_msg( - slack_channel, - subject, - report_content.slack_message, - report_content.slack_attachment, - ) - - -@celery_app.task( - name="email_reports.send", - bind=True, - soft_time_limit=config["EMAIL_ASYNC_TIME_LIMIT_SEC"], -) -def schedule_email_report( - _task: Task, - report_type: ScheduleType, - schedule_id: int, - recipients: Optional[str] = None, - slack_channel: Optional[str] = None, -) -> None: - model_cls = get_scheduler_model(report_type) - with session_scope(nullpool=True) as session: - schedule = session.query(model_cls).get(schedule_id) - - # The user may have disabled the schedule. If so, ignore this - if not schedule or not schedule.active: - logger.info("Ignoring deactivated schedule") - return - - recipients = recipients or schedule.recipients - slack_channel = slack_channel or schedule.slack_channel - logger.info( - "Starting report for slack: %s and recipients: %s.", - slack_channel, - recipients, - ) - - if report_type == ScheduleType.dashboard: - deliver_dashboard( - schedule.dashboard_id, - recipients, - slack_channel, - schedule.delivery_type, - schedule.deliver_as_group, - ) - elif report_type == ScheduleType.slice: - deliver_slice( - schedule.slice_id, - recipients, - slack_channel, - schedule.delivery_type, - schedule.email_format, - schedule.deliver_as_group, - session, - ) - else: - raise RuntimeError("Unknown report type") - - -@celery_app.task( - name="alerts.run_query", - bind=True, - # TODO: find cause of https://github.com/apache/superset/issues/10530 - # and remove retry - autoretry_for=(NoSuchColumnError, ResourceClosedError,), - retry_kwargs={"max_retries": 1}, - retry_backoff=True, -) -def schedule_alert_query( - _task: Task, - report_type: ScheduleType, - schedule_id: int, - recipients: Optional[str] = None, - slack_channel: Optional[str] = None, -) -> None: - model_cls = get_scheduler_model(report_type) - with session_scope(nullpool=True) as session: - schedule = session.query(model_cls).get(schedule_id) - - # The user may have disabled the schedule. If so, ignore this - if not schedule or not schedule.active: - logger.info("Ignoring deactivated alert") - return - - if report_type == ScheduleType.alert: - evaluate_alert( - schedule.id, schedule.label, session, recipients, slack_channel - ) - else: - raise RuntimeError("Unknown report type") - - -class AlertState(str, Enum): - ERROR = "error" - TRIGGER = "trigger" - PASS = "pass" - - -def deliver_alert( - alert_id: int, - session: Session, - recipients: Optional[str] = None, - slack_channel: Optional[str] = None, -) -> None: - """ - Gathers alert information and sends out the alert - to its respective email and slack recipients - """ - - alert = session.query(Alert).get(alert_id) - - logging.info("Triggering alert: %s", alert) - - # Set all the values for the alert report - # Alternate values are used in the case of a test alert - # where an alert might not have a validator - recipients = recipients or alert.recipients - slack_channel = slack_channel or alert.slack_channel - validation_error_message = ( - str(alert.observations[-1].value) + " " + alert.pretty_config - ) - - if alert.slice: - alert_content = AlertContent( - alert.label, - alert.sql, - str(alert.observations[-1].value), - validation_error_message, - _get_url_path("AlertModelView.show", user_friendly=True, pk=alert_id), - _get_slice_screenshot(alert.slice.id, session), - ) - else: - # TODO: dashboard delivery! - alert_content = AlertContent( - alert.label, - alert.sql, - str(alert.observations[-1].value), - validation_error_message, - _get_url_path("AlertModelView.show", user_friendly=True, pk=alert_id), - None, - ) - - if recipients: - deliver_email_alert(alert_content, recipients) - if slack_channel: - deliver_slack_alert(alert_content, slack_channel) - - -def deliver_email_alert(alert_content: AlertContent, recipients: str) -> None: - """Delivers an email alert to the given email recipients""" - subject = f"[Superset] Triggered alert: {alert_content.label}" - deliver_as_group = False - data = None - images = {} - # TODO(JasonD28): add support for emails with no screenshot - image_url = None - if alert_content.image_data: - image_url = alert_content.image_data.url - if alert_content.image_data.image: - images = {"screenshot": alert_content.image_data.image} - - body = render_template( - "email/alert.txt", - alert_url=alert_content.alert_url, - label=alert_content.label, - sql=alert_content.sql, - observation_value=alert_content.observation_value, - validation_error_message=alert_content.validation_error_message, - image_url=image_url, - ) - - _deliver_email(recipients, deliver_as_group, subject, body, data, images) - - -def deliver_slack_alert(alert_content: AlertContent, slack_channel: str) -> None: - """Delivers a slack alert to the given slack channel""" - - subject = __("[Alert] %(label)s", label=alert_content.label) - - image = None - if alert_content.image_data: - slack_message = render_template( - "slack/alert.txt", - label=alert_content.label, - sql=alert_content.sql, - observation_value=alert_content.observation_value, - validation_error_message=alert_content.validation_error_message, - url=alert_content.image_data.url, - alert_url=alert_content.alert_url, - ) - image = alert_content.image_data.image - else: - slack_message = render_template( - "slack/alert_no_screenshot.txt", - label=alert_content.label, - sql=alert_content.sql, - observation_value=alert_content.observation_value, - validation_error_message=alert_content.validation_error_message, - alert_url=alert_content.alert_url, - ) - - deliver_slack_msg( - slack_channel, subject, slack_message, image, - ) - - -def evaluate_alert( - alert_id: int, - label: str, - session: Session, - recipients: Optional[str] = None, - slack_channel: Optional[str] = None, -) -> None: - """Processes an alert to see if it should be triggered""" - - logger.info("Processing alert ID: %i", alert_id) - - state = None - dttm_start = datetime.utcnow() - - try: - logger.info("Querying observers for alert <%s:%s>", alert_id, label) - error_msg = observe(alert_id, session) - if error_msg: - state = AlertState.ERROR - logging.error(error_msg) - except Exception as exc: # pylint: disable=broad-except - state = AlertState.ERROR - logging.exception(exc) - logging.error("Failed at query observers for alert: %s (%s)", label, alert_id) - - dttm_end = datetime.utcnow() - - if state != AlertState.ERROR: - # Don't validate alert on test runs since it may not be triggered - if recipients or slack_channel: - deliver_alert(alert_id, session, recipients, slack_channel) - state = AlertState.TRIGGER - # Validate during regular workflow and deliver only if triggered - elif validate_observations(alert_id, label, session): - deliver_alert(alert_id, session, recipients, slack_channel) - state = AlertState.TRIGGER - else: - state = AlertState.PASS - - session.commit() - alert = session.query(Alert).get(alert_id) - if state != AlertState.ERROR: - alert.last_eval_dttm = dttm_end - alert.last_state = state - alert.logs.append( - AlertLog( - scheduled_dttm=dttm_start, - dttm_start=dttm_start, - dttm_end=dttm_end, - state=state, - ) - ) - session.commit() - - -def validate_observations(alert_id: int, label: str, session: Session) -> bool: - """ - Runs an alert's validators to check if it should be triggered or not - If so, return the name of the validator that returned true - """ - - logger.info("Validating observations for alert <%s:%s>", alert_id, label) - alert = session.query(Alert).get(alert_id) - validate = get_validator_function(alert.validator_type) - return bool(validate and validate(alert, alert.validator_config)) - - -def next_schedules( - crontab: str, start_at: datetime, stop_at: datetime, resolution: int = 0 -) -> Iterator[datetime]: - crons = croniter.croniter(crontab, start_at - timedelta(seconds=1)) - previous = start_at - timedelta(days=1) - - for eta in crons.all_next(datetime): - # Do not cross the time boundary - if eta >= stop_at: - break - - if eta < start_at: - continue - - # Do not allow very frequent tasks - if eta - previous < timedelta(seconds=resolution): - continue - - yield eta - previous = eta - - -def schedule_window( - report_type: str, - start_at: datetime, - stop_at: datetime, - resolution: int, - session: Session, -) -> None: - """ - Find all active schedules and schedule celery tasks for - each of them with a specific ETA (determined by parsing - the cron schedule for the schedule) - """ - model_cls = get_scheduler_model(report_type) - - if not model_cls: - return None - - schedules = session.query(model_cls).filter(model_cls.active.is_(True)) - - for schedule in schedules: - logging.info("Processing schedule %s", schedule) - args = (report_type, schedule.id) - schedule_start_at = start_at - - if ( - hasattr(schedule, "last_eval_dttm") - and schedule.last_eval_dttm - and schedule.last_eval_dttm > start_at - ): - schedule_start_at = schedule.last_eval_dttm + timedelta(seconds=1) - - # Schedule the job for the specified time window - for eta in next_schedules( - schedule.crontab, schedule_start_at, stop_at, resolution=resolution - ): - logging.info("Scheduled eta %s", eta) - get_scheduler_action(report_type).apply_async(args, eta=eta) # type: ignore - - return None - - -def get_scheduler_action(report_type: str) -> Optional[Callable[..., Any]]: - if report_type == ScheduleType.dashboard: - return schedule_email_report - if report_type == ScheduleType.slice: - return schedule_email_report - if report_type == ScheduleType.alert: - return schedule_alert_query - return None - - -@celery_app.task(name="email_reports.schedule_hourly") -def schedule_hourly() -> None: - """Celery beat job meant to be invoked hourly""" - if not config["ENABLE_SCHEDULED_EMAIL_REPORTS"]: - logger.info("Scheduled email reports not enabled in config") - return - - resolution = config["EMAIL_REPORTS_CRON_RESOLUTION"] * 60 - - # Get the top of the hour - start_at = datetime.now(tzlocal()).replace(microsecond=0, second=0, minute=0) - stop_at = start_at + timedelta(seconds=3600) - - with session_scope(nullpool=True) as session: - schedule_window(ScheduleType.dashboard, start_at, stop_at, resolution, session) - schedule_window(ScheduleType.slice, start_at, stop_at, resolution, session) - - -@celery_app.task(name="alerts.schedule_check") -def schedule_alerts() -> None: - """Celery beat job meant to be invoked every minute to check alerts""" - resolution = 0 - now = datetime.utcnow() - start_at = now - timedelta( - seconds=300 - ) # process any missed tasks in the past few minutes - stop_at = now + timedelta(seconds=1) - with session_scope(nullpool=True) as session: - schedule_window(ScheduleType.alert, start_at, stop_at, resolution, session) diff --git a/superset/tasks/slack_util.py b/superset/tasks/slack_util.py index 769f7da8a0ff9..2f44d92605272 100644 --- a/superset/tasks/slack_util.py +++ b/superset/tasks/slack_util.py @@ -54,7 +54,8 @@ def deliver_slack_msg( assert response["file"], str(response) # the uploaded file else: response = cast( - SlackResponse, client.chat_postMessage(channel=slack_channel, text=body), + SlackResponse, + client.chat_postMessage(channel=slack_channel, text=body), ) assert response["message"]["text"], str(response) logger.info("Sent the report to the slack %s", slack_channel) diff --git a/superset/tasks/thumbnails.py b/superset/tasks/thumbnails.py index 5e4b8dfb755dc..94b83ddb372cf 100644 --- a/superset/tasks/thumbnails.py +++ b/superset/tasks/thumbnails.py @@ -72,5 +72,8 @@ def cache_dashboard_thumbnail( current_app.config["THUMBNAIL_SELENIUM_USER"], session=session ) screenshot.compute_and_cache( - user=user, cache=thumbnail_cache, force=force, thumb_size=thumb_size, + user=user, + cache=thumbnail_cache, + force=force, + thumb_size=thumb_size, ) diff --git a/superset/temporary_cache/api.py b/superset/temporary_cache/api.py index b1c5999630b68..e91a2886691f4 100644 --- a/superset/temporary_cache/api.py +++ b/superset/temporary_cache/api.py @@ -63,10 +63,12 @@ class TemporaryCacheRestApi(BaseApi, ABC): def add_apispec_components(self, api_spec: APISpec) -> None: try: api_spec.components.schema( - TemporaryCachePostSchema.__name__, schema=TemporaryCachePostSchema, + TemporaryCachePostSchema.__name__, + schema=TemporaryCachePostSchema, ) api_spec.components.schema( - TemporaryCachePutSchema.__name__, schema=TemporaryCachePutSchema, + TemporaryCachePutSchema.__name__, + schema=TemporaryCachePutSchema, ) except DuplicateComponentNameError: pass diff --git a/superset/temporary_cache/commands/update.py b/superset/temporary_cache/commands/update.py index 584e16690b61f..92af8c14f20af 100644 --- a/superset/temporary_cache/commands/update.py +++ b/superset/temporary_cache/commands/update.py @@ -29,7 +29,8 @@ class UpdateTemporaryCacheCommand(BaseCommand, ABC): def __init__( - self, cmd_params: CommandParameters, + self, + cmd_params: CommandParameters, ): self._parameters = cmd_params diff --git a/superset/temporary_cache/utils.py b/superset/temporary_cache/utils.py index 2f2f71f957e08..9ba2a8d036077 100644 --- a/superset/temporary_cache/utils.py +++ b/superset/temporary_cache/utils.py @@ -14,7 +14,6 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -from secrets import token_urlsafe from typing import Any SEPARATOR = ";" @@ -22,7 +21,3 @@ def cache_key(*args: Any) -> str: return SEPARATOR.join(str(arg) for arg in args) - - -def random_key() -> str: - return token_urlsafe(48) diff --git a/superset/utils/async_query_manager.py b/superset/utils/async_query_manager.py index a026fd6f3f3d7..847df76987ac1 100644 --- a/superset/utils/async_query_manager.py +++ b/superset/utils/async_query_manager.py @@ -134,7 +134,11 @@ def validate_session(response: Response) -> Response: session["async_user_id"] = user_id sub = str(user_id) if user_id else None - token = self.generate_jwt({"channel": async_channel_id, "sub": sub}) + token = jwt.encode( + {"channel": async_channel_id, "sub": sub}, + self._jwt_secret, + algorithm="HS256", + ) response.set_cookie( self._jwt_cookie_name, @@ -146,21 +150,13 @@ def validate_session(response: Response) -> Response: return response - def generate_jwt(self, data: Dict[str, Any]) -> str: - encoded_jwt = jwt.encode(data, self._jwt_secret, algorithm="HS256") - return encoded_jwt.decode("utf-8") - - def parse_jwt(self, token: str) -> Dict[str, Any]: - data = jwt.decode(token, self._jwt_secret, algorithms=["HS256"]) - return data - def parse_jwt_from_request(self, req: Request) -> Dict[str, Any]: token = req.cookies.get(self._jwt_cookie_name) if not token: raise AsyncQueryTokenException("Token not preset") try: - return self.parse_jwt(token) + return jwt.decode(token, self._jwt_secret, algorithms=["HS256"]) except Exception as ex: logger.warning(ex) raise AsyncQueryTokenException("Failed to parse token") from ex diff --git a/superset/utils/cache.py b/superset/utils/cache.py index c10f296e1cac4..02a4cdfecc0ee 100644 --- a/superset/utils/cache.py +++ b/superset/utils/cache.py @@ -94,7 +94,8 @@ def view_cache_key(*args: Any, **kwargs: Any) -> str: # pylint: disable=unused- def memoized_func( - key: Callable[..., str] = view_cache_key, cache: Cache = cache_manager.cache, + key: Callable[..., str] = view_cache_key, + cache: Cache = cache_manager.cache, ) -> Callable[..., Any]: """Use this decorator to cache functions that have predefined first arg. diff --git a/superset/utils/cache_manager.py b/superset/utils/cache_manager.py index f7bb8d9e8f89f..c67644f308b1f 100644 --- a/superset/utils/cache_manager.py +++ b/superset/utils/cache_manager.py @@ -40,7 +40,7 @@ def _init_cache( ) -> None: cache_config = app.config[cache_config_key] cache_type = cache_config.get("CACHE_TYPE") - if required and cache_type in (None, "SupersetMetastoreCache"): + if (required and cache_type is None) or cache_type == "SupersetMetastoreCache": if cache_type is None and not app.debug: logger.warning( "Falling back to the built-in cache, that stores data in the " @@ -49,12 +49,13 @@ def _init_cache( "another dedicated caching backend for production deployments", cache_config_key, ) + cache_type = CACHE_IMPORT_PATH cache_key_prefix = cache_config.get("CACHE_KEY_PREFIX", cache_config_key) cache_config.update( - {"CACHE_TYPE": CACHE_IMPORT_PATH, "CACHE_KEY_PREFIX": cache_key_prefix} + {"CACHE_TYPE": cache_type, "CACHE_KEY_PREFIX": cache_key_prefix} ) - if "CACHE_DEFAULT_TIMEOUT" not in cache_config: + if cache_type is not None and "CACHE_DEFAULT_TIMEOUT" not in cache_config: default_timeout = app.config.get("CACHE_DEFAULT_TIMEOUT") cache_config["CACHE_DEFAULT_TIMEOUT"] = default_timeout diff --git a/superset/utils/core.py b/superset/utils/core.py index b6ae3272cfed5..fbfbbf52f5699 100644 --- a/superset/utils/core.py +++ b/superset/utils/core.py @@ -357,7 +357,6 @@ def __init__(self, **args: Any) -> None: } } - except NameError: pass @@ -513,7 +512,9 @@ def format_timedelta(time_delta: timedelta) -> str: return str(time_delta) -def base_json_conv(obj: Any,) -> Any: # pylint: disable=inconsistent-return-statements +def base_json_conv( # pylint: disable=inconsistent-return-statements + obj: Any, +) -> Any: if isinstance(obj, memoryview): obj = obj.tobytes() if isinstance(obj, np.int64): @@ -1014,7 +1015,8 @@ def zlib_decompress(blob: bytes, decode: Optional[bool] = True) -> Union[bytes, def simple_filter_to_adhoc( - filter_clause: QueryObjectFilterClause, clause: str = "where", + filter_clause: QueryObjectFilterClause, + clause: str = "where", ) -> AdhocFilterClause: result: AdhocFilterClause = { "clause": clause.upper(), @@ -1277,7 +1279,8 @@ def get_metric_name( def get_column_names( - columns: Optional[Sequence[Column]], verbose_map: Optional[Dict[str, Any]] = None, + columns: Optional[Sequence[Column]], + verbose_map: Optional[Dict[str, Any]] = None, ) -> List[str]: return [ column @@ -1287,7 +1290,8 @@ def get_column_names( def get_metric_names( - metrics: Optional[Sequence[Metric]], verbose_map: Optional[Dict[str, Any]] = None, + metrics: Optional[Sequence[Metric]], + verbose_map: Optional[Dict[str, Any]] = None, ) -> List[str]: return [ metric @@ -1297,7 +1301,8 @@ def get_metric_names( def get_first_metric_name( - metrics: Optional[Sequence[Metric]], verbose_map: Optional[Dict[str, Any]] = None, + metrics: Optional[Sequence[Metric]], + verbose_map: Optional[Dict[str, Any]] = None, ) -> Optional[str]: metric_labels = get_metric_names(metrics, verbose_map) return metric_labels[0] if metric_labels else None @@ -1571,7 +1576,8 @@ def get_column_names_from_metrics(metrics: List[Metric]) -> List[str]: def extract_dataframe_dtypes( - df: pd.DataFrame, datasource: Optional["BaseDatasource"] = None, + df: pd.DataFrame, + datasource: Optional["BaseDatasource"] = None, ) -> List[GenericDataType]: """Serialize pandas/numpy dtypes to generic types""" @@ -1632,7 +1638,8 @@ def is_test() -> bool: def get_time_filter_status( - datasource: "BaseDatasource", applied_time_extras: Dict[str, str], + datasource: "BaseDatasource", + applied_time_extras: Dict[str, str], ) -> Tuple[List[Dict[str, str]], List[Dict[str, str]]]: temporal_columns = {col.column_name for col in datasource.columns if col.is_dttm} applied: List[Dict[str, str]] = [] @@ -1786,7 +1793,10 @@ def parse_boolean_string(bool_str: Optional[str]) -> bool: return False -def apply_max_row_limit(limit: int, max_limit: Optional[int] = None,) -> int: +def apply_max_row_limit( + limit: int, + max_limit: Optional[int] = None, +) -> int: """ Override row limit if max global limit is defined diff --git a/superset/utils/date_parser.py b/superset/utils/date_parser.py index 76a13696952ef..cc0693770bfa7 100644 --- a/superset/utils/date_parser.py +++ b/superset/utils/date_parser.py @@ -99,7 +99,8 @@ def dttm_from_timetuple(date_: struct_time) -> datetime: def get_past_or_future( - human_readable: Optional[str], source_time: Optional[datetime] = None, + human_readable: Optional[str], + source_time: Optional[datetime] = None, ) -> datetime: cal = parsedatetime.Calendar() source_dttm = dttm_from_timetuple( @@ -109,7 +110,8 @@ def get_past_or_future( def parse_human_timedelta( - human_readable: Optional[str], source_time: Optional[datetime] = None, + human_readable: Optional[str], + source_time: Optional[datetime] = None, ) -> timedelta: """ Returns ``datetime.timedelta`` from natural language time deltas @@ -135,7 +137,8 @@ def parse_past_timedelta( or datetime.timedelta(365). """ return -parse_human_timedelta( - delta_str if delta_str.startswith("-") else f"-{delta_str}", source_time, + delta_str if delta_str.startswith("-") else f"-{delta_str}", + source_time, ) diff --git a/superset/utils/encrypt.py b/superset/utils/encrypt.py index 0fa2a6d177a06..7c93764f691ba 100644 --- a/superset/utils/encrypt.py +++ b/superset/utils/encrypt.py @@ -156,7 +156,8 @@ def _re_encrypt_row( raise Exception from exc re_encrypted_columns[column_name] = encrypted_type.process_bind_param( - unencrypted_value, self._dialect, + unencrypted_value, + self._dialect, ) set_cols = ",".join( diff --git a/superset/utils/log.py b/superset/utils/log.py index ecee213ebef29..4eafb669328fc 100644 --- a/superset/utils/log.py +++ b/superset/utils/log.py @@ -195,7 +195,10 @@ def log_with_context( # pylint: disable=too-many-locals @contextmanager def log_context( - self, action: str, object_ref: Optional[str] = None, log_to_statsd: bool = True, + self, + action: str, + object_ref: Optional[str] = None, + log_to_statsd: bool = True, ) -> Iterator[Callable[..., None]]: """ Log an event with additional information from the request context. diff --git a/superset/utils/machine_auth.py b/superset/utils/machine_auth.py index 778f2a6b1de04..01347f90f1c25 100644 --- a/superset/utils/machine_auth.py +++ b/superset/utils/machine_auth.py @@ -40,10 +40,14 @@ def __init__( # overridden via config, as opposed to the entire provider implementation self._auth_webdriver_func_override = auth_webdriver_func_override - def authenticate_webdriver(self, driver: WebDriver, user: "User",) -> WebDriver: + def authenticate_webdriver( + self, + driver: WebDriver, + user: "User", + ) -> WebDriver: """ - Default AuthDriverFuncType type that sets a session cookie flask-login style - :return: The WebDriver passed in (fluent) + Default AuthDriverFuncType type that sets a session cookie flask-login style + :return: The WebDriver passed in (fluent) """ # Short-circuit this method if we have an override configured if self._auth_webdriver_func_override: diff --git a/superset/utils/mock_data.py b/superset/utils/mock_data.py index 1c6515804b7fa..ea83f7398251f 100644 --- a/superset/utils/mock_data.py +++ b/superset/utils/mock_data.py @@ -112,7 +112,9 @@ def get_type_generator( # pylint: disable=too-many-return-statements,too-many-b if isinstance(sqltype, sqlalchemy.sql.sqltypes.TIME): return lambda: time( - random.randrange(24), random.randrange(60), random.randrange(60), + random.randrange(24), + random.randrange(60), + random.randrange(60), ) if isinstance( diff --git a/superset/utils/pandas_postprocessing/cum.py b/superset/utils/pandas_postprocessing/cum.py index d2bd5761176fa..b94f048e5cd62 100644 --- a/superset/utils/pandas_postprocessing/cum.py +++ b/superset/utils/pandas_postprocessing/cum.py @@ -28,7 +28,11 @@ @validate_column_args("columns") -def cum(df: DataFrame, operator: str, columns: Dict[str, str],) -> DataFrame: +def cum( + df: DataFrame, + operator: str, + columns: Dict[str, str], +) -> DataFrame: """ Calculate cumulative sum/product/min/max for select columns. diff --git a/superset/utils/pandas_postprocessing/flatten.py b/superset/utils/pandas_postprocessing/flatten.py index a348801e31f3b..49f250ec1c9b9 100644 --- a/superset/utils/pandas_postprocessing/flatten.py +++ b/superset/utils/pandas_postprocessing/flatten.py @@ -22,7 +22,10 @@ ) -def flatten(df: pd.DataFrame, reset_index: bool = True,) -> pd.DataFrame: +def flatten( + df: pd.DataFrame, + reset_index: bool = True, +) -> pd.DataFrame: """ Convert N-dimensional DataFrame to a flat DataFrame diff --git a/superset/utils/pandas_postprocessing/geography.py b/superset/utils/pandas_postprocessing/geography.py index 8ea75d2450293..33a27c2df4074 100644 --- a/superset/utils/pandas_postprocessing/geography.py +++ b/superset/utils/pandas_postprocessing/geography.py @@ -50,7 +50,10 @@ def geohash_decode( def geohash_encode( - df: DataFrame, geohash: str, longitude: str, latitude: str, + df: DataFrame, + geohash: str, + longitude: str, + latitude: str, ) -> DataFrame: """ Encode longitude and latitude into geohash @@ -65,7 +68,8 @@ def geohash_encode( encode_df = df[[latitude, longitude]] encode_df.columns = ["latitude", "longitude"] encode_df["geohash"] = encode_df.apply( - lambda row: geohash_lib.encode(row["latitude"], row["longitude"]), axis=1, + lambda row: geohash_lib.encode(row["latitude"], row["longitude"]), + axis=1, ) return _append_columns(df, encode_df, {"geohash": geohash}) except ValueError as ex: diff --git a/superset/utils/pandas_postprocessing/prophet.py b/superset/utils/pandas_postprocessing/prophet.py index 8a85e581b52af..d66298b1790cc 100644 --- a/superset/utils/pandas_postprocessing/prophet.py +++ b/superset/utils/pandas_postprocessing/prophet.py @@ -114,7 +114,10 @@ def prophet( # pylint: disable=too-many-arguments raise InvalidPostProcessingError(_("Time grain missing")) if time_grain not in PROPHET_TIME_GRAIN_MAP: raise InvalidPostProcessingError( - _("Unsupported time grain: %(time_grain)s", time_grain=time_grain,) + _( + "Unsupported time grain: %(time_grain)s", + time_grain=time_grain, + ) ) freq = PROPHET_TIME_GRAIN_MAP[time_grain] # check type at runtime due to marhsmallow schema not being able to handle diff --git a/superset/utils/pandas_postprocessing/resample.py b/superset/utils/pandas_postprocessing/resample.py index a777672b9db1a..a82d7031e9c12 100644 --- a/superset/utils/pandas_postprocessing/resample.py +++ b/superset/utils/pandas_postprocessing/resample.py @@ -20,6 +20,7 @@ from flask_babel import gettext as _ from superset.exceptions import InvalidPostProcessingError +from superset.utils.pandas_postprocessing.utils import RESAMPLE_METHOD def resample( @@ -40,9 +41,15 @@ def resample( """ if not isinstance(df.index, pd.DatetimeIndex): raise InvalidPostProcessingError(_("Resample operation requires DatetimeIndex")) + if method not in RESAMPLE_METHOD: + raise InvalidPostProcessingError( + _("Resample method should in ") + ", ".join(RESAMPLE_METHOD) + "." + ) if method == "asfreq" and fill_value is not None: _df = df.resample(rule).asfreq(fill_value=fill_value) + elif method == "linear": + _df = df.resample(rule).interpolate() else: _df = getattr(df.resample(rule), method)() return _df diff --git a/superset/utils/pandas_postprocessing/utils.py b/superset/utils/pandas_postprocessing/utils.py index 7aebe1e0d0346..46f5a0c50529c 100644 --- a/superset/utils/pandas_postprocessing/utils.py +++ b/superset/utils/pandas_postprocessing/utils.py @@ -92,6 +92,8 @@ "P1W/1970-01-04T00:00:00Z": "W", } +RESAMPLE_METHOD = ("asfreq", "bfill", "ffill", "linear", "median", "mean", "sum") + FLAT_COLUMN_SEPARATOR = ", " @@ -146,7 +148,8 @@ def wrapped(df: DataFrame, **options: Any) -> Any: def _get_aggregate_funcs( - df: DataFrame, aggregates: Dict[str, Dict[str, Any]], + df: DataFrame, + aggregates: Dict[str, Dict[str, Any]], ) -> Dict[str, NamedAgg]: """ Converts a set of aggregate config objects into functions that pandas can use as @@ -168,7 +171,10 @@ def _get_aggregate_funcs( ) if "operator" not in agg_obj: raise InvalidPostProcessingError( - _("Operator undefined for aggregator: %(name)s", name=name,) + _( + "Operator undefined for aggregator: %(name)s", + name=name, + ) ) operator = agg_obj["operator"] if callable(operator): @@ -177,7 +183,10 @@ def _get_aggregate_funcs( func = NUMPY_FUNCTIONS.get(operator) if not func: raise InvalidPostProcessingError( - _("Invalid numpy function: %(operator)s", operator=operator,) + _( + "Invalid numpy function: %(operator)s", + operator=operator, + ) ) options = agg_obj.get("options", {}) aggfunc = partial(func, **options) diff --git a/superset/utils/profiler.py b/superset/utils/profiler.py index a4710bb24341e..d17b69d8bdc9a 100644 --- a/superset/utils/profiler.py +++ b/superset/utils/profiler.py @@ -35,7 +35,9 @@ class SupersetProfiler: # pylint: disable=too-few-public-methods """ def __init__( - self, app: Callable[[Any, Any], Any], interval: float = 0.0001, + self, + app: Callable[[Any, Any], Any], + interval: float = 0.0001, ): self.app = app self.interval = interval diff --git a/superset/views/__init__.py b/superset/views/__init__.py index c3a349ce495c6..c33601f7278d6 100644 --- a/superset/views/__init__.py +++ b/superset/views/__init__.py @@ -27,7 +27,6 @@ dynamic_plugins, health, redirects, - schedules, sql_lab, tags, ) diff --git a/superset/views/alerts.py b/superset/views/alerts.py index 04640fa223fe8..b97587ec71855 100644 --- a/superset/views/alerts.py +++ b/superset/views/alerts.py @@ -14,76 +14,19 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -""" -DEPRECATION NOTICE: this module is deprecated and will be removed on 2.0. -""" -from croniter import croniter -from flask import abort, current_app as app, flash, Markup -from flask_appbuilder import CompactCRUDMixin, permission_name +from flask import abort +from flask_appbuilder import permission_name from flask_appbuilder.api import expose -from flask_appbuilder.hooks import before_request -from flask_appbuilder.models.sqla.interface import SQLAInterface from flask_appbuilder.security.decorators import has_access -from flask_babel import lazy_gettext as _ -from werkzeug.exceptions import NotFound from superset import is_feature_enabled -from superset.constants import RouteMethod -from superset.models.alerts import Alert, AlertLog, SQLObservation from superset.superset_typing import FlaskResponse -from superset.tasks.alerts.validator import check_validator -from superset.utils import core as utils -from superset.utils.core import get_email_address_str, markdown -from ..exceptions import SupersetException -from .base import BaseSupersetView, SupersetModelView +from .base import BaseSupersetView # TODO: access control rules for this module -class EnsureEnabledMixin: - @staticmethod - def is_enabled() -> bool: - return bool(app.config["ENABLE_ALERTS"]) - - @before_request - def ensure_enabled(self) -> None: - if not self.is_enabled(): - raise NotFound() - - -class AlertLogModelView( - CompactCRUDMixin, EnsureEnabledMixin, SupersetModelView -): # pylint: disable=too-many-ancestors - datamodel = SQLAInterface(AlertLog) - include_route_methods = {RouteMethod.LIST} | {"show"} - base_order = ("dttm_start", "desc") - list_columns = ( - "scheduled_dttm", - "dttm_start", - "duration", - "state", - ) - - -class AlertObservationModelView( - CompactCRUDMixin, EnsureEnabledMixin, SupersetModelView -): # pylint: disable=too-many-ancestors - datamodel = SQLAInterface(SQLObservation) - include_route_methods = {RouteMethod.LIST} | {"show"} - base_order = ("dttm", "desc") - list_title = _("List Observations") - show_title = _("Show Observation") - list_columns = ( - "dttm", - "value", - "error_msg", - ) - label_columns = { - "error_msg": _("Error Message"), - } - - class BaseAlertReportView(BaseSupersetView): route_base = "/report" class_permission_name = "ReportSchedule" @@ -109,144 +52,3 @@ def log(self, pk: int) -> FlaskResponse: # pylint: disable=unused-argument class AlertView(BaseAlertReportView): route_base = "/alert" class_permission_name = "ReportSchedule" - - -class ReportView(BaseAlertReportView): - route_base = "/report" - class_permission_name = "ReportSchedule" - - -class AlertModelView(EnsureEnabledMixin, SupersetModelView): - datamodel = SQLAInterface(Alert) - route_base = "/alerts" - include_route_methods = RouteMethod.CRUD_SET | {"log"} - - list_columns = ( - "label", - "owners", - "database", - "sql", - "pretty_config", - "crontab", - "last_eval_dttm", - "last_state", - "active", - "owners", - ) - show_columns = ( - "label", - "database", - "sql", - "validator_type", - "validator_config", - "active", - "crontab", - "owners", - "slice", - "recipients", - "slack_channel", - "log_retention", - "grace_period", - "last_eval_dttm", - "last_state", - ) - order_columns = ["label", "last_eval_dttm", "last_state", "active"] - add_columns = ( - "label", - "database", - "sql", - "validator_type", - "validator_config", - "active", - "crontab", - # TODO: implement different types of alerts - # "alert_type", - "owners", - "recipients", - "slack_channel", - "slice", - # TODO: implement dashboard screenshots with alerts - # "dashboard", - "log_retention", - "grace_period", - ) - label_columns = { - "log_retention": _("Log Retentions (days)"), - } - description_columns = { - "crontab": markdown( - "A CRON-like expression. " - "[Crontab Guru](https://crontab.guru/) is " - "a helpful resource that can help you craft a CRON expression.", - True, - ), - "recipients": _("A semicolon ';' delimited list of email addresses"), - "log_retention": _("How long to keep the logs around for this alert"), - "grace_period": _( - "Once an alert is triggered, how long, in seconds, before " - "Superset nags you again." - ), - "sql": _( - "A SQL statement that defines whether the alert should get triggered or " - "not. The query is expected to return either NULL or a number value." - ), - "validator_type": utils.markdown( - "Determines when to trigger alert based off value from alert query. " - "Alerts will be triggered with these validator types:" - "
  • Not Null - When the return value is Not NULL, Empty, or 0
  • " - "
  • Operator - When `sql_return_value comparison_operator threshold`" - " is True e.g. `50 <= 75`
    Supports the comparison operators <, <=, " - ">, >=, ==, and !=
", - True, - ), - "validator_config": utils.markdown( - "JSON string containing values the validator will compare against. " - "Each validator needs the following values:" - "
  • Not Null - Nothing. You can leave the config as it is.
  • " - '
  • Operator
    • `"op": "operator"` with an operator from ["<", ' - '"<=", ">", ">=", "==", "!="] e.g. `"op": ">="`
    • ' - '
    • `"threshold": threshold_value` e.g. `"threshold": 50`' - '
    Example config:
    {
    "op":">=",
    "threshold": 60
    }' - "
", - True, - ), - } - - edit_columns = add_columns - related_views = [ - AlertObservationModelView, - AlertLogModelView, - ] - - @expose("/list/") - @has_access - def list(self) -> FlaskResponse: - flash( - Markup( - _( - "This feature is deprecated and will be removed on 2.0. " - "Take a look at the replacement feature " - "" - "Alerts & Reports documentation" - ) - ), - "warning", - ) - return super().list() - - def pre_add(self, item: "AlertModelView") -> None: - item.recipients = get_email_address_str(item.recipients) - - if not croniter.is_valid(item.crontab): - raise SupersetException("Invalid crontab format") - - item.validator_type = item.validator_type.lower() - check_validator(item.validator_type, item.validator_config) - - def pre_update(self, item: "AlertModelView") -> None: - item.validator_type = item.validator_type.lower() - check_validator(item.validator_type, item.validator_config) - - def post_update(self, item: "AlertModelView") -> None: - self.post_add(item) diff --git a/superset/views/base.py b/superset/views/base.py index ae1f7a66b4f1f..863ca2f84ab67 100644 --- a/superset/views/base.py +++ b/superset/views/base.py @@ -629,7 +629,7 @@ def apply(self, query: Query, value: Any) -> Query: ) -class CsvResponse(Response): # pylint: disable=too-many-ancestors +class CsvResponse(Response): """ Override Response to take into account csv encoding from config.py """ diff --git a/superset/views/core.py b/superset/views/core.py index 5959584f1c2d3..c806470e8f1de 100755 --- a/superset/views/core.py +++ b/superset/views/core.py @@ -104,7 +104,7 @@ from superset.queries.dao import QueryDAO from superset.security.analytics_db_safety import check_sqlalchemy_uri from superset.sql_lab import get_sql_results -from superset.sql_parse import ParsedQuery, Table +from superset.sql_parse import ParsedQuery from superset.sql_validators import get_validator_by_name from superset.sqllab.command import CommandResult, ExecuteSqlCommand from superset.sqllab.command_status import SqlJsonExecutionStatus @@ -319,7 +319,9 @@ def approve(self) -> FlaskResponse: # pylint: disable=too-many-locals,no-self-u def clean_fulfilled_requests(session: Session) -> None: for dar in session.query(DAR).all(): datasource = ConnectorRegistry.get_datasource( - dar.datasource_type, dar.datasource_id, session, + dar.datasource_type, + dar.datasource_id, + session, ) if not datasource or security_manager.can_access_datasource(datasource): # Dataset does not exist anymore @@ -627,7 +629,8 @@ def explore_json( and not security_manager.can_access("can_csv", "Superset") ): return json_error_response( - _("You don't have the rights to ") + _("download as csv"), status=403, + _("You don't have the rights to ") + _("download as csv"), + status=403, ) form_data = get_form_data()[0] @@ -748,8 +751,7 @@ def explore( form_data_key = request.args.get("form_data_key") if key is not None: - key_type = config["PERMALINK_KEY_TYPE"] - command = GetExplorePermalinkCommand(g.user, key, key_type) + command = GetExplorePermalinkCommand(g.user, key) try: permalink_value = command.run() if permalink_value: @@ -944,7 +946,9 @@ def filter( # pylint: disable=no-self-use """ # TODO: Cache endpoint by user, datasource and column datasource = ConnectorRegistry.get_datasource( - datasource_type, datasource_id, db.session, + datasource_type, + datasource_id, + db.session, ) if not datasource: return json_error_response(DATASOURCE_MISSING_ERR) @@ -1080,31 +1084,6 @@ def save_or_overwrite_slice( return json_success(json.dumps(response)) - @api - @has_access_api - @event_logger.log_this - @expose("/schemas//") - @expose("/schemas///") - def schemas( # pylint: disable=no-self-use - self, db_id: int, force_refresh: str = "false" - ) -> FlaskResponse: - logger.warning( - "This API endpoint is deprecated and will be removed in version 2.0.0" - ) - db_id = int(db_id) - database = db.session.query(Database).get(db_id) - if database: - schemas = database.get_all_schema_names( - cache=database.schema_cache_enabled, - cache_timeout=database.schema_cache_timeout, - force=force_refresh.lower() == "true", - ) - schemas = security_manager.get_schemas_accessible_by_user(database, schemas) - else: - schemas = [] - - return Response(json.dumps({"schemas": schemas}), mimetype="application/json") - @api @has_access_api @event_logger.log_this @@ -1427,7 +1406,10 @@ def get_user_activity_access_error(user_id: int) -> Optional[FlaskResponse]: try: security_manager.raise_for_user_activity_access(user_id) except SupersetSecurityException as ex: - return json_error_response(ex.message, status=403,) + return json_error_response( + ex.message, + status=403, + ) return None @api @@ -1450,7 +1432,8 @@ def recent_activity( # pylint: disable=too-many-locals has_subject_title = or_( and_( - Dashboard.dashboard_title is not None, Dashboard.dashboard_title != "", + Dashboard.dashboard_title is not None, + Dashboard.dashboard_title != "", ), and_(Slice.slice_name is not None, Slice.slice_name != ""), ) @@ -1484,7 +1467,10 @@ def recent_activity( # pylint: disable=too-many-locals Slice.slice_name, ) .outerjoin(Dashboard, Dashboard.id == subqry.c.dashboard_id) - .outerjoin(Slice, Slice.id == subqry.c.slice_id,) + .outerjoin( + Slice, + Slice.id == subqry.c.slice_id, + ) .filter(has_subject_title) .order_by(subqry.c.dttm.desc()) .limit(limit) @@ -1536,18 +1522,6 @@ def recent_activity( # pylint: disable=too-many-locals ) return json_success(json.dumps(payload, default=utils.json_int_dttm_ser)) - @api - @has_access_api - @event_logger.log_this - @expose("/csrf_token/", methods=["GET"]) - def csrf_token(self) -> FlaskResponse: - logger.warning( - "This API endpoint is deprecated and will be removed in version 2.0.0" - ) - return Response( - self.render_template("superset/csrf_token.json"), mimetype="text/json" - ) - @api @has_access_api @event_logger.log_this @@ -1841,7 +1815,7 @@ def warm_up_cache( # pylint: disable=too-many-locals,no-self-use force=True, ) - g.form_data = form_data + g.form_data = form_data # pylint: disable=assigning-non-slot payload = obj.get_payload() delattr(g, "form_data") error = payload["errors"] or None @@ -1891,47 +1865,6 @@ def favstar( # pylint: disable=no-self-use session.commit() return json_success(json.dumps({"count": count})) - @api - @has_access_api - @event_logger.log_this - @expose("/dashboard//published/", methods=("GET", "POST")) - def publish( # pylint: disable=no-self-use - self, dashboard_id: int - ) -> FlaskResponse: - """Gets and toggles published status on dashboards""" - logger.warning( - "This API endpoint is deprecated and will be removed in version 2.0.0" - ) - session = db.session() - Role = ab_models.Role - dash = ( - session.query(Dashboard).filter(Dashboard.id == dashboard_id).one_or_none() - ) - admin_role = session.query(Role).filter(Role.name == "Admin").one_or_none() - - if request.method == "GET": - if dash: - return json_success(json.dumps({"published": dash.published})) - - return json_error_response( - f"ERROR: cannot find dashboard {dashboard_id}", status=404 - ) - - edit_perm = ( - is_owner(dash, g.user) or admin_role in security_manager.get_user_roles() - ) - if not edit_perm: - username = g.user.username if hasattr(g.user, "username") else "user" - return json_error_response( - f'ERROR: "{username}" cannot alter ' - f'dashboard "{dash.dashboard_title}"', - status=403, - ) - - dash.published = str(request.form["published"]).lower() == "true" - session.commit() - return json_success(json.dumps({"published": dash.published})) - @has_access @expose("/dashboard//") @event_logger.log_this_with_extra_payload @@ -2006,11 +1939,11 @@ def dashboard( @has_access @expose("/dashboard/p//", methods=["GET"]) def dashboard_permalink( # pylint: disable=no-self-use - self, key: str, + self, + key: str, ) -> FlaskResponse: - key_type = config["PERMALINK_KEY_TYPE"] try: - value = GetDashboardPermalinkCommand(g.user, key, key_type).run() + value = GetDashboardPermalinkCommand(g.user, key).run() except DashboardPermalinkGetFailedError as ex: flash(__("Error: %(msg)s", msg=ex.message), "danger") return redirect("/dashboard/list/") @@ -2200,63 +2133,6 @@ def extra_table_metadata( # pylint: disable=no-self-use ) return json_success(json.dumps(payload)) - @has_access - @expose("/select_star//") - @expose("/select_star///") - @event_logger.log_this - def select_star( - self, database_id: int, table_name: str, schema: Optional[str] = None - ) -> FlaskResponse: - logging.warning( - "%s.select_star " - "This API endpoint is deprecated and will be removed in version 2.0.0", - self.__class__.__name__, - ) - stats_logger.incr(f"{self.__class__.__name__}.select_star.init") - database = db.session.query(Database).get(database_id) - if not database: - stats_logger.incr( - f"deprecated.{self.__class__.__name__}.select_star.database_not_found" - ) - raise SupersetErrorException( - SupersetError( - message=__("The database was not found."), - error_type=SupersetErrorType.DATABASE_NOT_FOUND_ERROR, - level=ErrorLevel.ERROR, - ), - status=404, - ) - schema = utils.parse_js_uri_path_item(schema, eval_undefined=True) - table_name = utils.parse_js_uri_path_item(table_name) # type: ignore - if not self.appbuilder.sm.can_access_table(database, Table(table_name, schema)): - stats_logger.incr( - f"deprecated.{self.__class__.__name__}.select_star.permission_denied" - ) - logging.warning( - "Permission denied for user %s on table: %s schema: %s", - str(g.user), - table_name, - schema, - ) - raise SupersetErrorException( - SupersetError( - message=__( - "You are not authorized to fetch samples from this table. If " - "you think this is an error, please reach out to your " - "administrator." - ), - error_type=SupersetErrorType.QUERY_SECURITY_ACCESS_ERROR, - level=ErrorLevel.ERROR, - ), - status=403, - ) - stats_logger.incr(f"deprecated.{self.__class__.__name__}.select_star.success") - return json_success( - database.select_star( - table_name, schema, latest_partition=True, show_cols=True - ) - ) - @has_access_api @expose("/estimate_query_cost//", methods=["POST"]) @expose("/estimate_query_cost///", methods=["POST"]) @@ -2581,7 +2457,8 @@ def _set_http_status_into_Sql_lab_exception(ex: SqlLabException) -> None: ex.status = 403 def _create_response_from_execution_context( # pylint: disable=invalid-name, no-self-use - self, command_result: CommandResult, + self, + command_result: CommandResult, ) -> FlaskResponse: status_code = 200 @@ -2672,7 +2549,9 @@ def fetch_datasource_metadata(self) -> FlaskResponse: # pylint: disable=no-self datasource_id, datasource_type = request.args["datasourceKey"].split("__") datasource = ConnectorRegistry.get_datasource( - datasource_type, datasource_id, db.session, + datasource_type, + datasource_id, + db.session, ) # Check if datasource exists if not datasource: diff --git a/superset/views/dashboard/views.py b/superset/views/dashboard/views.py index 471d168e1ec64..49bdf76edcb0b 100644 --- a/superset/views/dashboard/views.py +++ b/superset/views/dashboard/views.py @@ -155,7 +155,8 @@ def embedded( login_manager.reload_user(AnonymousUserMixin()) add_extra_log_payload( - dashboard_id=dashboard_id_or_slug, dashboard_version="v2", + dashboard_id=dashboard_id_or_slug, + dashboard_version="v2", ) bootstrap_data = { diff --git a/superset/views/database/views.py b/superset/views/database/views.py index 659a1be78d8e3..bb2e018994e44 100644 --- a/superset/views/database/views.py +++ b/superset/views/database/views.py @@ -275,11 +275,13 @@ def form_post(self, form: ExcelToDatabaseForm) -> Response: flash(message, "danger") return redirect("/exceltodatabaseview/form") - uploaded_tmp_file_path = tempfile.NamedTemporaryFile( # pylint: disable=consider-using-with - dir=app.config["UPLOAD_FOLDER"], - suffix=os.path.splitext(form.excel_file.data.filename)[1].lower(), - delete=False, - ).name + uploaded_tmp_file_path = ( + tempfile.NamedTemporaryFile( # pylint: disable=consider-using-with + dir=app.config["UPLOAD_FOLDER"], + suffix=os.path.splitext(form.excel_file.data.filename)[1].lower(), + delete=False, + ).name + ) try: utils.ensure_path_exists(config["UPLOAD_FOLDER"]) diff --git a/superset/views/datasource/schemas.py b/superset/views/datasource/schemas.py index 162f35b4730b1..64b2b854bb148 100644 --- a/superset/views/datasource/schemas.py +++ b/superset/views/datasource/schemas.py @@ -44,7 +44,9 @@ class ExternalMetadataSchema(Schema): # pylint: disable=no-self-use,unused-argument @post_load def normalize( - self, data: ExternalMetadataParams, **kwargs: Any, + self, + data: ExternalMetadataParams, + **kwargs: Any, ) -> ExternalMetadataParams: return ExternalMetadataParams( datasource_type=data["datasource_type"], diff --git a/superset/views/datasource/views.py b/superset/views/datasource/views.py index 7e1ffa0468e90..2504f458eabc2 100644 --- a/superset/views/datasource/views.py +++ b/superset/views/datasource/views.py @@ -161,8 +161,8 @@ def external_metadata( def external_metadata_by_name(self, **kwargs: Any) -> FlaskResponse: """Gets table metadata from the source system and SQLAlchemy inspector""" try: - params: ExternalMetadataParams = ( - ExternalMetadataSchema().load(kwargs.get("rison")) + params: ExternalMetadataParams = ExternalMetadataSchema().load( + kwargs.get("rison") ) except ValidationError as err: return json_error_response(str(err), status=400) diff --git a/superset/views/schedules.py b/superset/views/schedules.py deleted file mode 100644 index 39d4af9b8b259..0000000000000 --- a/superset/views/schedules.py +++ /dev/null @@ -1,349 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -""" -DEPRECATION NOTICE: this module is deprecated and will be removed on 2.0. -""" - -import enum -from typing import Type, Union - -import simplejson as json -from croniter import croniter -from flask import current_app as app, flash, g, Markup -from flask_appbuilder import expose -from flask_appbuilder.hooks import before_request -from flask_appbuilder.models.sqla.interface import SQLAInterface -from flask_appbuilder.security.decorators import has_access -from flask_babel import lazy_gettext as _ -from werkzeug.exceptions import NotFound -from wtforms import BooleanField, Form, StringField - -from superset import db, security_manager -from superset.constants import RouteMethod -from superset.exceptions import SupersetException -from superset.models.dashboard import Dashboard -from superset.models.schedules import ( - DashboardEmailSchedule, - ScheduleType, - SliceEmailSchedule, -) -from superset.models.slice import Slice -from superset.superset_typing import FlaskResponse -from superset.tasks.schedules import schedule_email_report -from superset.utils.core import get_email_address_list, json_iso_dttm_ser -from superset.views.core import json_success - -from .base import DeleteMixin, SupersetModelView - - -class EmailScheduleView(SupersetModelView, DeleteMixin): - include_route_methods = RouteMethod.CRUD_SET - _extra_data = {"test_email": False, "test_email_recipients": None} - - @staticmethod - def is_enabled() -> bool: - return app.config["ENABLE_SCHEDULED_EMAIL_REPORTS"] - - @before_request - def ensure_enabled(self) -> None: - if not self.is_enabled(): - raise NotFound() - - @property - def schedule_type(self) -> str: - raise NotImplementedError() - - @property - def schedule_type_model(self) -> Type[Union[Dashboard, Slice]]: - raise NotImplementedError() - - page_size = 20 - - add_exclude_columns = [ - "user", - "created_on", - "changed_on", - "created_by", - "changed_by", - ] - - edit_exclude_columns = add_exclude_columns - - description_columns = { - "deliver_as_group": "If enabled, send a single email to all " - "recipients (in email/To: field)", - "crontab": "Unix style crontab schedule to deliver emails. " - "Changes to schedules reflect in one hour.", - "delivery_type": "Indicates how the rendered content is delivered", - } - - add_form_extra_fields = { - "test_email": BooleanField( - "Send Test Email", - default=False, - description="If enabled, we send a test mail on create / update", - ), - "test_email_recipients": StringField( - "Test Email Recipients", - default=None, - description="List of recipients to send test email to. " - "If empty, we send it to the original recipients", - ), - "test_slack_channel": StringField( - "Test Slack Channel", - default=None, - description="A slack channel to send a test message to.", - ), - } - - edit_form_extra_fields = add_form_extra_fields - - def process_form(self, form: Form, is_created: bool) -> None: - if form.test_email_recipients.data: - test_email_recipients = form.test_email_recipients.data.strip() - else: - test_email_recipients = None - - test_slack_channel = ( - form.test_slack_channel.data.strip() - if form.test_slack_channel.data - else None - ) - - self._extra_data["test_email"] = form.test_email.data - self._extra_data["test_email_recipients"] = test_email_recipients - self._extra_data["test_slack_channel"] = test_slack_channel - - def pre_add(self, item: "EmailScheduleView") -> None: - try: - recipients = get_email_address_list(item.recipients) - item.recipients = ", ".join(recipients) - except Exception as ex: - raise SupersetException("Invalid email list") from ex - - item.user = item.user or g.user - if not croniter.is_valid(item.crontab): - raise SupersetException("Invalid crontab format") - - def pre_update(self, item: "EmailScheduleView") -> None: - self.pre_add(item) - - def post_add(self, item: "EmailScheduleView") -> None: - # Schedule a test mail if the user requested for it. - if self._extra_data["test_email"]: - recipients = self._extra_data["test_email_recipients"] or item.recipients - slack_channel = self._extra_data["test_slack_channel"] or item.slack_channel - args = (self.schedule_type, item.id) - kwargs = dict(recipients=recipients, slack_channel=slack_channel) - schedule_email_report.apply_async(args=args, kwargs=kwargs) - - # Notify the user that schedule changes will be activate only in the - # next hour - if item.active: - flash("Schedule changes will get applied in one hour", "warning") - - def post_update(self, item: "EmailScheduleView") -> None: - self.post_add(item) - - @has_access - @expose("/fetch//", methods=["GET"]) - def fetch_schedules(self, item_id: int) -> FlaskResponse: - - query = db.session.query(self.datamodel.obj) - query = query.join(self.schedule_type_model).filter( - self.schedule_type_model.id == item_id - ) - - schedules = [] - for schedule in query.all(): - info = {"schedule": schedule.id} - - for col in self.list_columns + self.add_exclude_columns: - info[col] = getattr(schedule, col) - - if isinstance(info[col], enum.Enum): - info[col] = info[col].name - elif isinstance(info[col], security_manager.user_model): - info[col] = info[col].username - - info["user"] = schedule.user.username - info[self.schedule_type] = getattr(schedule, self.schedule_type).id - schedules.append(info) - - return json_success(json.dumps(schedules, default=json_iso_dttm_ser)) - - -class DashboardEmailScheduleView( - EmailScheduleView -): # pylint: disable=too-many-ancestors - schedule_type = ScheduleType.dashboard - schedule_type_model = Dashboard - - add_title = _("Schedule Email Reports for Dashboards") - edit_title = add_title - list_title = _("Manage Email Reports for Dashboards") - - datamodel = SQLAInterface(DashboardEmailSchedule) - order_columns = ["user", "dashboard", "created_on"] - - list_columns = [ - "dashboard", - "active", - "crontab", - "user", - "deliver_as_group", - "delivery_type", - ] - - add_columns = [ - "dashboard", - "active", - "crontab", - "recipients", - "slack_channel", - "deliver_as_group", - "delivery_type", - "test_email", - "test_email_recipients", - "test_slack_channel", - ] - - edit_columns = add_columns - - search_columns = [ - "dashboard", - "active", - "user", - "deliver_as_group", - "delivery_type", - ] - - label_columns = { - "dashboard": _("Dashboard"), - "created_on": _("Created On"), - "changed_on": _("Changed On"), - "user": _("User"), - "active": _("Active"), - "crontab": _("Crontab"), - "recipients": _("Recipients"), - "slack_channel": _("Slack Channel"), - "deliver_as_group": _("Deliver As Group"), - "delivery_type": _("Delivery Type"), - } - - @expose("/list/") - @has_access - def list(self) -> FlaskResponse: - flash( - Markup( - _( - "This feature is deprecated and will be removed on 2.0. " - "Take a look at the replacement feature " - "" - "Alerts & Reports documentation" - ) - ), - "warning", - ) - return super().list() - - def pre_add(self, item: "DashboardEmailScheduleView") -> None: - if item.dashboard is None: - raise SupersetException("Dashboard is mandatory") - super().pre_add(item) - - -class SliceEmailScheduleView(EmailScheduleView): # pylint: disable=too-many-ancestors - schedule_type = ScheduleType.slice - schedule_type_model = Slice - add_title = _("Schedule Email Reports for Charts") - edit_title = add_title - list_title = _("Manage Email Reports for Charts") - - datamodel = SQLAInterface(SliceEmailSchedule) - order_columns = ["user", "slice", "created_on"] - list_columns = [ - "slice", - "active", - "crontab", - "user", - "deliver_as_group", - "delivery_type", - "email_format", - ] - - add_columns = [ - "slice", - "active", - "crontab", - "recipients", - "slack_channel", - "deliver_as_group", - "delivery_type", - "email_format", - "test_email", - "test_email_recipients", - "test_slack_channel", - ] - - edit_columns = add_columns - - search_columns = [ - "slice", - "active", - "user", - "deliver_as_group", - "delivery_type", - "email_format", - ] - - label_columns = { - "slice": _("Chart"), - "created_on": _("Created On"), - "changed_on": _("Changed On"), - "user": _("User"), - "active": _("Active"), - "crontab": _("Crontab"), - "recipients": _("Recipients"), - "slack_channel": _("Slack Channel"), - "deliver_as_group": _("Deliver As Group"), - "delivery_type": _("Delivery Type"), - "email_format": _("Email Format"), - } - - @expose("/list/") - @has_access - def list(self) -> FlaskResponse: - flash( - Markup( - _( - "This feature is deprecated and will be removed on 2.0. " - "Take a look at the replacement feature " - "" - "Alerts & Reports documentation" - ) - ), - "warning", - ) - return super().list() - - def pre_add(self, item: "SliceEmailScheduleView") -> None: - if item.slice is None: - raise SupersetException("Slice is mandatory") - super().pre_add(item) diff --git a/superset/views/users/api.py b/superset/views/users/api.py index 524a382b0679d..584e8145ec391 100644 --- a/superset/views/users/api.py +++ b/superset/views/users/api.py @@ -16,6 +16,7 @@ # under the License. from flask import g, Response from flask_appbuilder.api import BaseApi, expose, safe +from flask_jwt_extended.exceptions import NoAuthorizationError from .schemas import UserResponseSchema @@ -23,7 +24,7 @@ class CurrentUserRestApi(BaseApi): - """ An api to get information about the current user """ + """An api to get information about the current user""" resource_name = "me" openapi_spec_tag = "Current User" @@ -51,6 +52,10 @@ def get_me(self) -> Response: 401: $ref: '#/components/responses/401' """ - if g.user is None or g.user.is_anonymous: + try: + if g.user is None or g.user.is_anonymous: + return self.response_401() + except NoAuthorizationError: return self.response_401() + return self.response(200, result=user_response_schema.dump(g.user)) diff --git a/superset/views/utils.py b/superset/views/utils.py index 19c9a2eaf05af..202f87d996976 100644 --- a/superset/views/utils.py +++ b/superset/views/utils.py @@ -418,7 +418,9 @@ def is_owner(obj: Union[Dashboard, Slice], user: User) -> bool: return obj and user in obj.owners -def check_resource_permissions(check_perms: Callable[..., Any],) -> Callable[..., Any]: +def check_resource_permissions( + check_perms: Callable[..., Any], +) -> Callable[..., Any]: """ A decorator for checking permissions on a request using the passed-in function. """ diff --git a/superset/viz.py b/superset/viz.py index 7544af5078059..e83e0127775cb 100644 --- a/superset/viz.py +++ b/superset/viz.py @@ -1086,7 +1086,7 @@ def get_data(self, df: pd.DataFrame) -> VizData: # pylint: disable=too-many-loc v = query_obj[DTTM_ALIAS] if hasattr(v, "value"): v = v.value - values[str(v / 10 ** 9)] = query_obj.get(metric) + values[str(v / 10**9)] = query_obj.get(metric) data[metric] = values try: @@ -1945,7 +1945,12 @@ def get_data(self, df: pd.DataFrame) -> VizData: source, target = get_column_names(self.groupby) (value,) = self.metric_labels df.rename( - columns={source: "source", target: "target", value: "value",}, inplace=True, + columns={ + source: "source", + target: "target", + value: "value", + }, + inplace=True, ) df["source"] = df["source"].astype(str) df["target"] = df["target"].astype(str) diff --git a/tests/common/query_context_generator.py b/tests/common/query_context_generator.py index d97b270002f5c..8fddeb92ffda9 100644 --- a/tests/common/query_context_generator.py +++ b/tests/common/query_context_generator.py @@ -45,7 +45,9 @@ QUERY_OBJECTS: Dict[str, Dict[str, object]] = { "birth_names": query_birth_names, # `:suffix` are overrides only - "birth_names:include_time": {"groupby": [DTTM_ALIAS, "name"],}, + "birth_names:include_time": { + "groupby": [DTTM_ALIAS, "name"], + }, "birth_names:orderby_dup_alias": { "metrics": [ { @@ -93,7 +95,9 @@ ], ], }, - "birth_names:only_orderby_has_metric": {"metrics": [],}, + "birth_names:only_orderby_has_metric": { + "metrics": [], + }, } ANNOTATION_LAYERS = { @@ -182,17 +186,27 @@ # https://numpy.org/doc/stable/reference/generated/numpy.percentile.html "options": {"q": 25, "interpolation": "lower"}, }, - "median": {"operator": "median", "column": "sum__num",}, + "median": { + "operator": "median", + "column": "sum__num", + }, }, }, }, - {"operation": "sort", "options": {"columns": {"q1": False, "name": True},},}, + { + "operation": "sort", + "options": { + "columns": {"q1": False, "name": True}, + }, + }, ] } def get_query_object( - query_name: str, add_postprocessing_operations: bool, add_time_offsets: bool, + query_name: str, + add_postprocessing_operations: bool, + add_time_offsets: bool, ) -> Dict[str, Any]: if query_name not in QUERY_OBJECTS: raise Exception(f"QueryObject fixture not defined for datasource: {query_name}") @@ -247,7 +261,9 @@ def generate( "datasource": {"id": table.id, "type": table.type}, "queries": [ get_query_object( - query_name, add_postprocessing_operations, add_time_offsets, + query_name, + add_postprocessing_operations, + add_time_offsets, ) ], "result_type": ChartDataResultType.FULL, diff --git a/tests/conftest.py b/tests/conftest.py index 6350d3235c5b6..92f9b10d955ad 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -71,7 +71,9 @@ def example_db_engine(example_db_provider: Callable[[], Database]) -> Engine: @fixture(scope="session") -def pandas_loader_configuration(support_datetime_type,) -> PandasLoaderConfigurations: +def pandas_loader_configuration( + support_datetime_type, +) -> PandasLoaderConfigurations: return PandasLoaderConfigurations.make_from_dict( {SUPPORT_DATETIME_TYPE: support_datetime_type} ) diff --git a/tests/fixtures/birth_names.py b/tests/fixtures/birth_names.py index bcf2a5aa91b8a..5a0135b456f25 100644 --- a/tests/fixtures/birth_names.py +++ b/tests/fixtures/birth_names.py @@ -41,7 +41,8 @@ def birth_names_data_generator() -> BirthNamesGenerator: @fixture(scope="session") def birth_names_table_factory( - birth_names_data_generator: BirthNamesGenerator, support_datetime_type: bool, + birth_names_data_generator: BirthNamesGenerator, + support_datetime_type: bool, ) -> Callable[[], Table]: def _birth_names_table_factory() -> Table: return BirthNamesMetaDataFactory(support_datetime_type).make_table( diff --git a/tests/integration_tests/alerts_tests.py b/tests/integration_tests/alerts_tests.py deleted file mode 100644 index 50558741d85a0..0000000000000 --- a/tests/integration_tests/alerts_tests.py +++ /dev/null @@ -1,414 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -"""Unit tests for alerting in Superset""" -import json -import logging -from unittest.mock import patch - -import pytest -from sqlalchemy.orm import Session - -import superset.utils.database -from superset import db -from superset.exceptions import SupersetException -from superset.models.alerts import Alert, AlertLog, SQLObservation -from superset.models.slice import Slice -from superset.tasks.alerts.observer import observe -from superset.tasks.alerts.validator import ( - AlertValidatorType, - check_validator, - not_null_validator, - operator_validator, -) -from superset.tasks.schedules import ( - AlertState, - deliver_alert, - evaluate_alert, - validate_observations, -) -from superset.utils import core as utils -from superset.views.alerts import ( - AlertLogModelView, - AlertModelView, - AlertObservationModelView, -) -from tests.integration_tests.base_tests import SupersetTestCase -from tests.integration_tests.test_app import app -from tests.integration_tests.utils import read_fixture - -logging.basicConfig(level=logging.INFO) -logger = logging.getLogger(__name__) - - -@pytest.yield_fixture(scope="module") -def setup_database(): - with app.app_context(): - example_database = superset.utils.database.get_example_database() - example_database.get_sqla_engine().execute( - "CREATE TABLE test_table AS SELECT 1 as first, 2 as second" - ) - example_database.get_sqla_engine().execute( - "INSERT INTO test_table (first, second) VALUES (3, 4)" - ) - - yield db.session - - db.session.query(SQLObservation).delete() - db.session.query(AlertLog).delete() - db.session.query(Alert).delete() - db.session.commit() - example_database.get_sqla_engine().execute("DROP TABLE test_table") - - -def create_alert( - db_session: Session, - sql: str, - validator_type: AlertValidatorType = AlertValidatorType.OPERATOR, - validator_config: str = "", -) -> Alert: - db_session.commit() - alert = Alert( - label="test_alert", - active=True, - crontab="* * * * *", - slice_id=db_session.query(Slice).all()[0].id, - recipients="recipient1@superset.com", - slack_channel="#test_channel", - sql=sql, - database_id=superset.utils.database.get_example_database().id, - validator_type=validator_type, - validator_config=validator_config, - ) - db_session.add(alert) - db_session.commit() - return alert - - -@pytest.mark.parametrize( - "description, query, value", - [ - ("Test int SQL return", "SELECT 55", 55.0), - ("Test double SQL return", "SELECT 30.0 as wage", 30.0), - ("Test NULL result", "SELECT null as null_result", None), - ( - "Test empty SQL return", - "SELECT first FROM test_table WHERE first = -1", - None, - ), - ( - "Test multi line query", - """ - -- comment - SELECT - 1 -- comment - FROM test_table - WHERE first = 1 - """, - 1.0, - ), - ("Test jinja", "SELECT {{ 2 }}", 2.0), - ], -) -def test_alert_observer_no_error_msg(setup_database, description, query, value): - logger.info(description) - db_session = setup_database - alert = create_alert(db_session, query) - observe(alert.id, db_session) - if value is None: - assert alert.observations[-1].value is None - else: - assert alert.observations[-1].value == value - assert alert.observations[-1].error_msg is None - - -@pytest.mark.parametrize( - "description, query", - [ - ("Test str result", "SELECT 'test_string' as string_value"), - ("Test two row result", "SELECT first FROM test_table"), - ( - "Test two column result", - "SELECT first, second FROM test_table WHERE first = 1", - ), - ], -) -def test_alert_observer_error_msg(setup_database, description, query): - logger.info(description) - db_session = setup_database - alert = create_alert(db_session, query) - observe(alert.id, db_session) - assert alert.observations[-1].value is None - assert alert.observations[-1].error_msg is not None - - -@patch("superset.tasks.schedules.deliver_alert") -def test_evaluate_alert(mock_deliver_alert, setup_database): - db_session = setup_database - - # Test error with Observer SQL statement - alert1 = create_alert(db_session, "$%^&") - evaluate_alert(alert1.id, alert1.label, db_session) - assert alert1.logs[-1].state == AlertState.ERROR - - # Test pass on alert lacking validator config - alert2 = create_alert(db_session, "SELECT 55") - # evaluation fails if config is malformed - with pytest.raises(json.decoder.JSONDecodeError): - evaluate_alert(alert2.id, alert2.label, db_session) - assert not alert2.logs - - # Test triggering successful alert - alert3 = create_alert(db_session, "SELECT 55", "not null", "{}") - evaluate_alert(alert3.id, alert3.label, db_session) - assert mock_deliver_alert.call_count == 1 - assert alert3.logs[-1].state == AlertState.TRIGGER - - -@pytest.mark.parametrize( - "description, validator_type, config", - [ - ("Test with invalid operator type", "greater than", "{}"), - ("Test with empty config", "operator", "{}"), - ("Test with invalid operator", "operator", '{"op": "is", "threshold":50.0}'), - ( - "Test with invalid threshold", - "operator", - '{"op": "is", "threshold":"hello"}', - ), - ], -) -def test_check_validator_error(description, validator_type, config): - logger.info(description) - with pytest.raises(SupersetException): - check_validator(validator_type, config) - - -@pytest.mark.parametrize( - "description, validator_type, config", - [ - ( - "Test with float threshold and no errors", - "operator", - '{"op": ">=", "threshold": 50.0}', - ), - ( - "Test with int threshold and no errors", - "operator", - '{"op": ">=", "threshold": 50}', - ), - ], -) -def test_check_validator_no_error(description, validator_type, config): - logger.info(description) - assert check_validator(validator_type, config) is None - - -@pytest.mark.parametrize( - "description, query, value", - [ - ("Test passing with 'null' SQL result", "SELECT 0", False), - ( - "Test passing with empty SQL result", - "SELECT first FROM test_table WHERE first = -1", - False, - ), - ("Test triggering alert with non-null SQL result", "SELECT 55", True), - ], -) -def test_not_null_validator(setup_database, description, query, value): - logger.info(description) - db_session = setup_database - alert = create_alert(db_session, query) - observe(alert.id, db_session) - assert not_null_validator(alert, "{}") is value - - -def test_operator_validator(setup_database): - dbsession = setup_database - - # Test passing with empty SQL result - alert1 = create_alert(dbsession, "SELECT first FROM test_table WHERE first = -1") - observe(alert1.id, dbsession) - assert operator_validator(alert1, '{"op": ">=", "threshold": 60}') is False - # ensure that 0 threshold works - assert operator_validator(alert1, '{"op": ">=", "threshold": 0}') is False - - # Test passing with result that doesn't pass a greater than threshold - alert2 = create_alert(dbsession, "SELECT 55") - observe(alert2.id, dbsession) - assert operator_validator(alert2, '{"op": ">=", "threshold": 60}') is False - - # Test passing with result that passes a greater than threshold - assert operator_validator(alert2, '{"op": ">=", "threshold": 40}') is True - - # Test passing with result that doesn't pass a less than threshold - assert operator_validator(alert2, '{"op": "<=", "threshold": 40}') is False - - # Test passing with result that passes threshold - assert operator_validator(alert2, '{"op": "<=", "threshold": 60}') is True - - # Test passing with result that doesn't equal threshold - assert operator_validator(alert2, '{"op": "==", "threshold": 60}') is False - - # Test passing with result that equals threshold - assert operator_validator(alert2, '{"op": "==", "threshold": 55}') is True - - # Test passing with result that equals decimal threshold - assert operator_validator(alert2, '{"op": ">", "threshold": 54.999}') is True - - -@pytest.mark.parametrize( - "description, query, validator_type, config", - [ - ("Test False on alert with no validator", "SELECT 55", "operator", ""), - ("Test False on alert with no observations", "SELECT 0", "not null", "{}"), - ], -) -def test_validate_observations_no_observe( - setup_database, description, query, validator_type, config -): - db_session = setup_database - logger.info(description) - - alert = create_alert(db_session, query, validator_type, config) - assert validate_observations(alert.id, alert.label, db_session) is False - - -@pytest.mark.parametrize( - "description, query, validator_type, config, expected", - [ - ( - "Test False on alert that should not be triggered", - "SELECT 0", - "not null", - "{}", - False, - ), - ( - "Test True on alert that should be triggered", - "SELECT 55", - "operator", - '{"op": "<=", "threshold": 60}', - True, - ), - ], -) -def test_validate_observations_with_observe( - setup_database, description, query, validator_type, config, expected -): - db_session = setup_database - logger.info(description) - - alert = create_alert(db_session, query, validator_type, config) - observe(alert.id, db_session) - assert validate_observations(alert.id, alert.label, db_session) is expected - - -def test_validate_observations(setup_database): - db_session = setup_database - - # Test False on alert that shouldnt be triggered - alert3 = create_alert(db_session, "SELECT 0", "not null", "{}") - observe(alert3.id, db_session) - assert validate_observations(alert3.id, alert3.label, db_session) is False - - # Test True on alert that should be triggered - alert4 = create_alert( - db_session, "SELECT 55", "operator", '{"op": "<=", "threshold": 60}' - ) - observe(alert4.id, db_session) - assert validate_observations(alert4.id, alert4.label, db_session) is True - - -@patch("superset.tasks.slack_util.WebClient.files_upload") -@patch("superset.tasks.schedules.send_email_smtp") -@patch("superset.tasks.schedules._get_url_path") -@patch("superset.utils.screenshots.ChartScreenshot.compute_and_cache") -def test_deliver_alert_screenshot( - screenshot_mock, url_mock, email_mock, file_upload_mock, setup_database -): - dbsession = setup_database - alert = create_alert(dbsession, "SELECT 55", "not null", "{}") - observe(alert.id, dbsession) - - screenshot = read_fixture("sample.png") - screenshot_mock.return_value = screenshot - - # TODO: fix AlertModelView.show url call from test - url_mock.side_effect = [ - f"http://0.0.0.0:8080/alerts/show/{alert.id}", - f"http://0.0.0.0:8080/superset/slice/{alert.slice_id}/", - ] - - deliver_alert(alert.id, dbsession) - assert email_mock.call_args[1]["images"]["screenshot"] == screenshot - assert file_upload_mock.call_args[1] == { - "channels": alert.slack_channel, - "file": screenshot, - "initial_comment": f"\n*Triggered Alert: {alert.label} :redalert:*\n" - f"*Query*:```{alert.sql}```\n" - f"*Result*: {alert.observations[-1].value}\n" - f"*Reason*: {alert.observations[-1].value} {alert.pretty_config}\n" - f"\n", - "title": f"[Alert] {alert.label}", - } - - -class TestAlertsEndpoints(SupersetTestCase): - def test_log_model_view_disabled(self): - with patch.object(AlertLogModelView, "is_enabled", return_value=False): - self.login("admin") - uri = "/alertlogmodelview/list/" - rv = self.client.get(uri) - self.assertEqual(rv.status_code, 404) - - def test_log_model_view_enabled(self): - with patch.object(AlertLogModelView, "is_enabled", return_value=True): - self.login("admin") - uri = "/alertlogmodelview/list/" - rv = self.client.get(uri) - self.assertLess(rv.status_code, 400) - - def test_model_view_disabled(self): - with patch.object(AlertModelView, "is_enabled", return_value=False): - self.login("admin") - uri = "/alerts/list/" - rv = self.client.get(uri) - self.assertEqual(rv.status_code, 404) - - def test_model_view_enabled(self): - with patch.object(AlertModelView, "is_enabled", return_value=True): - self.login("admin") - uri = "/alerts/list/" - rv = self.client.get(uri) - self.assertNotEqual(rv.status_code, 404) - - def test_observation_view_disabled(self): - with patch.object(AlertObservationModelView, "is_enabled", return_value=False): - self.login("admin") - uri = "/alertobservationmodelview/list/" - rv = self.client.get(uri) - self.assertEqual(rv.status_code, 404) - - def test_observation_view_enabled(self): - with patch.object(AlertObservationModelView, "is_enabled", return_value=True): - self.login("admin") - uri = "/alertobservationmodelview/list/" - rv = self.client.get(uri) - self.assertLess(rv.status_code, 400) diff --git a/tests/integration_tests/annotation_layers/fixtures.py b/tests/integration_tests/annotation_layers/fixtures.py index 0b9e19e21fb70..52cb8ca2abf41 100644 --- a/tests/integration_tests/annotation_layers/fixtures.py +++ b/tests/integration_tests/annotation_layers/fixtures.py @@ -39,7 +39,10 @@ def get_end_dttm(annotation_id: int) -> datetime: def _insert_annotation_layer(name: str = "", descr: str = "") -> AnnotationLayer: - annotation_layer = AnnotationLayer(name=name, descr=descr,) + annotation_layer = AnnotationLayer( + name=name, + descr=descr, + ) db.session.add(annotation_layer) db.session.commit() return annotation_layer diff --git a/tests/integration_tests/celery_tests.py b/tests/integration_tests/celery_tests.py index f68ad85cb5c21..802684ba3bd07 100644 --- a/tests/integration_tests/celery_tests.py +++ b/tests/integration_tests/celery_tests.py @@ -256,7 +256,11 @@ def test_run_async_query_cta_config(setup_sqllab, ctas_method): return tmp_table_name = f"{TEST_ASYNC_CTA_CONFIG}_{ctas_method.lower()}" result = run_sql( - QUERY, cta=True, ctas_method=ctas_method, async_=True, tmp_table=tmp_table_name, + QUERY, + cta=True, + ctas_method=ctas_method, + async_=True, + tmp_table=tmp_table_name, ) query = wait_for_success(result) diff --git a/tests/integration_tests/charts/api_tests.py b/tests/integration_tests/charts/api_tests.py index 65ed10fe1376f..3c92caceead73 100644 --- a/tests/integration_tests/charts/api_tests.py +++ b/tests/integration_tests/charts/api_tests.py @@ -749,6 +749,7 @@ def test_get_chart(self): "slice_name": "title", "viz_type": None, "query_context": None, + "is_managed_externally": False, } data = json.loads(rv.data.decode("utf-8")) self.assertEqual(data["result"], expected_result) @@ -916,7 +917,11 @@ def test_admin_gets_filtered_energy_slices(self): # test filtering on datasource_name arguments = { "filters": [ - {"col": "slice_name", "opr": "chart_all_text", "value": "energy",} + { + "col": "slice_name", + "opr": "chart_all_text", + "value": "energy", + } ], "keys": ["none"], "columns": ["slice_name"], @@ -932,7 +937,13 @@ def test_admin_gets_filtered_energy_slices(self): @pytest.mark.usefixtures("create_certified_charts") def test_gets_certified_charts_filter(self): arguments = { - "filters": [{"col": "id", "opr": "chart_is_certified", "value": True,}], + "filters": [ + { + "col": "id", + "opr": "chart_is_certified", + "value": True, + } + ], "keys": ["none"], "columns": ["slice_name"], } @@ -947,7 +958,13 @@ def test_gets_certified_charts_filter(self): @pytest.mark.usefixtures("create_charts") def test_gets_not_certified_charts_filter(self): arguments = { - "filters": [{"col": "id", "opr": "chart_is_certified", "value": False,}], + "filters": [ + { + "col": "id", + "opr": "chart_is_certified", + "value": False, + } + ], "keys": ["none"], "columns": ["slice_name"], } @@ -964,7 +981,11 @@ def test_user_gets_none_filtered_energy_slices(self): # test filtering on datasource_name arguments = { "filters": [ - {"col": "slice_name", "opr": "chart_all_text", "value": "energy",} + { + "col": "slice_name", + "opr": "chart_all_text", + "value": "energy", + } ], "keys": ["none"], "columns": ["slice_name"], diff --git a/tests/integration_tests/charts/data/api_tests.py b/tests/integration_tests/charts/data/api_tests.py index c45c8d5064eaa..73425fb58f68c 100644 --- a/tests/integration_tests/charts/data/api_tests.py +++ b/tests/integration_tests/charts/data/api_tests.py @@ -129,7 +129,8 @@ def assert_row_count(rv: Response, expected_row_count: int): @pytest.mark.usefixtures("load_birth_names_dashboard_with_slices") @mock.patch( - "superset.common.query_context_factory.config", {**app.config, "ROW_LIMIT": 7}, + "superset.common.query_context_factory.config", + {**app.config, "ROW_LIMIT": 7}, ) def test_without_row_limit__row_count_as_default_row_limit(self): # arrange @@ -161,7 +162,8 @@ def test_as_samples_without_row_limit__row_count_as_default_samples_row_limit(se @pytest.mark.usefixtures("load_birth_names_dashboard_with_slices") @mock.patch( - "superset.utils.core.current_app.config", {**app.config, "SQL_MAX_ROW": 10}, + "superset.utils.core.current_app.config", + {**app.config, "SQL_MAX_ROW": 10}, ) def test_with_row_limit_bigger_then_sql_max_row__rowcount_as_sql_max_row(self): # arrange @@ -176,7 +178,8 @@ def test_with_row_limit_bigger_then_sql_max_row__rowcount_as_sql_max_row(self): @pytest.mark.usefixtures("load_birth_names_dashboard_with_slices") @mock.patch( - "superset.utils.core.current_app.config", {**app.config, "SQL_MAX_ROW": 5}, + "superset.utils.core.current_app.config", + {**app.config, "SQL_MAX_ROW": 5}, ) def test_as_samples_with_row_limit_bigger_then_sql_max_row__rowcount_as_sql_max_row( self, @@ -334,7 +337,9 @@ def test_chart_data_applied_time_extras(self): ) self.assertEqual( data["result"][0]["rejected_filters"], - [{"column": "__time_origin", "reason": "not_druid_datasource"},], + [ + {"column": "__time_origin", "reason": "not_druid_datasource"}, + ], ) expected_row_count = self.get_expected_row_count("client_id_2") self.assertEqual(data["result"][0]["rowcount"], expected_row_count) @@ -384,7 +389,8 @@ def test_chart_data_dttm_filter(self): dttm_col = col if dttm_col: dttm_expression = table.database.db_engine_spec.convert_dttm( - dttm_col.type, dttm, + dttm_col.type, + dttm, ) self.assertIn(dttm_expression, result["query"]) else: @@ -479,7 +485,10 @@ def test_with_orderby_parameter_with_second_query__400(self): self.query_context_payload["queries"][0]["filters"] = [] self.query_context_payload["queries"][0]["orderby"] = [ [ - {"expressionType": "SQL", "sqlExpression": "sum__num; select 1, 1",}, + { + "expressionType": "SQL", + "sqlExpression": "sum__num; select 1, 1", + }, True, ], ] @@ -736,7 +745,11 @@ def test_with_virtual_table_with_colons_as_datasource(self): } ] request_payload["queries"][0]["filters"] = [ - {"col": "foo", "op": "!=", "val": ":qwerty:",} + { + "col": "foo", + "op": "!=", + "val": ":qwerty:", + } ] rv = self.post_assert_metric(CHART_DATA_URI, request_payload, "data") @@ -783,7 +796,11 @@ def test_chart_data_get(self): "time_range": "1900-01-01T00:00:00 : 2000-01-01T00:00:00", "granularity": "ds", "filters": [], - "extras": {"having": "", "having_druid": [], "where": "",}, + "extras": { + "having": "", + "having_druid": [], + "where": "", + }, "applied_time_extras": {}, "columns": ["gender"], "metrics": ["sum__num"], @@ -868,7 +885,9 @@ def mock_run(self, **kwargs): return orig_run(self, force_cached=False) with mock.patch.object(ChartDataCommand, "run", new=mock_run): - rv = self.client.get(f"{CHART_DATA_URI}/test-cache-key",) + rv = self.client.get( + f"{CHART_DATA_URI}/test-cache-key", + ) self.assertEqual(rv.status_code, 401) diff --git a/tests/integration_tests/cli_tests.py b/tests/integration_tests/cli_tests.py index 7426d90ea88af..f69efc6253943 100644 --- a/tests/integration_tests/cli_tests.py +++ b/tests/integration_tests/cli_tests.py @@ -373,7 +373,9 @@ def test_import_datasets_sync_argument_columns_metrics( assert response.exit_code == 0 expected_contents = {"dataset.yaml": "hello: world"} import_datasets_command.assert_called_with( - expected_contents, sync_columns=True, sync_metrics=True, + expected_contents, + sync_columns=True, + sync_metrics=True, ) @@ -408,7 +410,9 @@ def test_import_datasets_sync_argument_columns( assert response.exit_code == 0 expected_contents = {"dataset.yaml": "hello: world"} import_datasets_command.assert_called_with( - expected_contents, sync_columns=True, sync_metrics=False, + expected_contents, + sync_columns=True, + sync_metrics=False, ) @@ -443,7 +447,9 @@ def test_import_datasets_sync_argument_metrics( assert response.exit_code == 0 expected_contents = {"dataset.yaml": "hello: world"} import_datasets_command.assert_called_with( - expected_contents, sync_columns=False, sync_metrics=True, + expected_contents, + sync_columns=False, + sync_metrics=True, ) diff --git a/tests/integration_tests/core_tests.py b/tests/integration_tests/core_tests.py index f573e68075441..166abf96a79d0 100644 --- a/tests/integration_tests/core_tests.py +++ b/tests/integration_tests/core_tests.py @@ -974,7 +974,8 @@ def test_explore_json(self): } self.login(username="admin") rv = self.client.post( - "/superset/explore_json/", data={"form_data": json.dumps(form_data)}, + "/superset/explore_json/", + data={"form_data": json.dumps(form_data)}, ) data = json.loads(rv.data.decode("utf-8")) @@ -1049,7 +1050,8 @@ def test_explore_json_dist_bar_order(self): self.login(username="admin") rv = self.client.post( - "/superset/explore_json/", data={"form_data": json.dumps(form_data)}, + "/superset/explore_json/", + data={"form_data": json.dumps(form_data)}, ) data = json.loads(rv.data.decode("utf-8")) @@ -1096,7 +1098,8 @@ def test_explore_json_async(self): async_query_manager.init_app(app) self.login(username="admin") rv = self.client.post( - "/superset/explore_json/", data={"form_data": json.dumps(form_data)}, + "/superset/explore_json/", + data={"form_data": json.dumps(form_data)}, ) data = json.loads(rv.data.decode("utf-8")) keys = list(data.keys()) @@ -1237,25 +1240,11 @@ def test_schemas_access_for_csv_upload_endpoint( assert data == ["this_schema_is_allowed_too"] self.delete_fake_db() - @pytest.mark.usefixtures("load_birth_names_dashboard_with_slices") - def test_select_star(self): - self.login(username="admin") - examples_db = superset.utils.database.get_example_database() - resp = self.get_resp(f"/superset/select_star/{examples_db.id}/birth_names") - self.assertIn("gender", resp) - - def test_get_select_star_not_allowed(self): - """ - Database API: Test get select star not allowed - """ - self.login(username="gamma") - example_db = superset.utils.database.get_example_database() - resp = self.client.get(f"/superset/select_star/{example_db.id}/birth_names") - self.assertEqual(resp.status_code, 403) - @mock.patch("superset.views.core.results_backend_use_msgpack", False) - @mock.patch("superset.views.core.results_backend") - def test_display_limit(self, mock_results_backend): + def test_display_limit(self): + from superset.views import core + + core.results_backend = mock.Mock() self.login() data = [{"col_0": i} for i in range(100)] @@ -1284,7 +1273,7 @@ def test_display_limit(self, mock_results_backend): app.config["RESULTS_BACKEND_USE_MSGPACK"] = False serialized_payload = sql_lab._serialize_payload(payload, False) compressed = utils.zlib_compress(serialized_payload) - mock_results_backend.get.return_value = compressed + core.results_backend.get.return_value = compressed with mock.patch("superset.views.core.db") as mock_superset_db: mock_superset_db.session.query().filter_by().one_or_none.return_value = ( @@ -1632,7 +1621,8 @@ def test_stop_query_not_implemented( mock_superset_db_session.query().filter_by().one().return_value = query_mock mock_sql_lab_cancel_query.return_value = False rv = self.client.post( - "/superset/stop_query/", data={"form_data": json.dumps(form_data)}, + "/superset/stop_query/", + data={"form_data": json.dumps(form_data)}, ) assert rv.status_code == 422 diff --git a/tests/integration_tests/css_templates/api_tests.py b/tests/integration_tests/css_templates/api_tests.py index 8f7e580e8ce14..b28cca955ca8d 100644 --- a/tests/integration_tests/css_templates/api_tests.py +++ b/tests/integration_tests/css_templates/api_tests.py @@ -34,7 +34,10 @@ class TestCssTemplateApi(SupersetTestCase): def insert_css_template( - self, template_name: str, css: str, created_by_username: str = "admin", + self, + template_name: str, + css: str, + created_by_username: str = "admin", ) -> CssTemplate: admin = self.get_user(created_by_username) css_template = CssTemplate( diff --git a/tests/integration_tests/dashboard_utils.py b/tests/integration_tests/dashboard_utils.py index c50b75b8ae152..fa6efd60b4dac 100644 --- a/tests/integration_tests/dashboard_utils.py +++ b/tests/integration_tests/dashboard_utils.py @@ -30,7 +30,9 @@ def get_table( - table_name: str, database: Database, schema: Optional[str] = None, + table_name: str, + database: Database, + schema: Optional[str] = None, ): schema = schema or get_example_default_schema() table_source = ConnectorRegistry.sources["table"] diff --git a/tests/integration_tests/dashboards/api_tests.py b/tests/integration_tests/dashboards/api_tests.py index 8669da99f4a9e..7fc8c2e2518fc 100644 --- a/tests/integration_tests/dashboards/api_tests.py +++ b/tests/integration_tests/dashboards/api_tests.py @@ -329,7 +329,11 @@ def test_get_dashboard(self): "changed_by_name": "", "changed_by_url": "", "charts": [], - "created_by": {"id": 1, "first_name": "admin", "last_name": "user",}, + "created_by": { + "id": 1, + "first_name": "admin", + "last_name": "user", + }, "id": dashboard.id, "css": "", "dashboard_title": "title", @@ -349,13 +353,17 @@ def test_get_dashboard(self): "url": "/superset/dashboard/slug1/", "slug": "slug1", "thumbnail_url": dashboard.thumbnail_url, + "is_managed_externally": False, } data = json.loads(rv.data.decode("utf-8")) self.assertIn("changed_on", data["result"]) self.assertIn("changed_on_delta_humanized", data["result"]) for key, value in data["result"].items(): # We can't assert timestamp values - if key not in ("changed_on", "changed_on_delta_humanized",): + if key not in ( + "changed_on", + "changed_on_delta_humanized", + ): self.assertEqual(value, expected_result[key]) # rollback changes db.session.delete(dashboard) @@ -622,7 +630,13 @@ def test_get_dashboards_not_favorite_filter(self): @pytest.mark.usefixtures("create_dashboards") def test_gets_certified_dashboards_filter(self): arguments = { - "filters": [{"col": "id", "opr": "dashboard_is_certified", "value": True,}], + "filters": [ + { + "col": "id", + "opr": "dashboard_is_certified", + "value": True, + } + ], "keys": ["none"], "columns": ["dashboard_title"], } @@ -638,7 +652,11 @@ def test_gets_certified_dashboards_filter(self): def test_gets_not_certified_dashboards_filter(self): arguments = { "filters": [ - {"col": "id", "opr": "dashboard_is_certified", "value": False,} + { + "col": "id", + "opr": "dashboard_is_certified", + "value": False, + } ], "keys": ["none"], "columns": ["dashboard_title"], @@ -1134,7 +1152,12 @@ def test_update_dashboard_chart_owners(self): slices.append(db.session.query(Slice).filter_by(slice_name="Trends").first()) slices.append(db.session.query(Slice).filter_by(slice_name="Boys").first()) - dashboard = self.insert_dashboard("title1", "slug1", [admin.id], slices=slices,) + dashboard = self.insert_dashboard( + "title1", + "slug1", + [admin.id], + slices=slices, + ) self.login(username="admin") uri = f"api/v1/dashboard/{dashboard.id}" dashboard_data = {"owners": [user_alpha1.id, user_alpha2.id]} @@ -1348,10 +1371,8 @@ def test_export(self): dashboards_ids = get_dashboards_ids(db, ["world_health", "births"]) uri = f"api/v1/dashboard/export/?q={prison.dumps(dashboards_ids)}" - # freeze time to ensure filename is deterministic - with freeze_time("2020-01-01T00:00:00Z"): - rv = self.get_assert_metric(uri, "export") - headers = generate_download_headers("json")["Content-Disposition"] + rv = self.get_assert_metric(uri, "export") + headers = generate_download_headers("json")["Content-Disposition"] assert rv.status_code == 200 assert rv.headers["Content-Disposition"] == headers diff --git a/tests/integration_tests/dashboards/filter_sets/get_api_tests.py b/tests/integration_tests/dashboards/filter_sets/get_api_tests.py index 0d36a0a593e5b..7be6f367dd6b9 100644 --- a/tests/integration_tests/dashboards/filter_sets/get_api_tests.py +++ b/tests/integration_tests/dashboards/filter_sets/get_api_tests.py @@ -37,7 +37,9 @@ class TestGetFilterSetsApi: def test_with_dashboard_not_exists__404( - self, not_exists_dashboard_id: int, client: FlaskClient[Any], + self, + not_exists_dashboard_id: int, + client: FlaskClient[Any], ): # arrange login(client, "admin") diff --git a/tests/integration_tests/dashboards/permalink/api_tests.py b/tests/integration_tests/dashboards/permalink/api_tests.py index bd821165dc337..33186131d559f 100644 --- a/tests/integration_tests/dashboards/permalink/api_tests.py +++ b/tests/integration_tests/dashboards/permalink/api_tests.py @@ -15,7 +15,9 @@ # specific language governing permissions and limitations # under the License. import json +from typing import Iterator from unittest.mock import patch +from uuid import uuid3 import pytest from flask_appbuilder.security.sqla.models import User @@ -24,8 +26,9 @@ from superset import db from superset.dashboards.commands.exceptions import DashboardAccessDeniedError from superset.key_value.models import KeyValueEntry +from superset.key_value.types import KeyValueResource +from superset.key_value.utils import decode_permalink_id from superset.models.dashboard import Dashboard -from superset.models.slice import Slice from tests.integration_tests.base_tests import login from tests.integration_tests.fixtures.client import client from tests.integration_tests.fixtures.world_bank_dashboard import ( @@ -35,7 +38,7 @@ from tests.integration_tests.test_app import app STATE = { - "filterState": {"FILTER_1": "foo",}, + "filterState": {"FILTER_1": "foo"}, "hash": "my-anchor", } @@ -48,7 +51,23 @@ def dashboard_id(load_world_bank_dashboard_with_slices) -> int: return dashboard.id -def test_post(client, dashboard_id: int): +@pytest.fixture +def permalink_salt() -> Iterator[str]: + from superset.key_value.shared_entries import get_permalink_salt, get_uuid_namespace + from superset.key_value.types import SharedKey + + key = SharedKey.DASHBOARD_PERMALINK_SALT + salt = get_permalink_salt(key) + yield salt + namespace = get_uuid_namespace(salt) + db.session.query(KeyValueEntry).filter_by( + resource=KeyValueResource.APP, + uuid=uuid3(namespace, key), + ) + db.session.commit() + + +def test_post(client, dashboard_id: int, permalink_salt: str) -> None: login(client, "admin") resp = client.post(f"api/v1/dashboard/{dashboard_id}/permalink", json=STATE) assert resp.status_code == 201 @@ -56,7 +75,8 @@ def test_post(client, dashboard_id: int): key = data["key"] url = data["url"] assert key in url - db.session.query(KeyValueEntry).filter_by(uuid=key).delete() + id_ = decode_permalink_id(key, permalink_salt) + db.session.query(KeyValueEntry).filter_by(id=id_).delete() db.session.commit() @@ -76,7 +96,7 @@ def test_post_invalid_schema(client, dashboard_id: int): assert resp.status_code == 400 -def test_get(client, dashboard_id: int): +def test_get(client, dashboard_id: int, permalink_salt: str): login(client, "admin") resp = client.post(f"api/v1/dashboard/{dashboard_id}/permalink", json=STATE) data = json.loads(resp.data.decode("utf-8")) @@ -86,5 +106,6 @@ def test_get(client, dashboard_id: int): result = json.loads(resp.data.decode("utf-8")) assert result["dashboardId"] == str(dashboard_id) assert result["state"] == STATE - db.session.query(KeyValueEntry).filter_by(uuid=key).delete() + id_ = decode_permalink_id(key, permalink_salt) + db.session.query(KeyValueEntry).filter_by(id=id_).delete() db.session.commit() diff --git a/tests/integration_tests/dashboards/security/security_dataset_tests.py b/tests/integration_tests/dashboards/security/security_dataset_tests.py index 01bce014afdc5..34a5fedad0bfb 100644 --- a/tests/integration_tests/dashboards/security/security_dataset_tests.py +++ b/tests/integration_tests/dashboards/security/security_dataset_tests.py @@ -91,11 +91,14 @@ def test_get_dashboards__users_are_dashboards_owners(self): username = "gamma" user = security_manager.find_user(username) my_owned_dashboard = create_dashboard_to_db( - dashboard_title="My Dashboard", published=False, owners=[user], + dashboard_title="My Dashboard", + published=False, + owners=[user], ) not_my_owned_dashboard = create_dashboard_to_db( - dashboard_title="Not My Dashboard", published=False, + dashboard_title="Not My Dashboard", + published=False, ) self.login(user.username) diff --git a/tests/integration_tests/dashboards/security/security_rbac_tests.py b/tests/integration_tests/dashboards/security/security_rbac_tests.py index 62b0e1b4c2755..d425c0e71118f 100644 --- a/tests/integration_tests/dashboards/security/security_rbac_tests.py +++ b/tests/integration_tests/dashboards/security/security_rbac_tests.py @@ -41,7 +41,8 @@ @mock.patch.dict( - "superset.extensions.feature_flag_manager._feature_flags", DASHBOARD_RBAC=True, + "superset.extensions.feature_flag_manager._feature_flags", + DASHBOARD_RBAC=True, ) class TestDashboardRoleBasedSecurity(BaseTestDashboardSecurity): def test_get_dashboard_view__admin_can_access(self): @@ -293,7 +294,10 @@ def test_get_dashboards_api__user_get_only_published_permitted_dashboards(self): # assert self.assert_dashboards_api_response( - response, len(published_dashboards), published_dashboards, draft_dashboards, + response, + len(published_dashboards), + published_dashboards, + draft_dashboards, ) # post @@ -337,7 +341,10 @@ def test_get_dashboards_api__public_user_get_only_published_permitted_dashboards # assert self.assert_dashboards_api_response( - response, len(published_dashboards), published_dashboards, draft_dashboards, + response, + len(published_dashboards), + published_dashboards, + draft_dashboards, ) # post diff --git a/tests/integration_tests/databases/api_tests.py b/tests/integration_tests/databases/api_tests.py index 928f3d595730d..4f29600bdabb7 100644 --- a/tests/integration_tests/databases/api_tests.py +++ b/tests/integration_tests/databases/api_tests.py @@ -458,7 +458,8 @@ def test_create_database_uri_validate(self): response = json.loads(rv.data.decode("utf-8")) self.assertEqual(rv.status_code, 400) self.assertIn( - "Invalid connection string", response["message"]["sqlalchemy_uri"][0], + "Invalid connection string", + response["message"]["sqlalchemy_uri"][0], ) @mock.patch( @@ -623,7 +624,8 @@ def test_update_database_uri_validate(self): response = json.loads(rv.data.decode("utf-8")) self.assertEqual(rv.status_code, 400) self.assertIn( - "Invalid connection string", response["message"]["sqlalchemy_uri"][0], + "Invalid connection string", + response["message"]["sqlalchemy_uri"][0], ) db.session.delete(test_database) @@ -1038,7 +1040,9 @@ def test_test_connection_unsafe_uri(self): @mock.patch( "superset.databases.commands.test_connection.DatabaseDAO.build_db_for_connection_test", ) - @mock.patch("superset.databases.commands.test_connection.event_logger",) + @mock.patch( + "superset.databases.commands.test_connection.event_logger", + ) def test_test_connection_failed_invalid_hostname( self, mock_event_logger, mock_build_db ): @@ -1419,7 +1423,9 @@ def test_import_database_masked_password_provided(self): db.session.delete(database) db.session.commit() - @mock.patch("superset.db_engine_specs.base.BaseEngineSpec.get_function_names",) + @mock.patch( + "superset.db_engine_specs.base.BaseEngineSpec.get_function_names", + ) def test_function_names(self, mock_get_function_names): example_db = get_example_database() if example_db.backend in {"hive", "presto"}: diff --git a/tests/integration_tests/datasets/api_tests.py b/tests/integration_tests/datasets/api_tests.py index fe493a5504aed..83849931f4d76 100644 --- a/tests/integration_tests/datasets/api_tests.py +++ b/tests/integration_tests/datasets/api_tests.py @@ -107,7 +107,10 @@ def create_virtual_datasets(self): for table_name in self.fixture_virtual_table_names: datasets.append( self.insert_dataset( - table_name, [admin.id], main_db, "SELECT * from ab_view_menu;", + table_name, + [admin.id], + main_db, + "SELECT * from ab_view_menu;", ) ) yield datasets @@ -286,7 +289,10 @@ def pg_test_query_parameter(query_parameter, expected_response): ) datasets.append( self.insert_dataset( - "columns", [], get_main_database(), schema="information_schema", + "columns", + [], + get_main_database(), + schema="information_schema", ) ) schema_values = [ @@ -570,7 +576,12 @@ def test_create_dataset_validate_view_exists( """ mock_get_columns.return_value = [ - {"name": "col", "type": "VARCHAR", "type_generic": None, "is_dttm": None,} + { + "name": "col", + "type": "VARCHAR", + "type_generic": None, + "is_dttm": None, + } ] mock_has_table_by_name.return_value = False diff --git a/tests/integration_tests/datasource_tests.py b/tests/integration_tests/datasource_tests.py index eecc0501b3ffe..1428a20c48352 100644 --- a/tests/integration_tests/datasource_tests.py +++ b/tests/integration_tests/datasource_tests.py @@ -158,7 +158,11 @@ def test_external_metadata_by_name_from_sqla_inspector(self): # No databases found params = prison.dumps( - {"datasource_type": "table", "database_name": "foo", "table_name": "bar",} + { + "datasource_type": "table", + "database_name": "foo", + "table_name": "bar", + } ) url = f"/datasource/external_metadata_by_name/?q={params}" resp = self.client.get(url) @@ -185,7 +189,11 @@ def test_external_metadata_by_name_from_sqla_inspector(self): ) # invalid query params - params = prison.dumps({"datasource_type": "table",}) + params = prison.dumps( + { + "datasource_type": "table", + } + ) url = f"/datasource/external_metadata_by_name/?q={params}" resp = self.get_json_resp(url) self.assertIn("error", resp) diff --git a/tests/integration_tests/db_engine_specs/base_engine_spec_tests.py b/tests/integration_tests/db_engine_specs/base_engine_spec_tests.py index d0e20ccdf516e..c4432e3ad1f93 100644 --- a/tests/integration_tests/db_engine_specs/base_engine_spec_tests.py +++ b/tests/integration_tests/db_engine_specs/base_engine_spec_tests.py @@ -93,7 +93,9 @@ def test_limit_query_with_limit_subquery(self): # pylint: disable=invalid-name def test_limit_query_without_force(self): self.sql_limit_regex( - "SELECT * FROM a LIMIT 10", "SELECT * FROM a LIMIT 10", limit=11, + "SELECT * FROM a LIMIT 10", + "SELECT * FROM a LIMIT 10", + limit=11, ) def test_limit_query_with_force(self): @@ -399,7 +401,11 @@ def test_get_time_grain_with_unkown_values(): config = app.config.copy() app.config["TIME_GRAIN_ADDON_EXPRESSIONS"] = { - "mysql": {"PT2H": "foo", "weird": "foo", "PT12H": "foo",} + "mysql": { + "PT2H": "foo", + "weird": "foo", + "PT12H": "foo", + } } with app.app_context(): diff --git a/tests/integration_tests/db_engine_specs/bigquery_tests.py b/tests/integration_tests/db_engine_specs/bigquery_tests.py index b7405092c5446..549b1109529e9 100644 --- a/tests/integration_tests/db_engine_specs/bigquery_tests.py +++ b/tests/integration_tests/db_engine_specs/bigquery_tests.py @@ -139,8 +139,14 @@ def test_extra_table_metadata(self): self.assertEqual(result, {}) index_metadata = [ - {"name": "clustering", "column_names": ["c_col1", "c_col2", "c_col3"],}, - {"name": "partition", "column_names": ["p_col1", "p_col2", "p_col3"],}, + { + "name": "clustering", + "column_names": ["c_col1", "c_col2", "c_col3"], + }, + { + "name": "partition", + "column_names": ["p_col1", "p_col2", "p_col3"], + }, ] expected_result = { "partitions": {"cols": [["p_col1", "p_col2", "p_col3"]]}, @@ -247,7 +253,12 @@ def test_extract_errors(self): level=ErrorLevel.ERROR, extra={ "engine_name": "Google BigQuery", - "issue_codes": [{"code": 1017, "message": "",}], + "issue_codes": [ + { + "code": 1017, + "message": "", + } + ], }, ) ] diff --git a/tests/integration_tests/db_engine_specs/hive_tests.py b/tests/integration_tests/db_engine_specs/hive_tests.py index 7cc6b27fa7c48..ad80f8397ffe1 100644 --- a/tests/integration_tests/db_engine_specs/hive_tests.py +++ b/tests/integration_tests/db_engine_specs/hive_tests.py @@ -166,7 +166,10 @@ def test_convert_dttm(): def test_df_to_csv() -> None: with pytest.raises(SupersetException): HiveEngineSpec.df_to_sql( - mock.MagicMock(), Table("foobar"), pd.DataFrame(), {"if_exists": "append"}, + mock.MagicMock(), + Table("foobar"), + pd.DataFrame(), + {"if_exists": "append"}, ) diff --git a/tests/integration_tests/db_engine_specs/pinot_tests.py b/tests/integration_tests/db_engine_specs/pinot_tests.py index fa31efdb388d3..803dd67cbacfa 100644 --- a/tests/integration_tests/db_engine_specs/pinot_tests.py +++ b/tests/integration_tests/db_engine_specs/pinot_tests.py @@ -21,7 +21,7 @@ class TestPinotDbEngineSpec(TestDbEngineSpec): - """ Tests pertaining to our Pinot database support """ + """Tests pertaining to our Pinot database support""" def test_pinot_time_expression_sec_one_1d_grain(self): col = column("tstamp") @@ -62,7 +62,8 @@ def test_pinot_time_expression_sec_one_1m_grain(self): expr = PinotEngineSpec.get_timestamp_expr(col, "epoch_s", "P1M") result = str(expr.compile()) self.assertEqual( - result, "DATETRUNC('month', tstamp, 'SECONDS')", + result, + "DATETRUNC('month', tstamp, 'SECONDS')", ) def test_invalid_get_time_expression_arguments(self): diff --git a/tests/integration_tests/db_engine_specs/postgres_tests.py b/tests/integration_tests/db_engine_specs/postgres_tests.py index dcf5310fecac5..e6eb4fc1d13ea 100644 --- a/tests/integration_tests/db_engine_specs/postgres_tests.py +++ b/tests/integration_tests/db_engine_specs/postgres_tests.py @@ -179,7 +179,11 @@ def test_estimate_statement_cost_select_star(self): sql = "SELECT * FROM birth_names" results = PostgresEngineSpec.estimate_statement_cost(sql, cursor) self.assertEqual( - results, {"Start-up cost": 0.00, "Total cost": 1537.91,}, + results, + { + "Start-up cost": 0.00, + "Total cost": 1537.91, + }, ) def test_estimate_statement_invalid_syntax(self): @@ -205,15 +209,27 @@ def test_query_cost_formatter_example_costs(self): DB Eng Specs (postgres): Test test_query_cost_formatter example costs """ raw_cost = [ - {"Start-up cost": 0.00, "Total cost": 1537.91,}, - {"Start-up cost": 10.00, "Total cost": 1537.00,}, + { + "Start-up cost": 0.00, + "Total cost": 1537.91, + }, + { + "Start-up cost": 10.00, + "Total cost": 1537.00, + }, ] result = PostgresEngineSpec.query_cost_formatter(raw_cost) self.assertEqual( result, [ - {"Start-up cost": "0.0", "Total cost": "1537.91",}, - {"Start-up cost": "10.0", "Total cost": "1537.0",}, + { + "Start-up cost": "0.0", + "Total cost": "1537.91", + }, + { + "Start-up cost": "10.0", + "Total cost": "1537.0", + }, ], ) diff --git a/tests/integration_tests/db_engine_specs/presto_tests.py b/tests/integration_tests/db_engine_specs/presto_tests.py index 5833c6bdcbfcb..558f4322a0e5d 100644 --- a/tests/integration_tests/db_engine_specs/presto_tests.py +++ b/tests/integration_tests/db_engine_specs/presto_tests.py @@ -293,7 +293,10 @@ def test_presto_expand_data_with_complex_row_columns(self): ) def test_presto_expand_data_with_complex_row_columns_and_null_values(self): cols = [ - {"name": "row_column", "type": "ROW(NESTED_ROW ROW(NESTED_OBJ VARCHAR))",} + { + "name": "row_column", + "type": "ROW(NESTED_ROW ROW(NESTED_OBJ VARCHAR))", + } ] data = [ {"row_column": '[["a"]]'}, @@ -305,7 +308,10 @@ def test_presto_expand_data_with_complex_row_columns_and_null_values(self): cols, data ) expected_cols = [ - {"name": "row_column", "type": "ROW(NESTED_ROW ROW(NESTED_OBJ VARCHAR))",}, + { + "name": "row_column", + "type": "ROW(NESTED_ROW ROW(NESTED_OBJ VARCHAR))", + }, {"name": "row_column.nested_row", "type": "ROW(NESTED_OBJ VARCHAR)"}, {"name": "row_column.nested_row.nested_obj", "type": "VARCHAR"}, ] @@ -786,7 +792,10 @@ def test_select_star_presto_expand_data( True, True, True, - [{"name": "val1"}, {"name": "val2 Dict[str, Any]: } -def test_post(client, form_data): +@pytest.fixture +def permalink_salt() -> Iterator[str]: + from superset.key_value.shared_entries import get_permalink_salt, get_uuid_namespace + from superset.key_value.types import SharedKey + + key = SharedKey.EXPLORE_PERMALINK_SALT + salt = get_permalink_salt(key) + yield salt + namespace = get_uuid_namespace(salt) + db.session.query(KeyValueEntry).filter_by( + resource=KeyValueResource.APP, + uuid=uuid3(namespace, key), + ) + db.session.commit() + + +def test_post(client, form_data: Dict[str, Any], permalink_salt: str): login(client, "admin") resp = client.post(f"api/v1/explore/permalink", json={"formData": form_data}) assert resp.status_code == 201 @@ -59,7 +77,8 @@ def test_post(client, form_data): key = data["key"] url = data["url"] assert key in url - db.session.query(KeyValueEntry).filter_by(uuid=key).delete() + id_ = decode_permalink_id(key, permalink_salt) + db.session.query(KeyValueEntry).filter_by(id=id_).delete() db.session.commit() @@ -69,21 +88,18 @@ def test_post_access_denied(client, form_data): assert resp.status_code == 404 -def test_get_missing_chart(client, chart): +def test_get_missing_chart(client, chart, permalink_salt: str) -> None: from superset.key_value.models import KeyValueEntry - key = 1234 - uuid_key = "e2ea9d19-7988-4862-aa69-c3a1a7628cb9" + chart_id = 1234 entry = KeyValueEntry( - id=int(key), - uuid=UUID("e2ea9d19-7988-4862-aa69-c3a1a7628cb9"), - resource="explore_permalink", + resource=KeyValueResource.EXPLORE_PERMALINK, value=pickle.dumps( { - "chartId": key, + "chartId": chart_id, "datasetId": chart.datasource.id, "formData": { - "slice_id": key, + "slice_id": chart_id, "datasource": f"{chart.datasource.id}__{chart.datasource.type}", }, } @@ -91,20 +107,21 @@ def test_get_missing_chart(client, chart): ) db.session.add(entry) db.session.commit() + key = encode_permalink_key(entry.id, permalink_salt) login(client, "admin") - resp = client.get(f"api/v1/explore/permalink/{uuid_key}") + resp = client.get(f"api/v1/explore/permalink/{key}") assert resp.status_code == 404 db.session.delete(entry) db.session.commit() -def test_post_invalid_schema(client): +def test_post_invalid_schema(client) -> None: login(client, "admin") resp = client.post(f"api/v1/explore/permalink", json={"abc": 123}) assert resp.status_code == 400 -def test_get(client, form_data): +def test_get(client, form_data: Dict[str, Any], permalink_salt: str) -> None: login(client, "admin") resp = client.post(f"api/v1/explore/permalink", json={"formData": form_data}) data = json.loads(resp.data.decode("utf-8")) @@ -113,5 +130,6 @@ def test_get(client, form_data): assert resp.status_code == 200 result = json.loads(resp.data.decode("utf-8")) assert result["state"]["formData"] == form_data - db.session.query(KeyValueEntry).filter_by(uuid=key).delete() + id_ = decode_permalink_id(key, permalink_salt) + db.session.query(KeyValueEntry).filter_by(id=id_).delete() db.session.commit() diff --git a/tests/integration_tests/extensions/metastore_cache_test.py b/tests/integration_tests/extensions/metastore_cache_test.py index eb264c983f95b..d9e0e9ee26f5e 100644 --- a/tests/integration_tests/extensions/metastore_cache_test.py +++ b/tests/integration_tests/extensions/metastore_cache_test.py @@ -40,7 +40,8 @@ def cache() -> SupersetMetastoreCache: from superset.extensions.metastore_cache import SupersetMetastoreCache return SupersetMetastoreCache( - namespace=UUID("ee173d1b-ccf3-40aa-941c-985c15224496"), default_timeout=600, + namespace=UUID("ee173d1b-ccf3-40aa-941c-985c15224496"), + default_timeout=600, ) diff --git a/tests/integration_tests/fixtures/birth_names_dashboard.py b/tests/integration_tests/fixtures/birth_names_dashboard.py index 685cf43f581fa..ef71803aa5db7 100644 --- a/tests/integration_tests/fixtures/birth_names_dashboard.py +++ b/tests/integration_tests/fixtures/birth_names_dashboard.py @@ -76,7 +76,9 @@ def _create_dashboards(): def _create_table( - table_name: str, database: "Database", fetch_values_predicate: Optional[str] = None, + table_name: str, + database: "Database", + fetch_values_predicate: Optional[str] = None, ): table = create_table_metadata( table_name=table_name, diff --git a/tests/integration_tests/fixtures/importexport.py b/tests/integration_tests/fixtures/importexport.py index 3ec3d8f0935a4..18bec4f17995b 100644 --- a/tests/integration_tests/fixtures/importexport.py +++ b/tests/integration_tests/fixtures/importexport.py @@ -449,7 +449,7 @@ "dataset_uuid": "10808100-158b-42c4-842e-f32b99d88dfb", } -dashboard_config = { +dashboard_config: Dict[str, Any] = { "dashboard_title": "Test dash", "description": None, "css": "", @@ -492,7 +492,9 @@ }, "metadata": { "timed_refresh_immune_slices": [83], - "filter_scopes": {"83": {"region": {"scope": ["ROOT_ID"], "immune": [83]}},}, + "filter_scopes": { + "83": {"region": {"scope": ["ROOT_ID"], "immune": [83]}}, + }, "expanded_slices": {"83": True}, "refresh_frequency": 0, "default_filters": "{}", diff --git a/tests/integration_tests/form_tests.py b/tests/integration_tests/form_tests.py index b15dfdea79a54..078a9866ee975 100644 --- a/tests/integration_tests/form_tests.py +++ b/tests/integration_tests/form_tests.py @@ -23,11 +23,11 @@ class TestForm(SupersetTestCase): def test_comma_separated_list_field(self): field = CommaSeparatedListField().bind(Form(), "foo") - field.process_formdata([u""]) - self.assertEqual(field.data, [u""]) + field.process_formdata([""]) + self.assertEqual(field.data, [""]) field.process_formdata(["a,comma,separated,list"]) - self.assertEqual(field.data, [u"a", u"comma", u"separated", u"list"]) + self.assertEqual(field.data, ["a", "comma", "separated", "list"]) def test_filter_not_empty_values(self): self.assertEqual(filter_not_empty_values(None), None) diff --git a/tests/integration_tests/import_export_tests.py b/tests/integration_tests/import_export_tests.py index f34cf621506d2..67d2a89d866ff 100644 --- a/tests/integration_tests/import_export_tests.py +++ b/tests/integration_tests/import_export_tests.py @@ -287,8 +287,10 @@ def test_export_2_dashboards(self): self.login("admin") birth_dash = self.get_dash_by_slug("births") world_health_dash = self.get_dash_by_slug("world_health") - export_dash_url = "/dashboard/export_dashboards_form?id={}&id={}&action=go".format( - birth_dash.id, world_health_dash.id + export_dash_url = ( + "/dashboard/export_dashboards_form?id={}&id={}&action=go".format( + birth_dash.id, world_health_dash.id + ) ) resp = self.client.get(export_dash_url) resp_data = json.loads(resp.data.decode("utf-8"), object_hook=decode_dashboards) diff --git a/tests/integration_tests/key_value/commands/create_test.py b/tests/integration_tests/key_value/commands/create_test.py index 22a1b517485c8..2718aa822c3e4 100644 --- a/tests/integration_tests/key_value/commands/create_test.py +++ b/tests/integration_tests/key_value/commands/create_test.py @@ -36,12 +36,8 @@ def test_create_id_entry(app_context: AppContext, admin: User) -> None: from superset.key_value.commands.create import CreateKeyValueCommand from superset.key_value.models import KeyValueEntry - key = CreateKeyValueCommand( - actor=admin, resource=RESOURCE, value=VALUE, key_type="id", - ).run() - entry = ( - db.session.query(KeyValueEntry).filter_by(id=int(key)).autoflush(False).one() - ) + key = CreateKeyValueCommand(actor=admin, resource=RESOURCE, value=VALUE).run() + entry = db.session.query(KeyValueEntry).filter_by(id=key.id).autoflush(False).one() assert pickle.loads(entry.value) == VALUE assert entry.created_by_fk == admin.id db.session.delete(entry) @@ -52,11 +48,9 @@ def test_create_uuid_entry(app_context: AppContext, admin: User) -> None: from superset.key_value.commands.create import CreateKeyValueCommand from superset.key_value.models import KeyValueEntry - key = CreateKeyValueCommand( - actor=admin, resource=RESOURCE, value=VALUE, key_type="uuid", - ).run() + key = CreateKeyValueCommand(actor=admin, resource=RESOURCE, value=VALUE).run() entry = ( - db.session.query(KeyValueEntry).filter_by(uuid=UUID(key)).autoflush(False).one() + db.session.query(KeyValueEntry).filter_by(uuid=key.uuid).autoflush(False).one() ) assert pickle.loads(entry.value) == VALUE assert entry.created_by_fk == admin.id diff --git a/tests/integration_tests/key_value/commands/delete_test.py b/tests/integration_tests/key_value/commands/delete_test.py index a98d941175153..62f9883370cf1 100644 --- a/tests/integration_tests/key_value/commands/delete_test.py +++ b/tests/integration_tests/key_value/commands/delete_test.py @@ -30,8 +30,8 @@ if TYPE_CHECKING: from superset.key_value.models import KeyValueEntry -ID_KEY = "234" -UUID_KEY = "5aae143c-44f1-478e-9153-ae6154df333a" +ID_KEY = 234 +UUID_KEY = UUID("5aae143c-44f1-478e-9153-ae6154df333a") @pytest.fixture @@ -39,8 +39,8 @@ def key_value_entry() -> KeyValueEntry: from superset.key_value.models import KeyValueEntry entry = KeyValueEntry( - id=int(ID_KEY), - uuid=UUID(UUID_KEY), + id=ID_KEY, + uuid=UUID_KEY, resource=RESOURCE, value=pickle.dumps(VALUE), ) @@ -50,36 +50,33 @@ def key_value_entry() -> KeyValueEntry: def test_delete_id_entry( - app_context: AppContext, admin: User, key_value_entry: KeyValueEntry, + app_context: AppContext, + admin: User, + key_value_entry: KeyValueEntry, ) -> None: from superset.key_value.commands.delete import DeleteKeyValueCommand from superset.key_value.models import KeyValueEntry - assert ( - DeleteKeyValueCommand(resource=RESOURCE, key=ID_KEY, key_type="id",).run() - is True - ) + assert DeleteKeyValueCommand(resource=RESOURCE, key=ID_KEY).run() is True def test_delete_uuid_entry( - app_context: AppContext, admin: User, key_value_entry: KeyValueEntry, + app_context: AppContext, + admin: User, + key_value_entry: KeyValueEntry, ) -> None: from superset.key_value.commands.delete import DeleteKeyValueCommand from superset.key_value.models import KeyValueEntry - assert ( - DeleteKeyValueCommand(resource=RESOURCE, key=UUID_KEY, key_type="uuid").run() - is True - ) + assert DeleteKeyValueCommand(resource=RESOURCE, key=UUID_KEY).run() is True def test_delete_entry_missing( - app_context: AppContext, admin: User, key_value_entry: KeyValueEntry, + app_context: AppContext, + admin: User, + key_value_entry: KeyValueEntry, ) -> None: from superset.key_value.commands.delete import DeleteKeyValueCommand from superset.key_value.models import KeyValueEntry - assert ( - DeleteKeyValueCommand(resource=RESOURCE, key="456", key_type="id").run() - is False - ) + assert DeleteKeyValueCommand(resource=RESOURCE, key=456).run() is False diff --git a/tests/integration_tests/key_value/commands/fixtures.py b/tests/integration_tests/key_value/commands/fixtures.py index 44e12f7854cb2..2fd4fde4e1dc3 100644 --- a/tests/integration_tests/key_value/commands/fixtures.py +++ b/tests/integration_tests/key_value/commands/fixtures.py @@ -26,14 +26,15 @@ from sqlalchemy.orm import Session from superset.extensions import db +from superset.key_value.types import KeyValueResource from tests.integration_tests.test_app import app if TYPE_CHECKING: from superset.key_value.models import KeyValueEntry -ID_KEY = "123" -UUID_KEY = "3e7a2ab8-bcaf-49b0-a5df-dfb432f291cc" -RESOURCE = "my_resource" +ID_KEY = 123 +UUID_KEY = UUID("3e7a2ab8-bcaf-49b0-a5df-dfb432f291cc") +RESOURCE = KeyValueResource.APP VALUE = {"foo": "bar"} @@ -42,8 +43,8 @@ def key_value_entry() -> Generator[KeyValueEntry, None, None]: from superset.key_value.models import KeyValueEntry entry = KeyValueEntry( - id=int(ID_KEY), - uuid=UUID(UUID_KEY), + id=ID_KEY, + uuid=UUID_KEY, resource=RESOURCE, value=pickle.dumps(VALUE), ) diff --git a/tests/integration_tests/key_value/commands/get_test.py b/tests/integration_tests/key_value/commands/get_test.py index 20efa9dfbd4c5..b1800a4c3b9a3 100644 --- a/tests/integration_tests/key_value/commands/get_test.py +++ b/tests/integration_tests/key_value/commands/get_test.py @@ -39,7 +39,7 @@ def test_get_id_entry(app_context: AppContext, key_value_entry: KeyValueEntry) -> None: from superset.key_value.commands.get import GetKeyValueCommand - value = GetKeyValueCommand(resource=RESOURCE, key=ID_KEY, key_type="id").run() + value = GetKeyValueCommand(resource=RESOURCE, key=ID_KEY).run() assert value == VALUE @@ -48,16 +48,17 @@ def test_get_uuid_entry( ) -> None: from superset.key_value.commands.get import GetKeyValueCommand - value = GetKeyValueCommand(resource=RESOURCE, key=UUID_KEY, key_type="uuid").run() + value = GetKeyValueCommand(resource=RESOURCE, key=UUID_KEY).run() assert value == VALUE def test_get_id_entry_missing( - app_context: AppContext, key_value_entry: KeyValueEntry, + app_context: AppContext, + key_value_entry: KeyValueEntry, ) -> None: from superset.key_value.commands.get import GetKeyValueCommand - value = GetKeyValueCommand(resource=RESOURCE, key="456", key_type="id").run() + value = GetKeyValueCommand(resource=RESOURCE, key=456).run() assert value is None @@ -74,7 +75,7 @@ def test_get_expired_entry(app_context: AppContext) -> None: ) db.session.add(entry) db.session.commit() - value = GetKeyValueCommand(resource=RESOURCE, key=ID_KEY, key_type="id").run() + value = GetKeyValueCommand(resource=RESOURCE, key=ID_KEY).run() assert value is None db.session.delete(entry) db.session.commit() @@ -94,7 +95,7 @@ def test_get_future_expiring_entry(app_context: AppContext) -> None: ) db.session.add(entry) db.session.commit() - value = GetKeyValueCommand(resource=RESOURCE, key=str(id_), key_type="id").run() + value = GetKeyValueCommand(resource=RESOURCE, key=id_).run() assert value == VALUE db.session.delete(entry) db.session.commit() diff --git a/tests/integration_tests/key_value/commands/update_test.py b/tests/integration_tests/key_value/commands/update_test.py index 1fbc84d59e332..3b24ecdf0a300 100644 --- a/tests/integration_tests/key_value/commands/update_test.py +++ b/tests/integration_tests/key_value/commands/update_test.py @@ -40,48 +40,56 @@ def test_update_id_entry( - app_context: AppContext, admin: User, key_value_entry: KeyValueEntry, + app_context: AppContext, + admin: User, + key_value_entry: KeyValueEntry, ) -> None: from superset.key_value.commands.update import UpdateKeyValueCommand from superset.key_value.models import KeyValueEntry key = UpdateKeyValueCommand( - actor=admin, resource=RESOURCE, key=ID_KEY, value=NEW_VALUE, key_type="id", + actor=admin, + resource=RESOURCE, + key=ID_KEY, + value=NEW_VALUE, ).run() - assert key == ID_KEY - entry = ( - db.session.query(KeyValueEntry).filter_by(id=int(ID_KEY)).autoflush(False).one() - ) + assert key is not None + assert key.id == ID_KEY + entry = db.session.query(KeyValueEntry).filter_by(id=ID_KEY).autoflush(False).one() assert pickle.loads(entry.value) == NEW_VALUE assert entry.changed_by_fk == admin.id def test_update_uuid_entry( - app_context: AppContext, admin: User, key_value_entry: KeyValueEntry, + app_context: AppContext, + admin: User, + key_value_entry: KeyValueEntry, ) -> None: from superset.key_value.commands.update import UpdateKeyValueCommand from superset.key_value.models import KeyValueEntry key = UpdateKeyValueCommand( - actor=admin, resource=RESOURCE, key=UUID_KEY, value=NEW_VALUE, key_type="uuid", + actor=admin, + resource=RESOURCE, + key=UUID_KEY, + value=NEW_VALUE, ).run() - assert key == UUID_KEY + assert key is not None + assert key.uuid == UUID_KEY entry = ( - db.session.query(KeyValueEntry) - .filter_by(uuid=UUID(UUID_KEY)) - .autoflush(False) - .one() + db.session.query(KeyValueEntry).filter_by(uuid=UUID_KEY).autoflush(False).one() ) assert pickle.loads(entry.value) == NEW_VALUE assert entry.changed_by_fk == admin.id -def test_update_missing_entry( - app_context: AppContext, admin: User, key_value_entry: KeyValueEntry, -) -> None: +def test_update_missing_entry(app_context: AppContext, admin: User) -> None: from superset.key_value.commands.update import UpdateKeyValueCommand key = UpdateKeyValueCommand( - actor=admin, resource=RESOURCE, key="456", value=NEW_VALUE, key_type="id", + actor=admin, + resource=RESOURCE, + key=456, + value=NEW_VALUE, ).run() assert key is None diff --git a/tests/integration_tests/key_value/commands/upsert_test.py b/tests/integration_tests/key_value/commands/upsert_test.py index 3221147839d1c..1970a1fc2c293 100644 --- a/tests/integration_tests/key_value/commands/upsert_test.py +++ b/tests/integration_tests/key_value/commands/upsert_test.py @@ -40,15 +40,21 @@ def test_upsert_id_entry( - app_context: AppContext, admin: User, key_value_entry: KeyValueEntry, + app_context: AppContext, + admin: User, + key_value_entry: KeyValueEntry, ) -> None: from superset.key_value.commands.upsert import UpsertKeyValueCommand from superset.key_value.models import KeyValueEntry key = UpsertKeyValueCommand( - actor=admin, resource=RESOURCE, key=ID_KEY, value=NEW_VALUE, key_type="id", + actor=admin, + resource=RESOURCE, + key=ID_KEY, + value=NEW_VALUE, ).run() - assert key == ID_KEY + assert key is not None + assert key.id == ID_KEY entry = ( db.session.query(KeyValueEntry).filter_by(id=int(ID_KEY)).autoflush(False).one() ) @@ -57,34 +63,39 @@ def test_upsert_id_entry( def test_upsert_uuid_entry( - app_context: AppContext, admin: User, key_value_entry: KeyValueEntry, + app_context: AppContext, + admin: User, + key_value_entry: KeyValueEntry, ) -> None: from superset.key_value.commands.upsert import UpsertKeyValueCommand from superset.key_value.models import KeyValueEntry key = UpsertKeyValueCommand( - actor=admin, resource=RESOURCE, key=UUID_KEY, value=NEW_VALUE, key_type="uuid", + actor=admin, + resource=RESOURCE, + key=UUID_KEY, + value=NEW_VALUE, ).run() - assert key == UUID_KEY + assert key is not None + assert key.uuid == UUID_KEY entry = ( - db.session.query(KeyValueEntry) - .filter_by(uuid=UUID(UUID_KEY)) - .autoflush(False) - .one() + db.session.query(KeyValueEntry).filter_by(uuid=UUID_KEY).autoflush(False).one() ) assert pickle.loads(entry.value) == NEW_VALUE assert entry.changed_by_fk == admin.id -def test_upsert_missing_entry( - app_context: AppContext, admin: User, key_value_entry: KeyValueEntry, -) -> None: +def test_upsert_missing_entry(app_context: AppContext, admin: User) -> None: from superset.key_value.commands.upsert import UpsertKeyValueCommand from superset.key_value.models import KeyValueEntry key = UpsertKeyValueCommand( - actor=admin, resource=RESOURCE, key="456", value=NEW_VALUE, key_type="id", + actor=admin, + resource=RESOURCE, + key=456, + value=NEW_VALUE, ).run() - assert key == "456" + assert key is not None + assert key.id == 456 db.session.query(KeyValueEntry).filter_by(id=456).delete() db.session.commit() diff --git a/tests/integration_tests/log_api_tests.py b/tests/integration_tests/log_api_tests.py index e5f78c754146e..089ac07921c5a 100644 --- a/tests/integration_tests/log_api_tests.py +++ b/tests/integration_tests/log_api_tests.py @@ -77,7 +77,7 @@ def test_not_enabled(self): def test_get_list(self): """ - Log API: Test get list + Log API: Test get list """ admin_user = self.get_user("admin") log = self.insert_log("some_action", admin_user) @@ -95,7 +95,7 @@ def test_get_list(self): def test_get_list_not_allowed(self): """ - Log API: Test get list + Log API: Test get list """ admin_user = self.get_user("admin") log = self.insert_log("action", admin_user) @@ -109,7 +109,7 @@ def test_get_list_not_allowed(self): def test_get_item(self): """ - Log API: Test get item + Log API: Test get item """ admin_user = self.get_user("admin") log = self.insert_log("some_action", admin_user) @@ -127,7 +127,7 @@ def test_get_item(self): def test_delete_log(self): """ - Log API: Test delete (does not exist) + Log API: Test delete (does not exist) """ admin_user = self.get_user("admin") log = self.insert_log("action", admin_user) @@ -140,7 +140,7 @@ def test_delete_log(self): def test_update_log(self): """ - Log API: Test update (does not exist) + Log API: Test update (does not exist) """ admin_user = self.get_user("admin") log = self.insert_log("action", admin_user) diff --git a/tests/integration_tests/migrations/f1410ed7ec95_tests.py b/tests/integration_tests/migrations/f1410ed7ec95_tests.py index 2b48b56762b05..c60d0a74beb5c 100644 --- a/tests/integration_tests/migrations/f1410ed7ec95_tests.py +++ b/tests/integration_tests/migrations/f1410ed7ec95_tests.py @@ -48,7 +48,11 @@ { "filterType": "filter_select", "cascadingFilters": True, - "defaultDataMask": {"filterState": {"value": ["Albania", "Algeria"],},}, + "defaultDataMask": { + "filterState": { + "value": ["Albania", "Algeria"], + }, + }, } ], "filter_sets_configuration": [ @@ -58,7 +62,9 @@ "filterType": "filter_select", "cascadingFilters": True, "defaultDataMask": { - "filterState": {"value": ["Albania", "Algeria"],}, + "filterState": { + "value": ["Albania", "Algeria"], + }, }, }, }, diff --git a/tests/integration_tests/model_tests.py b/tests/integration_tests/model_tests.py index c6388601354d4..8f90d46a9aa9b 100644 --- a/tests/integration_tests/model_tests.py +++ b/tests/integration_tests/model_tests.py @@ -355,13 +355,15 @@ def test_username_param(self, mocked_get_sqla_engine): if main_db.backend == "mysql": main_db.get_df("USE superset; SELECT 1", username=test_username) mocked_get_sqla_engine.assert_called_with( - schema=None, user_name="test_username_param", + schema=None, + user_name="test_username_param", ) @mock.patch("superset.models.core.create_engine") def test_get_sqla_engine(self, mocked_create_engine): model = Database( - database_name="test_database", sqlalchemy_uri="mysql://root@localhost", + database_name="test_database", + sqlalchemy_uri="mysql://root@localhost", ) model.db_engine_spec.get_dbapi_exception_mapping = mock.Mock( return_value={Exception: SupersetException} @@ -568,7 +570,9 @@ def test_data_for_slices_with_no_query_context(self): slc = ( metadata_db.session.query(Slice) .filter_by( - datasource_id=tbl.id, datasource_type=tbl.type, slice_name="Genders", + datasource_id=tbl.id, + datasource_type=tbl.type, + slice_name="Genders", ) .first() ) diff --git a/tests/integration_tests/query_context_tests.py b/tests/integration_tests/query_context_tests.py index b2f28186ada32..816267678f9e0 100644 --- a/tests/integration_tests/query_context_tests.py +++ b/tests/integration_tests/query_context_tests.py @@ -91,7 +91,8 @@ def test_schema_deserialization(self): def test_cache(self): table_name = "birth_names" payload = get_query_context( - query_name=table_name, add_postprocessing_operations=True, + query_name=table_name, + add_postprocessing_operations=True, ) payload["force"] = True @@ -443,12 +444,16 @@ def test_handle_sort_by_metrics(self): else: # Should reference the adhoc metric by alias when possible assert re.search( - r'ORDER BY [`"\[]?num_girls[`"\]]? DESC', sql_text, re.IGNORECASE, + r'ORDER BY [`"\[]?num_girls[`"\]]? DESC', + sql_text, + re.IGNORECASE, ) # ORDER BY only columns should always be expressions assert re.search( - r'AVG\([`"\[]?num_boys[`"\]]?\) DESC', sql_text, re.IGNORECASE, + r'AVG\([`"\[]?num_boys[`"\]]?\) DESC', + sql_text, + re.IGNORECASE, ) assert re.search( r"MAX\(CASE.*END\) ASC", sql_text, re.IGNORECASE | re.DOTALL @@ -573,7 +578,10 @@ def test_processing_time_offsets_cache(self): payload["queries"][0]["time_offsets"] = [] query_context = ChartDataQueryContextSchema().load(payload) query_object = query_context.queries[0] - rv = query_context.processing_time_offsets(df, query_object,) + rv = query_context.processing_time_offsets( + df, + query_object, + ) self.assertIs(rv["df"], df) self.assertEqual(rv["queries"], []) self.assertEqual(rv["cache_keys"], []) diff --git a/tests/integration_tests/reports/commands_tests.py b/tests/integration_tests/reports/commands_tests.py index f914941e919e9..a334854d58de3 100644 --- a/tests/integration_tests/reports/commands_tests.py +++ b/tests/integration_tests/reports/commands_tests.py @@ -308,7 +308,12 @@ def create_report_email_tabbed_dashboard(tabbed_dashboard): report_schedule = create_report_notification( email_target="target@email.com", dashboard=tabbed_dashboard, - extra={"dashboard_tab_ids": ["TAB-j53G4gtKGF", "TAB-nerWR09Ju",]}, + extra={ + "dashboard_tab_ids": [ + "TAB-j53G4gtKGF", + "TAB-nerWR09Ju", + ] + }, ) yield report_schedule cleanup_report_schedule(report_schedule) @@ -409,7 +414,9 @@ def create_alert_slack_chart_success(): @pytest.fixture( - params=["alert1",] + params=[ + "alert1", + ] ) def create_alert_slack_chart_grace(request): param_config = { @@ -687,7 +694,9 @@ def create_invalid_sql_alert_email_chart(request): @patch("superset.reports.notifications.email.send_email_smtp") @patch("superset.utils.screenshots.ChartScreenshot.get_screenshot") def test_email_chart_report_schedule( - screenshot_mock, email_mock, create_report_email_chart, + screenshot_mock, + email_mock, + create_report_email_chart, ): """ ExecuteReport Command: Test chart email report schedule with screenshot @@ -727,7 +736,9 @@ def test_email_chart_report_schedule( @patch("superset.reports.notifications.email.send_email_smtp") @patch("superset.utils.screenshots.ChartScreenshot.get_screenshot") def test_email_chart_report_schedule_force_screenshot( - screenshot_mock, email_mock, create_report_email_chart_force_screenshot, + screenshot_mock, + email_mock, + create_report_email_chart_force_screenshot, ): """ ExecuteReport Command: Test chart email report schedule with screenshot @@ -769,7 +780,9 @@ def test_email_chart_report_schedule_force_screenshot( @patch("superset.reports.notifications.email.send_email_smtp") @patch("superset.utils.screenshots.ChartScreenshot.get_screenshot") def test_email_chart_alert_schedule( - screenshot_mock, email_mock, create_alert_email_chart, + screenshot_mock, + email_mock, + create_alert_email_chart, ): """ ExecuteReport Command: Test chart email alert schedule with screenshot @@ -806,7 +819,9 @@ def test_email_chart_alert_schedule( @patch("superset.reports.notifications.email.send_email_smtp") @patch("superset.utils.screenshots.ChartScreenshot.get_screenshot") def test_email_chart_report_dry_run( - screenshot_mock, email_mock, create_report_email_chart, + screenshot_mock, + email_mock, + create_report_email_chart, ): """ ExecuteReport Command: Test chart email report schedule dry run @@ -831,7 +846,11 @@ def test_email_chart_report_dry_run( @patch("superset.reports.notifications.email.send_email_smtp") @patch("superset.utils.csv.get_chart_csv_data") def test_email_chart_report_schedule_with_csv( - csv_mock, email_mock, mock_open, mock_urlopen, create_report_email_chart_with_csv, + csv_mock, + email_mock, + mock_open, + mock_urlopen, + create_report_email_chart_with_csv, ): """ ExecuteReport Command: Test chart email report schedule with CSV @@ -1055,7 +1074,9 @@ def test_email_dashboard_report_schedule_force_screenshot( @patch("superset.reports.notifications.slack.WebClient.files_upload") @patch("superset.utils.screenshots.ChartScreenshot.get_screenshot") def test_slack_chart_report_schedule( - screenshot_mock, file_upload_mock, create_report_slack_chart, + screenshot_mock, + file_upload_mock, + create_report_slack_chart, ): """ ExecuteReport Command: Test chart slack report schedule @@ -1279,7 +1300,9 @@ def test_report_schedule_success_grace_end( @patch("superset.reports.notifications.email.send_email_smtp") @patch("superset.utils.screenshots.ChartScreenshot.get_screenshot") def test_alert_limit_is_applied( - screenshot_mock, email_mock, create_alert_email_chart, + screenshot_mock, + email_mock, + create_alert_email_chart, ): """ ExecuteReport Command: Test that all alerts apply a SQL limit to stmts @@ -1335,7 +1358,9 @@ def test_email_dashboard_report_fails( ALERTS_ATTACH_REPORTS=True, ) def test_slack_chart_alert( - screenshot_mock, email_mock, create_alert_email_chart, + screenshot_mock, + email_mock, + create_alert_email_chart, ): """ ExecuteReport Command: Test chart slack alert @@ -1392,7 +1417,9 @@ def test_slack_chart_alert_no_attachment(email_mock, create_alert_email_chart): @patch("superset.reports.notifications.slack.WebClient") @patch("superset.utils.screenshots.ChartScreenshot.get_screenshot") def test_slack_token_callable_chart_report( - screenshot_mock, slack_client_mock_class, create_report_slack_chart, + screenshot_mock, + slack_client_mock_class, + create_report_slack_chart, ): """ ExecuteReport Command: Test chart slack alert (slack token callable) @@ -1504,7 +1531,11 @@ def test_soft_timeout_screenshot(screenshot_mock, email_mock, create_alert_email @patch("superset.reports.notifications.email.send_email_smtp") @patch("superset.utils.csv.get_chart_csv_data") def test_soft_timeout_csv( - csv_mock, email_mock, mock_open, mock_urlopen, create_report_email_chart_with_csv, + csv_mock, + email_mock, + mock_open, + mock_urlopen, + create_report_email_chart_with_csv, ): """ ExecuteReport Command: Test fail on generating csv @@ -1528,7 +1559,8 @@ def test_soft_timeout_csv( assert email_mock.call_args[0][0] == OWNER_EMAIL assert_log( - ReportState.ERROR, error_message="A timeout occurred while generating a csv.", + ReportState.ERROR, + error_message="A timeout occurred while generating a csv.", ) @@ -1540,7 +1572,11 @@ def test_soft_timeout_csv( @patch("superset.reports.notifications.email.send_email_smtp") @patch("superset.utils.csv.get_chart_csv_data") def test_generate_no_csv( - csv_mock, email_mock, mock_open, mock_urlopen, create_report_email_chart_with_csv, + csv_mock, + email_mock, + mock_open, + mock_urlopen, + create_report_email_chart_with_csv, ): """ ExecuteReport Command: Test fail on generating csv @@ -1723,7 +1759,9 @@ def test_grace_period_error(email_mock, create_invalid_sql_alert_email_chart): @patch("superset.reports.notifications.email.send_email_smtp") @patch("superset.utils.screenshots.ChartScreenshot.get_screenshot") def test_grace_period_error_flap( - screenshot_mock, email_mock, create_invalid_sql_alert_email_chart, + screenshot_mock, + email_mock, + create_invalid_sql_alert_email_chart, ): """ ExecuteReport Command: Test alert grace period on error @@ -1800,9 +1838,13 @@ def test_prune_log_soft_time_out(bulk_delete_logs, create_report_email_dashboard assert str(excinfo.value) == "SoftTimeLimitExceeded()" -@pytest.mark.usefixtures("create_report_email_tabbed_dashboard",) +@pytest.mark.usefixtures( + "create_report_email_tabbed_dashboard", +) @patch("superset.reports.notifications.email.send_email_smtp") -@patch("superset.reports.commands.execute.DashboardScreenshot",) +@patch( + "superset.reports.commands.execute.DashboardScreenshot", +) def test_when_tabs_are_selected_it_takes_screenshots_for_every_tabs( dashboard_screenshot_mock, send_email_smtp_mock, diff --git a/tests/integration_tests/schedules_test.py b/tests/integration_tests/schedules_test.py deleted file mode 100644 index b5cfe716051ae..0000000000000 --- a/tests/integration_tests/schedules_test.py +++ /dev/null @@ -1,596 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# isort:skip_file -from datetime import datetime, timedelta -from superset.views.schedules import DashboardEmailScheduleView, SliceEmailScheduleView -from unittest.mock import Mock, patch, PropertyMock - -from flask_babel import gettext as __ -import pytest -from selenium.common.exceptions import WebDriverException -from slack import errors, WebClient - -from tests.integration_tests.fixtures.world_bank_dashboard import ( - load_world_bank_dashboard_with_slices, - load_world_bank_data, -) -from tests.integration_tests.test_app import app -from superset import db -from superset.models.dashboard import Dashboard -from superset.models.schedules import ( - DashboardEmailSchedule, - EmailDeliveryType, - SliceEmailReportFormat, - SliceEmailSchedule, -) -from superset.tasks.schedules import ( - create_webdriver, - deliver_dashboard, - deliver_slice, - next_schedules, -) -from superset.models.slice import Slice -from tests.integration_tests.base_tests import SupersetTestCase -from tests.integration_tests.utils import read_fixture - - -class TestSchedules(SupersetTestCase): - - RECIPIENTS = "recipient1@superset.com, recipient2@superset.com" - BCC = "bcc@superset.com" - CSV = read_fixture("trends.csv") - - @pytest.fixture() - def add_schedule_slice_and_dashboard(self): - with app.app_context(): - self.common_data = dict( - active=True, - crontab="* * * * *", - recipients=self.RECIPIENTS, - deliver_as_group=True, - delivery_type=EmailDeliveryType.inline, - ) - # Pick up a sample slice and dashboard - slice = db.session.query(Slice).filter_by(slice_name="Region Filter").one() - dashboard = ( - db.session.query(Dashboard) - .filter_by(dashboard_title="World Bank's Data") - .one() - ) - - dashboard_schedule = DashboardEmailSchedule(**self.common_data) - dashboard_schedule.dashboard_id = dashboard.id - dashboard_schedule.user_id = 1 - db.session.add(dashboard_schedule) - - slice_schedule = SliceEmailSchedule(**self.common_data) - slice_schedule.slice_id = slice.id - slice_schedule.user_id = 1 - slice_schedule.email_format = SliceEmailReportFormat.data - slice_schedule.slack_channel = "#test_channel" - - db.session.add(slice_schedule) - db.session.commit() - - self.slice_schedule = slice_schedule.id - self.dashboard_schedule = dashboard_schedule.id - - yield - - with app.app_context(): - db.session.query(SliceEmailSchedule).filter_by( - id=self.slice_schedule - ).delete() - db.session.query(DashboardEmailSchedule).filter_by( - id=self.dashboard_schedule - ).delete() - db.session.commit() - - def test_crontab_scheduler(self): - crontab = "* * * * *" - - start_at = datetime.now().replace(microsecond=0, second=0, minute=0) - stop_at = start_at + timedelta(seconds=3600) - - # Fire off the task every minute - schedules = list(next_schedules(crontab, start_at, stop_at, resolution=0)) - - self.assertEqual(schedules[0], start_at) - self.assertEqual(schedules[-1], stop_at - timedelta(seconds=60)) - self.assertEqual(len(schedules), 60) - - # Fire off the task every 10 minutes, controlled via resolution - schedules = list(next_schedules(crontab, start_at, stop_at, resolution=10 * 60)) - - self.assertEqual(schedules[0], start_at) - self.assertEqual(schedules[-1], stop_at - timedelta(seconds=10 * 60)) - self.assertEqual(len(schedules), 6) - - # Fire off the task every 12 minutes, controlled via resolution - schedules = list(next_schedules(crontab, start_at, stop_at, resolution=12 * 60)) - - self.assertEqual(schedules[0], start_at) - self.assertEqual(schedules[-1], stop_at - timedelta(seconds=12 * 60)) - self.assertEqual(len(schedules), 5) - - def test_wider_schedules(self): - crontab = "*/15 2,10 * * *" - - for hour in range(0, 24): - start_at = datetime.now().replace( - microsecond=0, second=0, minute=0, hour=hour - ) - stop_at = start_at + timedelta(seconds=3600) - schedules = list(next_schedules(crontab, start_at, stop_at, resolution=0)) - - if hour in (2, 10): - self.assertEqual(len(schedules), 4) - else: - self.assertEqual(len(schedules), 0) - - def test_complex_schedule(self): - # Run the job on every Friday of March and May - # On these days, run the job at - # 5:10 pm - # 5:11 pm - # 5:12 pm - # 5:13 pm - # 5:14 pm - # 5:15 pm - # 5:25 pm - # 5:28 pm - # 5:31 pm - # 5:34 pm - # 5:37 pm - # 5:40 pm - crontab = "10-15,25-40/3 17 * 3,5 5" - start_at = datetime.strptime("2018/01/01", "%Y/%m/%d") - stop_at = datetime.strptime("2018/12/31", "%Y/%m/%d") - - schedules = list(next_schedules(crontab, start_at, stop_at, resolution=60)) - self.assertEqual(len(schedules), 108) - fmt = "%Y-%m-%d %H:%M:%S" - self.assertEqual(schedules[0], datetime.strptime("2018-03-02 17:10:00", fmt)) - self.assertEqual(schedules[-1], datetime.strptime("2018-05-25 17:40:00", fmt)) - self.assertEqual(schedules[59], datetime.strptime("2018-03-30 17:40:00", fmt)) - self.assertEqual(schedules[60], datetime.strptime("2018-05-04 17:10:00", fmt)) - - @patch("superset.tasks.schedules.firefox.webdriver.WebDriver") - def test_create_driver(self, mock_driver_class): - mock_driver = Mock() - mock_driver_class.return_value = mock_driver - mock_driver.find_elements_by_id.side_effect = [True, False] - - create_webdriver(db.session) - mock_driver.add_cookie.assert_called_once() - - @pytest.mark.usefixtures( - "load_world_bank_dashboard_with_slices", "add_schedule_slice_and_dashboard" - ) - @patch("superset.tasks.schedules.firefox.webdriver.WebDriver") - @patch("superset.tasks.schedules.send_email_smtp") - @patch("superset.tasks.schedules.time") - def test_deliver_dashboard_inline(self, mtime, send_email_smtp, driver_class): - element = Mock() - driver = Mock() - mtime.sleep.return_value = None - - driver_class.return_value = driver - - # Ensure that we are able to login with the driver - driver.find_elements_by_id.side_effect = [True, False] - driver.find_element_by_class_name.return_value = element - element.screenshot_as_png = read_fixture("sample.png") - - schedule = ( - db.session.query(DashboardEmailSchedule) - .filter_by(id=self.dashboard_schedule) - .one() - ) - - deliver_dashboard( - schedule.dashboard_id, - schedule.recipients, - schedule.slack_channel, - schedule.delivery_type, - schedule.deliver_as_group, - ) - - mtime.sleep.assert_called_once() - driver.screenshot.assert_not_called() - send_email_smtp.assert_called_once() - - @pytest.mark.usefixtures( - "load_world_bank_dashboard_with_slices", "add_schedule_slice_and_dashboard" - ) - @patch("superset.tasks.schedules.firefox.webdriver.WebDriver") - @patch("superset.tasks.schedules.send_email_smtp") - @patch("superset.tasks.schedules.time") - def test_deliver_dashboard_as_attachment( - self, mtime, send_email_smtp, driver_class - ): - element = Mock() - driver = Mock() - mtime.sleep.return_value = None - - driver_class.return_value = driver - - # Ensure that we are able to login with the driver - driver.find_elements_by_id.side_effect = [True, False] - driver.find_element_by_id.return_value = element - driver.find_element_by_class_name.return_value = element - element.screenshot_as_png = read_fixture("sample.png") - - schedule = ( - db.session.query(DashboardEmailSchedule) - .filter_by(id=self.dashboard_schedule) - .one() - ) - - schedule.delivery_type = EmailDeliveryType.attachment - - deliver_dashboard( - schedule.dashboard_id, - schedule.recipients, - schedule.slack_channel, - schedule.delivery_type, - schedule.deliver_as_group, - ) - - mtime.sleep.assert_called_once() - driver.screenshot.assert_not_called() - send_email_smtp.assert_called_once() - self.assertIsNone(send_email_smtp.call_args[1]["images"]) - self.assertEqual( - send_email_smtp.call_args[1]["data"]["screenshot"], - element.screenshot_as_png, - ) - - @pytest.mark.usefixtures( - "load_world_bank_dashboard_with_slices", "add_schedule_slice_and_dashboard" - ) - @patch("superset.tasks.schedules.firefox.webdriver.WebDriver") - @patch("superset.tasks.schedules.send_email_smtp") - @patch("superset.tasks.schedules.time") - def test_dashboard_chrome_like(self, mtime, send_email_smtp, driver_class): - # Test functionality for chrome driver which does not support - # element snapshots - element = Mock() - driver = Mock() - mtime.sleep.return_value = None - type(element).screenshot_as_png = PropertyMock(side_effect=WebDriverException) - - driver_class.return_value = driver - - # Ensure that we are able to login with the driver - driver.find_elements_by_id.side_effect = [True, False] - driver.find_element_by_id.return_value = element - driver.find_element_by_class_name.return_value = element - driver.screenshot.return_value = read_fixture("sample.png") - - schedule = ( - db.session.query(DashboardEmailSchedule) - .filter_by(id=self.dashboard_schedule) - .one() - ) - - deliver_dashboard( - schedule.dashboard_id, - schedule.recipients, - schedule.slack_channel, - schedule.delivery_type, - schedule.deliver_as_group, - ) - - mtime.sleep.assert_called_once() - driver.screenshot.assert_called_once() - send_email_smtp.assert_called_once() - - self.assertEqual(send_email_smtp.call_args[0][0], self.RECIPIENTS) - self.assertEqual( - list(send_email_smtp.call_args[1]["images"].values())[0], - driver.screenshot.return_value, - ) - - @pytest.mark.usefixtures( - "load_world_bank_dashboard_with_slices", "add_schedule_slice_and_dashboard" - ) - @patch("superset.tasks.schedules.firefox.webdriver.WebDriver") - @patch("superset.tasks.schedules.send_email_smtp") - @patch("superset.tasks.schedules.time") - def test_deliver_email_options(self, mtime, send_email_smtp, driver_class): - element = Mock() - driver = Mock() - mtime.sleep.return_value = None - - driver_class.return_value = driver - - # Ensure that we are able to login with the driver - driver.find_elements_by_id.side_effect = [True, False] - driver.find_element_by_class_name.return_value = element - element.screenshot_as_png = read_fixture("sample.png") - - schedule = ( - db.session.query(DashboardEmailSchedule) - .filter_by(id=self.dashboard_schedule) - .one() - ) - - # Send individual mails to the group - schedule.deliver_as_group = False - - # Set a bcc email address - app.config["EMAIL_REPORT_BCC_ADDRESS"] = self.BCC - - deliver_dashboard( - schedule.dashboard_id, - schedule.recipients, - schedule.slack_channel, - schedule.delivery_type, - schedule.deliver_as_group, - ) - - mtime.sleep.assert_called_once() - driver.screenshot.assert_not_called() - - self.assertEqual(send_email_smtp.call_count, 2) - self.assertEqual(send_email_smtp.call_args[1]["bcc"], self.BCC) - - @pytest.mark.usefixtures( - "load_world_bank_dashboard_with_slices", "add_schedule_slice_and_dashboard" - ) - @patch("superset.tasks.slack_util.WebClient.files_upload") - @patch("superset.tasks.schedules.firefox.webdriver.WebDriver") - @patch("superset.tasks.schedules.send_email_smtp") - @patch("superset.tasks.schedules.time") - def test_deliver_slice_inline_image( - self, mtime, send_email_smtp, driver_class, files_upload - ): - element = Mock() - driver = Mock() - mtime.sleep.return_value = None - - driver_class.return_value = driver - - # Ensure that we are able to login with the driver - driver.find_elements_by_id.side_effect = [True, False] - driver.find_element_by_class_name.return_value = element - element.screenshot_as_png = read_fixture("sample.png") - - schedule = ( - db.session.query(SliceEmailSchedule).filter_by(id=self.slice_schedule).one() - ) - - schedule.email_format = SliceEmailReportFormat.visualization - schedule.delivery_format = EmailDeliveryType.inline - - deliver_slice( - schedule.slice_id, - schedule.recipients, - schedule.slack_channel, - schedule.delivery_type, - schedule.email_format, - schedule.deliver_as_group, - db.session, - ) - mtime.sleep.assert_called_once() - driver.screenshot.assert_not_called() - send_email_smtp.assert_called_once() - - self.assertEqual( - list(send_email_smtp.call_args[1]["images"].values())[0], - element.screenshot_as_png, - ) - - self.assertEqual( - files_upload.call_args[1], - { - "channels": "#test_channel", - "file": element.screenshot_as_png, - "initial_comment": f"\n *Region Filter*\n\n \n ", - "title": "[Report] Region Filter", - }, - ) - - @pytest.mark.usefixtures( - "load_world_bank_dashboard_with_slices", "add_schedule_slice_and_dashboard" - ) - @patch("superset.tasks.slack_util.WebClient.files_upload") - @patch("superset.tasks.schedules.firefox.webdriver.WebDriver") - @patch("superset.tasks.schedules.send_email_smtp") - @patch("superset.tasks.schedules.time") - def test_deliver_slice_attachment( - self, mtime, send_email_smtp, driver_class, files_upload - ): - element = Mock() - driver = Mock() - mtime.sleep.return_value = None - - driver_class.return_value = driver - - # Ensure that we are able to login with the driver - driver.find_elements_by_id.side_effect = [True, False] - driver.find_element_by_class_name.return_value = element - element.screenshot_as_png = read_fixture("sample.png") - - schedule = ( - db.session.query(SliceEmailSchedule).filter_by(id=self.slice_schedule).one() - ) - - schedule.email_format = SliceEmailReportFormat.visualization - schedule.delivery_type = EmailDeliveryType.attachment - - deliver_slice( - schedule.slice_id, - schedule.recipients, - schedule.slack_channel, - schedule.delivery_type, - schedule.email_format, - schedule.deliver_as_group, - db.session, - ) - - mtime.sleep.assert_called_once() - driver.screenshot.assert_not_called() - send_email_smtp.assert_called_once() - - self.assertEqual( - send_email_smtp.call_args[1]["data"]["screenshot"], - element.screenshot_as_png, - ) - - self.assertEqual( - files_upload.call_args[1], - { - "channels": "#test_channel", - "file": element.screenshot_as_png, - "initial_comment": f"\n *Region Filter*\n\n \n ", - "title": "[Report] Region Filter", - }, - ) - - @pytest.mark.usefixtures( - "load_world_bank_dashboard_with_slices", "add_schedule_slice_and_dashboard" - ) - @patch("superset.tasks.slack_util.WebClient.files_upload") - @patch("superset.tasks.schedules.urllib.request.OpenerDirector.open") - @patch("superset.tasks.schedules.urllib.request.urlopen") - @patch("superset.tasks.schedules.send_email_smtp") - def test_deliver_slice_csv_attachment( - self, send_email_smtp, mock_open, mock_urlopen, files_upload - ): - response = Mock() - mock_open.return_value = response - mock_urlopen.return_value = response - mock_urlopen.return_value.getcode.return_value = 200 - response.read.return_value = self.CSV - - schedule = ( - db.session.query(SliceEmailSchedule).filter_by(id=self.slice_schedule).one() - ) - - schedule.email_format = SliceEmailReportFormat.data - schedule.delivery_type = EmailDeliveryType.attachment - - deliver_slice( - schedule.slice_id, - schedule.recipients, - schedule.slack_channel, - schedule.delivery_type, - schedule.email_format, - schedule.deliver_as_group, - db.session, - ) - - send_email_smtp.assert_called_once() - - file_name = __("%(name)s.csv", name=schedule.slice.slice_name) - - self.assertEqual(send_email_smtp.call_args[1]["data"][file_name], self.CSV) - - self.assertEqual( - files_upload.call_args[1], - { - "channels": "#test_channel", - "file": self.CSV, - "initial_comment": f"\n *Region Filter*\n\n \n ", - "title": "[Report] Region Filter", - }, - ) - - @pytest.mark.usefixtures( - "load_world_bank_dashboard_with_slices", "add_schedule_slice_and_dashboard" - ) - @patch("superset.tasks.slack_util.WebClient.files_upload") - @patch("superset.tasks.schedules.urllib.request.urlopen") - @patch("superset.tasks.schedules.urllib.request.OpenerDirector.open") - @patch("superset.tasks.schedules.send_email_smtp") - def test_deliver_slice_csv_inline( - self, send_email_smtp, mock_open, mock_urlopen, files_upload - ): - response = Mock() - mock_open.return_value = response - mock_urlopen.return_value = response - mock_urlopen.return_value.getcode.return_value = 200 - response.read.return_value = self.CSV - schedule = ( - db.session.query(SliceEmailSchedule).filter_by(id=self.slice_schedule).one() - ) - - schedule.email_format = SliceEmailReportFormat.data - schedule.delivery_type = EmailDeliveryType.inline - - deliver_slice( - schedule.slice_id, - schedule.recipients, - schedule.slack_channel, - schedule.delivery_type, - schedule.email_format, - schedule.deliver_as_group, - db.session, - ) - - send_email_smtp.assert_called_once() - - self.assertIsNone(send_email_smtp.call_args[1]["data"]) - self.assertTrue("\n ", - "title": "[Report] Region Filter", - }, - ) - - def test_dashboard_disabled(self): - with patch.object(DashboardEmailScheduleView, "is_enabled", return_value=False): - self.login("admin") - uri = "/dashboardemailscheduleview/list/" - rv = self.client.get(uri) - self.assertEqual(rv.status_code, 404) - - def test_dashboard_enabled(self): - with patch.object(DashboardEmailScheduleView, "is_enabled", return_value=True): - self.login("admin") - uri = "/dashboardemailscheduleview/list/" - rv = self.client.get(uri) - self.assertLess(rv.status_code, 400) - - def test_slice_disabled(self): - with patch.object(SliceEmailScheduleView, "is_enabled", return_value=False): - self.login("admin") - uri = "/sliceemailscheduleview/list/" - rv = self.client.get(uri) - self.assertEqual(rv.status_code, 404) - - def test_slice_enabled(self): - with patch.object(SliceEmailScheduleView, "is_enabled", return_value=True): - self.login("admin") - uri = "/sliceemailscheduleview/list/" - rv = self.client.get(uri) - self.assertLess(rv.status_code, 400) - - -def test_slack_client_compatibility(): - c2 = WebClient() - # slackclient >2.5.0 raises TypeError: a bytes-like object is required, not 'str - # and requires to path a filepath instead of the bytes directly - with pytest.raises(errors.SlackApiError): - c2.files_upload(channels="#bogdan-test2", file=b"blabla", title="Test upload") diff --git a/tests/integration_tests/security/api_tests.py b/tests/integration_tests/security/api_tests.py index 86be5e7da58e9..f936219971517 100644 --- a/tests/integration_tests/security/api_tests.py +++ b/tests/integration_tests/security/api_tests.py @@ -92,7 +92,10 @@ def test_post_guest_token_authorized(self): self.assert200(response) token = json.loads(response.data)["token"] decoded_token = jwt.decode( - token, self.app.config["GUEST_TOKEN_JWT_SECRET"], audience=get_url_host() + token, + self.app.config["GUEST_TOKEN_JWT_SECRET"], + audience=get_url_host(), + algorithms=["HS256"], ) self.assertEqual(user, decoded_token["user"]) self.assertEqual(resource, decoded_token["resources"][0]) diff --git a/tests/integration_tests/security/guest_token_security_tests.py b/tests/integration_tests/security/guest_token_security_tests.py index 9ca34198dbdf2..e4d55d9747b98 100644 --- a/tests/integration_tests/security/guest_token_security_tests.py +++ b/tests/integration_tests/security/guest_token_security_tests.py @@ -34,7 +34,8 @@ @mock.patch.dict( - "superset.extensions.feature_flag_manager._feature_flags", EMBEDDED_SUPERSET=True, + "superset.extensions.feature_flag_manager._feature_flags", + EMBEDDED_SUPERSET=True, ) class TestGuestUserSecurity(SupersetTestCase): # This test doesn't use a dashboard fixture, the next test does. @@ -150,7 +151,8 @@ def test_get_guest_user_roles_implicit(self): @mock.patch.dict( - "superset.extensions.feature_flag_manager._feature_flags", EMBEDDED_SUPERSET=True, + "superset.extensions.feature_flag_manager._feature_flags", + EMBEDDED_SUPERSET=True, ) @pytest.mark.usefixtures("load_birth_names_dashboard_with_slices") class TestGuestUserDashboardAccess(SupersetTestCase): diff --git a/tests/integration_tests/security/migrate_roles_tests.py b/tests/integration_tests/security/migrate_roles_tests.py index 2f88cfa9b49af..ad8d01691a599 100644 --- a/tests/integration_tests/security/migrate_roles_tests.py +++ b/tests/integration_tests/security/migrate_roles_tests.py @@ -102,7 +102,12 @@ def create_old_role(pvm_map: PvmMigrationMapType, external_pvms): ), ( "Many to one with multiple permissions", - {"NewDummy": ("can_read", "can_write",)}, + { + "NewDummy": ( + "can_read", + "can_write", + ) + }, { Pvm("DummyView", "can_list"): (Pvm("NewDummy", "can_read"),), Pvm("DummyView", "can_show"): (Pvm("NewDummy", "can_read"),), @@ -115,7 +120,12 @@ def create_old_role(pvm_map: PvmMigrationMapType, external_pvms): ), ( "Many to one with multiple views", - {"NewDummy": ("can_read", "can_write",)}, + { + "NewDummy": ( + "can_read", + "can_write", + ) + }, { Pvm("DummyView", "can_list"): (Pvm("NewDummy", "can_read"),), Pvm("DummyView", "can_show"): (Pvm("NewDummy", "can_read"),), @@ -132,7 +142,12 @@ def create_old_role(pvm_map: PvmMigrationMapType, external_pvms): ), ( "Many to one with existing permission-view (pvm)", - {"NewDummy": ("can_read", "can_write",)}, + { + "NewDummy": ( + "can_read", + "can_write", + ) + }, { Pvm("DummyView", "can_list"): (Pvm("NewDummy", "can_read"),), Pvm("DummyView", "can_add"): (Pvm("NewDummy", "can_write"),), @@ -143,20 +158,33 @@ def create_old_role(pvm_map: PvmMigrationMapType, external_pvms): ), ( "Many to one with existing multiple permission-view (pvm)", - {"NewDummy": ("can_read", "can_write",)}, + { + "NewDummy": ( + "can_read", + "can_write", + ) + }, { Pvm("DummyView", "can_list"): (Pvm("NewDummy", "can_read"),), Pvm("DummyView", "can_add"): (Pvm("NewDummy", "can_write"),), Pvm("DummySecondView", "can_list"): (Pvm("NewDummy", "can_read"),), Pvm("DummySecondView", "can_add"): (Pvm("NewDummy", "can_write"),), }, - (Pvm("UserDBModelView", "can_list"), Pvm("UserDBModelView", "can_add"),), + ( + Pvm("UserDBModelView", "can_list"), + Pvm("UserDBModelView", "can_add"), + ), ("DummyView",), (), ), ( "Many to one with with old permission that gets deleted", - {"NewDummy": ("can_read", "can_write",)}, + { + "NewDummy": ( + "can_read", + "can_write", + ) + }, { Pvm("DummyView", "can_new_perm"): (Pvm("NewDummy", "can_read"),), Pvm("DummyView", "can_add"): (Pvm("NewDummy", "can_write"),), @@ -167,7 +195,13 @@ def create_old_role(pvm_map: PvmMigrationMapType, external_pvms): ), ( "Many to Many (normally should be a downgrade)", - {"DummyView": ("can_list", "can_show", "can_add",)}, + { + "DummyView": ( + "can_list", + "can_show", + "can_add", + ) + }, { Pvm("NewDummy", "can_read"): ( Pvm("DummyView", "can_list"), @@ -181,13 +215,22 @@ def create_old_role(pvm_map: PvmMigrationMapType, external_pvms): ), ( "Many to Many delete old permissions", - {"DummyView": ("can_list", "can_show", "can_add",)}, + { + "DummyView": ( + "can_list", + "can_show", + "can_add", + ) + }, { Pvm("NewDummy", "can_new_perm1"): ( Pvm("DummyView", "can_list"), Pvm("DummyView", "can_show"), ), - Pvm("NewDummy", "can_new_perm2",): (Pvm("DummyView", "can_add"),), + Pvm( + "NewDummy", + "can_new_perm2", + ): (Pvm("DummyView", "can_add"),), }, (), ("NewDummy",), diff --git a/tests/integration_tests/security/row_level_security_tests.py b/tests/integration_tests/security/row_level_security_tests.py index 94369c41ca22b..1e46bfb996c5b 100644 --- a/tests/integration_tests/security/row_level_security_tests.py +++ b/tests/integration_tests/security/row_level_security_tests.py @@ -218,7 +218,8 @@ def test_rls_filter_doesnt_alter_admin_birth_names_query(self): @mock.patch.dict( - "superset.extensions.feature_flag_manager._feature_flags", EMBEDDED_SUPERSET=True, + "superset.extensions.feature_flag_manager._feature_flags", + EMBEDDED_SUPERSET=True, ) class GuestTokenRowLevelSecurityTests(SupersetTestCase): query_obj: Dict[str, Any] = dict( diff --git a/tests/integration_tests/sql_validator_tests.py b/tests/integration_tests/sql_validator_tests.py index 3468b8c047fb7..b1e661cc2c5bb 100644 --- a/tests/integration_tests/sql_validator_tests.py +++ b/tests/integration_tests/sql_validator_tests.py @@ -111,7 +111,10 @@ def test_validate_sql_endpoint_mocked_params(self, get_validator_by_name): get_validator_by_name.return_value = validator validator.validate.return_value = [ SQLValidationAnnotation( - message="This worked", line_number=4, start_column=12, end_column=42, + message="This worked", + line_number=4, + start_column=12, + end_column=42, ) ] diff --git a/tests/integration_tests/sqla_models_tests.py b/tests/integration_tests/sqla_models_tests.py index 223d48a4899a7..bbe062e509ba9 100644 --- a/tests/integration_tests/sqla_models_tests.py +++ b/tests/integration_tests/sqla_models_tests.py @@ -598,7 +598,13 @@ def test_filter_on_text_column(text_column_table): result_object = table.query( { "metrics": ["count"], - "filter": [{"col": "foo", "val": ['"text in double quotes"'], "op": "IN",}], + "filter": [ + { + "col": "foo", + "val": ['"text in double quotes"'], + "op": "IN", + } + ], "is_timeseries": False, } ) @@ -608,7 +614,13 @@ def test_filter_on_text_column(text_column_table): result_object = table.query( { "metrics": ["count"], - "filter": [{"col": "foo", "val": ["'text in single quotes'"], "op": "IN",}], + "filter": [ + { + "col": "foo", + "val": ["'text in single quotes'"], + "op": "IN", + } + ], "is_timeseries": False, } ) @@ -618,7 +630,13 @@ def test_filter_on_text_column(text_column_table): result_object = table.query( { "metrics": ["count"], - "filter": [{"col": "foo", "val": ['double quotes " in text'], "op": "IN",}], + "filter": [ + { + "col": "foo", + "val": ['double quotes " in text'], + "op": "IN", + } + ], "is_timeseries": False, } ) @@ -628,7 +646,13 @@ def test_filter_on_text_column(text_column_table): result_object = table.query( { "metrics": ["count"], - "filter": [{"col": "foo", "val": ["single quotes ' in text"], "op": "IN",}], + "filter": [ + { + "col": "foo", + "val": ["single quotes ' in text"], + "op": "IN", + } + ], "is_timeseries": False, } ) @@ -652,7 +676,10 @@ def test_should_generate_closed_and_open_time_filter_range(): database=get_example_database(), ) TableColumn( - column_name="datetime_col", type="TIMESTAMP", table=table, is_dttm=True, + column_name="datetime_col", + type="TIMESTAMP", + table=table, + is_dttm=True, ) SqlMetric(metric_name="count", expression="count(*)", table=table) result_object = table.query( @@ -719,26 +746,48 @@ def _convert_dttm( columns_by_name = { "foo": TableColumn( - column_name="foo", is_dttm=False, table=table, type="STRING", + column_name="foo", + is_dttm=False, + table=table, + type="STRING", ), "bar": TableColumn( - column_name="bar", is_dttm=False, table=table, type="BOOLEAN", + column_name="bar", + is_dttm=False, + table=table, + type="BOOLEAN", ), "baz": TableColumn( - column_name="baz", is_dttm=False, table=table, type="INTEGER", + column_name="baz", + is_dttm=False, + table=table, + type="INTEGER", ), "qux": TableColumn( - column_name="qux", is_dttm=False, table=table, type="FLOAT", + column_name="qux", + is_dttm=False, + table=table, + type="FLOAT", ), "quux": TableColumn( - column_name="quuz", is_dttm=True, table=table, type="STRING", + column_name="quuz", + is_dttm=True, + table=table, + type="STRING", ), "quuz": TableColumn( - column_name="quux", is_dttm=True, table=table, type="TIMESTAMP", + column_name="quux", + is_dttm=True, + table=table, + type="TIMESTAMP", ), } - normalized = table._normalize_prequery_result_type(row, dimension, columns_by_name,) + normalized = table._normalize_prequery_result_type( + row, + dimension, + columns_by_name, + ) assert type(normalized) == type(result) diff --git a/tests/integration_tests/sqllab_tests.py b/tests/integration_tests/sqllab_tests.py index c96b7449b9c1e..5a98ddebfa945 100644 --- a/tests/integration_tests/sqllab_tests.py +++ b/tests/integration_tests/sqllab_tests.py @@ -24,9 +24,9 @@ from parameterized import parameterized from random import random from unittest import mock -from superset.extensions import db import prison +from freezegun import freeze_time from superset import db, security_manager from superset.connectors.sqla.models import SqlaTable from superset.db_engine_specs import BaseEngineSpec @@ -34,16 +34,12 @@ from superset.db_engine_specs.presto import PrestoEngineSpec from superset.errors import ErrorLevel, SupersetError, SupersetErrorType from superset.exceptions import SupersetErrorException -from superset.models.core import Database from superset.models.sql_lab import Query, SavedQuery from superset.result_set import SupersetResultSet from superset.sqllab.limiting_factor import LimitingFactor from superset.sql_lab import ( cancel_query, execute_sql_statements, - execute_sql_statement, - get_sql_results, - SqlLabException, apply_limit_if_exists, ) from superset.sql_parse import CtasMethod @@ -157,8 +153,6 @@ def test_sql_json_to_saved_query_info(self): """ SQLLab: Test SQLLab query execution info propagation to saved queries """ - from freezegun import freeze_time - self.login("admin") sql_statement = "SELECT * FROM birth_names LIMIT 10" @@ -167,7 +161,7 @@ def test_sql_json_to_saved_query_info(self): db.session.add(saved_query) db.session.commit() - with freeze_time("2020-01-01T00:00:00Z"): + with freeze_time(datetime.now().isoformat(timespec="seconds")): self.run_sql(sql_statement, "1") saved_query_ = ( db.session.query(SavedQuery) @@ -178,9 +172,9 @@ def test_sql_json_to_saved_query_info(self): ) assert saved_query_.rows is not None assert saved_query_.last_run == datetime.now() - # Rollback changes - db.session.delete(saved_query_) - db.session.commit() + # Rollback changes + db.session.delete(saved_query_) + db.session.commit() @parameterized.expand([CtasMethod.TABLE, CtasMethod.VIEW]) @pytest.mark.usefixtures("load_birth_names_dashboard_with_slices") @@ -266,8 +260,10 @@ def test_sql_json_schema_access(self): # sqlite doesn't support database creation return - sqllab_test_db_schema_permission_view = security_manager.add_permission_view_menu( - "schema_access", f"[{examples_db.name}].[{CTAS_SCHEMA_NAME}]" + sqllab_test_db_schema_permission_view = ( + security_manager.add_permission_view_menu( + "schema_access", f"[{examples_db.name}].[{CTAS_SCHEMA_NAME}]" + ) ) schema_perm_role = security_manager.add_role("SchemaPermission") security_manager.add_permission_role( @@ -593,13 +589,17 @@ def test_sql_limit(self): ) data = self.run_sql( - "SELECT * FROM birth_names", client_id="sql_limit_6", query_limit=10000, + "SELECT * FROM birth_names", + client_id="sql_limit_6", + query_limit=10000, ) self.assertEqual(len(data["data"]), 1200) self.assertEqual(data["query"]["limitingFactor"], LimitingFactor.NOT_LIMITED) data = self.run_sql( - "SELECT * FROM birth_names", client_id="sql_limit_7", query_limit=1200, + "SELECT * FROM birth_names", + client_id="sql_limit_7", + query_limit=1200, ) self.assertEqual(len(data["data"]), 1200) self.assertEqual(data["query"]["limitingFactor"], LimitingFactor.NOT_LIMITED) diff --git a/tests/integration_tests/tasks/async_queries_tests.py b/tests/integration_tests/tasks/async_queries_tests.py index 16299bebea37c..596505a32a485 100644 --- a/tests/integration_tests/tasks/async_queries_tests.py +++ b/tests/integration_tests/tasks/async_queries_tests.py @@ -113,7 +113,8 @@ def test_soft_timeout_load_chart_data_into_cache( with pytest.raises(SoftTimeLimitExceeded): with mock.patch.object( - async_queries, "ensure_user_is_set", + async_queries, + "ensure_user_is_set", ) as ensure_user_is_set: ensure_user_is_set.side_effect = SoftTimeLimitExceeded() load_chart_data_into_cache(job_metadata, form_data) @@ -199,7 +200,8 @@ def test_soft_timeout_load_explore_json_into_cache( with pytest.raises(SoftTimeLimitExceeded): with mock.patch.object( - async_queries, "ensure_user_is_set", + async_queries, + "ensure_user_is_set", ) as ensure_user_is_set: ensure_user_is_set.side_effect = SoftTimeLimitExceeded() load_explore_json_into_cache(job_metadata, form_data) diff --git a/tests/integration_tests/utils_tests.py b/tests/integration_tests/utils_tests.py index b402d82f1fc22..765f586ced6c5 100644 --- a/tests/integration_tests/utils_tests.py +++ b/tests/integration_tests/utils_tests.py @@ -794,7 +794,11 @@ def test_merge_extra_filters_with_no_extras(self): } merge_extra_form_data(form_data) self.assertEqual( - form_data, {"time_range": "Last 10 days", "adhoc_filters": [],}, + form_data, + { + "time_range": "Last 10 days", + "adhoc_filters": [], + }, ) def test_merge_extra_filters_with_unset_legacy_time_range(self): @@ -826,7 +830,9 @@ def test_merge_extra_filters_with_conflicting_time_ranges(self): form_data = { "time_range": "Last 10 days", "extra_filters": [{"col": "__time_range", "op": "==", "val": "Last week"}], - "extra_form_data": {"time_range": "Last year",}, + "extra_form_data": { + "time_range": "Last year", + }, } merge_extra_filters(form_data) self.assertEqual( diff --git a/tests/integration_tests/viz_tests.py b/tests/integration_tests/viz_tests.py index 465fdb26ef581..6eb3f8c611487 100644 --- a/tests/integration_tests/viz_tests.py +++ b/tests/integration_tests/viz_tests.py @@ -417,7 +417,9 @@ def run_test(metric): "label": "adhoc_metric", "expressionType": "SIMPLE", "aggregate": "SUM", - "column": {"column_name": "sort_column",}, + "column": { + "column_name": "sort_column", + }, } ) @@ -1505,13 +1507,29 @@ def test_get_data(self): test_viz = viz.FilterBoxViz(datasource, form_data) test_viz.dataframes = { "value1": pd.DataFrame( - data=[{"value1": "v1", "metric1": 1}, {"value1": "v2", "metric1": 2},] + data=[ + {"value1": "v1", "metric1": 1}, + {"value1": "v2", "metric1": 2}, + ] ), "value2": pd.DataFrame( - data=[{"value2": "v3", "metric2": 3}, {"value2": "v4", "metric2": 4},] + data=[ + {"value2": "v3", "metric2": 3}, + {"value2": "v4", "metric2": 4}, + ] + ), + "value3": pd.DataFrame( + data=[ + {"value3": "v5"}, + {"value3": "v6"}, + ] + ), + "value4": pd.DataFrame( + data=[ + {"value4": "v7"}, + {"value4": "v8"}, + ] ), - "value3": pd.DataFrame(data=[{"value3": "v5"}, {"value3": "v6"},]), - "value4": pd.DataFrame(data=[{"value4": "v7"}, {"value4": "v8"},]), "value5": pd.DataFrame(), } @@ -1526,8 +1544,14 @@ def test_get_data(self): {"id": "v3", "text": "v3", "metric": 3}, {"id": "v4", "text": "v4", "metric": 4}, ], - "value3": [{"id": "v6", "text": "v6"}, {"id": "v5", "text": "v5"},], - "value4": [{"id": "v7", "text": "v7"}, {"id": "v8", "text": "v8"},], + "value3": [ + {"id": "v6", "text": "v6"}, + {"id": "v5", "text": "v5"}, + ], + "value4": [ + {"id": "v7", "text": "v7"}, + {"id": "v8", "text": "v8"}, + ], "value5": [], "value6": [], } diff --git a/tests/unit_tests/charts/commands/__init__.py b/tests/unit_tests/charts/commands/__init__.py new file mode 100644 index 0000000000000..13a83393a9124 --- /dev/null +++ b/tests/unit_tests/charts/commands/__init__.py @@ -0,0 +1,16 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. diff --git a/tests/unit_tests/charts/commands/importers/__init__.py b/tests/unit_tests/charts/commands/importers/__init__.py new file mode 100644 index 0000000000000..13a83393a9124 --- /dev/null +++ b/tests/unit_tests/charts/commands/importers/__init__.py @@ -0,0 +1,16 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. diff --git a/tests/unit_tests/charts/commands/importers/v1/__init__.py b/tests/unit_tests/charts/commands/importers/v1/__init__.py new file mode 100644 index 0000000000000..13a83393a9124 --- /dev/null +++ b/tests/unit_tests/charts/commands/importers/v1/__init__.py @@ -0,0 +1,16 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. diff --git a/tests/unit_tests/charts/commands/importers/v1/import_test.py b/tests/unit_tests/charts/commands/importers/v1/import_test.py new file mode 100644 index 0000000000000..e8687036394cb --- /dev/null +++ b/tests/unit_tests/charts/commands/importers/v1/import_test.py @@ -0,0 +1,69 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# pylint: disable=unused-argument, import-outside-toplevel, unused-import, invalid-name + +import copy + +from sqlalchemy.orm.session import Session + + +def test_import_chart(app_context: None, session: Session) -> None: + """ + Test importing a chart. + """ + from superset.charts.commands.importers.v1.utils import import_chart + from superset.connectors.sqla.models import SqlaTable + from superset.models.core import Database + from superset.models.slice import Slice + from tests.integration_tests.fixtures.importexport import chart_config + + engine = session.get_bind() + Slice.metadata.create_all(engine) # pylint: disable=no-member + + config = copy.deepcopy(chart_config) + config["datasource_id"] = 1 + config["datasource_type"] = "table" + + chart = import_chart(session, config) + assert chart.slice_name == "Deck Path" + assert chart.viz_type == "deck_path" + assert chart.is_managed_externally is False + assert chart.external_url is None + + +def test_import_chart_managed_externally(app_context: None, session: Session) -> None: + """ + Test importing a chart that is managed externally. + """ + from superset.charts.commands.importers.v1.utils import import_chart + from superset.connectors.sqla.models import SqlaTable + from superset.models.core import Database + from superset.models.slice import Slice + from tests.integration_tests.fixtures.importexport import chart_config + + engine = session.get_bind() + Slice.metadata.create_all(engine) # pylint: disable=no-member + + config = copy.deepcopy(chart_config) + config["datasource_id"] = 1 + config["datasource_type"] = "table" + config["is_managed_externally"] = True + config["external_url"] = "https://example.org/my_chart" + + chart = import_chart(session, config) + assert chart.is_managed_externally is True + assert chart.external_url == "https://example.org/my_chart" diff --git a/tests/unit_tests/columns/test_models.py b/tests/unit_tests/columns/test_models.py index 36c6b9b4e7301..40cc2075d380e 100644 --- a/tests/unit_tests/columns/test_models.py +++ b/tests/unit_tests/columns/test_models.py @@ -29,7 +29,11 @@ def test_column_model(app_context: None, session: Session) -> None: engine = session.get_bind() Column.metadata.create_all(engine) # pylint: disable=no-member - column = Column(name="ds", type="TIMESTAMP", expression="ds",) + column = Column( + name="ds", + type="TIMESTAMP", + expression="ds", + ) session.add(column) session.flush() diff --git a/tests/unit_tests/core_tests.py b/tests/unit_tests/core_tests.py index c9f96204cf0b0..f7a0047157bb8 100644 --- a/tests/unit_tests/core_tests.py +++ b/tests/unit_tests/core_tests.py @@ -140,7 +140,8 @@ def test_get_column_names(): "My Adhoc Column", ] assert get_column_names( - [STR_COLUMN, SQL_ADHOC_COLUMN], {"my_column": "My Column"}, + [STR_COLUMN, SQL_ADHOC_COLUMN], + {"my_column": "My Column"}, ) == ["My Column", "My Adhoc Column"] diff --git a/tests/unit_tests/dashboards/commands/importers/v1/import_test.py b/tests/unit_tests/dashboards/commands/importers/v1/import_test.py new file mode 100644 index 0000000000000..651e5dc10b7ca --- /dev/null +++ b/tests/unit_tests/dashboards/commands/importers/v1/import_test.py @@ -0,0 +1,67 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# pylint: disable=unused-argument, import-outside-toplevel, unused-import, invalid-name + +import copy + +from sqlalchemy.orm.session import Session + + +def test_import_dashboard(app_context: None, session: Session) -> None: + """ + Test importing a dashboard. + """ + from superset.connectors.sqla.models import SqlaTable + from superset.dashboards.commands.importers.v1.utils import import_dashboard + from superset.models.core import Database + from superset.models.slice import Slice + from tests.integration_tests.fixtures.importexport import dashboard_config + + engine = session.get_bind() + Slice.metadata.create_all(engine) # pylint: disable=no-member + + config = copy.deepcopy(dashboard_config) + + dashboard = import_dashboard(session, config) + assert dashboard.dashboard_title == "Test dash" + assert dashboard.description is None + assert dashboard.is_managed_externally is False + assert dashboard.external_url is None + + +def test_import_dashboard_managed_externally( + app_context: None, session: Session +) -> None: + """ + Test importing a dashboard that is managed externally. + """ + from superset.connectors.sqla.models import SqlaTable + from superset.dashboards.commands.importers.v1.utils import import_dashboard + from superset.models.core import Database + from superset.models.slice import Slice + from tests.integration_tests.fixtures.importexport import dashboard_config + + engine = session.get_bind() + Slice.metadata.create_all(engine) # pylint: disable=no-member + + config = copy.deepcopy(dashboard_config) + config["is_managed_externally"] = True + config["external_url"] = "https://example.org/my_dashboard" + + dashboard = import_dashboard(session, config) + assert dashboard.is_managed_externally is True + assert dashboard.external_url == "https://example.org/my_dashboard" diff --git a/tests/unit_tests/dashboards/commands/importers/v1/utils_test.py b/tests/unit_tests/dashboards/commands/importers/v1/utils_test.py index 5f3015b1b01fa..bddc96eda36e6 100644 --- a/tests/unit_tests/dashboards/commands/importers/v1/utils_test.py +++ b/tests/unit_tests/dashboards/commands/importers/v1/utils_test.py @@ -35,12 +35,18 @@ def test_update_id_refs_immune_missing( # pylint: disable=invalid-name "position": { "CHART1": { "id": "CHART1", - "meta": {"chartId": 101, "uuid": "uuid1",}, + "meta": { + "chartId": 101, + "uuid": "uuid1", + }, "type": "CHART", }, "CHART2": { "id": "CHART2", - "meta": {"chartId": 102, "uuid": "uuid2",}, + "meta": { + "chartId": 102, + "uuid": "uuid2", + }, "type": "CHART", }, }, diff --git a/tests/unit_tests/databases/__init__.py b/tests/unit_tests/databases/__init__.py new file mode 100644 index 0000000000000..13a83393a9124 --- /dev/null +++ b/tests/unit_tests/databases/__init__.py @@ -0,0 +1,16 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. diff --git a/tests/unit_tests/databases/commands/__init__.py b/tests/unit_tests/databases/commands/__init__.py new file mode 100644 index 0000000000000..13a83393a9124 --- /dev/null +++ b/tests/unit_tests/databases/commands/__init__.py @@ -0,0 +1,16 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. diff --git a/tests/unit_tests/databases/commands/importers/__init__.py b/tests/unit_tests/databases/commands/importers/__init__.py new file mode 100644 index 0000000000000..13a83393a9124 --- /dev/null +++ b/tests/unit_tests/databases/commands/importers/__init__.py @@ -0,0 +1,16 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. diff --git a/tests/unit_tests/databases/commands/importers/v1/__init__.py b/tests/unit_tests/databases/commands/importers/v1/__init__.py new file mode 100644 index 0000000000000..13a83393a9124 --- /dev/null +++ b/tests/unit_tests/databases/commands/importers/v1/__init__.py @@ -0,0 +1,16 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. diff --git a/tests/unit_tests/databases/commands/importers/v1/import_test.py b/tests/unit_tests/databases/commands/importers/v1/import_test.py new file mode 100644 index 0000000000000..622aa27fc3d56 --- /dev/null +++ b/tests/unit_tests/databases/commands/importers/v1/import_test.py @@ -0,0 +1,70 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# pylint: disable=unused-argument, import-outside-toplevel, invalid-name + +import copy + +from sqlalchemy.orm.session import Session + + +def test_import_database(app_context: None, session: Session) -> None: + """ + Test importing a database. + """ + from superset.databases.commands.importers.v1.utils import import_database + from superset.models.core import Database + from tests.integration_tests.fixtures.importexport import database_config + + engine = session.get_bind() + Database.metadata.create_all(engine) # pylint: disable=no-member + + config = copy.deepcopy(database_config) + database = import_database(session, config) + assert database.database_name == "imported_database" + assert database.sqlalchemy_uri == "sqlite:///test.db" + assert database.cache_timeout is None + assert database.expose_in_sqllab is True + assert database.allow_run_async is False + assert database.allow_ctas is True + assert database.allow_cvas is True + assert database.allow_file_upload is True + assert database.extra == "{}" + assert database.uuid == "b8a1ccd3-779d-4ab7-8ad8-9ab119d7fe89" + assert database.is_managed_externally is False + assert database.external_url is None + + +def test_import_database_managed_externally( + app_context: None, session: Session +) -> None: + """ + Test importing a database that is managed externally. + """ + from superset.databases.commands.importers.v1.utils import import_database + from superset.models.core import Database + from tests.integration_tests.fixtures.importexport import database_config + + engine = session.get_bind() + Database.metadata.create_all(engine) # pylint: disable=no-member + + config = copy.deepcopy(database_config) + config["is_managed_externally"] = True + config["external_url"] = "https://example.org/my_database" + + database = import_database(session, config) + assert database.is_managed_externally is True + assert database.external_url == "https://example.org/my_database" diff --git a/tests/unit_tests/datasets/commands/export_test.py b/tests/unit_tests/datasets/commands/export_test.py index cb5512448e299..a54f5cde61bbc 100644 --- a/tests/unit_tests/datasets/commands/export_test.py +++ b/tests/unit_tests/datasets/commands/export_test.py @@ -69,7 +69,11 @@ def test_export(app_context: None, session: Session) -> None: schema="my_schema", sql=None, params=json.dumps( - {"remote_id": 64, "database_name": "examples", "import_time": 1606677834,} + { + "remote_id": 64, + "database_name": "examples", + "import_time": 1606677834, + } ), perm=None, filter_select_enabled=1, diff --git a/tests/unit_tests/datasets/commands/importers/v1/import_test.py b/tests/unit_tests/datasets/commands/importers/v1/import_test.py index 0aa0f67a07690..07ea8c49d04d9 100644 --- a/tests/unit_tests/datasets/commands/importers/v1/import_test.py +++ b/tests/unit_tests/datasets/commands/importers/v1/import_test.py @@ -16,6 +16,7 @@ # under the License. # pylint: disable=import-outside-toplevel, unused-argument, unused-import, invalid-name +import copy import json import uuid from typing import Any, Dict @@ -54,7 +55,9 @@ def test_import_dataset(app_context: None, session: Session) -> None: "database_name": "examples", "import_time": 1606677834, }, - "template_params": {"answer": "42",}, + "template_params": { + "answer": "42", + }, "filter_select_enabled": True, "fetch_values_predicate": "foo IN (1, 2)", "extra": {"warning_markdown": "*WARNING*"}, @@ -83,7 +86,9 @@ def test_import_dataset(app_context: None, session: Session) -> None: "expression": "revenue-expenses", "description": None, "python_date_format": None, - "extra": {"certified_by": "User",}, + "extra": { + "certified_by": "User", + }, } ], "database_uuid": database.uuid, @@ -164,7 +169,9 @@ def test_import_column_extra_is_string(app_context: None, session: Session) -> N "database_name": "examples", "import_time": 1606677834, }, - "template_params": {"answer": "42",}, + "template_params": { + "answer": "42", + }, "filter_select_enabled": True, "fetch_values_predicate": "foo IN (1, 2)", "extra": '{"warning_markdown": "*WARNING*"}', @@ -199,6 +206,7 @@ def test_import_column_extra_is_string(app_context: None, session: Session) -> N "database_uuid": database.uuid, } + # the Marshmallow schema should convert strings to objects schema = ImportV1DatasetSchema() dataset_config = schema.load(yaml_config) dataset_config["database_id"] = database.id @@ -207,3 +215,31 @@ def test_import_column_extra_is_string(app_context: None, session: Session) -> N assert sqla_table.metrics[0].extra == '{"warning_markdown": null}' assert sqla_table.columns[0].extra == '{"certified_by": "User"}' assert sqla_table.extra == '{"warning_markdown": "*WARNING*"}' + + +def test_import_dataset_managed_externally(app_context: None, session: Session) -> None: + """ + Test importing a dataset that is managed externally. + """ + from superset.connectors.sqla.models import SqlaTable, SqlMetric, TableColumn + from superset.datasets.commands.importers.v1.utils import import_dataset + from superset.datasets.schemas import ImportV1DatasetSchema + from superset.models.core import Database + from tests.integration_tests.fixtures.importexport import dataset_config + + engine = session.get_bind() + SqlaTable.metadata.create_all(engine) # pylint: disable=no-member + + database = Database(database_name="my_database", sqlalchemy_uri="sqlite://") + session.add(database) + session.flush() + + dataset_uuid = uuid.uuid4() + config = copy.deepcopy(dataset_config) + config["is_managed_externally"] = True + config["external_url"] = "https://example.org/my_table" + config["database_id"] = database.id + + sqla_table = import_dataset(session, config) + assert sqla_table.is_managed_externally is True + assert sqla_table.external_url == "https://example.org/my_table" diff --git a/tests/unit_tests/datasets/test_models.py b/tests/unit_tests/datasets/test_models.py index 095b502760912..d21ef8ea60a94 100644 --- a/tests/unit_tests/datasets/test_models.py +++ b/tests/unit_tests/datasets/test_models.py @@ -57,7 +57,10 @@ def test_dataset_model(app_context: None, session: Session) -> None: """, tables=[table], columns=[ - Column(name="position", expression="array_agg(array[longitude,latitude])",), + Column( + name="position", + expression="array_agg(array[longitude,latitude])", + ), ], ) session.add(dataset) @@ -147,7 +150,10 @@ def test_cascade_delete_dataset(app_context: None, session: Session) -> None: """, tables=[table], columns=[ - Column(name="position", expression="array_agg(array[longitude,latitude])",), + Column( + name="position", + expression="array_agg(array[longitude,latitude])", + ), ], ) session.add(dataset) @@ -204,7 +210,11 @@ def test_dataset_attributes(app_context: None, session: Session) -> None: schema="my_schema", sql=None, params=json.dumps( - {"remote_id": 64, "database_name": "examples", "import_time": 1606677834,} + { + "remote_id": 64, + "database_name": "examples", + "import_time": 1606677834, + } ), perm=None, filter_select_enabled=1, @@ -301,7 +311,11 @@ def test_create_physical_sqlatable(app_context: None, session: Session) -> None: schema="my_schema", sql=None, params=json.dumps( - {"remote_id": 64, "database_name": "examples", "import_time": 1606677834,} + { + "remote_id": 64, + "database_name": "examples", + "import_time": 1606677834, + } ), perm=None, filter_select_enabled=1, @@ -576,7 +590,11 @@ def test_create_virtual_sqlatable( FROM some_table""", params=json.dumps( - {"remote_id": 64, "database_name": "examples", "import_time": 1606677834,} + { + "remote_id": 64, + "database_name": "examples", + "import_time": 1606677834, + } ), perm=None, filter_select_enabled=1, diff --git a/tests/unit_tests/db_engine_specs/test_base.py b/tests/unit_tests/db_engine_specs/test_base.py index 4dc27c0928f99..b112e2cec8ef4 100644 --- a/tests/unit_tests/db_engine_specs/test_base.py +++ b/tests/unit_tests/db_engine_specs/test_base.py @@ -77,7 +77,10 @@ def test_parse_sql_multi_statement(app_context: AppContext) -> None: ), None, ), - ("SELECT 1 as cnt", None,), + ( + "SELECT 1 as cnt", + None, + ), ( dedent( """ diff --git a/tests/unit_tests/db_engine_specs/test_gsheets.py b/tests/unit_tests/db_engine_specs/test_gsheets.py index ef3169febe74b..a13895e75e1d5 100644 --- a/tests/unit_tests/db_engine_specs/test_gsheets.py +++ b/tests/unit_tests/db_engine_specs/test_gsheets.py @@ -27,7 +27,8 @@ class ProgrammingError(Exception): def test_validate_parameters_simple( - mocker: MockFixture, app_context: AppContext, + mocker: MockFixture, + app_context: AppContext, ) -> None: from superset.db_engine_specs.gsheets import ( GSheetsEngineSpec, @@ -43,7 +44,8 @@ def test_validate_parameters_simple( def test_validate_parameters_catalog( - mocker: MockFixture, app_context: AppContext, + mocker: MockFixture, + app_context: AppContext, ) -> None: from superset.db_engine_specs.gsheets import ( GSheetsEngineSpec, @@ -78,7 +80,10 @@ def test_validate_parameters_catalog( error_type=SupersetErrorType.TABLE_DOES_NOT_EXIST_ERROR, level=ErrorLevel.WARNING, extra={ - "catalog": {"idx": 0, "url": True,}, + "catalog": { + "idx": 0, + "url": True, + }, "issue_codes": [ { "code": 1003, @@ -96,7 +101,10 @@ def test_validate_parameters_catalog( error_type=SupersetErrorType.TABLE_DOES_NOT_EXIST_ERROR, level=ErrorLevel.WARNING, extra={ - "catalog": {"idx": 2, "url": True,}, + "catalog": { + "idx": 2, + "url": True, + }, "issue_codes": [ { "code": 1003, @@ -112,12 +120,15 @@ def test_validate_parameters_catalog( ] create_engine.assert_called_with( - "gsheets://", service_account_info={}, subject="admin@example.com", + "gsheets://", + service_account_info={}, + subject="admin@example.com", ) def test_validate_parameters_catalog_and_credentials( - mocker: MockFixture, app_context: AppContext, + mocker: MockFixture, + app_context: AppContext, ) -> None: from superset.db_engine_specs.gsheets import ( GSheetsEngineSpec, @@ -151,7 +162,10 @@ def test_validate_parameters_catalog_and_credentials( error_type=SupersetErrorType.TABLE_DOES_NOT_EXIST_ERROR, level=ErrorLevel.WARNING, extra={ - "catalog": {"idx": 2, "url": True,}, + "catalog": { + "idx": 2, + "url": True, + }, "issue_codes": [ { "code": 1003, @@ -167,5 +181,7 @@ def test_validate_parameters_catalog_and_credentials( ] create_engine.assert_called_with( - "gsheets://", service_account_info={}, subject="admin@example.com", + "gsheets://", + service_account_info={}, + subject="admin@example.com", ) diff --git a/tests/unit_tests/db_engine_specs/test_kusto.py b/tests/unit_tests/db_engine_specs/test_kusto.py index 3c8a97aa44f1f..fca6ee5817de1 100644 --- a/tests/unit_tests/db_engine_specs/test_kusto.py +++ b/tests/unit_tests/db_engine_specs/test_kusto.py @@ -121,7 +121,10 @@ def test_kql_parse_sql(app_context: AppContext) -> None: ], ) def test_kql_convert_dttm( - app_context: AppContext, target_type: str, expected_dttm: str, dttm: datetime, + app_context: AppContext, + target_type: str, + expected_dttm: str, + dttm: datetime, ) -> None: """ Test that date objects are converted correctly. @@ -142,7 +145,10 @@ def test_kql_convert_dttm( ], ) def test_sql_convert_dttm( - app_context: AppContext, target_type: str, expected_dttm: str, dttm: datetime, + app_context: AppContext, + target_type: str, + expected_dttm: str, + dttm: datetime, ) -> None: """ Test that date objects are converted correctly. diff --git a/tests/unit_tests/db_engine_specs/test_mssql.py b/tests/unit_tests/db_engine_specs/test_mssql.py index 5c8848280b8ed..ddade3bfdb38c 100644 --- a/tests/unit_tests/db_engine_specs/test_mssql.py +++ b/tests/unit_tests/db_engine_specs/test_mssql.py @@ -107,13 +107,25 @@ def test_time_exp_mixd_case_col_1y(app_context: AppContext) -> None: @pytest.mark.parametrize( "actual,expected", [ - ("DATE", "CONVERT(DATE, '2019-01-02', 23)",), - ("DATETIME", "CONVERT(DATETIME, '2019-01-02T03:04:05.678', 126)",), - ("SMALLDATETIME", "CONVERT(SMALLDATETIME, '2019-01-02 03:04:05', 20)",), + ( + "DATE", + "CONVERT(DATE, '2019-01-02', 23)", + ), + ( + "DATETIME", + "CONVERT(DATETIME, '2019-01-02T03:04:05.678', 126)", + ), + ( + "SMALLDATETIME", + "CONVERT(SMALLDATETIME, '2019-01-02 03:04:05', 20)", + ), ], ) def test_convert_dttm( - app_context: AppContext, actual: str, expected: str, dttm: datetime, + app_context: AppContext, + actual: str, + expected: str, + dttm: datetime, ) -> None: from superset.db_engine_specs.mssql import MssqlEngineSpec @@ -151,7 +163,9 @@ def test_fetch_data(app_context: AppContext) -> None: from superset.db_engine_specs.mssql import MssqlEngineSpec with mock.patch.object( - MssqlEngineSpec, "pyodbc_rows_to_tuples", return_value="converted", + MssqlEngineSpec, + "pyodbc_rows_to_tuples", + return_value="converted", ) as mock_pyodbc_rows_to_tuples: data = [(1, "foo")] with mock.patch.object(BaseEngineSpec, "fetch_data", return_value=data): @@ -207,7 +221,10 @@ def test_column_datatype_to_string( )""" ), ), - ("SELECT 1 as cnt", None,), + ( + "SELECT 1 as cnt", + None, + ), ( dedent( """ diff --git a/tests/unit_tests/db_engine_specs/test_presto.py b/tests/unit_tests/db_engine_specs/test_presto.py index 370af3f48d604..eea6b6ec3c362 100644 --- a/tests/unit_tests/db_engine_specs/test_presto.py +++ b/tests/unit_tests/db_engine_specs/test_presto.py @@ -45,7 +45,10 @@ ], ) def test_convert_dttm( - app_context: AppContext, target_type: str, dttm: datetime, result: Optional[str], + app_context: AppContext, + target_type: str, + dttm: datetime, + result: Optional[str], ) -> None: from superset.db_engine_specs.presto import PrestoEngineSpec diff --git a/tests/unit_tests/db_engine_specs/test_teradata.py b/tests/unit_tests/db_engine_specs/test_teradata.py index 11978737abf6c..5887a9317c7f0 100644 --- a/tests/unit_tests/db_engine_specs/test_teradata.py +++ b/tests/unit_tests/db_engine_specs/test_teradata.py @@ -32,7 +32,10 @@ ], ) def test_apply_top_to_sql_limit( - app_context: AppContext, limit: int, original: str, expected: str, + app_context: AppContext, + limit: int, + original: str, + expected: str, ) -> None: """ Ensure limits are applied to the query correctly diff --git a/tests/unit_tests/db_engine_specs/test_trino.py b/tests/unit_tests/db_engine_specs/test_trino.py index ff00c4ff4595d..9962a0f66d0dc 100644 --- a/tests/unit_tests/db_engine_specs/test_trino.py +++ b/tests/unit_tests/db_engine_specs/test_trino.py @@ -45,7 +45,10 @@ ], ) def test_convert_dttm( - app_context: AppContext, target_type: str, dttm: datetime, result: Optional[str], + app_context: AppContext, + target_type: str, + dttm: datetime, + result: Optional[str], ) -> None: from superset.db_engine_specs.trino import TrinoEngineSpec diff --git a/tests/unit_tests/fixtures/dataframes.py b/tests/unit_tests/fixtures/dataframes.py index 2a49bd3f8d951..31a275b735ac7 100644 --- a/tests/unit_tests/fixtures/dataframes.py +++ b/tests/unit_tests/fixtures/dataframes.py @@ -168,14 +168,28 @@ single_metric_df = DataFrame( { - "dttm": to_datetime(["2019-01-01", "2019-01-01", "2019-01-02", "2019-01-02",]), + "dttm": to_datetime( + [ + "2019-01-01", + "2019-01-01", + "2019-01-02", + "2019-01-02", + ] + ), "country": ["UK", "US", "UK", "US"], "sum_metric": [5, 6, 7, 8], } ) multiple_metrics_df = DataFrame( { - "dttm": to_datetime(["2019-01-01", "2019-01-01", "2019-01-02", "2019-01-02",]), + "dttm": to_datetime( + [ + "2019-01-01", + "2019-01-01", + "2019-01-02", + "2019-01-02", + ] + ), "country": ["UK", "US", "UK", "US"], "sum_metric": [5, 6, 7, 8], "count_metric": [1, 2, 3, 4], diff --git a/tests/unit_tests/key_value/utils_test.py b/tests/unit_tests/key_value/utils_test.py index f5ad0958bc749..5d78f6361c02c 100644 --- a/tests/unit_tests/key_value/utils_test.py +++ b/tests/unit_tests/key_value/utils_test.py @@ -16,102 +16,45 @@ # under the License. from __future__ import annotations -import json -from typing import TYPE_CHECKING -from unittest.mock import patch from uuid import UUID -if TYPE_CHECKING: - from superset.key_value.models import KeyValueEntry - import pytest -from flask.ctx import AppContext - -from superset.key_value.types import Key - -RESOURCE = "my-resource" -UUID_KEY = "3e7a2ab8-bcaf-49b0-a5df-dfb432f291cc" -ID_KEY = "123" - - -@pytest.fixture -def key_value_entry(app_context: AppContext): - from superset.key_value.models import KeyValueEntry - - return KeyValueEntry( - id=int(ID_KEY), uuid=UUID(UUID_KEY), value=json.dumps({"foo": "bar"}), - ) - - -def test_parse_permalink_key_uuid_valid(app_context: AppContext) -> None: - from superset.key_value.utils import parse_permalink_key - - assert parse_permalink_key(UUID_KEY) == Key(id=None, uuid=UUID(UUID_KEY)) - - -def test_parse_permalink_key_id_invalid(app_context: AppContext) -> None: - from superset.key_value.utils import parse_permalink_key - - with pytest.raises(ValueError): - parse_permalink_key(ID_KEY) - - -@patch("superset.key_value.utils.current_app.config", {"PERMALINK_KEY_TYPE": "id"}) -def test_parse_permalink_key_id_valid(app_context: AppContext) -> None: - from superset.key_value.utils import parse_permalink_key - - assert parse_permalink_key(ID_KEY) == Key(id=int(ID_KEY), uuid=None) - - -@patch("superset.key_value.utils.current_app.config", {"PERMALINK_KEY_TYPE": "id"}) -def test_parse_permalink_key_uuid_invalid(app_context: AppContext) -> None: - from superset.key_value.utils import parse_permalink_key - with pytest.raises(ValueError): - parse_permalink_key(UUID_KEY) +from superset.key_value.exceptions import KeyValueParseKeyError +from superset.key_value.types import KeyValueResource +RESOURCE = KeyValueResource.APP +UUID_KEY = UUID("3e7a2ab8-bcaf-49b0-a5df-dfb432f291cc") +ID_KEY = 123 -def test_format_permalink_key_uuid(app_context: AppContext) -> None: - from superset.key_value.utils import format_permalink_key - assert format_permalink_key(Key(id=None, uuid=UUID(UUID_KEY))) == UUID_KEY - - -def test_format_permalink_key_id(app_context: AppContext) -> None: - from superset.key_value.utils import format_permalink_key - - assert format_permalink_key(Key(id=int(ID_KEY), uuid=None)) == ID_KEY - - -def test_extract_key_uuid( - app_context: AppContext, key_value_entry: KeyValueEntry, -) -> None: - from superset.key_value.utils import extract_key - - assert extract_key(key_value_entry, "id") == ID_KEY - - -def test_extract_key_id( - app_context: AppContext, key_value_entry: KeyValueEntry, -) -> None: - from superset.key_value.utils import extract_key - - assert extract_key(key_value_entry, "uuid") == UUID_KEY - - -def test_get_filter_uuid(app_context: AppContext,) -> None: +def test_get_filter_uuid() -> None: from superset.key_value.utils import get_filter - assert get_filter(resource=RESOURCE, key=UUID_KEY, key_type="uuid",) == { + assert get_filter(resource=RESOURCE, key=UUID_KEY) == { "resource": RESOURCE, - "uuid": UUID(UUID_KEY), + "uuid": UUID_KEY, } -def test_get_filter_id(app_context: AppContext,) -> None: +def test_get_filter_id() -> None: from superset.key_value.utils import get_filter - assert get_filter(resource=RESOURCE, key=ID_KEY, key_type="id",) == { + assert get_filter(resource=RESOURCE, key=ID_KEY) == { "resource": RESOURCE, - "id": int(ID_KEY), + "id": ID_KEY, } + + +def test_encode_permalink_id_valid() -> None: + from superset.key_value.utils import encode_permalink_key + + salt = "abc" + assert encode_permalink_key(1, salt) == "AyBn4lm9qG8" + + +def test_decode_permalink_id_invalid() -> None: + from superset.key_value.utils import decode_permalink_id + + with pytest.raises(KeyValueParseKeyError): + decode_permalink_id("foo", "bar") diff --git a/tests/unit_tests/migrations/__init__.py b/tests/unit_tests/migrations/__init__.py new file mode 100644 index 0000000000000..13a83393a9124 --- /dev/null +++ b/tests/unit_tests/migrations/__init__.py @@ -0,0 +1,16 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. diff --git a/tests/unit_tests/migrations/shared/__init__.py b/tests/unit_tests/migrations/shared/__init__.py new file mode 100644 index 0000000000000..13a83393a9124 --- /dev/null +++ b/tests/unit_tests/migrations/shared/__init__.py @@ -0,0 +1,16 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. diff --git a/tests/unit_tests/migrations/shared/utils_test.py b/tests/unit_tests/migrations/shared/utils_test.py new file mode 100644 index 0000000000000..cb5b2cbd0e82b --- /dev/null +++ b/tests/unit_tests/migrations/shared/utils_test.py @@ -0,0 +1,56 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# pylint: disable=import-outside-toplevel, unused-argument + +""" +Test the SIP-68 migration. +""" + +from pytest_mock import MockerFixture + +from superset.sql_parse import Table + + +def test_extract_table_references(mocker: MockerFixture, app_context: None) -> None: + """ + Test the ``extract_table_references`` helper function. + """ + from superset.migrations.shared.utils import extract_table_references + + assert extract_table_references("SELECT 1", "trino") == set() + assert extract_table_references("SELECT 1 FROM some_table", "trino") == { + Table(table="some_table", schema=None, catalog=None) + } + assert extract_table_references( + "SELECT 1 FROM some_catalog.some_schema.some_table", "trino" + ) == {Table(table="some_table", schema="some_schema", catalog="some_catalog")} + assert extract_table_references( + "SELECT * FROM some_table JOIN other_table ON some_table.id = other_table.id", + "trino", + ) == { + Table(table="some_table", schema=None, catalog=None), + Table(table="other_table", schema=None, catalog=None), + } + + # test falling back to sqlparse + logger = mocker.patch("superset.migrations.shared.utils.logger") + sql = "SELECT * FROM table UNION ALL SELECT * FROM other_table" + assert extract_table_references( + sql, + "trino", + ) == {Table(table="other_table", schema=None, catalog=None)} + logger.warning.assert_called_with("Unable to parse query with sqloxide: %s", sql) diff --git a/tests/unit_tests/pandas_postprocessing/test_contribution.py b/tests/unit_tests/pandas_postprocessing/test_contribution.py index a38551474770d..7eb34c4d13f7b 100644 --- a/tests/unit_tests/pandas_postprocessing/test_contribution.py +++ b/tests/unit_tests/pandas_postprocessing/test_contribution.py @@ -48,7 +48,8 @@ def test_contribution(): # cell contribution across row processed_df = contribution( - df, orientation=PostProcessingContributionOrientation.ROW, + df, + orientation=PostProcessingContributionOrientation.ROW, ) assert processed_df.columns.tolist() == [DTTM_ALIAS, "a", "b", "c"] assert_array_equal(processed_df["a"].tolist(), [0.5, 0.25, nan]) diff --git a/tests/unit_tests/pandas_postprocessing/test_cum.py b/tests/unit_tests/pandas_postprocessing/test_cum.py index 6cc5da2807ef2..17cd3c0efc8a4 100644 --- a/tests/unit_tests/pandas_postprocessing/test_cum.py +++ b/tests/unit_tests/pandas_postprocessing/test_cum.py @@ -31,33 +31,49 @@ def test_cum_should_not_side_effect(): _timeseries_df = timeseries_df.copy() pp.cum( - df=timeseries_df, columns={"y": "y2"}, operator="sum", + df=timeseries_df, + columns={"y": "y2"}, + operator="sum", ) assert _timeseries_df.equals(timeseries_df) def test_cum(): # create new column (cumsum) - post_df = pp.cum(df=timeseries_df, columns={"y": "y2"}, operator="sum",) + post_df = pp.cum( + df=timeseries_df, + columns={"y": "y2"}, + operator="sum", + ) assert post_df.columns.tolist() == ["label", "y", "y2"] assert series_to_list(post_df["label"]) == ["x", "y", "z", "q"] assert series_to_list(post_df["y"]) == [1.0, 2.0, 3.0, 4.0] assert series_to_list(post_df["y2"]) == [1.0, 3.0, 6.0, 10.0] # overwrite column (cumprod) - post_df = pp.cum(df=timeseries_df, columns={"y": "y"}, operator="prod",) + post_df = pp.cum( + df=timeseries_df, + columns={"y": "y"}, + operator="prod", + ) assert post_df.columns.tolist() == ["label", "y"] assert series_to_list(post_df["y"]) == [1.0, 2.0, 6.0, 24.0] # overwrite column (cummin) - post_df = pp.cum(df=timeseries_df, columns={"y": "y"}, operator="min",) + post_df = pp.cum( + df=timeseries_df, + columns={"y": "y"}, + operator="min", + ) assert post_df.columns.tolist() == ["label", "y"] assert series_to_list(post_df["y"]) == [1.0, 1.0, 1.0, 1.0] # invalid operator with pytest.raises(InvalidPostProcessingError): pp.cum( - df=timeseries_df, columns={"y": "y"}, operator="abc", + df=timeseries_df, + columns={"y": "y"}, + operator="abc", ) diff --git a/tests/unit_tests/pandas_postprocessing/test_diff.py b/tests/unit_tests/pandas_postprocessing/test_diff.py index a491d6ca2b0fb..c77195bbf6d71 100644 --- a/tests/unit_tests/pandas_postprocessing/test_diff.py +++ b/tests/unit_tests/pandas_postprocessing/test_diff.py @@ -41,7 +41,8 @@ def test_diff(): # invalid column reference with pytest.raises(InvalidPostProcessingError): diff( - df=timeseries_df, columns={"abc": "abc"}, + df=timeseries_df, + columns={"abc": "abc"}, ) # diff by columns diff --git a/tests/unit_tests/pandas_postprocessing/test_flatten.py b/tests/unit_tests/pandas_postprocessing/test_flatten.py index 01a180b2d511b..028d25e9ecdd0 100644 --- a/tests/unit_tests/pandas_postprocessing/test_flatten.py +++ b/tests/unit_tests/pandas_postprocessing/test_flatten.py @@ -21,7 +21,12 @@ def test_flat_should_not_change(): - df = pd.DataFrame(data={"foo": [1, 2, 3], "bar": [4, 5, 6],}) + df = pd.DataFrame( + data={ + "foo": [1, 2, 3], + "bar": [4, 5, 6], + } + ) assert pp.flatten(df).equals(df) @@ -40,7 +45,13 @@ def test_flat_should_flat_datetime_index(): df = pd.DataFrame(index=index, data={"foo": [1, 2, 3], "bar": [4, 5, 6]}) assert pp.flatten(df).equals( - pd.DataFrame({"__timestamp": index, "foo": [1, 2, 3], "bar": [4, 5, 6],}) + pd.DataFrame( + { + "__timestamp": index, + "foo": [1, 2, 3], + "bar": [4, 5, 6], + } + ) ) diff --git a/tests/unit_tests/pandas_postprocessing/test_pivot.py b/tests/unit_tests/pandas_postprocessing/test_pivot.py index e775df4e3f809..658cb4edcda86 100644 --- a/tests/unit_tests/pandas_postprocessing/test_pivot.py +++ b/tests/unit_tests/pandas_postprocessing/test_pivot.py @@ -34,37 +34,49 @@ def test_flatten_column_after_pivot(): """ # single aggregate cases assert ( - _flatten_column_after_pivot(aggregates=AGGREGATES_SINGLE, column="idx_nulls",) + _flatten_column_after_pivot( + aggregates=AGGREGATES_SINGLE, + column="idx_nulls", + ) == "idx_nulls" ) assert ( - _flatten_column_after_pivot(aggregates=AGGREGATES_SINGLE, column=1234,) + _flatten_column_after_pivot( + aggregates=AGGREGATES_SINGLE, + column=1234, + ) == "1234" ) assert ( _flatten_column_after_pivot( - aggregates=AGGREGATES_SINGLE, column=Timestamp("2020-09-29T00:00:00"), + aggregates=AGGREGATES_SINGLE, + column=Timestamp("2020-09-29T00:00:00"), ) == "2020-09-29 00:00:00" ) assert ( - _flatten_column_after_pivot(aggregates=AGGREGATES_SINGLE, column="idx_nulls",) + _flatten_column_after_pivot( + aggregates=AGGREGATES_SINGLE, + column="idx_nulls", + ) == "idx_nulls" ) assert ( _flatten_column_after_pivot( - aggregates=AGGREGATES_SINGLE, column=("idx_nulls", "col1"), + aggregates=AGGREGATES_SINGLE, + column=("idx_nulls", "col1"), ) == "col1" ) assert ( _flatten_column_after_pivot( - aggregates=AGGREGATES_SINGLE, column=("idx_nulls", "col1", 1234), + aggregates=AGGREGATES_SINGLE, + column=("idx_nulls", "col1", 1234), ) == "col1, 1234" ) @@ -72,7 +84,8 @@ def test_flatten_column_after_pivot(): # Multiple aggregate cases assert ( _flatten_column_after_pivot( - aggregates=AGGREGATES_MULTIPLE, column=("idx_nulls", "asc_idx", "col1"), + aggregates=AGGREGATES_MULTIPLE, + column=("idx_nulls", "asc_idx", "col1"), ) == "idx_nulls, asc_idx, col1" ) @@ -90,7 +103,11 @@ def test_pivot_without_columns(): """ Make sure pivot without columns returns correct DataFrame """ - df = pivot(df=categories_df, index=["name"], aggregates=AGGREGATES_SINGLE,) + df = pivot( + df=categories_df, + index=["name"], + aggregates=AGGREGATES_SINGLE, + ) assert df.columns.tolist() == ["name", "idx_nulls"] assert len(df) == 101 assert df.sum()[1] == 1050 @@ -235,7 +252,10 @@ def test_pivot_eliminate_cartesian_product_columns(): df=mock_df, index=["dttm"], columns=["a", "b"], - aggregates={"metric": {"operator": "mean"}, "metric2": {"operator": "mean"},}, + aggregates={ + "metric": {"operator": "mean"}, + "metric2": {"operator": "mean"}, + }, drop_missing_columns=False, ) assert list(df.columns) == [ diff --git a/tests/unit_tests/pandas_postprocessing/test_prophet.py b/tests/unit_tests/pandas_postprocessing/test_prophet.py index f341a5e250735..e4f3ed8cfc36d 100644 --- a/tests/unit_tests/pandas_postprocessing/test_prophet.py +++ b/tests/unit_tests/pandas_postprocessing/test_prophet.py @@ -84,31 +84,46 @@ def test_prophet_missing_temporal_column(): with pytest.raises(InvalidPostProcessingError): prophet( - df=df, time_grain="P1M", periods=3, confidence_interval=0.9, + df=df, + time_grain="P1M", + periods=3, + confidence_interval=0.9, ) def test_prophet_incorrect_confidence_interval(): with pytest.raises(InvalidPostProcessingError): prophet( - df=prophet_df, time_grain="P1M", periods=3, confidence_interval=0.0, + df=prophet_df, + time_grain="P1M", + periods=3, + confidence_interval=0.0, ) with pytest.raises(InvalidPostProcessingError): prophet( - df=prophet_df, time_grain="P1M", periods=3, confidence_interval=1.0, + df=prophet_df, + time_grain="P1M", + periods=3, + confidence_interval=1.0, ) def test_prophet_incorrect_periods(): with pytest.raises(InvalidPostProcessingError): prophet( - df=prophet_df, time_grain="P1M", periods=-1, confidence_interval=0.8, + df=prophet_df, + time_grain="P1M", + periods=-1, + confidence_interval=0.8, ) def test_prophet_incorrect_time_grain(): with pytest.raises(InvalidPostProcessingError): prophet( - df=prophet_df, time_grain="yearly", periods=10, confidence_interval=0.8, + df=prophet_df, + time_grain="yearly", + periods=10, + confidence_interval=0.8, ) diff --git a/tests/unit_tests/pandas_postprocessing/test_resample.py b/tests/unit_tests/pandas_postprocessing/test_resample.py index bd3a36e591648..9f1aaef3e62f6 100644 --- a/tests/unit_tests/pandas_postprocessing/test_resample.py +++ b/tests/unit_tests/pandas_postprocessing/test_resample.py @@ -14,8 +14,10 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. +import numpy as np import pandas as pd import pytest +from pandas import to_datetime from superset.exceptions import InvalidPostProcessingError from superset.utils import pandas_postprocessing as pp @@ -105,7 +107,9 @@ def test_resample_after_pivot(): df=df, index=["__timestamp"], columns=["city"], - aggregates={"val": {"operator": "sum"},}, + aggregates={ + "val": {"operator": "sum"}, + }, flatten_columns=False, reset_index=False, ) @@ -116,7 +120,12 @@ def test_resample_after_pivot(): 2022-01-11 3.0 2.0 1.0 2022-01-13 6.0 5.0 4.0 """ - resample_df = pp.resample(df=pivot_df, rule="1D", method="asfreq", fill_value=0,) + resample_df = pp.resample( + df=pivot_df, + rule="1D", + method="asfreq", + fill_value=0, + ) """ val city Chicago LA NY @@ -149,5 +158,53 @@ def test_resample_after_pivot(): def test_resample_should_raise_ex(): with pytest.raises(InvalidPostProcessingError): pp.resample( - df=categories_df, rule="1D", method="asfreq", + df=categories_df, + rule="1D", + method="asfreq", + ) + + with pytest.raises(InvalidPostProcessingError): + pp.resample( + df=timeseries_df, + rule="1D", + method="foobar", ) + + +def test_resample_linear(): + df = pd.DataFrame( + index=to_datetime(["2019-01-01", "2019-01-05", "2019-01-08"]), + data={"label": ["a", "e", "j"], "y": [1.0, 5.0, 8.0]}, + ) + post_df = pp.resample(df=df, rule="1D", method="linear") + """ + label y + 2019-01-01 a 1.0 + 2019-01-02 NaN 2.0 + 2019-01-03 NaN 3.0 + 2019-01-04 NaN 4.0 + 2019-01-05 e 5.0 + 2019-01-06 NaN 6.0 + 2019-01-07 NaN 7.0 + 2019-01-08 j 8.0 + """ + assert post_df.equals( + pd.DataFrame( + index=pd.to_datetime( + [ + "2019-01-01", + "2019-01-02", + "2019-01-03", + "2019-01-04", + "2019-01-05", + "2019-01-06", + "2019-01-07", + "2019-01-08", + ] + ), + data={ + "label": ["a", np.NaN, np.NaN, np.NaN, "e", np.NaN, np.NaN, "j"], + "y": [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0], + }, + ) + ) diff --git a/tests/unit_tests/pandas_postprocessing/test_rolling.py b/tests/unit_tests/pandas_postprocessing/test_rolling.py index 616e4f5bd02d8..4d4c4341b895a 100644 --- a/tests/unit_tests/pandas_postprocessing/test_rolling.py +++ b/tests/unit_tests/pandas_postprocessing/test_rolling.py @@ -90,7 +90,10 @@ def test_rolling(): # incorrect rolling type with pytest.raises(InvalidPostProcessingError): pp.rolling( - df=timeseries_df, columns={"y": "y"}, rolling_type="abc", window=2, + df=timeseries_df, + columns={"y": "y"}, + rolling_type="abc", + window=2, ) # incorrect rolling type options @@ -191,7 +194,10 @@ def test_rolling_after_pivot_with_multiple_metrics(): """ rolling_df = pp.rolling( df=pivot_df, - columns={"count_metric": "count_metric", "sum_metric": "sum_metric",}, + columns={ + "count_metric": "count_metric", + "sum_metric": "sum_metric", + }, rolling_type="sum", window=2, min_periods=0, diff --git a/tests/unit_tests/tables/test_models.py b/tests/unit_tests/tables/test_models.py index eb1f5f4611248..56ca5ba82fbfc 100644 --- a/tests/unit_tests/tables/test_models.py +++ b/tests/unit_tests/tables/test_models.py @@ -36,7 +36,13 @@ def test_table_model(app_context: None, session: Session) -> None: schema="my_schema", catalog="my_catalog", database=Database(database_name="my_database", sqlalchemy_uri="test://"), - columns=[Column(name="ds", type="TIMESTAMP", expression="ds",)], + columns=[ + Column( + name="ds", + type="TIMESTAMP", + expression="ds", + ) + ], ) session.add(table) session.flush()