From 8ef9a1d3986ec90f89f8f9d859a11a943636cf97 Mon Sep 17 00:00:00 2001 From: Steven Hao Date: Wed, 19 Jan 2022 10:17:27 -0800 Subject: [PATCH 001/274] Fix: make plotly charts have unbounded hoverlabel name length (#5661) --- .../chart/plotly/fixtures/prepareLayout/box-single-axis.json | 3 +++ .../plotly/fixtures/prepareLayout/box-with-second-axis.json | 3 +++ .../plotly/fixtures/prepareLayout/default-single-axis.json | 3 +++ .../fixtures/prepareLayout/default-with-second-axis.json | 3 +++ .../plotly/fixtures/prepareLayout/default-with-stacking.json | 3 +++ .../plotly/fixtures/prepareLayout/default-without-legend.json | 3 +++ .../plotly/fixtures/prepareLayout/pie-multiple-series.json | 3 +++ .../plotly/fixtures/prepareLayout/pie-without-annotations.json | 3 +++ .../chart/plotly/fixtures/prepareLayout/pie.json | 3 +++ viz-lib/src/visualizations/chart/plotly/prepareLayout.ts | 3 +++ 10 files changed, 30 insertions(+) diff --git a/viz-lib/src/visualizations/chart/plotly/fixtures/prepareLayout/box-single-axis.json b/viz-lib/src/visualizations/chart/plotly/fixtures/prepareLayout/box-single-axis.json index 7332ce9886..447faadcf7 100644 --- a/viz-lib/src/visualizations/chart/plotly/fixtures/prepareLayout/box-single-axis.json +++ b/viz-lib/src/visualizations/chart/plotly/fixtures/prepareLayout/box-single-axis.json @@ -35,6 +35,9 @@ "type": "linear", "autorange": true, "range": null + }, + "hoverlabel": { + "namelength": -1 } } } diff --git a/viz-lib/src/visualizations/chart/plotly/fixtures/prepareLayout/box-with-second-axis.json b/viz-lib/src/visualizations/chart/plotly/fixtures/prepareLayout/box-with-second-axis.json index c54a771f22..bea2fb311f 100644 --- a/viz-lib/src/visualizations/chart/plotly/fixtures/prepareLayout/box-with-second-axis.json +++ b/viz-lib/src/visualizations/chart/plotly/fixtures/prepareLayout/box-with-second-axis.json @@ -47,6 +47,9 @@ "range": null, "overlaying": "y", "side": "right" + }, + "hoverlabel": { + "namelength": -1 } } } diff --git a/viz-lib/src/visualizations/chart/plotly/fixtures/prepareLayout/default-single-axis.json b/viz-lib/src/visualizations/chart/plotly/fixtures/prepareLayout/default-single-axis.json index 3cd303b58f..285a8b0e6c 100644 --- a/viz-lib/src/visualizations/chart/plotly/fixtures/prepareLayout/default-single-axis.json +++ b/viz-lib/src/visualizations/chart/plotly/fixtures/prepareLayout/default-single-axis.json @@ -33,6 +33,9 @@ "type": "linear", "autorange": true, "range": null + }, + "hoverlabel": { + "namelength": -1 } } } diff --git a/viz-lib/src/visualizations/chart/plotly/fixtures/prepareLayout/default-with-second-axis.json b/viz-lib/src/visualizations/chart/plotly/fixtures/prepareLayout/default-with-second-axis.json index 3e9379cfdc..fbb59fec37 100644 --- a/viz-lib/src/visualizations/chart/plotly/fixtures/prepareLayout/default-with-second-axis.json +++ b/viz-lib/src/visualizations/chart/plotly/fixtures/prepareLayout/default-with-second-axis.json @@ -45,6 +45,9 @@ "range": null, "overlaying": "y", "side": "right" + }, + "hoverlabel": { + "namelength": -1 } } } diff --git a/viz-lib/src/visualizations/chart/plotly/fixtures/prepareLayout/default-with-stacking.json b/viz-lib/src/visualizations/chart/plotly/fixtures/prepareLayout/default-with-stacking.json index beef4f243f..a974ebdb5a 100644 --- a/viz-lib/src/visualizations/chart/plotly/fixtures/prepareLayout/default-with-stacking.json +++ b/viz-lib/src/visualizations/chart/plotly/fixtures/prepareLayout/default-with-stacking.json @@ -32,6 +32,9 @@ "type": "linear", "autorange": true, "range": null + }, + "hoverlabel": { + "namelength": -1 } } } diff --git a/viz-lib/src/visualizations/chart/plotly/fixtures/prepareLayout/default-without-legend.json b/viz-lib/src/visualizations/chart/plotly/fixtures/prepareLayout/default-without-legend.json index 529e216820..553cf090c8 100644 --- a/viz-lib/src/visualizations/chart/plotly/fixtures/prepareLayout/default-without-legend.json +++ b/viz-lib/src/visualizations/chart/plotly/fixtures/prepareLayout/default-without-legend.json @@ -31,6 +31,9 @@ "type": "linear", "autorange": true, "range": null + }, + "hoverlabel": { + "namelength": -1 } } } diff --git a/viz-lib/src/visualizations/chart/plotly/fixtures/prepareLayout/pie-multiple-series.json b/viz-lib/src/visualizations/chart/plotly/fixtures/prepareLayout/pie-multiple-series.json index 7b8b452510..7f3735c433 100644 --- a/viz-lib/src/visualizations/chart/plotly/fixtures/prepareLayout/pie-multiple-series.json +++ b/viz-lib/src/visualizations/chart/plotly/fixtures/prepareLayout/pie-multiple-series.json @@ -19,6 +19,9 @@ "legend": { "traceorder": "normal" }, + "hoverlabel": { + "namelength": -1 + }, "annotations": [ { "x": 0.24, diff --git a/viz-lib/src/visualizations/chart/plotly/fixtures/prepareLayout/pie-without-annotations.json b/viz-lib/src/visualizations/chart/plotly/fixtures/prepareLayout/pie-without-annotations.json index 35d5e2550f..3b2ca9f09a 100644 --- a/viz-lib/src/visualizations/chart/plotly/fixtures/prepareLayout/pie-without-annotations.json +++ b/viz-lib/src/visualizations/chart/plotly/fixtures/prepareLayout/pie-without-annotations.json @@ -19,6 +19,9 @@ "legend": { "traceorder": "normal" }, + "hoverlabel": { + "namelength": -1 + }, "annotations": [] } } diff --git a/viz-lib/src/visualizations/chart/plotly/fixtures/prepareLayout/pie.json b/viz-lib/src/visualizations/chart/plotly/fixtures/prepareLayout/pie.json index cc42d35d49..a4865bbc13 100644 --- a/viz-lib/src/visualizations/chart/plotly/fixtures/prepareLayout/pie.json +++ b/viz-lib/src/visualizations/chart/plotly/fixtures/prepareLayout/pie.json @@ -19,6 +19,9 @@ "legend": { "traceorder": "normal" }, + "hoverlabel": { + "namelength": -1 + }, "annotations": [ { "x": 0.49, diff --git a/viz-lib/src/visualizations/chart/plotly/prepareLayout.ts b/viz-lib/src/visualizations/chart/plotly/prepareLayout.ts index 9be2d7436d..f79912a2fd 100644 --- a/viz-lib/src/visualizations/chart/plotly/prepareLayout.ts +++ b/viz-lib/src/visualizations/chart/plotly/prepareLayout.ts @@ -117,6 +117,9 @@ export default function prepareLayout(element: any, options: any, data: any) { legend: { traceorder: options.legend.traceorder, }, + hoverlabel: { + namelength: -1, + }, }; switch (options.globalSeriesType) { From 4fddff104a050a5fe3511d9c9d863aec08bae8df Mon Sep 17 00:00:00 2001 From: be30c9 <92396435+be30c9@users.noreply.github.com> Date: Wed, 19 Jan 2022 10:36:49 -0800 Subject: [PATCH 002/274] SAML auth: allow custom service provider settings from environment variable (#5621) --- redash/authentication/saml_auth.py | 5 +++++ redash/settings/organization.py | 2 ++ 2 files changed, 7 insertions(+) diff --git a/redash/authentication/saml_auth.py b/redash/authentication/saml_auth.py index c8632e0e52..3b56faff66 100644 --- a/redash/authentication/saml_auth.py +++ b/redash/authentication/saml_auth.py @@ -29,6 +29,7 @@ def get_saml_client(org): sso_url = org.get_setting("auth_saml_sso_url") x509_cert = org.get_setting("auth_saml_x509_cert") metadata_url = org.get_setting("auth_saml_metadata_url") + sp_settings = org.get_setting("auth_saml_sp_settings") if settings.SAML_SCHEME_OVERRIDE: acs_url = url_for( @@ -88,6 +89,10 @@ def get_saml_client(org): if acs_url is not None and acs_url != "": saml_settings["entityid"] = acs_url + if sp_settings: + import json + saml_settings["service"]["sp"].update(json.loads(sp_settings)) + sp_config = Saml2Config() sp_config.load(saml_settings) sp_config.allow_unknown_attributes = True diff --git a/redash/settings/organization.py b/redash/settings/organization.py index eb82a94c6b..e2f0694f48 100644 --- a/redash/settings/organization.py +++ b/redash/settings/organization.py @@ -20,6 +20,7 @@ SAML_NAMEID_FORMAT = os.environ.get("REDASH_SAML_NAMEID_FORMAT", "") SAML_SSO_URL = os.environ.get("REDASH_SAML_SSO_URL", "") SAML_X509_CERT = os.environ.get("REDASH_SAML_X509_CERT", "") +SAML_SP_SETTINGS = os.environ.get("REDASH_SAML_SP_SETTINGS", "") SAML_LOGIN_ENABLED = SAML_SSO_URL != "" and SAML_METADATA_URL != "" DATE_FORMAT = os.environ.get("REDASH_DATE_FORMAT", "DD/MM/YY") @@ -61,6 +62,7 @@ "auth_saml_nameid_format": SAML_NAMEID_FORMAT, "auth_saml_sso_url": SAML_SSO_URL, "auth_saml_x509_cert": SAML_X509_CERT, + "auth_saml_sp_settings": SAML_SP_SETTINGS, "date_format": DATE_FORMAT, "time_format": TIME_FORMAT, "integer_format": INTEGER_FORMAT, From e28e4227bf11b0688dc9646579647455fade419f Mon Sep 17 00:00:00 2001 From: Vladislav Denisov Date: Wed, 19 Jan 2022 22:53:27 +0300 Subject: [PATCH 003/274] Python query runner: add function that transforms pandas dataframe to result format (#5629) --- redash/query_runner/python.py | 53 +++++++++++++++++++++++++++++++++-- requirements_all_ds.txt | 3 +- 2 files changed, 52 insertions(+), 4 deletions(-) diff --git a/redash/query_runner/python.py b/redash/query_runner/python.py index ab3f25a53d..544cd593d7 100644 --- a/redash/query_runner/python.py +++ b/redash/query_runner/python.py @@ -9,6 +9,14 @@ from RestrictedPython import compile_restricted from RestrictedPython.Guards import safe_builtins, guarded_iter_unpack_sequence, guarded_unpack_sequence +try: + import pandas as pd + import numpy as np + pandas_installed = True +except ImportError: + pandas_installed = False + +from RestrictedPython.transformer import IOPERATOR_TO_STR logger = logging.getLogger(__name__) @@ -145,6 +153,14 @@ def custom_get_item(obj, key): def custom_get_iter(obj): return iter(obj) + @staticmethod + def custom_inplacevar(op, x, y): + if op not in IOPERATOR_TO_STR.values(): + raise Exception("'{} is not supported inplace variable'".format(op)) + glb = {"x": x, "y": y} + exec("x" + op + "y", glb) + return glb["x"] + @staticmethod def add_result_column(result, column_name, friendly_name, column_type): """Helper function to add columns inside a Python script running in Redash in an easier way @@ -179,7 +195,7 @@ def add_result_row(result, values): result["rows"].append(values) @staticmethod - def execute_query(data_source_name_or_id, query): + def execute_query(data_source_name_or_id, query, result_type=None): """Run query from specific data source. Parameters: @@ -200,7 +216,13 @@ def execute_query(data_source_name_or_id, query): raise Exception(error) # TODO: allow avoiding the JSON dumps/loads in same process - return json_loads(data) + query_result = json_loads(data) + + if result_type == "dataframe" and pandas_installed: + return pd.DataFrame(query_result["rows"]) + + return query_result + @staticmethod def get_source_schema(data_source_name_or_id): @@ -239,6 +261,29 @@ def get_query_result(query_id): return query.latest_query_data.data + def dataframe_to_result(self, result, df): + + result["rows"] = df.to_dict("records") + + for column_name, column_type in df.dtypes.items(): + if column_type == np.bool: + redash_type = TYPE_BOOLEAN + elif column_type == np.inexact: + redash_type = TYPE_FLOAT + elif column_type == np.integer: + redash_type = TYPE_INTEGER + elif column_type in (np.datetime64, np.dtype(' 10: + redash_type = TYPE_DATETIME + else: + redash_type = TYPE_DATE + else: + redash_type = TYPE_STRING + + self.add_result_column(result, column_name, column_name, redash_type) + def get_current_user(self): return self._current_user.to_dict() @@ -265,6 +310,7 @@ def run_query(self, query, user): builtins["_print_"] = self._custom_print builtins["_unpack_sequence_"] = guarded_unpack_sequence builtins["_iter_unpack_sequence_"] = guarded_iter_unpack_sequence + builtins["_inplacevar_"] = self.custom_inplacevar # Layer in our own additional set of builtins that we have # considered safe. @@ -277,6 +323,8 @@ def run_query(self, query, user): restricted_globals["get_current_user"] = self.get_current_user restricted_globals["execute_query"] = self.execute_query restricted_globals["add_result_column"] = self.add_result_column + if pandas_installed: + restricted_globals["dataframe_to_result"] = self.dataframe_to_result restricted_globals["add_result_row"] = self.add_result_row restricted_globals["disable_print_log"] = self._custom_print.disable restricted_globals["enable_print_log"] = self._custom_print.enable @@ -304,5 +352,4 @@ def run_query(self, query, user): return json_data, error - register(Python) diff --git a/requirements_all_ds.txt b/requirements_all_ds.txt index 9a3fcebbaa..fa5a98b183 100644 --- a/requirements_all_ds.txt +++ b/requirements_all_ds.txt @@ -40,4 +40,5 @@ trino~=0.305 cmem-cmempy==21.2.3 xlrd==2.0.1 openpyxl==3.0.7 -firebolt-sqlalchemy \ No newline at end of file +firebolt-sqlalchemy +pandas==1.3.4 From f77f1b5ca155313d148edcfdbacddeeb5a0c7574 Mon Sep 17 00:00:00 2001 From: Tin C Date: Fri, 21 Jan 2022 02:03:04 +0800 Subject: [PATCH 004/274] Fix: auto limit breaks for Oracle queries (#5181) Moves auto limit primitives to the base SQL query runner --- redash/query_runner/__init__.py | 88 ++++++++++++++++++- redash/query_runner/databricks.py | 63 +------------ redash/query_runner/oracle.py | 2 + redash/utils/__init__.py | 30 ------- .../query_runner/test_basesql_queryrunner.py | 32 +++++++ tests/query_runner/test_databricks.py | 2 +- tests/query_runner/test_oracle.py | 30 +++++++ tests/utils/test_query_limit.py | 41 --------- 8 files changed, 150 insertions(+), 138 deletions(-) create mode 100644 tests/query_runner/test_oracle.py delete mode 100644 tests/utils/test_query_limit.py diff --git a/redash/query_runner/__init__.py b/redash/query_runner/__init__.py index 6f8ef389b1..d5b7532129 100644 --- a/redash/query_runner/__init__.py +++ b/redash/query_runner/__init__.py @@ -10,12 +10,14 @@ from six import text_type from sshtunnel import open_tunnel from redash import settings, utils -from redash.utils import json_loads, query_is_select_no_limit, add_limit_to_query +from redash.utils import json_loads from rq.timeouts import JobTimeoutException from redash.utils.requests_session import requests_or_advocate, requests_session, UnacceptableAddressException +import sqlparse + logger = logging.getLogger(__name__) __all__ = [ @@ -49,6 +51,61 @@ [TYPE_INTEGER, TYPE_FLOAT, TYPE_BOOLEAN, TYPE_STRING, TYPE_DATETIME, TYPE_DATE] ) +def split_sql_statements(query): + def strip_trailing_comments(stmt): + idx = len(stmt.tokens) - 1 + while idx >= 0: + tok = stmt.tokens[idx] + if tok.is_whitespace or sqlparse.utils.imt(tok, i=sqlparse.sql.Comment, t=sqlparse.tokens.Comment): + stmt.tokens[idx] = sqlparse.sql.Token(sqlparse.tokens.Whitespace, ' ') + else: + break + idx -= 1 + return stmt + + def strip_trailing_semicolon(stmt): + idx = len(stmt.tokens) - 1 + while idx >= 0: + tok = stmt.tokens[idx] + # we expect that trailing comments already are removed + if not tok.is_whitespace: + if sqlparse.utils.imt(tok, t=sqlparse.tokens.Punctuation) and tok.value == ";": + stmt.tokens[idx] = sqlparse.sql.Token(sqlparse.tokens.Whitespace, ' ') + break + idx -= 1 + return stmt + + def is_empty_statement(stmt): + strip_comments = sqlparse.filters.StripCommentsFilter() + + # copy statement object. `copy.deepcopy` fails to do this, so just re-parse it + st = sqlparse.engine.FilterStack() + stmt = next(st.run(sqlparse.text_type(stmt))) + + sql = sqlparse.text_type(strip_comments.process(stmt)) + return sql.strip() == "" + + stack = sqlparse.engine.FilterStack() + + result = [stmt for stmt in stack.run(query)] + result = [strip_trailing_comments(stmt) for stmt in result] + result = [strip_trailing_semicolon(stmt) for stmt in result] + result = [sqlparse.text_type(stmt).strip() for stmt in result if not is_empty_statement(stmt)] + + if len(result) > 0: + return result + + return [""] # if all statements were empty - return a single empty statement + + +def combine_sql_statements(queries): + return ";\n".join(queries) + +def find_last_keyword_idx(parsed_query): + for i in reversed(range(len(parsed_query.tokens))): + if parsed_query.tokens[i].ttype in sqlparse.tokens.Keyword: + return i + return -1 class InterruptException(Exception): pass @@ -62,6 +119,8 @@ class BaseQueryRunner(object): deprecated = False should_annotate_query = True noop_query = None + limit_query = " LIMIT 1000" + limit_keywords = [ "LIMIT", "OFFSET"] def __init__(self, configuration): self.syntax = "sql" @@ -224,14 +283,35 @@ def _get_tables_stats(self, tables_dict): def supports_auto_limit(self): return True + def query_is_select_no_limit(self, query): + parsed_query = sqlparse.parse(query)[0] + last_keyword_idx = find_last_keyword_idx(parsed_query) + # Either invalid query or query that is not select + if last_keyword_idx == -1 or parsed_query.tokens[0].value.upper() != "SELECT": + return False + + no_limit = parsed_query.tokens[last_keyword_idx].value.upper() not in self.limit_keywords + + return no_limit + + def add_limit_to_query(self, query): + parsed_query = sqlparse.parse(query)[0] + limit_tokens = sqlparse.parse(self.limit_query)[0].tokens + length = len(parsed_query.tokens) + if parsed_query.tokens[length - 1].ttype == sqlparse.tokens.Punctuation: + parsed_query.tokens[length - 1:length - 1] = limit_tokens + else: + parsed_query.tokens += limit_tokens + return str(parsed_query) + + def apply_auto_limit(self, query_text, should_apply_auto_limit): if should_apply_auto_limit: - from redash.query_runner.databricks import split_sql_statements, combine_sql_statements queries = split_sql_statements(query_text) # we only check for last one in the list because it is the one that we show result last_query = queries[-1] - if query_is_select_no_limit(last_query): - queries[-1] = add_limit_to_query(last_query) + if self.query_is_select_no_limit(last_query): + queries[-1] = self.add_limit_to_query(last_query) return combine_sql_statements(queries) else: return query_text diff --git a/redash/query_runner/databricks.py b/redash/query_runner/databricks.py index 5cc98ce17f..5728968869 100644 --- a/redash/query_runner/databricks.py +++ b/redash/query_runner/databricks.py @@ -15,6 +15,7 @@ ) from redash.settings import cast_int_or_default from redash.utils import json_dumps, json_loads +from redash.query_runner import split_sql_statements from redash import __version__, settings, statsd_client try: @@ -41,68 +42,6 @@ def _build_odbc_connection_string(**kwargs): return ";".join([f"{k}={v}" for k, v in kwargs.items()]) -def split_sql_statements(query): - def strip_trailing_comments(stmt): - idx = len(stmt.tokens) - 1 - while idx >= 0: - tok = stmt.tokens[idx] - if tok.is_whitespace or sqlparse.utils.imt( - tok, i=sqlparse.sql.Comment, t=sqlparse.tokens.Comment - ): - stmt.tokens[idx] = sqlparse.sql.Token(sqlparse.tokens.Whitespace, " ") - else: - break - idx -= 1 - return stmt - - def strip_trailing_semicolon(stmt): - idx = len(stmt.tokens) - 1 - while idx >= 0: - tok = stmt.tokens[idx] - # we expect that trailing comments already are removed - if not tok.is_whitespace: - if ( - sqlparse.utils.imt(tok, t=sqlparse.tokens.Punctuation) - and tok.value == ";" - ): - stmt.tokens[idx] = sqlparse.sql.Token( - sqlparse.tokens.Whitespace, " " - ) - break - idx -= 1 - return stmt - - def is_empty_statement(stmt): - strip_comments = sqlparse.filters.StripCommentsFilter() - - # copy statement object. `copy.deepcopy` fails to do this, so just re-parse it - st = sqlparse.engine.FilterStack() - stmt = next(st.run(sqlparse.text_type(stmt))) - - sql = sqlparse.text_type(strip_comments.process(stmt)) - return sql.strip() == "" - - stack = sqlparse.engine.FilterStack() - - result = [stmt for stmt in stack.run(query)] - result = [strip_trailing_comments(stmt) for stmt in result] - result = [strip_trailing_semicolon(stmt) for stmt in result] - result = [ - sqlparse.text_type(stmt).strip() - for stmt in result - if not is_empty_statement(stmt) - ] - - if len(result) > 0: - return result - - return [""] # if all statements were empty - return a single empty statement - - -def combine_sql_statements(queries): - return ";\n".join(queries) - - class Databricks(BaseSQLQueryRunner): noop_query = "SELECT 1" should_annotate_query = False diff --git a/redash/query_runner/oracle.py b/redash/query_runner/oracle.py index cdd5be80e6..b134055a5d 100644 --- a/redash/query_runner/oracle.py +++ b/redash/query_runner/oracle.py @@ -33,6 +33,8 @@ class Oracle(BaseSQLQueryRunner): should_annotate_query = False noop_query = "SELECT 1 FROM dual" + limit_query = " FETCH NEXT 1000 ROWS ONLY" + limit_keywords = [ "ROW", "ROWS", "ONLY", "TIES"] @classmethod def get_col_type(cls, col_type, scale): diff --git a/redash/utils/__init__.py b/redash/utils/__init__.py index d63efc001b..26eae7dfa1 100644 --- a/redash/utils/__init__.py +++ b/redash/utils/__init__.py @@ -212,33 +212,3 @@ def render_template(path, context): function decorated with the `context_processor` decorator, which is not explicitly required for rendering purposes. """ return current_app.jinja_env.get_template(path).render(**context) - - -def query_is_select_no_limit(query): - parsed_query = sqlparse.parse(query)[0] - last_keyword_idx = find_last_keyword_idx(parsed_query) - # Either invalid query or query that is not select - if last_keyword_idx == -1 or parsed_query.tokens[0].value.upper() != "SELECT": - return False - - no_limit = parsed_query.tokens[last_keyword_idx].value.upper() != "LIMIT" \ - and parsed_query.tokens[last_keyword_idx].value.upper() != "OFFSET" - return no_limit - - -def find_last_keyword_idx(parsed_query): - for i in reversed(range(len(parsed_query.tokens))): - if parsed_query.tokens[i].ttype in sqlparse.tokens.Keyword: - return i - return -1 - - -def add_limit_to_query(query): - parsed_query = sqlparse.parse(query)[0] - limit_tokens = sqlparse.parse(" LIMIT 1000")[0].tokens - length = len(parsed_query.tokens) - if parsed_query.tokens[length - 1].ttype == sqlparse.tokens.Punctuation: - parsed_query.tokens[length - 1:length - 1] = limit_tokens - else: - parsed_query.tokens += limit_tokens - return str(parsed_query) diff --git a/tests/query_runner/test_basesql_queryrunner.py b/tests/query_runner/test_basesql_queryrunner.py index 1cb1485ae9..01957b330d 100644 --- a/tests/query_runner/test_basesql_queryrunner.py +++ b/tests/query_runner/test_basesql_queryrunner.py @@ -9,6 +9,38 @@ class TestBaseSQLQueryRunner(unittest.TestCase): def setUp(self): self.query_runner = BaseSQLQueryRunner({}) + def test_check_query_limit_no_limit(self): + query = "SELECT *" + self.assertEqual(True, self.query_runner.query_is_select_no_limit(query)) + + def test_check_query_limit_non_select(self): + query = "Create Table (PersonID INT)" + self.assertEqual(False, self.query_runner.query_is_select_no_limit(query)) + + def test_check_query_limit_invalid_1(self): + query = "OFFSET 5" + self.assertEqual(False, self.query_runner.query_is_select_no_limit(query)) + + def test_check_query_limit_invalid_2(self): + query = "TABLE A FROM TABLE B" + self.assertEqual(False, self.query_runner.query_is_select_no_limit(query)) + + def test_check_query_with_limit(self): + query = "SELECT * LIMIT 5" + self.assertEqual(False, self.query_runner.query_is_select_no_limit(query)) + + def test_check_query_with_offset(self): + query = "SELECT * LIMIT 5 OFFSET 3" + self.assertEqual(False, self.query_runner.query_is_select_no_limit(query)) + + def test_add_limit_query_no_limit(self): + query = "SELECT *" + self.assertEqual("SELECT * LIMIT 1000", self.query_runner.add_limit_to_query(query)) + + def test_add_limit_query_with_punc(self): + query = "SELECT *;" + self.assertEqual("SELECT * LIMIT 1000;", self.query_runner.add_limit_to_query(query)) + def test_apply_auto_limit_origin_no_limit_1(self): origin_query_text = "SELECT 2" query_text = self.query_runner.apply_auto_limit(origin_query_text, True) diff --git a/tests/query_runner/test_databricks.py b/tests/query_runner/test_databricks.py index 2981b23a80..4c5c3836fa 100644 --- a/tests/query_runner/test_databricks.py +++ b/tests/query_runner/test_databricks.py @@ -1,5 +1,5 @@ from unittest import TestCase -from redash.query_runner.databricks import split_sql_statements +from redash.query_runner import split_sql_statements class TestSplitMultipleSQLStatements(TestCase): diff --git a/tests/query_runner/test_oracle.py b/tests/query_runner/test_oracle.py new file mode 100644 index 0000000000..e7669ee26f --- /dev/null +++ b/tests/query_runner/test_oracle.py @@ -0,0 +1,30 @@ +import unittest + +from redash.query_runner.oracle import Oracle + +class TestOracle(unittest.TestCase): + + def setUp(self): + self.query_runner = Oracle({}) + + def test_add_limit_query_no_limit(self): + query = "SELECT *" + self.assertEqual("SELECT * FETCH NEXT 1000 ROWS ONLY", self.query_runner.add_limit_to_query(query)) + + def test_add_limit_query_with_punc(self): + query = "SELECT *;" + self.assertEqual("SELECT * FETCH NEXT 1000 ROWS ONLY;", self.query_runner.add_limit_to_query(query)) + + def test_apply_auto_limit_origin_no_limit_1(self): + origin_query_text = "SELECT 2" + query_text = self.query_runner.apply_auto_limit(origin_query_text, True) + self.assertEqual("SELECT 2 FETCH NEXT 1000 ROWS ONLY", query_text) + + def test_apply_auto_limit_origin_have_limit_1(self): + origin_query_text = "SELECT 2 LIMIT 100 FETCH NEXT 1000 ROWS ONLY" + query_text = self.query_runner.apply_auto_limit(origin_query_text, True) + self.assertEqual(origin_query_text, query_text) + + +if __name__ == '__main__': + unittest.main() \ No newline at end of file diff --git a/tests/utils/test_query_limit.py b/tests/utils/test_query_limit.py deleted file mode 100644 index 089d5592f1..0000000000 --- a/tests/utils/test_query_limit.py +++ /dev/null @@ -1,41 +0,0 @@ -import unittest - -from redash.utils import query_is_select_no_limit, add_limit_to_query - - -class TestQueryLimit(unittest.TestCase): - def test_check_query_limit_no_limit(self): - query = "SELECT *" - self.assertEqual(True, query_is_select_no_limit(query)) - - def test_check_query_limit_non_select(self): - query = "Create Table (PersonID INT)" - self.assertEqual(False, query_is_select_no_limit(query)) - - def test_check_query_limit_invalid_1(self): - query = "OFFSET 5" - self.assertEqual(False, query_is_select_no_limit(query)) - - def test_check_query_limit_invalid_2(self): - query = "TABLE A FROM TABLE B" - self.assertEqual(False, query_is_select_no_limit(query)) - - def test_check_query_with_limit(self): - query = "SELECT * LIMIT 5" - self.assertEqual(False, query_is_select_no_limit(query)) - - def test_check_query_with_offset(self): - query = "SELECT * LIMIT 5 OFFSET 3" - self.assertEqual(False, query_is_select_no_limit(query)) - - def test_add_limit_query_no_limit(self): - query = "SELECT *" - self.assertEqual("SELECT * LIMIT 1000", add_limit_to_query(query)) - - def test_add_limit_query_with_punc(self): - query = "SELECT *;" - self.assertEqual("SELECT * LIMIT 1000;", add_limit_to_query(query)) - - -if __name__ == '__main__': - unittest.main() From 2b5d1c03c1d1b6aca502f43efcb1b03b46a958db Mon Sep 17 00:00:00 2001 From: Jesse Date: Fri, 21 Jan 2022 15:43:42 -0600 Subject: [PATCH 005/274] JSON query runner: optionally skip certificate verification (#5690) Add verify option to json datasource runner to allow query developers the option of skipping certificate verification Co-authored-by: Kevin Chiang Co-authored-by: kevinchiang --- redash/query_runner/json_ds.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/redash/query_runner/json_ds.py b/redash/query_runner/json_ds.py index a6cf42eb5e..ee8adc8716 100644 --- a/redash/query_runner/json_ds.py +++ b/redash/query_runner/json_ds.py @@ -166,7 +166,7 @@ def run_query(self, query, user): method = query.get("method", "get") - request_options = project(query, ("params", "headers", "data", "auth", "json")) + request_options = project(query, ("params", "headers", "data", "auth", "json", "verify")) fields = query.get("fields") path = query.get("path") From 12c475068483ba1cc2525e73ecd20843bf435922 Mon Sep 17 00:00:00 2001 From: Jesse Date: Fri, 28 Jan 2022 08:52:31 -0600 Subject: [PATCH 006/274] Fix: don't accept password login requests if password auth is disabled (#5693) --- redash/handlers/authentication.py | 7 ++++++- tests/test_handlers.py | 16 ++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/redash/handlers/authentication.py b/redash/handlers/authentication.py index f05ccd501a..c4e467c2eb 100644 --- a/redash/handlers/authentication.py +++ b/redash/handlers/authentication.py @@ -198,7 +198,8 @@ def login(org_slug=None): if current_user.is_authenticated: return redirect(next_path) - if request.method == "POST": + + if request.method == "POST" and current_org.get_setting("auth_password_login_enabled"): try: org = current_org._get_current_object() user = models.User.get_by_email_and_org(request.form["email"], org) @@ -214,6 +215,10 @@ def login(org_slug=None): flash("Wrong email or password.") except NoResultFound: flash("Wrong email or password.") + elif request.method == "POST" and not current_org.get_setting("auth_password_login_enabled"): + flash("Password login is not enabled for your organization.") + + google_auth_url = get_google_auth_url(next_path) diff --git a/tests/test_handlers.py b/tests/test_handlers.py index 162c9f5e87..130e14fa04 100644 --- a/tests/test_handlers.py +++ b/tests/test_handlers.py @@ -230,6 +230,22 @@ def test_user_already_loggedin(self): self.assertEqual(rv.status_code, 302) self.assertFalse(login_user_mock.called) + def test_correct_user_and_password_when_password_login_disabled(self): + user = self.factory.user + user.hash_password("password") + + self.db.session.add(user) + self.db.session.commit() + + self.factory.org.set_setting("auth_password_login_enabled", False) + + with patch("redash.handlers.authentication.login_user") as login_user_mock: + rv = self.client.post( + "/default/login", data={"email": user.email, "password": "password"} + ) + self.assertEqual(rv.status_code, 200) + self.assertIn("Password login is not enabled for your organization", str(rv.data)) + class TestLogout(BaseTestCase): def test_logout_when_not_loggedin(self): From 26ac8ab1cd56f550bef400d2db6e58f87ed2ec45 Mon Sep 17 00:00:00 2001 From: anshulhiran <89910231+anshulhiran@users.noreply.github.com> Date: Tue, 1 Feb 2022 20:12:39 +0530 Subject: [PATCH 007/274] Firebolt Query Runner: now uses firebold-sdk python package (#5689) * Added firebolt-sdk in place of firebolt-sqlalchemy * fixed connection issue * fixed connection issue * final commit * Moved firebolt-sdk's imports to try block Co-authored-by: rajeshSigmoid --- redash/query_runner/firebolt.py | 19 ++++++++++--------- requirements_all_ds.txt | 2 +- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/redash/query_runner/firebolt.py b/redash/query_runner/firebolt.py index 761d1e644f..5f7d905778 100644 --- a/redash/query_runner/firebolt.py +++ b/redash/query_runner/firebolt.py @@ -1,5 +1,6 @@ try: - from firebolt_db.firebolt_connector import Connection + from firebolt.db import connect + from firebolt.client import DEFAULT_API_URL enabled = True except ImportError: enabled = False @@ -19,14 +20,14 @@ def configuration_schema(cls): return { "type": "object", "properties": { - "host": {"type": "string", "default": "localhost"}, - "port": {"type": "string", "default": 8123}, + "api_endpoint": {"type": "string", "default": DEFAULT_API_URL}, + "engine_name": {"type": "string"}, "DB": {"type": "string"}, "user": {"type": "string"}, "password": {"type": "string"}, }, - "order": ["host", "port", "user", "password", "DB"], - "required": ["user","password"], + "order": ["user", "password", "api_endpoint", "engine_name", "DB"], + "required": ["user", "password", "engine_name", "DB"], "secret": ["password"], } @@ -35,12 +36,12 @@ def enabled(cls): return enabled def run_query(self, query, user): - connection = Connection( - host=self.configuration["host"], - port=self.configuration["port"], + connection = connect( + api_endpoint=(self.configuration.get("api_endpoint") or DEFAULT_API_URL), + engine_name=(self.configuration.get("engine_name") or None), username=(self.configuration.get("user") or None), password=(self.configuration.get("password") or None), - db_name=(self.configuration.get("DB") or None), + database=(self.configuration.get("DB") or None), ) cursor = connection.cursor() diff --git a/requirements_all_ds.txt b/requirements_all_ds.txt index fa5a98b183..15cda6fecc 100644 --- a/requirements_all_ds.txt +++ b/requirements_all_ds.txt @@ -40,5 +40,5 @@ trino~=0.305 cmem-cmempy==21.2.3 xlrd==2.0.1 openpyxl==3.0.7 -firebolt-sqlalchemy +firebolt-sdk pandas==1.3.4 From ea07e7e19b62051e20f07726231d4ad3b08ab43e Mon Sep 17 00:00:00 2001 From: JyothiGandi Date: Tue, 1 Feb 2022 21:18:07 +0530 Subject: [PATCH 008/274] Fix: Test Connection button disabled after save (#5666) Closes #5455 --- client/app/components/dynamic-form/DynamicForm.jsx | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/client/app/components/dynamic-form/DynamicForm.jsx b/client/app/components/dynamic-form/DynamicForm.jsx index c2d908efbc..0806cb08b2 100644 --- a/client/app/components/dynamic-form/DynamicForm.jsx +++ b/client/app/components/dynamic-form/DynamicForm.jsx @@ -151,6 +151,7 @@ export default function DynamicForm({ onSubmit, }) { const [isSubmitting, setIsSubmitting] = useState(false); + const [isTouched, setIsTouched] = useState(false); const [showExtraFields, setShowExtraFields] = useState(defaultShowExtraFields); const [form] = Form.useForm(); const extraFields = filter(fields, { extra: true }); @@ -163,9 +164,8 @@ export default function DynamicForm({ onSubmit( values, msg => { - const { setFieldsValue, getFieldsValue } = form; setIsSubmitting(false); - setFieldsValue(getFieldsValue()); // reset form touched state + setIsTouched(false); // reset form touched state notification.success(msg); }, msg => { @@ -174,7 +174,7 @@ export default function DynamicForm({ } ); }, - [form, fields, onSubmit] + [fields, onSubmit] ); const handleFinishFailed = useCallback( @@ -187,6 +187,9 @@ export default function DynamicForm({ return (
{ + setIsTouched(true); + }} id={id} className="dynamic-form" layout="vertical" @@ -216,7 +219,7 @@ export default function DynamicForm({ {saveText} )} - + ); } From 6797f32ea62da98742aa4b8f88e9d6aeff54a0b8 Mon Sep 17 00:00:00 2001 From: Jesse Date: Tue, 1 Feb 2022 11:09:42 -0600 Subject: [PATCH 009/274] Snowflake: add option to lowercase column names (#5657) Ported from app.redash.io codebase. * Add option to lowercase column names * Black the file --- redash/query_runner/snowflake.py | 46 +++++++++++++++++++++++--------- 1 file changed, 34 insertions(+), 12 deletions(-) diff --git a/redash/query_runner/snowflake.py b/redash/query_runner/snowflake.py index 24c7481565..03534bdeaf 100644 --- a/redash/query_runner/snowflake.py +++ b/redash/query_runner/snowflake.py @@ -1,5 +1,6 @@ try: import snowflake.connector + enabled = True except ImportError: enabled = False @@ -39,14 +40,27 @@ def configuration_schema(cls): "type": "object", "properties": { "account": {"type": "string"}, - "region": {"type": "string", "default": "us-west"}, "user": {"type": "string"}, "password": {"type": "string"}, "warehouse": {"type": "string"}, "database": {"type": "string"}, + "region": {"type": "string", "default": "us-west"}, + "lower_case_columns": { + "type": "boolean", + "title": "Lower Case Column Names in Results", + "default": False, + }, "host": {"type": "string"}, }, - "order": ["account", "region", "user", "password", "warehouse", "database", "host"], + "order": [ + "account", + "user", + "password", + "warehouse", + "database", + "region", + "host", + ], "required": ["user", "password", "account", "database", "warehouse"], "secret": ["password"], "extra_options": [ @@ -81,20 +95,28 @@ def _get_connection(self): else: host = "{}.snowflakecomputing.com".format(account) - connection = snowflake.connector.connect( - user = self.configuration["user"], - password = self.configuration["password"], - account = account, - region = region, - host = host + user=self.configuration["user"], + password=self.configuration["password"], + account=account, + region=region, + host=host, ) return connection + def _column_name(self, column_name): + if self.configuration.get("lower_case_columns", False): + return column_name.lower() + + return column_name + def _parse_results(self, cursor): columns = self.fetch_columns( - [(i[0], self.determine_type(i[1], i[5])) for i in cursor.description] + [ + (self._column_name(i[0]), self.determine_type(i[1], i[5])) + for i in cursor.description + ] ) rows = [ dict(zip((column["name"] for column in columns), row)) for row in cursor @@ -137,10 +159,10 @@ def _run_query_without_warehouse(self, query): cursor.close() connection.close() - return data, error - + return data, error + def _database_name_includes_schema(self): - return '.' in self.configuration.get('database') + return "." in self.configuration.get("database") def get_schema(self, get_stats=False): if self._database_name_includes_schema(): From 4164a42aabd8ba410839b7380e635e72f58297cd Mon Sep 17 00:00:00 2001 From: Steven Hao Date: Wed, 2 Feb 2022 08:13:40 -0500 Subject: [PATCH 010/274] Multi-filters: show all results by default (#5676) --- client/app/services/query-result.js | 3 ++ .../cypress/integration/query/filters_spec.js | 36 +++++++++++++------ 2 files changed, 29 insertions(+), 10 deletions(-) diff --git a/client/app/services/query-result.js b/client/app/services/query-result.js index 1a5f12f2a1..b41f1e2148 100644 --- a/client/app/services/query-result.js +++ b/client/app/services/query-result.js @@ -318,6 +318,9 @@ class QueryResult { } return v; }); + if (filter.values.length > 1 && filter.multiple) { + filter.current = filter.values.slice(); + } }); return filters; diff --git a/client/cypress/integration/query/filters_spec.js b/client/cypress/integration/query/filters_spec.js index 219743ac40..50262738db 100644 --- a/client/cypress/integration/query/filters_spec.js +++ b/client/cypress/integration/query/filters_spec.js @@ -68,29 +68,45 @@ describe("Query Filters", () => { } it("filters rows in a Table Visualization", () => { - expectSelectedOptionsToHaveMembers(["a"]); - expectTableToHaveLength(4); - expectFirstColumnToHaveMembers(["a", "a", "a", "a"]); + // Defaults to All Options Selected + + expectSelectedOptionsToHaveMembers(["a", "b", "c"]); + expectTableToHaveLength(11); + expectFirstColumnToHaveMembers(["a", "a", "a", "a", "b", "b", "b", "c", "c", "c", "c"]); + + // Clear Option cy.getByTestId("FilterName-stage1::multi-filter") .find(".ant-select-selector") .click(); - cy.contains(".ant-select-item-option-content", "b").click(); + cy.getByTestId("ClearOption").click(); cy.getByTestId("FilterName-stage1::multi-filter").click(); // close dropdown - expectSelectedOptionsToHaveMembers(["a", "b"]); - expectTableToHaveLength(7); - expectFirstColumnToHaveMembers(["a", "a", "a", "a", "b", "b", "b"]); + cy.getByTestId("TableVisualization").should("not.exist"); - // Clear Option + // Single Option selected cy.getByTestId("FilterName-stage1::multi-filter") .find(".ant-select-selector") .click(); - cy.getByTestId("ClearOption").click(); + cy.contains(".ant-select-item-option-grouped > .ant-select-item-option-content", "a").click(); cy.getByTestId("FilterName-stage1::multi-filter").click(); // close dropdown - cy.getByTestId("TableVisualization").should("not.exist"); + expectSelectedOptionsToHaveMembers(["a"]); + expectTableToHaveLength(4); + expectFirstColumnToHaveMembers(["a", "a", "a", "a"]); + + // Two Options selected + + cy.getByTestId("FilterName-stage1::multi-filter") + .find(".ant-select-selector") + .click(); + cy.contains(".ant-select-item-option-content", "b").click(); + cy.getByTestId("FilterName-stage1::multi-filter").click(); // close dropdown + + expectSelectedOptionsToHaveMembers(["a", "b"]); + expectTableToHaveLength(7); + expectFirstColumnToHaveMembers(["a", "a", "a", "a", "b", "b", "b"]); // Select All Option From 49fe29579a56e7a8e206895586eca1736a6d210d Mon Sep 17 00:00:00 2001 From: Jesse Date: Wed, 2 Feb 2022 14:03:02 -0600 Subject: [PATCH 011/274] Move user profile image url into the users.details field (#5697) Makes the details field a JSONB field per pg doc recommendations. Update model.all() method to work properly now that profile_image_url is not an independent field. Closes #4469 --- migrations/versions/fd4fc850d7ea_.py | 60 ++++++++++++++++++++++++++++ redash/models/__init__.py | 2 +- redash/models/users.py | 6 ++- 3 files changed, 65 insertions(+), 3 deletions(-) create mode 100644 migrations/versions/fd4fc850d7ea_.py diff --git a/migrations/versions/fd4fc850d7ea_.py b/migrations/versions/fd4fc850d7ea_.py new file mode 100644 index 0000000000..75177c3299 --- /dev/null +++ b/migrations/versions/fd4fc850d7ea_.py @@ -0,0 +1,60 @@ +"""Convert user details to jsonb and move user profile image url into details column + +Revision ID: fd4fc850d7ea +Revises: 89bc7873a3e0 +Create Date: 2022-01-31 15:24:16.507888 + +""" +from alembic import op +import sqlalchemy as sa +from sqlalchemy.dialects import postgresql + +from redash.models import db + +# revision identifiers, used by Alembic. +revision = 'fd4fc850d7ea' +down_revision = '89bc7873a3e0' +branch_labels = None +depends_on = None + + +def upgrade(): + connection = op.get_bind() + + ### commands auto generated by Alembic - please adjust! ### + op.alter_column('users', 'details', + existing_type=postgresql.JSON(astext_type=sa.Text()), + type_=postgresql.JSONB(astext_type=sa.Text()), + existing_nullable=True, + existing_server_default=sa.text("'{}'::jsonb")) + ### end Alembic commands ### + + update_query = """ + update users + set details = details::jsonb || ('{"profile_image_url": "' || profile_image_url || '"}')::jsonb + where 1=1 + """ + connection.execute(update_query) + op.drop_column("users", "profile_image_url") + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + connection = op.get_bind() + op.add_column("users", sa.Column("profile_image_url", db.String(320), nullable=True)) + + update_query = """ + update users set + profile_image_url = details->>'profile_image_url', + details = details - 'profile_image_url' ; + """ + + connection.execute(update_query) + db.session.commit() + op.alter_column('users', 'details', + existing_type=postgresql.JSONB(astext_type=sa.Text()), + type_=postgresql.JSON(astext_type=sa.Text()), + existing_nullable=True, + existing_server_default=sa.text("'{}'::json")) + + # ### end Alembic commands ### diff --git a/redash/models/__init__.py b/redash/models/__init__.py index 27d04df2fe..5b79c41f33 100644 --- a/redash/models/__init__.py +++ b/redash/models/__init__.py @@ -1118,7 +1118,7 @@ def all(cls, org, group_ids, user_id): query = ( Dashboard.query.options( joinedload(Dashboard.user).load_only( - "id", "name", "_profile_image_url", "email" + "id", "name", "details", "email" ) ).distinct(Dashboard.created_at, Dashboard.slug) .outerjoin(Widget) diff --git a/redash/models/users.py b/redash/models/users.py index 10c37461c8..9bbb6e5da6 100644 --- a/redash/models/users.py +++ b/redash/models/users.py @@ -85,7 +85,6 @@ class User( org = db.relationship("Organization", backref=db.backref("users", lazy="dynamic")) name = Column(db.String(320)) email = Column(EmailType) - _profile_image_url = Column("profile_image_url", db.String(320), nullable=True) password_hash = Column(db.String(128), nullable=True) group_ids = Column( "groups", MutableList.as_mutable(postgresql.ARRAY(key_type("Group"))), nullable=True @@ -94,7 +93,7 @@ class User( disabled_at = Column(db.DateTime(True), default=None, nullable=True) details = Column( - MutableDict.as_mutable(postgresql.JSON), + MutableDict.as_mutable(postgresql.JSONB), nullable=True, server_default="{}", default={}, @@ -102,6 +101,9 @@ class User( active_at = json_cast_property( db.DateTime(True), "details", "active_at", default=None ) + _profile_image_url = json_cast_property( + db.Text(), "details", "profile_image_url", default=None + ) is_invitation_pending = json_cast_property( db.Boolean(True), "details", "is_invitation_pending", default=False ) From 175a4da49b61253f1c5a447bbd522fced1d82a1b Mon Sep 17 00:00:00 2001 From: Bruno Agutoli Date: Thu, 10 Feb 2022 01:57:25 +1100 Subject: [PATCH 012/274] Fix: Dashboard List page crashes when sorting by name (#5645) Closes #5119 --- redash/models/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/redash/models/__init__.py b/redash/models/__init__.py index 5b79c41f33..cfd081ae44 100644 --- a/redash/models/__init__.py +++ b/redash/models/__init__.py @@ -1120,7 +1120,7 @@ def all(cls, org, group_ids, user_id): joinedload(Dashboard.user).load_only( "id", "name", "details", "email" ) - ).distinct(Dashboard.created_at, Dashboard.slug) + ).distinct(cls.lowercase_name, Dashboard.created_at, Dashboard.slug) .outerjoin(Widget) .outerjoin(Visualization) .outerjoin(Query) From 5de85543a57af75fecca43113f94bd456bad7f60 Mon Sep 17 00:00:00 2001 From: Jesse Date: Wed, 9 Feb 2022 10:04:54 -0600 Subject: [PATCH 013/274] List pages: move sidebar to the left (#5698) This change took place in steps: 1. Change order of content and sidebar. Sidebar appears first, then content. 2. Fix padding * Before: content was jutted against the sidebar. The sidebar was double- padded from the edge of the content area. After: Content has 15px pad against the sidebar. Sidebar has the same pad as the page title. 3. Don't pad the content on small screens. Otherwise the content appears off-center and doesn't use all of the available space. 4. Allow Create buttons to have varying width This makes the Query, Dashboard, and Alert list pages share the same style --- client/app/components/layouts/content-with-sidebar.less | 8 ++++---- client/app/pages/dashboards/dashboard-list.css | 5 ----- client/app/pages/queries-list/queries-list.css | 4 ---- 3 files changed, 4 insertions(+), 13 deletions(-) diff --git a/client/app/components/layouts/content-with-sidebar.less b/client/app/components/layouts/content-with-sidebar.less index 1a6bdd97f4..bc336847f9 100644 --- a/client/app/components/layouts/content-with-sidebar.less +++ b/client/app/components/layouts/content-with-sidebar.less @@ -11,17 +11,17 @@ > .layout-content { flex: 1 0 auto; width: 75%; - order: 0; + order: 1; margin: 0; + padding: 0 0 0 @spacing } > .layout-sidebar { flex: 0 0 auto; width: 25%; max-width: 350px; - order: 1; + order: 0; margin: 0; - padding: 0 0 0 @spacing; } @media (max-width: 990px) { @@ -31,6 +31,7 @@ width: 100%; order: 1; margin: 0; + padding: 0; } > .layout-sidebar { @@ -38,7 +39,6 @@ max-width: none; order: 0; margin: 0 0 @spacing 0; - padding: 0; } } } diff --git a/client/app/pages/dashboards/dashboard-list.css b/client/app/pages/dashboards/dashboard-list.css index 3e23e13ae9..799768c2e7 100644 --- a/client/app/pages/dashboards/dashboard-list.css +++ b/client/app/pages/dashboards/dashboard-list.css @@ -6,11 +6,6 @@ div.tags-list { -ms-user-select: none; /* IE10+ */ } -.page-dashboard-list .page-header-actions { - width: 25%; /* same as sidebar */ - max-width: 350px; /* same as sidebar */ -} - /* same rule as for sidebar */ @media (max-width: 990px) { .page-dashboard-list .page-header-actions { diff --git a/client/app/pages/queries-list/queries-list.css b/client/app/pages/queries-list/queries-list.css index 619a72c8a8..720da8d1e0 100644 --- a/client/app/pages/queries-list/queries-list.css +++ b/client/app/pages/queries-list/queries-list.css @@ -3,10 +3,6 @@ height: 35px; } -.page-queries-list .page-header-actions { - width: 25%; /* same as sidebar */ - max-width: 350px; /* same as sidebar */ -} /* same rule as for sidebar */ @media (max-width: 990px) { From b713f6b240970ed91fe1cfc7d6bf7eca69d9c918 Mon Sep 17 00:00:00 2001 From: adamzwakk Date: Wed, 2 Mar 2022 10:34:52 -0500 Subject: [PATCH 014/274] Update Dockerfile CHOWN into COPY (#5660) Its more efficient to chown while COPY for large stacks of files as per https://github.com/docker/for-linux/issues/388 --- Dockerfile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index aad8d7cf7c..97e39f7b26 100644 --- a/Dockerfile +++ b/Dockerfile @@ -96,9 +96,9 @@ RUN if [ "x$skip_dev_deps" = "x" ] ; then pip install -r requirements_dev.txt ; COPY requirements.txt ./ RUN pip install -r requirements.txt -COPY . /app -COPY --from=frontend-builder /frontend/client/dist /app/client/dist -RUN chown -R redash /app +COPY --chown=redash . /app +COPY --from=frontend-builder --chown=redash /frontend/client/dist /app/client/dist +RUN chown redash /app USER redash ENTRYPOINT ["/app/bin/docker-entrypoint"] From e6ebef1e5ab866ce1e706eaee6260edaffdc2bd7 Mon Sep 17 00:00:00 2001 From: Jesse Date: Thu, 10 Mar 2022 12:00:26 -0600 Subject: [PATCH 015/274] Update contributor guidelines and clarify PR review process (#5714) --- .github/PULL_REQUEST_TEMPLATE.md | 17 ++++++++-- CONTRIBUTING.md | 57 +++++++++++++++++++++++--------- 2 files changed, 55 insertions(+), 19 deletions(-) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index a4e1d25210..8b6e58a6f2 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -1,15 +1,26 @@ -## What type of PR is this? (check all applicable) - +## What type of PR is this? + - [ ] Refactor - [ ] Feature - [ ] Bug Fix -- [ ] New Query Runner (Data Source) +- [ ] New Query Runner (Data Source) - [ ] New Alert Destination - [ ] Other ## Description + + +## How is this tested? + +- [ ] Unit tests (pytest, jest) +- [ ] E2E Tests (Cypress) +- [ ] Manually +- [ ] N/A + + ## Related Tickets & Documents + ## Mobile & Desktop Screenshots/Recordings (if there are UI changes) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index e9c28e6bc6..76c5953ded 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -4,19 +4,7 @@ Thank you for taking the time to contribute! :tada::+1: The following is a set of guidelines for contributing to Redash. These are guidelines, not rules, please use your best judgement and feel free to propose changes to this document in a pull request. -## Quick Links: - -- [Feature Requests](https://discuss.redash.io/c/feature-requests) -- [Documentation](https://redash.io/help/) -- [Blog](https://blog.redash.io/) -- [Twitter](https://twitter.com/getredash) - ---- -:star: If you already here and love the project, please make sure to press the Star button. :star: - ---- - - +:star: If you're already here and love the project, please make sure to press the Star button. :star: ## Table of Contents [How can I contribute?](#how-can-i-contribute) @@ -32,6 +20,14 @@ The following is a set of guidelines for contributing to Redash. These are guide - [Release Method](#release-method) - [Code of Conduct](#code-of-conduct) +## Quick Links: + +- [User Forum](https://discuss.redash.io/) +- [Feature Requests](https://discuss.redash.io/c/feature-requests) +- [Documentation](https://redash.io/help/) + + +--- ## How can I contribute? ### Reporting Bugs @@ -51,13 +47,42 @@ If you would like to suggest an enhancement or ask for a new feature: ### Pull Requests -- **Code contributions are welcomed**. For big changes or significant features, it's usually better to reach out first and discuss what you want to implement and how (we recommend reading: [Pull Request First](https://medium.com/practical-blend/pull-request-first-f6bb667a9b6#.ozlqxvj36)). This to make sure that what you want to implement is aligned with our goals for the project and that no one else is already working on it. -- Include screenshots and animated GIFs in your pull request whenever possible. +**Code contributions are welcomed**. For big changes or significant features, it's usually better to reach out first and discuss what you want to implement and how (we recommend reading: [Pull Request First](https://medium.com/practical-blend/pull-request-first-f6bb667a9b6#.ozlqxvj36)). This is to make sure that what you want to implement is aligned with our goals for the project and that no one else is already working on it. + +#### Criteria for Review / Merging + +When you open your pull request, please follow this repository’s PR template carefully: + +- Indicate the type of change + - If you implement multiple unrelated features, bug fixes, or refactors please split them into individual pull requests. +- Describe the change +- If fixing a bug, please describe the bug or link to an existing github issue / forum discussion +- Include UI screenshots / GIFs whenever possible - Please add [documentation](#documentation) for new features or changes in functionality along with the code. - Please follow existing code style: - Python: we use [Black](https://github.com/psf/black) to auto format the code. - Javascript: we use [Prettier](https://github.com/prettier/prettier) to auto-format the code. - + +#### Initial Review (1 week) + +During this phase, a team member will apply the “Team Review” label if a pull request meets our criteria or a “Needs More Information” label if not. If more information is required, the team member will comment which criteria have not been met. + +If your pull request receives the “Needs More Information” label, please make the requested changes and then remove the label. This resets the 1 week timer for an initial review. + +Stale pull requests that remain untouched in “Needs More Information” for more than 4 weeks will be closed. + +If a team member closes your pull request, you may reopen it after you have made the changes requested during initial review. After you make these changes, remove the “Needs More Information” label. This again resets the timer for another initial review. + +#### Full Review (2 weeks) + +After the “Team Review” label is applied, a member of the core team will review the PR within 2 weeks. + +Reviews will approve, request changes, or ask questions to discuss areas of uncertainty. After you’ve responded, a member of the team will re-review within one week. + +#### Merging (1 week) + +After your pull request has been approved, a member of the core team will merge the pull request within a week. + ### Documentation The project's documentation can be found at [https://redash.io/help/](https://redash.io/help/). The [documentation sources](https://github.com/getredash/website/tree/master/src/pages/kb) are hosted on GitHub. To contribute edits / new pages, you can use GitHub's interface. Click the "Edit on GitHub" link on the documentation page to quickly open the edit interface. From 46ea3b1f0b263ba310de7c2c17e4a32d3ea4c343 Mon Sep 17 00:00:00 2001 From: "Gabriel A. Devenyi" Date: Thu, 28 Apr 2022 12:20:13 -0400 Subject: [PATCH 016/274] Fix hard-coding of amd64 platform, make ARM build work. (#5687) * Fix hard-coding of amd64 platform and make amd64 package installation conditional * Cleanup Dockerfile for best practices * Enable BuildKit for docker building --- .circleci/config.yml | 2 +- .circleci/docker_build | 5 ++++- Dockerfile | 37 ++++++++++++++++++++----------------- Makefile | 4 ++-- 4 files changed, 27 insertions(+), 21 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 21377cc394..887cfaad9c 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -36,7 +36,7 @@ jobs: name: Build Docker Images command: | set -x - docker-compose build --build-arg skip_ds_deps=true --build-arg skip_frontend_build=true + COMPOSE_DOCKER_CLI_BUILD=1 DOCKER_BUILDKIT=1 docker-compose build --build-arg skip_ds_deps=true --build-arg skip_frontend_build=true docker-compose up -d sleep 10 - run: diff --git a/.circleci/docker_build b/.circleci/docker_build index e105c584e0..238cc7107d 100755 --- a/.circleci/docker_build +++ b/.circleci/docker_build @@ -2,6 +2,9 @@ VERSION=$(jq -r .version package.json) VERSION_TAG=$VERSION.b$CIRCLE_BUILD_NUM +export DOCKER_BUILDKIT=1 +export COMPOSE_DOCKER_CLI_BUILD=1 + docker login -u $DOCKER_USER -p $DOCKER_PASS if [ $CIRCLE_BRANCH = master ] || [ $CIRCLE_BRANCH = preview-image ] @@ -14,4 +17,4 @@ else docker push redash/redash:$VERSION_TAG fi -echo "Built: $VERSION_TAG" \ No newline at end of file +echo "Built: $VERSION_TAG" diff --git a/Dockerfile b/Dockerfile index 97e39f7b26..68f3cf974e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -25,7 +25,7 @@ COPY --chown=redash client /frontend/client COPY --chown=redash webpack.config.js /frontend/ RUN if [ "x$skip_frontend_build" = "x" ] ; then yarn build; else mkdir -p /frontend/client/dist && touch /frontend/client/dist/multi_org.html && touch /frontend/client/dist/index.html; fi -FROM --platform=linux/amd64 python:3.7-slim-buster +FROM python:3.7-slim-buster EXPOSE 5000 @@ -38,7 +38,7 @@ RUN useradd --create-home redash # Ubuntu packages RUN apt-get update && \ - apt-get install -y \ + apt-get install -y --no-install-recommends \ curl \ gnupg \ build-essential \ @@ -46,7 +46,6 @@ RUN apt-get update && \ libffi-dev \ sudo \ git-core \ - wget \ # Postgres client libpq-dev \ # ODBC support: @@ -60,22 +59,26 @@ RUN apt-get update && \ libsasl2-dev \ unzip \ libsasl2-modules-gssapi-mit && \ - # MSSQL ODBC Driver: - curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - && \ - curl https://packages.microsoft.com/config/debian/10/prod.list > /etc/apt/sources.list.d/mssql-release.list && \ - apt-get update && \ - ACCEPT_EULA=Y apt-get install -y msodbcsql17 && \ - apt-get clean && \ - rm -rf /var/lib/apt/lists/* + apt-get clean && \ + rm -rf /var/lib/apt/lists/* + +ARG TARGETPLATFORM ARG databricks_odbc_driver_url=https://databricks.com/wp-content/uploads/2.6.10.1010-2/SimbaSparkODBC-2.6.10.1010-2-Debian-64bit.zip -RUN wget --quiet $databricks_odbc_driver_url -O /tmp/simba_odbc.zip \ - && chmod 600 /tmp/simba_odbc.zip \ - && unzip /tmp/simba_odbc.zip -d /tmp/ \ - && dpkg -i /tmp/SimbaSparkODBC-*/*.deb \ - && echo "[Simba]\nDriver = /opt/simba/spark/lib/64/libsparkodbc_sb64.so" >> /etc/odbcinst.ini \ - && rm /tmp/simba_odbc.zip \ - && rm -rf /tmp/SimbaSparkODBC* +RUN if [ "$TARGETPLATFORM" = "linux/amd64" ]; then \ + curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - \ + && curl https://packages.microsoft.com/config/debian/10/prod.list > /etc/apt/sources.list.d/mssql-release.list \ + && apt-get update \ + && ACCEPT_EULA=Y apt-get install -y --no-install-recommends msodbcsql17 \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* \ + && curl "$databricks_odbc_driver_url" --output /tmp/simba_odbc.zip \ + && chmod 600 /tmp/simba_odbc.zip \ + && unzip /tmp/simba_odbc.zip -d /tmp/ \ + && dpkg -i /tmp/SimbaSparkODBC-*/*.deb \ + && printf "[Simba]\nDriver = /opt/simba/spark/lib/64/libsparkodbc_sb64.so" >> /etc/odbcinst.ini \ + && rm /tmp/simba_odbc.zip \ + && rm -rf /tmp/SimbaSparkODBC*; fi WORKDIR /app diff --git a/Makefile b/Makefile index d482474ba2..3d124b4a84 100644 --- a/Makefile +++ b/Makefile @@ -1,10 +1,10 @@ .PHONY: compose_build up test_db create_database clean down bundle tests lint backend-unit-tests frontend-unit-tests test build watch start redis-cli bash compose_build: - docker-compose build + COMPOSE_DOCKER_CLI_BUILD=1 DOCKER_BUILDKIT=1 docker-compose build up: - docker-compose up -d --build + COMPOSE_DOCKER_CLI_BUILD=1 DOCKER_BUILDKIT=1 docker-compose up -d --build test_db: @for i in `seq 1 5`; do \ From cabe33394bf4ea4155c6d45e779298e43a0d9e4a Mon Sep 17 00:00:00 2001 From: Ian <68525743+decaffeinatedio@users.noreply.github.com> Date: Wed, 1 Jun 2022 09:15:18 -0700 Subject: [PATCH 017/274] [Fix] Broken image included in emails (#5719) --- redash/templates/emails/layout.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/redash/templates/emails/layout.html b/redash/templates/emails/layout.html index 4df65e084a..fef66310e1 100644 --- a/redash/templates/emails/layout.html +++ b/redash/templates/emails/layout.html @@ -546,7 +546,7 @@ - + @@ -565,4 +565,4 @@ - \ No newline at end of file + From b2cc42e383dda5f03a193ca64e91acadf75efebc Mon Sep 17 00:00:00 2001 From: Jesse Date: Sat, 2 Jul 2022 11:13:00 -0500 Subject: [PATCH 018/274] Disable auto limit for mssql query runner (#5777) --- redash/query_runner/mssql_odbc.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/redash/query_runner/mssql_odbc.py b/redash/query_runner/mssql_odbc.py index 0c02db4138..c10edc2bfc 100644 --- a/redash/query_runner/mssql_odbc.py +++ b/redash/query_runner/mssql_odbc.py @@ -68,6 +68,10 @@ def name(cls): @classmethod def type(cls): return "mssql_odbc" + + @property + def supports_auto_limit(self): + return False def _get_tables(self, schema): query = """ From 6806ebd244c64864e03147445694ad59934d5253 Mon Sep 17 00:00:00 2001 From: Greg Stein Date: Sat, 2 Jul 2022 14:02:38 -0400 Subject: [PATCH 019/274] Use correct names for Apache projects (#5776) Apache's trademark policy says to use the full name for these products on their first mention, on a page. --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index a32aeabbd1..4ae2f59fd7 100644 --- a/README.md +++ b/README.md @@ -35,13 +35,13 @@ Redash supports more than 35 SQL and NoSQL [data sources](https://redash.io/help - Amazon DynamoDB - Amazon Redshift - Axibase Time Series Database -- Cassandra +- Apache Cassandra - ClickHouse - CockroachDB - CSV - Databricks (Apache Spark) - DB2 by IBM -- Druid +- Apache Druid - Elasticsearch - Firebolt - Google Analytics @@ -49,8 +49,8 @@ Redash supports more than 35 SQL and NoSQL [data sources](https://redash.io/help - Google Spreadsheets - Graphite - Greenplum -- Hive -- Impala +- Apache Hive +- Apache Impala - InfluxDB - JIRA - JSON From bdd1244604b17832cd50c19678dd0fba4e45a72e Mon Sep 17 00:00:00 2001 From: Leandro Lorenzini Date: Sun, 3 Jul 2022 03:02:49 +0800 Subject: [PATCH 020/274] Fix: mongodb schema refresh failed when user had insufficient permissions (#5734) Co-authored-by: ban-lee-seng --- redash/query_runner/mongodb.py | 33 ++++++++++++++++++++------------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/redash/query_runner/mongodb.py b/redash/query_runner/mongodb.py index f9ed2130f5..9371832d32 100644 --- a/redash/query_runner/mongodb.py +++ b/redash/query_runner/mongodb.py @@ -221,15 +221,21 @@ def _get_collection_fields(self, db, collection_name): # document written. collection_is_a_view = self._is_collection_a_view(db, collection_name) documents_sample = [] - if collection_is_a_view: - for d in db[collection_name].find().limit(2): - documents_sample.append(d) - else: - for d in db[collection_name].find().sort([("$natural", 1)]).limit(1): - documents_sample.append(d) - - for d in db[collection_name].find().sort([("$natural", -1)]).limit(1): - documents_sample.append(d) + try: + if collection_is_a_view: + for d in db[collection_name].find().limit(2): + documents_sample.append(d) + else: + for d in db[collection_name].find().sort([("$natural", 1)]).limit(1): + documents_sample.append(d) + + for d in db[collection_name].find().sort([("$natural", -1)]).limit(1): + documents_sample.append(d) + except Exception as ex: + template = "An exception of type {0} occurred. Arguments:\n{1!r}" + message = template.format(type(ex).__name__, ex.args) + logger.error(message) + return [] columns = [] for d in documents_sample: self._merge_property_names(columns, d) @@ -242,10 +248,11 @@ def get_schema(self, get_stats=False): if collection_name.startswith("system."): continue columns = self._get_collection_fields(db, collection_name) - schema[collection_name] = { - "name": collection_name, - "columns": sorted(columns), - } + if columns: + schema[collection_name] = { + "name": collection_name, + "columns": sorted(columns), + } return list(schema.values()) From c4bfd4f3e1328824d929d0631023054b44e28a54 Mon Sep 17 00:00:00 2001 From: Jiajie Zhong Date: Sun, 3 Jul 2022 12:00:56 +0800 Subject: [PATCH 021/274] mysql: add more configuration options (#5280) --- redash/query_runner/mysql.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/redash/query_runner/mysql.py b/redash/query_runner/mysql.py index 61dfde8c1c..0cbeebfe6f 100644 --- a/redash/query_runner/mysql.py +++ b/redash/query_runner/mysql.py @@ -66,8 +66,11 @@ def configuration_schema(cls): "passwd": {"type": "string", "title": "Password"}, "db": {"type": "string", "title": "Database name"}, "port": {"type": "number", "default": 3306}, + "connect_timeout": {"type": "number", "default": 60, "title": "Connection Timeout"}, + "charset": {"type": "string", "default": "utf8"}, + "use_unicode": {"type": "boolean", "default": True}, }, - "order": ["host", "port", "user", "passwd", "db"], + "order": ["host", "port", "user", "passwd", "db", "connect_timeout", "charset", "use_unicode"], "required": ["db"], "secret": ["passwd"], } @@ -108,9 +111,9 @@ def _connection(self): passwd=self.configuration.get("passwd", ""), db=self.configuration["db"], port=self.configuration.get("port", 3306), - charset="utf8", - use_unicode=True, - connect_timeout=60, + charset=self.configuration.get("charset", "utf8"), + use_unicode=self.configuration.get("use_unicode", True), + connect_timeout=self.configuration.get("connect_timeout", 60), ) ssl_options = self._get_ssl_parameters() From fc37c1ecfcd4a5f93873f764e4fd36e8aa76ecb5 Mon Sep 17 00:00:00 2001 From: Jiajie Zhong Date: Sun, 3 Jul 2022 12:09:24 +0800 Subject: [PATCH 022/274] Remove unused params in query result GET handler (#5346) --- redash/handlers/query_results.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/redash/handlers/query_results.py b/redash/handlers/query_results.py index f4fe90fd3c..cb8b8d14f2 100644 --- a/redash/handlers/query_results.py +++ b/redash/handlers/query_results.py @@ -342,9 +342,6 @@ def get(self, query_id=None, query_result_id=None, filetype="json"): # should check for query parameters and shouldn't cache the result). should_cache = query_result_id is not None - parameter_values = collect_parameters_from_request(request.args) - max_age = int(request.args.get("maxAge", 0)) - query_result = None query = None From 173cbdb2d60b5daeb9b2a46486212b5acb6ce9de Mon Sep 17 00:00:00 2001 From: Adam Zwakenberg Date: Sun, 3 Jul 2022 14:04:09 -0400 Subject: [PATCH 023/274] Added clear button for query-based parameter inputs (#5710) --- client/app/components/SelectWithVirtualScroll.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/client/app/components/SelectWithVirtualScroll.tsx b/client/app/components/SelectWithVirtualScroll.tsx index 73dde91a79..0f46b71d0f 100644 --- a/client/app/components/SelectWithVirtualScroll.tsx +++ b/client/app/components/SelectWithVirtualScroll.tsx @@ -36,6 +36,7 @@ function SelectWithVirtualScroll({ options, ...props }: VirtualScrollSelectProps dropdownMatchSelectWidth={dropdownMatchSelectWidth} options={options} + allowClear={true} optionFilterProp="label" // as this component expects "options" prop {...props} /> From e2bad61e5bb526b2e898266f95973eb8fcc48bee Mon Sep 17 00:00:00 2001 From: Arik Fraimovich Date: Sun, 3 Jul 2022 11:13:59 -0700 Subject: [PATCH 024/274] Add unarchive button to dashboard (#4697) Co-authored-by: Jesse Whitehouse --- .../app/pages/dashboards/components/DashboardHeader.jsx | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/client/app/pages/dashboards/components/DashboardHeader.jsx b/client/app/pages/dashboards/components/DashboardHeader.jsx index 9c8bf82655..3cd5c7adfd 100644 --- a/client/app/pages/dashboards/components/DashboardHeader.jsx +++ b/client/app/pages/dashboards/components/DashboardHeader.jsx @@ -15,6 +15,7 @@ import { DashboardTagsControl } from "@/components/tags-control/TagsControl"; import getTags from "@/services/getTags"; import { clientConfig } from "@/services/auth"; import { policy } from "@/services/policy"; +import recordEvent from "@/services/recordEvent"; import { durationHumanize } from "@/lib/utils"; import { DashboardStatusEnum } from "../hooks/useDashboard"; @@ -175,6 +176,7 @@ function DashboardControl({ dashboardConfiguration, headerExtra }) { fullscreen, toggleFullscreen, showShareDashboardDialog, + updateDashboard, } = dashboardConfiguration; const showPublishButton = dashboard.is_draft; const showRefreshButton = true; @@ -182,8 +184,14 @@ function DashboardControl({ dashboardConfiguration, headerExtra }) { const canShareDashboard = canEditDashboard && !dashboard.is_draft; const showShareButton = !clientConfig.disablePublicUrls && (dashboard.publicAccessEnabled || canShareDashboard); const showMoreOptionsButton = canEditDashboard; + + const unarchiveDashboard = () => { + recordEvent("unarchive", "dashboard", dashboard.id); + updateDashboard({ is_archived: false }, false); + }; return (
+ {dashboard.can_edit && dashboard.is_archived && } {!dashboard.is_archived && ( {showPublishButton && ( From 412c82940a60a71d567f463958bbb48bfeebc967 Mon Sep 17 00:00:00 2001 From: Bryan Yang Date: Wed, 6 Jul 2022 19:53:31 +0800 Subject: [PATCH 025/274] New Query Runner: Arango query runner (#5124) Co-authored-by: Hugo Gresse --- .../app/assets/images/db-logos/arangodb.png | Bin 0 -> 99239 bytes redash/query_runner/arango.py | 89 ++++++++++++++++++ redash/settings/__init__.py | 3 +- requirements_all_ds.txt | 1 + 4 files changed, 92 insertions(+), 1 deletion(-) create mode 100644 client/app/assets/images/db-logos/arangodb.png create mode 100644 redash/query_runner/arango.py diff --git a/client/app/assets/images/db-logos/arangodb.png b/client/app/assets/images/db-logos/arangodb.png new file mode 100644 index 0000000000000000000000000000000000000000..1b2defd2d6bf383f8607417a5f317a6b29943622 GIT binary patch literal 99239 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 gYi Date: Wed, 6 Jul 2022 08:16:36 -0500 Subject: [PATCH 026/274] Sort Python safe built-ins (#5781) Co-authored-by: Jiajie Zhong Co-authored-by: Jiajie Zhong --- redash/query_runner/python.py | 36 +++++++++++++++---------------- tests/query_runner/test_python.py | 9 ++++++++ 2 files changed, 27 insertions(+), 18 deletions(-) create mode 100644 tests/query_runner/test_python.py diff --git a/redash/query_runner/python.py b/redash/query_runner/python.py index 544cd593d7..83e135bf43 100644 --- a/redash/query_runner/python.py +++ b/redash/query_runner/python.py @@ -53,31 +53,31 @@ class Python(BaseQueryRunner): should_annotate_query = False safe_builtins = ( - "sorted", - "reversed", - "map", - "any", + "abs", "all", - "slice", + "any", + "bool", + "complex", + "dict", + "divmod", + "enumerate", "filter", + "float", + "int", "len", - "next", - "enumerate", - "sum", - "abs", - "min", + "list", + "map", "max", + "min", + "next", + "reversed", "round", - "divmod", + "set", + "slice", + "sorted", "str", - "int", - "float", - "complex", + "sum", "tuple", - "set", - "list", - "dict", - "bool", ) @classmethod diff --git a/tests/query_runner/test_python.py b/tests/query_runner/test_python.py new file mode 100644 index 0000000000..a587c68640 --- /dev/null +++ b/tests/query_runner/test_python.py @@ -0,0 +1,9 @@ +from unittest import TestCase + +from redash.query_runner.python import Python + + +class TestPython(TestCase): + def test_sorted_safe_builtins(self): + src = list(Python.safe_builtins) + assert src == sorted(src), 'Python safe_builtins package not sorted.' From 3624f8f2be40badefc053d098f793a17ec11d3ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacek=20Jab=C5=82o=C5=84ski?= <35669512+jacek-jablonski@users.noreply.github.com> Date: Wed, 6 Jul 2022 23:00:56 +0200 Subject: [PATCH 027/274] Feature: allow configuration / increase of gunicorn timeout (#5783) --- bin/docker-entrypoint | 3 ++- docker-compose.yml | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/bin/docker-entrypoint b/bin/docker-entrypoint index b5d7b0ac17..6874eefbb9 100755 --- a/bin/docker-entrypoint +++ b/bin/docker-entrypoint @@ -32,7 +32,8 @@ server() { # Recycle gunicorn workers every n-th request. See http://docs.gunicorn.org/en/stable/settings.html#max-requests for more details. MAX_REQUESTS=${MAX_REQUESTS:-1000} MAX_REQUESTS_JITTER=${MAX_REQUESTS_JITTER:-100} - exec /usr/local/bin/gunicorn -b 0.0.0.0:5000 --name redash -w${REDASH_WEB_WORKERS:-4} redash.wsgi:app --max-requests $MAX_REQUESTS --max-requests-jitter $MAX_REQUESTS_JITTER + TIMEOUT=${REDASH_GUNICORN_TIMEOUT:-60} + exec /usr/local/bin/gunicorn -b 0.0.0.0:5000 --name redash -w${REDASH_WEB_WORKERS:-4} redash.wsgi:app --max-requests $MAX_REQUESTS --max-requests-jitter $MAX_REQUESTS_JITTER --timeout $TIMEOUT } create_db() { diff --git a/docker-compose.yml b/docker-compose.yml index fdfcdd1a5d..92d07882a2 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -18,6 +18,7 @@ x-redash-environment: &redash-environment REDASH_MAIL_DEFAULT_SENDER: "redash@example.com" REDASH_MAIL_SERVER: "email" REDASH_ENFORCE_CSRF: "true" + REDASH_GUNICORN_TIMEOUT: 60 # Set secret keys in the .env file services: server: From f0a390b11a5fabb75062607e46180134ce3ee994 Mon Sep 17 00:00:00 2001 From: Aniket Kulkarni Date: Fri, 8 Jul 2022 14:10:49 -0400 Subject: [PATCH 028/274] New Query Runner: Netezza Performance Server (#5771) Co-authored-by: Jesse --- client/app/assets/images/db-logos/nz.png | Bin 0 -> 1278 bytes redash/query_runner/nz.py | 165 +++++++++++++++++++++++ redash/settings/__init__.py | 1 + requirements.txt | 2 +- requirements_all_ds.txt | 2 + 5 files changed, 169 insertions(+), 1 deletion(-) create mode 100644 client/app/assets/images/db-logos/nz.png create mode 100644 redash/query_runner/nz.py diff --git a/client/app/assets/images/db-logos/nz.png b/client/app/assets/images/db-logos/nz.png new file mode 100644 index 0000000000000000000000000000000000000000..663687470c8af69d0effca418782a58622826b93 GIT binary patch literal 1278 zcmVnd17xg( zVP*6}pKb8{SeF^|eb+PX>QosEBxK9*w}9OG{DNR|o^r|=PG+?p}4HBQKe{bF4jyl(||kn(RUGi-?|&T)qLNsUQb)>fCF?$r`ay3 zeb(FEJh*$|w7~R*q)IlVjVQZ`nRjOW*DdK)C;TZPL&DU$cMJBljNQn9K)_Zx0(4l> zY4EK1YQBC1{J7<79q(Y(OABh9(+UzGvAXS8tCNR|^G4BOIH`)V@cHctCN&zFRj(${ zw6ogmlb?}_k{EHvnzu*B0XVtm9R=sGAJdA11pXR9zK?tI?o66sT5;fr5>ilzIdK4R z7)JsGzDn$kg#gkaZ)MT|0N|n25pdA>H~=~gCIK(x{z~YmF4YHc20$JLzcDg_y4B?I z1fAfB!EpeN7(^#DTI_5>Pt^srAeRB~KyE^khgwSbN+sDe*_OUgOM`^sU+XUHbm0zU z&7TEw0`8eN1E)9bNc2e6yvq|Zzm005%>wgNcbm1N+SMfWnmUFJLwzTeQ&-|meZTl)Ho zW-OLa8M1~EKjdt?C5O>Nd;Cbv#Y>Y63<7ya&*y!3p=GSymv`iuqP=i9Mq+TxMRvmP zG$QovJcR4bO=A@o0#~gboj7~PeYiA0Fl6W&I}vMXMI%GnY_zAe8QpG_caEgT{4Vm z{>_dWSOUXA1zvf*Srh=AbD1>D4vbIAI6-1BNworx$E=1.15 +nzalchemy python-arango==6.1.0 From 9abc4f5f1e8ef3e644f907eb4bde1dffefc05fc4 Mon Sep 17 00:00:00 2001 From: Jesse Date: Tue, 12 Jul 2022 12:27:20 -0500 Subject: [PATCH 029/274] Clickhouse: Multi-statements support (#5792) ClickHouse query runner splits query into several and execute each query in turn. The result of the last execution is returned. Implementation uses ClickHouse sessions in the HTTP protocol. `session_id` is generated for the first query and then it is used with the subsequent queries (together with the `session_check` parameter). If query runner gets a success response with empty body from ClickHouse (for example, in case of temporary table creation request) query runner returns empty response. authored-by: Liubov Ulitina --- redash/query_runner/clickhouse.py | 85 +++++++++--- tests/query_runner/test_clickhouse.py | 192 ++++++++++++++++++++++++++ 2 files changed, 257 insertions(+), 20 deletions(-) create mode 100644 tests/query_runner/test_clickhouse.py diff --git a/redash/query_runner/clickhouse.py b/redash/query_runner/clickhouse.py index c2a1c6ebb5..c06cb5eb96 100644 --- a/redash/query_runner/clickhouse.py +++ b/redash/query_runner/clickhouse.py @@ -1,15 +1,21 @@ import logging import re from urllib.parse import urlparse +from uuid import uuid4 import requests from redash.query_runner import * +from redash.query_runner import split_sql_statements from redash.utils import json_dumps, json_loads logger = logging.getLogger(__name__) +def split_multi_query(query): + return [st for st in split_sql_statements(query) if st != ""] + + class ClickHouse(BaseSQLQueryRunner): noop_query = "SELECT 1" @@ -87,25 +93,41 @@ def _get_tables(self, schema): return list(schema.values()) - def _send_query(self, data, stream=False): + def _send_query(self, data, session_id=None, session_check=None): url = self.configuration.get("url", "http://127.0.0.1:8123") + timeout = self.configuration.get("timeout", 30) + + params = { + "user": self.configuration.get("user", "default"), + "password": self.configuration.get("password", ""), + "database": self.configuration["dbname"], + "default_format": "JSON", + } + + if session_id: + params["session_id"] = session_id + params["session_check"] = "1" if session_check else "0" + params["session_timeout"] = timeout + try: verify = self.configuration.get("verify", True) r = requests.post( url, - data=data.encode("utf-8","ignore"), - stream=stream, - timeout=self.configuration.get("timeout", 30), - params={ - "user": self.configuration.get("user", "default"), - "password": self.configuration.get("password", ""), - "database": self.configuration["dbname"], - }, + data=data.encode("utf-8", "ignore"), + stream=False, + timeout=timeout, + params=params, verify=verify, ) + if r.status_code != 200: raise Exception(r.text) - # logging.warning(r.json()) + + # In certain situations the response body can be empty even if the query was successful, for example + # when creating temporary tables. + if not r.text: + return {} + return r.json() except requests.RequestException as e: if e.response: @@ -133,14 +155,19 @@ def _define_column_type(column): else: return TYPE_STRING - def _clickhouse_query(self, query): + def _clickhouse_query(self, query, session_id=None, session_check=None): + logger.debug("Clickhouse is about to execute query: %s", query) + query += "\nFORMAT JSON" - result = self._send_query(query) + + response = self._send_query(query, session_id, session_check) + columns = [] columns_int64 = [] # db converts value to string if its type equals UInt64 columns_totals = {} - for r in result["meta"]: + meta = response.get("meta", []) + for r in meta: column_name = r["name"] column_type = self._define_column_type(r["type"]) @@ -155,7 +182,7 @@ def _clickhouse_query(self, query): {"name": column_name, "friendly_name": column_name, "type": column_type} ) - rows = result["data"] + rows = response.get("data", []) for row in rows: for column in columns_int64: try: @@ -163,8 +190,8 @@ def _clickhouse_query(self, query): except TypeError: row[column] = None - if "totals" in result: - totals = result["totals"] + if "totals" in response: + totals = response["totals"] for column, value in columns_totals.items(): totals[column] = value rows.append(totals) @@ -172,14 +199,32 @@ def _clickhouse_query(self, query): return {"columns": columns, "rows": rows} def run_query(self, query, user): - logger.debug("Clickhouse is about to execute query: %s", query) - if query == "": + queries = split_multi_query(query) + + if not queries: json_data = None error = "Query is empty" return json_data, error + try: - q = self._clickhouse_query(query) - data = json_dumps(q) + # If just one query was given no session is needed + if len(queries) == 1: + results = self._clickhouse_query(queries[0]) + else: + # If more than one query was given, a session is needed. Parameter session_check must be false + # for the first query + session_id = "redash_{}".format(uuid4().hex) + + results = self._clickhouse_query( + queries[0], session_id, session_check=False + ) + + for query in queries[1:]: + results = self._clickhouse_query( + query, session_id, session_check=True + ) + + data = json_dumps(results) error = None except Exception as e: data = None diff --git a/tests/query_runner/test_clickhouse.py b/tests/query_runner/test_clickhouse.py new file mode 100644 index 0000000000..fd0221874b --- /dev/null +++ b/tests/query_runner/test_clickhouse.py @@ -0,0 +1,192 @@ +import json +from unittest import TestCase +from unittest.mock import Mock, patch + +from redash.query_runner import TYPE_INTEGER +from redash.query_runner.clickhouse import ClickHouse, split_multi_query + +split_multi_query_samples = [ + # Regular query + ("SELECT 1", ["SELECT 1"]), + # Multiple data queries inlined + ("SELECT 1; SELECT 2;", ["SELECT 1", "SELECT 2"]), + # Multiline data queries + ( + """ +SELECT 1; +SELECT 2; +""", + ["SELECT 1", "SELECT 2"], + ), + # Commented data queries + ( + """ +-- First query single-line commentary +SELECT 1; + +/** + * Second query multi-line commentary + */ +SELECT 2; + +-- Tail single-line commentary + +/** + * Tail multi-line commentary + */ +""", + [ + "-- First query single-line commentary\nSELECT 1", + "/**\n * Second query multi-line commentary\n */\nSELECT 2", + ], + ), + # Should skip empty statements + ( + """ +;;; +; +SELECT 1; +""", + ["SELECT 1"], + ), +] + + +class TestClickHouseQueriesSplit(TestCase): + def test_split(self): + for sample in split_multi_query_samples: + query, expected = sample + + self.assertEqual(split_multi_query(query), expected) + + +simple_query_response = { + "meta": [ + {"name": "1", "type": "UInt8"}, + ], + "data": [ + {"1": 1}, + ], + "rows": 1, + "statistics": {"elapsed": 0.0001278, "rows_read": 1, "bytes_read": 1}, +} + + +class TestClickHouse(TestCase): + @patch("requests.post") + def test_send_single_query(self, post_request): + query_runner = ClickHouse( + {"url": "http://clickhouse:8123", "dbname": "system", "timeout": 60} + ) + + response = Mock() + response.status_code = 200 + response.text = json.dumps(simple_query_response) + response.json.return_value = simple_query_response + post_request.return_value = response + + data, error = query_runner.run_query("SELECT 1", None) + + self.assertIsNone(error) + self.assertEqual( + json.loads(data), + { + "columns": [ + {"name": "1", "friendly_name": "1", "type": TYPE_INTEGER}, + ], + "rows": [ + {"1": 1}, + ], + }, + ) + + (url,), kwargs = post_request.call_args + self.assertEqual(url, "http://clickhouse:8123") + self.assertEqual(kwargs["data"], b"SELECT 1\nFORMAT JSON") + self.assertEqual( + kwargs["params"], + { + "user": "default", + "password": "", + "database": "system", + "default_format": "JSON", + }, + ) + self.assertEqual(kwargs["timeout"], 60) + + @patch("requests.post") + def test_send_multi_query(self, post_request): + query_runner = ClickHouse( + {"url": "http://clickhouse:8123", "dbname": "system", "timeout": 60} + ) + + create_table_response = Mock() + create_table_response.status_code = 200 + create_table_response.text = "" + + select_response = Mock() + select_response.status_code = 200 + select_response.text = json.dumps(simple_query_response) + select_response.json.return_value = simple_query_response + + post_request.side_effect = [create_table_response, select_response] + + data, error = query_runner.run_query( + """ +CREATE +TEMPORARY TABLE test AS +SELECT 1; +SELECT * FROM test; + """, + None, + ) + + self.assertIsNone(error) + self.assertEqual( + json.loads(data), + { + "columns": [ + {"name": "1", "friendly_name": "1", "type": TYPE_INTEGER}, + ], + "rows": [ + {"1": 1}, + ], + }, + ) + + (url,), kwargs = post_request.call_args_list[0] + self.assertEqual(url, "http://clickhouse:8123") + self.assertEqual( + kwargs["data"], + b"""CREATE +TEMPORARY TABLE test AS +SELECT 1 +FORMAT JSON""", + ) + self.assert_session_params(kwargs, expected_check="0", expected_timeout=60) + + session_id = kwargs["params"]["session_id"] + + (url,), kwargs = post_request.call_args_list[1] + self.assertEqual(url, "http://clickhouse:8123") + self.assertEqual( + kwargs["data"], + b"""SELECT * FROM test +FORMAT JSON""", + ) + + self.assert_session_params( + kwargs, expected_check="1", expected_timeout=60, expected_id=session_id + ) + + def assert_session_params( + self, kwargs, expected_check, expected_timeout, expected_id=None + ): + self.assertEqual(kwargs["params"]["session_check"], expected_check) + self.assertEqual(kwargs["params"]["session_timeout"], expected_timeout) + + session_id = kwargs["params"]["session_id"] + self.assertRegex(session_id, r"redash_[a-f0-9]+") + + if expected_id: + self.assertEqual(kwargs["params"]["session_id"], session_id) From 0712abb3590046d96d7252e7e4575875aefe5b84 Mon Sep 17 00:00:00 2001 From: Aniket Kulkarni Date: Fri, 15 Jul 2022 15:29:28 -0400 Subject: [PATCH 030/274] README: update list of supported data sources (#5790) Co-authored-by: Jesse Whitehouse --- README.md | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 4ae2f59fd7..8e4b6b9e1f 100644 --- a/README.md +++ b/README.md @@ -32,17 +32,25 @@ Redash features: Redash supports more than 35 SQL and NoSQL [data sources](https://redash.io/help/data-sources/supported-data-sources). It can also be extended to support more. Below is a list of built-in sources: - Amazon Athena +- Amazon CloudWatch / Insights - Amazon DynamoDB - Amazon Redshift +- ArangoDB - Axibase Time Series Database - Apache Cassandra - ClickHouse - CockroachDB +- Couchbase - CSV -- Databricks (Apache Spark) +- Databricks - DB2 by IBM +- Dgraph +- Apache Drill - Apache Druid +- Eccenca Corporate Memory - Elasticsearch +- Exasol +- Microsoft Excel - Firebolt - Google Analytics - Google BigQuery @@ -52,17 +60,20 @@ Redash supports more than 35 SQL and NoSQL [data sources](https://redash.io/help - Apache Hive - Apache Impala - InfluxDB -- JIRA +- IBM Netezza Performance Server +- JIRA (JQL) - JSON - Apache Kylin - OmniSciDB (Formerly MapD) - MemSQL - Microsoft Azure Data Warehouse / Synapse - Microsoft Azure SQL Database +- Microsoft Azure Data Explorer / Kusto - Microsoft SQL Server - MongoDB - MySQL - Oracle +- Apache Phoenix - PostgreSQL - Presto - Prometheus @@ -73,9 +84,12 @@ Redash supports more than 35 SQL and NoSQL [data sources](https://redash.io/help - ScyllaDB - Shell Scripts - Snowflake +- SPARQL - SQLite - TiDB - TreasureData +- Trino +- Uptycs - Vertica - Yandex AppMetrrica - Yandex Metrica From 4186f8303ee28d5cde7ca248c57df9023eba6224 Mon Sep 17 00:00:00 2001 From: Jesse Date: Wed, 20 Jul 2022 07:47:44 -0500 Subject: [PATCH 031/274] New ElasticSearch Query Runner (#5794) - A runner supporting the newest versions of ES, aggregation, nested aggregations and nested fields. - A runner for the SQL OpenDistro flavor - A runner for the SQL X-Pack flavor Co-authored-by: Nicolas Le Manchet Co-authored-by: wwl717195673 <717195673@qq.com> --- .../assets/images/db-logos/elasticsearch2.png | Bin 0 -> 16596 bytes ...sticsearch2_OpenDistroSQLElasticSearch.png | Bin 0 -> 16596 bytes .../elasticsearch2_XPackSQLElasticSearch.png | Bin 0 -> 16596 bytes redash/query_runner/amazon_elasticsearch.py | 4 +- redash/query_runner/elasticsearch.py | 1 + redash/query_runner/elasticsearch2.py | 318 ++++++++++++++++++ redash/settings/__init__.py | 1 + tests/query_runner/test_elasticsearch2.py | 267 +++++++++++++++ 8 files changed, 589 insertions(+), 2 deletions(-) create mode 100644 client/app/assets/images/db-logos/elasticsearch2.png create mode 100644 client/app/assets/images/db-logos/elasticsearch2_OpenDistroSQLElasticSearch.png create mode 100644 client/app/assets/images/db-logos/elasticsearch2_XPackSQLElasticSearch.png create mode 100644 redash/query_runner/elasticsearch2.py create mode 100644 tests/query_runner/test_elasticsearch2.py diff --git a/client/app/assets/images/db-logos/elasticsearch2.png b/client/app/assets/images/db-logos/elasticsearch2.png new file mode 100644 index 0000000000000000000000000000000000000000..e7cb9c83455a49737390182af9f7dc802757f953 GIT binary patch literal 16596 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 Y63n4iQ0yc97z#i}LQ%Y0)F}AB0oOPgy8r+H literal 0 HcmV?d00001 diff --git a/client/app/assets/images/db-logos/elasticsearch2_OpenDistroSQLElasticSearch.png b/client/app/assets/images/db-logos/elasticsearch2_OpenDistroSQLElasticSearch.png new file mode 100644 index 0000000000000000000000000000000000000000..e7cb9c83455a49737390182af9f7dc802757f953 GIT binary patch literal 16596 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 Y63n4iQ0yc97z#i}LQ%Y0)F}AB0oOPgy8r+H literal 0 HcmV?d00001 diff --git a/client/app/assets/images/db-logos/elasticsearch2_XPackSQLElasticSearch.png b/client/app/assets/images/db-logos/elasticsearch2_XPackSQLElasticSearch.png new file mode 100644 index 0000000000000000000000000000000000000000..e7cb9c83455a49737390182af9f7dc802757f953 GIT binary patch literal 16596 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 Y63n4iQ0yc97z#i}LQ%Y0)F}AB0oOPgy8r+H literal 0 HcmV?d00001 diff --git a/redash/query_runner/amazon_elasticsearch.py b/redash/query_runner/amazon_elasticsearch.py index cf81969874..529892af89 100644 --- a/redash/query_runner/amazon_elasticsearch.py +++ b/redash/query_runner/amazon_elasticsearch.py @@ -1,4 +1,4 @@ -from .elasticsearch import ElasticSearch +from .elasticsearch2 import ElasticSearch2 from . import register try: @@ -10,7 +10,7 @@ enabled = False -class AmazonElasticsearchService(ElasticSearch): +class AmazonElasticsearchService(ElasticSearch2): @classmethod def name(cls): return "Amazon Elasticsearch Service" diff --git a/redash/query_runner/elasticsearch.py b/redash/query_runner/elasticsearch.py index d96dd1e433..a87209d58a 100644 --- a/redash/query_runner/elasticsearch.py +++ b/redash/query_runner/elasticsearch.py @@ -44,6 +44,7 @@ class BaseElasticSearch(BaseQueryRunner): should_annotate_query = False DEBUG_ENABLED = False + deprecated=True @classmethod def configuration_schema(cls): diff --git a/redash/query_runner/elasticsearch2.py b/redash/query_runner/elasticsearch2.py new file mode 100644 index 0000000000..08d5e8981c --- /dev/null +++ b/redash/query_runner/elasticsearch2.py @@ -0,0 +1,318 @@ +import logging +from typing import Tuple, Optional + +from redash.query_runner import * +from redash.utils import json_dumps, json_loads + + +logger = logging.getLogger(__name__) + +ELASTICSEARCH_TYPES_MAPPING = { + "integer": TYPE_INTEGER, + "long": TYPE_INTEGER, + "float": TYPE_FLOAT, + "double": TYPE_FLOAT, + "boolean": TYPE_BOOLEAN, + "string": TYPE_STRING, + "date": TYPE_DATE, + "object": TYPE_STRING, +} + + +TYPES_MAP = { + str: TYPE_STRING, + int: TYPE_INTEGER, + float: TYPE_FLOAT, + bool: TYPE_BOOLEAN, +} + + +class ElasticSearch2(BaseHTTPQueryRunner): + + should_annotate_query = False + + @classmethod + def name(cls): + return "ElasticSearch" + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.syntax = 'json' + + def get_response(self, url, auth=None, http_method='get', **kwargs): + url = "{}{}".format(self.configuration["url"], url) + headers = kwargs.pop('headers', {}) + headers['Accept'] = 'application/json' + return super().get_response(url, auth, http_method, headers=headers, **kwargs) + + def test_connection(self): + _, error = self.get_response("/_cluster/health") + if error is not None: + raise Exception(error) + + def run_query(self, query, user): + query, url, result_fields = self._build_query(query) + response, error = self.get_response( + url, + http_method='post', + json=query + ) + query_results = response.json() + data = self._parse_results(result_fields, query_results) + error = None + json_data = json_dumps(data) + return json_data, error + + def _build_query(self, query: str) -> Tuple[dict, str, Optional[list]]: + query = json_loads(query) + index_name = query.pop('index', '') + result_fields = query.pop('result_fields', None) + url = "/{}/_search".format(index_name) + return query, url, result_fields + + @classmethod + def _parse_mappings(cls, mappings_data: dict): + mappings = {} + + def _parse_properties(prefix: str, properties: dict): + for property_name, property_data in properties.items(): + if property_name not in mappings: + property_type = property_data.get('type', None) + nested_properties = property_data.get('properties', None) + if property_type: + mappings[index_name][prefix + property_name] = ( + ELASTICSEARCH_TYPES_MAPPING.get(property_type, TYPE_STRING) + ) + elif nested_properties: + new_prefix = prefix + property_name + '.' + _parse_properties(new_prefix, nested_properties) + + for index_name in mappings_data: + mappings[index_name] = {} + index_mappings = mappings_data[index_name] + try: + for m in index_mappings.get("mappings", {}): + _parse_properties('', index_mappings['mappings'][m]['properties']) + except KeyError: + _parse_properties('', index_mappings['mappings']['properties']) + + return mappings + + def get_mappings(self): + response, error = self.get_response('/_mappings') + return self._parse_mappings(response.json()) + + def get_schema(self, *args, **kwargs): + schema = {} + for name, columns in self.get_mappings().items(): + schema[name] = { + 'name': name, + 'columns': list(columns.keys()) + } + return list(schema.values()) + + @classmethod + def _parse_results(cls, result_fields, raw_result): + result_columns = [] + result_rows = [] + result_columns_index = {c["name"]: c for c in result_columns} + result_fields_index = {} + + def add_column_if_needed(column_name, value=None): + if column_name not in result_columns_index: + result_columns.append({ + 'name': column_name, + 'friendly_name': column_name, + 'type': TYPES_MAP.get(type(value), TYPE_STRING) + }) + result_columns_index[column_name] = result_columns[-1] + + def get_row(rows, row): + if row is None: + row = {} + rows.append(row) + return row + + def collect_value(row, key, value): + if result_fields and key not in result_fields_index: + return + + add_column_if_needed(key, value) + row[key] = value + + def parse_bucket_to_row(data, row, agg_key): + sub_agg_key = "" + for key, item in data.items(): + if key == 'key_as_string': + continue + if key == 'key': + if 'key_as_string' in data: + collect_value(row, agg_key, data['key_as_string']) + else: + collect_value(row, agg_key, data['key']) + continue + + if isinstance(item, (str, int, float)): + collect_value(row, agg_key + '.' + key, item) + elif isinstance(item, dict): + if 'buckets' not in item: + for sub_key, sub_item in item.items(): + collect_value( + row, + agg_key + '.' + key + '.' + sub_key, + sub_item, + ) + else: + sub_agg_key = key + + return sub_agg_key + + def parse_buckets_list(rows, parent_key, data, row, depth): + if len(rows) > 0 and depth == 0: + row = rows.pop() + + for value in data: + row = row.copy() + sub_agg_key = parse_bucket_to_row(value, row, parent_key) + + if sub_agg_key == "": + rows.append(row) + else: + depth += 1 + parse_buckets_list(rows, sub_agg_key, value[sub_agg_key]['buckets'], row, depth) + + def collect_aggregations(rows, parent_key, data, row, depth): + row = get_row(rows, row) + parse_bucket_to_row(data, row, parent_key) + + if 'buckets' in data: + parse_buckets_list(rows, parent_key, data['buckets'], row, depth) + + return None + + def get_flatten_results(dd, separator='.', prefix=''): + if isinstance(dd, dict): + return { + prefix + separator + k if prefix else k: v + for kk, vv in dd.items() + for k, v in get_flatten_results(vv, separator, kk).items() + } + elif isinstance(dd, list) and len(dd) == 1: + return {prefix: dd[0]} + else: + return {prefix: dd} + + if result_fields: + for r in result_fields: + result_fields_index[r] = None + + if 'error' in raw_result: + error = raw_result['error'] + if len(error) > 10240: + error = error[:10240] + '... continues' + + raise Exception(error) + elif 'aggregations' in raw_result: + for key, data in raw_result["aggregations"].items(): + collect_aggregations(result_rows, key, data, None, 0) + + elif 'hits' in raw_result and 'hits' in raw_result['hits']: + for h in raw_result["hits"]["hits"]: + row = {} + + fields_parameter_name = "_source" if "_source" in h else "fields" + for column in h[fields_parameter_name]: + if result_fields and column not in result_fields_index: + continue + + unested_results = get_flatten_results({column: h[fields_parameter_name][column]}) + + for column_name, value in unested_results.items(): + add_column_if_needed(column_name, value=value) + row[column_name] = value + + result_rows.append(row) + else: + raise Exception("Redash failed to parse the results it got from Elasticsearch.") + + return { + 'columns': result_columns, + 'rows': result_rows + } + + +class OpenDistroSQLElasticSearch(ElasticSearch2): + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.syntax = 'sql' + + def _build_query(self, query: str) -> Tuple[dict, str, Optional[list]]: + sql_query = { + 'query': query + } + sql_query_url = '/_opendistro/_sql' + return sql_query, sql_query_url, None + + @classmethod + def name(cls): + return cls.__name__ + + @classmethod + def type(cls): + return "elasticsearch2_OpenDistroSQLElasticSearch" + + + +class XPackSQLElasticSearch(ElasticSearch2): + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.syntax = 'sql' + + def _build_query(self, query: str) -> Tuple[dict, str, Optional[list]]: + sql_query = { + 'query': query + } + sql_query_url = '/_xpack/sql' + return sql_query, sql_query_url, None + + @classmethod + def _parse_results(cls, result_fields, raw_result): + error = raw_result.get('error') + if error: + raise Exception(error) + + rv = { + 'columns': [ + { + 'name': c['name'], + 'friendly_name': c['name'], + 'type': ELASTICSEARCH_TYPES_MAPPING.get(c['type'], 'string') + } for c in raw_result['columns'] + ], + 'rows': [] + } + query_results_rows = raw_result['rows'] + + for query_results_row in query_results_rows: + result_row = dict() + for column, column_value in zip(rv['columns'], query_results_row): + result_row[column['name']] = column_value + rv['rows'].append(result_row) + + return rv + + @classmethod + def name(cls): + return cls.__name__ + + @classmethod + def type(cls): + return "elasticsearch2_XPackSQLElasticSearch" + + + +register(ElasticSearch2) +register(OpenDistroSQLElasticSearch) +register(XPackSQLElasticSearch) diff --git a/redash/settings/__init__.py b/redash/settings/__init__.py index 8b9392d1eb..5884fae008 100644 --- a/redash/settings/__init__.py +++ b/redash/settings/__init__.py @@ -345,6 +345,7 @@ def email_server_is_configured(): "redash.query_runner.url", "redash.query_runner.influx_db", "redash.query_runner.elasticsearch", + "redash.query_runner.elasticsearch2", "redash.query_runner.amazon_elasticsearch", "redash.query_runner.trino", "redash.query_runner.presto", diff --git a/tests/query_runner/test_elasticsearch2.py b/tests/query_runner/test_elasticsearch2.py new file mode 100644 index 0000000000..ffa6d4b2de --- /dev/null +++ b/tests/query_runner/test_elasticsearch2.py @@ -0,0 +1,267 @@ +from unittest import TestCase + +from redash.query_runner.elasticsearch2 import ElasticSearch2, XPackSQLElasticSearch + + +class TestElasticSearch(TestCase): + + def test_parse_mappings(self): + mapping_data = { + "bank": { + "mappings": { + "properties": { + "account_number": { + "type": "long" + }, + "balance": { + "type": "long" + }, + "city": { + "fields": { + "keyword": { + "ignore_above": 256, + "type": "keyword" + } + }, + "type": "text" + }, + "geo": { + "properties": { + "lat": { + "type": "long" + }, + "long": { + "type": "long" + } + } + }, + } + } + } + } + expected = { + 'bank': { + 'account_number': 'integer', + 'balance': 'integer', + 'city': 'string', + 'geo.lat': 'integer', + 'geo.long': 'integer' + } + } + self.assertDictEqual(ElasticSearch2._parse_mappings(mapping_data), expected) + + def test_parse_aggregation(self): + response = { + "took": 3, + "timed_out": False, + "_shards": { + "total": 1, + "successful": 1, + "skipped": 0, + "failed": 0 + }, + "hits": { + "total": { + "value": 1001, + "relation": "eq" + }, + "max_score": None, + "hits": [] + }, + "aggregations": { + "group_by_state": { + "doc_count_error_upper_bound": 0, + "sum_other_doc_count": 743, + "buckets": [ + { + "key": "TX", + "doc_count": 30 + }, + { + "key": "MD", + "doc_count": 28 + }, + { + "key": "ID", + "doc_count": 27 + }, + ] + } + } + } + expected = { + 'columns': [ + { + 'friendly_name': 'group_by_state', + 'name': 'group_by_state', + 'type': 'string' + }, + { + 'friendly_name': 'group_by_state.doc_count', + 'name': 'group_by_state.doc_count', + 'type': 'integer' + } + ], + 'rows': [ + { + 'group_by_state': 'TX', + 'group_by_state.doc_count': 30, + }, + { + 'group_by_state': 'MD', + 'group_by_state.doc_count': 28, + }, + { + 'group_by_state': 'ID', + 'group_by_state.doc_count': 27, + } + ] + } + fields = ['group_by_state', 'group_by_state.doc_count'] + self.assertDictEqual(ElasticSearch2._parse_results(fields, response), expected) + + def test_parse_sub_aggregation(self): + response = { + "took": 2, + "timed_out": False, + "_shards": { + "total": 1, + "successful": 1, + "skipped": 0, + "failed": 0 + }, + "hits": { + "total": { + "value": 1001, + "relation": "eq" + }, + "max_score": None, + "hits": [] + }, + "aggregations": { + "group_by_state": { + "doc_count_error_upper_bound": -1, + "sum_other_doc_count": 828, + "buckets": [ + { + "key": "CO", + "doc_count": 14, + "average_balance": { + "value": 32460.35714285714 + } + }, + { + "key": "AZ", + "doc_count": 14, + "average_balance": { + "value": 31634.785714285714 + } + } + ] + } + } + } + expected = { + 'columns': [ + { + 'friendly_name': 'group_by_state', + 'name': 'group_by_state', + 'type': 'string' + }, + { + 'friendly_name': 'group_by_state.average_balance.value', + 'name': 'group_by_state.average_balance.value', + 'type': 'float' + } + ], + 'rows': [ + { + 'group_by_state': 'CO', + 'group_by_state.average_balance.value': 32460.35714285714, + }, + { + 'group_by_state': 'AZ', + 'group_by_state.average_balance.value': 31634.785714285714, + }, + ] + } + fields = ['group_by_state', 'group_by_state.average_balance.value'] + self.assertDictEqual(ElasticSearch2._parse_results(fields, response), expected) + + +class TestXPackSQL(TestCase): + + def test_parse_results(self): + response = { + "columns": [ + { + "name": "account_number", + "type": "long" + }, + { + "name": "firstname", + "type": "text" + }, + { + "name": "geo.lat", + "type": "long" + }, + { + "name": "geo.long", + "type": "long" + }, + ], + "rows": [ + [ + 1000, + "Nicolas", + 2423, + 7654 + ], + [ + 999, + "Dorothy", + None, + None + ] + ] + } + expected = { + 'columns': [ + { + 'friendly_name': 'account_number', + 'name': 'account_number', + 'type': 'integer' + }, + { + 'friendly_name': 'firstname', + 'name': 'firstname', + 'type': 'string' + }, + { + 'friendly_name': 'geo.lat', + 'name': 'geo.lat', + 'type': 'integer' + }, + { + 'friendly_name': 'geo.long', + 'name': 'geo.long', + 'type': 'integer' + } + ], + 'rows': [ + { + 'account_number': 1000, + 'firstname': 'Nicolas', + 'geo.lat': 2423, + 'geo.long': 7654 + }, + { + 'account_number': 999, + 'firstname': 'Dorothy', + 'geo.lat': None, + 'geo.long': None + } + ] + } + self.assertDictEqual(XPackSQLElasticSearch._parse_results(None, response), expected) From 2935844e88ef87a5a4f0957026629c362c910c27 Mon Sep 17 00:00:00 2001 From: luc-x41 <45362069+luc-x41@users.noreply.github.com> Date: Wed, 24 Aug 2022 15:51:22 +0200 Subject: [PATCH 032/274] README: add MariaDB to supported data sources (#5808) --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 8e4b6b9e1f..f83156d931 100644 --- a/README.md +++ b/README.md @@ -65,6 +65,7 @@ Redash supports more than 35 SQL and NoSQL [data sources](https://redash.io/help - JSON - Apache Kylin - OmniSciDB (Formerly MapD) +- MariaDB - MemSQL - Microsoft Azure Data Warehouse / Synapse - Microsoft Azure SQL Database From 75cb59f4befc49cc10ceeff238c5fd0ad421b072 Mon Sep 17 00:00:00 2001 From: trigremm Date: Wed, 24 Aug 2022 20:26:09 +0600 Subject: [PATCH 033/274] Databricks ODBC Driver: follow redirects (#5814) Use curl --location --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 68f3cf974e..68575c4171 100644 --- a/Dockerfile +++ b/Dockerfile @@ -72,7 +72,7 @@ RUN if [ "$TARGETPLATFORM" = "linux/amd64" ]; then \ && ACCEPT_EULA=Y apt-get install -y --no-install-recommends msodbcsql17 \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* \ - && curl "$databricks_odbc_driver_url" --output /tmp/simba_odbc.zip \ + && curl "$databricks_odbc_driver_url" --location --output /tmp/simba_odbc.zip \ && chmod 600 /tmp/simba_odbc.zip \ && unzip /tmp/simba_odbc.zip -d /tmp/ \ && dpkg -i /tmp/SimbaSparkODBC-*/*.deb \ From 71458e5697e402badac28902bcc61a7f4ddac413 Mon Sep 17 00:00:00 2001 From: Ikko Ashimine Date: Sat, 24 Sep 2022 15:01:31 +0900 Subject: [PATCH 034/274] Fix typo in users.py (#5818) seperated -> separated --- redash/cli/users.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/redash/cli/users.py b/redash/cli/users.py index fc6a4420ee..a6e35a02b6 100644 --- a/redash/cli/users.py +++ b/redash/cli/users.py @@ -265,7 +265,7 @@ def password(email, password, organization=None): "--groups", "groups", default=None, - help="Comma seperated list of groups (leave blank for default).", + help="Comma separated list of groups (leave blank for default).", ) def invite(email, name, inviter_email, groups, is_admin=False, organization="default"): """ From a863c8c08c5610180a1d798fb0c0bd16e6e2633d Mon Sep 17 00:00:00 2001 From: Xiang Fu Date: Thu, 6 Oct 2022 23:40:00 -0700 Subject: [PATCH 035/274] Adding Apache Pinot Query Runner (#5798) * Adding Apache Pinot integration * address comments --- README.md | 1 + client/app/assets/images/db-logos/pinot.png | Bin 0 -> 29662 bytes redash/query_runner/pinot.py | 134 ++++++++++++++++++++ redash/settings/__init__.py | 1 + requirements_all_ds.txt | 1 + 5 files changed, 137 insertions(+) create mode 100644 client/app/assets/images/db-logos/pinot.png create mode 100644 redash/query_runner/pinot.py diff --git a/README.md b/README.md index f83156d931..3491c48224 100644 --- a/README.md +++ b/README.md @@ -75,6 +75,7 @@ Redash supports more than 35 SQL and NoSQL [data sources](https://redash.io/help - MySQL - Oracle - Apache Phoenix +- Apache Pinot - PostgreSQL - Presto - Prometheus diff --git a/client/app/assets/images/db-logos/pinot.png b/client/app/assets/images/db-logos/pinot.png new file mode 100644 index 0000000000000000000000000000000000000000..7527e7b157ad2b26ca8a0280b77aff25e8670f89 GIT binary patch literal 29662 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.15 nzalchemy python-arango==6.1.0 +pinotdb>=0.4.5 \ No newline at end of file From 328099137de07736485a28d6c2e185ac760cf0bb Mon Sep 17 00:00:00 2001 From: kevinchiang Date: Thu, 6 Oct 2022 23:45:03 -0700 Subject: [PATCH 036/274] Microsoft Teams Webhook alert destination (#5691) * Microsoft Teams Webhook alert destination * Text formatting and new image for Microsoft Teams Webhook * Comment on how to build frontend * Add title to clarify webhook URL * Make the message into a configurable template. --- .../destinations/microsoft_teams_webhook.png | Bin 0 -> 4206 bytes docker-compose.yml | 2 +- .../destinations/microsoft_teams_webhook.py | 128 ++++++++++++++++++ redash/settings/__init__.py | 1 + 4 files changed, 130 insertions(+), 1 deletion(-) create mode 100644 client/app/assets/images/destinations/microsoft_teams_webhook.png create mode 100644 redash/destinations/microsoft_teams_webhook.py diff --git a/client/app/assets/images/destinations/microsoft_teams_webhook.png b/client/app/assets/images/destinations/microsoft_teams_webhook.png new file mode 100644 index 0000000000000000000000000000000000000000..8ada5c8c6996db03d13ea031eeb304c9eb3c0876 GIT binary patch literal 4206 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 {status}".format( + status=resp.status_code + ) + ) + except Exception: + logging.exception("MS Teams Webhook send ERROR.") + + +register(MicrosoftTeamsWebhook) diff --git a/redash/settings/__init__.py b/redash/settings/__init__.py index 108419a04a..6dff105d30 100644 --- a/redash/settings/__init__.py +++ b/redash/settings/__init__.py @@ -423,6 +423,7 @@ def email_server_is_configured(): "redash.destinations.chatwork", "redash.destinations.pagerduty", "redash.destinations.hangoutschat", + "redash.destinations.microsoft_teams_webhook", ] enabled_destinations = array_from_string( From 5cf13afafe4a13c8db9da645d9667bc26fd118c5 Mon Sep 17 00:00:00 2001 From: Dmitriy Date: Thu, 5 Jan 2023 05:12:16 -0700 Subject: [PATCH 037/274] Improve visibility of error message during schema retrieval (#5879) * handle query execution error in one place. increase ability to debug issues with schema retrieval * split message and details for error reporting Co-authored-by: Dmitriy Apollonin --- redash/query_runner/__init__.py | 7 +++++++ redash/query_runner/athena.py | 2 +- redash/query_runner/azure_kusto.py | 2 +- redash/query_runner/big_query.py | 4 ++-- redash/query_runner/clickhouse.py | 2 +- redash/query_runner/databricks.py | 2 +- redash/query_runner/db2.py | 2 +- redash/query_runner/drill.py | 2 +- redash/query_runner/druid.py | 2 +- redash/query_runner/firebolt.py | 2 +- redash/query_runner/mssql.py | 2 +- redash/query_runner/mssql_odbc.py | 4 ++-- redash/query_runner/mysql.py | 2 +- redash/query_runner/oracle.py | 2 +- redash/query_runner/pg.py | 2 +- redash/query_runner/phoenix.py | 2 +- redash/query_runner/presto.py | 2 +- redash/query_runner/snowflake.py | 2 +- redash/query_runner/sqlite.py | 2 +- redash/query_runner/trino.py | 2 +- redash/query_runner/vertica.py | 2 +- redash/tasks/general.py | 4 ++-- 22 files changed, 31 insertions(+), 24 deletions(-) diff --git a/redash/query_runner/__init__.py b/redash/query_runner/__init__.py index d5b7532129..28228c51d3 100644 --- a/redash/query_runner/__init__.py +++ b/redash/query_runner/__init__.py @@ -234,6 +234,13 @@ def fetch_columns(self, columns): def get_schema(self, get_stats=False): raise NotSupported() + def _handle_run_query_error(self, error): + if error is None: + return + + logger.error(error) + raise Exception(f"Error during query execution. Reason: {error}") + def _run_query_internal(self, query): results, error = self.run_query(query, None) diff --git a/redash/query_runner/athena.py b/redash/query_runner/athena.py index 6145cb4a84..2fbd962490 100644 --- a/redash/query_runner/athena.py +++ b/redash/query_runner/athena.py @@ -206,7 +206,7 @@ def get_schema(self, get_stats=False): results, error = self.run_query(query, None) if error is not None: - raise Exception("Failed getting schema.") + self._handle_run_query_error(error) results = json_loads(results) for row in results["rows"]: diff --git a/redash/query_runner/azure_kusto.py b/redash/query_runner/azure_kusto.py index 24293618a6..84633dbfc7 100644 --- a/redash/query_runner/azure_kusto.py +++ b/redash/query_runner/azure_kusto.py @@ -138,7 +138,7 @@ def get_schema(self, get_stats=False): results, error = self.run_query(query, None) if error is not None: - raise Exception("Failed getting schema.") + self._handle_run_query_error(error) results = json_loads(results) diff --git a/redash/query_runner/big_query.py b/redash/query_runner/big_query.py index fef046a36e..93c8a7f084 100644 --- a/redash/query_runner/big_query.py +++ b/redash/query_runner/big_query.py @@ -305,7 +305,7 @@ def get_schema(self, get_stats=False): query = '\nUNION ALL\n'.join(queries) results, error = self.run_query(query, None) if error is not None: - raise Exception("Failed getting schema.") + self._handle_run_query_error(error) results = json_loads(results) for row in results["rows"]: @@ -341,7 +341,7 @@ def run_query(self, query, user): json_data = json_dumps(data, ignore_nan=True) except apiclient.errors.HttpError as e: json_data = None - if e.resp.status == 400: + if e.resp.status in [400, 404]: error = json_loads(e.content)["error"]["message"] else: error = e.content diff --git a/redash/query_runner/clickhouse.py b/redash/query_runner/clickhouse.py index c06cb5eb96..e373668d21 100644 --- a/redash/query_runner/clickhouse.py +++ b/redash/query_runner/clickhouse.py @@ -79,7 +79,7 @@ def _get_tables(self, schema): results, error = self.run_query(query, None) if error is not None: - raise Exception("Failed getting schema.") + self._handle_run_query_error(error) results = json_loads(results) diff --git a/redash/query_runner/databricks.py b/redash/query_runner/databricks.py index 5728968869..0d436b1634 100644 --- a/redash/query_runner/databricks.py +++ b/redash/query_runner/databricks.py @@ -154,7 +154,7 @@ def get_databases(self): results, error = self.run_query(query, None) if error is not None: - raise Exception("Failed getting schema.") + self._handle_run_query_error(error) results = json_loads(results) diff --git a/redash/query_runner/db2.py b/redash/query_runner/db2.py index ea09ad6da8..9f7a7765a6 100644 --- a/redash/query_runner/db2.py +++ b/redash/query_runner/db2.py @@ -65,7 +65,7 @@ def _get_definitions(self, schema, query): results, error = self.run_query(query, None) if error is not None: - raise Exception("Failed getting schema.") + self._handle_run_query_error(error) results = json_loads(results) diff --git a/redash/query_runner/drill.py b/redash/query_runner/drill.py index e843e68384..4d549eb662 100644 --- a/redash/query_runner/drill.py +++ b/redash/query_runner/drill.py @@ -135,7 +135,7 @@ def get_schema(self, get_stats=False): results, error = self.run_query(query, None) if error is not None: - raise Exception("Failed getting schema.") + self._handle_run_query_error(error) results = json_loads(results) diff --git a/redash/query_runner/druid.py b/redash/query_runner/druid.py index 0790d5e1e6..8536492b6d 100644 --- a/redash/query_runner/druid.py +++ b/redash/query_runner/druid.py @@ -77,7 +77,7 @@ def get_schema(self, get_stats=False): results, error = self.run_query(query, None) if error is not None: - raise Exception("Failed getting schema.") + self._handle_run_query_error(error) schema = {} results = json_loads(results) diff --git a/redash/query_runner/firebolt.py b/redash/query_runner/firebolt.py index 5f7d905778..fc892f91c4 100644 --- a/redash/query_runner/firebolt.py +++ b/redash/query_runner/firebolt.py @@ -76,7 +76,7 @@ def get_schema(self, get_stats=False): results, error = self.run_query(query, None) if error is not None: - raise Exception("Failed getting schema.") + self._handle_run_query_error(error) schema = {} results = json_loads(results) diff --git a/redash/query_runner/mssql.py b/redash/query_runner/mssql.py index 73cd38d3a8..ced7170498 100644 --- a/redash/query_runner/mssql.py +++ b/redash/query_runner/mssql.py @@ -80,7 +80,7 @@ def _get_tables(self, schema): results, error = self.run_query(query, None) if error is not None: - raise Exception("Failed getting schema.") + self._handle_run_query_error(error) results = json_loads(results) diff --git a/redash/query_runner/mssql_odbc.py b/redash/query_runner/mssql_odbc.py index c10edc2bfc..2210473e4f 100644 --- a/redash/query_runner/mssql_odbc.py +++ b/redash/query_runner/mssql_odbc.py @@ -68,7 +68,7 @@ def name(cls): @classmethod def type(cls): return "mssql_odbc" - + @property def supports_auto_limit(self): return False @@ -86,7 +86,7 @@ def _get_tables(self, schema): results, error = self.run_query(query, None) if error is not None: - raise Exception("Failed getting schema.") + self._handle_run_query_error(error) results = json_loads(results) diff --git a/redash/query_runner/mysql.py b/redash/query_runner/mysql.py index 0cbeebfe6f..83fc9b9a14 100644 --- a/redash/query_runner/mysql.py +++ b/redash/query_runner/mysql.py @@ -137,7 +137,7 @@ def _get_tables(self, schema): results, error = self.run_query(query, None) if error is not None: - raise Exception("Failed getting schema.") + self._handle_run_query_error(error) results = json_loads(results) diff --git a/redash/query_runner/oracle.py b/redash/query_runner/oracle.py index b134055a5d..ab5ecc63b0 100644 --- a/redash/query_runner/oracle.py +++ b/redash/query_runner/oracle.py @@ -85,7 +85,7 @@ def _get_tables(self, schema): results, error = self.run_query(query, None) if error is not None: - raise Exception("Failed getting schema.") + self._handle_run_query_error(error) results = json_loads(results) diff --git a/redash/query_runner/pg.py b/redash/query_runner/pg.py index 6af812faeb..20b5aed98a 100644 --- a/redash/query_runner/pg.py +++ b/redash/query_runner/pg.py @@ -186,7 +186,7 @@ def _get_definitions(self, schema, query): results, error = self.run_query(query, None) if error is not None: - raise Exception("Failed getting schema.") + self._handle_run_query_error(error) results = json_loads(results) diff --git a/redash/query_runner/phoenix.py b/redash/query_runner/phoenix.py index c3e2f242dc..61609fce4c 100644 --- a/redash/query_runner/phoenix.py +++ b/redash/query_runner/phoenix.py @@ -72,7 +72,7 @@ def get_schema(self, get_stats=False): results, error = self.run_query(query, None) if error is not None: - raise Exception("Failed getting schema.") + self._handle_run_query_error(error) results = json_loads(results) diff --git a/redash/query_runner/presto.py b/redash/query_runner/presto.py index ac76c5e710..0e205bff36 100644 --- a/redash/query_runner/presto.py +++ b/redash/query_runner/presto.py @@ -78,7 +78,7 @@ def get_schema(self, get_stats=False): results, error = self.run_query(query, None) if error is not None: - raise Exception("Failed getting schema.") + self._handle_run_query_error(error) results = json_loads(results) diff --git a/redash/query_runner/snowflake.py b/redash/query_runner/snowflake.py index 03534bdeaf..8f5ff8b3c0 100644 --- a/redash/query_runner/snowflake.py +++ b/redash/query_runner/snowflake.py @@ -173,7 +173,7 @@ def get_schema(self, get_stats=False): results, error = self._run_query_without_warehouse(query) if error is not None: - raise Exception("Failed getting schema.") + self._handle_run_query_error(error) schema = {} for row in results["rows"]: diff --git a/redash/query_runner/sqlite.py b/redash/query_runner/sqlite.py index d056dff98f..a7733de3e4 100644 --- a/redash/query_runner/sqlite.py +++ b/redash/query_runner/sqlite.py @@ -43,7 +43,7 @@ def _get_tables(self, schema): schema[table_name] = {"name": table_name, "columns": []} results_table, error = self.run_query(query_columns % (table_name,), None) if error is not None: - raise Exception("Failed getting schema.") + self._handle_run_query_error(error) results_table = json_loads(results_table) for row_column in results_table["rows"]: diff --git a/redash/query_runner/trino.py b/redash/query_runner/trino.py index bfcc1e294c..c8daf2a83e 100644 --- a/redash/query_runner/trino.py +++ b/redash/query_runner/trino.py @@ -85,7 +85,7 @@ def get_schema(self, get_stats=False): results, error = self.run_query(query, None) if error is not None: - raise Exception("Failed getting schema.") + self._handle_run_query_error(error) results = json_loads(results) schema = {} diff --git a/redash/query_runner/vertica.py b/redash/query_runner/vertica.py index a6989ee7dd..2735aeeb6c 100644 --- a/redash/query_runner/vertica.py +++ b/redash/query_runner/vertica.py @@ -75,7 +75,7 @@ def _get_tables(self, schema): results, error = self.run_query(query, None) if error is not None: - raise Exception("Failed getting schema.") + self._handle_run_query_error(error) results = json_loads(results) diff --git a/redash/tasks/general.py b/redash/tasks/general.py index c482d1f450..a48e7fd347 100644 --- a/redash/tasks/general.py +++ b/redash/tasks/general.py @@ -85,8 +85,8 @@ def get_schema(data_source_id, refresh): "message": "Data source type does not support retrieving schema", } } - except Exception: - return {"error": {"code": 2, "message": "Error retrieving schema."}} + except Exception as e: + return {"error": {"code": 2, "message": "Error retrieving schema", "details": str(e)}} def sync_user_details(): From 82361e705453bf5ab21e07ce15739b4c6cd0001e Mon Sep 17 00:00:00 2001 From: tsbkw Date: Thu, 16 Feb 2023 11:47:56 +0900 Subject: [PATCH 038/274] fix: Support importlib_metadata v5.0.0 (#5840) * fix: Support importlib_metadata v5.0.0 importlib_metadata removed compatibility shims for deprecated entry point interfaces. see: https://github.com/python/importlib_metadata/blob/main/CHANGES.rst#v500 Filter result of entry_points function by group parameter. see: https://importlib-metadata.readthedocs.io/en/latest/api.html#importlib_metadata.entry_points * fix: Enable to run in older python version In circleci frontend-unit-tests, old node image is used and python 3.5 is used. Support both old version and latest version by checking ijmportlib_metadata version --- bin/bundle-extensions | 13 ++++++++++++- redash/extensions.py | 2 +- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/bin/bundle-extensions b/bin/bundle-extensions index ce0e300854..4d0d006bc5 100755 --- a/bin/bundle-extensions +++ b/bin/bundle-extensions @@ -65,7 +65,18 @@ def load_bundles(): """ bundles = odict() - for entry_point in importlib_metadata.entry_points().get("redash.bundles", []): + # HACK: + # bin/bundle-extensions is tested in different versions. + # circleci frontend-unit-tests: python 3.5 and importlib-metadata-2.1.3 + # circleci backend-unit-tests: python 3.7 and importlib-metadata-5.0.0 + if importlib_metadata.version("importlib_metadata") >= "5.0.0": + bundles_entry_points = importlib_metadata.entry_points(group="redash.bundles") + else: + bundles_entry_points = importlib_metadata.entry_points().get( + "redash.bundles", [] + ) + + for entry_point in bundles_entry_points: logger.info('Loading Redash bundle "%s".', entry_point.name) module = entry_point_module(entry_point) # Try to get a list of bundle files diff --git a/redash/extensions.py b/redash/extensions.py index 56452d1d13..f3a79dcfb2 100644 --- a/redash/extensions.py +++ b/redash/extensions.py @@ -27,7 +27,7 @@ def entry_point_loader(group_name, mapping, logger=None, *args, **kwargs): if logger is None: logger = extension_logger - for entry_point in entry_points().get(group_name, []): + for entry_point in entry_points(group=group_name): logger.info('Loading entry point "%s".', entry_point.name) try: # Then try to load the entry point (import and getattr) From d6dbc64cfe4ccd9a62f1a9b62ebf602442ee120c Mon Sep 17 00:00:00 2001 From: Izumu KUSUNOKI Date: Fri, 17 Feb 2023 23:24:49 +0900 Subject: [PATCH 039/274] bug fix SAML_LOGIN_ENABLED setting logic (#5784) --- redash/settings/organization.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/redash/settings/organization.py b/redash/settings/organization.py index e2f0694f48..f4a3d99818 100644 --- a/redash/settings/organization.py +++ b/redash/settings/organization.py @@ -21,7 +21,10 @@ SAML_SSO_URL = os.environ.get("REDASH_SAML_SSO_URL", "") SAML_X509_CERT = os.environ.get("REDASH_SAML_X509_CERT", "") SAML_SP_SETTINGS = os.environ.get("REDASH_SAML_SP_SETTINGS", "") -SAML_LOGIN_ENABLED = SAML_SSO_URL != "" and SAML_METADATA_URL != "" +if SAML_LOGIN_TYPE == "static": + SAML_LOGIN_ENABLED = SAML_SSO_URL != "" and SAML_METADATA_URL != "" +else: + SAML_LOGIN_ENABLED = SAML_METADATA_URL != "" DATE_FORMAT = os.environ.get("REDASH_DATE_FORMAT", "DD/MM/YY") TIME_FORMAT = os.environ.get("REDASH_TIME_FORMAT", "HH:mm") From 7ec443c80021920833dc1f12dc76e30dce11aa7b Mon Sep 17 00:00:00 2001 From: Peter Lee Date: Fri, 17 Feb 2023 22:36:25 +0800 Subject: [PATCH 040/274] fix word spell (#5859) Co-authored-by: guyu --- redash/metrics/request.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/redash/metrics/request.py b/redash/metrics/request.py index 7f94da4ad9..d9b2f3e5c0 100644 --- a/redash/metrics/request.py +++ b/redash/metrics/request.py @@ -9,7 +9,7 @@ metrics_logger = logging.getLogger("metrics") -def record_requets_start_time(): +def record_request_start_time(): g.start_time = time.time() @@ -53,6 +53,6 @@ def calculate_metrics_on_exception(error): def init_app(app): - app.before_request(record_requets_start_time) + app.before_request(record_request_start_time) app.after_request(calculate_metrics) app.teardown_request(calculate_metrics_on_exception) From a1e3369ba3a919bf8b57ab234a44eb923497e53a Mon Sep 17 00:00:00 2001 From: Arik Fraimovich Date: Sat, 18 Mar 2023 08:03:20 -0700 Subject: [PATCH 041/274] Update references from Discourse to Discussions. (#5916) --- .github/ISSUE_TEMPLATE/---bug_report.md | 6 +++--- .github/ISSUE_TEMPLATE/--anything_else.md | 10 +++++----- .github/support.yml | 23 ----------------------- CONTRIBUTING.md | 7 +++---- README.md | 2 +- 5 files changed, 12 insertions(+), 36 deletions(-) delete mode 100644 .github/support.yml diff --git a/.github/ISSUE_TEMPLATE/---bug_report.md b/.github/ISSUE_TEMPLATE/---bug_report.md index f376d6f1ce..1399ef7791 100644 --- a/.github/ISSUE_TEMPLATE/---bug_report.md +++ b/.github/ISSUE_TEMPLATE/---bug_report.md @@ -7,10 +7,10 @@ about: Report reproducible software issues so we can improve We use GitHub only for bug reports 🐛 -Anything else should be posted to https://discuss.redash.io 👫 +Anything else should be a discussion: https://github.com/getredash/redash/discussions/ 👫 -🚨For support, help & questions use https://discuss.redash.io/c/support -💡For feature requests & ideas use https://discuss.redash.io/c/feature-requests +🚨For support, help & questions use https://github.com/getredash/redash/discussions/categories/q-a +💡For feature requests & ideas use https://github.com/getredash/redash/discussions/categories/ideas **Found a security vulnerability?** Please email security@redash.io to report any security vulnerabilities. We will acknowledge receipt of your vulnerability and strive to send you regular updates about our progress. If you're curious about the status of your disclosure please feel free to email us again. If you want to encrypt your disclosure email, you can use this PGP key. diff --git a/.github/ISSUE_TEMPLATE/--anything_else.md b/.github/ISSUE_TEMPLATE/--anything_else.md index 9db411b781..d6886cc4ce 100644 --- a/.github/ISSUE_TEMPLATE/--anything_else.md +++ b/.github/ISSUE_TEMPLATE/--anything_else.md @@ -1,17 +1,17 @@ --- name: "\U0001F4A1Anything else" -about: "For help, support, features & ideas - please use https://discuss.redash.io \U0001F46B " +about: "For help, support, features & ideas - please use Discussions \U0001F46B " labels: "Support Question" --- We use GitHub only for bug reports 🐛 -Anything else should be posted to https://discuss.redash.io 👫 +Anything else should be a discussion: https://github.com/getredash/redash/discussions/ 👫 -🚨For support, help & questions use https://discuss.redash.io/c/support -💡For feature requests & ideas use https://discuss.redash.io/c/feature-requests +🚨For support, help & questions use https://github.com/getredash/redash/discussions/categories/q-a +💡For feature requests & ideas use https://github.com/getredash/redash/discussions/categories/ideas Alternatively, check out these resources below. Thanks! 😁. -- [Forum](https://disucss.redash.io) +- [Discussions](https://github.com/getredash/redash/discussions/) - [Knowledge Base](https://redash.io/help) diff --git a/.github/support.yml b/.github/support.yml deleted file mode 100644 index 164b588b36..0000000000 --- a/.github/support.yml +++ /dev/null @@ -1,23 +0,0 @@ -# Configuration for Support Requests - https://github.com/dessant/support-requests - -# Label used to mark issues as support requests -supportLabel: Support Question - -# Comment to post on issues marked as support requests, `{issue-author}` is an -# optional placeholder. Set to `false` to disable -supportComment: > - :wave: @{issue-author}, we use the issue tracker exclusively for bug reports - and planned work. However, this issue appears to be a support request. - Please use [our forum](https://discuss.redash.io) to get help. - -# Close issues marked as support requests -close: true - -# Lock issues marked as support requests -lock: false - -# Assign `off-topic` as the reason for locking. Set to `false` to disable -setLockReason: true - -# Repository to extend settings from -# _extends: repo diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 76c5953ded..e090a0f8fa 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -22,8 +22,7 @@ The following is a set of guidelines for contributing to Redash. These are guide ## Quick Links: -- [User Forum](https://discuss.redash.io/) -- [Feature Requests](https://discuss.redash.io/c/feature-requests) +- [User Forum](https://github.com/getredash/redash/discussions) - [Documentation](https://redash.io/help/) @@ -35,14 +34,14 @@ The following is a set of guidelines for contributing to Redash. These are guide When creating a new bug report, please make sure to: - Search for existing issues first. If you find a previous report of your issue, please update the existing issue with additional information instead of creating a new one. -- If you are not sure if your issue is really a bug or just some configuration/setup problem, please start a discussion in [the support forum](https://discuss.redash.io/c/support) first. Unless you can provide clear steps to reproduce, it's probably better to start with a thread in the forum and later to open an issue. +- If you are not sure if your issue is really a bug or just some configuration/setup problem, please start a [Q&A discussion](https://github.com/getredash/redash/discussions/new?category=q-a) first. Unless you can provide clear steps to reproduce, it's probably better to start with a discussion and later to open an issue. - If you still decide to open an issue, please review the template and guidelines and include as much details as possible. ### Suggesting Enhancements / Feature Requests If you would like to suggest an enhancement or ask for a new feature: -- Please check [the forum](https://discuss.redash.io/c/feature-requests/5) for existing threads about what you want to suggest/ask. If there is, feel free to upvote it to signal interest or add your comments. +- Please check [the Ideas discussions](https://github.com/getredash/redash/discussions/categories/ideas) for existing threads about what you want to suggest/ask. If there is, feel free to upvote it to signal interest or add your comments. - If there is no open thread, you're welcome to start one to have a discussion about what you want to suggest. Try to provide as much details and context as possible and include information about *the problem you want to solve* rather only *your proposed solution*. ### Pull Requests diff --git a/README.md b/README.md index 3491c48224..901a43128e 100644 --- a/README.md +++ b/README.md @@ -99,7 +99,7 @@ Redash supports more than 35 SQL and NoSQL [data sources](https://redash.io/help ## Getting Help * Issues: https://github.com/getredash/redash/issues -* Discussion Forum: https://discuss.redash.io/ +* Discussion Forum: https://github.com/getredash/redash/discussions/ ## Reporting Bugs and Contributing Code From 0dfe726ec8be6350d85af01567bf3d0d6651eb21 Mon Sep 17 00:00:00 2001 From: Zach Liu Date: Mon, 20 Mar 2023 10:38:45 -0400 Subject: [PATCH 042/274] see https://discuss.redash.io/t/redash-datasource-connection-test-fails/9989 (#5898) --- requirements_all_ds.txt | 4 ++-- requirements_dev.txt | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/requirements_all_ds.txt b/requirements_all_ds.txt index 5e2e9b3d83..e4c766c18c 100644 --- a/requirements_all_ds.txt +++ b/requirements_all_ds.txt @@ -21,7 +21,7 @@ cassandra-driver==3.21.0 memsql==3.0.0 atsd_client==3.0.5 simple_salesforce==0.74.3 -PyAthena>=1.5.0 +PyAthena>=1.5.0,<=1.11.5 pymapd==0.19.0 qds-sdk>=1.9.6 ibm-db>=2.0.9 @@ -45,4 +45,4 @@ pandas==1.3.4 nzpy>=1.15 nzalchemy python-arango==6.1.0 -pinotdb>=0.4.5 \ No newline at end of file +pinotdb>=0.4.5 diff --git a/requirements_dev.txt b/requirements_dev.txt index c02036c50d..1c32a3d30f 100644 --- a/requirements_dev.txt +++ b/requirements_dev.txt @@ -7,7 +7,7 @@ mock==3.0.5 # (this is not perfect and we should resolve this in a different way) pymongo[srv,tls]==3.9.0 botocore>=1.13,<1.14.0 -PyAthena>=1.5.0 +PyAthena>=1.5.0,<=1.11.5 ptvsd==4.3.2 freezegun==0.3.12 watchdog==0.9.0 From 28b0a2379d34b1838da13c80a504d93f20f4f14c Mon Sep 17 00:00:00 2001 From: Arik Fraimovich Date: Mon, 20 Mar 2023 07:39:21 -0700 Subject: [PATCH 043/274] Remove extensions mechanism (#5895) * Remove extensions mechanism. * Missing change. --- .circleci/config.yml | 4 - Dockerfile | 72 +++++----- Makefile | 14 +- bin/bundle-extensions | 126 ------------------ package.json | 1 - redash/app.py | 2 - redash/extensions.py | 107 --------------- redash/tasks/schedule.py | 6 +- redash/worker.py | 1 - requirements.txt | 3 - requirements_bundles.txt | 8 -- tests/extensions/__init__.py | 0 tests/extensions/redash-dummy/.gitignore | 2 - tests/extensions/redash-dummy/MANIFEST.in | 2 - tests/extensions/redash-dummy/README.md | 22 --- .../redash_dummy.egg-info/PKG-INFO | 10 -- .../redash_dummy.egg-info/SOURCES.txt | 12 -- .../dependency_links.txt | 1 - .../redash_dummy.egg-info/entry_points.txt | 13 -- .../redash_dummy.egg-info/top_level.txt | 1 - .../redash-dummy/redash_dummy/__init__.py | 0 .../redash_dummy/bundle/WideFooter.jsx | 9 -- .../redash-dummy/redash_dummy/extension.py | 11 -- .../redash-dummy/redash_dummy/jobs.py | 14 -- tests/extensions/redash-dummy/setup.py | 25 ---- tests/extensions/test_extensions.py | 79 ----------- 26 files changed, 42 insertions(+), 503 deletions(-) delete mode 100755 bin/bundle-extensions delete mode 100644 redash/extensions.py delete mode 100644 requirements_bundles.txt delete mode 100644 tests/extensions/__init__.py delete mode 100644 tests/extensions/redash-dummy/.gitignore delete mode 100644 tests/extensions/redash-dummy/MANIFEST.in delete mode 100644 tests/extensions/redash-dummy/README.md delete mode 100644 tests/extensions/redash-dummy/redash_dummy.egg-info/PKG-INFO delete mode 100644 tests/extensions/redash-dummy/redash_dummy.egg-info/SOURCES.txt delete mode 100644 tests/extensions/redash-dummy/redash_dummy.egg-info/dependency_links.txt delete mode 100644 tests/extensions/redash-dummy/redash_dummy.egg-info/entry_points.txt delete mode 100644 tests/extensions/redash-dummy/redash_dummy.egg-info/top_level.txt delete mode 100644 tests/extensions/redash-dummy/redash_dummy/__init__.py delete mode 100644 tests/extensions/redash-dummy/redash_dummy/bundle/WideFooter.jsx delete mode 100644 tests/extensions/redash-dummy/redash_dummy/extension.py delete mode 100644 tests/extensions/redash-dummy/redash_dummy/jobs.py delete mode 100644 tests/extensions/redash-dummy/setup.py delete mode 100644 tests/extensions/test_extensions.py diff --git a/.circleci/config.yml b/.circleci/config.yml index 887cfaad9c..0109051768 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -9,10 +9,8 @@ build-docker-image-job: &build-docker-image-job - checkout - run: sudo apt update - run: sudo apt install python3-pip - - run: sudo pip3 install -r requirements_bundles.txt - run: .circleci/update_version - run: sudo npm install --global --force yarn@1.22.10 - - run: yarn bundle - run: .circleci/docker_build jobs: backend-lint: @@ -83,10 +81,8 @@ jobs: - checkout - run: sudo apt update - run: sudo apt install python3-pip - - run: sudo pip3 install -r requirements_bundles.txt - run: sudo npm install --global --force yarn@1.22.10 - run: yarn cache clean && yarn --frozen-lockfile --network-concurrency 1 - - run: yarn bundle - run: name: Run App Tests command: yarn test diff --git a/Dockerfile b/Dockerfile index 68575c4171..7f41d1b7a3 100644 --- a/Dockerfile +++ b/Dockerfile @@ -39,46 +39,46 @@ RUN useradd --create-home redash # Ubuntu packages RUN apt-get update && \ apt-get install -y --no-install-recommends \ - curl \ - gnupg \ - build-essential \ - pwgen \ - libffi-dev \ - sudo \ - git-core \ - # Postgres client - libpq-dev \ - # ODBC support: - g++ unixodbc-dev \ - # for SAML - xmlsec1 \ - # Additional packages required for data sources: - libssl-dev \ - default-libmysqlclient-dev \ - freetds-dev \ - libsasl2-dev \ - unzip \ - libsasl2-modules-gssapi-mit && \ - apt-get clean && \ - rm -rf /var/lib/apt/lists/* + curl \ + gnupg \ + build-essential \ + pwgen \ + libffi-dev \ + sudo \ + git-core \ + # Postgres client + libpq-dev \ + # ODBC support: + g++ unixodbc-dev \ + # for SAML + xmlsec1 \ + # Additional packages required for data sources: + libssl-dev \ + default-libmysqlclient-dev \ + freetds-dev \ + libsasl2-dev \ + unzip \ + libsasl2-modules-gssapi-mit && \ + apt-get clean && \ + rm -rf /var/lib/apt/lists/* ARG TARGETPLATFORM ARG databricks_odbc_driver_url=https://databricks.com/wp-content/uploads/2.6.10.1010-2/SimbaSparkODBC-2.6.10.1010-2-Debian-64bit.zip RUN if [ "$TARGETPLATFORM" = "linux/amd64" ]; then \ - curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - \ - && curl https://packages.microsoft.com/config/debian/10/prod.list > /etc/apt/sources.list.d/mssql-release.list \ - && apt-get update \ - && ACCEPT_EULA=Y apt-get install -y --no-install-recommends msodbcsql17 \ - && apt-get clean \ - && rm -rf /var/lib/apt/lists/* \ - && curl "$databricks_odbc_driver_url" --location --output /tmp/simba_odbc.zip \ - && chmod 600 /tmp/simba_odbc.zip \ - && unzip /tmp/simba_odbc.zip -d /tmp/ \ - && dpkg -i /tmp/SimbaSparkODBC-*/*.deb \ - && printf "[Simba]\nDriver = /opt/simba/spark/lib/64/libsparkodbc_sb64.so" >> /etc/odbcinst.ini \ - && rm /tmp/simba_odbc.zip \ - && rm -rf /tmp/SimbaSparkODBC*; fi + curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - \ + && curl https://packages.microsoft.com/config/debian/10/prod.list > /etc/apt/sources.list.d/mssql-release.list \ + && apt-get update \ + && ACCEPT_EULA=Y apt-get install -y --no-install-recommends msodbcsql17 \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* \ + && curl "$databricks_odbc_driver_url" --location --output /tmp/simba_odbc.zip \ + && chmod 600 /tmp/simba_odbc.zip \ + && unzip /tmp/simba_odbc.zip -d /tmp/ \ + && dpkg -i /tmp/SimbaSparkODBC-*/*.deb \ + && printf "[Simba]\nDriver = /opt/simba/spark/lib/64/libsparkodbc_sb64.so" >> /etc/odbcinst.ini \ + && rm /tmp/simba_odbc.zip \ + && rm -rf /tmp/SimbaSparkODBC*; fi WORKDIR /app @@ -93,7 +93,7 @@ RUN pip install pip==20.2.4; COPY requirements_all_ds.txt ./ RUN if [ "x$skip_ds_deps" = "x" ] ; then pip install -r requirements_all_ds.txt ; else echo "Skipping pip install -r requirements_all_ds.txt" ; fi -COPY requirements_bundles.txt requirements_dev.txt ./ +COPY requirements_dev.txt ./ RUN if [ "x$skip_dev_deps" = "x" ] ; then pip install -r requirements_dev.txt ; fi COPY requirements.txt ./ diff --git a/Makefile b/Makefile index 3d124b4a84..f83a056af4 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -.PHONY: compose_build up test_db create_database clean down bundle tests lint backend-unit-tests frontend-unit-tests test build watch start redis-cli bash +.PHONY: compose_build up test_db create_database clean down tests lint backend-unit-tests frontend-unit-tests test build watch start redis-cli bash compose_build: COMPOSE_DOCKER_CLI_BUILD=1 DOCKER_BUILDKIT=1 docker-compose build @@ -22,9 +22,6 @@ clean: down: docker-compose down -bundle: - docker-compose run server bin/bundle-extensions - tests: docker-compose run server tests @@ -34,20 +31,19 @@ lint: backend-unit-tests: up test_db docker-compose run --rm --name tests server tests -frontend-unit-tests: bundle +frontend-unit-tests: CYPRESS_INSTALL_BINARY=0 PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=1 yarn --frozen-lockfile - yarn bundle yarn test test: lint backend-unit-tests frontend-unit-tests -build: bundle +build: yarn build -watch: bundle +watch: yarn watch -start: bundle +start: yarn start redis-cli: diff --git a/bin/bundle-extensions b/bin/bundle-extensions deleted file mode 100755 index 4d0d006bc5..0000000000 --- a/bin/bundle-extensions +++ /dev/null @@ -1,126 +0,0 @@ -#!/usr/bin/env python3 -"""Copy bundle extension files to the client/app/extension directory""" -import logging -import os -from pathlib import Path -from shutil import copy -from collections import OrderedDict as odict - -import importlib_metadata -import importlib_resources - -# Name of the subdirectory -BUNDLE_DIRECTORY = "bundle" - -logger = logging.getLogger(__name__) - - -# Make a directory for extensions and set it as an environment variable -# to be picked up by webpack. -extensions_relative_path = Path("client", "app", "extensions") -extensions_directory = Path(__file__).parent.parent / extensions_relative_path - -if not extensions_directory.exists(): - extensions_directory.mkdir() -os.environ["EXTENSIONS_DIRECTORY"] = str(extensions_relative_path) - - -def entry_point_module(entry_point): - """Returns the dotted module path for the given entry point""" - return entry_point.pattern.match(entry_point.value).group("module") - - -def load_bundles(): - """"Load bundles as defined in Redash extensions. - - The bundle entry point can be defined as a dotted path to a module - or a callable, but it won't be called but just used as a means - to find the files under its file system path. - - The name of the directory it looks for files in is "bundle". - - So a Python package with an extension bundle could look like this:: - - my_extensions/ - ├── __init__.py - └── wide_footer - ├── __init__.py - └── bundle - ├── extension.js - └── styles.css - - and would then need to register the bundle with an entry point - under the "redash.bundles" group, e.g. in your setup.py:: - - setup( - # ... - entry_points={ - "redash.bundles": [ - "wide_footer = my_extensions.wide_footer", - ] - # ... - }, - # ... - ) - - """ - bundles = odict() - # HACK: - # bin/bundle-extensions is tested in different versions. - # circleci frontend-unit-tests: python 3.5 and importlib-metadata-2.1.3 - # circleci backend-unit-tests: python 3.7 and importlib-metadata-5.0.0 - if importlib_metadata.version("importlib_metadata") >= "5.0.0": - bundles_entry_points = importlib_metadata.entry_points(group="redash.bundles") - else: - bundles_entry_points = importlib_metadata.entry_points().get( - "redash.bundles", [] - ) - - for entry_point in bundles_entry_points: - logger.info('Loading Redash bundle "%s".', entry_point.name) - module = entry_point_module(entry_point) - # Try to get a list of bundle files - try: - bundle_dir = importlib_resources.files(module).joinpath(BUNDLE_DIRECTORY) - except (ImportError, TypeError): - # Module isn't a package, so can't have a subdirectory/-package - logger.error( - 'Redash bundle module "%s" could not be imported: "%s"', - entry_point.name, - module, - ) - continue - if not bundle_dir.is_dir(): - logger.error( - 'Redash bundle directory "%s" could not be found or is not a directory: "%s"', - entry_point.name, - bundle_dir, - ) - continue - bundles[entry_point.name] = list(bundle_dir.rglob("*")) - return bundles - - -bundles = load_bundles().items() -if bundles: - print("Number of extension bundles found: {}".format(len(bundles))) -else: - print("No extension bundles found.") - -for bundle_name, paths in bundles: - # Shortcut in case not paths were found for the bundle - if not paths: - print('No paths found for bundle "{}".'.format(bundle_name)) - continue - - # The destination for the bundle files with the entry point name as the subdirectory - destination = Path(extensions_directory, bundle_name) - if not destination.exists(): - destination.mkdir() - - # Copy the bundle directory from the module to its destination. - print('Copying "{}" bundle to {}:'.format(bundle_name, destination.resolve())) - for src_path in paths: - dest_path = destination / src_path.name - print(" - {} -> {}".format(src_path, dest_path)) - copy(str(src_path), str(dest_path)) diff --git a/package.json b/package.json index b90699101b..806bc61c6e 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,6 @@ "main": "index.js", "scripts": { "start": "npm-run-all --parallel watch:viz webpack-dev-server", - "bundle": "bin/bundle-extensions", "clean": "rm -rf ./client/dist/", "build:viz": "(cd viz-lib && yarn build:babel)", "build": "yarn clean && yarn build:viz && NODE_ENV=production webpack", diff --git a/redash/app.py b/redash/app.py index 67eee53bbe..0b123cc14e 100644 --- a/redash/app.py +++ b/redash/app.py @@ -25,7 +25,6 @@ def __init__(self, *args, **kwargs): def create_app(): from . import ( authentication, - extensions, handlers, limiter, mail, @@ -54,7 +53,6 @@ def create_app(): limiter.init_app(app) handlers.init_app(app) configure_webpack(app) - extensions.init_app(app) users.init_app(app) tasks.init_app(app) diff --git a/redash/extensions.py b/redash/extensions.py deleted file mode 100644 index f3a79dcfb2..0000000000 --- a/redash/extensions.py +++ /dev/null @@ -1,107 +0,0 @@ -import logging -from collections import OrderedDict as odict - -from importlib_metadata import entry_points - -# The global Redash extension registry -extensions = odict() - -# The periodic RQ jobs as provided by Redash extensions. -# This is separate from the internal periodic RQ jobs -# since the extension job discovery phase is -# after the configuration has already happened. -periodic_jobs = odict() - -extension_logger = logging.getLogger(__name__) - - -def entry_point_loader(group_name, mapping, logger=None, *args, **kwargs): - """ - Loads the list Python entry points with the given entry point group name - (e.g. "redash.extensions"), calls each with the provided *args/**kwargs - arguments and stores the results in the provided mapping under the name - of the entry point. - - If provided, the logger is used for error and debugging statements. - """ - if logger is None: - logger = extension_logger - - for entry_point in entry_points(group=group_name): - logger.info('Loading entry point "%s".', entry_point.name) - try: - # Then try to load the entry point (import and getattr) - obj = entry_point.load() - except (ImportError, AttributeError): - # or move on - logger.error( - 'Entry point "%s" could not be found.', entry_point.name, exc_info=True - ) - continue - - if not callable(obj): - logger.error('Entry point "%s" is not a callable.', entry_point.name) - continue - - try: - # then simply call the loaded entry point. - mapping[entry_point.name] = obj(*args, **kwargs) - except AssertionError: - logger.error( - 'Entry point "%s" cound not be loaded.', entry_point.name, exc_info=True - ) - continue - - -def load_extensions(app): - """Load the Redash extensions for the given Redash Flask app. - - The extension entry point can return any type of value but - must take a Flask application object. - - E.g.:: - - def extension(app): - app.logger.info("Loading the Foobar extenions") - Foobar(app) - - """ - entry_point_loader("redash.extensions", extensions, logger=app.logger, app=app) - - -def load_periodic_jobs(logger=None): - """Load the periodic jobs as defined in Redash extensions. - - The periodic task entry point needs to return a set of parameters - that can be passed to RQ Scheduler API: - - https://github.com/rq/rq-scheduler#periodic--repeated-jobs - - E.g.:: - - def add_two_and_two(): - return { - "func": add, - "args": [2, 2] - "interval": 10, # in seconds or as a timedelta - } - - and then registered with an entry point under the "redash.periodic_jobs" - group, e.g. in your setup.py:: - - setup( - # ... - entry_points={ - "redash.periodic_jobs": [ - "add_two_and_two = calculus.addition:add_two_and_two", - ] - # ... - }, - # ... - ) - """ - entry_point_loader("redash.periodic_jobs", periodic_jobs, logger=logger) - - -def init_app(app): - load_extensions(app) diff --git a/redash/tasks/schedule.py b/redash/tasks/schedule.py index 5ed4b580e7..c49f9050e1 100644 --- a/redash/tasks/schedule.py +++ b/redash/tasks/schedule.py @@ -7,7 +7,7 @@ from rq.job import Job from rq_scheduler import Scheduler -from redash import extensions, settings, rq_redis_connection, statsd_client +from redash import settings, rq_redis_connection, statsd_client from redash.tasks import ( sync_user_details, refresh_queries, @@ -92,10 +92,6 @@ def periodic_job_definitions(): # Add your own custom periodic jobs in your dynamic_settings module. jobs.extend(settings.dynamic_settings.periodic_jobs() or []) - # Add periodic jobs that are shipped as part of Redash extensions - extensions.load_periodic_jobs(logger) - jobs.extend(list(extensions.periodic_jobs.values())) - return jobs diff --git a/redash/worker.py b/redash/worker.py index 28b13ee22a..8bed64e40c 100644 --- a/redash/worker.py +++ b/redash/worker.py @@ -9,7 +9,6 @@ from redash import ( create_app, - extensions, settings, redis_connection, rq_redis_connection, diff --git a/requirements.txt b/requirements.txt index 0f1e684fe7..407e2aeb2b 100644 --- a/requirements.txt +++ b/requirements.txt @@ -59,9 +59,6 @@ sshtunnel==0.1.5 supervisor==4.1.0 supervisor_checks==0.8.1 werkzeug==0.16.1 -# Install the dependencies of the bin/bundle-extensions script here. -# It has its own requirements file to simplify the frontend client build process --r requirements_bundles.txt # Uncomment the requirement for ldap3 if using ldap. # It is not included by default because of the GPL license conflict. # ldap3==2.2.4 diff --git a/requirements_bundles.txt b/requirements_bundles.txt deleted file mode 100644 index 3f57a20dd2..0000000000 --- a/requirements_bundles.txt +++ /dev/null @@ -1,8 +0,0 @@ -# These are the requirements that the extension bundle -# loading mechanism need on Python 2 and can be removed -# when moved to Python 3. -# It's automatically installed when running npm run bundle - -# These can be removed when upgrading to Python 3.x -importlib-metadata>=1.6 # remove when on 3.8 -importlib_resources==1.5 # remove when on 3.9 diff --git a/tests/extensions/__init__.py b/tests/extensions/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/tests/extensions/redash-dummy/.gitignore b/tests/extensions/redash-dummy/.gitignore deleted file mode 100644 index 1b823a2c19..0000000000 --- a/tests/extensions/redash-dummy/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -dist -build diff --git a/tests/extensions/redash-dummy/MANIFEST.in b/tests/extensions/redash-dummy/MANIFEST.in deleted file mode 100644 index f42f7bd471..0000000000 --- a/tests/extensions/redash-dummy/MANIFEST.in +++ /dev/null @@ -1,2 +0,0 @@ -include README.md -recursive-include redash_dummy *.jsx diff --git a/tests/extensions/redash-dummy/README.md b/tests/extensions/redash-dummy/README.md deleted file mode 100644 index 22c253fbcb..0000000000 --- a/tests/extensions/redash-dummy/README.md +++ /dev/null @@ -1,22 +0,0 @@ -# How to update the dummy extension? - -If you'd like to extend the dummy extension, please update the ``setup.py`` -file and the ``redash_dummy.py`` module. - -Please make sure to regenerate the *.egg-info directory. See below. - -# How to generate the redash_dummy.egg-info directory? - -The `egg-info` directory is what is usually created in the -site-packages directory when running `pip install ` and -contains the metadata derived from the `setup.py` file. - -In other words, it's auto-generated and you'll need to follow the following -steps to update it (e.g. when extending the extension tests). From the -host computer (assuming the Docker development environment) run: - -- `make bash` -- to create container running with Bash and entering it -- `cd tests/extensions/redash-dummy/` -- change the directory to the directory with the dummy extension -- `python setup.py egg_info` -- to create/update the egg-info directory - -The egg-info directory is *not* cleaned up by pip, just the link in the `~/.local` site-packages directory. diff --git a/tests/extensions/redash-dummy/redash_dummy.egg-info/PKG-INFO b/tests/extensions/redash-dummy/redash_dummy.egg-info/PKG-INFO deleted file mode 100644 index 5da2ff60c4..0000000000 --- a/tests/extensions/redash-dummy/redash_dummy.egg-info/PKG-INFO +++ /dev/null @@ -1,10 +0,0 @@ -Metadata-Version: 1.0 -Name: redash-dummy -Version: 0.2 -Summary: Redash extensions for testing -Home-page: UNKNOWN -Author: Redash authors -Author-email: UNKNOWN -License: MIT -Description: UNKNOWN -Platform: UNKNOWN diff --git a/tests/extensions/redash-dummy/redash_dummy.egg-info/SOURCES.txt b/tests/extensions/redash-dummy/redash_dummy.egg-info/SOURCES.txt deleted file mode 100644 index 8a4946a14d..0000000000 --- a/tests/extensions/redash-dummy/redash_dummy.egg-info/SOURCES.txt +++ /dev/null @@ -1,12 +0,0 @@ -MANIFEST.in -README.md -setup.py -redash_dummy/__init__.py -redash_dummy/extension.py -redash_dummy/jobs.py -redash_dummy.egg-info/PKG-INFO -redash_dummy.egg-info/SOURCES.txt -redash_dummy.egg-info/dependency_links.txt -redash_dummy.egg-info/entry_points.txt -redash_dummy.egg-info/top_level.txt -redash_dummy/bundle/WideFooter.jsx \ No newline at end of file diff --git a/tests/extensions/redash-dummy/redash_dummy.egg-info/dependency_links.txt b/tests/extensions/redash-dummy/redash_dummy.egg-info/dependency_links.txt deleted file mode 100644 index 8b13789179..0000000000 --- a/tests/extensions/redash-dummy/redash_dummy.egg-info/dependency_links.txt +++ /dev/null @@ -1 +0,0 @@ - diff --git a/tests/extensions/redash-dummy/redash_dummy.egg-info/entry_points.txt b/tests/extensions/redash-dummy/redash_dummy.egg-info/entry_points.txt deleted file mode 100644 index f6b2aed61e..0000000000 --- a/tests/extensions/redash-dummy/redash_dummy.egg-info/entry_points.txt +++ /dev/null @@ -1,13 +0,0 @@ -[redash.bundles] -wide_footer = redash_dummy - -[redash.extensions] -assertive_extension = redash_dummy.extension:assertive_extension -non_callable_extension = redash_dummy.extension:module_attribute -not_findable_extension = redash_dummy.extension:missing_attribute -not_importable_extension = missing_extension_module:extension -working_extension = redash_dummy.extension:extension - -[redash.periodic_jobs] -dummy_periodic_job = redash_dummy.jobs:periodic_job - diff --git a/tests/extensions/redash-dummy/redash_dummy.egg-info/top_level.txt b/tests/extensions/redash-dummy/redash_dummy.egg-info/top_level.txt deleted file mode 100644 index 442d316537..0000000000 --- a/tests/extensions/redash-dummy/redash_dummy.egg-info/top_level.txt +++ /dev/null @@ -1 +0,0 @@ -redash_dummy diff --git a/tests/extensions/redash-dummy/redash_dummy/__init__.py b/tests/extensions/redash-dummy/redash_dummy/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/tests/extensions/redash-dummy/redash_dummy/bundle/WideFooter.jsx b/tests/extensions/redash-dummy/redash_dummy/bundle/WideFooter.jsx deleted file mode 100644 index f735ed1e03..0000000000 --- a/tests/extensions/redash-dummy/redash_dummy/bundle/WideFooter.jsx +++ /dev/null @@ -1,9 +0,0 @@ -import React from "react"; - -export default function WideFooter() { - return ( -
- This is a wide footer -
- ); -} diff --git a/tests/extensions/redash-dummy/redash_dummy/extension.py b/tests/extensions/redash-dummy/redash_dummy/extension.py deleted file mode 100644 index 28145ebc17..0000000000 --- a/tests/extensions/redash-dummy/redash_dummy/extension.py +++ /dev/null @@ -1,11 +0,0 @@ -module_attribute = "hello!" - - -def extension(app): - """This extension will work""" - return "extension loaded" - - -def assertive_extension(app): - """This extension won't work""" - assert False diff --git a/tests/extensions/redash-dummy/redash_dummy/jobs.py b/tests/extensions/redash-dummy/redash_dummy/jobs.py deleted file mode 100644 index 834cdc8e99..0000000000 --- a/tests/extensions/redash-dummy/redash_dummy/jobs.py +++ /dev/null @@ -1,14 +0,0 @@ -from datetime import timedelta - - -def job_callback(): - return "result" - - -def periodic_job(*args, **kwargs): - """This periodic job will successfully load""" - return { - "func": job_callback, - "timeout": 60, - "interval": timedelta(minutes=1), - } diff --git a/tests/extensions/redash-dummy/setup.py b/tests/extensions/redash-dummy/setup.py deleted file mode 100644 index 8d90587b0c..0000000000 --- a/tests/extensions/redash-dummy/setup.py +++ /dev/null @@ -1,25 +0,0 @@ -from setuptools import setup, find_packages - - -setup( - name="redash-dummy", - version="0.2", - description="Redash extensions for testing", - author="Redash authors", - license="MIT", - packages=find_packages(), - include_package_data=True, - entry_points={ - "redash.extensions": [ - "working_extension = redash_dummy.extension:extension", - "non_callable_extension = redash_dummy.extension:module_attribute", - "not_findable_extension = redash_dummy.extension:missing_attribute", - "not_importable_extension = missing_extension_module:extension", - "assertive_extension = redash_dummy.extension:assertive_extension", - ], - "redash.periodic_jobs": ["dummy_periodic_job = redash_dummy.jobs:periodic_job"], - "redash.bundles": [ - "wide_footer = redash_dummy", - ], - }, -) diff --git a/tests/extensions/test_extensions.py b/tests/extensions/test_extensions.py deleted file mode 100644 index fa955511ac..0000000000 --- a/tests/extensions/test_extensions.py +++ /dev/null @@ -1,79 +0,0 @@ -import logging -import shutil -import subprocess -import sys -from pathlib import Path - -from redash import extensions -from redash.tasks import periodic_job_definitions -from tests import BaseTestCase - -logger = logging.getLogger(__name__) -dummy_extension = "redash-dummy" - -this_dir = Path(__file__).parent.resolve() -app_dir = this_dir.parent.parent -dummy_path = str(this_dir / dummy_extension) -test_bundle = ( - app_dir / "client" / "app" / "extensions" / "wide_footer" / "WideFooter.jsx" -) - - -class TestExtensions(BaseTestCase): - @classmethod - def setUpClass(cls): - sys.path.insert(0, dummy_path) - - @classmethod - def tearDownClass(cls): - sys.path.remove(dummy_path) - - def test_working_extension(self): - self.assertIn("working_extension", extensions.extensions.keys()) - self.assertEqual( - extensions.extensions.get("working_extension"), "extension loaded" - ) - - def test_assertive_extension(self): - self.assertNotIn("assertive_extension", extensions.extensions.keys()) - - def test_not_findable_extension(self): - self.assertNotIn("not_findable_extension", extensions.extensions.keys()) - - def test_not_importable_extension(self): - self.assertNotIn("not_importable_extension", extensions.extensions.keys()) - - def test_non_callable_extension(self): - self.assertNotIn("non_callable_extension", extensions.extensions.keys()) - - def test_dummy_periodic_task(self): - # need to load the periodic tasks manually since this isn't - # done automatically on test suite start but only part of - # the worker configuration - extensions.load_periodic_jobs(logger) - self.assertIn("dummy_periodic_job", extensions.periodic_jobs.keys()) - - def test_dummy_periodic_task_definitions(self): - jobs = periodic_job_definitions() - from redash_dummy.jobs import job_callback - - self.assertIn(job_callback, [job.get("func", None) for job in jobs]) - - -class TestBundles(BaseTestCase): - @classmethod - def setUpClass(cls): - # Install the redash-dummy package temporarily using pip - # in the user's local site package directory under ~/.local/ - subprocess.call(["pip", "install", "--user", dummy_path]) - - @classmethod - def tearDownClass(cls): - subprocess.call(["pip", "uninstall", "-y", "redash-dummy"]) - - def test_bundle_extensions(self): - # cleaning up after running bundle-extensions again - self.addCleanup(lambda: shutil.rmtree(test_bundle.parent)) - assert not test_bundle.exists() - subprocess.run(str(app_dir / "bin" / "bundle-extensions"), check=True) - assert test_bundle.exists() From c08ef9b5026a36214bbb788dc13e375fbc454d33 Mon Sep 17 00:00:00 2001 From: Genki Sugawara Date: Mon, 20 Mar 2023 23:40:16 +0900 Subject: [PATCH 044/274] Add "set -e" to docker_build (#5896) --- .circleci/docker_build | 1 + 1 file changed, 1 insertion(+) diff --git a/.circleci/docker_build b/.circleci/docker_build index 238cc7107d..f0a065ed16 100755 --- a/.circleci/docker_build +++ b/.circleci/docker_build @@ -1,4 +1,5 @@ #!/bin/bash +set -e VERSION=$(jq -r .version package.json) VERSION_TAG=$VERSION.b$CIRCLE_BUILD_NUM From 8487876e7f02d40a7a700557cee35abf1c334902 Mon Sep 17 00:00:00 2001 From: Jeremy Date: Tue, 21 Mar 2023 23:21:56 +0800 Subject: [PATCH 045/274] feat: New support databend for redash (#5902) * feat: New support databend for redash * fix --- README.md | 1 + redash/query_runner/databend.py | 118 ++++++++++++++++++++++++++++++++ redash/settings/__init__.py | 1 + requirements_all_ds.txt | 1 + 4 files changed, 121 insertions(+) create mode 100644 redash/query_runner/databend.py diff --git a/README.md b/README.md index 901a43128e..83b528cb9b 100644 --- a/README.md +++ b/README.md @@ -52,6 +52,7 @@ Redash supports more than 35 SQL and NoSQL [data sources](https://redash.io/help - Exasol - Microsoft Excel - Firebolt +- Databend - Google Analytics - Google BigQuery - Google Spreadsheets diff --git a/redash/query_runner/databend.py b/redash/query_runner/databend.py new file mode 100644 index 0000000000..bf6eabfa96 --- /dev/null +++ b/redash/query_runner/databend.py @@ -0,0 +1,118 @@ +try: + from databend_sqlalchemy import connector + import re + + enabled = True +except ImportError: + enabled = False + +from redash.query_runner import BaseQueryRunner, register +from redash.query_runner import TYPE_STRING, TYPE_INTEGER, TYPE_BOOLEAN, TYPE_FLOAT, TYPE_DATETIME, TYPE_DATE +from redash.utils import json_dumps, json_loads + + +class Databend(BaseQueryRunner): + noop_query = "SELECT 1" + + @classmethod + def configuration_schema(cls): + return { + "type": "object", + "properties": { + "host": {"type": "string", "default": "localhost"}, + "port": {"type": "int", "default": 8000}, + "username": {"type": "string"}, + "password": {"type": "string", "default": ""}, + "database": {"type": "string"}, + "secure": {"type": "string", "default": False}, + }, + "order": ["username", "password", "host", "port", "database"], + "required": ["username", "database"], + "secret": ["password"], + } + + @classmethod + def name(cls): + return "Databend" + + @classmethod + def type(cls): + return "Databend" + + @classmethod + def enabled(cls): + return enabled + + @staticmethod + def _define_column_type(column_type): + c = column_type.lower() + f = re.search(r"^nullable\((.*)\)$", c) + if f is not None: + c = f.group(1) + if c.startswith("int") or c.startswith("uint"): + return TYPE_INTEGER + elif c.startswith("float"): + return TYPE_FLOAT + elif c == "datetime": + return TYPE_DATETIME + elif c == "date": + return TYPE_DATE + else: + return TYPE_STRING + + def run_query(self, query, user): + host = (self.configuration.get("host") or "localhost"), + port = (self.configuration.get("port") or 8000), + username = (self.configuration.get("username") or None), + password = (self.configuration.get("password") or None), + database = (self.configuration.get("database") or None), + secure = (self.configuration.get("secure") or False), + connection = connector.connect(f"databend://{username}:{password}@{host}:{port}/{database}?secure={secure}") + cursor = connection.cursor() + + try: + cursor.execute(query) + columns = self.fetch_columns( + [(i[0], self._define_column_type(i[1])) for i in cursor.description] + ) + rows = [ + dict(zip((column["name"] for column in columns), row)) for row in cursor + ] + + data = {"columns": columns, "rows": rows} + error = None + json_data = json_dumps(data) + finally: + connection.close() + + return json_data, error + + def _get_tables(self): + query = """ + SELECT TABLE_SCHEMA, + TABLE_NAME, + COLUMN_NAME + FROM INFORMATION_SCHEMA.COLUMNS + WHERE TABLE_SCHEMA NOT IN ('information_schema', 'system') + """ + + results, error = self.run_query(query, None) + + if error is not None: + self._handle_run_query_error(error) + + schema = {} + results = json_loads(results) + + for row in results["rows"]: + table_name = "{}.{}".format(row["table_schema"], row["table_name"]) + + if table_name not in schema: + schema[table_name] = {"name": table_name, "columns": []} + + schema[table_name]["columns"].append(row["column_name"]) + + return list(schema.values()) + + +register(Databend) diff --git a/redash/settings/__init__.py b/redash/settings/__init__.py index 6dff105d30..df152da174 100644 --- a/redash/settings/__init__.py +++ b/redash/settings/__init__.py @@ -390,6 +390,7 @@ def email_server_is_configured(): "redash.query_runner.excel", "redash.query_runner.csv", "redash.query_runner.firebolt", + "redash.query_runner.databend", "redash.query_runner.nz", "redash.query_runner.arango" ] diff --git a/requirements_all_ds.txt b/requirements_all_ds.txt index e4c766c18c..9ea20d659a 100644 --- a/requirements_all_ds.txt +++ b/requirements_all_ds.txt @@ -41,6 +41,7 @@ cmem-cmempy==21.2.3 xlrd==2.0.1 openpyxl==3.0.7 firebolt-sdk +databend-sqlalchemy pandas==1.3.4 nzpy>=1.15 nzalchemy From 65d0eb72f585e05d141b9c8f2233fa6b77bd3d3f Mon Sep 17 00:00:00 2001 From: Arik Fraimovich Date: Fri, 24 Mar 2023 14:36:58 -0700 Subject: [PATCH 046/274] Update development workflow for Apple Silicon, Node version, default port, and maildev image (#5932) * Update ngines definition to allow for newer versions of Node. With Node version 19 I stumbled into some issues so for now bumped it to v16, until we get to updating the libraries we use. * docker-compose.yml updates: 1. Switch to newer maildev docker image. 2. Update local port to 5001 as 5000 seems to be used by a system process now. * Update pymssql and pyarrow. Also commented out ibm-db until we have a way to not install it only on ARM. --- client/cypress/cypress.js | 2 +- cypress.json | 2 +- docker-compose.yml | 8 ++++---- package.json | 2 +- requirements_all_ds.txt | 5 +++-- webpack.config.js | 2 +- 6 files changed, 11 insertions(+), 10 deletions(-) diff --git a/client/cypress/cypress.js b/client/cypress/cypress.js index 8f8f915fa0..5fd080bb31 100644 --- a/client/cypress/cypress.js +++ b/client/cypress/cypress.js @@ -13,7 +13,7 @@ try { cypressConfigBaseUrl = cypressConfig.baseUrl; } catch (e) {} -const baseUrl = process.env.CYPRESS_baseUrl || cypressConfigBaseUrl || "http://localhost:5000"; +const baseUrl = process.env.CYPRESS_baseUrl || cypressConfigBaseUrl || "http://localhost:5001"; function seedDatabase(seedValues) { get(baseUrl + "/login", (_, { headers }) => { diff --git a/cypress.json b/cypress.json index 312f085573..0eb1397b87 100644 --- a/cypress.json +++ b/cypress.json @@ -1,5 +1,5 @@ { - "baseUrl": "http://localhost:5000", + "baseUrl": "http://localhost:5001", "video": true, "videoUploadOnPasses": false, "fixturesFolder": "client/cypress/fixtures", diff --git a/docker-compose.yml b/docker-compose.yml index 439f04e215..4c7e20148e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -28,7 +28,7 @@ services: - postgres - redis ports: - - "5000:5000" + - "5001:5000" - "5678:5678" environment: <<: *redash-environment @@ -53,17 +53,17 @@ services: restart: unless-stopped postgres: image: postgres:9.5-alpine + ports: + - "15432:5432" # The following turns the DB into less durable, but gains significant performance improvements for the tests run (x3 # improvement on my personal machine). We should consider moving this into a dedicated Docker Compose configuration for # tests. - ports: - - "15432:5432" command: "postgres -c fsync=off -c full_page_writes=off -c synchronous_commit=OFF" restart: unless-stopped environment: POSTGRES_HOST_AUTH_METHOD: "trust" email: - image: djfarrelly/maildev + image: maildev/maildev ports: - "1080:80" restart: unless-stopped diff --git a/package.json b/package.json index 806bc61c6e..e84e4ef44f 100644 --- a/package.json +++ b/package.json @@ -34,7 +34,7 @@ "url": "git+https://github.com/getredash/redash.git" }, "engines": { - "node": "^14.16.1", + "node": ">14.16.0 <17.0.0", "yarn": "^1.22.10" }, "author": "Redash Contributors", diff --git a/requirements_all_ds.txt b/requirements_all_ds.txt index 9ea20d659a..78ebfc5472 100644 --- a/requirements_all_ds.txt +++ b/requirements_all_ds.txt @@ -9,7 +9,7 @@ pyhive==0.6.1 pymongo[tls,srv]==3.9.0 vertica-python==0.9.5 td-client==1.0.0 -pymssql==2.1.4 +pymssql==2.1.5 dql==0.5.26 dynamo3==0.4.10 boto3>=1.10.0,<1.11.0 @@ -24,7 +24,7 @@ simple_salesforce==0.74.3 PyAthena>=1.5.0,<=1.11.5 pymapd==0.19.0 qds-sdk>=1.9.6 -ibm-db>=2.0.9 +# ibm-db>=2.0.9 pydruid==0.5.7 requests_aws_sign==0.1.5 snowflake-connector-python==2.1.3 @@ -47,3 +47,4 @@ nzpy>=1.15 nzalchemy python-arango==6.1.0 pinotdb>=0.4.5 +pyarrow==10.0.0 \ No newline at end of file diff --git a/webpack.config.js b/webpack.config.js index 76465291dd..5aa2a49afc 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -34,7 +34,7 @@ const isDevelopment = !isProduction; const isHotReloadingEnabled = isDevelopment && process.env.HOT_RELOAD === "true"; -const redashBackend = process.env.REDASH_BACKEND || "http://localhost:5000"; +const redashBackend = process.env.REDASH_BACKEND || "http://localhost:5001"; const baseHref = CONFIG.baseHref || "/"; const staticPath = CONFIG.staticPath || "/static/"; const htmlTitle = CONFIG.title || "Redash"; From 35b2430ff9e4d1a71b201697360f0b763f062a8f Mon Sep 17 00:00:00 2001 From: David Choi Date: Sat, 25 Mar 2023 06:55:34 +0900 Subject: [PATCH 047/274] Fix group not found message. (#5935) --- redash/cli/groups.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/redash/cli/groups.py b/redash/cli/groups.py index 1770057feb..101796b599 100644 --- a/redash/cli/groups.py +++ b/redash/cli/groups.py @@ -60,7 +60,7 @@ def change_permissions(group_id, permissions=None): try: group = models.Group.query.get(group_id) except NoResultFound: - print("User [%s] not found." % group_id) + print("Group [%s] not found." % group_id) exit(1) permissions = extract_permissions_string(permissions) From 0b86c76552aff575488ebe15c107fd29fb9ff4a5 Mon Sep 17 00:00:00 2001 From: Jeremy Date: Tue, 28 Mar 2023 04:08:53 +0800 Subject: [PATCH 048/274] Fix/databend params (#5937) * fix: databend params * add databend logo * fix log * fix log * Update redash/query_runner/databend.py Co-authored-by: Arik Fraimovich --------- Co-authored-by: Arik Fraimovich --- .../app/assets/images/db-logos/databend.png | Bin 0 -> 3304 bytes redash/query_runner/databend.py | 45 ++++++++++++++---- requirements_all_ds.txt | 2 +- 3 files changed, 37 insertions(+), 10 deletions(-) create mode 100644 client/app/assets/images/db-logos/databend.png diff --git a/client/app/assets/images/db-logos/databend.png b/client/app/assets/images/db-logos/databend.png new file mode 100644 index 0000000000000000000000000000000000000000..dec146f4cb73bb3ed779caadd01ffd2bad3d35f4 GIT binary patch literal 3304 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.15 nzalchemy From 5b9fd40dc700c2fc14c31356aa551b09f7094d75 Mon Sep 17 00:00:00 2001 From: Shubham Jain Date: Mon, 27 Mar 2023 21:11:18 +0100 Subject: [PATCH 049/274] Add liveness check for workers (#5886) * Add liveness check script for workers closes #5885 * delete extra script * Rename worker_healthcheck -> workers_healthcheck --------- Co-authored-by: Arik Fraimovich --- bin/docker-entrypoint | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/bin/docker-entrypoint b/bin/docker-entrypoint index 6874eefbb9..932bdbecbf 100755 --- a/bin/docker-entrypoint +++ b/bin/docker-entrypoint @@ -22,6 +22,19 @@ worker() { exec supervisord -c worker.conf } +workers_healthcheck() { + WORKERS_COUNT=${WORKERS_COUNT} + echo "Checking active workers count against $WORKERS_COUNT..." + ACTIVE_WORKERS_COUNT=`echo $(rq info --url $REDASH_REDIS_URL -R | grep workers | grep -oP ^[0-9]+)` + if [ "$ACTIVE_WORKERS_COUNT" < "$WORKERS_COUNT" ]; then + echo "$ACTIVE_WORKERS_COUNT workers are active, Exiting" + exit 1 + else + echo "$ACTIVE_WORKERS_COUNT workers are active" + exit 0 + fi +} + dev_worker() { echo "Starting dev RQ worker..." @@ -76,6 +89,10 @@ case "$1" in shift worker ;; + workers_healthcheck) + shift + workers_healthcheck + ;; server) shift server From ad7d30f91de64a291eb89892c713bd0067c47ecc Mon Sep 17 00:00:00 2001 From: myonlylonely Date: Wed, 5 Apr 2023 21:59:36 +0800 Subject: [PATCH 050/274] Bump mysqlclient from 1.3.14 to 2.1.1, memsql from 3.0.0 to 3.2.0, fixing MySQL multi statement support (#5957) --- requirements_all_ds.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/requirements_all_ds.txt b/requirements_all_ds.txt index 3b1eb21a64..26fe7bceba 100644 --- a/requirements_all_ds.txt +++ b/requirements_all_ds.txt @@ -3,7 +3,7 @@ protobuf==3.17.3 gspread==3.1.0 impyla==0.16.0 influxdb==5.2.3 -mysqlclient==1.3.14 +mysqlclient==2.1.1 oauth2client==4.1.3 pyhive==0.6.1 pymongo[tls,srv]==3.9.0 @@ -18,7 +18,7 @@ sasl>=0.1.3 thrift>=0.8.0 thrift_sasl>=0.1.0 cassandra-driver==3.21.0 -memsql==3.0.0 +memsql==3.2.0 atsd_client==3.0.5 simple_salesforce==0.74.3 PyAthena>=1.5.0,<=1.11.5 From 64c24b77f962a37a7fd0e69fcae255d7ed213190 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=A0=88=E8=97=A4=E5=A4=A7=E8=BC=94=20=28SUDO=20Daisuke?= =?UTF-8?q?=29?= Date: Fri, 21 Apr 2023 01:13:20 +0900 Subject: [PATCH 051/274] fix comparison operator (#5945) --- bin/docker-entrypoint | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/docker-entrypoint b/bin/docker-entrypoint index 932bdbecbf..5e777c10ed 100755 --- a/bin/docker-entrypoint +++ b/bin/docker-entrypoint @@ -26,7 +26,7 @@ workers_healthcheck() { WORKERS_COUNT=${WORKERS_COUNT} echo "Checking active workers count against $WORKERS_COUNT..." ACTIVE_WORKERS_COUNT=`echo $(rq info --url $REDASH_REDIS_URL -R | grep workers | grep -oP ^[0-9]+)` - if [ "$ACTIVE_WORKERS_COUNT" < "$WORKERS_COUNT" ]; then + if [ "$ACTIVE_WORKERS_COUNT" -lt "$WORKERS_COUNT" ]; then echo "$ACTIVE_WORKERS_COUNT workers are active, Exiting" exit 1 else From c46d66afec7717199c0e90a81d080f6208de03a7 Mon Sep 17 00:00:00 2001 From: Arik Fraimovich Date: Fri, 28 Apr 2023 10:35:30 -0700 Subject: [PATCH 052/274] Bump pysaml2 to 6.5.0 (#6013) --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 407e2aeb2b..46d898010e 100644 --- a/requirements.txt +++ b/requirements.txt @@ -37,7 +37,7 @@ rq==1.5.0 rq-scheduler==0.9.1 jsonschema==3.1.1 RestrictedPython==5.0 -pysaml2==6.1.0 +pysaml2==6.5.0 pycrypto==2.6.1 python-dotenv==0.19.2 funcy==1.13 From 3444f2b06c159f6a18d88fcd058b50bf89377963 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 30 Apr 2023 08:33:18 -0700 Subject: [PATCH 053/274] Bump pyyaml from 5.1.2 to 5.4 (#5442) Bumps [pyyaml](https://github.com/yaml/pyyaml) from 5.1.2 to 5.4. - [Release notes](https://github.com/yaml/pyyaml/releases) - [Changelog](https://github.com/yaml/pyyaml/blob/master/CHANGES) - [Commits](https://github.com/yaml/pyyaml/compare/5.1.2...5.4) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 46d898010e..72b27dd2e2 100644 --- a/requirements.txt +++ b/requirements.txt @@ -20,7 +20,7 @@ blinker==1.4 psycopg2==2.8.3 python-dateutil==2.8.0 pytz>=2019.3 -PyYAML==5.1.2 +PyYAML==5.4 redis==3.5.0 requests==2.21.0 SQLAlchemy==1.3.10 From e8071dcb124ffbccb618a34bb963226fe49da0bd Mon Sep 17 00:00:00 2001 From: Will Lachance Date: Wed, 17 May 2023 10:00:42 -0400 Subject: [PATCH 054/274] Pin boto3 dependencies in dev requirements as well (#6037) * Pin boto3 dependencies in dev requirements as well Testing to see if this fixes CI, where it appears a more recent (too recent) version of boto3 is being installed. * Add circle step to list installed packages This takes almost no time, and helps debug dependency issues (a longer-term fix might be to switch to pip-compile). --- .circleci/config.yml | 3 +++ requirements_dev.txt | 1 + 2 files changed, 4 insertions(+) diff --git a/.circleci/config.yml b/.circleci/config.yml index 0109051768..0818ededa8 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -43,6 +43,9 @@ jobs: - run: name: List Enabled Query Runners command: docker-compose run --rm redash manage ds list_types + - run: + name: List Installed Python Packages + command: docker-compose run --rm redash pip freeze - run: name: Run Tests command: docker-compose run --name tests redash tests --junitxml=junit.xml --cov-report xml --cov=redash --cov-config .coveragerc tests/ diff --git a/requirements_dev.txt b/requirements_dev.txt index 1c32a3d30f..f169eb53a2 100644 --- a/requirements_dev.txt +++ b/requirements_dev.txt @@ -6,6 +6,7 @@ mock==3.0.5 # PyMongo and Athena dependencies are needed for some of the unit tests: # (this is not perfect and we should resolve this in a different way) pymongo[srv,tls]==3.9.0 +boto3>=1.10.0,<1.11.0 botocore>=1.13,<1.14.0 PyAthena>=1.5.0,<=1.11.5 ptvsd==4.3.2 From 962f13eed0fbf7ce19c498578ca9721a9e938154 Mon Sep 17 00:00:00 2001 From: Will Lachance Date: Wed, 17 May 2023 10:01:15 -0400 Subject: [PATCH 055/274] Update Debian version for Node image (#6038) `14.17` used stretch, which was ancient and seems to no longer support updates. Let's try updating to bullseye, which should be around for a while. --- .circleci/config.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 0818ededa8..10a7b698a5 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -2,7 +2,7 @@ version: 2.0 build-docker-image-job: &build-docker-image-job docker: - - image: circleci/node:14.17 + - image: circleci/node:14.17-bullseye steps: - setup_remote_docker: version: 19.03.13 @@ -65,7 +65,7 @@ jobs: CYPRESS_INSTALL_BINARY: 0 PUPPETEER_SKIP_CHROMIUM_DOWNLOAD: 1 docker: - - image: circleci/node:14.17 + - image: circleci/node:14.17-bullseye steps: - checkout - run: mkdir -p /tmp/test-results/eslint @@ -79,7 +79,7 @@ jobs: CYPRESS_INSTALL_BINARY: 0 PUPPETEER_SKIP_CHROMIUM_DOWNLOAD: 1 docker: - - image: circleci/node:14.17 + - image: circleci/node:14.17-bullseye steps: - checkout - run: sudo apt update @@ -103,7 +103,7 @@ jobs: CYPRESS_INSTALL_BINARY: 0 PUPPETEER_SKIP_CHROMIUM_DOWNLOAD: 1 docker: - - image: circleci/node:14.17 + - image: circleci/node:14.17-bullseye steps: - setup_remote_docker: version: 19.03.13 From bc909a13a3b40270112d3110c17808f1cd0a7a33 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 26 May 2023 11:35:40 +0800 Subject: [PATCH 056/274] Bump redis from 3.5.0 to 4.4.4 (#6050) Bumps [redis](https://github.com/redis/redis-py) from 3.5.0 to 4.4.4. - [Release notes](https://github.com/redis/redis-py/releases) - [Changelog](https://github.com/redis/redis-py/blob/master/CHANGES) - [Commits](https://github.com/redis/redis-py/compare/3.5.0...v4.4.4) --- updated-dependencies: - dependency-name: redis dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 72b27dd2e2..5f580ce8b4 100644 --- a/requirements.txt +++ b/requirements.txt @@ -21,7 +21,7 @@ psycopg2==2.8.3 python-dateutil==2.8.0 pytz>=2019.3 PyYAML==5.4 -redis==3.5.0 +redis==4.4.4 requests==2.21.0 SQLAlchemy==1.3.10 # We can't upgrade SQLAlchemy-Searchable version as newer versions require PostgreSQL > 9.6, but we target older versions at the moment. From f45bd27e68e7fbb1708773cf544e9a9620b50a5e Mon Sep 17 00:00:00 2001 From: Will Lachance Date: Fri, 23 Jun 2023 11:23:51 -0400 Subject: [PATCH 057/274] Update Simba ODBC driver (#6110) --- Dockerfile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index 7f41d1b7a3..36239739cd 100644 --- a/Dockerfile +++ b/Dockerfile @@ -64,7 +64,7 @@ RUN apt-get update && \ ARG TARGETPLATFORM -ARG databricks_odbc_driver_url=https://databricks.com/wp-content/uploads/2.6.10.1010-2/SimbaSparkODBC-2.6.10.1010-2-Debian-64bit.zip +ARG databricks_odbc_driver_url=https://databricks-bi-artifacts.s3.us-east-2.amazonaws.com/simbaspark-drivers/odbc/2.6.26/SimbaSparkODBC-2.6.26.1045-Debian-64bit.zip RUN if [ "$TARGETPLATFORM" = "linux/amd64" ]; then \ curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - \ && curl https://packages.microsoft.com/config/debian/10/prod.list > /etc/apt/sources.list.d/mssql-release.list \ @@ -74,11 +74,11 @@ RUN if [ "$TARGETPLATFORM" = "linux/amd64" ]; then \ && rm -rf /var/lib/apt/lists/* \ && curl "$databricks_odbc_driver_url" --location --output /tmp/simba_odbc.zip \ && chmod 600 /tmp/simba_odbc.zip \ - && unzip /tmp/simba_odbc.zip -d /tmp/ \ - && dpkg -i /tmp/SimbaSparkODBC-*/*.deb \ + && unzip /tmp/simba_odbc.zip -d /tmp/simba \ + && dpkg -i /tmp/simba/*.deb \ && printf "[Simba]\nDriver = /opt/simba/spark/lib/64/libsparkodbc_sb64.so" >> /etc/odbcinst.ini \ && rm /tmp/simba_odbc.zip \ - && rm -rf /tmp/SimbaSparkODBC*; fi + && rm -rf /tmp/simba; fi WORKDIR /app From f3892e00a5cfb91e1b5384f647101894a6ecef0f Mon Sep 17 00:00:00 2001 From: Jun Date: Sat, 24 Jun 2023 13:25:07 +0900 Subject: [PATCH 058/274] ci: migrate to github workflow ci (#6008) Signed-off-by: Ye Sijun --- {.circleci => .ci}/Dockerfile.cypress | 0 .../docker-compose.ci.yml | 0 {.circleci => .ci}/docker-compose.cypress.yml | 2 +- {.circleci => .ci}/docker_build | 0 {.circleci => .ci}/pack | 0 {.circleci => .ci}/update_version | 0 .circleci/config.yml | 182 ------------------ .github/workflows/ci.yml | 149 ++++++++++++++ client/cypress/cypress.js | 4 +- 9 files changed, 152 insertions(+), 185 deletions(-) rename {.circleci => .ci}/Dockerfile.cypress (100%) rename .circleci/docker-compose.circle.yml => .ci/docker-compose.ci.yml (100%) rename {.circleci => .ci}/docker-compose.cypress.yml (97%) rename {.circleci => .ci}/docker_build (100%) rename {.circleci => .ci}/pack (100%) rename {.circleci => .ci}/update_version (100%) delete mode 100644 .circleci/config.yml create mode 100644 .github/workflows/ci.yml diff --git a/.circleci/Dockerfile.cypress b/.ci/Dockerfile.cypress similarity index 100% rename from .circleci/Dockerfile.cypress rename to .ci/Dockerfile.cypress diff --git a/.circleci/docker-compose.circle.yml b/.ci/docker-compose.ci.yml similarity index 100% rename from .circleci/docker-compose.circle.yml rename to .ci/docker-compose.ci.yml diff --git a/.circleci/docker-compose.cypress.yml b/.ci/docker-compose.cypress.yml similarity index 97% rename from .circleci/docker-compose.cypress.yml rename to .ci/docker-compose.cypress.yml index da57925f11..2a6feaf261 100644 --- a/.circleci/docker-compose.cypress.yml +++ b/.ci/docker-compose.cypress.yml @@ -44,7 +44,7 @@ services: ipc: host build: context: ../ - dockerfile: .circleci/Dockerfile.cypress + dockerfile: .ci/Dockerfile.cypress depends_on: - server - worker diff --git a/.circleci/docker_build b/.ci/docker_build similarity index 100% rename from .circleci/docker_build rename to .ci/docker_build diff --git a/.circleci/pack b/.ci/pack similarity index 100% rename from .circleci/pack rename to .ci/pack diff --git a/.circleci/update_version b/.ci/update_version similarity index 100% rename from .circleci/update_version rename to .ci/update_version diff --git a/.circleci/config.yml b/.circleci/config.yml deleted file mode 100644 index 10a7b698a5..0000000000 --- a/.circleci/config.yml +++ /dev/null @@ -1,182 +0,0 @@ -version: 2.0 - -build-docker-image-job: &build-docker-image-job - docker: - - image: circleci/node:14.17-bullseye - steps: - - setup_remote_docker: - version: 19.03.13 - - checkout - - run: sudo apt update - - run: sudo apt install python3-pip - - run: .circleci/update_version - - run: sudo npm install --global --force yarn@1.22.10 - - run: .circleci/docker_build -jobs: - backend-lint: - docker: - - image: circleci/python:3.7.0 - steps: - - checkout - - run: sudo pip install flake8 - - run: ./bin/flake8_tests.sh - backend-unit-tests: - environment: - COMPOSE_FILE: .circleci/docker-compose.circle.yml - COMPOSE_PROJECT_NAME: redash - docker: - - image: circleci/buildpack-deps:xenial - steps: - - setup_remote_docker: - version: 19.03.13 - - checkout - - run: - name: Build Docker Images - command: | - set -x - COMPOSE_DOCKER_CLI_BUILD=1 DOCKER_BUILDKIT=1 docker-compose build --build-arg skip_ds_deps=true --build-arg skip_frontend_build=true - docker-compose up -d - sleep 10 - - run: - name: Create Test Database - command: docker-compose run --rm postgres psql -h postgres -U postgres -c "create database tests;" - - run: - name: List Enabled Query Runners - command: docker-compose run --rm redash manage ds list_types - - run: - name: List Installed Python Packages - command: docker-compose run --rm redash pip freeze - - run: - name: Run Tests - command: docker-compose run --name tests redash tests --junitxml=junit.xml --cov-report xml --cov=redash --cov-config .coveragerc tests/ - - run: - name: Copy Test Results - command: | - mkdir -p /tmp/test-results/unit-tests - docker cp tests:/app/coverage.xml ./coverage.xml - docker cp tests:/app/junit.xml /tmp/test-results/unit-tests/results.xml - when: always - - store_test_results: - path: /tmp/test-results - - store_artifacts: - path: coverage.xml - frontend-lint: - environment: - CYPRESS_INSTALL_BINARY: 0 - PUPPETEER_SKIP_CHROMIUM_DOWNLOAD: 1 - docker: - - image: circleci/node:14.17-bullseye - steps: - - checkout - - run: mkdir -p /tmp/test-results/eslint - - run: sudo npm install --global --force yarn@1.22.10 - - run: yarn cache clean && yarn --frozen-lockfile --network-concurrency 1 - - run: yarn lint:ci - - store_test_results: - path: /tmp/test-results - frontend-unit-tests: - environment: - CYPRESS_INSTALL_BINARY: 0 - PUPPETEER_SKIP_CHROMIUM_DOWNLOAD: 1 - docker: - - image: circleci/node:14.17-bullseye - steps: - - checkout - - run: sudo apt update - - run: sudo apt install python3-pip - - run: sudo npm install --global --force yarn@1.22.10 - - run: yarn cache clean && yarn --frozen-lockfile --network-concurrency 1 - - run: - name: Run App Tests - command: yarn test - - run: - name: Run Visualizations Tests - command: (cd viz-lib && yarn test) - - run: yarn lint - frontend-e2e-tests: - environment: - COMPOSE_FILE: .circleci/docker-compose.cypress.yml - COMPOSE_PROJECT_NAME: cypress - PERCY_TOKEN_ENCODED: ZGRiY2ZmZDQ0OTdjMzM5ZWE0ZGQzNTZiOWNkMDRjOTk4Zjg0ZjMxMWRmMDZiM2RjOTYxNDZhOGExMjI4ZDE3MA== - CYPRESS_PROJECT_ID_ENCODED: OTI0Y2th - CYPRESS_RECORD_KEY_ENCODED: YzA1OTIxMTUtYTA1Yy00NzQ2LWEyMDMtZmZjMDgwZGI2ODgx - CYPRESS_INSTALL_BINARY: 0 - PUPPETEER_SKIP_CHROMIUM_DOWNLOAD: 1 - docker: - - image: circleci/node:14.17-bullseye - steps: - - setup_remote_docker: - version: 19.03.13 - - checkout - - run: - name: Enable Code Coverage report for master branch - command: | - if [ "$CIRCLE_BRANCH" = "master" ]; then - echo 'export CODE_COVERAGE=true' >> $BASH_ENV - source $BASH_ENV - fi - - run: sudo npm install --global --force yarn@1.22.10 - - run: - name: Install frontend dependencies - command: yarn cache clean && yarn --frozen-lockfile --network-concurrency 1 - - run: - name: Setup Redash server - command: | - yarn cypress build - yarn cypress start -- --skip-db-seed - docker-compose run cypress yarn cypress db-seed - - run: - name: Execute Cypress tests - command: yarn cypress run-ci - - run: - name: "Failure: output container logs to console" - command: | - docker-compose logs - when: on_fail - - run: - name: Copy Code Coverage results - command: | - docker cp cypress:/usr/src/app/coverage ./coverage || true - when: always - - store_artifacts: - path: coverage - build-docker-image: *build-docker-image-job - build-preview-docker-image: *build-docker-image-job -workflows: - version: 2 - build: - jobs: - - backend-lint - - backend-unit-tests: - requires: - - backend-lint - - frontend-lint - - frontend-unit-tests: - requires: - - backend-lint - - frontend-lint - - frontend-e2e-tests: - requires: - - frontend-lint - - build-preview-docker-image: - requires: - - backend-unit-tests - - frontend-unit-tests - - frontend-e2e-tests - filters: - branches: - only: - - master - - hold: - type: approval - requires: - - backend-unit-tests - - frontend-unit-tests - - frontend-e2e-tests - filters: - branches: - only: - - /release\/.*/ - - build-docker-image: - requires: - - hold diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000000..7d00b665b9 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,149 @@ +name: Tests +on: + push: + branches: + - master + pull_request: +env: + NODE_VERSION: 14.17 +jobs: + backend-lint: + runs-on: ubuntu-22.04 + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 1 + - uses: actions/setup-python@v4 + with: + python-version: '3.7' + - run: sudo pip install flake8 + - run: ./bin/flake8_tests.sh + + backend-unit-tests: + runs-on: ubuntu-22.04 + needs: backend-lint + env: + COMPOSE_FILE: .ci/docker-compose.ci.yml + COMPOSE_PROJECT_NAME: redash + COMPOSE_DOCKER_CLI_BUILD: 1 + DOCKER_BUILDKIT: 1 + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 1 + - name: Build Docker Images + run: | + set -x + docker-compose build --build-arg skip_ds_deps=true --build-arg skip_frontend_build=true + docker-compose up -d + sleep 10 + - name: Create Test Database + run: docker-compose -p redash run --rm postgres psql -h postgres -U postgres -c "create database tests;" + - name: List Enabled Query Runners + run: docker-compose -p redash run --rm redash manage ds list_types + - name: Run Tests + run: docker-compose -p redash run --name tests redash tests --junitxml=junit.xml --cov-report xml --cov=redash --cov-config .coveragerc tests/ + - name: Copy Test Results + run: | + mkdir -p /tmp/test-results/unit-tests + docker cp tests:/app/coverage.xml ./coverage.xml + docker cp tests:/app/junit.xml /tmp/test-results/unit-tests/results.xml + - name: Store Test Results + uses: actions/upload-artifact@v3 + with: + name: test-results + path: /tmp/test-results + - name: Store Coverage Results + uses: actions/upload-artifact@v3 + with: + name: coverage + path: coverage.xml + + frontend-lint: + runs-on: ubuntu-22.04 + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 1 + - uses: actions/setup-node@v3 + with: + node-version: ${{ env.NODE_VERSION }} + cache: 'yarn' + - name: Install Dependencies + run: | + npm install --global --force yarn@1.22.10 + yarn cache clean && yarn --frozen-lockfile --network-concurrency 1 + - name: Run Lint + run: yarn lint:ci + - name: Store Test Results + uses: actions/upload-artifact@v3 + with: + name: test-results + path: /tmp/test-results + + frontend-unit-tests: + runs-on: ubuntu-22.04 + needs: frontend-lint + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 1 + - uses: actions/setup-node@v3 + with: + node-version: ${{ env.NODE_VERSION }} + cache: 'yarn' + - name: Install Dependencies + run: | + npm install --global --force yarn@1.22.10 + yarn cache clean && yarn --frozen-lockfile --network-concurrency 1 + - name: Run App Tests + run: yarn test + - name: Run Visualizations Tests + run: cd viz-lib && yarn test + - run: yarn lint + + frontend-e2e-tests: + runs-on: ubuntu-22.04 + needs: frontend-lint + env: + COMPOSE_FILE: .ci/docker-compose.cypress.yml + COMPOSE_PROJECT_NAME: cypress + PERCY_TOKEN_ENCODED: ZGRiY2ZmZDQ0OTdjMzM5ZWE0ZGQzNTZiOWNkMDRjOTk4Zjg0ZjMxMWRmMDZiM2RjOTYxNDZhOGExMjI4ZDE3MA== + CYPRESS_PROJECT_ID_ENCODED: OTI0Y2th + CYPRESS_RECORD_KEY_ENCODED: YzA1OTIxMTUtYTA1Yy00NzQ2LWEyMDMtZmZjMDgwZGI2ODgx + CYPRESS_INSTALL_BINARY: 0 + PUPPETEER_SKIP_CHROMIUM_DOWNLOAD: 1 + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 1 + - uses: actions/setup-node@v3 + with: + node-version: ${{ env.NODE_VERSION }} + cache: 'yarn' + - name: Enable Code Coverage Report For Master Branch + if: endsWith(github.ref, '/master') + run: | + echo "CODE_COVERAGE=true" >> $GITHUB_ENV + - name: Install Dependencies + run: | + npm install --global --force yarn@1.22.10 + yarn cache clean && yarn --frozen-lockfile --network-concurrency 1 + - name: Setup Redash Server + run: | + set -x + yarn cypress build + yarn cypress start -- --skip-db-seed + docker-compose run cypress yarn cypress db-seed + - name: Execute Cypress Tests + run: yarn cypress run-ci + - name: "Failure: output container logs to console" + if: failure() + run: docker-compose logs + - name: Copy Code Coverage Results + run: docker cp cypress:/usr/src/app/coverage ./coverage || true + - name: Store Coverage Results + uses: actions/upload-artifact@v3 + with: + name: coverage + path: coverage diff --git a/client/cypress/cypress.js b/client/cypress/cypress.js index 5fd080bb31..583346e85a 100644 --- a/client/cypress/cypress.js +++ b/client/cypress/cypress.js @@ -63,10 +63,10 @@ function runCypressCI() { PERCY_TOKEN_ENCODED, CYPRESS_PROJECT_ID_ENCODED, CYPRESS_RECORD_KEY_ENCODED, - CIRCLE_REPOSITORY_URL, + GITHUB_REPOSITORY, } = process.env; - if (CIRCLE_REPOSITORY_URL && CIRCLE_REPOSITORY_URL.includes("getredash/redash")) { + if (GITHUB_REPOSITORY === "getredash/redash") { if (PERCY_TOKEN_ENCODED) { process.env.PERCY_TOKEN = atob(`${PERCY_TOKEN_ENCODED}`); } From 4d11c94be0d22dfe27fd7c3997b225d4e93ae6a5 Mon Sep 17 00:00:00 2001 From: Peter Lee Date: Sat, 24 Jun 2023 13:35:45 +0800 Subject: [PATCH 059/274] dependencies: pystache==0.6.0 (#6091) fix Python3.9 can't install pystache problem --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 5f580ce8b4..94a7c10b37 100644 --- a/requirements.txt +++ b/requirements.txt @@ -44,7 +44,7 @@ funcy==1.13 sentry-sdk>=0.14.3,<0.15.0 semver==2.8.1 xlsxwriter==1.2.2 -pystache==0.5.4 +pystache==0.6.0 parsedatetime==2.4 PyJWT==1.7.1 cryptography==2.8 From 28e63e3d7661a4533f71e585296ff722adf9668d Mon Sep 17 00:00:00 2001 From: Peter Lee Date: Sun, 25 Jun 2023 20:10:49 +0800 Subject: [PATCH 060/274] fix pivot table style error (#6112) --- client/cypress/integration/visualizations/pivot_spec.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/client/cypress/integration/visualizations/pivot_spec.js b/client/cypress/integration/visualizations/pivot_spec.js index c0622b6158..29a386d55b 100644 --- a/client/cypress/integration/visualizations/pivot_spec.js +++ b/client/cypress/integration/visualizations/pivot_spec.js @@ -100,10 +100,11 @@ describe("Pivot", () => { .type(" UNION ALL {enter}SELECT 'c' AS stage1, 'c5' AS stage2, 55 AS value"); cy.getByTestId("SaveButton").click(); - cy.getByTestId("ExecuteButton").click(); + cy.getByTestId("ExecuteButton").click({ timeout: 10000 }); // assert number of rows is 12 cy.getByTestId("PivotTableVisualization").contains(".pvtGrandTotal", "12"); + }); }); From b33bd1b02e409b867531366a69dcb31db44d664b Mon Sep 17 00:00:00 2001 From: Justin Clift Date: Mon, 26 Jun 2023 05:29:04 +1000 Subject: [PATCH 061/274] ci: Attempt to fix restyled.io test (#6116) We're now getting an error with exit code 127, so this commit adds the suggested solution of telling Restyled the exact command needed to run: https://github.com/restyled-io/restyled.io/wiki/Common-Errors:-Prettier#prettier-with-tailwindcss-executable-file-not-found-in-path --- .restyled.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.restyled.yaml b/.restyled.yaml index 9a9537ce7a..9aea7fc1b1 100644 --- a/.restyled.yaml +++ b/.restyled.yaml @@ -57,6 +57,9 @@ restylers: - migrations/versions - name: prettier image: restyled/restyler-prettier:v1.19.1-2 + command: + - prettier + - --write include: - client/app/**/*.js - client/app/**/*.jsx From 675838619e66ae9bf869c6d16533325d76bb63b5 Mon Sep 17 00:00:00 2001 From: Peter Lee Date: Tue, 27 Jun 2023 00:46:10 +0800 Subject: [PATCH 062/274] Try fixing cypress in a more correct way (#6117) --- client/cypress/integration/visualizations/pivot_spec.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/client/cypress/integration/visualizations/pivot_spec.js b/client/cypress/integration/visualizations/pivot_spec.js index 29a386d55b..c56e43be35 100644 --- a/client/cypress/integration/visualizations/pivot_spec.js +++ b/client/cypress/integration/visualizations/pivot_spec.js @@ -100,11 +100,12 @@ describe("Pivot", () => { .type(" UNION ALL {enter}SELECT 'c' AS stage1, 'c5' AS stage2, 55 AS value"); cy.getByTestId("SaveButton").click(); - cy.getByTestId("ExecuteButton").click({ timeout: 10000 }); + cy.getByTestId("ExecuteButton") + .should("be.enabled") + .click(); // assert number of rows is 12 cy.getByTestId("PivotTableVisualization").contains(".pvtGrandTotal", "12"); - }); }); From 46f67fd44b6e367a0734539799adfe3a3f761b08 Mon Sep 17 00:00:00 2001 From: Will Lachance Date: Wed, 28 Jun 2023 14:26:28 -0400 Subject: [PATCH 063/274] Upgrade Python version to 3.8 (#6130) * Upgrade Python version to 3.8 (with ci too) 3.7 is now end-of-life: this is a minimal change to get us on a supported version. --- .github/workflows/ci.yml | 2 +- Dockerfile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7d00b665b9..5e97383e87 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -15,7 +15,7 @@ jobs: fetch-depth: 1 - uses: actions/setup-python@v4 with: - python-version: '3.7' + python-version: '3.8' - run: sudo pip install flake8 - run: ./bin/flake8_tests.sh diff --git a/Dockerfile b/Dockerfile index 36239739cd..a76efe420e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -25,7 +25,7 @@ COPY --chown=redash client /frontend/client COPY --chown=redash webpack.config.js /frontend/ RUN if [ "x$skip_frontend_build" = "x" ] ; then yarn build; else mkdir -p /frontend/client/dist && touch /frontend/client/dist/multi_org.html && touch /frontend/client/dist/index.html; fi -FROM python:3.7-slim-buster +FROM python:3.8-slim-buster EXPOSE 5000 From c2c7f44d5c5dbc24d306081ecf866604cbc5745c Mon Sep 17 00:00:00 2001 From: Justin Clift Date: Fri, 30 Jun 2023 16:15:12 +1000 Subject: [PATCH 064/274] Update Python dependencies to eliminate version conflicts (#6122) * Remove DynamoDB as a data source for now, due to dependency incompatibilities * Remove Firebolt as a data source for now, due to dependency incompatibilities * Remove pymapd / pyomnisci / heavyai, due to dependency incompatibilities * Remove pycrypto, upgrade cryptography * Remove pyarrow (for now), which we no longer need * Require an (older) version of black, to avoid test failures with more recent click library * Upgrade gevent to 21.12.0 * Upgrade greenlet to 1.1.2 * Upgrade httpli2 to 0.18.1 * Upgrade requests to 2.31.0 * Upgrade snowflake-connector-python to 3.0.4 * Upgrade urllib3 to 1.25.11 Note, the warning message caused by the older versions of gevent and greenlet was: RuntimeWarning: greenlet.greenlet size changed, may indicate binary incompatibility. Expected 40 from C header, got 144 from PyObject --- .../assets/images/db-logos/dynamodb_sql.png | Bin 12572 -> 0 bytes redash/query_runner/dynamodb_sql.py | 144 ------------------ redash/query_runner/firebolt.py | 95 ------------ redash/query_runner/mapd.py | 109 ------------- redash/settings/__init__.py | 3 - requirements.txt | 13 +- requirements_all_ds.txt | 7 +- 7 files changed, 8 insertions(+), 363 deletions(-) delete mode 100644 client/app/assets/images/db-logos/dynamodb_sql.png delete mode 100644 redash/query_runner/dynamodb_sql.py delete mode 100644 redash/query_runner/firebolt.py delete mode 100644 redash/query_runner/mapd.py diff --git a/client/app/assets/images/db-logos/dynamodb_sql.png b/client/app/assets/images/db-logos/dynamodb_sql.png deleted file mode 100644 index 22d9e6430b3df508d83b45168b79dfc4de1c12e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12572 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 diff --git a/redash/query_runner/dynamodb_sql.py b/redash/query_runner/dynamodb_sql.py deleted file mode 100644 index 965cc8fc2f..0000000000 --- a/redash/query_runner/dynamodb_sql.py +++ /dev/null @@ -1,144 +0,0 @@ -import logging -import sys - -from redash.query_runner import * -from redash.utils import json_dumps - -logger = logging.getLogger(__name__) - -try: - from dql import Engine, FragmentEngine - from dynamo3 import DynamoDBError - from pyparsing import ParseException - - enabled = True -except ImportError as e: - enabled = False - -types_map = { - "UNICODE": TYPE_INTEGER, - "TINYINT": TYPE_INTEGER, - "SMALLINT": TYPE_INTEGER, - "INT": TYPE_INTEGER, - "DOUBLE": TYPE_FLOAT, - "DECIMAL": TYPE_FLOAT, - "FLOAT": TYPE_FLOAT, - "REAL": TYPE_FLOAT, - "BOOLEAN": TYPE_BOOLEAN, - "TIMESTAMP": TYPE_DATETIME, - "DATE": TYPE_DATETIME, - "CHAR": TYPE_STRING, - "STRING": TYPE_STRING, - "VARCHAR": TYPE_STRING, -} - - -class DynamoDBSQL(BaseSQLQueryRunner): - should_annotate_query = False - - @classmethod - def configuration_schema(cls): - return { - "type": "object", - "properties": { - "region": {"type": "string", "default": "us-east-1"}, - "access_key": {"type": "string"}, - "secret_key": {"type": "string"}, - }, - "required": ["access_key", "secret_key"], - "secret": ["secret_key"], - } - - def test_connection(self): - engine = self._connect() - list(engine.connection.list_tables()) - - @classmethod - def type(cls): - return "dynamodb_sql" - - @classmethod - def name(cls): - return "DynamoDB (with DQL)" - - def _connect(self): - engine = FragmentEngine() - config = self.configuration.to_dict() - - if not config.get("region"): - config["region"] = "us-east-1" - - if config.get("host") == "": - config["host"] = None - - engine.connect(**config) - - return engine - - def _get_tables(self, schema): - engine = self._connect() - - # We can't use describe_all because sometimes a user might give List permission - # for * (all tables), but describe permission only for some of them. - tables = engine.connection.list_tables() - for table_name in tables: - try: - table = engine.describe(table_name, True) - schema[table.name] = { - "name": table.name, - "columns": list(table.attrs.keys()), - } - except DynamoDBError: - pass - - def run_query(self, query, user): - engine = None - try: - engine = self._connect() - - if not query.endswith(";"): - query = query + ";" - - result = engine.execute(query) - - columns = [] - rows = [] - - # When running a count query it returns the value as a string, in which case - # we transform it into a dictionary to be the same as regular queries. - if isinstance(result, str): - # when count < scanned_count, dql returns a string with number of rows scanned - value = result.split(" (")[0] - if value: - value = int(value) - result = [{"value": value}] - - for item in result: - if not columns: - for k, v in item.items(): - columns.append( - { - "name": k, - "friendly_name": k, - "type": types_map.get(str(type(v)).upper(), None), - } - ) - rows.append(item) - - data = {"columns": columns, "rows": rows} - json_data = json_dumps(data) - error = None - except ParseException as e: - error = "Error parsing query at line {} (column {}):\n{}".format( - e.lineno, e.column, e.line - ) - json_data = None - except (KeyboardInterrupt, JobTimeoutException): - if engine and engine.connection: - engine.connection.cancel() - raise - - return json_data, error - - -register(DynamoDBSQL) diff --git a/redash/query_runner/firebolt.py b/redash/query_runner/firebolt.py deleted file mode 100644 index fc892f91c4..0000000000 --- a/redash/query_runner/firebolt.py +++ /dev/null @@ -1,95 +0,0 @@ -try: - from firebolt.db import connect - from firebolt.client import DEFAULT_API_URL - enabled = True -except ImportError: - enabled = False - -from redash.query_runner import BaseQueryRunner, register -from redash.query_runner import TYPE_STRING, TYPE_INTEGER, TYPE_BOOLEAN -from redash.utils import json_dumps, json_loads - -TYPES_MAP = {1: TYPE_STRING, 2: TYPE_INTEGER, 3: TYPE_BOOLEAN} - - -class Firebolt(BaseQueryRunner): - noop_query = "SELECT 1" - - @classmethod - def configuration_schema(cls): - return { - "type": "object", - "properties": { - "api_endpoint": {"type": "string", "default": DEFAULT_API_URL}, - "engine_name": {"type": "string"}, - "DB": {"type": "string"}, - "user": {"type": "string"}, - "password": {"type": "string"}, - }, - "order": ["user", "password", "api_endpoint", "engine_name", "DB"], - "required": ["user", "password", "engine_name", "DB"], - "secret": ["password"], - } - - @classmethod - def enabled(cls): - return enabled - - def run_query(self, query, user): - connection = connect( - api_endpoint=(self.configuration.get("api_endpoint") or DEFAULT_API_URL), - engine_name=(self.configuration.get("engine_name") or None), - username=(self.configuration.get("user") or None), - password=(self.configuration.get("password") or None), - database=(self.configuration.get("DB") or None), - ) - - cursor = connection.cursor() - - try: - cursor.execute(query) - columns = self.fetch_columns( - [(i[0], TYPES_MAP.get(i[1], None)) for i in cursor.description] - ) - rows = [ - dict(zip((column["name"] for column in columns), row)) for row in cursor - ] - - data = {"columns": columns, "rows": rows} - error = None - json_data = json_dumps(data) - finally: - connection.close() - - return json_data, error - - - def get_schema(self, get_stats=False): - query = """ - SELECT TABLE_SCHEMA, - TABLE_NAME, - COLUMN_NAME - FROM INFORMATION_SCHEMA.COLUMNS - WHERE TABLE_SCHEMA <> 'INFORMATION_SCHEMA' - """ - - results, error = self.run_query(query, None) - - if error is not None: - self._handle_run_query_error(error) - - schema = {} - results = json_loads(results) - - for row in results["rows"]: - table_name = "{}.{}".format(row["table_schema"], row["table_name"]) - - if table_name not in schema: - schema[table_name] = {"name": table_name, "columns": []} - - schema[table_name]["columns"].append(row["column_name"]) - - return list(schema.values()) - - -register(Firebolt) diff --git a/redash/query_runner/mapd.py b/redash/query_runner/mapd.py deleted file mode 100644 index 45f77cc273..0000000000 --- a/redash/query_runner/mapd.py +++ /dev/null @@ -1,109 +0,0 @@ -try: - import pymapd - - enabled = True -except ImportError: - enabled = False - -from redash.query_runner import BaseSQLQueryRunner, register -from redash.query_runner import ( - TYPE_STRING, - TYPE_DATE, - TYPE_DATETIME, - TYPE_INTEGER, - TYPE_FLOAT, - TYPE_BOOLEAN, -) -from redash.utils import json_dumps - -TYPES_MAP = { - 0: TYPE_INTEGER, - 1: TYPE_INTEGER, - 2: TYPE_INTEGER, - 3: TYPE_FLOAT, - 4: TYPE_FLOAT, - 5: TYPE_FLOAT, - 6: TYPE_STRING, - 7: TYPE_DATE, - 8: TYPE_DATETIME, - 9: TYPE_DATE, - 10: TYPE_BOOLEAN, - 11: TYPE_DATE, - 12: TYPE_DATE, -} - - -class Mapd(BaseSQLQueryRunner): - @classmethod - def configuration_schema(cls): - return { - "type": "object", - "properties": { - "host": {"type": "string", "default": "localhost"}, - "port": {"type": "number", "default": 9091}, - "user": {"type": "string", "default": "mapd", "title": "username"}, - "password": {"type": "string", "default": "HyperInteractive"}, - "database": {"type": "string", "default": "mapd"}, - }, - "order": ["user", "password", "host", "port", "database"], - "required": ["host", "port", "user", "password", "database"], - "secret": ["password"], - } - - @classmethod - def enabled(cls): - return enabled - - def connect_database(self): - connection = pymapd.connect( - user=self.configuration["user"], - password=self.configuration["password"], - host=self.configuration["host"], - port=self.configuration["port"], - dbname=self.configuration["database"], - ) - return connection - - def run_query(self, query, user): - connection = self.connect_database() - cursor = connection.cursor() - - try: - cursor.execute(query) - columns = self.fetch_columns( - [(i[0], TYPES_MAP.get(i[1], None)) for i in cursor.description] - ) - rows = [ - dict(zip((column["name"] for column in columns), row)) for row in cursor - ] - data = {"columns": columns, "rows": rows} - error = None - json_data = json_dumps(data) - finally: - cursor.close() - connection.close() - - return json_data, error - - def _get_tables(self, schema): - connection = self.connect_database() - try: - for table_name in connection.get_tables(): - schema[table_name] = {"name": table_name, "columns": []} - for row_column in connection.get_table_details(table_name): - schema[table_name]["columns"].append(row_column[0]) - finally: - connection.close - - return list(schema.values()) - - def test_connection(self): - connection = self.connect_database() - try: - tables = connection.get_tables() - num_tables = tables.count(tables) - finally: - connection.close - - -register(Mapd) diff --git a/redash/settings/__init__.py b/redash/settings/__init__.py index df152da174..866a9ef8a7 100644 --- a/redash/settings/__init__.py +++ b/redash/settings/__init__.py @@ -359,11 +359,9 @@ def email_server_is_configured(): "redash.query_runner.rockset", "redash.query_runner.treasuredata", "redash.query_runner.sqlite", - "redash.query_runner.dynamodb_sql", "redash.query_runner.mssql", "redash.query_runner.mssql_odbc", "redash.query_runner.memsql_ds", - "redash.query_runner.mapd", "redash.query_runner.jql", "redash.query_runner.google_analytics", "redash.query_runner.axibase_tsd", @@ -389,7 +387,6 @@ def email_server_is_configured(): "redash.query_runner.sparql_endpoint", "redash.query_runner.excel", "redash.query_runner.csv", - "redash.query_runner.firebolt", "redash.query_runner.databend", "redash.query_runner.nz", "redash.query_runner.arango" diff --git a/requirements.txt b/requirements.txt index 94a7c10b37..5367fd471e 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,10 +1,11 @@ Flask==1.1.1 Jinja2==2.10.3 itsdangerous==1.1.0 +black==19.10b0 click==6.7 MarkupSafe==1.1.1 pyOpenSSL==19.0.0 -httplib2==0.14.0 +httplib2==0.18.1 wtforms==2.2.1 Flask-RESTful==0.3.7 Flask-Login==0.4.1 @@ -22,7 +23,7 @@ python-dateutil==2.8.0 pytz>=2019.3 PyYAML==5.4 redis==4.4.4 -requests==2.21.0 +requests==2.31.0 SQLAlchemy==1.3.10 # We can't upgrade SQLAlchemy-Searchable version as newer versions require PostgreSQL > 9.6, but we target older versions at the moment. SQLAlchemy-Searchable==0.10.6 @@ -31,14 +32,13 @@ pyparsing==2.3.0 SQLAlchemy-Utils==0.34.2 sqlparse==0.3.0 statsd==3.3.0 -greenlet==0.4.16 +greenlet==1.1.2 gunicorn==20.0.4 rq==1.5.0 rq-scheduler==0.9.1 jsonschema==3.1.1 RestrictedPython==5.0 pysaml2==6.5.0 -pycrypto==2.6.1 python-dotenv==0.19.2 funcy==1.13 sentry-sdk>=0.14.3,<0.15.0 @@ -47,14 +47,14 @@ xlsxwriter==1.2.2 pystache==0.6.0 parsedatetime==2.4 PyJWT==1.7.1 -cryptography==2.8 +cryptography==3.4.8 simplejson==3.16.0 ua-parser==0.8.0 user-agents==2.0 maxminddb-geolite2==2018.703 pypd==1.1.0 disposable-email-domains>=0.0.52 -gevent==1.4.0 +gevent==21.12.0 sshtunnel==0.1.5 supervisor==4.1.0 supervisor_checks==0.8.1 @@ -64,3 +64,4 @@ werkzeug==0.16.1 # ldap3==2.2.4 Authlib==0.15.5 advocate==1.0.0 +urllib3==1.25.11 diff --git a/requirements_all_ds.txt b/requirements_all_ds.txt index 26fe7bceba..ba2f676682 100644 --- a/requirements_all_ds.txt +++ b/requirements_all_ds.txt @@ -10,8 +10,6 @@ pymongo[tls,srv]==3.9.0 vertica-python==0.9.5 td-client==1.0.0 pymssql==2.1.5 -dql==0.5.26 -dynamo3==0.4.10 boto3>=1.10.0,<1.11.0 botocore>=1.13,<1.14.0 sasl>=0.1.3 @@ -22,12 +20,11 @@ memsql==3.2.0 atsd_client==3.0.5 simple_salesforce==0.74.3 PyAthena>=1.5.0,<=1.11.5 -pymapd==0.19.0 qds-sdk>=1.9.6 # ibm-db>=2.0.9 pydruid==0.5.7 requests_aws_sign==0.1.5 -snowflake-connector-python==2.1.3 +snowflake-connector-python==3.0.4 phoenixdb==0.7 # certifi is needed to support MongoDB and SSL: certifi>=2019.9.11 @@ -40,11 +37,9 @@ trino~=0.305 cmem-cmempy==21.2.3 xlrd==2.0.1 openpyxl==3.0.7 -firebolt-sdk databend-sqlalchemy==0.2.4 pandas==1.3.4 nzpy>=1.15 nzalchemy python-arango==6.1.0 pinotdb>=0.4.5 -pyarrow==10.0.0 \ No newline at end of file From 4c3fd833dfe1c2a78ea99938df0bcfcdd2c9832a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 30 Jun 2023 18:01:26 +1000 Subject: [PATCH 065/274] Bump jinja2 from 2.10.3 to 2.11.3 (#5431) Bumps [jinja2](https://github.com/pallets/jinja) from 2.10.3 to 2.11.3. - [Release notes](https://github.com/pallets/jinja/releases) - [Changelog](https://github.com/pallets/jinja/blob/master/CHANGES.rst) - [Commits](https://github.com/pallets/jinja/compare/2.10.3...2.11.3) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 5367fd471e..e29666ad20 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,5 @@ Flask==1.1.1 -Jinja2==2.10.3 +Jinja2==2.11.3 itsdangerous==1.1.0 black==19.10b0 click==6.7 From 24b6ef7ae7722b33886792197af45eaaea6542a6 Mon Sep 17 00:00:00 2001 From: Mukesh Date: Fri, 30 Jun 2023 16:09:04 +0530 Subject: [PATCH 066/274] Pymongo version upgrade changes (#5970) * Pymongo version upgrade changes * Get count logic has been changed to get using count_documents method --- redash/query_runner/mongodb.py | 28 +++++++++++++++------------- requirements_all_ds.txt | 2 +- requirements_dev.txt | 2 +- 3 files changed, 17 insertions(+), 15 deletions(-) diff --git a/redash/query_runner/mongodb.py b/redash/query_runner/mongodb.py index 9371832d32..f5d2a91cc2 100644 --- a/redash/query_runner/mongodb.py +++ b/redash/query_runner/mongodb.py @@ -15,7 +15,7 @@ from bson.timestamp import Timestamp from bson.decimal128 import Decimal128 from bson.son import SON - from bson.json_util import object_hook as bson_object_hook + from bson.json_util import object_hook as bson_object_hook, JSONOptions enabled = True @@ -67,7 +67,8 @@ def datetime_parser(dct): if "$oids" in dct: return parse_oids(dct["$oids"]) - return bson_object_hook(dct) + opts = JSONOptions(tz_aware=True) + return bson_object_hook(dct, json_options=opts) def parse_query_json(query): @@ -244,7 +245,7 @@ def _get_collection_fields(self, db, collection_name): def get_schema(self, get_stats=False): schema = {} db = self._get_db() - for collection_name in db.collection_names(): + for collection_name in db.list_collection_names(): if collection_name.startswith("system."): continue columns = self._get_collection_fields(db, collection_name) @@ -301,19 +302,20 @@ def run_query(self, query, user): cursor = None if q or (not q and not aggregate): - if s: - cursor = db[collection].find(q, f).sort(s) + if "count" in query_data: + options = {opt: query_data[opt] for opt in ("skip", "limit") if opt in query_data} + cursor = db[collection].count_documents(q, **options) else: - cursor = db[collection].find(q, f) - - if "skip" in query_data: - cursor = cursor.skip(query_data["skip"]) + if s: + cursor = db[collection].find(q, f).sort(s) + else: + cursor = db[collection].find(q, f) - if "limit" in query_data: - cursor = cursor.limit(query_data["limit"]) + if "skip" in query_data: + cursor = cursor.skip(query_data["skip"]) - if "count" in query_data: - cursor = cursor.count() + if "limit" in query_data: + cursor = cursor.limit(query_data["limit"]) elif aggregate: allow_disk_use = query_data.get("allowDiskUse", False) diff --git a/requirements_all_ds.txt b/requirements_all_ds.txt index ba2f676682..c180fef3ba 100644 --- a/requirements_all_ds.txt +++ b/requirements_all_ds.txt @@ -6,7 +6,7 @@ influxdb==5.2.3 mysqlclient==2.1.1 oauth2client==4.1.3 pyhive==0.6.1 -pymongo[tls,srv]==3.9.0 +pymongo[tls,srv]==4.3.3 vertica-python==0.9.5 td-client==1.0.0 pymssql==2.1.5 diff --git a/requirements_dev.txt b/requirements_dev.txt index f169eb53a2..a5636fd09b 100644 --- a/requirements_dev.txt +++ b/requirements_dev.txt @@ -5,7 +5,7 @@ mock==3.0.5 # PyMongo and Athena dependencies are needed for some of the unit tests: # (this is not perfect and we should resolve this in a different way) -pymongo[srv,tls]==3.9.0 +pymongo[srv,tls]==4.3.3 boto3>=1.10.0,<1.11.0 botocore>=1.13,<1.14.0 PyAthena>=1.5.0,<=1.11.5 From 112b9ed1baa58d59fad8bb324dff77d316d51cc2 Mon Sep 17 00:00:00 2001 From: Justin Clift Date: Fri, 30 Jun 2023 22:24:16 +1000 Subject: [PATCH 067/274] Use precompiled psycopg2-binary package instead of psycopg2 (#6137) --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index e29666ad20..4d25529446 100644 --- a/requirements.txt +++ b/requirements.txt @@ -18,7 +18,7 @@ Flask-WTF==0.14.3 passlib==1.7.1 aniso8601==8.0.0 blinker==1.4 -psycopg2==2.8.3 +psycopg2-binary==2.9.6 python-dateutil==2.8.0 pytz>=2019.3 PyYAML==5.4 From 241dcfacd98092be4ae2830d33b69e185f12a91a Mon Sep 17 00:00:00 2001 From: Justin Clift Date: Sat, 1 Jul 2023 04:50:22 +1000 Subject: [PATCH 068/274] Update to latest in yarn 1.22.x series (#6140) --- .ci/Dockerfile.cypress | 2 +- .github/workflows/ci.yml | 6 +++--- Dockerfile | 2 +- netlify.toml | 4 ++-- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.ci/Dockerfile.cypress b/.ci/Dockerfile.cypress index 28e6530e59..151905225c 100644 --- a/.ci/Dockerfile.cypress +++ b/.ci/Dockerfile.cypress @@ -5,7 +5,7 @@ WORKDIR $APP COPY package.json yarn.lock .yarnrc $APP/ COPY viz-lib $APP/viz-lib -RUN npm install yarn@1.22.10 -g && yarn --frozen-lockfile --network-concurrency 1 > /dev/null +RUN npm install yarn@1.22.19 -g && yarn --frozen-lockfile --network-concurrency 1 > /dev/null COPY . $APP diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5e97383e87..6635b1c82e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -71,7 +71,7 @@ jobs: cache: 'yarn' - name: Install Dependencies run: | - npm install --global --force yarn@1.22.10 + npm install --global --force yarn@1.22.19 yarn cache clean && yarn --frozen-lockfile --network-concurrency 1 - name: Run Lint run: yarn lint:ci @@ -94,7 +94,7 @@ jobs: cache: 'yarn' - name: Install Dependencies run: | - npm install --global --force yarn@1.22.10 + npm install --global --force yarn@1.22.19 yarn cache clean && yarn --frozen-lockfile --network-concurrency 1 - name: Run App Tests run: yarn test @@ -127,7 +127,7 @@ jobs: echo "CODE_COVERAGE=true" >> $GITHUB_ENV - name: Install Dependencies run: | - npm install --global --force yarn@1.22.10 + npm install --global --force yarn@1.22.19 yarn cache clean && yarn --frozen-lockfile --network-concurrency 1 - name: Setup Redash Server run: | diff --git a/Dockerfile b/Dockerfile index a76efe420e..867aedf1f0 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,6 @@ FROM node:14.17 as frontend-builder -RUN npm install --global --force yarn@1.22.10 +RUN npm install --global --force yarn@1.22.19 # Controls whether to build the frontend assets ARG skip_frontend_build diff --git a/netlify.toml b/netlify.toml index 64c3d51ad5..fe9220230d 100644 --- a/netlify.toml +++ b/netlify.toml @@ -2,8 +2,8 @@ base = "client" publish = "client/dist" # Netlify doesn't seem to install Yarn even though NETLIFY_USE_YARN is set below - # command = "cd ../ && npm i -g yarn@1.22.10 && yarn --frozen-lockfile --force && cd viz-lib && yarn build:babel && cd .. && rm -r ./node_modules/@redash/viz && cp -r ./viz-lib/. ./node_modules/@redash/viz && yarn build && cd ./client" - command = "cd ../ && npm i -g yarn@1.22.10 && yarn cache clean && yarn --frozen-lockfile --network-concurrency 1 && yarn build && cd ./client" + # command = "cd ../ && npm i -g yarn@1.22.19 && yarn --frozen-lockfile --force && cd viz-lib && yarn build:babel && cd .. && rm -r ./node_modules/@redash/viz && cp -r ./viz-lib/. ./node_modules/@redash/viz && yarn build && cd ./client" + command = "cd ../ && npm i -g yarn@1.22.19 && yarn cache clean && yarn --frozen-lockfile --network-concurrency 1 && yarn build && cd ./client" [build.environment] NODE_VERSION = "14.16.1" From ee601ec20676b0705e352bfb9b6726a0e53e3b12 Mon Sep 17 00:00:00 2001 From: Ran Benita Date: Sat, 1 Jul 2023 07:53:47 +0300 Subject: [PATCH 069/274] Fix `FEATURE_POLICY` to initialize from `REDASH_FEATURE_POLICY` envvar, not `REDASH_REFERRER_POLICY` (#5822) Problem: setting the `REDASH_REFERRER_POLICY` environment variable also sets the feature policy in addition to the referrer policy. Conversely, there is no way to set the feature policy on its own. It looks like a copy/paste error from the line above. Solution: change the feature policy to be set by a `REDASH_FEATURE_POLICY` environment variable. --- redash/settings/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/redash/settings/__init__.py b/redash/settings/__init__.py index 866a9ef8a7..ec08adf43c 100644 --- a/redash/settings/__init__.py +++ b/redash/settings/__init__.py @@ -163,7 +163,7 @@ # an empty value. # See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Feature-Policy # for more information. -FEATURE_POLICY = os.environ.get("REDASH_REFERRER_POLICY", "") +FEATURE_POLICY = os.environ.get("REDASH_FEATURE_POLICY", "") MULTI_ORG = parse_boolean(os.environ.get("REDASH_MULTI_ORG", "false")) From bbd0a21831d04562c769e4b6b3693c062b146654 Mon Sep 17 00:00:00 2001 From: Peter Lee Date: Mon, 3 Jul 2023 19:49:53 +0800 Subject: [PATCH 070/274] feat: add query result expired ttl (#6123) * feat: add query result expired ttl * update code --- redash/models/__init__.py | 3 +++ redash/settings/__init__.py | 8 ++++++++ 2 files changed, 11 insertions(+) diff --git a/redash/models/__init__.py b/redash/models/__init__.py index cfd081ae44..b5ff75982d 100644 --- a/redash/models/__init__.py +++ b/redash/models/__init__.py @@ -361,6 +361,9 @@ def unused(cls, days=7): def get_latest(cls, data_source, query, max_age=0): query_hash = gen_query_hash(query) + if max_age == -1 and settings.QUERY_RESULTS_EXPIRED_TTL_ENABLED: + max_age = settings.QUERY_RESULTS_EXPIRED_TTL + if max_age == -1: query = cls.query.filter( cls.query_hash == query_hash, cls.data_source == data_source diff --git a/redash/settings/__init__.py b/redash/settings/__init__.py index ec08adf43c..07ee34164e 100644 --- a/redash/settings/__init__.py +++ b/redash/settings/__init__.py @@ -56,6 +56,14 @@ os.environ.get("REDASH_QUERY_RESULTS_CLEANUP_MAX_AGE", "7") ) +QUERY_RESULTS_EXPIRED_TTL_ENABLED = parse_boolean( + os.environ.get("REDASH_QUERY_RESULTS_EXPIRED_TTL_ENABLED", "false") +) +# default set query results expired ttl 86400 seconds +QUERY_RESULTS_EXPIRED_TTL = int( + os.environ.get("REDASH_QUERY_RESULTS_EXPIRED_TTL", "86400") +) + SCHEMAS_REFRESH_SCHEDULE = int(os.environ.get("REDASH_SCHEMAS_REFRESH_SCHEDULE", 30)) AUTH_TYPE = os.environ.get("REDASH_AUTH_TYPE", "api_key") From a1e27ae1ed296c6a97f28eb0fca4d61937e4dbb5 Mon Sep 17 00:00:00 2001 From: Gabriel Dutra Date: Wed, 5 Jul 2023 21:47:01 -0300 Subject: [PATCH 071/274] Upgrade viz-lib webpack to v5 (#6141) --- viz-lib/package.json | 5 +- viz-lib/webpack.config.js | 11 +- viz-lib/yarn.lock | 1630 ++++++++++--------------------------- 3 files changed, 418 insertions(+), 1228 deletions(-) diff --git a/viz-lib/package.json b/viz-lib/package.json index b197549795..9741a8b034 100644 --- a/viz-lib/package.json +++ b/viz-lib/package.json @@ -26,8 +26,8 @@ "author": "Redash", "license": "BSD-2-Clause", "peerDependencies": { - "antd": ">=4.0.0", "@ant-design/icons": ">=4.0.0", + "antd": ">=4.0.0", "react": ">=16.8.0", "react-dom": ">=16.8.0" }, @@ -58,7 +58,6 @@ "enzyme": "^3.8.0", "enzyme-adapter-react-16": "^1.7.1", "enzyme-to-json": "^3.3.5", - "file-loader": "^6.0.0", "jest": "^24.1.0", "less": "^3.11.1", "less-loader": "^5.0.0", @@ -69,7 +68,7 @@ "style-loader": "^1.1.4", "ts-migrate": "^0.1.10", "typescript": "^4.1.2", - "webpack": "^4.42.1", + "webpack": "^5.88.1", "webpack-cli": "^3.3.11" }, "files": [ diff --git a/viz-lib/webpack.config.js b/viz-lib/webpack.config.js index 283036343c..5b4096502e 100644 --- a/viz-lib/webpack.config.js +++ b/viz-lib/webpack.config.js @@ -10,6 +10,7 @@ module.exports = { path: path.resolve(__dirname, "dist"), filename: "redash-visualizations.js", libraryTarget: "umd", + assetModuleFilename: 'images/[name][ext]' }, resolve: { symlinks: false, @@ -28,15 +29,7 @@ module.exports = { }, { test: /\.(png|jpe?g|gif|svg)(\?.*)?$/, - use: [ - { - loader: "file-loader", - options: { - outputPath: "images/", - name: "[name].[ext]", - }, - }, - ], + type: 'asset/resource', }, { test: /\.less$/, diff --git a/viz-lib/yarn.lock b/viz-lib/yarn.lock index 549e7273b7..4dffc58b75 100644 --- a/viz-lib/yarn.lock +++ b/viz-lib/yarn.lock @@ -987,7 +987,14 @@ pirates "^4.0.0" source-map-support "^0.5.16" -"@babel/runtime@^7.2.0", "@babel/runtime@^7.8.4": +"@babel/runtime@^7.2.0": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.5.tgz#8564dd588182ce0047d55d7a75e93921107b57ec" + integrity sha512-ecjvYlnAaZ/KVneE/OdKYBYfgXV3Ptu6zQWmgEF7vwKhQnvVS6bjMD2XYgj+SNvQ1GfK/pjgokfPkC/2CO8CuA== + dependencies: + regenerator-runtime "^0.13.11" + +"@babel/runtime@^7.8.4": version "7.9.2" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.9.2.tgz#d90df0583a3a252f09aaa619665367bae518db06" integrity sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q== @@ -1274,6 +1281,29 @@ "@types/yargs" "^15.0.0" chalk "^4.0.0" +"@jridgewell/resolve-uri@3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" + integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== + +"@jridgewell/source-map@^0.3.3": + version "0.3.4" + resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.4.tgz#856a142864530d4059dda415659b48d37db2d556" + integrity sha512-KE/SxsDqNs3rrWwFHcRh15ZLVFrI0YoZtgAdIyIq9k5hUNmiWRXXThPomIxHuL20sLdgzbDFyvkUMna14bvtrw== + +"@jridgewell/sourcemap-codec@1.4.14": + version "1.4.14" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" + integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== + +"@jridgewell/trace-mapping@^0.3.17": + version "0.3.18" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz#25783b2086daf6ff1dcb53c9249ae480e4dd4cd6" + integrity sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA== + dependencies: + "@jridgewell/resolve-uri" "3.1.0" + "@jridgewell/sourcemap-codec" "1.4.14" + "@mapbox/geojson-area@0.2.2": version "0.2.2" resolved "https://registry.yarnpkg.com/@mapbox/geojson-area/-/geojson-area-0.2.2.tgz#18d7814aa36bf23fbbcc379f8e26a22927debf10" @@ -1720,6 +1750,27 @@ "@types/cheerio" "*" "@types/react" "*" +"@types/eslint-scope@^3.7.3": + version "3.7.4" + resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.4.tgz#37fc1223f0786c39627068a12e94d6e6fc61de16" + integrity sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA== + dependencies: + "@types/eslint" "*" + "@types/estree" "*" + +"@types/eslint@*": + version "8.40.2" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.40.2.tgz#2833bc112d809677864a4b0e7d1de4f04d7dac2d" + integrity sha512-PRVjQ4Eh9z9pmmtaq8nTjZjQwKFk7YIHIud3lRoKRBgUQjgjRmoGxxGEPXQkF+lH7QkHJRNr5F4aBgYCW0lqpQ== + dependencies: + "@types/estree" "*" + "@types/json-schema" "*" + +"@types/estree@*", "@types/estree@^1.0.0": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.1.tgz#aa22750962f3bf0e79d753d3cc067f010c95f194" + integrity sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA== + "@types/geojson@*": version "7946.0.7" resolved "https://registry.yarnpkg.com/@types/geojson/-/geojson-7946.0.7.tgz#c8fa532b60a0042219cdf173ca21a975ef0666ad" @@ -1760,6 +1811,11 @@ jest-diff "^26.0.0" pretty-format "^26.0.0" +"@types/json-schema@*", "@types/json-schema@^7.0.8": + version "7.0.12" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.12.tgz#d70faba7039d5fca54c83c7dbab41051d2b6f6cb" + integrity sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA== + "@types/leaflet@^1.5.19": version "1.5.19" resolved "https://registry.yarnpkg.com/@types/leaflet/-/leaflet-1.5.19.tgz#f290e21fe7a4744d68bb4b0709e99ce490120e6e" @@ -1843,149 +1899,125 @@ dependencies: "@types/yargs-parser" "*" -"@webassemblyjs/ast@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964" - integrity sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA== - dependencies: - "@webassemblyjs/helper-module-context" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/wast-parser" "1.9.0" - -"@webassemblyjs/floating-point-hex-parser@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz#3c3d3b271bddfc84deb00f71344438311d52ffb4" - integrity sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA== - -"@webassemblyjs/helper-api-error@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz#203f676e333b96c9da2eeab3ccef33c45928b6a2" - integrity sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw== - -"@webassemblyjs/helper-buffer@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz#a1442d269c5feb23fcbc9ef759dac3547f29de00" - integrity sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA== - -"@webassemblyjs/helper-code-frame@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz#647f8892cd2043a82ac0c8c5e75c36f1d9159f27" - integrity sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA== +"@webassemblyjs/ast@1.11.6", "@webassemblyjs/ast@^1.11.5": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.6.tgz#db046555d3c413f8966ca50a95176a0e2c642e24" + integrity sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q== dependencies: - "@webassemblyjs/wast-printer" "1.9.0" + "@webassemblyjs/helper-numbers" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" -"@webassemblyjs/helper-fsm@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz#c05256b71244214671f4b08ec108ad63b70eddb8" - integrity sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw== +"@webassemblyjs/floating-point-hex-parser@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz#dacbcb95aff135c8260f77fa3b4c5fea600a6431" + integrity sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw== -"@webassemblyjs/helper-module-context@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz#25d8884b76839871a08a6c6f806c3979ef712f07" - integrity sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g== - dependencies: - "@webassemblyjs/ast" "1.9.0" +"@webassemblyjs/helper-api-error@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz#6132f68c4acd59dcd141c44b18cbebbd9f2fa768" + integrity sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q== -"@webassemblyjs/helper-wasm-bytecode@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz#4fed8beac9b8c14f8c58b70d124d549dd1fe5790" - integrity sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw== +"@webassemblyjs/helper-buffer@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz#b66d73c43e296fd5e88006f18524feb0f2c7c093" + integrity sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA== -"@webassemblyjs/helper-wasm-section@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz#5a4138d5a6292ba18b04c5ae49717e4167965346" - integrity sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-buffer" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/wasm-gen" "1.9.0" - -"@webassemblyjs/ieee754@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz#15c7a0fbaae83fb26143bbacf6d6df1702ad39e4" - integrity sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg== - dependencies: - "@xtuc/ieee754" "^1.2.0" - -"@webassemblyjs/leb128@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.9.0.tgz#f19ca0b76a6dc55623a09cffa769e838fa1e1c95" - integrity sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw== +"@webassemblyjs/helper-numbers@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz#cbce5e7e0c1bd32cf4905ae444ef64cea919f1b5" + integrity sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g== dependencies: + "@webassemblyjs/floating-point-hex-parser" "1.11.6" + "@webassemblyjs/helper-api-error" "1.11.6" "@xtuc/long" "4.2.2" -"@webassemblyjs/utf8@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.9.0.tgz#04d33b636f78e6a6813227e82402f7637b6229ab" - integrity sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w== +"@webassemblyjs/helper-wasm-bytecode@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz#bb2ebdb3b83aa26d9baad4c46d4315283acd51e9" + integrity sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA== -"@webassemblyjs/wasm-edit@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz#3fe6d79d3f0f922183aa86002c42dd256cfee9cf" - integrity sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-buffer" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/helper-wasm-section" "1.9.0" - "@webassemblyjs/wasm-gen" "1.9.0" - "@webassemblyjs/wasm-opt" "1.9.0" - "@webassemblyjs/wasm-parser" "1.9.0" - "@webassemblyjs/wast-printer" "1.9.0" - -"@webassemblyjs/wasm-gen@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz#50bc70ec68ded8e2763b01a1418bf43491a7a49c" - integrity sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA== +"@webassemblyjs/helper-wasm-section@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz#ff97f3863c55ee7f580fd5c41a381e9def4aa577" + integrity sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g== dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/ieee754" "1.9.0" - "@webassemblyjs/leb128" "1.9.0" - "@webassemblyjs/utf8" "1.9.0" + "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/helper-buffer" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/wasm-gen" "1.11.6" -"@webassemblyjs/wasm-opt@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz#2211181e5b31326443cc8112eb9f0b9028721a61" - integrity sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A== +"@webassemblyjs/ieee754@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz#bb665c91d0b14fffceb0e38298c329af043c6e3a" + integrity sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg== dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-buffer" "1.9.0" - "@webassemblyjs/wasm-gen" "1.9.0" - "@webassemblyjs/wasm-parser" "1.9.0" + "@xtuc/ieee754" "^1.2.0" -"@webassemblyjs/wasm-parser@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz#9d48e44826df4a6598294aa6c87469d642fff65e" - integrity sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA== +"@webassemblyjs/leb128@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.6.tgz#70e60e5e82f9ac81118bc25381a0b283893240d7" + integrity sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ== dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-api-error" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/ieee754" "1.9.0" - "@webassemblyjs/leb128" "1.9.0" - "@webassemblyjs/utf8" "1.9.0" - -"@webassemblyjs/wast-parser@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz#3031115d79ac5bd261556cecc3fa90a3ef451914" - integrity sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/floating-point-hex-parser" "1.9.0" - "@webassemblyjs/helper-api-error" "1.9.0" - "@webassemblyjs/helper-code-frame" "1.9.0" - "@webassemblyjs/helper-fsm" "1.9.0" "@xtuc/long" "4.2.2" -"@webassemblyjs/wast-printer@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz#4935d54c85fef637b00ce9f52377451d00d47899" - integrity sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/wast-parser" "1.9.0" +"@webassemblyjs/utf8@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.6.tgz#90f8bc34c561595fe156603be7253cdbcd0fab5a" + integrity sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA== + +"@webassemblyjs/wasm-edit@^1.11.5": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz#c72fa8220524c9b416249f3d94c2958dfe70ceab" + integrity sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw== + dependencies: + "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/helper-buffer" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/helper-wasm-section" "1.11.6" + "@webassemblyjs/wasm-gen" "1.11.6" + "@webassemblyjs/wasm-opt" "1.11.6" + "@webassemblyjs/wasm-parser" "1.11.6" + "@webassemblyjs/wast-printer" "1.11.6" + +"@webassemblyjs/wasm-gen@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz#fb5283e0e8b4551cc4e9c3c0d7184a65faf7c268" + integrity sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA== + dependencies: + "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/ieee754" "1.11.6" + "@webassemblyjs/leb128" "1.11.6" + "@webassemblyjs/utf8" "1.11.6" + +"@webassemblyjs/wasm-opt@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz#d9a22d651248422ca498b09aa3232a81041487c2" + integrity sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g== + dependencies: + "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/helper-buffer" "1.11.6" + "@webassemblyjs/wasm-gen" "1.11.6" + "@webassemblyjs/wasm-parser" "1.11.6" + +"@webassemblyjs/wasm-parser@1.11.6", "@webassemblyjs/wasm-parser@^1.11.5": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz#bb85378c527df824004812bbdb784eea539174a1" + integrity sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ== + dependencies: + "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/helper-api-error" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/ieee754" "1.11.6" + "@webassemblyjs/leb128" "1.11.6" + "@webassemblyjs/utf8" "1.11.6" + +"@webassemblyjs/wast-printer@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz#a7bf8dd7e362aeb1668ff43f35cb849f188eff20" + integrity sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A== + dependencies: + "@webassemblyjs/ast" "1.11.6" "@xtuc/long" "4.2.2" "@xtuc/ieee754@^1.2.0": @@ -2012,11 +2044,6 @@ abab@^2.0.0: resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.3.tgz#623e2075e02eb2d3f2475e49f99c91846467907a" integrity sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg== -abbrev@1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" - integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== - abs-svg-path@^0.1.1, abs-svg-path@~0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/abs-svg-path/-/abs-svg-path-0.1.1.tgz#df601c8e8d2ba10d4a76d625e236a9a39c2723bf" @@ -2035,6 +2062,11 @@ acorn-globals@^4.1.0: acorn "^6.0.1" acorn-walk "^6.0.1" +acorn-import-assertions@^1.9.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz#507276249d684797c84e0734ef84860334cfb1ac" + integrity sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA== + acorn-jsx@^5.0.1: version "5.2.0" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.2.0.tgz#4c66069173d6fdd68ed85239fc256226182b2ebe" @@ -2055,7 +2087,7 @@ acorn@^5.5.3: resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.4.tgz#3e8d8a9947d0599a1796d10225d7432f4a4acf5e" integrity sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg== -acorn@^6.0.1, acorn@^6.1.1, acorn@^6.2.1: +acorn@^6.0.1, acorn@^6.1.1: version "6.4.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474" integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA== @@ -2070,6 +2102,11 @@ acorn@^7.4.0: resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== +acorn@^8.7.1, acorn@^8.8.2: + version "8.9.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.9.0.tgz#78a16e3b2bcc198c10822786fa6679e245db5b59" + integrity sha512-jaVNAFBHNLXspO543WnNNPZFRtavh3skAkITqD0/2aeMkKZTN+254PyhwxFYrk3vQ1xfY+2wbesJMs/JC8/PwQ== + add-line-numbers@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/add-line-numbers/-/add-line-numbers-1.0.1.tgz#48dbbdea47dbd234deafeac6c93cea6f70b4b7e3" @@ -2100,17 +2137,17 @@ airbnb-prop-types@^2.15.0: prop-types-exact "^1.2.0" react-is "^16.9.0" -ajv-errors@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" - integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== - -ajv-keywords@^3.1.0, ajv-keywords@^3.4.1: +ajv-keywords@^3.4.1: version "3.4.1" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.4.1.tgz#ef916e271c64ac12171fd8384eaae6b2345854da" integrity sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ== -ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.0, ajv@^6.5.5: +ajv-keywords@^3.5.2: + version "3.5.2" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" + integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== + +ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.0, ajv@^6.5.5: version "6.12.0" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.0.tgz#06d60b96d87b8454a5adaba86e7854da629db4b7" integrity sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw== @@ -2120,7 +2157,7 @@ ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.0, ajv@^6.5.5: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^6.12.4: +ajv@^6.12.4, ajv@^6.12.5: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -2175,11 +2212,6 @@ ansi-escapes@^3.0.0, ansi-escapes@^3.2.0: resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= - ansi-regex@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" @@ -2222,19 +2254,6 @@ anymatch@^2.0.0: micromatch "^3.1.4" normalize-path "^2.1.1" -aproba@^1.0.3, aproba@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" - integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== - -are-we-there-yet@~1.1.2: - version "1.1.5" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" - integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== - dependencies: - delegates "^1.0.0" - readable-stream "^2.0.6" - argparse@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" @@ -2330,15 +2349,6 @@ asap@~2.0.3: resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= -asn1.js@^4.0.0: - version "4.10.1" - resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" - integrity sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw== - dependencies: - bn.js "^4.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - asn1@~0.2.3: version "0.2.4" resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" @@ -2351,14 +2361,6 @@ assert-plus@1.0.0, assert-plus@^1.0.0: resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= -assert@^1.1.1: - version "1.5.0" - resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" - integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== - dependencies: - object-assign "^4.1.1" - util "0.10.3" - assign-symbols@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" @@ -2538,11 +2540,6 @@ barycentric@^1.0.1: dependencies: robust-linear-solve "^1.0.0" -base64-js@^1.0.2: - version "1.3.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" - integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g== - base@^0.11.1: version "0.11.2" resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" @@ -2629,12 +2626,7 @@ bl@^1.0.0: readable-stream "^2.3.5" safe-buffer "^5.1.1" -bluebird@^3.5.5: - version "3.7.2" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" - integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== - -bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.11.6, bn.js@^4.4.0: +bn.js@^4.11.6: version "4.11.8" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA== @@ -2690,11 +2682,6 @@ braces@^3.0.1: dependencies: fill-range "^7.0.1" -brorand@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" - integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= - browser-process-hrtime@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" @@ -2707,65 +2694,6 @@ browser-resolve@^1.11.3: dependencies: resolve "1.1.7" -browserify-aes@^1.0.0, browserify-aes@^1.0.4: - version "1.2.0" - resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" - integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== - dependencies: - buffer-xor "^1.0.3" - cipher-base "^1.0.0" - create-hash "^1.1.0" - evp_bytestokey "^1.0.3" - inherits "^2.0.1" - safe-buffer "^5.0.1" - -browserify-cipher@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" - integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== - dependencies: - browserify-aes "^1.0.4" - browserify-des "^1.0.0" - evp_bytestokey "^1.0.0" - -browserify-des@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" - integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== - dependencies: - cipher-base "^1.0.1" - des.js "^1.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -browserify-rsa@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" - integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ= - dependencies: - bn.js "^4.1.0" - randombytes "^2.0.1" - -browserify-sign@^4.0.0: - version "4.0.4" - resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298" - integrity sha1-qk62jl17ZYuqa/alfmMMvXqT0pg= - dependencies: - bn.js "^4.1.1" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.2" - elliptic "^6.0.0" - inherits "^2.0.1" - parse-asn1 "^5.0.0" - -browserify-zlib@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" - integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== - dependencies: - pako "~1.0.5" - browserslist@^3.2.8: version "3.2.8" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-3.2.8.tgz#b0005361d6471f0f5952797a76fc985f1f978fc6" @@ -2774,6 +2702,16 @@ browserslist@^3.2.8: caniuse-lite "^1.0.30000844" electron-to-chromium "^1.3.47" +browserslist@^4.14.5: + version "4.21.9" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.9.tgz#e11bdd3c313d7e2a9e87e8b4b0c7872b13897635" + integrity sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg== + dependencies: + caniuse-lite "^1.0.30001503" + electron-to-chromium "^1.4.431" + node-releases "^2.0.12" + update-browserslist-db "^1.0.11" + browserslist@^4.8.3, browserslist@^4.9.1: version "4.11.1" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.11.1.tgz#92f855ee88d6e050e7e7311d987992014f1a1f1b" @@ -2817,46 +2755,6 @@ buffer-from@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== -buffer-xor@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" - integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= - -buffer@^4.3.0: - version "4.9.2" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" - integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== - dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" - isarray "^1.0.0" - -builtin-status-codes@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" - integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= - -cacache@^12.0.2: - version "12.0.4" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c" - integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ== - 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" - cache-base@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" @@ -2892,6 +2790,11 @@ caniuse-lite@^1.0.30000844, caniuse-lite@^1.0.30000864, caniuse-lite@^1.0.300010 resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001039.tgz#b3814a1c38ffeb23567f8323500c09526a577bbe" integrity sha512-SezbWCTT34eyFoWHgx8UWso7YtvtM7oosmFoXbCkdC6qJzRfBTeTgE9REtKtiuKXuMwWTZEvdnFNGAyVMorv8Q== +caniuse-lite@^1.0.30001503: + version "1.0.30001509" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001509.tgz#2b7ad5265392d6d2de25cd8776d1ab3899570d14" + integrity sha512-2uDDk+TRiTX5hMcUYT/7CSyzMZxjfGu0vAUjS2g0LSD8UoXOv0LtpH4LxGMemsiPq6LCVIUjNwVM0erkOkGCDA== + canvas-fit@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/canvas-fit/-/canvas-fit-1.5.0.tgz#ae13be66ade42f5be0e487e345fce30a5e5b5e5f" @@ -2989,11 +2892,6 @@ chokidar@^2.1.8: optionalDependencies: fsevents "^1.2.7" -chownr@^1.1.1: - version "1.1.4" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" - integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== - chroma-js@^1.3.6: version "1.4.1" resolved "https://registry.yarnpkg.com/chroma-js/-/chroma-js-1.4.1.tgz#eb2d9c4d1ff24616be84b35119f4d26f8205f134" @@ -3011,14 +2909,6 @@ ci-info@^2.0.0: resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== -cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" - integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - circumcenter@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/circumcenter/-/circumcenter-1.0.0.tgz#20d7aa13b17fbac52f52da4f54c6ac8b906ee529" @@ -3111,11 +3001,6 @@ co@^4.6.0: resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= -code-point-at@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" - integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= - collection-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" @@ -3276,7 +3161,7 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= -concat-stream@^1.5.0, concat-stream@^1.5.2, concat-stream@~1.6.0: +concat-stream@^1.5.2, concat-stream@~1.6.0: version "1.6.2" resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== @@ -3286,16 +3171,6 @@ concat-stream@^1.5.0, concat-stream@^1.5.2, concat-stream@~1.6.0: readable-stream "^2.2.2" typedarray "^0.0.6" -console-browserify@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" - integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== - -console-control-strings@^1.0.0, console-control-strings@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" - integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= - const-max-uint32@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/const-max-uint32/-/const-max-uint32-1.0.2.tgz#f009bb6230e678ed874dd2d6a9cd9e3cbfabb676" @@ -3306,11 +3181,6 @@ const-pinf-float64@^1.0.0: resolved "https://registry.yarnpkg.com/const-pinf-float64/-/const-pinf-float64-1.0.0.tgz#f6efb0d79f9c0986d3e79f2923abf9b70b63d726" integrity sha1-9u+w15+cCYbT558pI6v5twtj1yY= -constants-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" - integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= - convert-source-map@^1.1.0, convert-source-map@^1.4.0, convert-source-map@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" @@ -3327,18 +3197,6 @@ convex-hull@^1.0.3: incremental-convex-hull "^1.0.1" monotone-convex-hull-2d "^1.0.1" -copy-concurrently@^1.0.0: - version "1.0.5" - resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" - integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== - dependencies: - aproba "^1.1.1" - fs-write-stream-atomic "^1.0.8" - iferr "^0.1.5" - mkdirp "^0.5.1" - rimraf "^2.5.4" - run-queue "^1.0.0" - copy-descriptor@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" @@ -3362,37 +3220,6 @@ country-regex@^1.1.0: resolved "https://registry.yarnpkg.com/country-regex/-/country-regex-1.1.0.tgz#51c333dcdf12927b7e5eeb9c10ac8112a6120896" integrity sha1-UcMz3N8Sknt+XuucEKyBEqYSCJY= -create-ecdh@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff" - integrity sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw== - dependencies: - bn.js "^4.1.0" - elliptic "^6.0.0" - -create-hash@^1.1.0, create-hash@^1.1.2: - version "1.2.0" - resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" - integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== - dependencies: - cipher-base "^1.0.1" - inherits "^2.0.1" - md5.js "^1.3.4" - ripemd160 "^2.0.1" - sha.js "^2.4.0" - -create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: - version "1.1.7" - resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" - integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== - dependencies: - cipher-base "^1.0.3" - create-hash "^1.1.0" - inherits "^2.0.1" - ripemd160 "^2.0.0" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - create-jest-runner@^0.5.3: version "0.5.3" resolved "https://registry.yarnpkg.com/create-jest-runner/-/create-jest-runner-0.5.3.tgz#1387e2ce70b08e4c989ae55f677005b64f9ba97b" @@ -3422,23 +3249,6 @@ cross-spawn@^7.0.2: shebang-command "^2.0.0" which "^2.0.1" -crypto-browserify@^3.11.0: - version "3.12.0" - resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" - integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== - dependencies: - browserify-cipher "^1.0.0" - browserify-sign "^4.0.0" - create-ecdh "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.0" - diffie-hellman "^5.0.0" - inherits "^2.0.1" - pbkdf2 "^3.0.3" - public-encrypt "^4.0.0" - randombytes "^2.0.0" - randomfill "^1.0.3" - css-font-size-keywords@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/css-font-size-keywords/-/css-font-size-keywords-1.0.0.tgz#854875ace9aca6a8d2ee0d345a44aae9bb6db6cb" @@ -3575,11 +3385,6 @@ cwise@^1.0.10, cwise@^1.0.4: static-module "^1.0.0" uglify-js "^2.6.0" -cyclist@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" - integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= - d3-array@1, d3-array@^1.2.1: version "1.2.4" resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-1.2.4.tgz#635ce4d5eea759f6f605863dbcfc30edc737f71f" @@ -3694,7 +3499,7 @@ debug@^2.2.0, debug@^2.3.3: dependencies: ms "2.0.0" -debug@^3.1.0, debug@^3.2.6: +debug@^3.1.0: version "3.2.6" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== @@ -3737,11 +3542,6 @@ deep-equal@~1.1.1: object-keys "^1.1.1" regexp.prototype.flags "^1.2.0" -deep-extend@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" - integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== - deep-is@^0.1.3, deep-is@~0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" @@ -3794,19 +3594,6 @@ delayed-stream@~1.0.0: resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= -delegates@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= - -des.js@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" - integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== - dependencies: - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - detect-file@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" @@ -3817,11 +3604,6 @@ detect-kerning@^2.1.2: resolved "https://registry.yarnpkg.com/detect-kerning/-/detect-kerning-2.1.2.tgz#4ecd548e4a5a3fc880fe2a50609312d000fa9fc2" integrity sha512-I3JIbrnKPAntNLl1I6TpSQQdQ4AutYzv/sKMFKbepawV/hlH0GmYKhUoOEMd4xqaUHT+Bm0f4127lh5qs1m1tw== -detect-libc@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" - integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= - detect-newline@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" @@ -3837,15 +3619,6 @@ diff-sequences@^26.6.2: resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-26.6.2.tgz#48ba99157de1923412eed41db6b6d4aa9ca7c0b1" integrity sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q== -diffie-hellman@^5.0.0: - version "5.0.3" - resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" - integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== - dependencies: - bn.js "^4.1.0" - miller-rabin "^4.0.0" - randombytes "^2.0.0" - discontinuous-range@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/discontinuous-range/-/discontinuous-range-1.0.0.tgz#e38331f0844bba49b9a9cb71c771585aab1bc65a" @@ -3866,11 +3639,6 @@ dom-serializer@0, dom-serializer@~0.1.1: domelementtype "^1.3.0" entities "^1.1.1" -domain-browser@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" - integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== - domelementtype@1, domelementtype@^1.3.0, domelementtype@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" @@ -3940,7 +3708,7 @@ duplexer2@~0.0.2: dependencies: readable-stream "~1.1.9" -duplexify@^3.4.2, duplexify@^3.4.5, duplexify@^3.6.0: +duplexify@^3.4.5: version "3.7.1" resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== @@ -3975,6 +3743,11 @@ electron-to-chromium@^1.3.390, electron-to-chromium@^1.3.47: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.397.tgz#db640c2e67b08d590a504c20b56904537aa2bafa" integrity sha512-zcUd1p/7yzTSdWkCTrqGvbnEOASy96d0RJL/lc5BDJoO23Z3G/VHd0yIPbguDU9n8QNUTCigLO7oEdtOb7fp2A== +electron-to-chromium@^1.4.431: + version "1.4.447" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.447.tgz#ac69d3a7b3713e9ae94bb30ba65c3114e4d76a38" + integrity sha512-sxX0LXh+uL41hSJsujAN86PjhrV/6c79XmpY0TvjZStV6VxIgarf8SRkUoUTuYmFcZQTemsoqo8qXOGw5npWfw== + element-size@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/element-size/-/element-size-1.1.1.tgz#64e5f159d97121631845bcbaecaf279c39b5e34e" @@ -3987,19 +3760,6 @@ elementary-circuits-directed-graph@^1.0.4: dependencies: strongly-connected-components "^1.0.1" -elliptic@^6.0.0: - version "6.5.2" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.2.tgz#05c5678d7173c049d8ca433552224a495d0e3762" - integrity sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw== - dependencies: - bn.js "^4.4.0" - brorand "^1.0.1" - hash.js "^1.0.0" - hmac-drbg "^1.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.0" - emoji-regex@^7.0.1: version "7.0.3" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" @@ -4036,14 +3796,13 @@ enhanced-resolve@4.1.0: memory-fs "^0.4.0" tapable "^1.0.0" -enhanced-resolve@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.1.tgz#2937e2b8066cd0fe7ce0990a98f0d71a35189f66" - integrity sha512-98p2zE+rL7/g/DzMHMTF4zZlCgeVdJ7yr6xzEpJRYwFYrGi9ANdn5DnJURg6RpBkyk60XYDnWIv51VfIhfNGuA== +enhanced-resolve@^5.15.0: + version "5.15.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz#1af946c7d93603eb88e9896cee4904dc012e9c35" + integrity sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg== dependencies: - graceful-fs "^4.1.2" - memory-fs "^0.5.0" - tapable "^1.0.0" + graceful-fs "^4.2.4" + tapable "^2.2.0" enquirer@^2.3.5: version "2.3.6" @@ -4128,7 +3887,7 @@ enzyme@^3.8.0: rst-selector-parser "^2.2.3" string.prototype.trim "^1.2.1" -errno@^0.1.1, errno@^0.1.3, errno@~0.1.7: +errno@^0.1.1, errno@^0.1.3: version "0.1.7" resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" integrity sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg== @@ -4159,6 +3918,11 @@ es-abstract@^1.17.0-next.1, es-abstract@^1.17.2, es-abstract@^1.17.4, es-abstrac string.prototype.trimleft "^2.1.1" string.prototype.trimright "^2.1.1" +es-module-lexer@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.3.0.tgz#6be9c9e0b4543a60cd166ff6f8b4e9dae0b0c16f" + integrity sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA== + es-to-primitive@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" @@ -4209,6 +3973,11 @@ es6-weak-map@^2.0.3: es6-iterator "^2.0.3" es6-symbol "^3.1.1" +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" @@ -4247,15 +4016,7 @@ escodegen@~1.3.2: optionalDependencies: source-map "~0.1.33" -eslint-scope@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" - integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== - dependencies: - esrecurse "^4.1.0" - estraverse "^4.1.1" - -eslint-scope@^5.1.1: +eslint-scope@5.1.1, eslint-scope@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== @@ -4359,13 +4120,6 @@ esquery@^1.2.0: dependencies: estraverse "^5.1.0" -esrecurse@^4.1.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" - integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ== - dependencies: - estraverse "^4.1.0" - esrecurse@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" @@ -4373,7 +4127,7 @@ esrecurse@^4.3.0: dependencies: estraverse "^5.2.0" -estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: +estraverse@^4.1.1, estraverse@^4.2.0: version "4.3.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== @@ -4408,18 +4162,10 @@ events@^1.0.2: resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" integrity sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ= -events@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/events/-/events-3.1.0.tgz#84279af1b34cb75aa88bf5ff291f6d0bd9b31a59" - integrity sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg== - -evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" - integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== - dependencies: - md5.js "^1.3.4" - safe-buffer "^5.1.1" +events@^3.2.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== exec-sh@^0.3.2: version "0.3.4" @@ -4585,11 +4331,6 @@ fb-watchman@^2.0.0: dependencies: bser "2.1.1" -figgy-pudding@^3.5.1: - version "3.5.2" - resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" - integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== - figures@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" @@ -4604,14 +4345,6 @@ file-entry-cache@^6.0.0: dependencies: flat-cache "^3.0.4" -file-loader@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.0.0.tgz#97bbfaab7a2460c07bcbd72d3a6922407f67649f" - integrity sha512-/aMOAYEFXDdjG0wytpTL5YQLfZnnTmLNjn+AIrJ/6HVnTfDqLsVKUUwkDf4I4kgex36BvjuXEn/TX9B/1ESyqQ== - dependencies: - loader-utils "^2.0.0" - schema-utils "^2.6.5" - file-uri-to-path@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" @@ -4721,14 +4454,6 @@ flow-parser@0.*: resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.139.0.tgz#c046779114487175f2b1e8aa639bf977d4c7dd9f" integrity sha512-yEh5wJIi/BG7JZvWAWxTdfZ1uoh/W3oefJOuvUDosKFIE5H7ad8Eu6k9ba1yr83Lxn5vY6kZMG1IaiiiA/5scg== -flush-write-stream@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" - integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== - dependencies: - inherits "^2.0.3" - readable-stream "^2.3.6" - follow-redirects@1.5.10: version "1.5.10" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a" @@ -4793,7 +4518,7 @@ fragment-cache@^0.2.1: dependencies: map-cache "^0.2.2" -from2@^2.1.0, from2@^2.3.0: +from2@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= @@ -4811,28 +4536,11 @@ fs-extra@^9.0.1: jsonfile "^6.0.1" universalify "^1.0.0" -fs-minipass@^1.2.5: - version "1.2.7" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" - integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== - dependencies: - minipass "^2.6.0" - fs-readdir-recursive@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27" integrity sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA== -fs-write-stream-atomic@^1.0.8: - version "1.0.10" - resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" - integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk= - dependencies: - graceful-fs "^4.1.2" - iferr "^0.1.5" - imurmurhash "^0.1.4" - readable-stream "1 || 2" - fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" @@ -4875,20 +4583,6 @@ gamma@^0.1.0: resolved "https://registry.yarnpkg.com/gamma/-/gamma-0.1.0.tgz#3315643403bf27906ca80ab37c36ece9440ef330" integrity sha1-MxVkNAO/J5BsqAqzfDbs6UQO8zA= -gauge@~2.7.3: - version "2.7.4" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" - integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= - dependencies: - aproba "^1.0.3" - console-control-strings "^1.0.0" - has-unicode "^2.0.0" - object-assign "^4.1.0" - signal-exit "^3.0.0" - string-width "^1.0.1" - strip-ansi "^3.0.1" - wide-align "^1.1.0" - gensync@^1.0.0-beta.1: version "1.0.0-beta.1" resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" @@ -5335,6 +5029,11 @@ glob-parent@^5.0.0, glob-parent@^5.1.0: dependencies: is-glob "^4.0.1" +glob-to-regexp@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" + integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== + glob@^7.0.0, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@~7.1.6: version "7.1.6" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" @@ -5557,6 +5256,11 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6 resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== +graceful-fs@^4.2.4, graceful-fs@^4.2.9: + version "4.2.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + grid-index@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/grid-index/-/grid-index-1.1.0.tgz#97f8221edec1026c8377b86446a7c71e79522ea7" @@ -5609,11 +5313,6 @@ has-symbols@^1.0.0, has-symbols@^1.0.1: resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== -has-unicode@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" - integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= - has-value@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" @@ -5652,31 +5351,6 @@ has@^1.0.0, has@^1.0.3, has@~1.0.3: dependencies: function-bind "^1.1.1" -hash-base@^3.0.0: - version "3.0.4" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" - integrity sha1-X8hoaEfs1zSZQDMZprCj8/auSRg= - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -hash.js@^1.0.0, hash.js@^1.0.3: - version "1.1.7" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" - integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== - dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.1" - -hmac-drbg@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" - integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= - dependencies: - hash.js "^1.0.3" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.1" - hoist-non-react-statics@^3.3.0: version "3.3.2" resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" @@ -5741,12 +5415,7 @@ http-signature@~1.2.0: jsprim "^1.2.2" sshpk "^1.7.0" -https-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" - integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= - -iconv-lite@0.4.24, iconv-lite@^0.4.4: +iconv-lite@0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -5760,23 +5429,11 @@ icss-utils@^4.0.0, icss-utils@^4.1.1: dependencies: postcss "^7.0.14" -ieee754@^1.1.12, ieee754@^1.1.4: +ieee754@^1.1.12: version "1.1.13" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== -iferr@^0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" - integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= - -ignore-walk@^3.0.1: - version "3.0.3" - resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.3.tgz#017e2447184bfeade7c238e4aefdd1e8f95b1e37" - integrity sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw== - dependencies: - minimatch "^3.0.4" - ignore@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" @@ -5837,11 +5494,6 @@ indexes-of@^1.0.1: resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= -infer-owner@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" - integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== - inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" @@ -5855,17 +5507,7 @@ inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3, resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== -inherits@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" - integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= - -inherits@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= - -ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: +ini@^1.3.4, ini@^1.3.5: version "1.3.5" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== @@ -6054,13 +5696,6 @@ is-float-array@^1.0.0: resolved "https://registry.yarnpkg.com/is-float-array/-/is-float-array-1.0.0.tgz#96d67b1cbadf47ab1e05be208933acd386978a09" integrity sha512-4ew1Sx6B6kEAl3T3NOM0yB94J3NZnBdNt4paw0e8nY73yHHTeTEhyQ3Lj7EQEnv5LD+GxNTaT4L46jcKjjpLiQ== -is-fullwidth-code-point@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" - integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= - dependencies: - number-is-nan "^1.0.0" - is-fullwidth-code-point@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" @@ -6212,7 +5847,7 @@ isarray@0.0.1: resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= -isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: +isarray@1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= @@ -6665,6 +6300,15 @@ jest-worker@^24.0.0, jest-worker@^24.6.0, jest-worker@^24.9.0: merge-stream "^2.0.0" supports-color "^6.1.0" +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" + jest@^24.1.0: version "24.9.0" resolved "https://registry.yarnpkg.com/jest/-/jest-24.9.0.tgz#987d290c05a08b52c56188c1002e368edb007171" @@ -6781,11 +6425,16 @@ jsesc@~0.5.0: resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= -json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: +json-parse-better-errors@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== +json-parse-even-better-errors@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + json-schema-traverse@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" @@ -6994,10 +6643,10 @@ load-json-file@^4.0.0: pify "^3.0.0" strip-bom "^3.0.0" -loader-runner@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" - integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== +loader-runner@^4.2.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1" + integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== loader-utils@1.2.3: version "1.2.3" @@ -7095,13 +6744,6 @@ loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: dependencies: js-tokens "^3.0.0 || ^4.0.0" -lru-cache@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" - integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== - dependencies: - yallist "^3.0.2" - lru-cache@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" @@ -7234,15 +6876,6 @@ matrix-camera-controller@^2.1.1, matrix-camera-controller@^2.1.3: gl-vec3 "^1.0.3" mat4-interpolate "^1.0.3" -md5.js@^1.3.4: - version "1.3.5" - resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" - integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - mem@^4.0.0: version "4.3.0" resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178" @@ -7252,7 +6885,7 @@ mem@^4.0.0: mimic-fn "^2.0.0" p-is-promise "^2.0.0" -memory-fs@^0.4.0, memory-fs@^0.4.1: +memory-fs@^0.4.0: version "0.4.1" resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI= @@ -7260,14 +6893,6 @@ memory-fs@^0.4.0, memory-fs@^0.4.1: errno "^0.1.3" readable-stream "^2.0.1" -memory-fs@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.5.0.tgz#324c01288b88652966d161db77838720845a8e3c" - integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA== - dependencies: - errno "^0.1.3" - readable-stream "^2.0.1" - memorystream@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2" @@ -7310,19 +6935,16 @@ micromatch@^4.0.2: braces "^3.0.1" picomatch "^2.0.5" -miller-rabin@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" - integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== - dependencies: - bn.js "^4.0.0" - brorand "^1.0.1" - mime-db@1.43.0: version "1.43.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.43.0.tgz#0a12e0502650e473d735535050e7c8f4eb4fae58" integrity sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ== +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + mime-types@^2.1.12, mime-types@~2.1.19: version "2.1.26" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.26.tgz#9c921fc09b7e149a65dfdc0da4d20997200b0a06" @@ -7330,6 +6952,13 @@ mime-types@^2.1.12, mime-types@~2.1.19: dependencies: mime-db "1.43.0" +mime-types@^2.1.27: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + mime@^1.4.1: version "1.6.0" resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" @@ -7345,16 +6974,6 @@ mimic-fn@^2.0.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== -minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" - integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== - -minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" - integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= - minimatch@^3.0.2, minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" @@ -7377,37 +6996,6 @@ minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5, minimist@~1.2.0: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== -minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" - integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== - dependencies: - safe-buffer "^5.1.2" - yallist "^3.0.0" - -minizlib@^1.2.1: - version "1.3.3" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" - integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== - dependencies: - minipass "^2.9.0" - -mississippi@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" - integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== - dependencies: - concat-stream "^1.5.0" - duplexify "^3.4.2" - end-of-stream "^1.1.0" - flush-write-stream "^1.0.0" - from2 "^2.1.0" - parallel-transform "^1.1.0" - pump "^3.0.0" - pumpify "^1.3.3" - stream-each "^1.1.0" - through2 "^2.0.0" - mixin-deep@^1.2.0: version "1.3.2" resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" @@ -7473,18 +7061,6 @@ mouse-wheel@^1.2.0: signum "^1.0.0" to-px "^1.0.1" -move-concurrently@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" - integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I= - dependencies: - aproba "^1.1.1" - copy-concurrently "^1.0.0" - fs-write-stream-atomic "^1.0.8" - mkdirp "^0.5.1" - rimraf "^2.5.4" - run-queue "^1.0.3" - ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" @@ -7638,20 +7214,16 @@ nearley@^2.7.10: randexp "0.4.6" semver "^5.4.1" -needle@^2.2.1: - version "2.3.3" - resolved "https://registry.yarnpkg.com/needle/-/needle-2.3.3.tgz#a041ad1d04a871b0ebb666f40baaf1fb47867117" - integrity sha512-EkY0GeSq87rWp1hoq/sH/wnTWgFVhYlnIkbJ0YJFfRgEFlz2RraCjBpFQ+vrEgEdp0ThfyHADmkChEhcb7PKyw== - dependencies: - debug "^3.2.6" - iconv-lite "^0.4.4" - sax "^1.2.4" - -neo-async@^2.5.0, neo-async@^2.6.1: +neo-async@^2.5.0: version "2.6.1" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw== +neo-async@^2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + next-tick@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" @@ -7681,35 +7253,6 @@ node-int64@^0.4.0: resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= -node-libs-browser@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" - integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== - dependencies: - assert "^1.1.1" - browserify-zlib "^0.2.0" - buffer "^4.3.0" - console-browserify "^1.1.0" - constants-browserify "^1.0.0" - crypto-browserify "^3.11.0" - domain-browser "^1.1.1" - events "^3.0.0" - https-browserify "^1.0.0" - os-browserify "^0.3.0" - path-browserify "0.0.1" - process "^0.11.10" - punycode "^1.2.4" - querystring-es3 "^0.2.0" - readable-stream "^2.3.3" - stream-browserify "^2.0.1" - stream-http "^2.7.2" - string_decoder "^1.0.0" - timers-browserify "^2.0.4" - tty-browserify "0.0.0" - url "^0.11.0" - util "^0.11.0" - vm-browserify "^1.0.1" - node-modules-regexp@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" @@ -7726,34 +7269,15 @@ node-notifier@^5.4.2: shellwords "^0.1.1" which "^1.3.0" -node-pre-gyp@*: - version "0.14.0" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.14.0.tgz#9a0596533b877289bcad4e143982ca3d904ddc83" - integrity sha512-+CvDC7ZttU/sSt9rFjix/P05iS43qHCOOGzcr3Ry99bXG7VX953+vFyEuph/tfqoYu8dttBkE86JSKBO2OzcxA== - dependencies: - detect-libc "^1.0.2" - mkdirp "^0.5.1" - needle "^2.2.1" - nopt "^4.0.1" - npm-packlist "^1.1.6" - npmlog "^4.0.2" - rc "^1.2.7" - rimraf "^2.6.1" - semver "^5.3.0" - tar "^4.4.2" - node-releases@^1.1.53: version "1.1.53" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.53.tgz#2d821bfa499ed7c5dffc5e2f28c88e78a08ee3f4" integrity sha512-wp8zyQVwef2hpZ/dJH7SfSrIPD6YoJz6BDQDpGEkcA0s3LpAQoxBIYmfIq6QAhC1DhwsyCgTaTTcONwX8qzCuQ== -nopt@^4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.3.tgz#a375cad9d02fd921278d954c2254d5aa57e15e48" - integrity sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg== - dependencies: - abbrev "1" - osenv "^0.1.4" +node-releases@^2.0.12: + version "2.0.12" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.12.tgz#35627cc224a23bfb06fb3380f2b3afaaa7eb1039" + integrity sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ== normalize-package-data@^2.3.2: version "2.5.0" @@ -7799,27 +7323,6 @@ normals@^1.1.0: resolved "https://registry.yarnpkg.com/normals/-/normals-1.1.0.tgz#325b595ed34afe467a6c55a14fd9085787ff59c0" integrity sha1-MltZXtNK/kZ6bFWhT9kIV4f/WcA= -npm-bundled@^1.0.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.1.tgz#1edd570865a94cdb1bc8220775e29466c9fb234b" - integrity sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA== - dependencies: - npm-normalize-package-bin "^1.0.1" - -npm-normalize-package-bin@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" - integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== - -npm-packlist@^1.1.6: - version "1.4.8" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.8.tgz#56ee6cc135b9f98ad3d51c1c95da22bbb9b2ef3e" - integrity sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A== - dependencies: - ignore-walk "^3.0.1" - npm-bundled "^1.0.1" - npm-normalize-package-bin "^1.0.1" - npm-run-all@^4.1.5: version "4.1.5" resolved "https://registry.yarnpkg.com/npm-run-all/-/npm-run-all-4.1.5.tgz#04476202a15ee0e2e214080861bff12a51d98fba" @@ -7842,16 +7345,6 @@ npm-run-path@^2.0.0: dependencies: path-key "^2.0.0" -npmlog@^4.0.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" - integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== - dependencies: - are-we-there-yet "~1.1.2" - console-control-strings "~1.1.0" - gauge "~2.7.3" - set-blocking "~2.0.0" - nth-check@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" @@ -7871,11 +7364,6 @@ number-is-integer@^1.0.1: dependencies: is-finite "^1.0.1" -number-is-nan@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= - numeral@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/numeral/-/numeral-2.0.6.tgz#4ad080936d443c2561aed9f2197efffe25f4e506" @@ -8053,16 +7541,6 @@ orbit-camera-controller@^4.0.0: filtered-vector "^1.2.1" gl-mat4 "^1.0.3" -os-browserify@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" - integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= - -os-homedir@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" - integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= - os-homedir@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-2.0.0.tgz#a0c76bb001a8392a503cbd46e7e650b3423a923c" @@ -8077,19 +7555,6 @@ os-locale@^3.1.0: lcid "^2.0.0" mem "^4.0.0" -os-tmpdir@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= - -osenv@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" - integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.0" - p-defer@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" @@ -8169,20 +7634,6 @@ pad-left@^1.0.2: dependencies: repeat-string "^1.3.0" -pako@~1.0.5: - version "1.0.11" - resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" - integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== - -parallel-transform@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc" - integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg== - dependencies: - cyclist "^1.0.1" - inherits "^2.0.3" - readable-stream "^2.1.5" - parent-module@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" @@ -8195,18 +7646,6 @@ parenthesis@^3.1.5: resolved "https://registry.yarnpkg.com/parenthesis/-/parenthesis-3.1.7.tgz#01c89b603a2a6a262ec47554e74ed154a9be2aa6" integrity sha512-iMtu+HCbLXVrpf6Ys/4YKhcFxbux3xK4ZVB9r+a2kMSqeeQWQoDNYlXIsOjwlT2ldYXZ3k5PVeBnYn7fbAo/Bg== -parse-asn1@^5.0.0: - version "5.1.5" - resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.5.tgz#003271343da58dc94cace494faef3d2147ecea0e" - integrity sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ== - dependencies: - asn1.js "^4.0.0" - browserify-aes "^1.0.0" - create-hash "^1.1.0" - evp_bytestokey "^1.0.0" - pbkdf2 "^3.0.3" - safe-buffer "^5.1.1" - parse-json@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" @@ -8254,11 +7693,6 @@ pascalcase@^0.1.1: resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= -path-browserify@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" - integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== - path-dirname@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" @@ -8309,17 +7743,6 @@ pbf@^3.0.5: ieee754 "^1.1.12" resolve-protobuf-schema "^2.1.0" -pbkdf2@^3.0.3: - version "3.0.17" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6" - integrity sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA== - dependencies: - create-hash "^1.1.2" - create-hmac "^1.1.4" - ripemd160 "^2.0.1" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - performance-now@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" @@ -8345,6 +7768,11 @@ pick-by-alias@^1.2.0: resolved "https://registry.yarnpkg.com/pick-by-alias/-/pick-by-alias-1.2.0.tgz#5f7cb2b1f21a6e1e884a0c87855aa4a37361107b" integrity sha1-X3yysfIabh6ISgyHhVqko3NhEHs= +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + picomatch@^2.0.5, picomatch@^2.2.1: version "2.2.2" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" @@ -8653,21 +8081,11 @@ process-nextick-args@~2.0.0: resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== -process@^0.11.10: - version "0.11.10" - resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" - integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= - progress@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== -promise-inflight@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" - integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= - promise@^7.1.1: version "7.3.1" resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" @@ -8692,7 +8110,7 @@ prop-types-exact@^1.2.0: object.assign "^4.1.0" reflect.ownkeys "^0.2.0" -prop-types@>=15.0.0, prop-types@^15.5.10, prop-types@^15.5.7, prop-types@^15.6.0, prop-types@^15.6.2, prop-types@^15.7.2: +prop-types@>=15.0.0, prop-types@^15.5.10, prop-types@^15.6.0, prop-types@^15.6.2, prop-types@^15.7.2: version "15.7.2" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== @@ -8701,6 +8119,15 @@ prop-types@>=15.0.0, prop-types@^15.5.10, prop-types@^15.5.7, prop-types@^15.6.0 object-assign "^4.1.1" react-is "^16.8.1" +prop-types@^15.5.7: + version "15.8.1" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" + integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.13.1" + protocol-buffers-schema@^3.3.1: version "3.4.0" resolved "https://registry.yarnpkg.com/protocol-buffers-schema/-/protocol-buffers-schema-3.4.0.tgz#2f0ea31ca96627d680bf2fefae7ebfa2b6453eae" @@ -8716,26 +8143,6 @@ psl@^1.1.28: resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== -public-encrypt@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" - integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== - dependencies: - bn.js "^4.1.0" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - parse-asn1 "^5.0.0" - randombytes "^2.0.1" - safe-buffer "^5.1.2" - -pump@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" - integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - pump@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" @@ -8744,25 +8151,6 @@ pump@^3.0.0: end-of-stream "^1.1.0" once "^1.3.1" -pumpify@^1.3.3: - version "1.5.1" - resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" - integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== - dependencies: - duplexify "^3.6.0" - inherits "^2.0.3" - pump "^2.0.0" - -punycode@1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" - integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= - -punycode@^1.2.4: - version "1.4.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" - integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= - punycode@^2.1.0, punycode@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" @@ -8797,16 +8185,6 @@ quat-slerp@^1.0.0: dependencies: gl-quat "^1.0.0" -querystring-es3@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" - integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= - -querystring@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" - integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= - quickselect@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/quickselect/-/quickselect-2.0.0.tgz#f19680a486a5eefb581303e023e98faaf25dd018" @@ -8840,21 +8218,13 @@ randexp@0.4.6: discontinuous-range "1.0.0" ret "~0.1.10" -randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: +randombytes@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== dependencies: safe-buffer "^5.1.0" -randomfill@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" - integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== - dependencies: - randombytes "^2.0.5" - safe-buffer "^5.1.0" - rat-vec@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/rat-vec/-/rat-vec-1.1.1.tgz#0dde2b66b7b34bb1bcd2a23805eac806d87fd17f" @@ -8862,16 +8232,6 @@ rat-vec@^1.1.1: dependencies: big-rat "^1.0.3" -rc@^1.2.7: - version "1.2.8" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" - integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== - dependencies: - deep-extend "^0.6.0" - ini "~1.3.0" - minimist "^1.2.0" - strip-json-comments "~2.0.1" - react-draggable@^3.0.3: version "3.3.2" resolved "https://registry.yarnpkg.com/react-draggable/-/react-draggable-3.3.2.tgz#966ef1d90f2387af3c2d8bd3516f601ea42ca359" @@ -8880,7 +8240,7 @@ react-draggable@^3.0.3: classnames "^2.2.5" prop-types "^15.6.0" -react-is@^16.12.0, react-is@^16.7.0, react-is@^16.8.1, react-is@^16.8.4, react-is@^16.8.6, react-is@^16.9.0: +react-is@^16.12.0, react-is@^16.13.1, react-is@^16.7.0, react-is@^16.8.1, react-is@^16.8.4, react-is@^16.8.6, react-is@^16.9.0: version "16.13.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== @@ -8944,7 +8304,17 @@ read-pkg@^3.0.0: normalize-package-data "^2.3.2" path-type "^3.0.0" -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6: +"readable-stream@>=1.0.33-1 <1.1.0-0", readable-stream@~1.0.17, readable-stream@~1.0.27-1: + version "1.0.34" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" + integrity sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw= + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.2.2, readable-stream@^2.3.5, readable-stream@~2.3.6: version "2.3.7" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== @@ -8957,16 +8327,6 @@ read-pkg@^3.0.0: string_decoder "~1.1.1" util-deprecate "~1.0.1" -"readable-stream@>=1.0.33-1 <1.1.0-0", readable-stream@~1.0.17, readable-stream@~1.0.27-1: - version "1.0.34" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" - integrity sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw= - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "0.0.1" - string_decoder "~0.10.x" - readable-stream@^3.1.1: version "3.6.0" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" @@ -9055,10 +8415,10 @@ regenerate@^1.4.0: resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== -regenerator-runtime@^0.13.4: - version "0.13.5" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz#d878a1d094b4306d10b9096484b33ebd55e26697" - integrity sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA== +regenerator-runtime@^0.13.11, regenerator-runtime@^0.13.4: + version "0.13.11" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" + integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== regenerator-transform@^0.14.2: version "0.14.4" @@ -9363,7 +8723,7 @@ right-now@^1.0.0: resolved "https://registry.yarnpkg.com/right-now/-/right-now-1.0.0.tgz#6e89609deebd7dcdaf8daecc9aea39cf585a0918" integrity sha1-bolgne69fc2vja7Mmuo5z1haCRg= -rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.3: +rimraf@^2.5.4, rimraf@^2.6.3: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== @@ -9384,14 +8744,6 @@ rimraf@~2.6.2: dependencies: glob "^7.1.3" -ripemd160@^2.0.0, ripemd160@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" - integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - robust-compress@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/robust-compress/-/robust-compress-1.0.0.tgz#4cf62c4b318d8308516012bb8c11752f39329b1b" @@ -9493,13 +8845,6 @@ run-parallel@^1.1.9: resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.10.tgz#60a51b2ae836636c81377df16cb107351bcd13ef" integrity sha512-zb/1OuZ6flOlH6tQyMPUrE3x3Ulxjlo9WIVXR4yVYi4H9UXQaeIsPbLn2R3O3vQCnDKkAl2qHiuocKKX4Tz/Sw== -run-queue@^1.0.0, run-queue@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" - integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec= - dependencies: - aproba "^1.1.1" - rw@^1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/rw/-/rw-1.3.3.tgz#3f862dfa91ab766b14885ef4d01124bfda074fb4" @@ -9555,15 +8900,6 @@ scheduler@^0.19.1: loose-envify "^1.1.0" object-assign "^4.1.1" -schema-utils@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" - integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== - dependencies: - ajv "^6.1.0" - ajv-errors "^1.0.0" - ajv-keywords "^3.1.0" - schema-utils@^2.6.5: version "2.6.6" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.6.6.tgz#299fe6bd4a3365dc23d99fd446caff8f1d6c330c" @@ -9572,7 +8908,16 @@ schema-utils@^2.6.5: ajv "^6.12.0" ajv-keywords "^3.4.1" -"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.6.0, semver@^5.7.0, semver@^5.7.1: +schema-utils@^3.1.1, schema-utils@^3.2.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.3.0.tgz#f50a88877c3c01652a15b622ae9e9795df7a60fe" + integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== + dependencies: + "@types/json-schema" "^7.0.8" + ajv "^6.12.5" + ajv-keywords "^3.5.2" + +"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.6.0, semver@^5.7.0, semver@^5.7.1: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== @@ -9594,12 +8939,14 @@ semver@^7.2.1: dependencies: lru-cache "^6.0.0" -serialize-javascript@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-2.1.2.tgz#ecec53b0e0317bdc95ef76ab7074b7384785fa61" - integrity sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ== +serialize-javascript@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.1.tgz#b206efb27c3da0b0ab6b52f48d170b7996458e5c" + integrity sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w== + dependencies: + randombytes "^2.1.0" -set-blocking@^2.0.0, set-blocking@~2.0.0: +set-blocking@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= @@ -9614,19 +8961,6 @@ set-value@^2.0.0, set-value@^2.0.1: is-plain-object "^2.0.3" split-string "^3.0.1" -setimmediate@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" - integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= - -sha.js@^2.4.0, sha.js@^2.4.8: - version "2.4.11" - resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" - integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - shallow-copy@0.0.1, shallow-copy@~0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/shallow-copy/-/shallow-copy-0.0.1.tgz#415f42702d73d810330292cc5ee86eae1a11a170" @@ -9795,11 +9129,6 @@ sortablejs@^1.6.1: resolved "https://registry.yarnpkg.com/sortablejs/-/sortablejs-1.10.2.tgz#6e40364d913f98b85a14f6678f92b5c1221f5290" integrity sha512-YkPGufevysvfwn5rfdlGyrGjt7/CRHwvRPogD/lC+TnvcN29jDpCifKP+rBqf+LRldfXSTh+0CGLcSg0VIxq3A== -source-list-map@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" - integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== - source-map-resolve@^0.5.0: version "0.5.3" resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" @@ -9819,10 +9148,10 @@ source-map-support@^0.5.16, source-map-support@^0.5.6: buffer-from "^1.0.0" source-map "^0.6.0" -source-map-support@~0.5.12: - version "0.5.16" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.16.tgz#0ae069e7fe3ba7538c64c98515e35339eac5a042" - integrity sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ== +source-map-support@~0.5.20: + version "0.5.21" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== dependencies: buffer-from "^1.0.0" source-map "^0.6.0" @@ -9927,13 +9256,6 @@ sshpk@^1.7.0: safer-buffer "^2.0.2" tweetnacl "~0.14.0" -ssri@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8" - integrity sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA== - dependencies: - figgy-pudding "^3.5.1" - stack-trace@0.0.9: version "0.0.9" resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.9.tgz#a8f6eaeca90674c333e7c43953f275b451510695" @@ -9988,33 +9310,6 @@ stealthy-require@^1.1.1: resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= -stream-browserify@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" - integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== - dependencies: - inherits "~2.0.1" - readable-stream "^2.0.2" - -stream-each@^1.1.0: - version "1.2.3" - resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" - integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== - dependencies: - end-of-stream "^1.1.0" - stream-shift "^1.0.0" - -stream-http@^2.7.2: - version "2.8.3" - resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" - integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== - dependencies: - builtin-status-codes "^3.0.0" - inherits "^2.0.1" - readable-stream "^2.3.6" - to-arraybuffer "^1.0.0" - xtend "^4.0.0" - stream-shift@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" @@ -10043,15 +9338,6 @@ string-to-arraybuffer@^1.0.0: atob-lite "^2.0.0" is-base64 "^0.1.0" -string-width@^1.0.1, "string-width@^1.0.2 || 2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.0" - string-width@^3.0.0, string-width@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" @@ -10121,7 +9407,7 @@ string.prototype.trimstart@^1.0.0: define-properties "^1.1.3" es-abstract "^1.17.5" -string_decoder@^1.0.0, string_decoder@^1.1.1, string_decoder@~1.1.1: +string_decoder@^1.1.1, string_decoder@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== @@ -10133,13 +9419,6 @@ string_decoder@~0.10.x: resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= -strip-ansi@^3.0.0, strip-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= - dependencies: - ansi-regex "^2.0.0" - strip-ansi@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" @@ -10176,11 +9455,6 @@ strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== -strip-json-comments@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" - integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= - strongly-connected-components@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/strongly-connected-components/-/strongly-connected-components-1.0.1.tgz#0920e2b4df67c8eaee96c6b6234fe29e873dba99" @@ -10227,6 +9501,13 @@ supports-color@^7.1.0: dependencies: has-flag "^4.0.0" +supports-color@^8.0.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + surface-nets@^1.0.0, surface-nets@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/surface-nets/-/surface-nets-1.0.2.tgz#e433c8cbba94a7274c6f4c99552b461bf1fc7a4b" @@ -10277,11 +9558,16 @@ table@^5.2.3: slice-ansi "^2.1.0" string-width "^3.0.0" -tapable@^1.0.0, tapable@^1.1.3: +tapable@^1.0.0: version "1.1.3" resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== +tapable@^2.1.1, tapable@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" + integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== + tape@^4.0.0: version "4.13.2" resolved "https://registry.yarnpkg.com/tape/-/tape-4.13.2.tgz#eb419b9d9bc004025b1a81a5b63093e07f425629" @@ -10303,19 +9589,6 @@ tape@^4.0.0: string.prototype.trim "~1.2.1" through "~2.3.8" -tar@^4.4.2: - version "4.4.13" - resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525" - integrity sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA== - dependencies: - chownr "^1.1.1" - fs-minipass "^1.2.5" - minipass "^2.8.6" - minizlib "^1.2.1" - mkdirp "^0.5.0" - safe-buffer "^5.1.2" - yallist "^3.0.3" - temp@^0.8.1: version "0.8.4" resolved "https://registry.yarnpkg.com/temp/-/temp-0.8.4.tgz#8c97a33a4770072e0a05f919396c7665a7dd59f2" @@ -10323,29 +9596,26 @@ temp@^0.8.1: dependencies: rimraf "~2.6.2" -terser-webpack-plugin@^1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz#5ecaf2dbdc5fb99745fd06791f46fc9ddb1c9a7c" - integrity sha512-QMxecFz/gHQwteWwSo5nTc6UaICqN1bMedC5sMtUc7y3Ha3Q8y6ZO0iCR8pq4RJC8Hjf0FEPEHZqcMB/+DFCrA== +terser-webpack-plugin@^5.3.7: + version "5.3.9" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz#832536999c51b46d468067f9e37662a3b96adfe1" + integrity sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA== dependencies: - cacache "^12.0.2" - find-cache-dir "^2.1.0" - is-wsl "^1.1.0" - schema-utils "^1.0.0" - serialize-javascript "^2.1.2" - source-map "^0.6.1" - terser "^4.1.2" - webpack-sources "^1.4.0" - worker-farm "^1.7.0" + "@jridgewell/trace-mapping" "^0.3.17" + jest-worker "^27.4.5" + schema-utils "^3.1.1" + serialize-javascript "^6.0.1" + terser "^5.16.8" -terser@^4.1.2: - version "4.6.11" - resolved "https://registry.yarnpkg.com/terser/-/terser-4.6.11.tgz#12ff99fdd62a26de2a82f508515407eb6ccd8a9f" - integrity sha512-76Ynm7OXUG5xhOpblhytE7X58oeNSmC8xnNhjWVo8CksHit0U0kO4hfNbPrrYwowLWFgM2n9L176VNx2QaHmtA== +terser@^5.16.8: + version "5.18.2" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.18.2.tgz#ff3072a0faf21ffd38f99acc9a0ddf7b5f07b948" + integrity sha512-Ah19JS86ypbJzTzvUCX7KOsEIhDaRONungA4aYBjEP3JZRf4ocuDzTg4QWZnPn9DEMiMYGJPiSOy7aykoCc70w== dependencies: + "@jridgewell/source-map" "^0.3.3" + acorn "^8.8.2" commander "^2.20.0" - source-map "~0.6.1" - source-map-support "~0.5.12" + source-map-support "~0.5.20" test-exclude@^5.2.3: version "5.2.3" @@ -10391,7 +9661,7 @@ through2@^0.6.3: readable-stream ">=1.0.33-1 <1.1.0-0" xtend ">=4.0.0 <4.1.0-0" -through2@^2.0.0, through2@^2.0.1: +through2@^2.0.1: version "2.0.5" resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== @@ -10412,13 +9682,6 @@ through@2, through@~2.3.4, through@~2.3.8: resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= -timers-browserify@^2.0.4: - version "2.0.11" - resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.11.tgz#800b1f3eee272e5bc53ee465a04d0e804c31211f" - integrity sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ== - dependencies: - setimmediate "^1.0.4" - tinycolor2@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/tinycolor2/-/tinycolor2-1.4.1.tgz#f4fad333447bc0b07d4dc8e9209d8f39a8ac77e8" @@ -10443,11 +9706,6 @@ to-array-buffer@^3.0.0: is-blob "^2.0.1" string-to-arraybuffer "^1.0.0" -to-arraybuffer@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" - integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= - to-fast-properties@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" @@ -10584,11 +9842,6 @@ tslib@^1.10.0, tslib@^1.9.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.11.1.tgz#eb15d128827fbee2841549e171f45ed338ac7e35" integrity sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA== -tty-browserify@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" - integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= - tunnel-agent@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" @@ -10750,20 +10003,6 @@ uniq@^1.0.0, uniq@^1.0.1: resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= -unique-filename@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" - integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== - dependencies: - unique-slug "^2.0.0" - -unique-slug@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" - integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== - dependencies: - imurmurhash "^0.1.4" - universalify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/universalify/-/universalify-1.0.0.tgz#b61a1da173e8435b2fe3c67d29b9adf8594bd16d" @@ -10801,6 +10040,14 @@ updatable-log@^0.2.0: figures "^3.0.0" log-update "^3.3.0" +update-browserslist-db@^1.0.11: + version "1.0.11" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz#9a2a641ad2907ae7b3616506f4b977851db5b940" + integrity sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA== + dependencies: + escalade "^3.1.1" + picocolors "^1.0.0" + update-diff@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/update-diff/-/update-diff-1.1.0.tgz#f510182d81ee819fb82c3a6b22b62bbdeda7808f" @@ -10818,14 +10065,6 @@ urix@^0.1.0: resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= -url@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" - integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= - dependencies: - punycode "1.3.2" - querystring "0.2.0" - use-debounce@^3.4.1: version "3.4.1" resolved "https://registry.yarnpkg.com/use-debounce/-/use-debounce-3.4.1.tgz#361a20e583c1bd4a44f8b29a26793a52a0b84d2c" @@ -10856,20 +10095,6 @@ util.promisify@^1.0.0: has-symbols "^1.0.1" object.getownpropertydescriptors "^2.1.0" -util@0.10.3: - version "0.10.3" - resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" - integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk= - dependencies: - inherits "2.0.1" - -util@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" - integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== - dependencies: - inherits "2.0.3" - utils-copy-error@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/utils-copy-error/-/utils-copy-error-1.0.1.tgz#791de393c0f09890afd59f3cbea635f079a94fa5" @@ -11020,11 +10245,6 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" -vm-browserify@^1.0.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" - integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== - vt-pbf@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/vt-pbf/-/vt-pbf-3.1.1.tgz#b0f627e39a10ce91d943b898ed2363d21899fb82" @@ -11048,14 +10268,13 @@ walker@^1.0.7, walker@~1.0.5: dependencies: makeerror "1.0.x" -watchpack@^1.6.0: - version "1.6.1" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.6.1.tgz#280da0a8718592174010c078c7585a74cd8cd0e2" - integrity sha512-+IF9hfUFOrYOOaKyfaI7h7dquUIOgyEMoQMLA7OP5FxegKA2+XdXThAZ9TU2kucfhDH7rfMHs1oPYziVGWRnZA== +watchpack@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.0.tgz#fa33032374962c78113f93c7f2fb4c54c9862a5d" + integrity sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg== dependencies: - chokidar "^2.1.8" + glob-to-regexp "^0.4.1" graceful-fs "^4.1.2" - neo-async "^2.5.0" weak-map@^1.0.5: version "1.0.5" @@ -11096,42 +10315,40 @@ webpack-cli@^3.3.11: v8-compile-cache "2.0.3" yargs "13.2.4" -webpack-sources@^1.4.0, webpack-sources@^1.4.1: - version "1.4.3" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" - integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== - dependencies: - source-list-map "^2.0.0" - source-map "~0.6.1" - -webpack@^4.42.1: - version "4.42.1" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.42.1.tgz#ae707baf091f5ca3ef9c38b884287cfe8f1983ef" - integrity sha512-SGfYMigqEfdGchGhFFJ9KyRpQKnipvEvjc1TwrXEPCM6H5Wywu10ka8o3KGrMzSMxMQKt8aCHUFh5DaQ9UmyRg== - 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.2.1" - ajv "^6.10.2" - ajv-keywords "^3.4.1" +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.88.1: + version "5.88.1" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.88.1.tgz#21eba01e81bd5edff1968aea726e2fbfd557d3f8" + integrity sha512-FROX3TxQnC/ox4N+3xQoWZzvGXSuscxR32rbzjpXgEzWudJFEJBpdlkkob2ylrv5yzzufD1zph1OoFsLtm6stQ== + dependencies: + "@types/eslint-scope" "^3.7.3" + "@types/estree" "^1.0.0" + "@webassemblyjs/ast" "^1.11.5" + "@webassemblyjs/wasm-edit" "^1.11.5" + "@webassemblyjs/wasm-parser" "^1.11.5" + acorn "^8.7.1" + acorn-import-assertions "^1.9.0" + browserslist "^4.14.5" chrome-trace-event "^1.0.2" - enhanced-resolve "^4.1.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.6.0" - webpack-sources "^1.4.1" + enhanced-resolve "^5.15.0" + es-module-lexer "^1.2.1" + eslint-scope "5.1.1" + events "^3.2.0" + glob-to-regexp "^0.4.1" + graceful-fs "^4.2.9" + json-parse-even-better-errors "^2.3.1" + loader-runner "^4.2.0" + mime-types "^2.1.27" + neo-async "^2.6.2" + schema-utils "^3.2.0" + tapable "^2.1.1" + terser-webpack-plugin "^5.3.7" + watchpack "^2.4.0" + webpack-sources "^3.2.3" wgs84@0.0.0: version "0.0.0" @@ -11187,13 +10404,6 @@ which@^2.0.1: dependencies: isexe "^2.0.0" -wide-align@^1.1.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" - integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== - dependencies: - string-width "^1.0.2 || 2" - window-size@0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" @@ -11209,13 +10419,6 @@ wordwrap@0.0.2: resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" integrity sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8= -worker-farm@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" - integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== - dependencies: - errno "~0.1.7" - world-calendars@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/world-calendars/-/world-calendars-1.0.3.tgz#b25c5032ba24128ffc41d09faf4a5ec1b9c14335" @@ -11289,11 +10492,6 @@ y18n@^4.0.0: resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== -yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== - yallist@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" From 66da3bb7cd0377a3b748ad9cf7c6908461c7550e Mon Sep 17 00:00:00 2001 From: Pavel Shuvalov Date: Thu, 6 Jul 2023 11:02:35 +0300 Subject: [PATCH 072/274] Add explicit permission checker to postgres schema fetcher (#5911) --- redash/query_runner/pg.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/redash/query_runner/pg.py b/redash/query_runner/pg.py index 20b5aed98a..fa8e52ca70 100644 --- a/redash/query_runner/pg.py +++ b/redash/query_runner/pg.py @@ -220,7 +220,7 @@ def _get_tables(self, schema): ON a.attrelid = c.oid AND a.attnum > 0 AND NOT a.attisdropped - WHERE c.relkind IN ('m', 'f', 'p') + WHERE c.relkind IN ('m', 'f', 'p') AND has_table_privilege(s.nspname || '.' || c.relname, 'select') UNION From b9bdfe83cccb8ddadebf5f3c2dbbc9174cba34b3 Mon Sep 17 00:00:00 2001 From: Guido Petri <18634426+guidopetri@users.noreply.github.com> Date: Thu, 6 Jul 2023 21:28:41 -0400 Subject: [PATCH 073/274] update widget_spec.js test to pass on 380 or 381 vizheight (#6149) --- client/cypress/integration/dashboard/widget_spec.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/cypress/integration/dashboard/widget_spec.js b/client/cypress/integration/dashboard/widget_spec.js index 6da0e335cb..2c77fff832 100644 --- a/client/cypress/integration/dashboard/widget_spec.js +++ b/client/cypress/integration/dashboard/widget_spec.js @@ -177,7 +177,7 @@ describe("Widget", () => { cy.visit(this.dashboardUrl); cy.getByTestId("TableVisualization") .its("0.offsetHeight") - .should("eq", 381); + .should("be.oneOf", [380, 381]); cy.percySnapshot("Shows correct height of table visualization"); }); }); From d6432482bf9a63eeadf34c8174faeccb1336d418 Mon Sep 17 00:00:00 2001 From: Gabriel Dutra Date: Fri, 7 Jul 2023 00:02:43 -0300 Subject: [PATCH 074/274] Wait for query change to propagate on pivot spec (#6142) --- client/cypress/integration/visualizations/pivot_spec.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/client/cypress/integration/visualizations/pivot_spec.js b/client/cypress/integration/visualizations/pivot_spec.js index c56e43be35..ad10bc2a16 100644 --- a/client/cypress/integration/visualizations/pivot_spec.js +++ b/client/cypress/integration/visualizations/pivot_spec.js @@ -99,6 +99,10 @@ describe("Pivot", () => { .focus() .type(" UNION ALL {enter}SELECT 'c' AS stage1, 'c5' AS stage2, 55 AS value"); + // wait for the query text change to propagate (it's debounced in QuerySource.jsx) + // eslint-disable-next-line cypress/no-unnecessary-waiting + cy.wait(200); + cy.getByTestId("SaveButton").click(); cy.getByTestId("ExecuteButton") .should("be.enabled") From e8621dba1a9283051cc2bb2e5f8a52e22daf1610 Mon Sep 17 00:00:00 2001 From: drewmcmahon Date: Thu, 6 Jul 2023 20:49:48 -0700 Subject: [PATCH 075/274] chore: inherit BaseSQLQueryRunner in Snowflake query runner (#6064) --- redash/query_runner/snowflake.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/redash/query_runner/snowflake.py b/redash/query_runner/snowflake.py index 8f5ff8b3c0..89dbff1344 100644 --- a/redash/query_runner/snowflake.py +++ b/redash/query_runner/snowflake.py @@ -6,7 +6,7 @@ enabled = False -from redash.query_runner import BaseQueryRunner, register +from redash.query_runner import BaseSQLQueryRunner, register from redash.query_runner import ( TYPE_STRING, TYPE_DATE, @@ -31,7 +31,7 @@ } -class Snowflake(BaseQueryRunner): +class Snowflake(BaseSQLQueryRunner): noop_query = "SELECT 1" @classmethod From 0f3452f00f1033e19a5e03f50efcffb9cb4db8c2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 7 Jul 2023 15:08:27 +0900 Subject: [PATCH 076/274] Bump qs from 6.5.2 to 6.5.3 in /viz-lib (#5873) Bumps [qs](https://github.com/ljharb/qs) from 6.5.2 to 6.5.3. - [Release notes](https://github.com/ljharb/qs/releases) - [Changelog](https://github.com/ljharb/qs/blob/main/CHANGELOG.md) - [Commits](https://github.com/ljharb/qs/compare/v6.5.2...v6.5.3) --- updated-dependencies: - dependency-name: qs dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- viz-lib/yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/viz-lib/yarn.lock b/viz-lib/yarn.lock index 4dffc58b75..550909e4ef 100644 --- a/viz-lib/yarn.lock +++ b/viz-lib/yarn.lock @@ -8169,9 +8169,9 @@ pxls@^2.0.0: to-uint8 "^1.4.1" qs@~6.5.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" - integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== + version "6.5.3" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" + integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== quantize@^1.0.2: version "1.0.2" From 2881599aa36b818b2bdd12685fba88a580aebd0e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 7 Jul 2023 07:10:31 +0000 Subject: [PATCH 077/274] Bump pyjwt from 1.7.1 to 2.4.0 (#5759) Bumps [pyjwt](https://github.com/jpadilla/pyjwt) from 1.7.1 to 2.4.0. - [Release notes](https://github.com/jpadilla/pyjwt/releases) - [Changelog](https://github.com/jpadilla/pyjwt/blob/master/CHANGELOG.rst) - [Commits](https://github.com/jpadilla/pyjwt/compare/1.7.1...2.4.0) --- updated-dependencies: - dependency-name: pyjwt dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Jun --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 4d25529446..f6626253e9 100644 --- a/requirements.txt +++ b/requirements.txt @@ -46,7 +46,7 @@ semver==2.8.1 xlsxwriter==1.2.2 pystache==0.6.0 parsedatetime==2.4 -PyJWT==1.7.1 +PyJWT==2.4.0 cryptography==3.4.8 simplejson==3.16.0 ua-parser==0.8.0 From 79b01406fc30925661a887d04f4176c56d491f6b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 7 Jul 2023 19:31:11 +1000 Subject: [PATCH 078/274] Bump shell-quote from 1.7.2 to 1.7.3 (#5780) Bumps [shell-quote](https://github.com/substack/node-shell-quote) from 1.7.2 to 1.7.3. - [Release notes](https://github.com/substack/node-shell-quote/releases) - [Changelog](https://github.com/substack/node-shell-quote/blob/master/CHANGELOG.md) - [Commits](https://github.com/substack/node-shell-quote/compare/v1.7.2...1.7.3) --- updated-dependencies: - dependency-name: shell-quote dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 507aa2fc04..9c093c44ac 100644 --- a/yarn.lock +++ b/yarn.lock @@ -14277,9 +14277,9 @@ shebang-regex@^3.0.0: integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== shell-quote@^1.4.2, shell-quote@^1.6.1: - version "1.7.2" - resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2" - integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== + version "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== shellwords@^0.1.1: version "0.1.1" From a34deb25d619205e2f643e4dc9199b865b942559 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 7 Jul 2023 20:10:56 +1000 Subject: [PATCH 079/274] Bump tar from 4.4.8 to 4.4.19 (#5651) Bumps [tar](https://github.com/npm/node-tar) from 4.4.8 to 4.4.19. - [Release notes](https://github.com/npm/node-tar/releases) - [Changelog](https://github.com/npm/node-tar/blob/main/CHANGELOG.md) - [Commits](https://github.com/npm/node-tar/compare/v4.4.8...v4.4.19) --- updated-dependencies: - dependency-name: tar dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 73 ++++++++++++++++++++++++++----------------------------- 1 file changed, 34 insertions(+), 39 deletions(-) diff --git a/yarn.lock b/yarn.lock index 9c093c44ac..59371eb67f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3797,10 +3797,10 @@ chokidar@^3.4.1: optionalDependencies: fsevents "~2.1.2" -chownr@^1.0.1, chownr@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz#54726b8b8fff4df053c42187e801fb4412df1494" - integrity sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g== +chownr@^1.0.1, chownr@^1.1.1, chownr@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== chroma-js@^1.3.6: version "1.4.1" @@ -6863,12 +6863,12 @@ fs-extra@^9.0.1: jsonfile "^6.0.1" universalify "^1.0.0" -fs-minipass@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d" - integrity sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ== +fs-minipass@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" + integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== dependencies: - minipass "^2.2.1" + minipass "^2.6.0" fs-readdir-recursive@^1.1.0: version "1.1.0" @@ -10406,20 +10406,20 @@ minimist@~0.0.1: resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= -minipass@^2.2.1, minipass@^2.3.4: - version "2.3.5" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.5.tgz#cacebe492022497f656b0f0f51e2682a9ed2d848" - integrity sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA== +minipass@^2.6.0, minipass@^2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" + integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== dependencies: safe-buffer "^5.1.2" yallist "^3.0.0" -minizlib@^1.1.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.2.1.tgz#dd27ea6136243c7c880684e8672bb3a45fd9b614" - integrity sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA== +minizlib@^1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" + integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== dependencies: - minipass "^2.2.1" + minipass "^2.9.0" mississippi@^2.0.0: version "2.0.0" @@ -10461,14 +10461,14 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" -mkdirp@0.5.1, mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.1: +mkdirp@0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= dependencies: minimist "0.0.8" -mkdirp@^0.5.3, mkdirp@^0.5.4, mkdirp@^0.5.5: +mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.4, mkdirp@^0.5.5, mkdirp@~0.5.1: version "0.5.5" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== @@ -13943,12 +13943,12 @@ rxjs@^6.3.3, rxjs@^6.4.0: dependencies: tslib "^1.9.0" -safe-buffer@5.1.2, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: +safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@~5.2.0: +safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.1, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -15192,17 +15192,17 @@ tape@^4.0.0: through "~2.3.8" tar@^4: - version "4.4.8" - resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.8.tgz#b19eec3fde2a96e64666df9fdb40c5ca1bc3747d" - integrity sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ== - dependencies: - chownr "^1.1.1" - fs-minipass "^1.2.5" - minipass "^2.3.4" - minizlib "^1.1.1" - mkdirp "^0.5.0" - safe-buffer "^5.1.2" - yallist "^3.0.2" + version "4.4.19" + resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.19.tgz#2e4d7263df26f2b914dee10c825ab132123742f3" + integrity sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA== + dependencies: + chownr "^1.1.4" + fs-minipass "^1.2.7" + minipass "^2.9.0" + minizlib "^1.3.3" + mkdirp "^0.5.5" + safe-buffer "^5.2.1" + yallist "^3.1.1" terser-webpack-plugin@^1.4.3: version "1.4.5" @@ -16658,12 +16658,7 @@ yallist@^2.1.2: resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= -yallist@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9" - integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A== - -yallist@^3.0.2: +yallist@^3.0.0, yallist@^3.0.2, yallist@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== From 4d0ce10d9733bf30c8a49463e818df0c53ce2498 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 7 Jul 2023 21:26:18 +1000 Subject: [PATCH 080/274] Bump tmpl from 1.0.4 to 1.0.5 (#5653) Bumps [tmpl](https://github.com/daaku/nodejs-tmpl) from 1.0.4 to 1.0.5. - [Release notes](https://github.com/daaku/nodejs-tmpl/releases) - [Commits](https://github.com/daaku/nodejs-tmpl/commits/v1.0.5) --- updated-dependencies: - dependency-name: tmpl dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 59371eb67f..4f08cd1505 100644 --- a/yarn.lock +++ b/yarn.lock @@ -15357,9 +15357,9 @@ tmp@~0.2.1: rimraf "^3.0.0" tmpl@1.0.x: - version "1.0.4" - resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" - integrity sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE= + version "1.0.5" + resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" + integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== to-array-buffer@^3.0.0: version "3.2.0" From 350ddd04837e882e168b469640e5d91a7114eaba Mon Sep 17 00:00:00 2001 From: Frank <1135339601@qq.com> Date: Fri, 7 Jul 2023 20:17:01 +0800 Subject: [PATCH 081/274] fix: catch exception tips (#5047) --- redash/query_runner/elasticsearch.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/redash/query_runner/elasticsearch.py b/redash/query_runner/elasticsearch.py index a87209d58a..0806b75e16 100644 --- a/redash/query_runner/elasticsearch.py +++ b/redash/query_runner/elasticsearch.py @@ -495,7 +495,7 @@ def run_query(self, query, user): ) json_data = json_dumps({"columns": result_columns, "rows": result_rows}) - except (KeyboardInterrupt, JobTimeoutException): + except (KeyboardInterrupt, JobTimeoutException) as e: logger.exception(e) raise except requests.HTTPError as e: From d92fc98b138505d41b07e5c4e8db3fd008e43d10 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 7 Jul 2023 13:18:04 +0000 Subject: [PATCH 082/274] Bump lodash from 4.17.20 to 4.17.21 (#5688) Bumps [lodash](https://github.com/lodash/lodash) from 4.17.20 to 4.17.21. - [Release notes](https://github.com/lodash/lodash/releases) - [Commits](https://github.com/lodash/lodash/compare/4.17.20...4.17.21) --- updated-dependencies: - dependency-name: lodash dependency-type: direct:development ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Justin Clift --- package.json | 2 +- yarn.lock | 18 ++++-------------- 2 files changed, 5 insertions(+), 15 deletions(-) diff --git a/package.json b/package.json index e84e4ef44f..72d368f8a4 100644 --- a/package.json +++ b/package.json @@ -133,7 +133,7 @@ "less": "^3.9.0", "less-loader": "^4.1.0", "less-plugin-autoprefix": "^1.5.1", - "lodash": "^4.17.20", + "lodash": "^4.17.21", "mini-css-extract-plugin": "^0.4.4", "mockdate": "^2.0.2", "npm-run-all": "^4.1.5", diff --git a/yarn.lock b/yarn.lock index 4f08cd1505..87dda7c0ec 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9928,20 +9928,10 @@ lodash.uniq@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= -"lodash@>=3.5 <5", lodash@^4.15.0, lodash@^4.16.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.3, lodash@^4.17.4: - version "4.17.20" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" - integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== - -lodash@^4.17.13: - version "4.17.19" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.19.tgz#e48ddedbe30b3321783c5b4301fbd353bc1e4a4b" - integrity sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ== - -lodash@^4.17.14, lodash@^4.17.15: - version "4.17.15" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" - integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== +"lodash@>=3.5 <5", lodash@^4.15.0, lodash@^4.16.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.21, lodash@^4.17.3, lodash@^4.17.4: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== log-symbols@^1.0.2: version "1.0.2" From 73f49cbf0cc54b21511c3fae3f51f1e8dda81ffc Mon Sep 17 00:00:00 2001 From: Jun Date: Sat, 8 Jul 2023 06:05:27 +0900 Subject: [PATCH 083/274] upgrade flask (#6138) * upgrade flask Signed-off-by: Ye Sijun * fix test Signed-off-by: Ye Sijun * override value_proc for click.prompt Signed-off-by: Ye Sijun --------- Signed-off-by: Ye Sijun --- redash/app.py | 2 +- redash/authentication/__init__.py | 32 +++++++++++++++---------------- redash/cli/__init__.py | 27 +++++++++++++++----------- redash/cli/data_sources.py | 15 ++++++++++++--- redash/cli/database.py | 4 ++-- redash/cli/groups.py | 11 +++++++---- redash/cli/organization.py | 4 ++-- redash/cli/queries.py | 4 ++-- redash/cli/users.py | 10 ++++------ redash/handlers/base.py | 12 ++++++------ redash/handlers/static.py | 7 ++++--- redash/models/base.py | 7 ++++--- redash/models/users.py | 19 +++++++++--------- redash/version_check.py | 4 ++-- requirements.txt | 23 +++++++++++----------- requirements_dev.txt | 2 +- tests/__init__.py | 15 ++++++++------- tests/handlers/test_alerts.py | 3 +-- tests/handlers/test_users.py | 18 ++++++++++------- tests/test_authentication.py | 21 ++++++++++---------- tests/test_cli.py | 17 ++++++++-------- tests/test_handlers.py | 12 +++++++----- 22 files changed, 147 insertions(+), 122 deletions(-) diff --git a/redash/app.py b/redash/app.py index 0b123cc14e..ec1b7a8965 100644 --- a/redash/app.py +++ b/redash/app.py @@ -42,7 +42,7 @@ def create_app(): app = Redash() # Check and update the cached version for use by the client - app.before_first_request(reset_new_version_status) + reset_new_version_status() security.init_app(app) request_metrics.init_app(app) diff --git a/redash/authentication/__init__.py b/redash/authentication/__init__.py index f06cd3cdb2..a2dd1f72f5 100644 --- a/redash/authentication/__init__.py +++ b/redash/authentication/__init__.py @@ -5,15 +5,16 @@ from datetime import timedelta from urllib.parse import urlsplit, urlunsplit -from flask import jsonify, redirect, request, url_for, session +from flask import jsonify, redirect, request, session, url_for from flask_login import LoginManager, login_user, logout_user, user_logged_in +from sqlalchemy.orm.exc import NoResultFound +from werkzeug.exceptions import Unauthorized + from redash import models, settings from redash.authentication import jwt_auth from redash.authentication.org_resolving import current_org from redash.settings.organization import settings as org_settings from redash.tasks import record_event -from sqlalchemy.orm.exc import NoResultFound -from werkzeug.exceptions import Unauthorized login_manager = LoginManager() logger = logging.getLogger("authentication") @@ -216,12 +217,9 @@ def log_user_logged_in(app, user): @login_manager.unauthorized_handler def redirect_to_login(): - if request.is_xhr or "/api/" in request.path: - response = jsonify( - {"message": "Couldn't find resource. Please login and try again."} - ) - response.status_code = 404 - return response + is_xhr = request.headers.get("X-Requested-With") == "XMLHttpRequest" + if is_xhr or "/api/" in request.path: + return {"message": "Couldn't find resource. Please login and try again."}, 404 login_url = get_login_url(next=request.url, external=False) @@ -242,14 +240,11 @@ def logout_and_redirect_to_index(): def init_app(app): - from redash.authentication import ( - saml_auth, - remote_user_auth, - ldap_auth, + from redash.authentication import ldap_auth, remote_user_auth, saml_auth + from redash.authentication.google_oauth import ( + create_google_oauth_blueprint, ) - from redash.authentication.google_oauth import create_google_oauth_blueprint - login_manager.init_app(app) login_manager.anonymous_user = models.AnonymousUser login_manager.REMEMBER_COOKIE_DURATION = settings.REMEMBER_COOKIE_DURATION @@ -262,7 +257,12 @@ def extend_session(): from redash.security import csrf # Authlib's flask oauth client requires a Flask app to initialize - for blueprint in [create_google_oauth_blueprint(app), saml_auth.blueprint, remote_user_auth.blueprint, ldap_auth.blueprint, ]: + for blueprint in [ + create_google_oauth_blueprint(app), + saml_auth.blueprint, + remote_user_auth.blueprint, + ldap_auth.blueprint, + ]: csrf.exempt(blueprint) app.register_blueprint(blueprint) diff --git a/redash/cli/__init__.py b/redash/cli/__init__.py index 6f0528695c..139acf0099 100644 --- a/redash/cli/__init__.py +++ b/redash/cli/__init__.py @@ -4,14 +4,21 @@ from flask.cli import FlaskGroup, run_command, with_appcontext from rq import Connection -from redash import __version__, create_app, settings, rq_redis_connection -from redash.cli import data_sources, database, groups, organization, queries, users, rq +from redash import __version__, create_app, rq_redis_connection, settings +from redash.cli import ( + data_sources, + database, + groups, + organization, + queries, + rq, + users, +) from redash.monitor import get_status -def create(group): +def create(): app = current_app or create_app() - group.app = app @app.shell_context_processor def shell_context(): @@ -62,25 +69,23 @@ def send_test_mail(email=None): """ Send test message to EMAIL (default: the address you defined in MAIL_DEFAULT_SENDER) """ - from redash import mail from flask_mail import Message + from redash import mail + if email is None: email = settings.MAIL_DEFAULT_SENDER - mail.send( - Message( - subject="Test Message from Redash", recipients=[email], body="Test message." - ) - ) + mail.send(Message(subject="Test Message from Redash", recipients=[email], body="Test message.")) @manager.command("shell") @with_appcontext def shell(): import sys - from ptpython import repl + from flask.globals import _app_ctx_stack + from ptpython import repl app = _app_ctx_stack.top.app diff --git a/redash/cli/data_sources.py b/redash/cli/data_sources.py index 4a94bfd12d..c0843c8e19 100644 --- a/redash/cli/data_sources.py +++ b/redash/cli/data_sources.py @@ -1,6 +1,7 @@ from sys import exit import click +from click.types import convert_type from flask.cli import AppGroup from sqlalchemy.orm.exc import NoResultFound @@ -40,7 +41,7 @@ def list_command(organization=None): ) -@manager.command() +@manager.command(name="list_types") def list_types(): print("Enabled Query Runners:") types = sorted(query_runners.keys()) @@ -139,11 +140,19 @@ def new(name=None, type=None, options=None, organization="default"): else: prompt = "{} (optional)".format(prompt) + _type = types[prop["type"]] + + def value_proc(value): + if value == default_value: + return default_value + return convert_type(_type, default_value)(value) + value = click.prompt( prompt, default=default_value, - type=types[prop["type"]], + type=_type, show_default=False, + value_proc=value_proc, ) if value != default_value: options_obj[k] = value @@ -154,7 +163,7 @@ def new(name=None, type=None, options=None, organization="default"): if not options.is_valid(): print("Error: invalid configuration.") - exit() + exit(1) print( "Creating {} data source ({}) with options:\n{}".format( diff --git a/redash/cli/database.py b/redash/cli/database.py index 546e813a91..3a2fc8e991 100644 --- a/redash/cli/database.py +++ b/redash/cli/database.py @@ -41,7 +41,7 @@ def load_extensions(db): connection.execute(f'CREATE EXTENSION IF NOT EXISTS "{extension}";') -@manager.command() +@manager.command(name="create_tables") def create_tables(): """Create the database tables.""" from redash.models import db @@ -61,7 +61,7 @@ def create_tables(): stamp() -@manager.command() +@manager.command(name="drop_tables") def drop_tables(): """Drop the database tables.""" from redash.models import db diff --git a/redash/cli/groups.py b/redash/cli/groups.py index 101796b599..4272e9c6b1 100644 --- a/redash/cli/groups.py +++ b/redash/cli/groups.py @@ -1,8 +1,8 @@ from sys import exit -from sqlalchemy.orm.exc import NoResultFound -from flask.cli import AppGroup from click import argument, option +from flask.cli import AppGroup +from sqlalchemy.orm.exc import NoResultFound from redash import models @@ -43,7 +43,7 @@ def create(name, permissions=None, organization="default"): exit(1) -@manager.command() +@manager.command(name="change_permissions") @argument("group_id") @option( "--permissions", @@ -119,4 +119,7 @@ def list_command(organization=None): members = models.Group.members(group.id) user_names = [m.name for m in members] - print("Users: {}".format(", ".join(user_names))) + if user_names: + print("Users: {}".format(", ".join(user_names))) + else: + print("Users:") diff --git a/redash/cli/organization.py b/redash/cli/organization.py index 45c73551fc..117f51350b 100644 --- a/redash/cli/organization.py +++ b/redash/cli/organization.py @@ -6,7 +6,7 @@ manager = AppGroup(help="Organization management commands.") -@manager.command() +@manager.command(name="set_google_apps_domains") @argument("domains") def set_google_apps_domains(domains): """ @@ -24,7 +24,7 @@ def set_google_apps_domains(domains): ) -@manager.command() +@manager.command(name="show_google_apps_domains") def show_google_apps_domains(): organization = models.Organization.query.first() print( diff --git a/redash/cli/queries.py b/redash/cli/queries.py index f71bdbabe6..54943dee3c 100644 --- a/redash/cli/queries.py +++ b/redash/cli/queries.py @@ -5,7 +5,7 @@ manager = AppGroup(help="Queries management commands.") -@manager.command() +@manager.command(name="add_tag") @argument("query_id") @argument("tag") def add_tag(query_id, tag): @@ -31,7 +31,7 @@ def add_tag(query_id, tag): print("Tag added.") -@manager.command() +@manager.command(name="remove_tag") @argument("query_id") @argument("tag") def remove_tag(query_id, tag): diff --git a/redash/cli/users.py b/redash/cli/users.py index a6e35a02b6..b06808ceda 100644 --- a/redash/cli/users.py +++ b/redash/cli/users.py @@ -2,8 +2,8 @@ from click import BOOL, argument, option, prompt from flask.cli import AppGroup -from sqlalchemy.orm.exc import NoResultFound from sqlalchemy.exc import IntegrityError +from sqlalchemy.orm.exc import NoResultFound from redash import models from redash.handlers.users import invite_user @@ -26,7 +26,7 @@ def build_groups(org, groups, is_admin): return groups -@manager.command() +@manager.command(name="grant_admin") @argument("email") @option( "--org", @@ -116,7 +116,7 @@ def create( exit(1) -@manager.command() +@manager.command(name="create_root") @argument("email") @argument("name") @option( @@ -155,9 +155,7 @@ def create_root(email, name, google_auth=False, password=None, organization="def exit(1) org_slug = organization - org = models.Organization.query.filter( - models.Organization.slug == org_slug - ).first() + org = models.Organization.query.filter(models.Organization.slug == org_slug).first() if org is None: org = models.Organization(name=org_slug, slug=org_slug, settings={}) diff --git a/redash/handlers/base.py b/redash/handlers/base.py index 26db713003..467b977471 100644 --- a/redash/handlers/base.py +++ b/redash/handlers/base.py @@ -1,19 +1,19 @@ import time - from inspect import isclass -from flask import Blueprint, current_app, request +from flask import Blueprint, current_app, request from flask_login import current_user, login_required from flask_restful import Resource, abort +from sqlalchemy import cast +from sqlalchemy.dialects import postgresql +from sqlalchemy.orm.exc import NoResultFound +from sqlalchemy_utils.functions import sort_query + from redash import settings from redash.authentication import current_org from redash.models import db from redash.tasks import record_event as record_event_task from redash.utils import json_dumps -from sqlalchemy.orm.exc import NoResultFound -from sqlalchemy import cast -from sqlalchemy.dialects import postgresql -from sqlalchemy_utils import sort_query routes = Blueprint( "redash", __name__, template_folder=settings.fix_assets_path("templates") diff --git a/redash/handlers/static.py b/redash/handlers/static.py index 1a02b66379..71f10fedb4 100644 --- a/redash/handlers/static.py +++ b/redash/handlers/static.py @@ -1,6 +1,7 @@ -from flask import render_template, safe_join, send_file - +from flask import render_template, send_file from flask_login import login_required +from werkzeug.utils import safe_join + from redash import settings from redash.handlers import routes from redash.handlers.authentication import base_href @@ -13,7 +14,7 @@ def render_index(): response = render_template("multi_org.html", base_href=base_href()) else: full_path = safe_join(settings.STATIC_ASSETS_PATH, "index.html") - response = send_file(full_path, **dict(cache_timeout=0, conditional=True)) + response = send_file(full_path, **dict(max_age=0, conditional=True)) return response diff --git a/redash/models/base.py b/redash/models/base.py index e2b7e68277..756c8e14bf 100644 --- a/redash/models/base.py +++ b/redash/models/base.py @@ -1,10 +1,10 @@ import functools from flask_sqlalchemy import BaseQuery, SQLAlchemy +from sqlalchemy.dialects import postgresql from sqlalchemy.orm import object_session from sqlalchemy.pool import NullPool -from sqlalchemy_searchable import make_searchable, vectorizer, SearchQueryMixin -from sqlalchemy.dialects import postgresql +from sqlalchemy_searchable import SearchQueryMixin, make_searchable, vectorizer from redash import settings from redash.utils import json_dumps @@ -15,7 +15,7 @@ def apply_driver_hacks(self, app, info, options): options.update(json_serializer=json_dumps) if settings.SQLALCHEMY_ENABLE_POOL_PRE_PING: options.update(pool_pre_ping=True) - super(RedashSQLAlchemy, self).apply_driver_hacks(app, info, options) + return super(RedashSQLAlchemy, self).apply_driver_hacks(app, info, options) def apply_pool_defaults(self, app, options): super(RedashSQLAlchemy, self).apply_pool_defaults(app, options) @@ -25,6 +25,7 @@ def apply_pool_defaults(self, app, options): options["poolclass"] = NullPool # Remove options NullPool does not support: options.pop("max_overflow", None) + return options db = RedashSQLAlchemy(session_options={"expire_on_commit": False}) diff --git a/redash/models/users.py b/redash/models/users.py index 9bbb6e5da6..6aced31a52 100644 --- a/redash/models/users.py +++ b/redash/models/users.py @@ -5,21 +5,20 @@ from functools import reduce from operator import or_ -from flask import current_app as app, url_for, request_started -from flask_login import current_user, AnonymousUserMixin, UserMixin +from flask import current_app as app +from flask import request_started, url_for +from flask_login import AnonymousUserMixin, UserMixin, current_user from passlib.apps import custom_app_context as pwd_context -from sqlalchemy.exc import DBAPIError from sqlalchemy.dialects import postgresql - from sqlalchemy_utils import EmailType from sqlalchemy_utils.models import generic_repr from redash import redis_connection -from redash.utils import generate_token, utcnow, dt_from_timestamp +from redash.utils import dt_from_timestamp, generate_token -from .base import db, Column, GFKBase, key_type, primary_key -from .mixins import TimestampMixin, BelongsToOrgMixin -from .types import json_cast_property, MutableDict, MutableList +from .base import Column, GFKBase, db, key_type, primary_key +from .mixins import BelongsToOrgMixin, TimestampMixin +from .types import MutableDict, MutableList, json_cast_property logger = logging.getLogger(__name__) @@ -87,7 +86,9 @@ class User( email = Column(EmailType) password_hash = Column(db.String(128), nullable=True) group_ids = Column( - "groups", MutableList.as_mutable(postgresql.ARRAY(key_type("Group"))), nullable=True + "groups", + MutableList.as_mutable(postgresql.ARRAY(key_type("Group"))), + nullable=True, ) api_key = Column(db.String(40), default=lambda: generate_token(40), unique=True) diff --git a/redash/version_check.py b/redash/version_check.py index d4f83f6ac8..d28b95cff5 100644 --- a/redash/version_check.py +++ b/redash/version_check.py @@ -1,11 +1,11 @@ import logging + import requests import semver from redash import __version__ as current_version from redash import redis_connection -from redash.models import db, Organization -from redash.utils import json_dumps +from redash.models import Organization, db REDIS_KEY = "new_version_available" diff --git a/requirements.txt b/requirements.txt index f6626253e9..b6cdac45b3 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,23 +1,22 @@ -Flask==1.1.1 -Jinja2==2.11.3 -itsdangerous==1.1.0 -black==19.10b0 -click==6.7 -MarkupSafe==1.1.1 +Flask==2.3.2 +Jinja2==3.1.2 +itsdangerous==2.1.2 +click==8.1.3 +MarkupSafe==2.1.1 pyOpenSSL==19.0.0 httplib2==0.18.1 wtforms==2.2.1 -Flask-RESTful==0.3.7 -Flask-Login==0.4.1 -Flask-SQLAlchemy==2.4.1 +Flask-RESTful==0.3.10 +Flask-Login==0.6.0 +Flask-SQLAlchemy==2.5.1 Flask-Migrate==2.5.2 flask-mail==0.9.1 flask-talisman==0.7.0 Flask-Limiter==0.9.3 -Flask-WTF==0.14.3 +Flask-WTF==1.1.1 passlib==1.7.1 aniso8601==8.0.0 -blinker==1.4 +blinker==1.6.2 psycopg2-binary==2.9.6 python-dateutil==2.8.0 pytz>=2019.3 @@ -58,7 +57,7 @@ gevent==21.12.0 sshtunnel==0.1.5 supervisor==4.1.0 supervisor_checks==0.8.1 -werkzeug==0.16.1 +werkzeug==2.3.3 # Uncomment the requirement for ldap3 if using ldap. # It is not included by default because of the GPL license conflict. # ldap3==2.2.4 diff --git a/requirements_dev.txt b/requirements_dev.txt index a5636fd09b..eba1592bf9 100644 --- a/requirements_dev.txt +++ b/requirements_dev.txt @@ -12,4 +12,4 @@ PyAthena>=1.5.0,<=1.11.5 ptvsd==4.3.2 freezegun==0.3.12 watchdog==0.9.0 -ptpython==3.0.17 +ptpython==3.0.23 diff --git a/tests/__init__.py b/tests/__init__.py index c16cad55a9..89c18f8394 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -1,8 +1,8 @@ -import os import datetime import logging -from unittest import TestCase +import os from contextlib import contextmanager +from unittest import TestCase os.environ["REDASH_REDIS_URL"] = os.environ.get( "REDASH_REDIS_URL", "redis://localhost:6379/0" @@ -25,17 +25,16 @@ from redash import limiter, redis_connection from redash.app import create_app from redash.models import db -from redash.utils import json_dumps, json_loads +from redash.utils import json_dumps from tests.factories import Factory, user_factory - logging.disable(logging.INFO) logging.getLogger("metrics").setLevel(logging.ERROR) def authenticate_request(c, user): with c.session_transaction() as sess: - sess["user_id"] = user.get_id() + sess["_user_id"] = user.get_id() @contextmanager @@ -110,11 +109,13 @@ def make_request( ) return response - def get_request(self, path, org=None, headers=None): + def get_request(self, path, org=None, headers=None, client=None): if org: path = "/{}{}".format(org.slug, path) - return self.client.get(path, headers=headers) + if client is None: + client = self.client + return client.get(path, headers=headers) def post_request(self, path, data=None, org=None, headers=None): if org: diff --git a/tests/handlers/test_alerts.py b/tests/handlers/test_alerts.py index e1449090dd..3988c42704 100644 --- a/tests/handlers/test_alerts.py +++ b/tests/handlers/test_alerts.py @@ -1,6 +1,5 @@ -from tests import BaseTestCase - from redash.models import Alert, AlertSubscription, db +from tests import BaseTestCase class TestAlertResourceGet(BaseTestCase): diff --git a/tests/handlers/test_users.py b/tests/handlers/test_users.py index 3147ae8c98..04664f65a0 100644 --- a/tests/handlers/test_users.py +++ b/tests/handlers/test_users.py @@ -1,7 +1,8 @@ -from redash import models, settings -from tests import BaseTestCase from mock import patch +from redash import models +from tests import BaseTestCase + class TestUserListResourcePost(BaseTestCase): def test_returns_403_for_non_admin(self): @@ -357,7 +358,7 @@ def test_changing_email_ends_any_other_sessions_of_current_user(self): # visit profile page self.make_request("get", "/api/users/{}".format(self.factory.user.id)) with c.session_transaction() as sess: - previous = sess["user_id"] + previous = sess["_user_id"] # change e-mail address - this will result in a new `user_id` value inside the session self.make_request( @@ -366,10 +367,13 @@ def test_changing_email_ends_any_other_sessions_of_current_user(self): data={"email": "john@doe.com"}, ) + with self.app.test_client() as c: # force the old `user_id`, simulating that the user is logged in from another browser with c.session_transaction() as sess: - sess["user_id"] = previous - rv = self.get_request("/api/users/{}".format(self.factory.user.id)) + sess["_user_id"] = previous + rv = self.get_request( + "/api/users/{}".format(self.factory.user.id), client=c + ) self.assertEqual(rv.status_code, 404) @@ -378,7 +382,7 @@ def test_changing_email_does_not_end_current_session(self): with self.client as c: with c.session_transaction() as sess: - previous = sess["user_id"] + previous = sess["_user_id"] self.make_request( "post", @@ -388,7 +392,7 @@ def test_changing_email_does_not_end_current_session(self): with self.client as c: with c.session_transaction() as sess: - current = sess["user_id"] + current = sess["_user_id"] # make sure the session's `user_id` has changed to reflect the new identity, thus not logging the user out self.assertNotEqual(previous, current) diff --git a/tests/test_authentication.py b/tests/test_authentication.py index 91be52ea76..d5fb43c9c5 100644 --- a/tests/test_authentication.py +++ b/tests/test_authentication.py @@ -4,6 +4,8 @@ from flask import request from mock import patch +from sqlalchemy.orm.exc import NoResultFound + from redash import models, settings from redash.authentication import ( api_key_load_user_from_request, @@ -11,9 +13,10 @@ hmac_load_user_from_request, sign, ) -from redash.authentication.google_oauth import create_and_login_user, verify_profile -from redash.utils import utcnow -from sqlalchemy.orm.exc import NoResultFound +from redash.authentication.google_oauth import ( + create_and_login_user, + verify_profile, +) from tests import BaseTestCase @@ -264,9 +267,7 @@ def test_no_next_param(self): data={"email": self.user.email, "password": self.password}, org=self.factory.org, ) - self.assertEqual( - response.location, "http://localhost/{}/".format(self.user.org.slug) - ) + self.assertEqual(response.location, "/{}/".format(self.user.org.slug)) def test_simple_path_in_next_param(self): response = self.post_request( @@ -274,7 +275,7 @@ def test_simple_path_in_next_param(self): data={"email": self.user.email, "password": self.password}, org=self.factory.org, ) - self.assertEqual(response.location, "http://localhost/default/queries") + self.assertEqual(response.location, "queries") def test_starts_scheme_url_in_next_param(self): response = self.post_request( @@ -282,7 +283,7 @@ def test_starts_scheme_url_in_next_param(self): data={"email": self.user.email, "password": self.password}, org=self.factory.org, ) - self.assertEqual(response.location, "http://localhost/default/") + self.assertEqual(response.location, "./") def test_without_scheme_url_in_next_param(self): response = self.post_request( @@ -290,7 +291,7 @@ def test_without_scheme_url_in_next_param(self): data={"email": self.user.email, "password": self.password}, org=self.factory.org, ) - self.assertEqual(response.location, "http://localhost/default/") + self.assertEqual(response.location, "./") def test_without_scheme_with_path_url_in_next_param(self): response = self.post_request( @@ -298,7 +299,7 @@ def test_without_scheme_with_path_url_in_next_param(self): data={"email": self.user.email, "password": self.password}, org=self.factory.org, ) - self.assertEqual(response.location, "http://localhost/queries") + self.assertEqual(response.location, "/queries") class TestRemoteUserAuth(BaseTestCase): diff --git a/tests/test_cli.py b/tests/test_cli.py index 537c83d03d..670ec76d18 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -1,12 +1,13 @@ -import mock import textwrap + +import mock from click.testing import CliRunner -from tests import BaseTestCase -from redash.utils.configuration import ConfigurationContainer -from redash.query_runner import query_runners from redash.cli import manager from redash.models import DataSource, Group, Organization, User, db +from redash.query_runner import query_runners +from redash.utils.configuration import ConfigurationContainer +from tests import BaseTestCase class DataSourceCommandTests(BaseTestCase): @@ -299,21 +300,21 @@ def test_list(self): Type: builtin Organization: default Permissions: [admin,super_admin] - Users: + Users: -------------------- Id: 4 Name: agroup Type: regular Organization: default Permissions: [list_dashboards] - Users: + Users: -------------------- Id: 5 Name: bgroup Type: regular Organization: default Permissions: [list_dashboards] - Users: + Users: -------------------- Id: 2 Name: default @@ -327,7 +328,7 @@ def test_list(self): Type: regular Organization: default Permissions: [list_dashboards] - Users: + Users: """ self.assertMultiLineEqual(result.output, textwrap.dedent(output).lstrip()) diff --git a/tests/test_handlers.py b/tests/test_handlers.py index 130e14fa04..fc7156fbb0 100644 --- a/tests/test_handlers.py +++ b/tests/test_handlers.py @@ -1,9 +1,9 @@ from flask_login import current_user from funcy import project from mock import patch -from tests import BaseTestCase, authenticated_user from redash import models, settings +from tests import BaseTestCase, authenticated_user class AuthenticationTestMixin(object): @@ -22,7 +22,7 @@ class TestAuthentication(BaseTestCase): def test_responds_with_success_for_signed_in_user(self): with self.client as c: with c.session_transaction() as sess: - sess["user_id"] = self.factory.user.get_id() + sess["_user_id"] = self.factory.user.get_id() rv = self.client.get("/default/") self.assertEqual(200, rv.status_code) @@ -34,7 +34,7 @@ def test_redirects_for_nonsigned_in_user(self): def test_redirects_for_invalid_session_identifier(self): with self.client as c: with c.session_transaction() as sess: - sess["user_id"] = 100 + sess["_user_id"] = 100 rv = self.client.get("/default/") self.assertEqual(302, rv.status_code) @@ -186,7 +186,7 @@ def test_submit_correct_user_and_password_with_next(self): data={"email": user.email, "password": "password"}, ) self.assertEqual(rv.status_code, 302) - self.assertEqual(rv.location, "http://localhost/test") + self.assertEqual(rv.location, "/test") login_user_mock.assert_called_with(user, remember=False) def test_submit_incorrect_user(self): @@ -244,7 +244,9 @@ def test_correct_user_and_password_when_password_login_disabled(self): "/default/login", data={"email": user.email, "password": "password"} ) self.assertEqual(rv.status_code, 200) - self.assertIn("Password login is not enabled for your organization", str(rv.data)) + self.assertIn( + "Password login is not enabled for your organization", str(rv.data) + ) class TestLogout(BaseTestCase): From 6b13d0ad9616cdb185adeab7c2c77dc3fc8703f1 Mon Sep 17 00:00:00 2001 From: Jun Date: Sat, 8 Jul 2023 07:52:49 +0900 Subject: [PATCH 084/274] fixed importlib-resources==5.13.0 (#6155) Signed-off-by: Ye Sijun --- requirements.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/requirements.txt b/requirements.txt index b6cdac45b3..4dcecbac9c 100644 --- a/requirements.txt +++ b/requirements.txt @@ -64,3 +64,4 @@ werkzeug==2.3.3 Authlib==0.15.5 advocate==1.0.0 urllib3==1.25.11 +importlib-resources==5.13.0 From cdd4849f9609ebb5e30332209963007d417d30c1 Mon Sep 17 00:00:00 2001 From: Jesse Date: Fri, 7 Jul 2023 21:02:49 -0500 Subject: [PATCH 085/274] Install python dependencies one-by-one. Don't exit on failures. (#5788) Cat code taken from https://stackoverflow.com/a/54053100 --- Dockerfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 867aedf1f0..97ff9b831e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -91,7 +91,8 @@ RUN pip install pip==20.2.4; # We first copy only the requirements file, to avoid rebuilding on every file change. COPY requirements_all_ds.txt ./ -RUN if [ "x$skip_ds_deps" = "x" ] ; then pip install -r requirements_all_ds.txt ; else echo "Skipping pip install -r requirements_all_ds.txt" ; fi +RUN if [ "x$skip_ds_deps" = "x" ] ; then cat requirements_all_ds.txt | sed -e '/^\s*#.*$/d' -e '/^\s*$/d' | xargs -n 1 pip install || true ; else echo "Skipping pip install -r requirements_all_ds.txt" ; fi + COPY requirements_dev.txt ./ RUN if [ "x$skip_dev_deps" = "x" ] ; then pip install -r requirements_dev.txt ; fi From afef3dc6d4d17b481d8c6e7e7654a80718378a90 Mon Sep 17 00:00:00 2001 From: Beniamin Date: Sat, 8 Jul 2023 05:47:30 +0300 Subject: [PATCH 086/274] allow ssl connections for impala runner (#5850) There is no possibility to use ssl connections for impala runner. Based on response here: https://discuss.redash.io/t/ssl-for-impala-use-ssl-true-issues-being-added-to-connect/3741/3 adding a ssl parameter in connector config should solve this issue. --- redash/query_runner/impala_ds.py | 1 + 1 file changed, 1 insertion(+) diff --git a/redash/query_runner/impala_ds.py b/redash/query_runner/impala_ds.py index 9981586142..631fa5e0cb 100644 --- a/redash/query_runner/impala_ds.py +++ b/redash/query_runner/impala_ds.py @@ -53,6 +53,7 @@ def configuration_schema(cls): }, "database": {"type": "string"}, "use_ldap": {"type": "boolean"}, + "use_ssl": {"type": "boolean"}, "ldap_user": {"type": "string"}, "ldap_password": {"type": "string"}, "timeout": {"type": "number"}, From 537d153986b83d299961e94caab581dd69f09923 Mon Sep 17 00:00:00 2001 From: Jun Date: Sat, 8 Jul 2023 12:00:36 +0900 Subject: [PATCH 087/274] CI: add test_all_deps on docker build (#6152) * add test_all_deps on docker build Signed-off-by: Ye Sijun * upgrade pip version Signed-off-by: Ye Sijun --------- Signed-off-by: Ye Sijun --- .github/workflows/ci.yml | 2 +- Dockerfile | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6635b1c82e..89db44eaa0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -34,7 +34,7 @@ jobs: - name: Build Docker Images run: | set -x - docker-compose build --build-arg skip_ds_deps=true --build-arg skip_frontend_build=true + docker-compose build --build-arg test_all_deps=true --build-arg skip_frontend_build=true docker-compose up -d sleep 10 - name: Create Test Database diff --git a/Dockerfile b/Dockerfile index 97ff9b831e..84d9b55ef5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -33,6 +33,8 @@ EXPOSE 5000 ARG skip_ds_deps # Controls whether to install dev dependencies. ARG skip_dev_deps +# Controls whether to install all dependencies for testing. +ARG test_all_deps RUN useradd --create-home redash @@ -86,8 +88,7 @@ WORKDIR /app ENV PIP_DISABLE_PIP_VERSION_CHECK=1 ENV PIP_NO_CACHE_DIR=1 -# rollback pip version to avoid legacy resolver problem -RUN pip install pip==20.2.4; +RUN pip install pip==23.1.2; # We first copy only the requirements file, to avoid rebuilding on every file change. COPY requirements_all_ds.txt ./ @@ -100,6 +101,8 @@ RUN if [ "x$skip_dev_deps" = "x" ] ; then pip install -r requirements_dev.txt ; COPY requirements.txt ./ RUN pip install -r requirements.txt +RUN if [ "x$test_all_deps" != "x" ] ; then pip3 install -r requirements.txt -r requirements_dev.txt -r requirements_all_ds.txt ; fi + COPY --chown=redash . /app COPY --from=frontend-builder --chown=redash /frontend/client/dist /app/client/dist RUN chown redash /app From c775eedec1ec511db6a5e6e38c343ac8f0407dbd Mon Sep 17 00:00:00 2001 From: wuqingfeng234 <7352563+wuqingfeng234@users.noreply.github.com> Date: Sun, 9 Jul 2023 10:12:37 +0800 Subject: [PATCH 088/274] change the version of greenlet and gevent to fit python10 (#5849) Co-authored-by: Jun --- requirements.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/requirements.txt b/requirements.txt index 4dcecbac9c..b9d528b48a 100644 --- a/requirements.txt +++ b/requirements.txt @@ -31,7 +31,7 @@ pyparsing==2.3.0 SQLAlchemy-Utils==0.34.2 sqlparse==0.3.0 statsd==3.3.0 -greenlet==1.1.2 +greenlet==1.1.3 gunicorn==20.0.4 rq==1.5.0 rq-scheduler==0.9.1 @@ -53,7 +53,7 @@ user-agents==2.0 maxminddb-geolite2==2018.703 pypd==1.1.0 disposable-email-domains>=0.0.52 -gevent==21.12.0 +gevent==22.10.1 sshtunnel==0.1.5 supervisor==4.1.0 supervisor_checks==0.8.1 From 5b3e47dc0fce4e0485d586c1ccfd931516e3c4e7 Mon Sep 17 00:00:00 2001 From: Jun Date: Mon, 10 Jul 2023 10:30:52 +0900 Subject: [PATCH 089/274] update ci badge (#6157) Signed-off-by: Ye Sijun --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 83b528cb9b..fde2a86684 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ [![Documentation](https://img.shields.io/badge/docs-redash.io/help-brightgreen.svg)](https://redash.io/help/) [![Datree](https://s3.amazonaws.com/catalog.static.datree.io/datree-badge-20px.svg)](https://datree.io/?src=badge) -[![Build Status](https://circleci.com/gh/getredash/redash.png?style=shield&circle-token=8a695aa5ec2cbfa89b48c275aea298318016f040)](https://circleci.com/gh/getredash/redash/tree/master) +[![GitHub Build](https://github.com/getredash/redash/actions/workflows/ci.yml/badge.svg)](https://github.com/getredash/redash/actions) Redash is designed to enable anyone, regardless of the level of technical sophistication, to harness the power of data big and small. SQL users leverage Redash to explore, query, visualize, and share data from any data sources. Their work in turn enables anybody in their organization to use the data. Every day, millions of users at thousands of organizations around the world use Redash to develop insights and make data-driven decisions. From 5af8764c109e0f32b8750ca7021cee34817e35a7 Mon Sep 17 00:00:00 2001 From: Jun Date: Mon, 10 Jul 2023 16:46:41 +0900 Subject: [PATCH 090/274] upgrade dev deps (#6158) Signed-off-by: Ye Sijun --- requirements_dev.txt | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/requirements_dev.txt b/requirements_dev.txt index eba1592bf9..9330e4508d 100644 --- a/requirements_dev.txt +++ b/requirements_dev.txt @@ -1,15 +1,8 @@ -pytest==5.2.1 -pytest-cov==2.8.1 -coverage==4.5.4 -mock==3.0.5 - -# PyMongo and Athena dependencies are needed for some of the unit tests: -# (this is not perfect and we should resolve this in a different way) -pymongo[srv,tls]==4.3.3 -boto3>=1.10.0,<1.11.0 -botocore>=1.13,<1.14.0 -PyAthena>=1.5.0,<=1.11.5 +pytest==7.4.0 +pytest-cov==4.1.0 +coverage==7.2.7 +mock==5.0.2 ptvsd==4.3.2 -freezegun==0.3.12 +freezegun==1.2.1 watchdog==0.9.0 ptpython==3.0.23 From 24fe1dd121f3d517ec175e2716544341fc59925e Mon Sep 17 00:00:00 2001 From: Jun Date: Mon, 10 Jul 2023 17:21:03 +0900 Subject: [PATCH 091/274] add pre-commit (#6156) Signed-off-by: Ye Sijun --- .pre-commit-config.yaml | 10 ++++++++++ pyproject.toml | 18 ++++++++++++++++++ requirements_dev.txt | 1 + 3 files changed, 29 insertions(+) create mode 100644 .pre-commit-config.yaml create mode 100644 pyproject.toml diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 0000000000..8fc1b0d323 --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,10 @@ +repos: + - repo: https://github.com/PyCQA/isort + rev: 5.12.0 + hooks: + - id: isort + - repo: https://github.com/psf/black + rev: 23.1.0 + hooks: + - id: black + language_version: python3 diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000000..70e006b5ce --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,18 @@ +[project] +requires-python = ">=3.8" + +[tool.black] +target-version = ['py38'] +line-length = 119 +force-exclude = ''' +/( + migrations +)/ +''' + +[tool.isort] +py_version = 38 +multi_line_output = 3 +include_trailing_comma = true +use_parentheses = true +skip = "migrations" diff --git a/requirements_dev.txt b/requirements_dev.txt index 9330e4508d..b17774e217 100644 --- a/requirements_dev.txt +++ b/requirements_dev.txt @@ -6,3 +6,4 @@ ptvsd==4.3.2 freezegun==1.2.1 watchdog==0.9.0 ptpython==3.0.23 +pre-commit==3.3.3 From a45a95af68f3e5dc928f053f3162e9651874fb35 Mon Sep 17 00:00:00 2001 From: Jun Date: Mon, 10 Jul 2023 18:11:28 +0900 Subject: [PATCH 092/274] Updated rq-scheduler to 0.10.0 (#6160) Co-authored-by: Ardiea --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index b9d528b48a..6e7e1f3f9d 100644 --- a/requirements.txt +++ b/requirements.txt @@ -34,7 +34,7 @@ statsd==3.3.0 greenlet==1.1.3 gunicorn==20.0.4 rq==1.5.0 -rq-scheduler==0.9.1 +rq-scheduler==0.10.0 jsonschema==3.1.1 RestrictedPython==5.0 pysaml2==6.5.0 From 26010f793e6ae8cbd883a49cc31b4360e8eb0356 Mon Sep 17 00:00:00 2001 From: Justin Clift Date: Mon, 10 Jul 2023 19:42:14 +1000 Subject: [PATCH 093/274] Update watchdog to version 3.0.0, to workaround reported error (#6161) https://github.com/getredash/redash/discussions/6131#discussioncomment-6399367 --- requirements_dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements_dev.txt b/requirements_dev.txt index b17774e217..0c674efcae 100644 --- a/requirements_dev.txt +++ b/requirements_dev.txt @@ -4,6 +4,6 @@ coverage==7.2.7 mock==5.0.2 ptvsd==4.3.2 freezegun==1.2.1 -watchdog==0.9.0 +watchdog==3.0.0 ptpython==3.0.23 pre-commit==3.3.3 From 90cd27fa25889b18b28f08b36fa845682100e39c Mon Sep 17 00:00:00 2001 From: Justin Clift Date: Tue, 11 Jul 2023 02:17:09 +1000 Subject: [PATCH 094/274] Use automatic upgrading PostgreSQL 15 docker image (#6162) Also adds the POSTGRES_HOST_AUTH_METHOD environment variable to the CI docker compose files. Modern PostgreSQL docker images need it, at least as they're used by our CI. --- .ci/docker-compose.ci.yml | 7 +++++-- .ci/docker-compose.cypress.yml | 7 +++++-- docker-compose.yml | 2 +- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/.ci/docker-compose.ci.yml b/.ci/docker-compose.ci.yml index f607e7534a..6ec096ca3f 100644 --- a/.ci/docker-compose.ci.yml +++ b/.ci/docker-compose.ci.yml @@ -12,12 +12,15 @@ services: PYTHONUNBUFFERED: 0 REDASH_LOG_LEVEL: "INFO" REDASH_REDIS_URL: "redis://redis:6379/0" - REDASH_DATABASE_URL: "postgresql://postgres@postgres/postgres" + POSTGRES_PASSWORD: "FmTKs5vX52ufKR1rd8tn4MoSP7zvCJwb" + REDASH_DATABASE_URL: "postgresql://postgres:FmTKs5vX52ufKR1rd8tn4MoSP7zvCJwb@postgres/postgres" REDASH_COOKIE_SECRET: "2H9gNG9obnAQ9qnR9BDTQUph6CbXKCzF" redis: image: redis:3.0-alpine restart: unless-stopped postgres: - image: postgres:9.5.6-alpine + image: pgautoupgrade/pgautoupgrade:dev command: "postgres -c fsync=off -c full_page_writes=off -c synchronous_commit=OFF" restart: unless-stopped + environment: + POSTGRES_HOST_AUTH_METHOD: "trust" diff --git a/.ci/docker-compose.cypress.yml b/.ci/docker-compose.cypress.yml index 2a6feaf261..f409304b8c 100644 --- a/.ci/docker-compose.cypress.yml +++ b/.ci/docker-compose.cypress.yml @@ -9,7 +9,8 @@ x-redash-service: &redash-service x-redash-environment: &redash-environment REDASH_LOG_LEVEL: "INFO" REDASH_REDIS_URL: "redis://redis:6379/0" - REDASH_DATABASE_URL: "postgresql://postgres@postgres/postgres" + POSTGRES_PASSWORD: "FmTKs5vX52ufKR1rd8tn4MoSP7zvCJwb" + REDASH_DATABASE_URL: "postgresql://postgres:FmTKs5vX52ufKR1rd8tn4MoSP7zvCJwb@postgres/postgres" REDASH_RATELIMIT_ENABLED: "false" REDASH_ENFORCE_CSRF: "true" REDASH_COOKIE_SECRET: "2H9gNG9obnAQ9qnR9BDTQUph6CbXKCzF" @@ -67,6 +68,8 @@ services: image: redis:3.0-alpine restart: unless-stopped postgres: - image: postgres:9.5.6-alpine + image: pgautoupgrade/pgautoupgrade:dev command: "postgres -c fsync=off -c full_page_writes=off -c synchronous_commit=OFF" restart: unless-stopped + environment: + POSTGRES_HOST_AUTH_METHOD: "trust" diff --git a/docker-compose.yml b/docker-compose.yml index 4c7e20148e..c53d2b01df 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -52,7 +52,7 @@ services: image: redis:3-alpine restart: unless-stopped postgres: - image: postgres:9.5-alpine + image: pgautoupgrade/pgautoupgrade:dev ports: - "15432:5432" # The following turns the DB into less durable, but gains significant performance improvements for the tests run (x3 From 11c50567c3091d463e1f105a01e54e4d84b313e0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 11 Jul 2023 04:42:58 +1000 Subject: [PATCH 095/274] Bump protobuf from 3.17.3 to 3.18.3 (#5829) Bumps [protobuf](https://github.com/protocolbuffers/protobuf) from 3.17.3 to 3.18.3. - [Release notes](https://github.com/protocolbuffers/protobuf/releases) - [Changelog](https://github.com/protocolbuffers/protobuf/blob/main/generate_changelog.py) - [Commits](https://github.com/protocolbuffers/protobuf/compare/v3.17.3...v3.18.3) --- updated-dependencies: - dependency-name: protobuf dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Justin Clift --- requirements_all_ds.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements_all_ds.txt b/requirements_all_ds.txt index c180fef3ba..6f931cd22c 100644 --- a/requirements_all_ds.txt +++ b/requirements_all_ds.txt @@ -1,5 +1,5 @@ google-api-python-client==1.7.11 -protobuf==3.17.3 +protobuf==3.18.3 gspread==3.1.0 impyla==0.16.0 influxdb==5.2.3 From bc9460b04c5819adb6682e16289f438bd2b47069 Mon Sep 17 00:00:00 2001 From: 645775992 <645775992@qq.com> Date: Tue, 11 Jul 2023 02:45:47 +0800 Subject: [PATCH 096/274] update passlib 1.7.1 to 1.7.3 (#5855) Co-authored-by: Justin Clift --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 6e7e1f3f9d..cfa869d493 100644 --- a/requirements.txt +++ b/requirements.txt @@ -14,7 +14,7 @@ flask-mail==0.9.1 flask-talisman==0.7.0 Flask-Limiter==0.9.3 Flask-WTF==1.1.1 -passlib==1.7.1 +passlib==1.7.3 aniso8601==8.0.0 blinker==1.6.2 psycopg2-binary==2.9.6 From e639a789e79fbddf567f5a1a1b6e9709308e21cd Mon Sep 17 00:00:00 2001 From: Kirill Lyubchenko Date: Mon, 10 Jul 2023 12:16:32 -0700 Subject: [PATCH 097/274] Updated vertica-python to 1.1.1 (#5807) Co-authored-by: Justin Clift --- requirements_all_ds.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements_all_ds.txt b/requirements_all_ds.txt index 6f931cd22c..f681c98664 100644 --- a/requirements_all_ds.txt +++ b/requirements_all_ds.txt @@ -7,7 +7,7 @@ mysqlclient==2.1.1 oauth2client==4.1.3 pyhive==0.6.1 pymongo[tls,srv]==4.3.3 -vertica-python==0.9.5 +vertica-python==1.1.1 td-client==1.0.0 pymssql==2.1.5 boto3>=1.10.0,<1.11.0 From 29c21db813e11e7d026e49d075ed0d46505d29b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juan=20Jos=C3=A9=20Fuchs?= Date: Mon, 10 Jul 2023 15:17:18 -0400 Subject: [PATCH 098/274] fix #5811: passing server,port to MS ODBC driver (#5812) Co-authored-by: Justin Clift --- redash/query_runner/mssql_odbc.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/redash/query_runner/mssql_odbc.py b/redash/query_runner/mssql_odbc.py index 2210473e4f..866b4abc66 100644 --- a/redash/query_runner/mssql_odbc.py +++ b/redash/query_runner/mssql_odbc.py @@ -114,9 +114,9 @@ def run_query(self, query, user): port = self.configuration.get("port", 1433) charset = self.configuration.get("charset", "UTF-8") - connection_string_fmt = "DRIVER={{ODBC Driver 17 for SQL Server}};PORT={};SERVER={};DATABASE={};UID={};PWD={}" + connection_string_fmt = "DRIVER={{ODBC Driver 17 for SQL Server}};SERVER={},{};DATABASE={};UID={};PWD={}" connection_string = connection_string_fmt.format( - port, server, db, user, password + server, port, db, user, password ) if self.configuration.get("use_ssl", False): From 99be51ebc510a22cd7693414db699b5fe5defc2c Mon Sep 17 00:00:00 2001 From: Justin Clift Date: Tue, 11 Jul 2023 05:43:15 +1000 Subject: [PATCH 099/274] Move to Redis 7 for our development and CI docker compose (#6164) --- .ci/docker-compose.ci.yml | 2 +- .ci/docker-compose.cypress.yml | 2 +- docker-compose.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.ci/docker-compose.ci.yml b/.ci/docker-compose.ci.yml index 6ec096ca3f..fcec357635 100644 --- a/.ci/docker-compose.ci.yml +++ b/.ci/docker-compose.ci.yml @@ -16,7 +16,7 @@ services: REDASH_DATABASE_URL: "postgresql://postgres:FmTKs5vX52ufKR1rd8tn4MoSP7zvCJwb@postgres/postgres" REDASH_COOKIE_SECRET: "2H9gNG9obnAQ9qnR9BDTQUph6CbXKCzF" redis: - image: redis:3.0-alpine + image: redis:7-alpine restart: unless-stopped postgres: image: pgautoupgrade/pgautoupgrade:dev diff --git a/.ci/docker-compose.cypress.yml b/.ci/docker-compose.cypress.yml index f409304b8c..1d3d5bc39e 100644 --- a/.ci/docker-compose.cypress.yml +++ b/.ci/docker-compose.cypress.yml @@ -65,7 +65,7 @@ services: CYPRESS_PROJECT_ID: ${CYPRESS_PROJECT_ID} CYPRESS_RECORD_KEY: ${CYPRESS_RECORD_KEY} redis: - image: redis:3.0-alpine + image: redis:7-alpine restart: unless-stopped postgres: image: pgautoupgrade/pgautoupgrade:dev diff --git a/docker-compose.yml b/docker-compose.yml index c53d2b01df..42444c0485 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -49,7 +49,7 @@ services: <<: *redash-environment PYTHONUNBUFFERED: 0 redis: - image: redis:3-alpine + image: redis:7-alpine restart: unless-stopped postgres: image: pgautoupgrade/pgautoupgrade:dev From 89e7669ec167b2067feeedc695a82b08b7468c36 Mon Sep 17 00:00:00 2001 From: Justin Clift Date: Tue, 11 Jul 2023 07:03:48 +1000 Subject: [PATCH 100/274] Update pysaml to last version of 6.5.x series for bettter error handling (#6165) Co-authored-by: Timothy Der --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index cfa869d493..e3c1f6c894 100644 --- a/requirements.txt +++ b/requirements.txt @@ -37,7 +37,7 @@ rq==1.5.0 rq-scheduler==0.10.0 jsonschema==3.1.1 RestrictedPython==5.0 -pysaml2==6.5.0 +pysaml2==6.5.2 python-dotenv==0.19.2 funcy==1.13 sentry-sdk>=0.14.3,<0.15.0 From c922521dbd089c9cd451e9c7f5b960fcad427950 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 Jul 2023 22:30:22 +0000 Subject: [PATCH 101/274] Bump restrictedpython from 5.0 to 6.1 (#6166) Bumps [restrictedpython](https://github.com/zopefoundation/RestrictedPython) from 5.0 to 6.1. - [Changelog](https://github.com/zopefoundation/RestrictedPython/blob/6.1/CHANGES.rst) - [Commits](https://github.com/zopefoundation/RestrictedPython/compare/5.0...6.1) --- updated-dependencies: - dependency-name: restrictedpython dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index e3c1f6c894..650fcc85d2 100644 --- a/requirements.txt +++ b/requirements.txt @@ -36,7 +36,7 @@ gunicorn==20.0.4 rq==1.5.0 rq-scheduler==0.10.0 jsonschema==3.1.1 -RestrictedPython==5.0 +RestrictedPython==6.1 pysaml2==6.5.2 python-dotenv==0.19.2 funcy==1.13 From b4801dd2b84c478ca8d4522d65307a35457d1ec8 Mon Sep 17 00:00:00 2001 From: Justin Clift Date: Tue, 11 Jul 2023 14:56:11 +1000 Subject: [PATCH 102/274] Update SQLAlchemy to highest 1.3.x release (#6169) Moving to SQLAlchemy 1.4 / 2.0 seems like it'll be a substantial project: * https://docs.sqlalchemy.org/en/14/changelog/migration_14.html * https://docs.sqlalchemy.org/en/14/changelog/migration_20.html --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 650fcc85d2..9a1fb66c68 100644 --- a/requirements.txt +++ b/requirements.txt @@ -23,7 +23,7 @@ pytz>=2019.3 PyYAML==5.4 redis==4.4.4 requests==2.31.0 -SQLAlchemy==1.3.10 +SQLAlchemy==1.3.24 # We can't upgrade SQLAlchemy-Searchable version as newer versions require PostgreSQL > 9.6, but we target older versions at the moment. SQLAlchemy-Searchable==0.10.6 # We need to pin the version of pyparsing, as newer versions break SQLAlchemy-Searchable-10.0.6 (newer versions no longer depend on it) From 1b97d9ce04af525ad2d9c12d8afb4341d4a9360a Mon Sep 17 00:00:00 2001 From: Jun Date: Tue, 11 Jul 2023 14:33:07 +0900 Subject: [PATCH 103/274] add codecov action (#6168) Signed-off-by: Ye Sijun --- .github/workflows/ci.yml | 4 +++- codecov.yml | 6 ++++++ 2 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 codecov.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 89db44eaa0..76fb699f5a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -42,12 +42,14 @@ jobs: - name: List Enabled Query Runners run: docker-compose -p redash run --rm redash manage ds list_types - name: Run Tests - run: docker-compose -p redash run --name tests redash tests --junitxml=junit.xml --cov-report xml --cov=redash --cov-config .coveragerc tests/ + run: docker-compose -p redash run --name tests redash tests --junitxml=junit.xml --cov-report=xml --cov=redash --cov-config=.coveragerc tests/ - name: Copy Test Results run: | mkdir -p /tmp/test-results/unit-tests docker cp tests:/app/coverage.xml ./coverage.xml docker cp tests:/app/junit.xml /tmp/test-results/unit-tests/results.xml + - name: Upload coverage reports to Codecov + uses: codecov/codecov-action@v3 - name: Store Test Results uses: actions/upload-artifact@v3 with: diff --git a/codecov.yml b/codecov.yml new file mode 100644 index 0000000000..8742d9f869 --- /dev/null +++ b/codecov.yml @@ -0,0 +1,6 @@ +comment: + layout: " diff, flags, files" + behavior: default + require_changes: false + require_base: true + require_head: true From a7681a688ec8dce01af33b356be96f40c3cef13d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 11 Jul 2023 14:44:17 +0900 Subject: [PATCH 104/274] Bump semver from 5.6.0 to 5.7.2 (#6171) Bumps [semver](https://github.com/npm/node-semver) from 5.6.0 to 5.7.2. - [Release notes](https://github.com/npm/node-semver/releases) - [Changelog](https://github.com/npm/node-semver/blob/v5.7.2/CHANGELOG.md) - [Commits](https://github.com/npm/node-semver/compare/v5.6.0...v5.7.2) --- updated-dependencies: - dependency-name: semver dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 39 ++++++++++++++++++++++++--------------- 1 file changed, 24 insertions(+), 15 deletions(-) diff --git a/yarn.lock b/yarn.lock index 87dda7c0ec..e40984188d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10004,6 +10004,13 @@ lru-cache@^5.1.1: dependencies: yallist "^3.0.2" +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + lz-string@^1.4.4: version "1.4.4" resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.4.4.tgz#c0d8eaf36059f705796e1e344811cf4c498d3a26" @@ -14052,30 +14059,27 @@ selfsigned@^1.10.7: dependencies: node-forge "^0.10.0" -"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: - version "5.6.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" - integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== +"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: + version "5.7.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" + integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== semver@7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== -semver@^5.3.0: - version "5.7.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b" - integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA== - semver@^6.0.0, semver@^6.1.2, semver@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + version "6.3.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== semver@^7.3.2: - version "7.3.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" - integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== + version "7.5.4" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" + integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== + dependencies: + lru-cache "^6.0.0" send@0.16.2: version "0.16.2" @@ -16653,6 +16657,11 @@ yallist@^3.0.0, yallist@^3.0.2, yallist@^3.1.1: resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + yargs-parser@^11.1.1: version "11.1.1" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4" From a944658265470e807a8d9e9f58a8ac6463de1ca4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 11 Jul 2023 14:44:28 +0900 Subject: [PATCH 105/274] Bump semver from 5.7.1 to 5.7.2 in /viz-lib (#6170) Bumps [semver](https://github.com/npm/node-semver) from 5.7.1 to 5.7.2. - [Release notes](https://github.com/npm/node-semver/releases) - [Changelog](https://github.com/npm/node-semver/blob/v5.7.2/CHANGELOG.md) - [Commits](https://github.com/npm/node-semver/compare/v5.7.1...v5.7.2) --- updated-dependencies: - dependency-name: semver dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- viz-lib/yarn.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/viz-lib/yarn.lock b/viz-lib/yarn.lock index 550909e4ef..eef69cc9c4 100644 --- a/viz-lib/yarn.lock +++ b/viz-lib/yarn.lock @@ -8918,9 +8918,9 @@ schema-utils@^3.1.1, schema-utils@^3.2.0: ajv-keywords "^3.5.2" "semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.6.0, semver@^5.7.0, semver@^5.7.1: - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + version "5.7.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" + integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== semver@7.0.0: version "7.0.0" @@ -8928,14 +8928,14 @@ semver@7.0.0: integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== semver@^6.0.0, semver@^6.2.0, semver@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + version "6.3.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== semver@^7.2.1: - version "7.3.4" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97" - integrity sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw== + version "7.5.4" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" + integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== dependencies: lru-cache "^6.0.0" From 7f40837d3fb5c339768321bc0723ebb333d5174d Mon Sep 17 00:00:00 2001 From: Justin Clift Date: Tue, 11 Jul 2023 16:33:25 +1000 Subject: [PATCH 106/274] Add a make target to generate .env file for development (#6172) --- Makefile | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Makefile b/Makefile index f83a056af4..a17c3cecc1 100644 --- a/Makefile +++ b/Makefile @@ -22,6 +22,9 @@ clean: down: docker-compose down +env: + printf "REDASH_COOKIE_SECRET=`pwgen -1s 32`\nREDASH_SECRET_KEY=`pwgen -1s 32`\n" >> .env + tests: docker-compose run server tests From 9b2f635692741396def5b78e0ba0d564a852de6f Mon Sep 17 00:00:00 2001 From: Jun Date: Tue, 11 Jul 2023 18:13:54 +0900 Subject: [PATCH 107/274] format code by black and isort (#6167) Signed-off-by: Ye Sijun --- .github/workflows/ci.yml | 6 +- bin/flake8_tests.sh | 2 +- bin/get_changes.py | 25 +- bin/release_manager.py | 93 +++-- bin/upgrade | 96 ++--- manage.py | 2 +- redash/__init__.py | 15 +- redash/app.py | 2 +- redash/authentication/__init__.py | 14 +- redash/authentication/account.py | 5 +- redash/authentication/google_oauth.py | 33 +- redash/authentication/jwt_auth.py | 13 +- redash/authentication/ldap_auth.py | 10 +- redash/authentication/remote_user_auth.py | 12 +- redash/authentication/saml_auth.py | 17 +- redash/cli/data_sources.py | 16 +- redash/cli/database.py | 10 +- redash/cli/groups.py | 5 +- redash/cli/organization.py | 12 +- redash/cli/rq.py | 18 +- redash/cli/users.py | 20 +- redash/destinations/__init__.py | 2 +- redash/destinations/chatwork.py | 29 +- redash/destinations/email.py | 11 +- redash/destinations/hangoutschat.py | 29 +- redash/destinations/hipchat.py | 14 +- redash/destinations/mattermost.py | 19 +- .../destinations/microsoft_teams_webhook.py | 88 ++--- redash/destinations/pagerduty.py | 6 +- redash/destinations/slack.py | 21 +- redash/destinations/webhook.py | 17 +- redash/handlers/__init__.py | 8 +- redash/handlers/admin.py | 14 +- redash/handlers/alerts.py | 64 +--- redash/handlers/api.py | 121 ++----- redash/handlers/authentication.py | 54 +-- redash/handlers/base.py | 8 +- redash/handlers/dashboards.py | 65 +--- redash/handlers/data_sources.py | 76 ++-- redash/handlers/databricks.py | 36 +- redash/handlers/destinations.py | 20 +- redash/handlers/embed.py | 11 +- redash/handlers/events.py | 6 +- redash/handlers/favorites.py | 35 +- redash/handlers/groups.py | 54 +-- redash/handlers/organization.py | 12 +- redash/handlers/permissions.py | 10 +- redash/handlers/queries.py | 91 ++--- redash/handlers/query_results.py | 150 +++----- redash/handlers/query_snippets.py | 31 +- redash/handlers/settings.py | 8 +- redash/handlers/setup.py | 12 +- redash/handlers/users.py | 96 ++--- redash/handlers/visualizations.py | 17 +- redash/handlers/webpack.py | 5 +- redash/handlers/widgets.py | 14 +- redash/metrics/database.py | 4 +- redash/metrics/request.py | 8 +- redash/models/__init__.py | 341 ++++++------------ redash/models/base.py | 6 +- redash/models/changes.py | 6 +- redash/models/mixins.py | 2 +- redash/models/organizations.py | 12 +- redash/models/parameterized_query.py | 39 +- redash/models/types.py | 13 +- redash/models/users.py | 49 +-- redash/monitor.py | 9 +- redash/permissions.py | 4 +- redash/query_runner/__init__.py | 57 ++- redash/query_runner/amazon_elasticsearch.py | 4 +- redash/query_runner/arango.py | 23 +- redash/query_runner/athena.py | 39 +- redash/query_runner/axibase_tsd.py | 18 +- redash/query_runner/azure_kusto.py | 21 +- redash/query_runner/big_query.py | 47 ++- redash/query_runner/big_query_gce.py | 7 +- redash/query_runner/cass.py | 26 +- redash/query_runner/clickhouse.py | 32 +- redash/query_runner/cloudwatch.py | 5 +- redash/query_runner/cloudwatch_insights.py | 16 +- redash/query_runner/corporate_memory.py | 13 +- redash/query_runner/couchbase.py | 24 +- redash/query_runner/csv.py | 63 ++-- redash/query_runner/databend.py | 22 +- redash/query_runner/databricks.py | 34 +- redash/query_runner/db2.py | 26 +- redash/query_runner/dgraph.py | 5 +- redash/query_runner/drill.py | 19 +- redash/query_runner/druid.py | 17 +- redash/query_runner/elasticsearch.py | 108 ++---- redash/query_runner/elasticsearch2.py | 153 ++++---- redash/query_runner/exasol.py | 15 +- redash/query_runner/excel.py | 64 ++-- redash/query_runner/google_analytics.py | 51 ++- redash/query_runner/google_spreadsheets.py | 24 +- redash/query_runner/graphite.py | 14 +- redash/query_runner/hive_ds.py | 31 +- redash/query_runner/impala_ds.py | 28 +- redash/query_runner/influx_db.py | 6 +- redash/query_runner/jql.py | 14 +- redash/query_runner/json_ds.py | 24 +- redash/query_runner/kylin.py | 18 +- redash/query_runner/memsql_ds.py | 31 +- redash/query_runner/mongodb.py | 42 +-- redash/query_runner/mssql.py | 20 +- redash/query_runner/mssql_odbc.py | 28 +- redash/query_runner/mysql.py | 26 +- redash/query_runner/nz.py | 103 +++--- redash/query_runner/oracle.py | 25 +- redash/query_runner/pg.py | 56 ++- redash/query_runner/phoenix.py | 33 +- redash/query_runner/pinot.py | 45 ++- redash/query_runner/presto.py | 30 +- redash/query_runner/prometheus.py | 21 +- redash/query_runner/python.py | 45 ++- redash/query_runner/qubole.py | 51 +-- redash/query_runner/query_results.py | 14 +- redash/query_runner/rockset.py | 41 ++- redash/query_runner/salesforce.py | 17 +- redash/query_runner/script.py | 7 +- redash/query_runner/snowflake.py | 20 +- redash/query_runner/sparql_endpoint.py | 10 +- redash/query_runner/sqlite.py | 13 +- redash/query_runner/treasuredata.py | 32 +- redash/query_runner/trino.py | 39 +- redash/query_runner/uptycs.py | 21 +- redash/query_runner/vertica.py | 29 +- redash/query_runner/yandex_metrica.py | 16 +- redash/security.py | 12 +- redash/serializers/__init__.py | 56 +-- redash/serializers/query_result.py | 9 +- redash/settings/__init__.py | 233 ++++-------- redash/settings/dynamic_settings.py | 6 +- redash/settings/helpers.py | 2 + redash/settings/organization.py | 25 +- redash/tasks/__init__.py | 29 +- redash/tasks/alerts.py | 31 +- redash/tasks/databricks.py | 15 +- redash/tasks/failure_report.py | 19 +- redash/tasks/general.py | 9 +- redash/tasks/queries/__init__.py | 6 +- redash/tasks/queries/execution.py | 28 +- redash/tasks/queries/maintenance.py | 59 ++- redash/tasks/schedule.py | 33 +- redash/tasks/worker.py | 25 +- redash/utils/__init__.py | 19 +- redash/utils/configuration.py | 3 +- redash/utils/human_time.py | 5 +- redash/utils/requests_session.py | 4 +- redash/utils/sentry.py | 10 +- redash/version_check.py | 20 +- redash/worker.py | 17 +- setup.cfg | 9 +- tests/__init__.py | 22 +- tests/factories.py | 17 +- tests/handlers/test_alerts.py | 13 +- tests/handlers/test_authentication.py | 17 +- tests/handlers/test_dashboards.py | 55 +-- tests/handlers/test_data_sources.py | 40 +- tests/handlers/test_destinations.py | 31 +- tests/handlers/test_embed.py | 18 +- tests/handlers/test_groups.py | 33 +- tests/handlers/test_paginate.py | 21 +- tests/handlers/test_permissions.py | 39 +- tests/handlers/test_queries.py | 85 ++--- tests/handlers/test_query_results.py | 166 +++------ tests/handlers/test_query_snippets.py | 12 +- tests/handlers/test_settings.py | 12 +- tests/handlers/test_users.py | 104 ++---- tests/handlers/test_visualizations.py | 25 +- tests/handlers/test_widgets.py | 6 +- tests/metrics/test_database.py | 3 +- tests/metrics/test_request.py | 3 +- tests/models/test_alerts.py | 37 +- tests/models/test_api_keys.py | 2 +- tests/models/test_changes.py | 3 +- tests/models/test_dashboards.py | 19 +- tests/models/test_data_sources.py | 22 +- tests/models/test_parameterized_query.py | 15 +- tests/models/test_permissions.py | 16 +- tests/models/test_queries.py | 78 ++-- tests/models/test_query_results.py | 38 +- tests/models/test_users.py | 23 +- tests/query_runner/test_athena.py | 53 +-- .../query_runner/test_basesql_queryrunner.py | 46 +-- tests/query_runner/test_cass.py | 10 +- tests/query_runner/test_clickhouse.py | 16 +- tests/query_runner/test_databricks.py | 22 +- tests/query_runner/test_drill.py | 2 +- tests/query_runner/test_elasticsearch2.py | 260 ++++--------- .../query_runner/test_google_spreadsheets.py | 20 +- tests/query_runner/test_http.py | 20 +- tests/query_runner/test_jql.py | 17 +- tests/query_runner/test_mongodb.py | 29 +- tests/query_runner/test_oracle.py | 6 +- tests/query_runner/test_pg.py | 1 + tests/query_runner/test_prometheus.py | 1 - tests/query_runner/test_python.py | 2 +- tests/query_runner/test_query_results.py | 10 +- tests/query_runner/test_script.py | 24 +- tests/query_runner/test_utils.py | 2 +- tests/serializers/test_query_results.py | 11 +- tests/tasks/__init__.py | 1 - tests/tasks/test_alerts.py | 10 +- tests/tasks/test_empty_schedule.py | 10 +- tests/tasks/test_failure_report.py | 25 +- tests/tasks/test_queries.py | 30 +- tests/tasks/test_refresh_queries.py | 57 +-- tests/tasks/test_refresh_schemas.py | 14 +- tests/tasks/test_schedule.py | 8 +- tests/tasks/test_worker.py | 13 +- tests/test_authentication.py | 64 ++-- tests/test_cli.py | 40 +- tests/test_configuration.py | 9 +- tests/test_handlers.py | 42 +-- tests/test_migrations.py | 9 +- tests/test_models.py | 99 ++--- tests/test_permissions.py | 19 +- tests/test_utils.py | 28 +- 219 files changed, 2538 insertions(+), 4207 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 76fb699f5a..53b2d6751a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -16,8 +16,10 @@ jobs: - uses: actions/setup-python@v4 with: python-version: '3.8' - - run: sudo pip install flake8 - - run: ./bin/flake8_tests.sh + - run: sudo pip install flake8 black isort + - run: flake8 . + - run: black --check . + - run: isort --check-only --diff . backend-unit-tests: runs-on: ubuntu-22.04 diff --git a/bin/flake8_tests.sh b/bin/flake8_tests.sh index 3c27f7fee2..43b32a6a96 100755 --- a/bin/flake8_tests.sh +++ b/bin/flake8_tests.sh @@ -5,5 +5,5 @@ set -o errexit # fail the build if any task fails flake8 --version ; pip --version # stop the build if there are Python syntax errors or undefined names flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics -# exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide +# exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics diff --git a/bin/get_changes.py b/bin/get_changes.py index 60091bb772..aad1223837 100644 --- a/bin/get_changes.py +++ b/bin/get_changes.py @@ -1,35 +1,44 @@ #!/bin/env python3 -import sys import re import subprocess +import sys def get_change_log(previous_sha): - args = ['git', '--no-pager', 'log', '--merges', '--grep', 'Merge pull request', '--pretty=format:"%h|%s|%b|%p"', 'master...{}'.format(previous_sha)] + args = [ + "git", + "--no-pager", + "log", + "--merges", + "--grep", + "Merge pull request", + '--pretty=format:"%h|%s|%b|%p"', + "master...{}".format(previous_sha), + ] log = subprocess.check_output(args) changes = [] - for line in log.split('\n'): + for line in log.split("\n"): try: - sha, subject, body, parents = line[1:-1].split('|') + sha, subject, body, parents = line[1:-1].split("|") except ValueError: continue try: - pull_request = re.match("Merge pull request #(\d+)", subject).groups()[0] + pull_request = re.match(r"Merge pull request #(\d+)", subject).groups()[0] pull_request = " #{}".format(pull_request) - except Exception as ex: + except Exception: pull_request = "" - author = subprocess.check_output(['git', 'log', '-1', '--pretty=format:"%an"', parents.split(' ')[-1]])[1:-1] + author = subprocess.check_output(["git", "log", "-1", '--pretty=format:"%an"', parents.split(" ")[-1]])[1:-1] changes.append("{}{}: {} ({})".format(sha, pull_request, body.strip(), author)) return changes -if __name__ == '__main__': +if __name__ == "__main__": previous_sha = sys.argv[1] changes = get_change_log(previous_sha) diff --git a/bin/release_manager.py b/bin/release_manager.py index 3d9b21c895..a3f38e5f8a 100644 --- a/bin/release_manager.py +++ b/bin/release_manager.py @@ -1,17 +1,19 @@ #!/usr/bin/env python3 import os -import sys import re import subprocess +import sys + import requests import simplejson -github_token = os.environ['GITHUB_TOKEN'] -auth = (github_token, 'x-oauth-basic') -repo = 'getredash/redash' +github_token = os.environ["GITHUB_TOKEN"] +auth = (github_token, "x-oauth-basic") +repo = "getredash/redash" + def _github_request(method, path, params=None, headers={}): - if not path.startswith('https://api.github.com'): + if not path.startswith("https://api.github.com"): url = "https://api.github.com/{}".format(path) else: url = path @@ -22,15 +24,18 @@ def _github_request(method, path, params=None, headers={}): response = requests.request(method, url, data=params, auth=auth) return response + def exception_from_error(message, response): - return Exception("({}) {}: {}".format(response.status_code, message, response.json().get('message', '?'))) + return Exception("({}) {}: {}".format(response.status_code, message, response.json().get("message", "?"))) + def rc_tag_name(version): return "v{}-rc".format(version) + def get_rc_release(version): tag = rc_tag_name(version) - response = _github_request('get', 'repos/{}/releases/tags/{}'.format(repo, tag)) + response = _github_request("get", "repos/{}/releases/tags/{}".format(repo, tag)) if response.status_code == 404: return None @@ -39,84 +44,101 @@ def get_rc_release(version): raise exception_from_error("Unknown error while looking RC release: ", response) + def create_release(version, commit_sha): tag = rc_tag_name(version) params = { - 'tag_name': tag, - 'name': "{} - RC".format(version), - 'target_commitish': commit_sha, - 'prerelease': True + "tag_name": tag, + "name": "{} - RC".format(version), + "target_commitish": commit_sha, + "prerelease": True, } - response = _github_request('post', 'repos/{}/releases'.format(repo), params) + response = _github_request("post", "repos/{}/releases".format(repo), params) if response.status_code != 201: raise exception_from_error("Failed creating new release", response) return response.json() + def upload_asset(release, filepath): - upload_url = release['upload_url'].replace('{?name,label}', '') - filename = filepath.split('/')[-1] + upload_url = release["upload_url"].replace("{?name,label}", "") + filename = filepath.split("/")[-1] with open(filepath) as file_content: - headers = {'Content-Type': 'application/gzip'} - response = requests.post(upload_url, file_content, params={'name': filename}, headers=headers, auth=auth, verify=False) + headers = {"Content-Type": "application/gzip"} + response = requests.post( + upload_url, file_content, params={"name": filename}, headers=headers, auth=auth, verify=False + ) if response.status_code != 201: # not 200/201/... - raise exception_from_error('Failed uploading asset', response) + raise exception_from_error("Failed uploading asset", response) return response + def remove_previous_builds(release): - for asset in release['assets']: - response = _github_request('delete', asset['url']) + for asset in release["assets"]: + response = _github_request("delete", asset["url"]) if response.status_code != 204: raise exception_from_error("Failed deleting asset", response) + def get_changelog(commit_sha): - latest_release = _github_request('get', 'repos/{}/releases/latest'.format(repo)) + latest_release = _github_request("get", "repos/{}/releases/latest".format(repo)) if latest_release.status_code != 200: - raise exception_from_error('Failed getting latest release', latest_release) + raise exception_from_error("Failed getting latest release", latest_release) latest_release = latest_release.json() - previous_sha = latest_release['target_commitish'] - - args = ['git', '--no-pager', 'log', '--merges', '--grep', 'Merge pull request', '--pretty=format:"%h|%s|%b|%p"', '{}...{}'.format(previous_sha, commit_sha)] + previous_sha = latest_release["target_commitish"] + + args = [ + "git", + "--no-pager", + "log", + "--merges", + "--grep", + "Merge pull request", + '--pretty=format:"%h|%s|%b|%p"', + "{}...{}".format(previous_sha, commit_sha), + ] log = subprocess.check_output(args) - changes = ["Changes since {}:".format(latest_release['name'])] + changes = ["Changes since {}:".format(latest_release["name"])] - for line in log.split('\n'): + for line in log.split("\n"): try: - sha, subject, body, parents = line[1:-1].split('|') + sha, subject, body, parents = line[1:-1].split("|") except ValueError: continue try: - pull_request = re.match("Merge pull request #(\d+)", subject).groups()[0] + pull_request = re.match(r"Merge pull request #(\d+)", subject).groups()[0] pull_request = " #{}".format(pull_request) - except Exception as ex: + except Exception: pull_request = "" - author = subprocess.check_output(['git', 'log', '-1', '--pretty=format:"%an"', parents.split(' ')[-1]])[1:-1] + author = subprocess.check_output(["git", "log", "-1", '--pretty=format:"%an"', parents.split(" ")[-1]])[1:-1] changes.append("{}{}: {} ({})".format(sha, pull_request, body.strip(), author)) return "\n".join(changes) + def update_release_commit_sha(release, commit_sha): params = { - 'target_commitish': commit_sha, + "target_commitish": commit_sha, } - response = _github_request('patch', 'repos/{}/releases/{}'.format(repo, release['id']), params) + response = _github_request("patch", "repos/{}/releases/{}".format(repo, release["id"]), params) if response.status_code != 200: raise exception_from_error("Failed updating commit sha for existing release", response) return response.json() + def update_release(version, build_filepath, commit_sha): try: release = get_rc_release(version) @@ -125,21 +147,22 @@ def update_release(version, build_filepath, commit_sha): else: release = create_release(version, commit_sha) - print("Using release id: {}".format(release['id'])) + print("Using release id: {}".format(release["id"])) remove_previous_builds(release) response = upload_asset(release, build_filepath) changelog = get_changelog(commit_sha) - response = _github_request('patch', release['url'], {'body': changelog}) + response = _github_request("patch", release["url"], {"body": changelog}) if response.status_code != 200: raise exception_from_error("Failed updating release description", response) except Exception as ex: print(ex) -if __name__ == '__main__': + +if __name__ == "__main__": commit_sha = sys.argv[1] version = sys.argv[2] filepath = sys.argv[3] diff --git a/bin/upgrade b/bin/upgrade index 376866f1ed..af4132081a 100755 --- a/bin/upgrade +++ b/bin/upgrade @@ -1,9 +1,9 @@ #!/usr/bin/env python3 -import urllib import argparse import os import subprocess import sys +import urllib from collections import namedtuple from fnmatch import fnmatch @@ -15,8 +15,8 @@ except ImportError: print("Missing required library: semver.") exit(1) -REDASH_HOME = os.environ.get('REDASH_HOME', '/opt/redash') -CURRENT_VERSION_PATH = '{}/current'.format(REDASH_HOME) +REDASH_HOME = os.environ.get("REDASH_HOME", "/opt/redash") +CURRENT_VERSION_PATH = "{}/current".format(REDASH_HOME) def run(cmd, cwd=None): @@ -27,11 +27,11 @@ def run(cmd, cwd=None): def confirm(question): - reply = str(input(question + ' (y/n): ')).lower().strip() + reply = str(input(question + " (y/n): ")).lower().strip() - if reply[0] == 'y': + if reply[0] == "y": return True - if reply[0] == 'n': + if reply[0] == "n": return False else: return confirm("Please use 'y' or 'n'") @@ -40,7 +40,8 @@ def confirm(question): def version_path(version_name): return "{}/{}".format(REDASH_HOME, version_name) -END_CODE = '\033[0m' + +END_CODE = "\033[0m" def colored_string(text, color): @@ -51,60 +52,62 @@ def colored_string(text, color): def h1(text): - print(colored_string(text, '\033[4m\033[1m')) + print(colored_string(text, "\033[4m\033[1m")) def green(text): - print(colored_string(text, '\033[92m')) + print(colored_string(text, "\033[92m")) def red(text): - print(colored_string(text, '\033[91m')) + print(colored_string(text, "\033[91m")) -class Release(namedtuple('Release', ('version', 'download_url', 'filename', 'description'))): +class Release(namedtuple("Release", ("version", "download_url", "filename", "description"))): def v1_or_newer(self): - return semver.compare(self.version, '1.0.0-alpha') >= 0 + return semver.compare(self.version, "1.0.0-alpha") >= 0 def is_newer(self, version): return semver.compare(self.version, version) > 0 @property def version_name(self): - return self.filename.replace('.tar.gz', '') + return self.filename.replace(".tar.gz", "") def get_latest_release_from_ci(): - response = requests.get('https://circleci.com/api/v1.1/project/github/getredash/redash/latest/artifacts?branch=master') + response = requests.get( + "https://circleci.com/api/v1.1/project/github/getredash/redash/latest/artifacts?branch=master" + ) if response.status_code != 200: exit("Failed getting releases (status code: %s)." % response.status_code) - tarball_asset = filter(lambda asset: asset['url'].endswith('.tar.gz'), response.json())[0] - filename = urllib.unquote(tarball_asset['pretty_path'].split('/')[-1]) - version = filename.replace('redash.', '').replace('.tar.gz', '') + tarball_asset = filter(lambda asset: asset["url"].endswith(".tar.gz"), response.json())[0] + filename = urllib.unquote(tarball_asset["pretty_path"].split("/")[-1]) + version = filename.replace("redash.", "").replace(".tar.gz", "") - release = Release(version, tarball_asset['url'], filename, '') + release = Release(version, tarball_asset["url"], filename, "") return release def get_release(channel): - if channel == 'ci': + if channel == "ci": return get_latest_release_from_ci() - response = requests.get('https://version.redash.io/api/releases?channel={}'.format(channel)) + response = requests.get("https://version.redash.io/api/releases?channel={}".format(channel)) release = response.json()[0] - filename = release['download_url'].split('/')[-1] - release = Release(release['version'], release['download_url'], filename, release['description']) + filename = release["download_url"].split("/")[-1] + release = Release(release["version"], release["download_url"], filename, release["description"]) return release def link_to_current(version_name): green("Linking to current version...") - run('ln -nfs {} {}'.format(version_path(version_name), CURRENT_VERSION_PATH)) + run("ln -nfs {} {}".format(version_path(version_name), CURRENT_VERSION_PATH)) def restart_services(): @@ -113,25 +116,25 @@ def restart_services(): # directory. green("Restarting...") try: - run('sudo /etc/init.d/redash_supervisord restart') + run("sudo /etc/init.d/redash_supervisord restart") except subprocess.CalledProcessError as e: - run('sudo service supervisor restart') + run("sudo service supervisor restart") def update_requirements(version_name): green("Installing new Python packages (if needed)...") - new_requirements_file = '{}/requirements.txt'.format(version_path(version_name)) + new_requirements_file = "{}/requirements.txt".format(version_path(version_name)) install_requirements = False try: - run('diff {}/requirements.txt {}'.format(CURRENT_VERSION_PATH, new_requirements_file)) != 0 + run("diff {}/requirements.txt {}".format(CURRENT_VERSION_PATH, new_requirements_file)) != 0 except subprocess.CalledProcessError as e: if e.returncode != 0: install_requirements = True if install_requirements: - run('sudo pip install -r {}'.format(new_requirements_file)) + run("sudo pip install -r {}".format(new_requirements_file)) def apply_migrations(release): @@ -143,8 +146,12 @@ def apply_migrations(release): def find_migrations(version_name): - current_migrations = set([f for f in os.listdir("{}/migrations".format(CURRENT_VERSION_PATH)) if fnmatch(f, '*_*.py')]) - new_migrations = sorted([f for f in os.listdir("{}/migrations".format(version_path(version_name))) if fnmatch(f, '*_*.py')]) + current_migrations = set( + [f for f in os.listdir("{}/migrations".format(CURRENT_VERSION_PATH)) if fnmatch(f, "*_*.py")] + ) + new_migrations = sorted( + [f for f in os.listdir("{}/migrations".format(version_path(version_name))) if fnmatch(f, "*_*.py")] + ) return [m for m in new_migrations if m not in current_migrations] @@ -154,40 +161,45 @@ def apply_migrations_pre_v1(version_name): if new_migrations: green("New migrations to run: ") - print(', '.join(new_migrations)) + print(", ".join(new_migrations)) else: print("No new migrations in this version.") if new_migrations and confirm("Apply new migrations? (make sure you have backup)"): for migration in new_migrations: print("Applying {}...".format(migration)) - run("sudo sudo -u redash PYTHONPATH=. bin/run python migrations/{}".format(migration), cwd=version_path(version_name)) + run( + "sudo sudo -u redash PYTHONPATH=. bin/run python migrations/{}".format(migration), + cwd=version_path(version_name), + ) def download_and_unpack(release): directory_name = release.version_name green("Downloading release tarball...") - run('sudo wget --header="Accept: application/octet-stream" -O {} {}'.format(release.filename, release.download_url)) + run( + 'sudo wget --header="Accept: application/octet-stream" -O {} {}'.format(release.filename, release.download_url) + ) green("Unpacking to: {}...".format(directory_name)) - run('sudo mkdir -p {}'.format(directory_name)) - run('sudo tar -C {} -xvf {}'.format(directory_name, release.filename)) + run("sudo mkdir -p {}".format(directory_name)) + run("sudo tar -C {} -xvf {}".format(directory_name, release.filename)) green("Changing ownership to redash...") - run('sudo chown redash {}'.format(directory_name)) + run("sudo chown redash {}".format(directory_name)) green("Linking .env file...") - run('sudo ln -nfs {}/.env {}/.env'.format(REDASH_HOME, version_path(directory_name))) + run("sudo ln -nfs {}/.env {}/.env".format(REDASH_HOME, version_path(directory_name))) def current_version(): - real_current_path = os.path.realpath(CURRENT_VERSION_PATH).replace('.b', '+b') - return real_current_path.replace(REDASH_HOME + '/', '').replace('redash.', '') + real_current_path = os.path.realpath(CURRENT_VERSION_PATH).replace(".b", "+b") + return real_current_path.replace(REDASH_HOME + "/", "").replace("redash.", "") def verify_minimum_version(): green("Current version: " + current_version()) - if semver.compare(current_version(), '0.12.0') < 0: + if semver.compare(current_version(), "0.12.0") < 0: red("You need to have Redash v0.12.0 or newer to upgrade to post v1.0.0 releases.") green("To upgrade to v0.12.0, run the upgrade script set to the legacy channel (--channel legacy).") exit(1) @@ -234,9 +246,9 @@ def deploy_release(channel): red("Exit status: {}\nOutput:\n{}".format(e.returncode, e.output)) -if __name__ == '__main__': +if __name__ == "__main__": parser = argparse.ArgumentParser() - parser.add_argument("--channel", help="The channel to get release from (default: stable).", default='stable') + parser.add_argument("--channel", help="The channel to get release from (default: stable).", default="stable") args = parser.parse_args() deploy_release(args.channel) diff --git a/manage.py b/manage.py index 3ccb9ecb51..aa8d85c81e 100755 --- a/manage.py +++ b/manage.py @@ -5,5 +5,5 @@ from redash.cli import manager -if __name__ == '__main__': +if __name__ == "__main__": manager() diff --git a/redash/__init__.py b/redash/__init__.py index 86cf335b60..2fbf5f9d44 100644 --- a/redash/__init__.py +++ b/redash/__init__.py @@ -1,19 +1,18 @@ -from __future__ import absolute_import import logging import os import sys import redis -from flask_mail import Mail from flask_limiter import Limiter from flask_limiter.util import get_ipaddr +from flask_mail import Mail from flask_migrate import Migrate from statsd import StatsClient -from . import settings -from .app import create_app # noqa -from .query_runner import import_query_runners -from .destinations import import_destinations +from redash import settings +from redash.app import create_app # noqa +from redash.destinations import import_destinations +from redash.query_runner import import_query_runners __version__ = "11.0.0-dev" @@ -48,9 +47,7 @@ def setup_logging(): rq_redis_connection = redis.from_url(settings.RQ_REDIS_URL) mail = Mail() migrate = Migrate(compare_type=True) -statsd_client = StatsClient( - host=settings.STATSD_HOST, port=settings.STATSD_PORT, prefix=settings.STATSD_PREFIX -) +statsd_client = StatsClient(host=settings.STATSD_HOST, port=settings.STATSD_PORT, prefix=settings.STATSD_PREFIX) limiter = Limiter(key_func=get_ipaddr, storage_uri=settings.LIMITER_STORAGE) import_query_runners(settings.QUERY_RUNNERS) diff --git a/redash/app.py b/redash/app.py index ec1b7a8965..e66cc32233 100644 --- a/redash/app.py +++ b/redash/app.py @@ -1,7 +1,7 @@ from flask import Flask from werkzeug.middleware.proxy_fix import ProxyFix -from . import settings +from redash import settings class Redash(Flask): diff --git a/redash/authentication/__init__.py b/redash/authentication/__init__.py index a2dd1f72f5..9c41b286ce 100644 --- a/redash/authentication/__init__.py +++ b/redash/authentication/__init__.py @@ -21,12 +21,10 @@ def get_login_url(external=False, next="/"): - if settings.MULTI_ORG and current_org == None: + if settings.MULTI_ORG and current_org == None: # noqa: E711 login_url = "/" elif settings.MULTI_ORG: - login_url = url_for( - "redash.login", org_slug=current_org.slug, next=next, _external=external - ) + login_url = url_for("redash.login", org_slug=current_org.slug, next=next, _external=external) else: login_url = url_for("redash.login", next=next, _external=external) @@ -69,11 +67,7 @@ def request_loader(request): elif settings.AUTH_TYPE == "api_key": user = api_key_load_user_from_request(request) else: - logger.warning( - "Unknown authentication type ({}). Using default (HMAC).".format( - settings.AUTH_TYPE - ) - ) + logger.warning("Unknown authentication type ({}). Using default (HMAC).".format(settings.AUTH_TYPE)) user = hmac_load_user_from_request(request) if org_settings["auth_jwt_login_enabled"] and user is None: @@ -229,7 +223,7 @@ def redirect_to_login(): def logout_and_redirect_to_index(): logout_user() - if settings.MULTI_ORG and current_org == None: + if settings.MULTI_ORG and current_org == None: # noqa: E711 index_url = "/" elif settings.MULTI_ORG: index_url = url_for("redash.index", org_slug=current_org.slug, _external=False) diff --git a/redash/authentication/account.py b/redash/authentication/account.py index c826a71aa4..30ec3a26b2 100644 --- a/redash/authentication/account.py +++ b/redash/authentication/account.py @@ -1,13 +1,12 @@ import logging + from flask import render_template +from itsdangerous import URLSafeTimedSerializer from redash import settings from redash.tasks import send_mail from redash.utils import base_url -# noinspection PyUnresolvedReferences -from itsdangerous import URLSafeTimedSerializer, SignatureExpired, BadSignature - logger = logging.getLogger(__name__) serializer = URLSafeTimedSerializer(settings.SECRET_KEY) diff --git a/redash/authentication/google_oauth.py b/redash/authentication/google_oauth.py index a1f58d3fcf..1107d4281e 100644 --- a/redash/authentication/google_oauth.py +++ b/redash/authentication/google_oauth.py @@ -1,18 +1,17 @@ import logging -import requests -from flask import redirect, url_for, Blueprint, flash, request, session +import requests +from authlib.integrations.flask_client import OAuth +from flask import Blueprint, flash, redirect, request, session, url_for -from redash import models, settings +from redash import models from redash.authentication import ( create_and_login_user, - logout_and_redirect_to_index, get_next_path, + logout_and_redirect_to_index, ) from redash.authentication.org_resolving import current_org -from authlib.integrations.flask_client import OAuth - def verify_profile(org, profile): if org.is_public: @@ -46,9 +45,7 @@ def create_google_oauth_blueprint(app): def get_user_profile(access_token): headers = {"Authorization": "OAuth {}".format(access_token)} - response = requests.get( - "https://www.googleapis.com/oauth2/v1/userinfo", headers=headers - ) + response = requests.get("https://www.googleapis.com/oauth2/v1/userinfo", headers=headers) if response.status_code == 401: logger.warning("Failed getting user profile (response code 401).") @@ -63,12 +60,9 @@ def org_login(org_slug): @blueprint.route("/oauth/google", endpoint="authorize") def login(): - redirect_uri = url_for(".callback", _external=True) - next_path = request.args.get( - "next", url_for("redash.index", org_slug=session.get("org_slug")) - ) + next_path = request.args.get("next", url_for("redash.index", org_slug=session.get("org_slug"))) logger.debug("Callback url: %s", redirect_uri) logger.debug("Next is: %s", next_path) @@ -78,7 +72,6 @@ def login(): @blueprint.route("/oauth/google_callback", endpoint="callback") def authorized(): - logger.debug("Authorized user inbound") resp = oauth.google.authorize_access_token() @@ -109,21 +102,15 @@ def authorized(): profile["email"], org, ) - flash( - "Your Google Apps account ({}) isn't allowed.".format(profile["email"]) - ) + flash("Your Google Apps account ({}) isn't allowed.".format(profile["email"])) return redirect(url_for("redash.login", org_slug=org.slug)) picture_url = "%s?sz=40" % profile["picture"] - user = create_and_login_user( - org, profile["name"], profile["email"], picture_url - ) + user = create_and_login_user(org, profile["name"], profile["email"], picture_url) if user is None: return logout_and_redirect_to_index() - unsafe_next_path = session.get("next_url") or url_for( - "redash.index", org_slug=org.slug - ) + unsafe_next_path = session.get("next_url") or url_for("redash.index", org_slug=org.slug) next_path = get_next_path(unsafe_next_path) return redirect(next_path) diff --git a/redash/authentication/jwt_auth.py b/redash/authentication/jwt_auth.py index 81904235ae..9d4d80abe8 100644 --- a/redash/authentication/jwt_auth.py +++ b/redash/authentication/jwt_auth.py @@ -1,4 +1,5 @@ import logging + import jwt import requests import simplejson @@ -21,9 +22,7 @@ def get_public_keys(url): if "keys" in data: public_keys = [] for key_dict in data["keys"]: - public_key = jwt.algorithms.RSAAlgorithm.from_jwk( - simplejson.dumps(key_dict) - ) + public_key = jwt.algorithms.RSAAlgorithm.from_jwk(simplejson.dumps(key_dict)) public_keys.append(public_key) get_public_keys.key_cache[url] = public_keys @@ -36,9 +35,7 @@ def get_public_keys(url): get_public_keys.key_cache = {} -def verify_jwt_token( - jwt_token, expected_issuer, expected_audience, algorithms, public_certs_url -): +def verify_jwt_token(jwt_token, expected_issuer, expected_audience, algorithms, public_certs_url): # https://developers.cloudflare.com/access/setting-up-access/validate-jwt-tokens/ # https://cloud.google.com/iap/docs/signed-headers-howto # Loop through the keys since we can't pass the key set to the decoder @@ -53,9 +50,7 @@ def verify_jwt_token( for key in keys: try: # decode returns the claims which has the email if you need it - payload = jwt.decode( - jwt_token, key=key, audience=expected_audience, algorithms=algorithms - ) + payload = jwt.decode(jwt_token, key=key, audience=expected_audience, algorithms=algorithms) issuer = payload["iss"] if issuer != expected_issuer: raise Exception("Wrong issuer: {}".format(issuer)) diff --git a/redash/authentication/ldap_auth.py b/redash/authentication/ldap_auth.py index e102b3f516..a05439f66a 100644 --- a/redash/authentication/ldap_auth.py +++ b/redash/authentication/ldap_auth.py @@ -1,13 +1,13 @@ import logging import sys -from redash import settings - -from flask import flash, redirect, render_template, request, url_for, Blueprint +from flask import Blueprint, flash, redirect, render_template, request, url_for from flask_login import current_user +from redash import settings + try: - from ldap3 import Server, Connection + from ldap3 import Connection, Server except ImportError: if settings.LDAP_LOGIN_ENABLED: sys.exit( @@ -16,8 +16,8 @@ from redash.authentication import ( create_and_login_user, - logout_and_redirect_to_index, get_next_path, + logout_and_redirect_to_index, ) from redash.authentication.org_resolving import current_org from redash.handlers.base import org_scoped_rule diff --git a/redash/authentication/remote_user_auth.py b/redash/authentication/remote_user_auth.py index 7cba295ccd..59f25fb07c 100644 --- a/redash/authentication/remote_user_auth.py +++ b/redash/authentication/remote_user_auth.py @@ -1,13 +1,15 @@ import logging -from flask import redirect, url_for, Blueprint, request + +from flask import Blueprint, redirect, request, url_for + +from redash import settings from redash.authentication import ( create_and_login_user, - logout_and_redirect_to_index, get_next_path, + logout_and_redirect_to_index, ) from redash.authentication.org_resolving import current_org from redash.handlers.base import org_scoped_rule -from redash import settings logger = logging.getLogger("remote_user_auth") @@ -20,9 +22,7 @@ def login(org_slug=None): next_path = get_next_path(unsafe_next_path) if not settings.REMOTE_USER_LOGIN_ENABLED: - logger.error( - "Cannot use remote user for login without being enabled in settings" - ) + logger.error("Cannot use remote user for login without being enabled in settings") return redirect(url_for("redash.index", next=next_path, org_slug=org_slug)) email = request.headers.get(settings.REMOTE_USER_HEADER) diff --git a/redash/authentication/saml_auth.py b/redash/authentication/saml_auth.py index 3b56faff66..e46a091dc7 100644 --- a/redash/authentication/saml_auth.py +++ b/redash/authentication/saml_auth.py @@ -1,16 +1,20 @@ import logging -from flask import flash, redirect, url_for, Blueprint, request -from redash import settings -from redash.authentication import create_and_login_user, logout_and_redirect_to_index -from redash.authentication.org_resolving import current_org -from redash.handlers.base import org_scoped_rule -from redash.utils import mustache_render + +from flask import Blueprint, flash, redirect, request, url_for from saml2 import BINDING_HTTP_POST, BINDING_HTTP_REDIRECT, entity from saml2.client import Saml2Client from saml2.config import Config as Saml2Config from saml2.saml import NAMEID_FORMAT_TRANSIENT from saml2.sigver import get_xmlsec_binary +from redash import settings +from redash.authentication import ( + create_and_login_user, + logout_and_redirect_to_index, +) +from redash.authentication.org_resolving import current_org +from redash.handlers.base import org_scoped_rule +from redash.utils import mustache_render logger = logging.getLogger("saml_auth") blueprint = Blueprint("saml_auth", __name__) @@ -91,6 +95,7 @@ def get_saml_client(org): if sp_settings: import json + saml_settings["service"]["sp"].update(json.loads(sp_settings)) sp_config = Saml2Config() diff --git a/redash/cli/data_sources.py b/redash/cli/data_sources.py index c0843c8e19..ccc7429a20 100644 --- a/redash/cli/data_sources.py +++ b/redash/cli/data_sources.py @@ -34,11 +34,7 @@ def list_command(organization=None): if i > 0: print("-" * 20) - print( - "Id: {}\nName: {}\nType: {}\nOptions: {}".format( - ds.id, ds.name, ds.type, ds.options.to_json() - ) - ) + print("Id: {}\nName: {}\nType: {}\nOptions: {}".format(ds.id, ds.name, ds.type, ds.options.to_json())) @manager.command(name="list_types") @@ -76,9 +72,7 @@ def test(name, organization="default"): data_source = models.DataSource.query.filter( models.DataSource.name == name, models.DataSource.org == org ).one() - print( - "Testing connection to data source: {} (id={})".format(name, data_source.id) - ) + print("Testing connection to data source: {} (id={})".format(name, data_source.id)) try: data_source.query_runner.test_connection() except Exception as e: @@ -165,11 +159,7 @@ def value_proc(value): print("Error: invalid configuration.") exit(1) - print( - "Creating {} data source ({}) with options:\n{}".format( - type, name, options.to_json() - ) - ) + print("Creating {} data source ({}) with options:\n{}".format(type, name, options.to_json())) data_source = models.DataSource.create_with_group( name=name, diff --git a/redash/cli/database.py b/redash/cli/database.py index 3a2fc8e991..4520c5f4eb 100644 --- a/redash/cli/database.py +++ b/redash/cli/database.py @@ -1,9 +1,9 @@ import time +import sqlalchemy from click import argument, option from flask.cli import AppGroup from flask_migrate import stamp -import sqlalchemy from sqlalchemy.exc import DatabaseError from sqlalchemy.sql import select from sqlalchemy_utils.types.encrypted.encrypted_type import FernetEngine @@ -93,9 +93,7 @@ def _reencrypt_for_table(table_name, orm_name): Column("id", key_type(orm_name), primary_key=True), Column( "encrypted_options", - ConfigurationContainer.as_mutable( - EncryptedConfiguration(db.Text, old_secret, FernetEngine) - ), + ConfigurationContainer.as_mutable(EncryptedConfiguration(db.Text, old_secret, FernetEngine)), ), ) table_for_update = sqlalchemy.Table( @@ -104,9 +102,7 @@ def _reencrypt_for_table(table_name, orm_name): Column("id", key_type(orm_name), primary_key=True), Column( "encrypted_options", - ConfigurationContainer.as_mutable( - EncryptedConfiguration(db.Text, new_secret, FernetEngine) - ), + ConfigurationContainer.as_mutable(EncryptedConfiguration(db.Text, new_secret, FernetEngine)), ), ) diff --git a/redash/cli/groups.py b/redash/cli/groups.py index 4272e9c6b1..2da7dcd776 100644 --- a/redash/cli/groups.py +++ b/redash/cli/groups.py @@ -64,10 +64,7 @@ def change_permissions(group_id, permissions=None): exit(1) permissions = extract_permissions_string(permissions) - print( - "current permissions [%s] will be modify to [%s]" - % (",".join(group.permissions), ",".join(permissions)) - ) + print("current permissions [%s] will be modify to [%s]" % (",".join(group.permissions), ",".join(permissions))) group.permissions = permissions diff --git a/redash/cli/organization.py b/redash/cli/organization.py index 117f51350b..33282d050a 100644 --- a/redash/cli/organization.py +++ b/redash/cli/organization.py @@ -17,21 +17,13 @@ def set_google_apps_domains(domains): organization.settings[k] = domains.split(",") models.db.session.add(organization) models.db.session.commit() - print( - "Updated list of allowed domains to: {}".format( - organization.google_apps_domains - ) - ) + print("Updated list of allowed domains to: {}".format(organization.google_apps_domains)) @manager.command(name="show_google_apps_domains") def show_google_apps_domains(): organization = models.Organization.query.first() - print( - "Current list of Google Apps domains: {}".format( - ", ".join(organization.google_apps_domains) - ) - ) + print("Current list of Google Apps domains: {}".format(", ".join(organization.google_apps_domains))) @manager.command(name="list") diff --git a/redash/cli/rq.py b/redash/cli/rq.py index 97fdaab43d..c2c1ed6f7a 100644 --- a/redash/cli/rq.py +++ b/redash/cli/rq.py @@ -1,7 +1,5 @@ -from __future__ import absolute_import -import socket -import sys import datetime +import socket from itertools import chain from click import argument @@ -14,11 +12,11 @@ from redash import rq_redis_connection from redash.tasks import ( - Worker, + periodic_job_definitions, rq_scheduler, schedule_periodic_jobs, - periodic_job_definitions, ) +from redash.tasks.worker import Worker from redash.worker import default_queues manager = AppGroup(help="RQ management commands.") @@ -55,11 +53,7 @@ class WorkerHealthcheck(base.BaseCheck): def __call__(self, process_spec): pid = process_spec["pid"] all_workers = Worker.all(connection=rq_redis_connection) - workers = [ - w - for w in all_workers - if w.hostname == socket.gethostname() and w.pid == pid - ] + workers = [w for w in all_workers if w.hostname == socket.gethostname() and w.pid == pid] if not workers: self._log(f"Cannot find worker for hostname {socket.gethostname()} and pid {pid}. ==> Is healthy? False") @@ -96,6 +90,4 @@ def __call__(self, process_spec): @manager.command() def healthcheck(): - return check_runner.CheckRunner( - "worker_healthcheck", "worker", None, [(WorkerHealthcheck, {})] - ).run() + return check_runner.CheckRunner("worker_healthcheck", "worker", None, [(WorkerHealthcheck, {})]).run() diff --git a/redash/cli/users.py b/redash/cli/users.py index b06808ceda..845482271d 100644 --- a/redash/cli/users.py +++ b/redash/cli/users.py @@ -136,17 +136,13 @@ def create( "--password", "password", default=None, - help="Password for root user who don't use Google Auth " - "(leave blank for prompt).", + help="Password for root user who don't use Google Auth (leave blank for prompt).", ) def create_root(email, name, google_auth=False, password=None, organization="default"): """ Create root user. """ - print( - "Creating root user (%s, %s) in organization %s..." - % (email, name, organization) - ) + print("Creating root user (%s, %s) in organization %s..." % (email, name, organization)) print("Login with Google Auth: %r\n" % google_auth) user = models.User.query.filter(models.User.email == email).first() @@ -206,13 +202,9 @@ def delete(email, organization=None): """ if organization: org = models.Organization.get_by_slug(organization) - deleted_count = models.User.query.filter( - models.User.email == email, models.User.org == org.id - ).delete() + deleted_count = models.User.query.filter(models.User.email == email, models.User.org == org.id).delete() else: - deleted_count = models.User.query.filter(models.User.email == email).delete( - synchronize_session=False - ) + deleted_count = models.User.query.filter(models.User.email == email).delete(synchronize_session=False) models.db.session.commit() print("Deleted %d users." % deleted_count) @@ -232,9 +224,7 @@ def password(email, password, organization=None): """ if organization: org = models.Organization.get_by_slug(organization) - user = models.User.query.filter( - models.User.email == email, models.User.org == org - ).first() + user = models.User.query.filter(models.User.email == email, models.User.org == org).first() else: user = models.User.query.filter(models.User.email == email).first() diff --git a/redash/destinations/__init__.py b/redash/destinations/__init__.py index bbd5fef9cb..0d05a3470a 100644 --- a/redash/destinations/__init__.py +++ b/redash/destinations/__init__.py @@ -41,7 +41,7 @@ def to_dict(cls): "type": cls.type(), "icon": cls.icon(), "configuration_schema": cls.configuration_schema(), - **({ "deprecated": True } if cls.deprecated else {}) + **({"deprecated": True} if cls.deprecated else {}), } diff --git a/redash/destinations/chatwork.py b/redash/destinations/chatwork.py index b3ea726608..ed021e6762 100644 --- a/redash/destinations/chatwork.py +++ b/redash/destinations/chatwork.py @@ -1,13 +1,12 @@ import logging + import requests -from redash.destinations import * +from redash.destinations import BaseDestination, register class ChatWork(BaseDestination): - ALERTS_DEFAULT_MESSAGE_TEMPLATE = ( - "{alert_name} changed state to {new_state}.\\n{alert_url}\\n{query_url}" - ) + ALERTS_DEFAULT_MESSAGE_TEMPLATE = "{alert_name} changed state to {new_state}.\\n{alert_url}\\n{query_url}" @classmethod def configuration_schema(cls): @@ -33,9 +32,7 @@ def icon(cls): def notify(self, alert, query, user, new_state, app, host, options): try: # Documentation: http://developer.chatwork.com/ja/endpoint_rooms.html#POST-rooms-room_id-messages - url = "https://api.chatwork.com/v2/rooms/{room_id}/messages".format( - room_id=options.get("room_id") - ) + url = "https://api.chatwork.com/v2/rooms/{room_id}/messages".format(room_id=options.get("room_id")) message = "" if alert.custom_subject: @@ -43,15 +40,9 @@ def notify(self, alert, query, user, new_state, app, host, options): if alert.custom_body: message += alert.custom_body else: - alert_url = "{host}/alerts/{alert_id}".format( - host=host, alert_id=alert.id - ) - query_url = "{host}/queries/{query_id}".format( - host=host, query_id=query.id - ) - message_template = options.get( - "message_template", ChatWork.ALERTS_DEFAULT_MESSAGE_TEMPLATE - ) + alert_url = "{host}/alerts/{alert_id}".format(host=host, alert_id=alert.id) + query_url = "{host}/queries/{query_id}".format(host=host, query_id=query.id) + message_template = options.get("message_template", ChatWork.ALERTS_DEFAULT_MESSAGE_TEMPLATE) message += message_template.replace("\\n", "\n").format( alert_name=alert.name, new_state=new_state.upper(), @@ -65,11 +56,7 @@ def notify(self, alert, query, user, new_state, app, host, options): resp = requests.post(url, headers=headers, data=payload, timeout=5.0) logging.warning(resp.text) if resp.status_code != 200: - logging.error( - "ChatWork send ERROR. status_code => {status}".format( - status=resp.status_code - ) - ) + logging.error("ChatWork send ERROR. status_code => {status}".format(status=resp.status_code)) except Exception: logging.exception("ChatWork send ERROR.") diff --git a/redash/destinations/email.py b/redash/destinations/email.py index 11923aa2ed..2b1a70a225 100644 --- a/redash/destinations/email.py +++ b/redash/destinations/email.py @@ -1,8 +1,9 @@ import logging from flask_mail import Message + from redash import mail, settings -from redash.destinations import * +from redash.destinations import BaseDestination, register class Email(BaseDestination): @@ -27,9 +28,7 @@ def icon(cls): return "fa-envelope" def notify(self, alert, query, user, new_state, app, host, options): - recipients = [ - email for email in options.get("addresses", "").split(",") if email - ] + recipients = [email for email in options.get("addresses", "").split(",") if email] if not recipients: logging.warning("No emails given. Skipping send.") @@ -50,9 +49,7 @@ def notify(self, alert, query, user, new_state, app, host, options): if alert.custom_subject: subject = alert.custom_subject else: - subject_template = options.get( - "subject_template", settings.ALERTS_DEFAULT_MAIL_SUBJECT_TEMPLATE - ) + subject_template = options.get("subject_template", settings.ALERTS_DEFAULT_MAIL_SUBJECT_TEMPLATE) subject = subject_template.format(alert_name=alert.name, state=state) message = Message(recipients=recipients, subject=subject, html=html) diff --git a/redash/destinations/hangoutschat.py b/redash/destinations/hangoutschat.py index e896913b2a..845aa7d4eb 100644 --- a/redash/destinations/hangoutschat.py +++ b/redash/destinations/hangoutschat.py @@ -1,7 +1,8 @@ import logging + import requests -from redash.destinations import * +from redash.destinations import BaseDestination, register from redash.utils import json_dumps @@ -43,9 +44,7 @@ def notify(self, alert, query, user, new_state, app, host, options): elif new_state == "ok": message = 'Went back to normal' else: - message = ( - "Unable to determine status. Check Query and Alert configuration." - ) + message = "Unable to determine status. Check Query and Alert configuration." if alert.custom_subject: title = alert.custom_subject @@ -56,17 +55,13 @@ def notify(self, alert, query, user, new_state, app, host, options): "cards": [ { "header": {"title": title}, - "sections": [ - {"widgets": [{"textParagraph": {"text": message}}]} - ], + "sections": [{"widgets": [{"textParagraph": {"text": message}}]}], } ] } if alert.custom_body: - data["cards"][0]["sections"].append( - {"widgets": [{"textParagraph": {"text": alert.custom_body}}]} - ) + data["cards"][0]["sections"].append({"widgets": [{"textParagraph": {"text": alert.custom_body}}]}) if options.get("icon_url"): data["cards"][0]["header"]["imageUrl"] = options.get("icon_url") @@ -81,9 +76,7 @@ def notify(self, alert, query, user, new_state, app, host, options): "text": "OPEN QUERY", "onClick": { "openLink": { - "url": "{host}/queries/{query_id}".format( - host=host, query_id=query.id - ) + "url": "{host}/queries/{query_id}".format(host=host, query_id=query.id) } }, } @@ -93,15 +86,9 @@ def notify(self, alert, query, user, new_state, app, host, options): ) headers = {"Content-Type": "application/json; charset=UTF-8"} - resp = requests.post( - options.get("url"), data=json_dumps(data), headers=headers, timeout=5.0 - ) + resp = requests.post(options.get("url"), data=json_dumps(data), headers=headers, timeout=5.0) if resp.status_code != 200: - logging.error( - "webhook send ERROR. status_code => {status}".format( - status=resp.status_code - ) - ) + logging.error("webhook send ERROR. status_code => {status}".format(status=resp.status_code)) except Exception: logging.exception("webhook send ERROR.") diff --git a/redash/destinations/hipchat.py b/redash/destinations/hipchat.py index a8bd8c882f..f5262c1f0f 100644 --- a/redash/destinations/hipchat.py +++ b/redash/destinations/hipchat.py @@ -1,10 +1,10 @@ import logging + import requests -from redash.destinations import * +from redash.destinations import BaseDestination, register from redash.models import Alert -from redash.utils import json_dumps, deprecated - +from redash.utils import deprecated, json_dumps colors = { Alert.OK_STATE: "green", @@ -47,14 +47,10 @@ def notify(self, alert, query, user, new_state, app, host, options): data = {"message": message, "color": colors.get(new_state, "green")} headers = {"Content-Type": "application/json"} - response = requests.post( - options["url"], data=json_dumps(data), headers=headers, timeout=5.0 - ) + response = requests.post(options["url"], data=json_dumps(data), headers=headers, timeout=5.0) if response.status_code != 204: - logging.error( - "Bad status code received from HipChat: %d", response.status_code - ) + logging.error("Bad status code received from HipChat: %d", response.status_code) except Exception: logging.exception("HipChat Send ERROR.") diff --git a/redash/destinations/mattermost.py b/redash/destinations/mattermost.py index 106e1184ef..e464376230 100644 --- a/redash/destinations/mattermost.py +++ b/redash/destinations/mattermost.py @@ -1,7 +1,8 @@ import logging + import requests -from redash.destinations import * +from redash.destinations import BaseDestination, register from redash.utils import json_dumps @@ -16,7 +17,7 @@ def configuration_schema(cls): "icon_url": {"type": "string", "title": "Icon (URL)"}, "channel": {"type": "string", "title": "Channel"}, }, - "secret": "url" + "secret": "url", } @classmethod @@ -33,9 +34,7 @@ def notify(self, alert, query, user, new_state, app, host, options): payload = {"text": text} if alert.custom_body: - payload["attachments"] = [ - {"fields": [{"title": "Description", "value": alert.custom_body}]} - ] + payload["attachments"] = [{"fields": [{"title": "Description", "value": alert.custom_body}]}] if options.get("username"): payload["username"] = options.get("username") @@ -45,17 +44,11 @@ def notify(self, alert, query, user, new_state, app, host, options): payload["channel"] = options.get("channel") try: - resp = requests.post( - options.get("url"), data=json_dumps(payload), timeout=5.0 - ) + resp = requests.post(options.get("url"), data=json_dumps(payload), timeout=5.0) logging.warning(resp.text) if resp.status_code != 200: - logging.error( - "Mattermost webhook send ERROR. status_code => {status}".format( - status=resp.status_code - ) - ) + logging.error("Mattermost webhook send ERROR. status_code => {status}".format(status=resp.status_code)) except Exception: logging.exception("Mattermost webhook send ERROR.") diff --git a/redash/destinations/microsoft_teams_webhook.py b/redash/destinations/microsoft_teams_webhook.py index c8a320c6c0..178b987189 100644 --- a/redash/destinations/microsoft_teams_webhook.py +++ b/redash/destinations/microsoft_teams_webhook.py @@ -1,10 +1,10 @@ import logging -import requests from string import Template -from redash.destinations import * +import requests + +from redash.destinations import BaseDestination, register from redash.utils import json_dumps -from redash.serializers import serialize_alert def json_string_substitute(j, substitutions): @@ -26,30 +26,26 @@ def json_string_substitute(j, substitutions): class MicrosoftTeamsWebhook(BaseDestination): - ALERTS_DEFAULT_MESSAGE_TEMPLATE = json_dumps({ - "@type": "MessageCard", - "@context": "http://schema.org/extensions", - "themeColor": "0076D7", - "summary": "A Redash Alert was Triggered", - "sections": [{ - "activityTitle": "A Redash Alert was Triggered", - "facts": [{ - "name": "Alert Name", - "value": "{alert_name}" - }, { - "name": "Alert URL", - "value": "{alert_url}" - }, { - "name": "Query", - "value": "{query_text}" - }, { - "name": "Query URL", - "value": "{query_url}" - }], - "markdown": True - }] - }) - + ALERTS_DEFAULT_MESSAGE_TEMPLATE = json_dumps( + { + "@type": "MessageCard", + "@context": "http://schema.org/extensions", + "themeColor": "0076D7", + "summary": "A Redash Alert was Triggered", + "sections": [ + { + "activityTitle": "A Redash Alert was Triggered", + "facts": [ + {"name": "Alert Name", "value": "{alert_name}"}, + {"name": "Alert URL", "value": "{alert_url}"}, + {"name": "Query", "value": "{query_text}"}, + {"name": "Query URL", "value": "{query_url}"}, + ], + "markdown": True, + } + ], + } + ) @classmethod def name(cls): @@ -64,10 +60,7 @@ def configuration_schema(cls): return { "type": "object", "properties": { - "url": { - "type": "string", - "title": "Microsoft Teams Webhook URL" - }, + "url": {"type": "string", "title": "Microsoft Teams Webhook URL"}, "message_template": { "type": "string", "default": MicrosoftTeamsWebhook.ALERTS_DEFAULT_MESSAGE_TEMPLATE, @@ -86,26 +79,23 @@ def notify(self, alert, query, user, new_state, app, host, options): :type app: redash.Redash """ try: - alert_url = "{host}/alerts/{alert_id}".format( - host=host, alert_id=alert.id - ) + alert_url = "{host}/alerts/{alert_id}".format(host=host, alert_id=alert.id) - query_url = "{host}/queries/{query_id}".format( - host=host, query_id=query.id - ) + query_url = "{host}/queries/{query_id}".format(host=host, query_id=query.id) - message_template = options.get( - "message_template", MicrosoftTeamsWebhook.ALERTS_DEFAULT_MESSAGE_TEMPLATE - ) + message_template = options.get("message_template", MicrosoftTeamsWebhook.ALERTS_DEFAULT_MESSAGE_TEMPLATE) # Doing a string Template substitution here because the template contains braces, which # result in keyerrors when attempting string.format - payload = json_string_substitute(message_template, { - "alert_name": alert.name, - "alert_url": alert_url, - "query_text": query.query_text, - "query_url": query_url - }) + payload = json_string_substitute( + message_template, + { + "alert_name": alert.name, + "alert_url": alert_url, + "query_text": query.query_text, + "query_url": query_url, + }, + ) headers = {"Content-Type": "application/json"} @@ -116,11 +106,7 @@ def notify(self, alert, query, user, new_state, app, host, options): timeout=5.0, ) if resp.status_code != 200: - logging.error( - "MS Teams Webhook send ERROR. status_code => {status}".format( - status=resp.status_code - ) - ) + logging.error("MS Teams Webhook send ERROR. status_code => {status}".format(status=resp.status_code)) except Exception: logging.exception("MS Teams Webhook send ERROR.") diff --git a/redash/destinations/pagerduty.py b/redash/destinations/pagerduty.py index 9ffb5fbc65..9d48aa9ed1 100644 --- a/redash/destinations/pagerduty.py +++ b/redash/destinations/pagerduty.py @@ -1,5 +1,6 @@ import logging -from redash.destinations import * + +from redash.destinations import BaseDestination, register enabled = True @@ -10,7 +11,6 @@ class PagerDuty(BaseDestination): - KEY_STRING = "{alert_id}_{query_id}" DESCRIPTION_STR = "Alert: {alert_name}" @@ -41,7 +41,6 @@ def icon(cls): return "creative-commons-pd-alt" def notify(self, alert, query, user, new_state, app, host, options): - if alert.custom_subject: default_desc = alert.custom_subject elif options.get("description"): @@ -73,7 +72,6 @@ def notify(self, alert, query, user, new_state, app, host, options): data["event_action"] = "resolve" try: - ev = pypd.EventV2.create(data=data) logging.warning(ev) diff --git a/redash/destinations/slack.py b/redash/destinations/slack.py index 7505dd9be1..d6ecb10e36 100644 --- a/redash/destinations/slack.py +++ b/redash/destinations/slack.py @@ -1,7 +1,8 @@ import logging + import requests -from redash.destinations import * +from redash.destinations import BaseDestination, register from redash.utils import json_dumps @@ -25,16 +26,12 @@ def notify(self, alert, query, user, new_state, app, host, options): fields = [ { "title": "Query", - "value": "{host}/queries/{query_id}".format( - host=host, query_id=query.id - ), + "value": "{host}/queries/{query_id}".format(host=host, query_id=query.id), "short": True, }, { "title": "Alert", - "value": "{host}/alerts/{alert_id}".format( - host=host, alert_id=alert.id - ), + "value": "{host}/alerts/{alert_id}".format(host=host, alert_id=alert.id), "short": True, }, ] @@ -53,16 +50,10 @@ def notify(self, alert, query, user, new_state, app, host, options): payload = {"attachments": [{"text": text, "color": color, "fields": fields}]} try: - resp = requests.post( - options.get("url"), data=json_dumps(payload), timeout=5.0 - ) + resp = requests.post(options.get("url"), data=json_dumps(payload), timeout=5.0) logging.warning(resp.text) if resp.status_code != 200: - logging.error( - "Slack send ERROR. status_code => {status}".format( - status=resp.status_code - ) - ) + logging.error("Slack send ERROR. status_code => {status}".format(status=resp.status_code)) except Exception: logging.exception("Slack send ERROR.") diff --git a/redash/destinations/webhook.py b/redash/destinations/webhook.py index ad5ccb1e9a..0540f27500 100644 --- a/redash/destinations/webhook.py +++ b/redash/destinations/webhook.py @@ -1,10 +1,11 @@ import logging + import requests from requests.auth import HTTPBasicAuth -from redash.destinations import * -from redash.utils import json_dumps +from redash.destinations import BaseDestination, register from redash.serializers import serialize_alert +from redash.utils import json_dumps class Webhook(BaseDestination): @@ -37,11 +38,7 @@ def notify(self, alert, query, user, new_state, app, host, options): data["alert"]["title"] = alert.custom_subject headers = {"Content-Type": "application/json"} - auth = ( - HTTPBasicAuth(options.get("username"), options.get("password")) - if options.get("username") - else None - ) + auth = HTTPBasicAuth(options.get("username"), options.get("password")) if options.get("username") else None resp = requests.post( options.get("url"), data=json_dumps(data), @@ -50,11 +47,7 @@ def notify(self, alert, query, user, new_state, app, host, options): timeout=5.0, ) if resp.status_code != 200: - logging.error( - "webhook send ERROR. status_code => {status}".format( - status=resp.status_code - ) - ) + logging.error("webhook send ERROR. status_code => {status}".format(status=resp.status_code)) except Exception: logging.exception("webhook send ERROR.") diff --git a/redash/handlers/__init__.py b/redash/handlers/__init__.py index a7a05ed0f7..8c6e61d8fe 100644 --- a/redash/handlers/__init__.py +++ b/redash/handlers/__init__.py @@ -24,13 +24,13 @@ def status_api(): def init_app(app): from redash.handlers import ( + admin, + authentication, embed, + organization, queries, - static, - authentication, - admin, setup, - organization, + static, ) app.register_blueprint(routes) diff --git a/redash/handlers/admin.py b/redash/handlers/admin.py index 753494d341..b376beec25 100644 --- a/redash/handlers/admin.py +++ b/redash/handlers/admin.py @@ -1,14 +1,13 @@ -from flask import request -from flask_login import login_required, current_user +from flask_login import current_user, login_required from redash import models, redis_connection from redash.authentication import current_org from redash.handlers import routes from redash.handlers.base import json_response, record_event +from redash.monitor import rq_status from redash.permissions import require_super_admin from redash.serializers import QuerySerializer from redash.utils import json_loads -from redash.monitor import rq_status @routes.route("/api/admin/queries/outdated", methods=["GET"]) @@ -29,13 +28,14 @@ def outdated_queries(): record_event( current_org, current_user._get_current_object(), - {"action": "list", "object_type": "outdated_queries",}, + { + "action": "list", + "object_type": "outdated_queries", + }, ) response = { - "queries": QuerySerializer( - outdated_queries, with_stats=True, with_last_modified_by=False - ).serialize(), + "queries": QuerySerializer(outdated_queries, with_stats=True, with_last_modified_by=False).serialize(), "updated_at": manager_status["last_refresh_at"], } return json_response(response) diff --git a/redash/handlers/alerts.py b/redash/handlers/alerts.py index 6efa7d4652..9a59cd3cc0 100644 --- a/redash/handlers/alerts.py +++ b/redash/handlers/alerts.py @@ -1,52 +1,43 @@ -import time - from flask import request from funcy import project from redash import models -from redash.serializers import serialize_alert -from redash.handlers.base import BaseResource, get_object_or_404, require_fields +from redash.handlers.base import ( + BaseResource, + get_object_or_404, + require_fields, +) from redash.permissions import ( require_access, require_admin_or_owner, require_permission, view_only, ) -from redash.utils import json_dumps +from redash.serializers import serialize_alert class AlertResource(BaseResource): def get(self, alert_id): - alert = get_object_or_404( - models.Alert.get_by_id_and_org, alert_id, self.current_org - ) + alert = get_object_or_404(models.Alert.get_by_id_and_org, alert_id, self.current_org) require_access(alert, self.current_user, view_only) - self.record_event( - {"action": "view", "object_id": alert.id, "object_type": "alert"} - ) + self.record_event({"action": "view", "object_id": alert.id, "object_type": "alert"}) return serialize_alert(alert) def post(self, alert_id): req = request.get_json(True) params = project(req, ("options", "name", "query_id", "rearm")) - alert = get_object_or_404( - models.Alert.get_by_id_and_org, alert_id, self.current_org - ) + alert = get_object_or_404(models.Alert.get_by_id_and_org, alert_id, self.current_org) require_admin_or_owner(alert.user.id) self.update_model(alert, params) models.db.session.commit() - self.record_event( - {"action": "edit", "object_id": alert.id, "object_type": "alert"} - ) + self.record_event({"action": "edit", "object_id": alert.id, "object_type": "alert"}) return serialize_alert(alert) def delete(self, alert_id): - alert = get_object_or_404( - models.Alert.get_by_id_and_org, alert_id, self.current_org - ) + alert = get_object_or_404(models.Alert.get_by_id_and_org, alert_id, self.current_org) require_admin_or_owner(alert.user_id) models.db.session.delete(alert) models.db.session.commit() @@ -54,30 +45,22 @@ def delete(self, alert_id): class AlertMuteResource(BaseResource): def post(self, alert_id): - alert = get_object_or_404( - models.Alert.get_by_id_and_org, alert_id, self.current_org - ) + alert = get_object_or_404(models.Alert.get_by_id_and_org, alert_id, self.current_org) require_admin_or_owner(alert.user.id) alert.options["muted"] = True models.db.session.commit() - self.record_event( - {"action": "mute", "object_id": alert.id, "object_type": "alert"} - ) + self.record_event({"action": "mute", "object_id": alert.id, "object_type": "alert"}) def delete(self, alert_id): - alert = get_object_or_404( - models.Alert.get_by_id_and_org, alert_id, self.current_org - ) + alert = get_object_or_404(models.Alert.get_by_id_and_org, alert_id, self.current_org) require_admin_or_owner(alert.user.id) alert.options["muted"] = False models.db.session.commit() - self.record_event( - {"action": "unmute", "object_id": alert.id, "object_type": "alert"} - ) + self.record_event({"action": "unmute", "object_id": alert.id, "object_type": "alert"}) class AlertListResource(BaseResource): @@ -100,19 +83,14 @@ def post(self): models.db.session.flush() models.db.session.commit() - self.record_event( - {"action": "create", "object_id": alert.id, "object_type": "alert"} - ) + self.record_event({"action": "create", "object_id": alert.id, "object_type": "alert"}) return serialize_alert(alert) @require_permission("list_alerts") def get(self): self.record_event({"action": "list", "object_type": "alert"}) - return [ - serialize_alert(alert) - for alert in models.Alert.all(group_ids=self.current_user.group_ids) - ] + return [serialize_alert(alert) for alert in models.Alert.all(group_ids=self.current_user.group_ids)] class AlertSubscriptionListResource(BaseResource): @@ -124,9 +102,7 @@ def post(self, alert_id): kwargs = {"alert": alert, "user": self.current_user} if "destination_id" in req: - destination = models.NotificationDestination.get_by_id_and_org( - req["destination_id"], self.current_org - ) + destination = models.NotificationDestination.get_by_id_and_org(req["destination_id"], self.current_org) kwargs["destination"] = destination subscription = models.AlertSubscription(**kwargs) @@ -160,6 +136,4 @@ def delete(self, alert_id, subscriber_id): models.db.session.delete(subscription) models.db.session.commit() - self.record_event( - {"action": "unsubscribe", "object_id": alert_id, "object_type": "alert"} - ) + self.record_event({"action": "unsubscribe", "object_id": alert_id, "object_type": "alert"}) diff --git a/redash/handlers/api.py b/redash/handlers/api.py index 2d945531de..b5aaa23923 100644 --- a/redash/handlers/api.py +++ b/redash/handlers/api.py @@ -4,19 +4,19 @@ from redash.handlers.alerts import ( AlertListResource, - AlertResource, AlertMuteResource, + AlertResource, AlertSubscriptionListResource, AlertSubscriptionResource, ) from redash.handlers.base import org_scoped_rule from redash.handlers.dashboards import ( - MyDashboardsResource, DashboardFavoriteListResource, DashboardListResource, DashboardResource, DashboardShareResource, DashboardTagsResource, + MyDashboardsResource, PublicDashboardResource, ) from redash.handlers.data_sources import ( @@ -38,7 +38,10 @@ DestinationTypeListResource, ) from redash.handlers.events import EventsResource -from redash.handlers.favorites import DashboardFavoriteResource, QueryFavoriteResource +from redash.handlers.favorites import ( + DashboardFavoriteResource, + QueryFavoriteResource, +) from redash.handlers.groups import ( GroupDataSourceListResource, GroupDataSourceResource, @@ -59,15 +62,15 @@ QueryListResource, QueryRecentResource, QueryRefreshResource, + QueryRegenerateApiKeyResource, QueryResource, QuerySearchResource, QueryTagsResource, - QueryRegenerateApiKeyResource, ) from redash.handlers.query_results import ( JobResource, - QueryResultDropdownResource, QueryDropdownsResource, + QueryResultDropdownResource, QueryResultListResource, QueryResultResource, ) @@ -112,9 +115,7 @@ def json_representation(data, code, headers=None): api.add_org_resource(AlertResource, "/api/alerts/", endpoint="alert") -api.add_org_resource( - AlertMuteResource, "/api/alerts//mute", endpoint="alert_mute" -) +api.add_org_resource(AlertMuteResource, "/api/alerts//mute", endpoint="alert_mute") api.add_org_resource( AlertSubscriptionListResource, "/api/alerts//subscriptions", @@ -128,9 +129,7 @@ def json_representation(data, code, headers=None): api.add_org_resource(AlertListResource, "/api/alerts", endpoint="alerts") api.add_org_resource(DashboardListResource, "/api/dashboards", endpoint="dashboards") -api.add_org_resource( - DashboardResource, "/api/dashboards/", endpoint="dashboard" -) +api.add_org_resource(DashboardResource, "/api/dashboards/", endpoint="dashboard") api.add_org_resource( PublicDashboardResource, "/api/dashboards/public/", @@ -142,18 +141,10 @@ def json_representation(data, code, headers=None): endpoint="dashboard_share", ) -api.add_org_resource( - DataSourceTypeListResource, "/api/data_sources/types", endpoint="data_source_types" -) -api.add_org_resource( - DataSourceListResource, "/api/data_sources", endpoint="data_sources" -) -api.add_org_resource( - DataSourceSchemaResource, "/api/data_sources//schema" -) -api.add_org_resource( - DatabricksDatabaseListResource, "/api/databricks/databases/" -) +api.add_org_resource(DataSourceTypeListResource, "/api/data_sources/types", endpoint="data_source_types") +api.add_org_resource(DataSourceListResource, "/api/data_sources", endpoint="data_sources") +api.add_org_resource(DataSourceSchemaResource, "/api/data_sources//schema") +api.add_org_resource(DatabricksDatabaseListResource, "/api/databricks/databases/") api.add_org_resource( DatabricksSchemaResource, "/api/databricks/databases///tables", @@ -162,19 +153,13 @@ def json_representation(data, code, headers=None): DatabricksTableColumnListResource, "/api/databricks/databases///columns/", ) -api.add_org_resource( - DataSourcePauseResource, "/api/data_sources//pause" -) +api.add_org_resource(DataSourcePauseResource, "/api/data_sources//pause") api.add_org_resource(DataSourceTestResource, "/api/data_sources//test") -api.add_org_resource( - DataSourceResource, "/api/data_sources/", endpoint="data_source" -) +api.add_org_resource(DataSourceResource, "/api/data_sources/", endpoint="data_source") api.add_org_resource(GroupListResource, "/api/groups", endpoint="groups") api.add_org_resource(GroupResource, "/api/groups/", endpoint="group") -api.add_org_resource( - GroupMemberListResource, "/api/groups//members", endpoint="group_members" -) +api.add_org_resource(GroupMemberListResource, "/api/groups//members", endpoint="group_members") api.add_org_resource( GroupMemberResource, "/api/groups//members/", @@ -193,12 +178,8 @@ def json_representation(data, code, headers=None): api.add_org_resource(EventsResource, "/api/events", endpoint="events") -api.add_org_resource( - QueryFavoriteListResource, "/api/queries/favorites", endpoint="query_favorites" -) -api.add_org_resource( - QueryFavoriteResource, "/api/queries//favorite", endpoint="query_favorite" -) +api.add_org_resource(QueryFavoriteListResource, "/api/queries/favorites", endpoint="query_favorites") +api.add_org_resource(QueryFavoriteResource, "/api/queries//favorite", endpoint="query_favorite") api.add_org_resource( DashboardFavoriteListResource, "/api/dashboards/favorites", @@ -213,28 +194,16 @@ def json_representation(data, code, headers=None): api.add_org_resource(MyDashboardsResource, "/api/dashboards/my", endpoint="my_dashboards") api.add_org_resource(QueryTagsResource, "/api/queries/tags", endpoint="query_tags") -api.add_org_resource( - DashboardTagsResource, "/api/dashboards/tags", endpoint="dashboard_tags" -) +api.add_org_resource(DashboardTagsResource, "/api/dashboards/tags", endpoint="dashboard_tags") -api.add_org_resource( - QuerySearchResource, "/api/queries/search", endpoint="queries_search" -) -api.add_org_resource( - QueryRecentResource, "/api/queries/recent", endpoint="recent_queries" -) -api.add_org_resource( - QueryArchiveResource, "/api/queries/archive", endpoint="queries_archive" -) +api.add_org_resource(QuerySearchResource, "/api/queries/search", endpoint="queries_search") +api.add_org_resource(QueryRecentResource, "/api/queries/recent", endpoint="recent_queries") +api.add_org_resource(QueryArchiveResource, "/api/queries/archive", endpoint="queries_archive") api.add_org_resource(QueryListResource, "/api/queries", endpoint="queries") api.add_org_resource(MyQueriesResource, "/api/queries/my", endpoint="my_queries") -api.add_org_resource( - QueryRefreshResource, "/api/queries//refresh", endpoint="query_refresh" -) +api.add_org_resource(QueryRefreshResource, "/api/queries//refresh", endpoint="query_refresh") api.add_org_resource(QueryResource, "/api/queries/", endpoint="query") -api.add_org_resource( - QueryForkResource, "/api/queries//fork", endpoint="query_fork" -) +api.add_org_resource(QueryForkResource, "/api/queries//fork", endpoint="query_fork") api.add_org_resource( QueryRegenerateApiKeyResource, "/api/queries//regenerate_api_key", @@ -252,9 +221,7 @@ def json_representation(data, code, headers=None): endpoint="check_permissions", ) -api.add_org_resource( - QueryResultListResource, "/api/query_results", endpoint="query_results" -) +api.add_org_resource(QueryResultListResource, "/api/query_results", endpoint="query_results") api.add_org_resource( QueryResultDropdownResource, "/api/queries//dropdown", @@ -283,9 +250,7 @@ def json_representation(data, code, headers=None): api.add_org_resource(UserListResource, "/api/users", endpoint="users") api.add_org_resource(UserResource, "/api/users/", endpoint="user") -api.add_org_resource( - UserInviteResource, "/api/users//invite", endpoint="user_invite" -) +api.add_org_resource(UserInviteResource, "/api/users//invite", endpoint="user_invite") api.add_org_resource( UserResetPasswordResource, "/api/users//reset_password", @@ -296,13 +261,9 @@ def json_representation(data, code, headers=None): "/api/users//regenerate_api_key", endpoint="user_regenerate_api_key", ) -api.add_org_resource( - UserDisableResource, "/api/users//disable", endpoint="user_disable" -) +api.add_org_resource(UserDisableResource, "/api/users//disable", endpoint="user_disable") -api.add_org_resource( - VisualizationListResource, "/api/visualizations", endpoint="visualizations" -) +api.add_org_resource(VisualizationListResource, "/api/visualizations", endpoint="visualizations") api.add_org_resource( VisualizationResource, "/api/visualizations/", @@ -312,23 +273,11 @@ def json_representation(data, code, headers=None): api.add_org_resource(WidgetListResource, "/api/widgets", endpoint="widgets") api.add_org_resource(WidgetResource, "/api/widgets/", endpoint="widget") -api.add_org_resource( - DestinationTypeListResource, "/api/destinations/types", endpoint="destination_types" -) -api.add_org_resource( - DestinationResource, "/api/destinations/", endpoint="destination" -) -api.add_org_resource( - DestinationListResource, "/api/destinations", endpoint="destinations" -) +api.add_org_resource(DestinationTypeListResource, "/api/destinations/types", endpoint="destination_types") +api.add_org_resource(DestinationResource, "/api/destinations/", endpoint="destination") +api.add_org_resource(DestinationListResource, "/api/destinations", endpoint="destinations") -api.add_org_resource( - QuerySnippetResource, "/api/query_snippets/", endpoint="query_snippet" -) -api.add_org_resource( - QuerySnippetListResource, "/api/query_snippets", endpoint="query_snippets" -) +api.add_org_resource(QuerySnippetResource, "/api/query_snippets/", endpoint="query_snippet") +api.add_org_resource(QuerySnippetListResource, "/api/query_snippets", endpoint="query_snippets") -api.add_org_resource( - OrganizationSettings, "/api/settings/organization", endpoint="organization_settings" -) +api.add_org_resource(OrganizationSettings, "/api/settings/organization", endpoint="organization_settings") diff --git a/redash/handlers/authentication.py b/redash/handlers/authentication.py index c4e467c2eb..8afbf469be 100644 --- a/redash/handlers/authentication.py +++ b/redash/handlers/authentication.py @@ -1,13 +1,13 @@ import logging from flask import abort, flash, redirect, render_template, request, url_for - from flask_login import current_user, login_required, login_user, logout_user +from itsdangerous import BadSignature, SignatureExpired +from sqlalchemy.orm.exc import NoResultFound + from redash import __version__, limiter, models, settings from redash.authentication import current_org, get_login_url, get_next_path from redash.authentication.account import ( - BadSignature, - SignatureExpired, send_password_reset_email, send_user_disabled_email, send_verify_email, @@ -16,16 +16,13 @@ from redash.handlers import routes from redash.handlers.base import json_response, org_scoped_rule from redash.version_check import get_latest_version -from sqlalchemy.orm.exc import NoResultFound logger = logging.getLogger(__name__) def get_google_auth_url(next_path): if settings.MULTI_ORG: - google_auth_url = url_for( - "google_oauth.authorize_org", next=next_path, org_slug=current_org.slug - ) + google_auth_url = url_for("google_oauth.authorize_org", next=next_path, org_slug=current_org.slug) else: google_auth_url = url_for("google_oauth.authorize", next=next_path) return google_auth_url @@ -65,8 +62,7 @@ def render_token_login_page(template, org_slug, token, invite): render_template( "error.html", error_message=( - "This invitation has already been accepted. " - "Please try resetting your password instead." + "This invitation has already been accepted. Please try resetting your password instead." ), ), 400, @@ -126,9 +122,7 @@ def verify(token, org_slug=None): org = current_org._get_current_object() user = models.User.get_by_id_and_org(user_id, org) except (BadSignature, NoResultFound): - logger.exception( - "Failed to verify email verification token: %s, org=%s", token, org_slug - ) + logger.exception("Failed to verify email verification token: %s, org=%s", token, org_slug) return ( render_template( "error.html", @@ -175,11 +169,7 @@ def verification_email(org_slug=None): if not current_user.is_email_verified: send_verify_email(current_user, current_org) - return json_response( - { - "message": "Please check your email inbox in order to verify your email address." - } - ) + return json_response({"message": "Please check your email inbox in order to verify your email address."}) @routes.route(org_scoped_rule("/login"), methods=["GET", "POST"]) @@ -187,9 +177,9 @@ def verification_email(org_slug=None): def login(org_slug=None): # We intentionally use == as otherwise it won't actually use the proxy. So weird :O # noinspection PyComparisonWithNone - if current_org == None and not settings.MULTI_ORG: + if current_org == None and not settings.MULTI_ORG: # noqa: E711 return redirect("/setup") - elif current_org == None: + elif current_org == None: # noqa: E711 return redirect("/") index_url = url_for("redash.index", org_slug=org_slug) @@ -198,16 +188,11 @@ def login(org_slug=None): if current_user.is_authenticated: return redirect(next_path) - if request.method == "POST" and current_org.get_setting("auth_password_login_enabled"): try: org = current_org._get_current_object() user = models.User.get_by_email_and_org(request.form["email"], org) - if ( - user - and not user.is_disabled - and user.verify_password(request.form["password"]) - ): + if user and not user.is_disabled and user.verify_password(request.form["password"]): remember = "remember" in request.form login_user(user, remember=remember) return redirect(next_path) @@ -218,8 +203,6 @@ def login(org_slug=None): elif request.method == "POST" and not current_org.get_setting("auth_password_login_enabled"): flash("Password login is not enabled for your organization.") - - google_auth_url = get_google_auth_url(next_path) return render_template( @@ -280,20 +263,13 @@ def client_config(): else: client_config = {} - if ( - current_user.has_permission("admin") - and current_org.get_setting("beacon_consent") is None - ): + if current_user.has_permission("admin") and current_org.get_setting("beacon_consent") is None: client_config["showBeaconConsentMessage"] = True defaults = { "allowScriptsInUserInput": settings.ALLOW_SCRIPTS_IN_USER_INPUT, - "showPermissionsControl": current_org.get_setting( - "feature_show_permissions_control" - ), - "hidePlotlyModeBar": current_org.get_setting( - "hide_plotly_mode_bar" - ), + "showPermissionsControl": current_org.get_setting("feature_show_permissions_control"), + "hidePlotlyModeBar": current_org.get_setting("hide_plotly_mode_bar"), "disablePublicUrls": current_org.get_setting("disable_public_urls"), "allowCustomJSVisualizations": settings.FEATURE_ALLOW_CUSTOM_JS_VISUALIZATIONS, "autoPublishNamedQueries": settings.FEATURE_AUTO_PUBLISH_NAMED_QUERIES, @@ -330,9 +306,7 @@ def messages(): @routes.route("/api/config", methods=["GET"]) def config(org_slug=None): - return json_response( - {"org_slug": current_org.slug, "client_config": client_config()} - ) + return json_response({"org_slug": current_org.slug, "client_config": client_config()}) @routes.route(org_scoped_rule("/api/session"), methods=["GET"]) diff --git a/redash/handlers/base.py b/redash/handlers/base.py index 467b977471..a3f7ffffba 100644 --- a/redash/handlers/base.py +++ b/redash/handlers/base.py @@ -15,9 +15,7 @@ from redash.tasks import record_event as record_event_task from redash.utils import json_dumps -routes = Blueprint( - "redash", __name__, template_folder=settings.fix_assets_path("templates") -) +routes = Blueprint("redash", __name__, template_folder=settings.fix_assets_path("templates")) class BaseResource(Resource): @@ -116,9 +114,7 @@ def json_response(response): def filter_by_tags(result_set, column): if request.args.getlist("tags"): tags = request.args.getlist("tags") - result_set = result_set.filter( - cast(column, postgresql.ARRAY(db.Text)).contains(tags) - ) + result_set = result_set.filter(cast(column, postgresql.ARRAY(db.Text)).contains(tags)) return result_set diff --git a/redash/handlers/dashboards.py b/redash/handlers/dashboards.py index b86fb5e30d..604a554d46 100644 --- a/redash/handlers/dashboards.py +++ b/redash/handlers/dashboards.py @@ -1,15 +1,16 @@ from flask import request, url_for -from funcy import project, partial - from flask_restful import abort +from funcy import partial, project +from sqlalchemy.orm.exc import StaleDataError + from redash import models from redash.handlers.base import ( BaseResource, - get_object_or_404, - paginate, filter_by_tags, - order_results as _order_results, + get_object_or_404, ) +from redash.handlers.base import order_results as _order_results +from redash.handlers.base import paginate from redash.permissions import ( can_modify, require_admin_or_owner, @@ -17,12 +18,7 @@ require_permission, ) from redash.security import csp_allows_embeding -from redash.serializers import ( - DashboardSerializer, - public_dashboard, -) -from sqlalchemy.orm.exc import StaleDataError - +from redash.serializers import DashboardSerializer, public_dashboard # Ordering map for relationships order_map = { @@ -32,9 +28,7 @@ "-created_at": "-created_at", } -order_results = partial( - _order_results, default_order="-created_at", allowed_orders=order_map -) +order_results = partial(_order_results, default_order="-created_at", allowed_orders=order_map) class DashboardListResource(BaseResource): @@ -61,9 +55,7 @@ def get(self): search_term, ) else: - results = models.Dashboard.all( - self.current_org, self.current_user.group_ids, self.current_user.id - ) + results = models.Dashboard.all(self.current_org, self.current_user.group_ids, self.current_user.id) results = filter_by_tags(results, models.Dashboard.tags) @@ -83,9 +75,7 @@ def get(self): ) if search_term: - self.record_event( - {"action": "search", "object_type": "dashboard", "term": search_term} - ) + self.record_event({"action": "search", "object_type": "dashboard", "term": search_term}) else: self.record_event({"action": "list", "object_type": "dashboard"}) @@ -142,12 +132,7 @@ def get(self): page = request.args.get("page", 1, type=int) page_size = request.args.get("page_size", 25, type=int) - return paginate( - ordered_results, - page, - page_size, - DashboardSerializer - ) + return paginate(ordered_results, page, page_size, DashboardSerializer) class DashboardResource(BaseResource): @@ -193,9 +178,7 @@ def get(self, dashboard_id=None): fn = models.Dashboard.get_by_id_and_org dashboard = get_object_or_404(fn, dashboard_id, self.current_org) - response = DashboardSerializer( - dashboard, with_widgets=True, user=self.current_user - ).serialize() + response = DashboardSerializer(dashboard, with_widgets=True, user=self.current_user).serialize() api_key = models.ApiKey.get_by_object(dashboard) if api_key: @@ -209,9 +192,7 @@ def get(self, dashboard_id=None): response["can_edit"] = can_modify(dashboard, self.current_user) - self.record_event( - {"action": "view", "object_id": dashboard.id, "object_type": "dashboard"} - ) + self.record_event({"action": "view", "object_id": dashboard.id, "object_type": "dashboard"}) return response @@ -262,13 +243,9 @@ def post(self, dashboard_id): except StaleDataError: abort(409) - result = DashboardSerializer( - dashboard, with_widgets=True, user=self.current_user - ).serialize() + result = DashboardSerializer(dashboard, with_widgets=True, user=self.current_user).serialize() - self.record_event( - {"action": "edit", "object_id": dashboard.id, "object_type": "dashboard"} - ) + self.record_event({"action": "edit", "object_id": dashboard.id, "object_type": "dashboard"}) return result @@ -285,14 +262,10 @@ def delete(self, dashboard_id): dashboard.is_archived = True dashboard.record_changes(changed_by=self.current_user) models.db.session.add(dashboard) - d = DashboardSerializer( - dashboard, with_widgets=True, user=self.current_user - ).serialize() + d = DashboardSerializer(dashboard, with_widgets=True, user=self.current_user).serialize() models.db.session.commit() - self.record_event( - {"action": "archive", "object_id": dashboard.id, "object_type": "dashboard"} - ) + self.record_event({"action": "archive", "object_id": dashboard.id, "object_type": "dashboard"}) return d @@ -396,9 +369,7 @@ def get(self): self.current_user.id, search_term, ) - favorites = models.Dashboard.favorites( - self.current_user, base_query=base_query - ) + favorites = models.Dashboard.favorites(self.current_user, base_query=base_query) else: favorites = models.Dashboard.favorites(self.current_user) diff --git a/redash/handlers/data_sources.py b/redash/handlers/data_sources.py index e25a0ab784..8ee728bade 100644 --- a/redash/handlers/data_sources.py +++ b/redash/handlers/data_sources.py @@ -7,7 +7,11 @@ from sqlalchemy.exc import IntegrityError from redash import models -from redash.handlers.base import BaseResource, get_object_or_404, require_fields +from redash.handlers.base import ( + BaseResource, + get_object_or_404, + require_fields, +) from redash.permissions import ( require_access, require_admin, @@ -17,28 +21,22 @@ from redash.query_runner import ( get_configuration_schema_for_query_runner_type, query_runners, - NotSupported, ) +from redash.serializers import serialize_job +from redash.tasks.general import get_schema, test_connection from redash.utils import filter_none from redash.utils.configuration import ConfigurationContainer, ValidationError -from redash.tasks.general import test_connection, get_schema -from redash.serializers import serialize_job class DataSourceTypeListResource(BaseResource): @require_admin def get(self): - return [ - q.to_dict() - for q in sorted(query_runners.values(), key=lambda q: q.name().lower()) - ] + return [q.to_dict() for q in sorted(query_runners.values(), key=lambda q: q.name().lower())] class DataSourceResource(BaseResource): def get(self, data_source_id): - data_source = get_object_or_404( - models.DataSource.get_by_id_and_org, data_source_id, self.current_org - ) + data_source = get_object_or_404(models.DataSource.get_by_id_and_org, data_source_id, self.current_org) require_access(data_source, self.current_user, view_only) ds = {} @@ -47,19 +45,13 @@ def get(self, data_source_id): ds = data_source.to_dict(all=self.current_user.has_permission("admin")) # add view_only info, required for frontend permissions - ds["view_only"] = all( - project(data_source.groups, self.current_user.group_ids).values() - ) - self.record_event( - {"action": "view", "object_id": data_source_id, "object_type": "datasource"} - ) + ds["view_only"] = all(project(data_source.groups, self.current_user.group_ids).values()) + self.record_event({"action": "view", "object_id": data_source_id, "object_type": "datasource"}) return ds @require_admin def post(self, data_source_id): - data_source = models.DataSource.get_by_id_and_org( - data_source_id, self.current_org - ) + data_source = models.DataSource.get_by_id_and_org(data_source_id, self.current_org) req = request.get_json(True) schema = get_configuration_schema_for_query_runner_type(req["type"]) @@ -81,24 +73,18 @@ def post(self, data_source_id): if req["name"] in str(e): abort( 400, - message="Data source with the name {} already exists.".format( - req["name"] - ), + message="Data source with the name {} already exists.".format(req["name"]), ) abort(400) - self.record_event( - {"action": "edit", "object_id": data_source.id, "object_type": "datasource"} - ) + self.record_event({"action": "edit", "object_id": data_source.id, "object_type": "datasource"}) return data_source.to_dict(all=True) @require_admin def delete(self, data_source_id): - data_source = models.DataSource.get_by_id_and_org( - data_source_id, self.current_org - ) + data_source = models.DataSource.get_by_id_and_org(data_source_id, self.current_org) data_source.delete() self.record_event( @@ -118,9 +104,7 @@ def get(self): if self.current_user.has_permission("admin"): data_sources = models.DataSource.all(self.current_org) else: - data_sources = models.DataSource.all( - self.current_org, group_ids=self.current_user.group_ids - ) + data_sources = models.DataSource.all(self.current_org, group_ids=self.current_user.group_ids) response = {} for ds in data_sources: @@ -129,14 +113,10 @@ def get(self): try: d = ds.to_dict() - d["view_only"] = all( - project(ds.groups, self.current_user.group_ids).values() - ) + d["view_only"] = all(project(ds.groups, self.current_user.group_ids).values()) response[ds.id] = d except AttributeError: - logging.exception( - "Error with DataSource#to_dict (data source id: %d)", ds.id - ) + logging.exception("Error with DataSource#to_dict (data source id: %d)", ds.id) self.record_event( { @@ -171,9 +151,7 @@ def post(self): if req["name"] in str(e): abort( 400, - message="Data source with the name {} already exists.".format( - req["name"] - ), + message="Data source with the name {} already exists.".format(req["name"]), ) abort(400) @@ -191,9 +169,7 @@ def post(self): class DataSourceSchemaResource(BaseResource): def get(self, data_source_id): - data_source = get_object_or_404( - models.DataSource.get_by_id_and_org, data_source_id, self.current_org - ) + data_source = get_object_or_404(models.DataSource.get_by_id_and_org, data_source_id, self.current_org) require_access(data_source, self.current_user, view_only) refresh = request.args.get("refresh") is not None @@ -211,9 +187,7 @@ def get(self, data_source_id): class DataSourcePauseResource(BaseResource): @require_admin def post(self, data_source_id): - data_source = get_object_or_404( - models.DataSource.get_by_id_and_org, data_source_id, self.current_org - ) + data_source = get_object_or_404(models.DataSource.get_by_id_and_org, data_source_id, self.current_org) data = request.get_json(force=True, silent=True) if data: reason = data.get("reason") @@ -233,9 +207,7 @@ def post(self, data_source_id): @require_admin def delete(self, data_source_id): - data_source = get_object_or_404( - models.DataSource.get_by_id_and_org, data_source_id, self.current_org - ) + data_source = get_object_or_404(models.DataSource.get_by_id_and_org, data_source_id, self.current_org) data_source.resume() self.record_event( @@ -251,9 +223,7 @@ def delete(self, data_source_id): class DataSourceTestResource(BaseResource): @require_admin def post(self, data_source_id): - data_source = get_object_or_404( - models.DataSource.get_by_id_and_org, data_source_id, self.current_org - ) + data_source = get_object_or_404(models.DataSource.get_by_id_and_org, data_source_id, self.current_org) response = {} diff --git a/redash/handlers/databricks.py b/redash/handlers/databricks.py index 0c36bc74be..3b8b43305f 100644 --- a/redash/handlers/databricks.py +++ b/redash/handlers/databricks.py @@ -1,25 +1,21 @@ -from flask_restful import abort from flask import request +from flask_restful import abort + from redash import models, redis_connection from redash.handlers.base import BaseResource, get_object_or_404 -from redash.permissions import ( - require_access, - view_only, -) +from redash.permissions import require_access, view_only +from redash.serializers import serialize_job from redash.tasks.databricks import ( - get_databricks_databases, - get_databricks_tables, get_database_tables_with_columns, + get_databricks_databases, get_databricks_table_columns, + get_databricks_tables, ) -from redash.serializers import serialize_job -from redash.utils import json_loads, json_dumps +from redash.utils import json_loads def _get_databricks_data_source(data_source_id, user, org): - data_source = get_object_or_404( - models.DataSource.get_by_id_and_org, data_source_id, org - ) + data_source = get_object_or_404(models.DataSource.get_by_id_and_org, data_source_id, org) require_access(data_source, user, view_only) if not data_source.type == "databricks": @@ -48,9 +44,7 @@ def _get_tables_from_cache(data_source_id, database_name): class DatabricksDatabaseListResource(BaseResource): def get(self, data_source_id): - data_source = _get_databricks_data_source( - data_source_id, user=self.current_user, org=self.current_org - ) + data_source = _get_databricks_data_source(data_source_id, user=self.current_user, org=self.current_org) refresh = request.args.get("refresh") is not None if not refresh: @@ -59,17 +53,13 @@ def get(self, data_source_id): if cached_databases is not None: return cached_databases - job = get_databricks_databases.delay( - data_source.id, redis_key=_databases_key(data_source_id) - ) + job = get_databricks_databases.delay(data_source.id, redis_key=_databases_key(data_source_id)) return serialize_job(job) class DatabricksSchemaResource(BaseResource): def get(self, data_source_id, database_name): - data_source = _get_databricks_data_source( - data_source_id, user=self.current_user, org=self.current_org - ) + data_source = _get_databricks_data_source(data_source_id, user=self.current_user, org=self.current_org) refresh = request.args.get("refresh") is not None if not refresh: @@ -89,9 +79,7 @@ def get(self, data_source_id, database_name): class DatabricksTableColumnListResource(BaseResource): def get(self, data_source_id, database_name, table_name): - data_source = _get_databricks_data_source( - data_source_id, user=self.current_user, org=self.current_org - ) + data_source = _get_databricks_data_source(data_source_id, user=self.current_user, org=self.current_org) job = get_databricks_table_columns.delay(data_source.id, database_name, table_name) return serialize_job(job) diff --git a/redash/handlers/destinations.py b/redash/handlers/destinations.py index e935ed84bb..15a80865d1 100644 --- a/redash/handlers/destinations.py +++ b/redash/handlers/destinations.py @@ -21,9 +21,7 @@ def get(self): class DestinationResource(BaseResource): @require_admin def get(self, destination_id): - destination = models.NotificationDestination.get_by_id_and_org( - destination_id, self.current_org - ) + destination = models.NotificationDestination.get_by_id_and_org(destination_id, self.current_org) d = destination.to_dict(all=True) self.record_event( { @@ -36,9 +34,7 @@ def get(self, destination_id): @require_admin def post(self, destination_id): - destination = models.NotificationDestination.get_by_id_and_org( - destination_id, self.current_org - ) + destination = models.NotificationDestination.get_by_id_and_org(destination_id, self.current_org) req = request.get_json(True) schema = get_configuration_schema_for_destination_type(req["type"]) @@ -58,9 +54,7 @@ def post(self, destination_id): if "name" in str(e): abort( 400, - message="Alert Destination with the name {} already exists.".format( - req["name"] - ), + message="Alert Destination with the name {} already exists.".format(req["name"]), ) abort(500) @@ -68,9 +62,7 @@ def post(self, destination_id): @require_admin def delete(self, destination_id): - destination = models.NotificationDestination.get_by_id_and_org( - destination_id, self.current_org - ) + destination = models.NotificationDestination.get_by_id_and_org(destination_id, self.current_org) models.db.session.delete(destination) models.db.session.commit() @@ -135,9 +127,7 @@ def post(self): if "name" in str(e): abort( 400, - message="Alert Destination with the name {} already exists.".format( - req["name"] - ), + message="Alert Destination with the name {} already exists.".format(req["name"]), ) abort(500) diff --git a/redash/handlers/embed.py b/redash/handlers/embed.py index e7a5cfb576..9ba3570823 100644 --- a/redash/handlers/embed.py +++ b/redash/handlers/embed.py @@ -1,13 +1,18 @@ from flask import request - -from .authentication import current_org from flask_login import current_user, login_required + from redash import models from redash.handlers import routes -from redash.handlers.base import get_object_or_404, org_scoped_rule, record_event +from redash.handlers.base import ( + get_object_or_404, + org_scoped_rule, + record_event, +) from redash.handlers.static import render_index from redash.security import csp_allows_embeding +from .authentication import current_org + @routes.route( org_scoped_rule("/embed/query//visualization/"), diff --git a/redash/handlers/events.py b/redash/handlers/events.py index 6ecbe84758..f77a72e830 100644 --- a/redash/handlers/events.py +++ b/redash/handlers/events.py @@ -1,6 +1,6 @@ -from flask import request import geolite2 import maxminddb +from flask import request from user_agents import parse as parse_ua from redash.handlers.base import BaseResource, paginate @@ -44,9 +44,7 @@ def serialize_event(event): } if event.user_id: - d["user_name"] = event.additional_properties.get( - "user_name", "User {}".format(event.user_id) - ) + d["user_name"] = event.additional_properties.get("user_name", "User {}".format(event.user_id)) if not event.user_id: d["user_name"] = event.additional_properties.get("api_key", "Unknown") diff --git a/redash/handlers/favorites.py b/redash/handlers/favorites.py index 71a0ac3db1..796dfb6ab1 100644 --- a/redash/handlers/favorites.py +++ b/redash/handlers/favorites.py @@ -1,21 +1,16 @@ -from flask import request from sqlalchemy.exc import IntegrityError from redash import models -from redash.handlers.base import BaseResource, get_object_or_404, paginate +from redash.handlers.base import BaseResource, get_object_or_404 from redash.permissions import require_access, view_only class QueryFavoriteResource(BaseResource): def post(self, query_id): - query = get_object_or_404( - models.Query.get_by_id_and_org, query_id, self.current_org - ) + query = get_object_or_404(models.Query.get_by_id_and_org, query_id, self.current_org) require_access(query, self.current_user, view_only) - fav = models.Favorite( - org_id=self.current_org.id, object=query, user=self.current_user - ) + fav = models.Favorite(org_id=self.current_org.id, object=query, user=self.current_user) models.db.session.add(fav) try: @@ -26,14 +21,10 @@ def post(self, query_id): else: raise e - self.record_event( - {"action": "favorite", "object_id": query.id, "object_type": "query"} - ) + self.record_event({"action": "favorite", "object_id": query.id, "object_type": "query"}) def delete(self, query_id): - query = get_object_or_404( - models.Query.get_by_id_and_org, query_id, self.current_org - ) + query = get_object_or_404(models.Query.get_by_id_and_org, query_id, self.current_org) require_access(query, self.current_user, view_only) models.Favorite.query.filter( @@ -43,19 +34,13 @@ def delete(self, query_id): ).delete() models.db.session.commit() - self.record_event( - {"action": "favorite", "object_id": query.id, "object_type": "query"} - ) + self.record_event({"action": "favorite", "object_id": query.id, "object_type": "query"}) class DashboardFavoriteResource(BaseResource): def post(self, object_id): - dashboard = get_object_or_404( - models.Dashboard.get_by_id_and_org, object_id, self.current_org - ) - fav = models.Favorite( - org_id=self.current_org.id, object=dashboard, user=self.current_user - ) + dashboard = get_object_or_404(models.Dashboard.get_by_id_and_org, object_id, self.current_org) + fav = models.Favorite(org_id=self.current_org.id, object=dashboard, user=self.current_user) models.db.session.add(fav) try: @@ -75,9 +60,7 @@ def post(self, object_id): ) def delete(self, object_id): - dashboard = get_object_or_404( - models.Dashboard.get_by_id_and_org, object_id, self.current_org - ) + dashboard = get_object_or_404(models.Dashboard.get_by_id_and_org, object_id, self.current_org) models.Favorite.query.filter( models.Favorite.object == dashboard, models.Favorite.user == self.current_user, diff --git a/redash/handlers/groups.py b/redash/handlers/groups.py index 40839e0345..200c31507f 100644 --- a/redash/handlers/groups.py +++ b/redash/handlers/groups.py @@ -1,9 +1,9 @@ -import time from flask import request from flask_restful import abort + from redash import models -from redash.permissions import require_admin, require_permission from redash.handlers.base import BaseResource, get_object_or_404 +from redash.permissions import require_admin, require_permission class GroupListResource(BaseResource): @@ -14,9 +14,7 @@ def post(self): models.db.session.add(group) models.db.session.commit() - self.record_event( - {"action": "create", "object_id": group.id, "object_type": "group"} - ) + self.record_event({"action": "create", "object_id": group.id, "object_type": "group"}) return group.to_dict() @@ -24,13 +22,9 @@ def get(self): if self.current_user.has_permission("admin"): groups = models.Group.all(self.current_org) else: - groups = models.Group.query.filter( - models.Group.id.in_(self.current_user.group_ids) - ) + groups = models.Group.query.filter(models.Group.id.in_(self.current_user.group_ids)) - self.record_event( - {"action": "list", "object_id": "groups", "object_type": "group"} - ) + self.record_event({"action": "list", "object_id": "groups", "object_type": "group"}) return [g.to_dict() for g in groups] @@ -46,24 +40,17 @@ def post(self, group_id): group.name = request.json["name"] models.db.session.commit() - self.record_event( - {"action": "edit", "object_id": group.id, "object_type": "group"} - ) + self.record_event({"action": "edit", "object_id": group.id, "object_type": "group"}) return group.to_dict() def get(self, group_id): - if not ( - self.current_user.has_permission("admin") - or int(group_id) in self.current_user.group_ids - ): + if not (self.current_user.has_permission("admin") or int(group_id) in self.current_user.group_ids): abort(403) group = models.Group.get_by_id_and_org(group_id, self.current_org) - self.record_event( - {"action": "view", "object_id": group_id, "object_type": "group"} - ) + self.record_event({"action": "view", "object_id": group_id, "object_type": "group"}) return group.to_dict() @@ -103,10 +90,7 @@ def post(self, group_id): @require_permission("list_users") def get(self, group_id): - if not ( - self.current_user.has_permission("admin") - or int(group_id) in self.current_user.group_ids - ): + if not (self.current_user.has_permission("admin") or int(group_id) in self.current_user.group_ids): abort(403) members = models.Group.members(group_id) @@ -140,9 +124,7 @@ class GroupDataSourceListResource(BaseResource): @require_admin def post(self, group_id): data_source_id = request.json["data_source_id"] - data_source = models.DataSource.get_by_id_and_org( - data_source_id, self.current_org - ) + data_source = models.DataSource.get_by_id_and_org(data_source_id, self.current_org) group = models.Group.get_by_id_and_org(group_id, self.current_org) data_source_group = data_source.add_group(group) @@ -161,18 +143,14 @@ def post(self, group_id): @require_admin def get(self, group_id): - group = get_object_or_404( - models.Group.get_by_id_and_org, group_id, self.current_org - ) + group = get_object_or_404(models.Group.get_by_id_and_org, group_id, self.current_org) # TOOD: move to models data_sources = models.DataSource.query.join(models.DataSourceGroup).filter( models.DataSourceGroup.group == group ) - self.record_event( - {"action": "list", "object_id": group_id, "object_type": "group"} - ) + self.record_event({"action": "list", "object_id": group_id, "object_type": "group"}) return [ds.to_dict(with_permissions_for=group) for ds in data_sources] @@ -180,9 +158,7 @@ def get(self, group_id): class GroupDataSourceResource(BaseResource): @require_admin def post(self, group_id, data_source_id): - data_source = models.DataSource.get_by_id_and_org( - data_source_id, self.current_org - ) + data_source = models.DataSource.get_by_id_and_org(data_source_id, self.current_org) group = models.Group.get_by_id_and_org(group_id, self.current_org) view_only = request.json["view_only"] @@ -203,9 +179,7 @@ def post(self, group_id, data_source_id): @require_admin def delete(self, group_id, data_source_id): - data_source = models.DataSource.get_by_id_and_org( - data_source_id, self.current_org - ) + data_source = models.DataSource.get_by_id_and_org(data_source_id, self.current_org) group = models.Group.get_by_id_and_org(group_id, self.current_org) data_source.remove_group(group) diff --git a/redash/handlers/organization.py b/redash/handlers/organization.py index f39548f8ce..a4ddab0b60 100644 --- a/redash/handlers/organization.py +++ b/redash/handlers/organization.py @@ -1,9 +1,9 @@ from flask_login import current_user, login_required from redash import models +from redash.authentication import current_org from redash.handlers import routes from redash.handlers.base import json_response, org_scoped_rule -from redash.authentication import current_org @routes.route(org_scoped_rule("/api/organization/status"), methods=["GET"]) @@ -12,14 +12,10 @@ def organization_status(org_slug=None): counters = { "users": models.User.all(current_org).count(), "alerts": models.Alert.all(group_ids=current_user.group_ids).count(), - "data_sources": models.DataSource.all( - current_org, group_ids=current_user.group_ids - ).count(), - "queries": models.Query.all_queries( - current_user.group_ids, current_user.id, include_drafts=True - ).count(), + "data_sources": models.DataSource.all(current_org, group_ids=current_user.group_ids).count(), + "queries": models.Query.all_queries(current_user.group_ids, current_user.id, include_drafts=True).count(), "dashboards": models.Dashboard.query.filter( - models.Dashboard.org == current_org, models.Dashboard.is_archived == False + models.Dashboard.org == current_org, models.Dashboard.is_archived is False ).count(), } diff --git a/redash/handlers/permissions.py b/redash/handlers/permissions.py index 94bf111eb6..731ddcc3f5 100644 --- a/redash/handlers/permissions.py +++ b/redash/handlers/permissions.py @@ -1,12 +1,12 @@ from collections import defaultdict -from redash.handlers.base import BaseResource, get_object_or_404 -from redash.models import AccessPermission, Query, Dashboard, User, db -from redash.permissions import require_admin_or_owner, ACCESS_TYPES from flask import request from flask_restful import abort from sqlalchemy.orm.exc import NoResultFound +from redash.handlers.base import BaseResource, get_object_or_404 +from redash.models import AccessPermission, Dashboard, Query, User, db +from redash.permissions import ACCESS_TYPES, require_admin_or_owner model_to_types = {"queries": Query, "dashboards": Dashboard} @@ -51,9 +51,7 @@ def post(self, object_type, object_id): except NoResultFound: abort(400, message="User not found.") - permission = AccessPermission.grant( - obj, access_type, grantee, self.current_user - ) + permission = AccessPermission.grant(obj, access_type, grantee, self.current_user) db.session.commit() self.record_event( diff --git a/redash/handlers/queries.py b/redash/handlers/queries.py index e9ee245828..05d29dd144 100644 --- a/redash/handlers/queries.py +++ b/redash/handlers/queries.py @@ -2,8 +2,8 @@ from flask import jsonify, request, url_for from flask_login import login_required from flask_restful import abort -from sqlalchemy.orm.exc import StaleDataError from funcy import partial +from sqlalchemy.orm.exc import StaleDataError from redash import models, settings from redash.authentication.org_resolving import current_org @@ -11,12 +11,11 @@ BaseResource, filter_by_tags, get_object_or_404, - org_scoped_rule, - paginate, - routes, - order_results as _order_results, ) +from redash.handlers.base import order_results as _order_results +from redash.handlers.base import org_scoped_rule, paginate, routes from redash.handlers.query_results import run_query +from redash.models.parameterized_query import ParameterizedQuery from redash.permissions import ( can_modify, not_view_only, @@ -26,10 +25,8 @@ require_permission, view_only, ) -from redash.utils import collect_parameters_from_request from redash.serializers import QuerySerializer -from redash.models.parameterized_query import ParameterizedQuery - +from redash.utils import collect_parameters_from_request # Ordering map for relationships order_map = { @@ -47,9 +44,7 @@ "-created_by": "-users-name", } -order_results = partial( - _order_results, default_order="-created_at", allowed_orders=order_map -) +order_results = partial(_order_results, default_order="-created_at", allowed_orders=order_map) @routes.route(org_scoped_rule("/api/queries/format"), methods=["POST"]) @@ -64,9 +59,7 @@ def format_sql_query(org_slug=None): arguments = request.get_json(force=True) query = arguments.get("query", "") - return jsonify( - {"query": sqlparse.format(query, **settings.SQLPARSE_FORMAT_OPTIONS)} - ) + return jsonify({"query": sqlparse.format(query, **settings.SQLPARSE_FORMAT_OPTIONS)}) class QuerySearchResource(BaseResource): @@ -107,14 +100,8 @@ def get(self): Responds with a list of :ref:`query ` objects. """ - results = ( - models.Query.by_user(self.current_user) - .order_by(models.Query.updated_at.desc()) - .limit(10) - ) - return QuerySerializer( - results, with_last_modified_by=False, with_user=False - ).serialize() + results = models.Query.by_user(self.current_user).order_by(models.Query.updated_at.desc()).limit(10) + return QuerySerializer(results, with_last_modified_by=False, with_user=False).serialize() class BaseQueryListResource(BaseResource): @@ -128,9 +115,7 @@ def get_queries(self, search_term): multi_byte_search=current_org.get_setting("multi_byte_search_enabled"), ) else: - results = models.Query.all_queries( - self.current_user.group_ids, self.current_user.id, include_drafts=True - ) + results = models.Query.all_queries(self.current_user.group_ids, self.current_user.id, include_drafts=True) return filter_by_tags(results, models.Query.tags) @require_permission("view_query") @@ -170,9 +155,7 @@ def get(self): ) if search_term: - self.record_event( - {"action": "search", "object_type": "query", "term": search_term} - ) + self.record_event({"action": "search", "object_type": "query", "term": search_term}) else: self.record_event({"action": "list", "object_type": "query"}) @@ -181,9 +164,7 @@ def get(self): def require_access_to_dropdown_queries(user, query_def): parameters = query_def.get("options", {}).get("parameters", []) - dropdown_query_ids = set( - [str(p["queryId"]) for p in parameters if p["type"] == "query"] - ) + dropdown_query_ids = set([str(p["queryId"]) for p in parameters if p["type"] == "query"]) if dropdown_query_ids: groups = models.Query.all_groups_for_query_ids(dropdown_query_ids) @@ -234,9 +215,7 @@ def post(self): :>json number runtime: Runtime of last query execution, in seconds (may be null) """ query_def = request.get_json(force=True) - data_source = models.DataSource.get_by_id_and_org( - query_def.pop("data_source_id"), self.current_org - ) + data_source = models.DataSource.get_by_id_and_org(query_def.pop("data_source_id"), self.current_org) require_access(data_source, self.current_user, not_view_only) require_access_to_dropdown_queries(self.current_user, query_def) @@ -259,9 +238,7 @@ def post(self): models.db.session.add(query) models.db.session.commit() - self.record_event( - {"action": "create", "object_id": query.id, "object_type": "query"} - ) + self.record_event({"action": "create", "object_id": query.id, "object_type": "query"}) return QuerySerializer(query, with_visualizations=True).serialize() @@ -340,9 +317,7 @@ def post(self, query_id): Responds with the updated :ref:`query ` object. """ - query = get_object_or_404( - models.Query.get_by_id_and_org, query_id, self.current_org - ) + query = get_object_or_404(models.Query.get_by_id_and_org, query_id, self.current_org) query_def = request.get_json(force=True) require_object_modify_permission(query, self.current_user) @@ -367,9 +342,7 @@ def post(self, query_id): query_def["tags"] = [tag for tag in query_def["tags"] if tag] if "data_source_id" in query_def: - data_source = models.DataSource.get_by_id_and_org( - query_def["data_source_id"], self.current_org - ) + data_source = models.DataSource.get_by_id_and_org(query_def["data_source_id"], self.current_org) require_access(data_source, self.current_user, not_view_only) query_def["last_modified_by"] = self.current_user @@ -397,17 +370,13 @@ def get(self, query_id): Responds with the :ref:`query ` contents. """ - q = get_object_or_404( - models.Query.get_by_id_and_org, query_id, self.current_org - ) + q = get_object_or_404(models.Query.get_by_id_and_org, query_id, self.current_org) require_access(q, self.current_user, view_only) result = QuerySerializer(q, with_visualizations=True).serialize() result["can_edit"] = can_modify(q, self.current_user) - self.record_event( - {"action": "view", "object_id": query_id, "object_type": "query"} - ) + self.record_event({"action": "view", "object_id": query_id, "object_type": "query"}) return result @@ -418,9 +387,7 @@ def delete(self, query_id): :param query_id: ID of query to archive """ - query = get_object_or_404( - models.Query.get_by_id_and_org, query_id, self.current_org - ) + query = get_object_or_404(models.Query.get_by_id_and_org, query_id, self.current_org) require_admin_or_owner(query.user_id) query.archive(self.current_user) models.db.session.commit() @@ -429,9 +396,7 @@ def delete(self, query_id): class QueryRegenerateApiKeyResource(BaseResource): @require_permission("edit_query") def post(self, query_id): - query = get_object_or_404( - models.Query.get_by_id_and_org, query_id, self.current_org - ) + query = get_object_or_404(models.Query.get_by_id_and_org, query_id, self.current_org) require_admin_or_owner(query.user_id) query.regenerate_api_key() models.db.session.commit() @@ -458,16 +423,12 @@ def post(self, query_id): Responds with created :ref:`query ` object. """ - query = get_object_or_404( - models.Query.get_by_id_and_org, query_id, self.current_org - ) + query = get_object_or_404(models.Query.get_by_id_and_org, query_id, self.current_org) require_access(query.data_source, self.current_user, not_view_only) forked_query = query.fork(self.current_user) models.db.session.commit() - self.record_event( - {"action": "fork", "object_id": query_id, "object_type": "query"} - ) + self.record_event({"action": "fork", "object_id": query_id, "object_type": "query"}) return QuerySerializer(forked_query, with_visualizations=True).serialize() @@ -487,17 +448,13 @@ def post(self, query_id): if self.current_user.is_api_user(): abort(403, message="Please use a user API key.") - query = get_object_or_404( - models.Query.get_by_id_and_org, query_id, self.current_org - ) + query = get_object_or_404(models.Query.get_by_id_and_org, query_id, self.current_org) require_access(query, self.current_user, not_view_only) parameter_values = collect_parameters_from_request(request.args) parameterized_query = ParameterizedQuery(query.query_text, org=self.current_org) should_apply_auto_limit = query.options.get("apply_auto_limit", False) - return run_query( - parameterized_query, parameter_values, query.data_source, query.id, should_apply_auto_limit - ) + return run_query(parameterized_query, parameter_values, query.data_source, query.id, should_apply_auto_limit) class QueryTagsResource(BaseResource): diff --git a/redash/handlers/query_results.py b/redash/handlers/query_results.py index cb8b8d14f2..68b2cfff84 100644 --- a/redash/handlers/query_results.py +++ b/redash/handlers/query_results.py @@ -1,41 +1,39 @@ -import logging -import time - import unicodedata + from flask import make_response, request from flask_login import current_user from flask_restful import abort from werkzeug.urls import url_quote + from redash import models, settings from redash.handlers.base import BaseResource, get_object_or_404, record_event +from redash.models.parameterized_query import ( + InvalidParameterError, + ParameterizedQuery, + QueryDetachedFromDataSourceError, + dropdown_values, +) from redash.permissions import ( has_access, not_view_only, require_access, - require_permission, require_any_of_permission, + require_permission, view_only, ) +from redash.serializers import ( + serialize_job, + serialize_query_result, + serialize_query_result_to_dsv, + serialize_query_result_to_xlsx, +) from redash.tasks import Job from redash.tasks.queries import enqueue_query from redash.utils import ( collect_parameters_from_request, json_dumps, - utcnow, to_filename, ) -from redash.models.parameterized_query import ( - ParameterizedQuery, - InvalidParameterError, - QueryDetachedFromDataSourceError, - dropdown_values, -) -from redash.serializers import ( - serialize_query_result, - serialize_query_result_to_dsv, - serialize_query_result_to_xlsx, - serialize_job, -) def error_response(message, http_status=400): @@ -51,23 +49,15 @@ def error_response(message, http_status=400): "This query contains potentially unsafe parameters and cannot be executed with read-only access to this data source.", 403, ), - "no_permission": error_response( - "You do not have permission to run queries with this data source.", 403 - ), - "select_data_source": error_response( - "Please select data source to run this query.", 401 - ), + "no_permission": error_response("You do not have permission to run queries with this data source.", 403), + "select_data_source": error_response("Please select data source to run this query.", 401), } -def run_query( - query, parameters, data_source, query_id, should_apply_auto_limit, max_age=0 -): +def run_query(query, parameters, data_source, query_id, should_apply_auto_limit, max_age=0): if data_source.paused: if data_source.pause_reason: - message = "{} is paused ({}). Please try later.".format( - data_source.name, data_source.pause_reason - ) + message = "{} is paused ({}). Please try later.".format(data_source.name, data_source.pause_reason) else: message = "{} is paused. Please try later.".format(data_source.name) @@ -78,14 +68,10 @@ def run_query( except (InvalidParameterError, QueryDetachedFromDataSourceError) as e: abort(400, message=str(e)) - query_text = data_source.query_runner.apply_auto_limit( - query.text, should_apply_auto_limit - ) + query_text = data_source.query_runner.apply_auto_limit(query.text, should_apply_auto_limit) if query.missing_params: - return error_response( - "Missing parameter value for: {}".format(", ".join(query.missing_params)) - ) + return error_response("Missing parameter value for: {}".format(", ".join(query.missing_params))) if max_age == 0: query_result = None @@ -107,11 +93,7 @@ def run_query( ) if query_result: - return { - "query_result": serialize_query_result( - query_result, current_user.is_api_user() - ) - } + return {"query_result": serialize_query_result(query_result, current_user.is_api_user())} else: job = enqueue_query( query_text, @@ -119,9 +101,7 @@ def run_query( current_user.id, current_user.is_api_user(), metadata={ - "Username": repr(current_user) - if current_user.is_api_user() - else current_user.email, + "Username": repr(current_user) if current_user.is_api_user() else current_user.email, "query_id": query_id, }, ) @@ -145,9 +125,7 @@ def content_disposition_filenames(attachment_filename): attachment_filename = attachment_filename.encode("ascii") except UnicodeEncodeError: filenames = { - "filename": unicodedata.normalize("NFKD", attachment_filename).encode( - "ascii", "ignore" - ), + "filename": unicodedata.normalize("NFKD", attachment_filename).encode("ascii", "ignore"), "filename*": "UTF-8''%s" % url_quote(attachment_filename, safe=b""), } else: @@ -180,18 +158,14 @@ def post(self): max_age = -1 max_age = int(max_age) query_id = params.get("query_id", "adhoc") - parameters = params.get( - "parameters", collect_parameters_from_request(request.args) - ) + parameters = params.get("parameters", collect_parameters_from_request(request.args)) parameterized_query = ParameterizedQuery(query, org=self.current_org) should_apply_auto_limit = params.get("apply_auto_limit", False) data_source_id = params.get("data_source_id") if data_source_id: - data_source = models.DataSource.get_by_id_and_org( - params.get("data_source_id"), self.current_org - ) + data_source = models.DataSource.get_by_id_and_org(params.get("data_source_id"), self.current_org) else: return error_messages["select_data_source"] @@ -213,9 +187,7 @@ def post(self): class QueryResultDropdownResource(BaseResource): def get(self, query_id): - query = get_object_or_404( - models.Query.get_by_id_and_org, query_id, self.current_org - ) + query = get_object_or_404(models.Query.get_by_id_and_org, query_id, self.current_org) require_access(query.data_source, current_user, view_only) try: return dropdown_values(query_id, self.current_org) @@ -225,18 +197,12 @@ def get(self, query_id): class QueryDropdownsResource(BaseResource): def get(self, query_id, dropdown_query_id): - query = get_object_or_404( - models.Query.get_by_id_and_org, query_id, self.current_org - ) + query = get_object_or_404(models.Query.get_by_id_and_org, query_id, self.current_org) require_access(query, current_user, view_only) - related_queries_ids = [ - p["queryId"] for p in query.parameters if p["type"] == "query" - ] + related_queries_ids = [p["queryId"] for p in query.parameters if p["type"] == "query"] if int(dropdown_query_id) not in related_queries_ids: - dropdown_query = get_object_or_404( - models.Query.get_by_id_and_org, dropdown_query_id, self.current_org - ) + dropdown_query = get_object_or_404(models.Query.get_by_id_and_org, dropdown_query_id, self.current_org) require_access(dropdown_query.data_source, current_user, view_only) return dropdown_values(dropdown_query_id, self.current_org) @@ -250,9 +216,7 @@ def add_cors_headers(headers): if set(["*", origin]) & settings.ACCESS_CONTROL_ALLOW_ORIGIN: headers["Access-Control-Allow-Origin"] = origin - headers["Access-Control-Allow-Credentials"] = str( - settings.ACCESS_CONTROL_ALLOW_CREDENTIALS - ).lower() + headers["Access-Control-Allow-Credentials"] = str(settings.ACCESS_CONTROL_ALLOW_CREDENTIALS).lower() @require_any_of_permission(("view_query", "execute_query")) def options(self, query_id=None, query_result_id=None, filetype="json"): @@ -260,14 +224,10 @@ def options(self, query_id=None, query_result_id=None, filetype="json"): self.add_cors_headers(headers) if settings.ACCESS_CONTROL_REQUEST_METHOD: - headers[ - "Access-Control-Request-Method" - ] = settings.ACCESS_CONTROL_REQUEST_METHOD + headers["Access-Control-Request-Method"] = settings.ACCESS_CONTROL_REQUEST_METHOD if settings.ACCESS_CONTROL_ALLOW_HEADERS: - headers[ - "Access-Control-Allow-Headers" - ] = settings.ACCESS_CONTROL_ALLOW_HEADERS + headers["Access-Control-Allow-Headers"] = settings.ACCESS_CONTROL_ALLOW_HEADERS return make_response("", 200, headers) @@ -292,16 +252,12 @@ def post(self, query_id): max_age = -1 max_age = int(max_age) - query = get_object_or_404( - models.Query.get_by_id_and_org, query_id, self.current_org - ) + query = get_object_or_404(models.Query.get_by_id_and_org, query_id, self.current_org) allow_executing_with_view_only_permissions = query.parameterized.is_safe should_apply_auto_limit = params.get("apply_auto_limit", False) - if has_access( - query, self.current_user, allow_executing_with_view_only_permissions - ): + if has_access(query, self.current_user, allow_executing_with_view_only_permissions): return run_query( query.parameterized, parameter_values, @@ -346,31 +302,19 @@ def get(self, query_id=None, query_result_id=None, filetype="json"): query = None if query_result_id: - query_result = get_object_or_404( - models.QueryResult.get_by_id_and_org, query_result_id, self.current_org - ) + query_result = get_object_or_404(models.QueryResult.get_by_id_and_org, query_result_id, self.current_org) if query_id is not None: - query = get_object_or_404( - models.Query.get_by_id_and_org, query_id, self.current_org - ) + query = get_object_or_404(models.Query.get_by_id_and_org, query_id, self.current_org) - if ( - query_result is None - and query is not None - and query.latest_query_data_id is not None - ): + if query_result is None and query is not None and query.latest_query_data_id is not None: query_result = get_object_or_404( models.QueryResult.get_by_id_and_org, query.latest_query_data_id, self.current_org, ) - if ( - query is not None - and query_result is not None - and self.current_user.is_api_user() - ): + if query is not None and query_result is not None and self.current_user.is_api_user(): if query.query_hash != query_result.query_hash: abort(404, message="No cached result found for this query.") @@ -409,9 +353,7 @@ def get(self, query_id=None, query_result_id=None, filetype="json"): self.add_cors_headers(response.headers) if should_cache: - response.headers.add_header( - "Cache-Control", "private,max-age=%d" % ONE_YEAR - ) + response.headers.add_header("Cache-Control", "private,max-age=%d" % ONE_YEAR) filename = get_download_filename(query_result, query, filetype) @@ -432,22 +374,16 @@ def make_json_response(query_result): @staticmethod def make_csv_response(query_result): headers = {"Content-Type": "text/csv; charset=UTF-8"} - return make_response( - serialize_query_result_to_dsv(query_result, ","), 200, headers - ) + return make_response(serialize_query_result_to_dsv(query_result, ","), 200, headers) @staticmethod def make_tsv_response(query_result): headers = {"Content-Type": "text/tab-separated-values; charset=UTF-8"} - return make_response( - serialize_query_result_to_dsv(query_result, "\t"), 200, headers - ) + return make_response(serialize_query_result_to_dsv(query_result, "\t"), 200, headers) @staticmethod def make_excel_response(query_result): - headers = { - "Content-Type": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" - } + headers = {"Content-Type": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"} return make_response(serialize_query_result_to_xlsx(query_result), 200, headers) diff --git a/redash/handlers/query_snippets.py b/redash/handlers/query_snippets.py index 64808de522..b02eb74425 100644 --- a/redash/handlers/query_snippets.py +++ b/redash/handlers/query_snippets.py @@ -2,42 +2,36 @@ from funcy import project from redash import models +from redash.handlers.base import ( + BaseResource, + get_object_or_404, + require_fields, +) from redash.permissions import require_admin_or_owner -from redash.handlers.base import BaseResource, require_fields, get_object_or_404 class QuerySnippetResource(BaseResource): def get(self, snippet_id): - snippet = get_object_or_404( - models.QuerySnippet.get_by_id_and_org, snippet_id, self.current_org - ) + snippet = get_object_or_404(models.QuerySnippet.get_by_id_and_org, snippet_id, self.current_org) - self.record_event( - {"action": "view", "object_id": snippet_id, "object_type": "query_snippet"} - ) + self.record_event({"action": "view", "object_id": snippet_id, "object_type": "query_snippet"}) return snippet.to_dict() def post(self, snippet_id): req = request.get_json(True) params = project(req, ("trigger", "description", "snippet")) - snippet = get_object_or_404( - models.QuerySnippet.get_by_id_and_org, snippet_id, self.current_org - ) + snippet = get_object_or_404(models.QuerySnippet.get_by_id_and_org, snippet_id, self.current_org) require_admin_or_owner(snippet.user.id) self.update_model(snippet, params) models.db.session.commit() - self.record_event( - {"action": "edit", "object_id": snippet.id, "object_type": "query_snippet"} - ) + self.record_event({"action": "edit", "object_id": snippet.id, "object_type": "query_snippet"}) return snippet.to_dict() def delete(self, snippet_id): - snippet = get_object_or_404( - models.QuerySnippet.get_by_id_and_org, snippet_id, self.current_org - ) + snippet = get_object_or_404(models.QuerySnippet.get_by_id_and_org, snippet_id, self.current_org) require_admin_or_owner(snippet.user.id) models.db.session.delete(snippet) models.db.session.commit() @@ -79,7 +73,4 @@ def post(self): def get(self): self.record_event({"action": "list", "object_type": "query_snippet"}) - return [ - snippet.to_dict() - for snippet in models.QuerySnippet.all(org=self.current_org) - ] + return [snippet.to_dict() for snippet in models.QuerySnippet.all(org=self.current_org)] diff --git a/redash/handlers/settings.py b/redash/handlers/settings.py index d684f42c35..ecf2796e57 100644 --- a/redash/handlers/settings.py +++ b/redash/handlers/settings.py @@ -1,7 +1,7 @@ from flask import request -from redash.models import db, Organization -from redash.handlers.base import BaseResource, record_event +from redash.handlers.base import BaseResource +from redash.models import Organization, db from redash.permissions import require_admin from redash.settings.organization import settings as org_settings @@ -45,9 +45,7 @@ def post(self): previous_values[k] = self.current_org.google_apps_domains self.current_org.settings[Organization.SETTING_GOOGLE_APPS_DOMAINS] = v else: - previous_values[k] = self.current_org.get_setting( - k, raise_on_missing=False - ) + previous_values[k] = self.current_org.get_setting(k, raise_on_missing=False) self.current_org.set_setting(k, v) db.session.add(self.current_org) diff --git a/redash/handlers/setup.py b/redash/handlers/setup.py index caa9be8641..a81465406d 100644 --- a/redash/handlers/setup.py +++ b/redash/handlers/setup.py @@ -1,13 +1,13 @@ from flask import g, redirect, render_template, request, url_for - from flask_login import login_user +from wtforms import BooleanField, Form, PasswordField, StringField, validators +from wtforms.fields.html5 import EmailField + from redash import settings from redash.authentication.org_resolving import current_org from redash.handlers.base import routes from redash.models import Group, Organization, User, db from redash.tasks.general import subscribe -from wtforms import BooleanField, Form, PasswordField, StringField, validators -from wtforms.fields.html5 import EmailField class SetupForm(Form): @@ -53,7 +53,7 @@ def create_org(org_name, user_name, email, password): @routes.route("/setup", methods=["GET", "POST"]) def setup(): - if current_org != None or settings.MULTI_ORG: + if current_org != None or settings.MULTI_ORG: # noqa: E711 return redirect("/") form = SetupForm(request.form) @@ -61,9 +61,7 @@ def setup(): form.security_notifications.data = True if request.method == "POST" and form.validate(): - default_org, user = create_org( - form.org_name.data, form.name.data, form.email.data, form.password.data - ) + default_org, user = create_org(form.org_name.data, form.name.data, form.email.data, form.password.data) g.org = default_org login_user(user) diff --git a/redash/handlers/users.py b/redash/handlers/users.py index 425e0ea4f7..31b6222a88 100644 --- a/redash/handlers/users.py +++ b/redash/handlers/users.py @@ -1,39 +1,29 @@ -import re -import time +from disposable_email_domains import blacklist from flask import request -from flask_restful import abort from flask_login import current_user, login_user -from funcy import project -from sqlalchemy.orm.exc import NoResultFound +from flask_restful import abort +from funcy import partial, project from sqlalchemy.exc import IntegrityError -from disposable_email_domains import blacklist -from funcy import partial - -from redash import models, limiter -from redash.permissions import ( - require_permission, - require_admin_or_owner, - is_admin_or_owner, - require_permission_or_owner, - require_admin, -) -from redash.handlers.base import ( - BaseResource, - require_fields, - get_object_or_404, - paginate, - order_results as _order_results, -) +from sqlalchemy.orm.exc import NoResultFound +from redash import limiter, models, settings from redash.authentication.account import ( invite_link_for_user, send_invite_email, send_password_reset_email, send_verify_email, ) +from redash.handlers.base import BaseResource, get_object_or_404 +from redash.handlers.base import order_results as _order_results +from redash.handlers.base import paginate, require_fields +from redash.permissions import ( + is_admin_or_owner, + require_admin, + require_admin_or_owner, + require_permission, + require_permission_or_owner, +) from redash.settings import parse_boolean -from redash import settings - # Ordering map for relationships order_map = { @@ -47,9 +37,7 @@ "-groups": "-group_ids", } -order_results = partial( - _order_results, default_order="-created_at", allowed_orders=order_map -) +order_results = partial(_order_results, default_order="-created_at", allowed_orders=order_map) def invite_user(org, inviter, user, send_email=True): @@ -73,9 +61,7 @@ def require_allowed_email(email): class UserListResource(BaseResource): - decorators = BaseResource.decorators + [ - limiter.limit("200/day;50/hour", methods=["POST"]) - ] + decorators = BaseResource.decorators + [limiter.limit("200/day;50/hour", methods=["POST"])] def get_users(self, disabled, pending, search_term): if disabled: @@ -97,9 +83,7 @@ def get_users(self, disabled, pending, search_term): } ) else: - self.record_event( - {"action": "list", "object_type": "user", "pending": pending} - ) + self.record_event({"action": "list", "object_type": "user", "pending": pending}) # order results according to passed order parameter, # special-casing search queries where the database @@ -131,9 +115,7 @@ def serialize_user(user): disabled = request.args.get("disabled", "false") # get enabled users by default disabled = parse_boolean(disabled) - pending = request.args.get( - "pending", None - ) # get both active and pending by default + pending = request.args.get("pending", None) # get both active and pending by default if pending is not None: pending = parse_boolean(pending) @@ -166,14 +148,10 @@ def post(self): abort(400, message="Email already taken.") abort(500) - self.record_event( - {"action": "create", "object_id": user.id, "object_type": "user"} - ) + self.record_event({"action": "create", "object_id": user.id, "object_type": "user"}) should_send_invitation = "no_invite" not in request.args - return invite_user( - self.current_org, self.current_user, user, send_email=should_send_invitation - ) + return invite_user(self.current_org, self.current_user, user, send_email=should_send_invitation) class UserInviteResource(BaseResource): @@ -205,9 +183,7 @@ def post(self, user_id): user.regenerate_api_key() models.db.session.commit() - self.record_event( - {"action": "regnerate_api_key", "object_id": user.id, "object_type": "user"} - ) + self.record_event({"action": "regnerate_api_key", "object_id": user.id, "object_type": "user"}) return user.to_dict(with_api_key=True) @@ -217,32 +193,24 @@ class UserResource(BaseResource): def get(self, user_id): require_permission_or_owner("list_users", user_id) - user = get_object_or_404( - models.User.get_by_id_and_org, user_id, self.current_org - ) + user = get_object_or_404(models.User.get_by_id_and_org, user_id, self.current_org) - self.record_event( - {"action": "view", "object_id": user_id, "object_type": "user"} - ) + self.record_event({"action": "view", "object_id": user_id, "object_type": "user"}) return user.to_dict(with_api_key=is_admin_or_owner(user_id)) - def post(self, user_id): + def post(self, user_id): # noqa: C901 require_admin_or_owner(user_id) user = models.User.get_by_id_and_org(user_id, self.current_org) req = request.get_json(True) - params = project( - req, ("email", "name", "password", "old_password", "group_ids") - ) + params = project(req, ("email", "name", "password", "old_password", "group_ids")) if "password" in params and "old_password" not in params: abort(403, message="Must provide current password to update password.") - if "old_password" in params and not user.verify_password( - params["old_password"] - ): + if "old_password" in params and not user.verify_password(params["old_password"]): abort(403, message="Incorrect current password.") if "password" in params: @@ -266,9 +234,7 @@ def post(self, user_id): require_allowed_email(params["email"]) email_address_changed = "email" in params and params["email"] != user.email - needs_to_verify_email = ( - email_address_changed and settings.email_server_is_configured() - ) + needs_to_verify_email = email_address_changed and settings.email_server_is_configured() if needs_to_verify_email: user.is_email_verified = False @@ -312,13 +278,13 @@ def delete(self, user_id): abort( 403, message="You cannot delete your own account. " - "Please ask another admin to do this for you.", + "Please ask another admin to do this for you.", # fmt: skip ) elif not user.is_invitation_pending: abort( 403, message="You cannot delete activated users. " - "Please disable the user instead.", + "Please disable the user instead.", # fmt: skip ) models.db.session.delete(user) models.db.session.commit() @@ -336,7 +302,7 @@ def post(self, user_id): abort( 403, message="You cannot disable your own account. " - "Please ask another admin to do this for you.", + "Please ask another admin to do this for you.", # fmt: skip ) user.disable() models.db.session.commit() diff --git a/redash/handlers/visualizations.py b/redash/handlers/visualizations.py index 1621ea50cd..d6f630bbb5 100644 --- a/redash/handlers/visualizations.py +++ b/redash/handlers/visualizations.py @@ -2,8 +2,11 @@ from redash import models from redash.handlers.base import BaseResource, get_object_or_404 +from redash.permissions import ( + require_object_modify_permission, + require_permission, +) from redash.serializers import serialize_visualization -from redash.permissions import require_object_modify_permission, require_permission from redash.utils import json_dumps @@ -12,9 +15,7 @@ class VisualizationListResource(BaseResource): def post(self): kwargs = request.get_json(force=True) - query = get_object_or_404( - models.Query.get_by_id_and_org, kwargs.pop("query_id"), self.current_org - ) + query = get_object_or_404(models.Query.get_by_id_and_org, kwargs.pop("query_id"), self.current_org) require_object_modify_permission(query, self.current_user) kwargs["options"] = json_dumps(kwargs["options"]) @@ -29,9 +30,7 @@ def post(self): class VisualizationResource(BaseResource): @require_permission("edit_query") def post(self, visualization_id): - vis = get_object_or_404( - models.Visualization.get_by_id_and_org, visualization_id, self.current_org - ) + vis = get_object_or_404(models.Visualization.get_by_id_and_org, visualization_id, self.current_org) require_object_modify_permission(vis.query_rel, self.current_user) kwargs = request.get_json(force=True) @@ -48,9 +47,7 @@ def post(self, visualization_id): @require_permission("edit_query") def delete(self, visualization_id): - vis = get_object_or_404( - models.Visualization.get_by_id_and_org, visualization_id, self.current_org - ) + vis = get_object_or_404(models.Visualization.get_by_id_and_org, visualization_id, self.current_org) require_object_modify_permission(vis.query_rel, self.current_user) self.record_event( { diff --git a/redash/handlers/webpack.py b/redash/handlers/webpack.py index 01a0342549..bbcb38c106 100644 --- a/redash/handlers/webpack.py +++ b/redash/handlers/webpack.py @@ -1,10 +1,9 @@ import os + import simplejson from flask import url_for -WEBPACK_MANIFEST_PATH = os.path.join( - os.path.dirname(__file__), "../../client/dist/", "asset-manifest.json" -) +WEBPACK_MANIFEST_PATH = os.path.join(os.path.dirname(__file__), "../../client/dist/", "asset-manifest.json") def configure_webpack(app): diff --git a/redash/handlers/widgets.py b/redash/handlers/widgets.py index 6907943405..6a16a7ba55 100644 --- a/redash/handlers/widgets.py +++ b/redash/handlers/widgets.py @@ -2,13 +2,13 @@ from redash import models from redash.handlers.base import BaseResource -from redash.serializers import serialize_widget from redash.permissions import ( require_access, require_object_modify_permission, require_permission, view_only, ) +from redash.serializers import serialize_widget from redash.utils import json_dumps @@ -27,9 +27,7 @@ def post(self): :>json object widget: The created widget """ widget_properties = request.get_json(force=True) - dashboard = models.Dashboard.get_by_id_and_org( - widget_properties.get("dashboard_id"), self.current_org - ) + dashboard = models.Dashboard.get_by_id_and_org(widget_properties.get("dashboard_id"), self.current_org) require_object_modify_permission(dashboard, self.current_user) widget_properties["options"] = json_dumps(widget_properties["options"]) @@ -37,9 +35,7 @@ def post(self): visualization_id = widget_properties.pop("visualization_id") if visualization_id: - visualization = models.Visualization.get_by_id_and_org( - visualization_id, self.current_org - ) + visualization = models.Visualization.get_by_id_and_org(visualization_id, self.current_org) require_access(visualization.query_rel, self.current_user, view_only) else: visualization = None @@ -82,8 +78,6 @@ def delete(self, widget_id): """ widget = models.Widget.get_by_id_and_org(widget_id, self.current_org) require_object_modify_permission(widget.dashboard, self.current_user) - self.record_event( - {"action": "delete", "object_id": widget_id, "object_type": "widget"} - ) + self.record_event({"action": "delete", "object_id": widget_id, "object_type": "widget"}) models.db.session.delete(widget) models.db.session.commit() diff --git a/redash/metrics/database.py b/redash/metrics/database.py index 8b12765fe9..152427b2e5 100644 --- a/redash/metrics/database.py +++ b/redash/metrics/database.py @@ -2,13 +2,13 @@ import time from flask import g, has_request_context - -from redash import statsd_client from sqlalchemy.engine import Engine from sqlalchemy.event import listens_for from sqlalchemy.orm.util import _ORMJoin from sqlalchemy.sql.selectable import Alias +from redash import statsd_client + metrics_logger = logging.getLogger("metrics") diff --git a/redash/metrics/request.py b/redash/metrics/request.py index d9b2f3e5c0..9dc169f3b7 100644 --- a/redash/metrics/request.py +++ b/redash/metrics/request.py @@ -35,16 +35,12 @@ def calculate_metrics(response): queries_duration, ) - statsd_client.timing( - "requests.{}.{}".format(endpoint, request.method.lower()), request_duration - ) + statsd_client.timing("requests.{}.{}".format(endpoint, request.method.lower()), request_duration) return response -MockResponse = namedtuple( - "MockResponse", ["status_code", "content_type", "content_length"] -) +MockResponse = namedtuple("MockResponse", ["status_code", "content_type", "content_length"]) def calculate_metrics_on_exception(error): diff --git a/redash/models/__init__.py b/redash/models/__init__.py index b5ff75982d..7721503345 100644 --- a/redash/models/__init__.py +++ b/redash/models/__init__.py @@ -1,60 +1,80 @@ -import datetime import calendar +import datetime import logging -import time import numbers -import pytz +import time -from sqlalchemy import distinct, or_, and_, UniqueConstraint, cast +import pytz +from sqlalchemy import UniqueConstraint, and_, cast, distinct, func, or_ from sqlalchemy.dialects import postgresql from sqlalchemy.event import listens_for from sqlalchemy.ext.hybrid import hybrid_property -from sqlalchemy.orm import backref, contains_eager, joinedload, subqueryload, load_only +from sqlalchemy.orm import ( + backref, + contains_eager, + joinedload, + load_only, + subqueryload, +) from sqlalchemy.orm.exc import NoResultFound # noqa: F401 -from sqlalchemy import func from sqlalchemy_utils import generic_relationship -from sqlalchemy_utils.types import TSVectorType from sqlalchemy_utils.models import generic_repr +from sqlalchemy_utils.types import TSVectorType from sqlalchemy_utils.types.encrypted.encrypted_type import FernetEngine -from redash import redis_connection, utils, settings +from redash import redis_connection, settings, utils from redash.destinations import ( get_configuration_schema_for_destination_type, get_destination, ) from redash.metrics import database # noqa: F401 +from redash.models.base import ( + Column, + GFKBase, + SearchBaseQuery, + db, + gfk_type, + key_type, + primary_key, +) +from redash.models.changes import Change, ChangeTrackingMixin # noqa +from redash.models.mixins import BelongsToOrgMixin, TimestampMixin +from redash.models.organizations import Organization +from redash.models.parameterized_query import ParameterizedQuery +from redash.models.types import ( + Configuration, + EncryptedConfiguration, + MutableDict, + MutableList, + PseudoJSON, + pseudo_json_cast_property, +) +from redash.models.users import ( # noqa + AccessPermission, + AnonymousUser, + ApiUser, + Group, + User, +) from redash.query_runner import ( - with_ssh_tunnel, - get_configuration_schema_for_query_runner_type, - get_query_runner, TYPE_BOOLEAN, TYPE_DATE, TYPE_DATETIME, - BaseQueryRunner) + BaseQueryRunner, + get_configuration_schema_for_query_runner_type, + get_query_runner, + with_ssh_tunnel, +) from redash.utils import ( + base_url, + gen_query_hash, generate_token, json_dumps, json_loads, mustache_render, - base_url, sentry, - gen_query_hash) -from redash.utils.configuration import ConfigurationContainer -from redash.models.parameterized_query import ParameterizedQuery - -from .base import db, gfk_type, Column, GFKBase, SearchBaseQuery, key_type, primary_key -from .changes import ChangeTrackingMixin, Change # noqa -from .mixins import BelongsToOrgMixin, TimestampMixin -from .organizations import Organization -from .types import ( - EncryptedConfiguration, - Configuration, - MutableDict, - MutableList, - PseudoJSON, - pseudo_json_cast_property ) -from .users import AccessPermission, AnonymousUser, ApiUser, Group, User # noqa +from redash.utils.configuration import ConfigurationContainer logger = logging.getLogger(__name__) @@ -93,18 +113,14 @@ class DataSource(BelongsToOrgMixin, db.Model): options = Column( "encrypted_options", ConfigurationContainer.as_mutable( - EncryptedConfiguration( - db.Text, settings.DATASOURCE_SECRET_KEY, FernetEngine - ) + EncryptedConfiguration(db.Text, settings.DATASOURCE_SECRET_KEY, FernetEngine) ), ) queue_name = Column(db.String(255), default="queries") scheduled_queue_name = Column(db.String(255), default="scheduled_queries") created_at = Column(db.DateTime(True), default=db.func.now()) - data_source_groups = db.relationship( - "DataSourceGroup", back_populates="data_source", cascade="all" - ) + data_source_groups = db.relationship("DataSourceGroup", back_populates="data_source", cascade="all") __tablename__ = "data_sources" __table_args__ = (db.Index("data_sources_org_id_name", "org_id", "name"),) @@ -122,7 +138,7 @@ def to_dict(self, all=False, with_permissions_for=None): "syntax": self.query_runner.syntax, "paused": self.paused, "pause_reason": self.pause_reason, - "supports_auto_limit": self.query_runner.supports_auto_limit + "supports_auto_limit": self.query_runner.supports_auto_limit, } if all: @@ -151,9 +167,7 @@ def __str__(self): @classmethod def create_with_group(cls, *args, **kwargs): data_source = cls(*args, **kwargs) - data_source_group = DataSourceGroup( - data_source=data_source, group=data_source.org.default_group - ) + data_source_group = DataSourceGroup(data_source=data_source, group=data_source.org.default_group) db.session.add_all([data_source, data_source_group]) return data_source @@ -162,9 +176,7 @@ def all(cls, org, group_ids=None): data_sources = cls.query.filter(cls.org == org).order_by(cls.id.asc()) if group_ids: - data_sources = data_sources.join(DataSourceGroup).filter( - DataSourceGroup.group_id.in_(group_ids) - ) + data_sources = data_sources.join(DataSourceGroup).filter(DataSourceGroup.group_id.in_(group_ids)) return data_sources.distinct() @@ -173,9 +185,7 @@ def get_by_id(cls, _id): return cls.query.filter(cls.id == _id).one() def delete(self): - Query.query.filter(Query.data_source == self).update( - dict(data_source_id=None, latest_query_data_id=None) - ) + Query.query.filter(Query.data_source == self).update(dict(data_source_id=None, latest_query_data_id=None)) QueryResult.query.filter(QueryResult.data_source == self).delete() res = db.session.delete(self) db.session.commit() @@ -200,9 +210,7 @@ def get_schema(self, refresh=False): try: out_schema = self._sort_schema(schema) except Exception: - logging.exception( - "Error sorting schema columns for data_source {}".format(self.id) - ) + logging.exception("Error sorting schema columns for data_source {}".format(self.id)) out_schema = schema finally: redis_connection.set(self._schema_key, json_dumps(out_schema)) @@ -243,15 +251,11 @@ def add_group(self, group, view_only=False): return dsg def remove_group(self, group): - DataSourceGroup.query.filter( - DataSourceGroup.group == group, DataSourceGroup.data_source == self - ).delete() + DataSourceGroup.query.filter(DataSourceGroup.group == group, DataSourceGroup.data_source == self).delete() db.session.commit() def update_group_permission(self, group, view_only): - dsg = DataSourceGroup.query.filter( - DataSourceGroup.group == group, DataSourceGroup.data_source == self - ).one() + dsg = DataSourceGroup.query.filter(DataSourceGroup.group == group, DataSourceGroup.data_source == self).one() dsg.view_only = view_only db.session.add(dsg) return dsg @@ -314,9 +318,7 @@ def data(self, data): self._data = data -QueryResultPersistence = ( - settings.dynamic_settings.QueryResultPersistence or DBPersistence -) +QueryResultPersistence = settings.dynamic_settings.QueryResultPersistence or DBPersistence @generic_repr("id", "org_id", "data_source_id", "query_hash", "runtime", "retrieved_at") @@ -351,11 +353,9 @@ def to_dict(self): @classmethod def unused(cls, days=7): age_threshold = datetime.datetime.now() - datetime.timedelta(days=days) - return ( - cls.query.filter( - Query.id.is_(None), cls.retrieved_at < age_threshold - ).outerjoin(Query) - ).options(load_only("id")) + return (cls.query.filter(Query.id.is_(None), cls.retrieved_at < age_threshold).outerjoin(Query)).options( + load_only("id") + ) @classmethod def get_latest(cls, data_source, query, max_age=0): @@ -365,16 +365,13 @@ def get_latest(cls, data_source, query, max_age=0): max_age = settings.QUERY_RESULTS_EXPIRED_TTL if max_age == -1: - query = cls.query.filter( - cls.query_hash == query_hash, cls.data_source == data_source - ) + query = cls.query.filter(cls.query_hash == query_hash, cls.data_source == data_source) else: query = cls.query.filter( cls.query_hash == query_hash, cls.data_source == data_source, ( - db.func.timezone("utc", cls.retrieved_at) - + datetime.timedelta(seconds=max_age) + db.func.timezone("utc", cls.retrieved_at) + datetime.timedelta(seconds=max_age) >= db.func.timezone("utc", db.func.now()) ), ) @@ -382,9 +379,7 @@ def get_latest(cls, data_source, query, max_age=0): return query.order_by(cls.retrieved_at.desc()).first() @classmethod - def store_result( - cls, org, data_source, query_hash, query, data, run_time, retrieved_at - ): + def store_result(cls, org, data_source, query_hash, query, data, run_time, retrieved_at): query_result = cls( org_id=org, query_hash=query_hash, @@ -405,9 +400,7 @@ def groups(self): return self.data_source.groups -def should_schedule_next( - previous_iteration, now, interval, time=None, day_of_week=None, failures=0 -): +def should_schedule_next(previous_iteration, now, interval, time=None, day_of_week=None, failures=0): # if time exists then interval > 23 hours (82800s) # if day_of_week exists then interval > 6 days (518400s) if time is None: @@ -421,32 +414,23 @@ def should_schedule_next( # - The query scheduled to run at 23:59. # - The scheduler wakes up at 00:01. # - Using naive implementation of comparing timestamps, it will skip the execution. - normalized_previous_iteration = previous_iteration.replace( - hour=hour, minute=minute - ) + normalized_previous_iteration = previous_iteration.replace(hour=hour, minute=minute) if normalized_previous_iteration > previous_iteration: - previous_iteration = normalized_previous_iteration - datetime.timedelta( - days=1 - ) + previous_iteration = normalized_previous_iteration - datetime.timedelta(days=1) days_delay = int(interval) / 60 / 60 / 24 days_to_add = 0 if day_of_week is not None: - days_to_add = ( - list(calendar.day_name).index(day_of_week) - - normalized_previous_iteration.weekday() - ) + days_to_add = list(calendar.day_name).index(day_of_week) - normalized_previous_iteration.weekday() next_iteration = ( - previous_iteration - + datetime.timedelta(days=days_delay) - + datetime.timedelta(days=days_to_add) + previous_iteration + datetime.timedelta(days=days_delay) + datetime.timedelta(days=days_to_add) ).replace(hour=hour, minute=minute) if failures: try: - next_iteration += datetime.timedelta(minutes=2 ** failures) + next_iteration += datetime.timedelta(minutes=2**failures) except OverflowError: return False return now > next_iteration @@ -475,9 +459,7 @@ class Query(ChangeTrackingMixin, TimestampMixin, BelongsToOrgMixin, db.Model): org = db.relationship(Organization, backref="queries") data_source_id = Column(key_type("DataSource"), db.ForeignKey("data_sources.id"), nullable=True) data_source = db.relationship(DataSource, backref="queries") - latest_query_data_id = Column( - key_type("QueryResult"), db.ForeignKey("query_results.id"), nullable=True - ) + latest_query_data_id = Column(key_type("QueryResult"), db.ForeignKey("query_results.id"), nullable=True) latest_query_data = db.relationship(QueryResult) name = Column(db.String(255)) description = Column(db.String(4096), nullable=True) @@ -487,9 +469,7 @@ class Query(ChangeTrackingMixin, TimestampMixin, BelongsToOrgMixin, db.Model): user_id = Column(key_type("User"), db.ForeignKey("users.id")) user = db.relationship(User, foreign_keys=[user_id]) last_modified_by_id = Column(key_type("User"), db.ForeignKey("users.id"), nullable=True) - last_modified_by = db.relationship( - User, backref="modified_queries", foreign_keys=[last_modified_by_id] - ) + last_modified_by = db.relationship(User, backref="modified_queries", foreign_keys=[last_modified_by_id]) is_archived = Column(db.Boolean, default=False, index=True) is_draft = Column(db.Boolean, default=True, index=True) schedule = Column(MutableDict.as_mutable(PseudoJSON), nullable=True) @@ -507,9 +487,7 @@ class Query(ChangeTrackingMixin, TimestampMixin, BelongsToOrgMixin, db.Model): ), nullable=True, ) - tags = Column( - "tags", MutableList.as_mutable(postgresql.ARRAY(db.Unicode)), nullable=True - ) + tags = Column("tags", MutableList.as_mutable(postgresql.ARRAY(db.Unicode)), nullable=True) query_class = SearchBaseQuery __tablename__ = "queries" @@ -551,37 +529,27 @@ def create(cls, **kwargs): return query @classmethod - def all_queries( - cls, group_ids, user_id=None, include_drafts=False, include_archived=False - ): + def all_queries(cls, group_ids, user_id=None, include_drafts=False, include_archived=False): query_ids = ( db.session.query(distinct(cls.id)) - .join( - DataSourceGroup, Query.data_source_id == DataSourceGroup.data_source_id - ) + .join(DataSourceGroup, Query.data_source_id == DataSourceGroup.data_source_id) .filter(Query.is_archived.is_(include_archived)) .filter(DataSourceGroup.group_id.in_(group_ids)) ) queries = ( cls.query.options( joinedload(Query.user), - joinedload(Query.latest_query_data).load_only( - "runtime", "retrieved_at" - ), + joinedload(Query.latest_query_data).load_only("runtime", "retrieved_at"), ) .filter(cls.id.in_(query_ids)) # Adding outer joins to be able to order by relationship .outerjoin(User, User.id == Query.user_id) .outerjoin(QueryResult, QueryResult.id == Query.latest_query_data_id) - .options( - contains_eager(Query.user), contains_eager(Query.latest_query_data) - ) + .options(contains_eager(Query.user), contains_eager(Query.latest_query_data)) ) if not include_drafts: - queries = queries.filter( - or_(Query.is_draft.is_(False), Query.user_id == user_id) - ) + queries = queries.filter(or_(Query.is_draft.is_(False), Query.user_id == user_id)) return queries @classmethod @@ -597,9 +565,7 @@ def favorites(cls, user, base_query=None): @classmethod def all_tags(cls, user, include_drafts=False): - queries = cls.all_queries( - group_ids=user.group_ids, user_id=user.id, include_drafts=include_drafts - ) + queries = cls.all_queries(group_ids=user.group_ids, user_id=user.id, include_drafts=include_drafts) tag_column = func.unnest(cls.tags).label("tag") usage_count = func.count(1).label("usage_count") @@ -628,18 +594,13 @@ def past_scheduled_queries(cls): query for query in queries if query.schedule["until"] is not None - and pytz.utc.localize( - datetime.datetime.strptime(query.schedule["until"], "%Y-%m-%d") - ) - <= now + and pytz.utc.localize(datetime.datetime.strptime(query.schedule["until"], "%Y-%m-%d")) <= now ] @classmethod def outdated_queries(cls): queries = ( - Query.query.options( - joinedload(Query.latest_query_data).load_only("retrieved_at") - ) + Query.query.options(joinedload(Query.latest_query_data).load_only("retrieved_at")) .filter(Query.schedule.isnot(None)) .order_by(Query.id) .all() @@ -655,9 +616,7 @@ def outdated_queries(cls): continue if query.schedule["until"]: - schedule_until = pytz.utc.localize( - datetime.datetime.strptime(query.schedule["until"], "%Y-%m-%d") - ) + schedule_until = pytz.utc.localize(datetime.datetime.strptime(query.schedule["until"], "%Y-%m-%d")) if schedule_until <= now: continue @@ -685,9 +644,7 @@ def outdated_queries(cls): % (query.id, repr(e)) ) logging.info(message) - sentry.capture_exception( - type(e)(message).with_traceback(e.__traceback__) - ) + sentry.capture_exception(type(e)(message).with_traceback(e.__traceback__)) return list(outdated_queries.values()) @@ -713,9 +670,7 @@ def search( # Since tsvector doesn't work well with CJK languages, use `ilike` too pattern = "%{}%".format(term) return ( - all_queries.filter( - or_(cls.name.ilike(pattern), cls.description.ilike(pattern)) - ) + all_queries.filter(or_(cls.name.ilike(pattern), cls.description.ilike(pattern))) .order_by(Query.id) .limit(limit) ) @@ -732,18 +687,14 @@ def recent(cls, group_ids, user_id=None, limit=20): query = ( cls.query.filter(Event.created_at > (db.func.current_date() - 7)) .join(Event, Query.id == Event.object_id.cast(db.Integer)) - .join( - DataSourceGroup, Query.data_source_id == DataSourceGroup.data_source_id - ) + .join(DataSourceGroup, Query.data_source_id == DataSourceGroup.data_source_id) .filter( - Event.action.in_( - ["edit", "execute", "edit_name", "edit_description", "view_source"] - ), - Event.object_id != None, + Event.action.in_(["edit", "execute", "edit_name", "edit_description", "view_source"]), + Event.object_id is not None, Event.object_type == "query", DataSourceGroup.group_id.in_(group_ids), - or_(Query.is_draft == False, Query.user_id == user_id), - Query.is_archived == False, + or_(Query.is_draft.is_(False), Query.user_id is user_id), + Query.is_archived.is_(False), ) .group_by(Event.object_id, Query.id) .order_by(db.desc(db.func.count(0))) @@ -806,16 +757,12 @@ def fork(self, user): kwargs = {a: getattr(self, a) for a in forked_list} # Query.create will add default TABLE visualization, so use constructor to create bare copy of query - forked_query = Query( - name="Copy of (#{}) {}".format(self.id, self.name), user=user, **kwargs - ) + forked_query = Query(name="Copy of (#{}) {}".format(self.id, self.name), user=user, **kwargs) for v in sorted(self.visualizations, key=lambda v: v.id): forked_v = v.copy() forked_v["query_rel"] = forked_query - fv = Visualization( - **forked_v - ) # it will magically add it to `forked_query.visualizations` + fv = Visualization(**forked_v) # it will magically add it to `forked_query.visualizations` db.session.add(fv) db.session.add(forked_query) @@ -898,9 +845,7 @@ class Favorite(TimestampMixin, db.Model): user = db.relationship(User, backref="favorites") __tablename__ = "favorites" - __table_args__ = ( - UniqueConstraint("object_type", "object_id", "user_id", name="unique_favorite"), - ) + __table_args__ = (UniqueConstraint("object_type", "object_id", "user_id", name="unique_favorite"),) @classmethod def is_favorite(cls, user, object): @@ -966,9 +911,7 @@ def next_state(op, value, threshold): return new_state -@generic_repr( - "id", "name", "query_id", "user_id", "state", "last_triggered_at", "rearm" -) +@generic_repr("id", "name", "query_id", "user_id", "state", "last_triggered_at", "rearm") class Alert(TimestampMixin, BelongsToOrgMixin, db.Model): UNKNOWN_STATE = "unknown" OK_STATE = "ok" @@ -993,9 +936,7 @@ def all(cls, group_ids): return ( cls.query.options(joinedload(Alert.user), joinedload(Alert.query_rel)) .join(Query) - .join( - DataSourceGroup, DataSourceGroup.data_source_id == Query.data_source_id - ) + .join(DataSourceGroup, DataSourceGroup.data_source_id == Query.data_source_id) .filter(DataSourceGroup.group_id.in_(group_ids)) ) @@ -1019,9 +960,7 @@ def evaluate(self): return new_state def subscribers(self): - return User.query.join(AlertSubscription).filter( - AlertSubscription.alert == self - ) + return User.query.join(AlertSubscription).filter(AlertSubscription.alert == self) def render_template(self, template): if template is None: @@ -1043,9 +982,7 @@ def render_template(self, template): "ALERT_CONDITION": self.options["op"], "ALERT_THRESHOLD": self.options["value"], "QUERY_NAME": self.query_rel.name, - "QUERY_URL": "{host}/queries/{query_id}".format( - host=host, query_id=self.query_rel.id - ), + "QUERY_URL": "{host}/queries/{query_id}".format(host=host, query_id=self.query_rel.id), "QUERY_RESULT_VALUE": result_value, "QUERY_RESULT_ROWS": data["rows"], "QUERY_RESULT_COLS": data["columns"], @@ -1081,9 +1018,7 @@ def generate_slug(ctx): @gfk_type -@generic_repr( - "id", "name", "slug", "user_id", "org_id", "version", "is_archived", "is_draft" -) +@generic_repr("id", "name", "slug", "user_id", "org_id", "version", "is_archived", "is_draft") class Dashboard(ChangeTrackingMixin, TimestampMixin, BelongsToOrgMixin, db.Model): id = primary_key("Dashboard") version = Column(db.Integer) @@ -1099,12 +1034,8 @@ class Dashboard(ChangeTrackingMixin, TimestampMixin, BelongsToOrgMixin, db.Model is_archived = Column(db.Boolean, default=False, index=True) is_draft = Column(db.Boolean, default=True, index=True) widgets = db.relationship("Widget", backref="dashboard", lazy="dynamic") - tags = Column( - "tags", MutableList.as_mutable(postgresql.ARRAY(db.Unicode)), nullable=True - ) - options = Column( - MutableDict.as_mutable(postgresql.JSON), server_default="{}", default={} - ) + tags = Column("tags", MutableList.as_mutable(postgresql.ARRAY(db.Unicode)), nullable=True) + options = Column(MutableDict.as_mutable(postgresql.JSON), server_default="{}", default={}) __tablename__ = "dashboards" __mapper_args__ = {"version_id_col": version} @@ -1119,39 +1050,27 @@ def name_as_slug(self): @classmethod def all(cls, org, group_ids, user_id): query = ( - Dashboard.query.options( - joinedload(Dashboard.user).load_only( - "id", "name", "details", "email" - ) - ).distinct(cls.lowercase_name, Dashboard.created_at, Dashboard.slug) + Dashboard.query.options(joinedload(Dashboard.user).load_only("id", "name", "details", "email")) + .distinct(cls.lowercase_name, Dashboard.created_at, Dashboard.slug) .outerjoin(Widget) .outerjoin(Visualization) .outerjoin(Query) - .outerjoin( - DataSourceGroup, Query.data_source_id == DataSourceGroup.data_source_id - ) + .outerjoin(DataSourceGroup, Query.data_source_id == DataSourceGroup.data_source_id) .filter( - Dashboard.is_archived == False, - ( - DataSourceGroup.group_id.in_(group_ids) - | (Dashboard.user_id == user_id) - ), + Dashboard.is_archived.is_(False), + (DataSourceGroup.group_id.in_(group_ids) | (Dashboard.user_id == user_id)), Dashboard.org == org, ) ) - query = query.filter( - or_(Dashboard.user_id == user_id, Dashboard.is_draft == False) - ) + query = query.filter(or_(Dashboard.user_id == user_id, Dashboard.is_draft.is_(False))) return query @classmethod def search(cls, org, groups_ids, user_id, search_term): # TODO: switch to FTS - return cls.all(org, groups_ids, user_id).filter( - cls.name.ilike("%{}%".format(search_term)) - ) + return cls.all(org, groups_ids, user_id).filter(cls.name.ilike("%{}%".format(search_term))) @classmethod def search_by_user(cls, term, user, limit=None): @@ -1237,12 +1156,8 @@ def copy(self): @generic_repr("id", "visualization_id", "dashboard_id") class Widget(TimestampMixin, BelongsToOrgMixin, db.Model): id = primary_key("Widget") - visualization_id = Column( - key_type("Visualization"), db.ForeignKey("visualizations.id"), nullable=True - ) - visualization = db.relationship( - Visualization, backref=backref("widgets", cascade="delete") - ) + visualization_id = Column(key_type("Visualization"), db.ForeignKey("visualizations.id"), nullable=True) + visualization = db.relationship(Visualization, backref=backref("widgets", cascade="delete")) text = Column(db.Text, nullable=True) width = Column(db.Integer) options = Column(db.Text) @@ -1258,9 +1173,7 @@ def get_by_id_and_org(cls, object_id, org): return super(Widget, cls).get_by_id_and_org(object_id, org, Dashboard) -@generic_repr( - "id", "object_type", "object_id", "action", "user_id", "org_id", "created_at" -) +@generic_repr("id", "object_type", "object_id", "action", "user_id", "org_id", "created_at") class Event(db.Model): id = primary_key("Event") org_id = Column(key_type("Organization"), db.ForeignKey("organizations.id")) @@ -1270,9 +1183,7 @@ class Event(db.Model): action = Column(db.String(255)) object_type = Column(db.String(255)) object_id = Column(db.String(255), nullable=True) - additional_properties = Column( - MutableDict.as_mutable(PseudoJSON), nullable=True, default={} - ) + additional_properties = Column(MutableDict.as_mutable(PseudoJSON), nullable=True, default={}) created_at = Column(db.DateTime(True), default=db.func.now()) __tablename__ = "events" @@ -1332,20 +1243,18 @@ class ApiKey(TimestampMixin, GFKBase, db.Model): created_by = db.relationship(User) __tablename__ = "api_keys" - __table_args__ = ( - db.Index("api_keys_object_type_object_id", "object_type", "object_id"), - ) + __table_args__ = (db.Index("api_keys_object_type_object_id", "object_type", "object_id"),) @classmethod def get_by_api_key(cls, api_key): - return cls.query.filter(cls.api_key == api_key, cls.active == True).one() + return cls.query.filter(cls.api_key == api_key, cls.active.is_(True)).one() @classmethod def get_by_object(cls, object): return cls.query.filter( cls.object_type == object.__class__.__tablename__, cls.object_id == object.id, - cls.active == True, + cls.active.is_(True), ).first() @classmethod @@ -1367,19 +1276,13 @@ class NotificationDestination(BelongsToOrgMixin, db.Model): options = Column( "encrypted_options", ConfigurationContainer.as_mutable( - EncryptedConfiguration( - db.Text, settings.DATASOURCE_SECRET_KEY, FernetEngine - ) + EncryptedConfiguration(db.Text, settings.DATASOURCE_SECRET_KEY, FernetEngine) ), ) created_at = Column(db.DateTime(True), default=db.func.now()) __tablename__ = "notification_destinations" - __table_args__ = ( - db.Index( - "notification_destinations_org_id_name", "org_id", "name", unique=True - ), - ) + __table_args__ = (db.Index("notification_destinations_org_id_name", "org_id", "name", unique=True),) def __str__(self): return str(self.name) @@ -1405,18 +1308,14 @@ def destination(self): @classmethod def all(cls, org): - notification_destinations = cls.query.filter(cls.org == org).order_by( - cls.id.asc() - ) + notification_destinations = cls.query.filter(cls.org == org).order_by(cls.id.asc()) return notification_destinations def notify(self, alert, query, user, new_state, app, host): schema = get_configuration_schema_for_destination_type(self.type) self.options.set_schema(schema) - return self.destination.notify( - alert, query, user, new_state, app, host, self.options - ) + return self.destination.notify(alert, query, user, new_state, app, host, self.options) @generic_repr("id", "user_id", "destination_id", "alert_id") @@ -1451,9 +1350,7 @@ def to_dict(self): @classmethod def all(cls, alert_id): - return AlertSubscription.query.join(User).filter( - AlertSubscription.alert_id == alert_id - ) + return AlertSubscription.query.join(User).filter(AlertSubscription.alert_id == alert_id) def notify(self, alert, query, user, new_state, app, host): if self.destination: diff --git a/redash/models/base.py b/redash/models/base.py index 756c8e14bf..57ec2f0471 100644 --- a/redash/models/base.py +++ b/redash/models/base.py @@ -85,11 +85,7 @@ def object(self): return self._object else: object_class = _gfk_types[self.object_type] - self._object = ( - session.query(object_class) - .filter(object_class.id == self.object_id) - .first() - ) + self._object = session.query(object_class).filter(object_class.id == self.object_id).first() return self._object @object.setter diff --git a/redash/models/changes.py b/redash/models/changes.py index cf8be934d0..63cd053d34 100644 --- a/redash/models/changes.py +++ b/redash/models/changes.py @@ -1,7 +1,7 @@ from sqlalchemy.inspection import inspect from sqlalchemy_utils.models import generic_repr -from .base import GFKBase, db, Column, primary_key, key_type +from .base import Column, GFKBase, db, key_type, primary_key from .types import PseudoJSON @@ -39,9 +39,7 @@ def to_dict(self, full=True): @classmethod def last_change(cls, obj): return ( - cls.query.filter( - cls.object_id == obj.id, cls.object_type == obj.__class__.__tablename__ - ) + cls.query.filter(cls.object_id == obj.id, cls.object_type == obj.__class__.__tablename__) .order_by(cls.object_version.desc()) .first() ) diff --git a/redash/models/mixins.py b/redash/models/mixins.py index 9116fe46de..2648653436 100644 --- a/redash/models/mixins.py +++ b/redash/models/mixins.py @@ -1,6 +1,6 @@ from sqlalchemy.event import listens_for -from .base import db, Column +from .base import Column, db class TimestampMixin(object): diff --git a/redash/models/organizations.py b/redash/models/organizations.py index 18dd9f1898..4f5ec03289 100644 --- a/redash/models/organizations.py +++ b/redash/models/organizations.py @@ -3,10 +3,10 @@ from redash.settings.organization import settings as org_settings -from .base import db, Column, primary_key +from .base import Column, db, primary_key from .mixins import TimestampMixin from .types import MutableDict, PseudoJSON -from .users import User, Group +from .users import Group, User @generic_repr("id", "name", "slug") @@ -36,9 +36,7 @@ def get_by_id(cls, _id): @property def default_group(self): - return self.groups.filter( - Group.name == "default", Group.type == Group.BUILTIN_GROUP - ).first() + return self.groups.filter(Group.name == "default", Group.type == Group.BUILTIN_GROUP).first() @property def google_apps_domains(self): @@ -80,9 +78,7 @@ def get_setting(self, key, raise_on_missing=True): @property def admin_group(self): - return self.groups.filter( - Group.name == "admin", Group.type == Group.BUILTIN_GROUP - ).first() + return self.groups.filter(Group.name == "admin", Group.type == Group.BUILTIN_GROUP).first() def has_user(self, email): return self.users.filter(User.email == email).count() == 1 diff --git a/redash/models/parameterized_query.py b/redash/models/parameterized_query.py index 0094c0aa7d..7e8d422900 100644 --- a/redash/models/parameterized_query.py +++ b/redash/models/parameterized_query.py @@ -1,10 +1,11 @@ -import pystache from functools import partial from numbers import Number -from redash.utils import mustache_render, json_loads -from redash.permissions import require_access, view_only -from funcy import distinct + +import pystache from dateutil.parser import parse +from funcy import distinct + +from redash.utils import mustache_render def _pluck_name_and_value(default_column, row): @@ -21,9 +22,7 @@ def _load_result(query_id, org): query = models.Query.get_by_id_and_org(query_id, org) if query.data_source: - query_result = models.QueryResult.get_by_id_and_org( - query.latest_query_data_id, org - ) + query_result = models.QueryResult.get_by_id_and_org(query.latest_query_data_id, org) return query_result.data else: raise QueryDetachedFromDataSourceError(query_id) @@ -38,18 +37,14 @@ def dropdown_values(query_id, org): def join_parameter_list_values(parameters, schema): updated_parameters = {} - for (key, value) in parameters.items(): + for key, value in parameters.items(): if isinstance(value, list): - definition = next( - (definition for definition in schema if definition["name"] == key), {} - ) + definition = next((definition for definition in schema if definition["name"] == key), {}) multi_values_options = definition.get("multiValuesOptions", {}) separator = str(multi_values_options.get("separator", ",")) prefix = str(multi_values_options.get("prefix", "")) suffix = str(multi_values_options.get("suffix", "")) - updated_parameters[key] = separator.join( - [prefix + v + suffix for v in value] - ) + updated_parameters[key] = separator.join([prefix + v + suffix for v in value]) else: updated_parameters[key] = value return updated_parameters @@ -126,16 +121,12 @@ def __init__(self, template, schema=None, org=None): self.parameters = {} def apply(self, parameters): - invalid_parameter_names = [ - key for (key, value) in parameters.items() if not self._valid(key, value) - ] + invalid_parameter_names = [key for (key, value) in parameters.items() if not self._valid(key, value)] if invalid_parameter_names: raise InvalidParameterError(invalid_parameter_names) else: self.parameters.update(parameters) - self.query = mustache_render( - self.template, join_parameter_list_values(parameters, self.schema) - ) + self.query = mustache_render(self.template, join_parameter_list_values(parameters, self.schema)) return self @@ -161,9 +152,7 @@ def _valid(self, name, value): validators = { "text": lambda value: isinstance(value, str), "number": _is_number, - "enum": lambda value: _is_value_within_options( - value, enum_options, allow_multiple_values - ), + "enum": lambda value: _is_value_within_options(value, enum_options, allow_multiple_values), "query": lambda value: _is_value_within_options( value, [v["value"] for v in dropdown_values(query_id, self.org)], @@ -199,9 +188,7 @@ def text(self): class InvalidParameterError(Exception): def __init__(self, parameters): parameter_names = ", ".join(parameters) - message = "The following parameter values are incompatible with their definitions: {}".format( - parameter_names - ) + message = "The following parameter values are incompatible with their definitions: {}".format(parameter_names) super(InvalidParameterError, self).__init__(message) diff --git a/redash/models/types.py b/redash/models/types.py index dd7873ab06..ae1c4fd8e7 100644 --- a/redash/models/types.py +++ b/redash/models/types.py @@ -1,10 +1,9 @@ -import pytz -from sqlalchemy.types import TypeDecorator +from sqlalchemy import cast +from sqlalchemy.dialects.postgresql import JSON from sqlalchemy.ext.indexable import index_property from sqlalchemy.ext.mutable import Mutable +from sqlalchemy.types import TypeDecorator from sqlalchemy_utils import EncryptedType -from sqlalchemy import cast -from sqlalchemy.dialects.postgresql import JSON from redash.utils import json_dumps, json_loads from redash.utils.configuration import ConfigurationContainer @@ -24,9 +23,7 @@ def process_result_value(self, value, dialect): class EncryptedConfiguration(EncryptedType): def process_bind_param(self, value, dialect): - return super(EncryptedConfiguration, self).process_bind_param( - value.to_json(), dialect - ) + return super(EncryptedConfiguration, self).process_bind_param(value.to_json(), dialect) def process_result_value(self, value, dialect): return ConfigurationContainer.from_json( @@ -118,9 +115,11 @@ class pseudo_json_cast_property(index_property): entity attribute as the specified cast type. Useful for PseudoJSON colums for easier querying/filtering. """ + def __init__(self, cast_type, *args, **kwargs): super().__init__(*args, **kwargs) self.cast_type = cast_type + def expr(self, model): expr = cast(getattr(model, self.attr_name), JSON)[self.index] return expr.astext.cast(self.cast_type) diff --git a/redash/models/users.py b/redash/models/users.py index 6aced31a52..f0313a24e0 100644 --- a/redash/models/users.py +++ b/redash/models/users.py @@ -76,9 +76,7 @@ def has_permissions(self, permissions): @generic_repr("id", "name", "email") -class User( - TimestampMixin, db.Model, BelongsToOrgMixin, UserMixin, PermissionsCheckMixin -): +class User(TimestampMixin, db.Model, BelongsToOrgMixin, UserMixin, PermissionsCheckMixin): id = primary_key("User") org_id = Column(key_type("Organization"), db.ForeignKey("organizations.id")) org = db.relationship("Organization", backref=db.backref("users", lazy="dynamic")) @@ -99,18 +97,10 @@ class User( server_default="{}", default={}, ) - active_at = json_cast_property( - db.DateTime(True), "details", "active_at", default=None - ) - _profile_image_url = json_cast_property( - db.Text(), "details", "profile_image_url", default=None - ) - is_invitation_pending = json_cast_property( - db.Boolean(True), "details", "is_invitation_pending", default=False - ) - is_email_verified = json_cast_property( - db.Boolean(True), "details", "is_email_verified", default=True - ) + active_at = json_cast_property(db.DateTime(True), "details", "active_at", default=None) + _profile_image_url = json_cast_property(db.Text(), "details", "profile_image_url", default=None) + is_invitation_pending = json_cast_property(db.Boolean(True), "details", "is_invitation_pending", default=False) + is_email_verified = json_cast_property(db.Boolean(True), "details", "is_email_verified", default=True) __tablename__ = "users" __table_args__ = (db.Index("users_org_id_email", "org_id", "email", unique=True),) @@ -182,14 +172,7 @@ def profile_image_url(self): @property def permissions(self): # TODO: this should be cached. - return list( - itertools.chain( - *[ - g.permissions - for g in Group.query.filter(Group.id.in_(self.group_ids)) - ] - ) - ) + return list(itertools.chain(*[g.permissions for g in Group.query.filter(Group.id.in_(self.group_ids))])) @classmethod def get_by_org(cls, org): @@ -227,9 +210,7 @@ def pending(cls, base_query, pending): if pending: return base_query.filter(cls.is_invitation_pending.is_(True)) else: - return base_query.filter( - cls.is_invitation_pending.isnot(True) - ) # check for both `false`/`null` + return base_query.filter(cls.is_invitation_pending.isnot(True)) # check for both `false`/`null` @classmethod def find_by_email(cls, email): @@ -252,9 +233,7 @@ def has_access(self, obj, access_type): return AccessPermission.exists(obj, access_type, grantee=self) def get_id(self): - identity = hashlib.md5( - "{},{}".format(self.email, self.password_hash).encode() - ).hexdigest() + identity = hashlib.md5("{},{}".format(self.email, self.password_hash).encode()).hexdigest() return "{0}-{1}".format(self.id, identity) @@ -279,9 +258,7 @@ class Group(db.Model, BelongsToOrgMixin): REGULAR_GROUP = "regular" id = primary_key("Group") - data_sources = db.relationship( - "DataSourceGroup", back_populates="group", cascade="all" - ) + data_sources = db.relationship("DataSourceGroup", back_populates="group", cascade="all") org_id = Column(key_type("Organization"), db.ForeignKey("organizations.id")) org = db.relationship("Organization", back_populates="groups") type = Column(db.String(255), default=REGULAR_GROUP) @@ -317,9 +294,7 @@ def find_by_name(cls, org, group_names): return list(result) -@generic_repr( - "id", "object_type", "object_id", "access_type", "grantor_id", "grantee_id" -) +@generic_repr("id", "object_type", "object_id", "access_type", "grantor_id", "grantee_id") class AccessPermission(GFKBase, db.Model): id = primary_key("AccessPermission") # 'object' defined in GFKBase @@ -368,9 +343,7 @@ def exists(cls, obj, access_type, grantee): @classmethod def _query(cls, obj, access_type=None, grantee=None, grantor=None): - q = cls.query.filter( - cls.object_id == obj.id, cls.object_type == obj.__tablename__ - ) + q = cls.query.filter(cls.object_id == obj.id, cls.object_type == obj.__tablename__) if access_type: q = q.filter(AccessPermission.access_type == access_type) diff --git a/redash/monitor.py b/redash/monitor.py index 41f3dca122..7a98072ffb 100644 --- a/redash/monitor.py +++ b/redash/monitor.py @@ -1,14 +1,11 @@ -from __future__ import absolute_import -import itertools from funcy import flatten -from sqlalchemy import union_all -from redash import redis_connection, rq_redis_connection, __version__, settings -from redash.models import db, DataSource, Query, QueryResult, Dashboard, Widget -from redash.utils import json_loads from rq import Queue, Worker from rq.job import Job from rq.registry import StartedJobRegistry +from redash import __version__, redis_connection, rq_redis_connection, settings +from redash.models import Dashboard, Query, QueryResult, Widget, db + def get_redis_status(): info = redis_connection.info() diff --git a/redash/permissions.py b/redash/permissions.py index 92c34dc157..689363c577 100644 --- a/redash/permissions.py +++ b/redash/permissions.py @@ -92,9 +92,7 @@ def require_super_admin(fn): def has_permission_or_owner(permission, object_owner_id): - return int(object_owner_id) == current_user.id or current_user.has_permission( - permission - ) + return int(object_owner_id) == current_user.id or current_user.has_permission(permission) def is_admin_or_owner(object_owner_id): diff --git a/redash/query_runner/__init__.py b/redash/query_runner/__init__.py index 28228c51d3..7d0a125fa6 100644 --- a/redash/query_runner/__init__.py +++ b/redash/query_runner/__init__.py @@ -1,22 +1,23 @@ +import ipaddress import logging - +import socket from contextlib import ExitStack -from dateutil import parser from functools import wraps -import socket -import ipaddress from urllib.parse import urlparse +import sqlparse +from dateutil import parser +from rq.timeouts import JobTimeoutException from six import text_type from sshtunnel import open_tunnel + from redash import settings, utils from redash.utils import json_loads -from rq.timeouts import JobTimeoutException - -from redash.utils.requests_session import requests_or_advocate, requests_session, UnacceptableAddressException - - -import sqlparse +from redash.utils.requests_session import ( + UnacceptableAddressException, + requests_or_advocate, + requests_session, +) logger = logging.getLogger(__name__) @@ -47,9 +48,8 @@ TYPE_DATETIME = "datetime" TYPE_DATE = "date" -SUPPORTED_COLUMN_TYPES = set( - [TYPE_INTEGER, TYPE_FLOAT, TYPE_BOOLEAN, TYPE_STRING, TYPE_DATETIME, TYPE_DATE] -) +SUPPORTED_COLUMN_TYPES = set([TYPE_INTEGER, TYPE_FLOAT, TYPE_BOOLEAN, TYPE_STRING, TYPE_DATETIME, TYPE_DATE]) + def split_sql_statements(query): def strip_trailing_comments(stmt): @@ -57,7 +57,7 @@ def strip_trailing_comments(stmt): while idx >= 0: tok = stmt.tokens[idx] if tok.is_whitespace or sqlparse.utils.imt(tok, i=sqlparse.sql.Comment, t=sqlparse.tokens.Comment): - stmt.tokens[idx] = sqlparse.sql.Token(sqlparse.tokens.Whitespace, ' ') + stmt.tokens[idx] = sqlparse.sql.Token(sqlparse.tokens.Whitespace, " ") else: break idx -= 1 @@ -70,7 +70,7 @@ def strip_trailing_semicolon(stmt): # we expect that trailing comments already are removed if not tok.is_whitespace: if sqlparse.utils.imt(tok, t=sqlparse.tokens.Punctuation) and tok.value == ";": - stmt.tokens[idx] = sqlparse.sql.Token(sqlparse.tokens.Whitespace, ' ') + stmt.tokens[idx] = sqlparse.sql.Token(sqlparse.tokens.Whitespace, " ") break idx -= 1 return stmt @@ -101,12 +101,14 @@ def is_empty_statement(stmt): def combine_sql_statements(queries): return ";\n".join(queries) + def find_last_keyword_idx(parsed_query): for i in reversed(range(len(parsed_query.tokens))): if parsed_query.tokens[i].ttype in sqlparse.tokens.Keyword: return i return -1 + class InterruptException(Exception): pass @@ -120,7 +122,7 @@ class BaseQueryRunner(object): should_annotate_query = True noop_query = None limit_query = " LIMIT 1000" - limit_keywords = [ "LIMIT", "OFFSET"] + limit_keywords = ["LIMIT", "OFFSET"] def __init__(self, configuration): self.syntax = "sql" @@ -225,9 +227,7 @@ def fetch_columns(self, columns): duplicates_counter += 1 column_names.append(column_name) - new_columns.append( - {"name": column_name, "friendly_name": column_name, "type": col[1]} - ) + new_columns.append({"name": column_name, "friendly_name": column_name, "type": col[1]}) return new_columns @@ -306,12 +306,11 @@ def add_limit_to_query(self, query): limit_tokens = sqlparse.parse(self.limit_query)[0].tokens length = len(parsed_query.tokens) if parsed_query.tokens[length - 1].ttype == sqlparse.tokens.Punctuation: - parsed_query.tokens[length - 1:length - 1] = limit_tokens + parsed_query.tokens[length - 1 : length - 1] = limit_tokens else: parsed_query.tokens += limit_tokens return str(parsed_query) - def apply_auto_limit(self, query_text, should_apply_auto_limit): if should_apply_auto_limit: queries = split_sql_statements(query_text) @@ -367,7 +366,6 @@ def get_auth(self): return None def get_response(self, url, auth=None, http_method="get", **kwargs): - # Get authentication values if not given if auth is None: auth = self.get_auth() @@ -389,9 +387,8 @@ def get_response(self, url, auth=None, http_method="get", **kwargs): except requests_or_advocate.HTTPError as exc: logger.exception(exc) - error = "Failed to execute query. " "Return Code: {} Reason: {}".format( - response.status_code, response.text - ) + error = "Failed to execute query. " + f"Return Code: {response.status_code} Reason: {response.text}" except UnacceptableAddressException as exc: logger.exception(exc) error = "Can't query private addresses." @@ -491,9 +488,7 @@ def wrapper(*args, **kwargs): try: remote_host, remote_port = query_runner.host, query_runner.port except NotImplementedError: - raise NotImplementedError( - "SSH tunneling is not implemented for this query runner yet." - ) + raise NotImplementedError("SSH tunneling is not implemented for this query runner yet.") stack = ExitStack() try: @@ -503,11 +498,7 @@ def wrapper(*args, **kwargs): "ssh_username": details["ssh_username"], **settings.dynamic_settings.ssh_tunnel_auth(), } - server = stack.enter_context( - open_tunnel( - bastion_address, remote_bind_address=remote_address, **auth - ) - ) + server = stack.enter_context(open_tunnel(bastion_address, remote_bind_address=remote_address, **auth)) except Exception as error: raise type(error)("SSH tunnel: {}".format(str(error))) diff --git a/redash/query_runner/amazon_elasticsearch.py b/redash/query_runner/amazon_elasticsearch.py index 529892af89..ded708315c 100644 --- a/redash/query_runner/amazon_elasticsearch.py +++ b/redash/query_runner/amazon_elasticsearch.py @@ -1,9 +1,9 @@ -from .elasticsearch2 import ElasticSearch2 from . import register +from .elasticsearch2 import ElasticSearch2 try: + from botocore import credentials, session from requests_aws_sign import AWSV4Sign - from botocore import session, credentials enabled = True except ImportError: diff --git a/redash/query_runner/arango.py b/redash/query_runner/arango.py index 1733e45632..66dca21b3c 100644 --- a/redash/query_runner/arango.py +++ b/redash/query_runner/arango.py @@ -1,6 +1,12 @@ import logging -from redash.query_runner import * +from redash.query_runner import ( + TYPE_BOOLEAN, + TYPE_FLOAT, + TYPE_STRING, + BaseQueryRunner, + register, +) from redash.utils import json_dumps logger = logging.getLogger(__name__) @@ -49,7 +55,7 @@ def configuration_schema(cls): @classmethod def enabled(cls): try: - import arango + import arango # noqa: F401 except ImportError: return False @@ -60,18 +66,15 @@ def type(cls): return "arangodb" def run_query(self, query, user): - client = ArangoClient(hosts='{}:{}'.format(self.configuration["host"], - self.configuration.get("port", 8529))) - db = client.db(self.configuration["dbname"], - username=self.configuration["user"], - password=self.configuration["password"]) + client = ArangoClient(hosts="{}:{}".format(self.configuration["host"], self.configuration.get("port", 8529))) + db = client.db( + self.configuration["dbname"], username=self.configuration["user"], password=self.configuration["password"] + ) try: cursor = db.aql.execute(query, max_runtime=self.configuration.get("timeout", 0.0)) result = [i for i in cursor] - column_tuples = [ - (i, TYPE_STRING) for i in result[0].keys() - ] + column_tuples = [(i, TYPE_STRING) for i in result[0].keys()] columns = self.fetch_columns(column_tuples) data = { "columns": columns, diff --git a/redash/query_runner/athena.py b/redash/query_runner/athena.py index 2fbd962490..ff79728815 100644 --- a/redash/query_runner/athena.py +++ b/redash/query_runner/athena.py @@ -1,23 +1,28 @@ import logging import os -from redash.query_runner import * +from redash.query_runner import ( + TYPE_BOOLEAN, + TYPE_DATE, + TYPE_DATETIME, + TYPE_FLOAT, + TYPE_INTEGER, + TYPE_STRING, + BaseQueryRunner, + register, +) from redash.settings import parse_boolean from redash.utils import json_dumps, json_loads logger = logging.getLogger(__name__) ANNOTATE_QUERY = parse_boolean(os.environ.get("ATHENA_ANNOTATE_QUERY", "true")) -SHOW_EXTRA_SETTINGS = parse_boolean( - os.environ.get("ATHENA_SHOW_EXTRA_SETTINGS", "true") -) +SHOW_EXTRA_SETTINGS = parse_boolean(os.environ.get("ATHENA_SHOW_EXTRA_SETTINGS", "true")) ASSUME_ROLE = parse_boolean(os.environ.get("ATHENA_ASSUME_ROLE", "false")) -OPTIONAL_CREDENTIALS = parse_boolean( - os.environ.get("ATHENA_OPTIONAL_CREDENTIALS", "true") -) +OPTIONAL_CREDENTIALS = parse_boolean(os.environ.get("ATHENA_OPTIONAL_CREDENTIALS", "true")) try: - import pyathena import boto3 + import pyathena enabled = True except ImportError: @@ -180,14 +185,11 @@ def __get_schema_from_glue(self): iterator = table_paginator.paginate(DatabaseName=database["Name"]) for table in iterator.search("TableList[]"): table_name = "%s.%s" % (database["Name"], table["Name"]) - if 'StorageDescriptor' not in table: + if "StorageDescriptor" not in table: logger.warning("Glue table doesn't have StorageDescriptor: %s", table_name) continue if table_name not in schema: - column = [ - columns["Name"] - for columns in table["StorageDescriptor"]["Columns"] - ] + column = [columns["Name"] for columns in table["StorageDescriptor"]["Columns"]] schema[table_name] = {"name": table_name, "columns": column} for partition in table.get("PartitionKeys", []): schema[table_name]["columns"].append(partition["Name"]) @@ -225,19 +227,14 @@ def run_query(self, query, user): kms_key=self.configuration.get("kms_key", None), work_group=self.configuration.get("work_group", "primary"), formatter=SimpleFormatter(), - **self._get_iam_credentials(user=user) + **self._get_iam_credentials(user=user), ).cursor() try: cursor.execute(query) - column_tuples = [ - (i[0], _TYPE_MAPPINGS.get(i[1], None)) for i in cursor.description - ] + column_tuples = [(i[0], _TYPE_MAPPINGS.get(i[1], None)) for i in cursor.description] columns = self.fetch_columns(column_tuples) - rows = [ - dict(zip(([c["name"] for c in columns]), r)) - for i, r in enumerate(cursor.fetchall()) - ] + rows = [dict(zip(([c["name"] for c in columns]), r)) for i, r in enumerate(cursor.fetchall())] qbytes = None athena_query_id = None try: diff --git a/redash/query_runner/axibase_tsd.py b/redash/query_runner/axibase_tsd.py index ecb1af5cba..ac86e8bf65 100644 --- a/redash/query_runner/axibase_tsd.py +++ b/redash/query_runner/axibase_tsd.py @@ -1,10 +1,18 @@ -from io import StringIO +import csv import logging -import sys import uuid -import csv -from redash.query_runner import * +from redash.query_runner import ( + TYPE_DATE, + TYPE_DATETIME, + TYPE_FLOAT, + TYPE_INTEGER, + TYPE_STRING, + BaseQueryRunner, + InterruptException, + JobTimeoutException, + register, +) from redash.utils import json_dumps, json_loads logger = logging.getLogger(__name__) @@ -12,7 +20,7 @@ try: import atsd_client from atsd_client.exceptions import SQLException - from atsd_client.services import SQLService, MetricsService + from atsd_client.services import MetricsService, SQLService enabled = True except ImportError: diff --git a/redash/query_runner/azure_kusto.py b/redash/query_runner/azure_kusto.py index 84633dbfc7..217bc2ed31 100644 --- a/redash/query_runner/azure_kusto.py +++ b/redash/query_runner/azure_kusto.py @@ -1,18 +1,22 @@ -from redash.query_runner import BaseQueryRunner, register from redash.query_runner import ( - TYPE_STRING, + TYPE_BOOLEAN, TYPE_DATE, TYPE_DATETIME, - TYPE_INTEGER, TYPE_FLOAT, - TYPE_BOOLEAN, + TYPE_INTEGER, + TYPE_STRING, + BaseQueryRunner, + register, ) from redash.utils import json_dumps, json_loads - try: - from azure.kusto.data.request import KustoClient, KustoConnectionStringBuilder, ClientRequestProperties from azure.kusto.data.exceptions import KustoServiceError + from azure.kusto.data.request import ( + ClientRequestProperties, + KustoClient, + KustoConnectionStringBuilder, + ) enabled = True except ImportError: @@ -87,7 +91,6 @@ def name(cls): return "Azure Data Explorer (Kusto)" def run_query(self, query, user): - kcsb = KustoConnectionStringBuilder.with_aad_application_key_authentication( connection_string=self.configuration["cluster"], aad_app_id=self.configuration["azure_ad_client_id"], @@ -143,9 +146,7 @@ def get_schema(self, get_stats=False): results = json_loads(results) schema_as_json = json_loads(results["rows"][0]["DatabaseSchema"]) - tables_list = schema_as_json["Databases"][self.configuration["database"]][ - "Tables" - ].values() + tables_list = schema_as_json["Databases"][self.configuration["database"]]["Tables"].values() schema = {} diff --git a/redash/query_runner/big_query.py b/redash/query_runner/big_query.py index 93c8a7f084..50170f376d 100644 --- a/redash/query_runner/big_query.py +++ b/redash/query_runner/big_query.py @@ -1,14 +1,22 @@ import datetime import logging -import sys import time from base64 import b64decode import httplib2 -import requests from redash import settings -from redash.query_runner import * +from redash.query_runner import ( + TYPE_BOOLEAN, + TYPE_DATETIME, + TYPE_FLOAT, + TYPE_INTEGER, + TYPE_STRING, + BaseQueryRunner, + InterruptException, + JobTimeoutException, + register, +) from redash.utils import json_dumps, json_loads logger = logging.getLogger(__name__) @@ -16,7 +24,7 @@ try: import apiclient.errors from apiclient.discovery import build - from apiclient.errors import HttpError + from apiclient.errors import HttpError # noqa: F401 from oauth2client.service_account import ServiceAccountCredentials enabled = True @@ -52,9 +60,7 @@ def transform_row(row, fields): for column_index, cell in enumerate(row["f"]): field = fields[column_index] if field.get("mode") == "REPEATED": - cell_value = [ - transform_cell(field["type"], item["v"]) for item in cell["v"] - ] + cell_value = [transform_cell(field["type"], item["v"]) for item in cell["v"]] else: cell_value = transform_cell(field["type"], cell["v"]) @@ -64,7 +70,7 @@ def transform_row(row, fields): def _load_key(filename): - f = file(filename, "rb") + f = open(filename, "rb") try: return f.read() finally: @@ -180,17 +186,13 @@ def _get_job_data(self, query): job_data["configuration"]["query"]["useLegacySql"] = False if self.configuration.get("userDefinedFunctionResourceUri"): - resource_uris = self.configuration["userDefinedFunctionResourceUri"].split( - "," - ) + resource_uris = self.configuration["userDefinedFunctionResourceUri"].split(",") job_data["configuration"]["query"]["userDefinedFunctionResources"] = [ {"resourceUri": resource_uri} for resource_uri in resource_uris ] if "maximumBillingTier" in self.configuration: - job_data["configuration"]["query"][ - "maximumBillingTier" - ] = self.configuration["maximumBillingTier"] + job_data["configuration"]["query"]["maximumBillingTier"] = self.configuration["maximumBillingTier"] return job_data @@ -233,9 +235,7 @@ def _get_query_result(self, jobs, query): { "name": f["name"], "friendly_name": f["name"], - "type": "string" - if f.get("mode") == "REPEATED" - else types_map.get(f["type"], "string"), + "type": "string" if f.get("mode") == "REPEATED" else types_map.get(f["type"], "string"), } for f in query_reply["schema"]["fields"] ] @@ -273,12 +273,12 @@ def _get_project_datasets(self, project_id): datasets = service.datasets().list(projectId=project_id).execute() result.extend(datasets.get("datasets", [])) - nextPageToken = datasets.get('nextPageToken', None) + nextPageToken = datasets.get("nextPageToken", None) while nextPageToken is not None: datasets = service.datasets().list(projectId=project_id, pageToken=nextPageToken).execute() result.extend(datasets.get("datasets", [])) - nextPageToken = datasets.get('nextPageToken', None) + nextPageToken = datasets.get("nextPageToken", None) return result @@ -302,7 +302,7 @@ def get_schema(self, get_stats=False): query = query_base.format(dataset_id=dataset_id) queries.append(query) - query = '\nUNION ALL\n'.join(queries) + query = "\nUNION ALL\n".join(queries) results, error = self.run_query(query, None) if error is not None: self._handle_run_query_error(error) @@ -325,14 +325,11 @@ def run_query(self, query, user): try: if "totalMBytesProcessedLimit" in self.configuration: limitMB = self.configuration["totalMBytesProcessedLimit"] - processedMB = ( - self._get_total_bytes_processed(jobs, query) / 1000.0 / 1000.0 - ) + processedMB = self._get_total_bytes_processed(jobs, query) / 1000.0 / 1000.0 if limitMB < processedMB: return ( None, - "Larger than %d MBytes will be processed (%f MBytes)" - % (limitMB, processedMB), + "Larger than %d MBytes will be processed (%f MBytes)" % (limitMB, processedMB), ) data = self._get_query_result(jobs, query) diff --git a/redash/query_runner/big_query_gce.py b/redash/query_runner/big_query_gce.py index bc7a38d91d..fed0eefe5d 100644 --- a/redash/query_runner/big_query_gce.py +++ b/redash/query_runner/big_query_gce.py @@ -1,5 +1,5 @@ -import requests import httplib2 +import requests try: from apiclient.discovery import build @@ -10,6 +10,7 @@ enabled = False from redash.query_runner import register + from .big_query import BigQuery @@ -65,9 +66,7 @@ def _get_project_id(self): ).content def _get_bigquery_service(self): - credentials = gce.AppAssertionCredentials( - scope="https://www.googleapis.com/auth/bigquery" - ) + credentials = gce.AppAssertionCredentials(scope="https://www.googleapis.com/auth/bigquery") http = httplib2.Http() http = credentials.authorize(http) diff --git a/redash/query_runner/cass.py b/redash/query_runner/cass.py index 4a49c0d9b1..21081ae115 100644 --- a/redash/query_runner/cass.py +++ b/redash/query_runner/cass.py @@ -10,8 +10,8 @@ logger = logging.getLogger(__name__) try: - from cassandra.cluster import Cluster from cassandra.auth import PlainTextAuthProvider + from cassandra.cluster import Cluster from cassandra.util import sortedset enabled = True @@ -20,12 +20,10 @@ def generate_ssl_options_dict(protocol, cert_path=None): - ssl_options = { - 'ssl_version': getattr(ssl, protocol) - } + ssl_options = {"ssl_version": getattr(ssl, protocol)} if cert_path is not None: - ssl_options['ca_certs'] = cert_path - ssl_options['cert_reqs'] = ssl.CERT_REQUIRED + ssl_options["ca_certs"] = cert_path + ssl_options["cert_reqs"] = ssl.CERT_REQUIRED return ssl_options @@ -60,10 +58,7 @@ def configuration_schema(cls): }, "timeout": {"type": "number", "title": "Timeout", "default": 10}, "useSsl": {"type": "boolean", "title": "Use SSL", "default": False}, - "sslCertificateFile": { - "type": "string", - "title": "SSL Certificate File" - }, + "sslCertificateFile": {"type": "string", "title": "SSL Certificate File"}, "sslProtocol": { "type": "string", "title": "SSL Protocol", @@ -127,9 +122,7 @@ def get_schema(self, get_stats=False): def run_query(self, query, user): connection = None cert_path = self._generate_cert_file() - if self.configuration.get("username", "") and self.configuration.get( - "password", "" - ): + if self.configuration.get("username", "") and self.configuration.get("password", ""): auth_provider = PlainTextAuthProvider( username="{}".format(self.configuration.get("username", "")), password="{}".format(self.configuration.get("password", "")), @@ -169,7 +162,7 @@ def run_query(self, query, user): def _generate_cert_file(self): cert_encoded_bytes = self.configuration.get("sslCertificateFile", None) if cert_encoded_bytes: - with NamedTemporaryFile(mode='w', delete=False) as cert_file: + with NamedTemporaryFile(mode="w", delete=False) as cert_file: cert_bytes = b64decode(cert_encoded_bytes) cert_file.write(cert_bytes.decode("utf-8")) return cert_file.name @@ -182,10 +175,7 @@ def _cleanup_cert_file(self, cert_path): def _get_ssl_options(self, cert_path): ssl_options = None if self.configuration.get("useSsl", False): - ssl_options = generate_ssl_options_dict( - protocol=self.configuration["sslProtocol"], - cert_path=cert_path - ) + ssl_options = generate_ssl_options_dict(protocol=self.configuration["sslProtocol"], cert_path=cert_path) return ssl_options diff --git a/redash/query_runner/clickhouse.py b/redash/query_runner/clickhouse.py index e373668d21..0d5afa25b0 100644 --- a/redash/query_runner/clickhouse.py +++ b/redash/query_runner/clickhouse.py @@ -5,8 +5,16 @@ import requests -from redash.query_runner import * -from redash.query_runner import split_sql_statements +from redash.query_runner import ( + TYPE_DATE, + TYPE_DATETIME, + TYPE_FLOAT, + TYPE_INTEGER, + TYPE_STRING, + BaseSQLQueryRunner, + register, + split_sql_statements, +) from redash.utils import json_dumps, json_loads logger = logging.getLogger(__name__) @@ -131,9 +139,7 @@ def _send_query(self, data, session_id=None, session_check=None): return r.json() except requests.RequestException as e: if e.response: - details = "({}, Status Code: {})".format( - e.__class__.__name__, e.response.status_code - ) + details = "({}, Status Code: {})".format(e.__class__.__name__, e.response.status_code) else: details = "({})".format(e.__class__.__name__) raise Exception("Connection error to: {} {}.".format(url, details)) @@ -174,13 +180,9 @@ def _clickhouse_query(self, query, session_id=None, session_check=None): if r["type"] in ("Int64", "UInt64", "Nullable(Int64)", "Nullable(UInt64)"): columns_int64.append(column_name) else: - columns_totals[column_name] = ( - "Total" if column_type == TYPE_STRING else None - ) + columns_totals[column_name] = "Total" if column_type == TYPE_STRING else None - columns.append( - {"name": column_name, "friendly_name": column_name, "type": column_type} - ) + columns.append({"name": column_name, "friendly_name": column_name, "type": column_type}) rows = response.get("data", []) for row in rows: @@ -215,14 +217,10 @@ def run_query(self, query, user): # for the first query session_id = "redash_{}".format(uuid4().hex) - results = self._clickhouse_query( - queries[0], session_id, session_check=False - ) + results = self._clickhouse_query(queries[0], session_id, session_check=False) for query in queries[1:]: - results = self._clickhouse_query( - query, session_id, session_check=True - ) + results = self._clickhouse_query(query, session_id, session_check=True) data = json_dumps(results) error = None diff --git a/redash/query_runner/cloudwatch.py b/redash/query_runner/cloudwatch.py index c4640a537d..dbaf4aa22d 100644 --- a/redash/query_runner/cloudwatch.py +++ b/redash/query_runner/cloudwatch.py @@ -1,15 +1,18 @@ -import yaml import datetime +import yaml + from redash.query_runner import BaseQueryRunner, register from redash.utils import json_dumps, parse_human_time try: import boto3 + enabled = True except ImportError: enabled = False + def parse_response(results): columns = [ {"name": "id", "type": "string"}, diff --git a/redash/query_runner/cloudwatch_insights.py b/redash/query_runner/cloudwatch_insights.py index 139d5b678a..817b5e8170 100644 --- a/redash/query_runner/cloudwatch_insights.py +++ b/redash/query_runner/cloudwatch_insights.py @@ -1,13 +1,15 @@ -import yaml import datetime import time +import yaml + from redash.query_runner import BaseQueryRunner, register from redash.utils import json_dumps, parse_human_time try: import boto3 - from botocore.exceptions import ParamValidationError + from botocore.exceptions import ParamValidationError # noqa: F401 + enabled = True except ImportError: enabled = False @@ -118,9 +120,7 @@ def get_schema(self, get_stats=False): log_groups.append( { "name": group_name, - "columns": [ - field["name"] for field in fields["logGroupFields"] - ], + "columns": [field["name"] for field in fields["logGroupFields"]], } ) @@ -139,11 +139,7 @@ def run_query(self, query, user): data = parse_response(result) break if result["status"] in ("Failed", "Timeout", "Unknown", "Cancelled"): - raise Exception( - "CloudWatch Insights Query Execution Status: {}".format( - result["status"] - ) - ) + raise Exception("CloudWatch Insights Query Execution Status: {}".format(result["status"])) elif elapsed > TIMEOUT: raise Exception("Request exceeded timeout.") else: diff --git a/redash/query_runner/corporate_memory.py b/redash/query_runner/corporate_memory.py index 7f43b22869..f5049ae816 100644 --- a/redash/query_runner/corporate_memory.py +++ b/redash/query_runner/corporate_memory.py @@ -4,17 +4,22 @@ seeAlso: https://eccenca.com/ """ -import logging import json +import logging from os import environ from redash.query_runner import BaseQueryRunner from redash.utils import json_dumps, json_loads + from . import register try: - from cmem.cmempy.queries import SparqlQuery, QueryCatalog, QUERY_STRING from cmem.cmempy.dp.proxy.graph import get_graphs_list + from cmem.cmempy.queries import ( # noqa: F401 + QUERY_STRING, + QueryCatalog, + SparqlQuery, + ) enabled = True except ImportError: @@ -151,9 +156,7 @@ def run_query(self, query, user): # type of None means, there is an error in the query # so execution is at least tried on endpoint if query_type not in ["SELECT", None]: - raise ValueError( - "Queries of type {} can not be processed by redash.".format(query_type) - ) + raise ValueError("Queries of type {} can not be processed by redash.".format(query_type)) self._setup_environment() try: diff --git a/redash/query_runner/couchbase.py b/redash/query_runner/couchbase.py index 6f264c5333..99f6ce7e1a 100644 --- a/redash/query_runner/couchbase.py +++ b/redash/query_runner/couchbase.py @@ -1,16 +1,21 @@ import datetime import logging -from dateutil.parser import parse - -from redash.query_runner import * -from redash.utils import JSONEncoder, json_dumps, json_loads, parse_human_time -import json +from redash.query_runner import ( + TYPE_BOOLEAN, + TYPE_DATETIME, + TYPE_FLOAT, + TYPE_INTEGER, + TYPE_STRING, + BaseQueryRunner, + register, +) +from redash.utils import json_dumps logger = logging.getLogger(__name__) try: + import httplib2 # noqa: F401 import requests - import httplib2 except ImportError as e: logger.error("Failed to import: " + str(e)) @@ -48,9 +53,7 @@ def parse_results(results): { "name": column_name, "friendly_name": column_name, - "type": TYPES_MAP.get( - type(row[key][inner_key]), TYPE_STRING - ), + "type": TYPES_MAP.get(type(row[key][inner_key]), TYPE_STRING), } ) @@ -104,7 +107,7 @@ def enabled(cls): return True def test_connection(self): - result = self.call_service(self.noop_query, "") + self.call_service(self.noop_query, "") def get_buckets(self, query, name_param): defaultColumns = ["meta().id"] @@ -117,7 +120,6 @@ def get_buckets(self, query, name_param): return list(schema.values()) def get_schema(self, get_stats=False): - try: # Try fetch from Analytics return self.get_buckets( diff --git a/redash/query_runner/csv.py b/redash/query_runner/csv.py index 22aa148d57..bde877c4d7 100644 --- a/redash/query_runner/csv.py +++ b/redash/query_runner/csv.py @@ -1,17 +1,21 @@ -import logging -import yaml import io +import logging -from redash.utils.requests_session import requests_or_advocate, UnacceptableAddressException +import yaml -from redash.query_runner import * +from redash.query_runner import BaseQueryRunner, NotSupported, register from redash.utils import json_dumps +from redash.utils.requests_session import ( + UnacceptableAddressException, + requests_or_advocate, +) logger = logging.getLogger(__name__) try: - import pandas as pd import numpy as np + import pandas as pd + enabled = True except ImportError: enabled = False @@ -31,8 +35,8 @@ def enabled(cls): @classmethod def configuration_schema(cls): return { - 'type': 'object', - 'properties': {}, + "type": "object", + "properties": {}, } def __init__(self, configuration): @@ -48,37 +52,49 @@ def run_query(self, query, user): args = {} try: args = yaml.safe_load(query) - path = args['url'] - args.pop('url', None) - ua = args['user-agent'] - args.pop('user-agent', None) - except: + path = args["url"] + args.pop("url", None) + ua = args["user-agent"] + args.pop("user-agent", None) + except Exception: pass try: response = requests_or_advocate.get(url=path, headers={"User-agent": ua}) - workbook = pd.read_csv(io.BytesIO(response.content),sep=",", **args) + workbook = pd.read_csv(io.BytesIO(response.content), sep=",", **args) df = workbook.copy() - data = {'columns': [], 'rows': []} + data = {"columns": [], "rows": []} conversions = [ - {'pandas_type': np.integer, 'redash_type': 'integer',}, - {'pandas_type': np.inexact, 'redash_type': 'float',}, - {'pandas_type': np.datetime64, 'redash_type': 'datetime', 'to_redash': lambda x: x.strftime('%Y-%m-%d %H:%M:%S')}, - {'pandas_type': np.bool_, 'redash_type': 'boolean'}, - {'pandas_type': np.object, 'redash_type': 'string'} + { + "pandas_type": np.integer, + "redash_type": "integer", + }, + { + "pandas_type": np.inexact, + "redash_type": "float", + }, + { + "pandas_type": np.datetime64, + "redash_type": "datetime", + "to_redash": lambda x: x.strftime("%Y-%m-%d %H:%M:%S"), + }, + {"pandas_type": np.bool_, "redash_type": "boolean"}, + {"pandas_type": np.object, "redash_type": "string"}, ] labels = [] for dtype, label in zip(df.dtypes, df.columns): for conversion in conversions: - if issubclass(dtype.type, conversion['pandas_type']): - data['columns'].append({'name': label, 'friendly_name': label, 'type': conversion['redash_type']}) + if issubclass(dtype.type, conversion["pandas_type"]): + data["columns"].append( + {"name": label, "friendly_name": label, "type": conversion["redash_type"]} + ) labels.append(label) - func = conversion.get('to_redash') + func = conversion.get("to_redash") if func: df[label] = df[label].apply(func) break - data['rows'] = df[labels].replace({np.nan: None}).to_dict(orient='records') + data["rows"] = df[labels].replace({np.nan: None}).to_dict(orient="records") json_data = json_dumps(data) error = None @@ -97,4 +113,5 @@ def run_query(self, query, user): def get_schema(self): raise NotSupported() + register(CSV) diff --git a/redash/query_runner/databend.py b/redash/query_runner/databend.py index e4639c5cbe..c2f7d111a7 100644 --- a/redash/query_runner/databend.py +++ b/redash/query_runner/databend.py @@ -1,13 +1,21 @@ try: - from databend_sqlalchemy import connector import re + from databend_sqlalchemy import connector + enabled = True except ImportError: enabled = False -from redash.query_runner import BaseQueryRunner, register -from redash.query_runner import TYPE_STRING, TYPE_INTEGER, TYPE_BOOLEAN, TYPE_FLOAT, TYPE_DATETIME, TYPE_DATE +from redash.query_runner import ( + TYPE_DATE, + TYPE_DATETIME, + TYPE_FLOAT, + TYPE_INTEGER, + TYPE_STRING, + BaseQueryRunner, + register, +) from redash.utils import json_dumps, json_loads @@ -72,12 +80,8 @@ def run_query(self, query, user): try: cursor.execute(query) - columns = self.fetch_columns( - [(i[0], self._define_column_type(i[1])) for i in cursor.description] - ) - rows = [ - dict(zip((column["name"] for column in columns), row)) for row in cursor - ] + columns = self.fetch_columns([(i[0], self._define_column_type(i[1])) for i in cursor.description]) + rows = [dict(zip((column["name"] for column in columns), row)) for row in cursor] data = {"columns": columns, "rows": rows} error = None diff --git a/redash/query_runner/databricks.py b/redash/query_runner/databricks.py index 0d436b1634..b29906debe 100644 --- a/redash/query_runner/databricks.py +++ b/redash/query_runner/databricks.py @@ -1,22 +1,22 @@ import datetime import logging import os -import sqlparse + +from redash import __version__, statsd_client from redash.query_runner import ( - NotSupported, - register, - BaseSQLQueryRunner, - TYPE_STRING, TYPE_BOOLEAN, TYPE_DATE, TYPE_DATETIME, - TYPE_INTEGER, TYPE_FLOAT, + TYPE_INTEGER, + TYPE_STRING, + BaseSQLQueryRunner, + NotSupported, + register, + split_sql_statements, ) from redash.settings import cast_int_or_default from redash.utils import json_dumps, json_loads -from redash.query_runner import split_sql_statements -from redash import __version__, settings, statsd_client try: import pyodbc @@ -38,6 +38,7 @@ logger = logging.getLogger(__name__) + def _build_odbc_connection_string(**kwargs): return ";".join([f"{k}={v}" for k, v in kwargs.items()]) @@ -104,24 +105,13 @@ def run_query(self, query, user): if cursor.description is not None: result_set = cursor.fetchmany(ROW_LIMIT) - columns = self.fetch_columns( - [ - (i[0], TYPES_MAP.get(i[1], TYPE_STRING)) - for i in cursor.description - ] - ) + columns = self.fetch_columns([(i[0], TYPES_MAP.get(i[1], TYPE_STRING)) for i in cursor.description]) - rows = [ - dict(zip((column["name"] for column in columns), row)) - for row in result_set - ] + rows = [dict(zip((column["name"] for column in columns), row)) for row in result_set] data = {"columns": columns, "rows": rows} - if ( - len(result_set) >= ROW_LIMIT - and cursor.fetchone() is not None - ): + if len(result_set) >= ROW_LIMIT and cursor.fetchone() is not None: logger.warning("Truncated result set.") statsd_client.incr("redash.query_runner.databricks.truncated") data["truncated"] = True diff --git a/redash/query_runner/db2.py b/redash/query_runner/db2.py index 9f7a7765a6..f05a9f84e0 100644 --- a/redash/query_runner/db2.py +++ b/redash/query_runner/db2.py @@ -1,12 +1,23 @@ import logging -from redash.query_runner import * +from redash.query_runner import ( + TYPE_DATE, + TYPE_DATETIME, + TYPE_FLOAT, + TYPE_INTEGER, + TYPE_STRING, + BaseSQLQueryRunner, + InterruptException, + JobTimeoutException, + register, +) from redash.utils import json_dumps, json_loads logger = logging.getLogger(__name__) try: import select + import ibm_db_dbi types_map = { @@ -55,7 +66,7 @@ def type(cls): @classmethod def enabled(cls): try: - import ibm_db + import ibm_db # noqa: F401 except ImportError: return False @@ -114,13 +125,8 @@ def run_query(self, query, user): cursor.execute(query) if cursor.description is not None: - columns = self.fetch_columns( - [(i[0], types_map.get(i[1], None)) for i in cursor.description] - ) - rows = [ - dict(zip((column["name"] for column in columns), row)) - for row in cursor - ] + columns = self.fetch_columns([(i[0], types_map.get(i[1], None)) for i in cursor.description]) + rows = [dict(zip((column["name"] for column in columns), row)) for row in cursor] data = {"columns": columns, "rows": rows} error = None @@ -128,7 +134,7 @@ def run_query(self, query, user): else: error = "Query completed but it returned no data." json_data = None - except (select.error, OSError) as e: + except (select.error, OSError): error = "Query interrupted. Please retry." json_data = None except ibm_db_dbi.DatabaseError as e: diff --git a/redash/query_runner/dgraph.py b/redash/query_runner/dgraph.py index f48f8d91f3..448f7e0a20 100644 --- a/redash/query_runner/dgraph.py +++ b/redash/query_runner/dgraph.py @@ -81,7 +81,6 @@ def run_dgraph_query_raw(self, query): client_stub.close() def run_query(self, query, user): - json_data = None error = None @@ -106,9 +105,7 @@ def run_query(self, query, user): header = list(set(header)) - columns = [ - {"name": c, "friendly_name": c, "type": "string"} for c in header - ] + columns = [{"name": c, "friendly_name": c, "type": "string"} for c in header] # finally, assemble both the columns and data data = {"columns": columns, "rows": processed_data} diff --git a/redash/query_runner/drill.py b/redash/query_runner/drill.py index 4d549eb662..b91e7f5c9d 100644 --- a/redash/query_runner/drill.py +++ b/redash/query_runner/drill.py @@ -1,17 +1,17 @@ -import os import logging +import os import re from dateutil import parser from redash.query_runner import ( - BaseHTTPQueryRunner, - register, + TYPE_BOOLEAN, TYPE_DATETIME, - TYPE_INTEGER, TYPE_FLOAT, - TYPE_BOOLEAN, + TYPE_INTEGER, + BaseHTTPQueryRunner, guess_type, + register, ) from redash.utils import json_dumps, json_loads @@ -51,9 +51,7 @@ def parse_response(data): types = {} for c in cols: - columns.append( - {"name": c, "type": guess_type(first_row[c]), "friendly_name": c} - ) + columns.append({"name": c, "type": guess_type(first_row[c]), "friendly_name": c}) for col in columns: types[col["name"]] = col["type"] @@ -96,9 +94,7 @@ def run_query(self, query, user): payload = {"queryType": "SQL", "query": query} - response, error = self.get_response( - drill_url, http_method="post", json=payload - ) + response, error = self.get_response(drill_url, http_method="post", json=payload) if error is not None: return None, error @@ -107,7 +103,6 @@ def run_query(self, query, user): return json_dumps(results), None def get_schema(self, get_stats=False): - query = """ SELECT DISTINCT TABLE_SCHEMA, diff --git a/redash/query_runner/druid.py b/redash/query_runner/druid.py index 8536492b6d..74c9861712 100644 --- a/redash/query_runner/druid.py +++ b/redash/query_runner/druid.py @@ -5,8 +5,13 @@ except ImportError: enabled = False -from redash.query_runner import BaseQueryRunner, register -from redash.query_runner import TYPE_STRING, TYPE_INTEGER, TYPE_BOOLEAN +from redash.query_runner import ( + TYPE_BOOLEAN, + TYPE_INTEGER, + TYPE_STRING, + BaseQueryRunner, + register, +) from redash.utils import json_dumps, json_loads TYPES_MAP = {1: TYPE_STRING, 2: TYPE_INTEGER, 3: TYPE_BOOLEAN} @@ -49,12 +54,8 @@ def run_query(self, query, user): try: cursor.execute(query) - columns = self.fetch_columns( - [(i[0], TYPES_MAP.get(i[1], None)) for i in cursor.description] - ) - rows = [ - dict(zip((column["name"] for column in columns), row)) for row in cursor - ] + columns = self.fetch_columns([(i[0], TYPES_MAP.get(i[1], None)) for i in cursor.description]) + rows = [dict(zip((column["name"] for column in columns), row)) for row in cursor] data = {"columns": columns, "rows": rows} error = None diff --git a/redash/query_runner/elasticsearch.py b/redash/query_runner/elasticsearch.py index 0806b75e16..c1f7699743 100644 --- a/redash/query_runner/elasticsearch.py +++ b/redash/query_runner/elasticsearch.py @@ -1,13 +1,21 @@ import logging -import sys -import urllib.request -import urllib.parse import urllib.error +import urllib.parse +import urllib.request import requests from requests.auth import HTTPBasicAuth -from redash.query_runner import * +from redash.query_runner import ( + TYPE_BOOLEAN, + TYPE_DATE, + TYPE_FLOAT, + TYPE_INTEGER, + TYPE_STRING, + BaseQueryRunner, + JobTimeoutException, + register, +) from redash.utils import json_dumps, json_loads try: @@ -44,7 +52,7 @@ class BaseElasticSearch(BaseQueryRunner): should_annotate_query = False DEBUG_ENABLED = False - deprecated=True + deprecated = True @classmethod def configuration_schema(cls): @@ -103,9 +111,7 @@ def _get_mappings(self, url): mappings = r.json() except requests.HTTPError as e: logger.exception(e) - error = "Failed to execute query. Return Code: {0} Reason: {1}".format( - r.status_code, r.text - ) + error = "Failed to execute query. Return Code: {0} Reason: {1}".format(r.status_code, r.text) mappings = None except requests.exceptions.RequestException as e: logger.exception(e) @@ -126,16 +132,12 @@ def _get_query_mappings(self, url): if "properties" not in index_mappings["mappings"][m]: continue for property_name in index_mappings["mappings"][m]["properties"]: - property_data = index_mappings["mappings"][m]["properties"][ - property_name - ] + property_data = index_mappings["mappings"][m]["properties"][property_name] if property_name not in mappings: property_type = property_data.get("type", None) if property_type: if property_type in ELASTICSEARCH_TYPES_MAPPING: - mappings[property_name] = ELASTICSEARCH_TYPES_MAPPING[ - property_type - ] + mappings[property_name] = ELASTICSEARCH_TYPES_MAPPING[property_type] else: mappings[property_name] = TYPE_STRING # raise Exception("Unknown property type: {0}".format(property_type)) @@ -144,8 +146,7 @@ def _get_query_mappings(self, url): def get_schema(self, *args, **kwargs): def parse_doc(doc, path=None): - """Recursively parse a doc type dictionary - """ + """Recursively parse a doc type dictionary""" path = path or [] result = [] for field, description in doc["properties"].items(): @@ -174,12 +175,8 @@ def parse_doc(doc, path=None): schema[name]["columns"] = sorted(set(columns)) return list(schema.values()) - def _parse_results( - self, mappings, result_fields, raw_result, result_columns, result_rows - ): - def add_column_if_needed( - mappings, column_name, friendly_name, result_columns, result_columns_index - ): + def _parse_results(self, mappings, result_fields, raw_result, result_columns, result_rows): # noqa: C901 + def add_column_if_needed(mappings, column_name, friendly_name, result_columns, result_columns_index): if friendly_name not in result_columns_index: result_columns.append( { @@ -201,14 +198,10 @@ def collect_value(mappings, row, key, value, type): return mappings[key] = type - add_column_if_needed( - mappings, key, key, result_columns, result_columns_index - ) + add_column_if_needed(mappings, key, key, result_columns, result_columns_index) row[key] = value - def collect_aggregations( - mappings, rows, parent_key, data, row, result_columns, result_columns_index - ): + def collect_aggregations(mappings, rows, parent_key, data, row, result_columns, result_columns_index): if isinstance(data, dict): for key, value in data.items(): val = collect_aggregations( @@ -269,9 +262,7 @@ def collect_aggregations( "string", ) else: - collect_value( - mappings, result_row, parent_key, value["key"], "string" - ) + collect_value(mappings, result_row, parent_key, value["key"], "string") return None @@ -291,9 +282,7 @@ def collect_aggregations( elif "aggregations" in raw_result: if result_fields: for field in result_fields: - add_column_if_needed( - mappings, field, field, result_columns, result_columns_index - ) + add_column_if_needed(mappings, field, field, result_columns, result_columns_index) for key, data in raw_result["aggregations"].items(): collect_aggregations( @@ -311,9 +300,7 @@ def collect_aggregations( elif "hits" in raw_result and "hits" in raw_result["hits"]: if result_fields: for field in result_fields: - add_column_if_needed( - mappings, field, field, result_columns, result_columns_index - ) + add_column_if_needed(mappings, field, field, result_columns, result_columns_index) for h in raw_result["hits"]["hits"]: row = {} @@ -323,36 +310,22 @@ def collect_aggregations( if result_fields and column not in result_fields_index: continue - add_column_if_needed( - mappings, column, column, result_columns, result_columns_index - ) + add_column_if_needed(mappings, column, column, result_columns, result_columns_index) value = h[column_name][column] - row[column] = ( - value[0] - if isinstance(value, list) and len(value) == 1 - else value - ) + row[column] = value[0] if isinstance(value, list) and len(value) == 1 else value result_rows.append(row) else: - raise Exception( - "Redash failed to parse the results it got from Elasticsearch." - ) + raise Exception("Redash failed to parse the results it got from Elasticsearch.") def test_connection(self): try: - r = requests.get( - "{0}/_cluster/health".format(self.server_url), auth=self.auth - ) + r = requests.get("{0}/_cluster/health".format(self.server_url), auth=self.auth) r.raise_for_status() except requests.HTTPError as e: logger.exception(e) - raise Exception( - "Failed to execute query. Return Code: {0} Reason: {1}".format( - r.status_code, r.text - ) - ) + raise Exception("Failed to execute query. Return Code: {0} Reason: {1}".format(r.status_code, r.text)) except requests.exceptions.RequestException as e: logger.exception(e) raise Exception("Connection refused") @@ -363,18 +336,14 @@ class Kibana(BaseElasticSearch): def enabled(cls): return True - def _execute_simple_query( - self, url, auth, _from, mappings, result_fields, result_columns, result_rows - ): + def _execute_simple_query(self, url, auth, _from, mappings, result_fields, result_columns, result_rows): url += "&from={0}".format(_from) r = requests.get(url, auth=self.auth) r.raise_for_status() raw_result = r.json() - self._parse_results( - mappings, result_fields, raw_result, result_columns, result_rows - ) + self._parse_results(mappings, result_fields, raw_result, result_columns, result_rows) total = raw_result["hits"]["total"] result_size = len(raw_result["hits"]["hits"]) @@ -421,7 +390,7 @@ def run_query(self, query, user): _from = 0 while True: query_size = size if limit >= (_from + size) else (limit - _from) - total = self._execute_simple_query( + self._execute_simple_query( url + "&size={0}".format(query_size), self.auth, _from, @@ -440,9 +409,8 @@ def run_query(self, query, user): json_data = json_dumps({"columns": result_columns, "rows": result_rows}) except requests.HTTPError as e: logger.exception(e) - error = "Failed to execute query. Return Code: {0} Reason: {1}".format( - r.status_code, r.text - ) + r = e.response + error = "Failed to execute query. Return Code: {0} Reason: {1}".format(r.status_code, r.text) json_data = None except requests.exceptions.RequestException as e: logger.exception(e) @@ -490,9 +458,7 @@ def run_query(self, query, user): result_columns = [] result_rows = [] - self._parse_results( - mappings, result_fields, r.json(), result_columns, result_rows - ) + self._parse_results(mappings, result_fields, r.json(), result_columns, result_rows) json_data = json_dumps({"columns": result_columns, "rows": result_rows}) except (KeyboardInterrupt, JobTimeoutException) as e: @@ -500,9 +466,7 @@ def run_query(self, query, user): raise except requests.HTTPError as e: logger.exception(e) - error = "Failed to execute query. Return Code: {0} Reason: {1}".format( - r.status_code, r.text - ) + error = "Failed to execute query. Return Code: {0} Reason: {1}".format(r.status_code, r.text) json_data = None except requests.exceptions.RequestException as e: logger.exception(e) diff --git a/redash/query_runner/elasticsearch2.py b/redash/query_runner/elasticsearch2.py index 08d5e8981c..f8f0015c22 100644 --- a/redash/query_runner/elasticsearch2.py +++ b/redash/query_runner/elasticsearch2.py @@ -1,10 +1,17 @@ import logging -from typing import Tuple, Optional - -from redash.query_runner import * +from typing import Optional, Tuple + +from redash.query_runner import ( + TYPE_BOOLEAN, + TYPE_DATE, + TYPE_FLOAT, + TYPE_INTEGER, + TYPE_STRING, + BaseHTTPQueryRunner, + register, +) from redash.utils import json_dumps, json_loads - logger = logging.getLogger(__name__) ELASTICSEARCH_TYPES_MAPPING = { @@ -28,7 +35,6 @@ class ElasticSearch2(BaseHTTPQueryRunner): - should_annotate_query = False @classmethod @@ -37,12 +43,12 @@ def name(cls): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) - self.syntax = 'json' + self.syntax = "json" - def get_response(self, url, auth=None, http_method='get', **kwargs): + def get_response(self, url, auth=None, http_method="get", **kwargs): url = "{}{}".format(self.configuration["url"], url) - headers = kwargs.pop('headers', {}) - headers['Accept'] = 'application/json' + headers = kwargs.pop("headers", {}) + headers["Accept"] = "application/json" return super().get_response(url, auth, http_method, headers=headers, **kwargs) def test_connection(self): @@ -52,11 +58,7 @@ def test_connection(self): def run_query(self, query, user): query, url, result_fields = self._build_query(query) - response, error = self.get_response( - url, - http_method='post', - json=query - ) + response, error = self.get_response(url, http_method="post", json=query) query_results = response.json() data = self._parse_results(result_fields, query_results) error = None @@ -65,8 +67,8 @@ def run_query(self, query, user): def _build_query(self, query: str) -> Tuple[dict, str, Optional[list]]: query = json_loads(query) - index_name = query.pop('index', '') - result_fields = query.pop('result_fields', None) + index_name = query.pop("index", "") + result_fields = query.pop("result_fields", None) url = "/{}/_search".format(index_name) return query, url, result_fields @@ -77,14 +79,14 @@ def _parse_mappings(cls, mappings_data: dict): def _parse_properties(prefix: str, properties: dict): for property_name, property_data in properties.items(): if property_name not in mappings: - property_type = property_data.get('type', None) - nested_properties = property_data.get('properties', None) + property_type = property_data.get("type", None) + nested_properties = property_data.get("properties", None) if property_type: - mappings[index_name][prefix + property_name] = ( - ELASTICSEARCH_TYPES_MAPPING.get(property_type, TYPE_STRING) + mappings[index_name][prefix + property_name] = ELASTICSEARCH_TYPES_MAPPING.get( + property_type, TYPE_STRING ) elif nested_properties: - new_prefix = prefix + property_name + '.' + new_prefix = prefix + property_name + "." _parse_properties(new_prefix, nested_properties) for index_name in mappings_data: @@ -92,27 +94,24 @@ def _parse_properties(prefix: str, properties: dict): index_mappings = mappings_data[index_name] try: for m in index_mappings.get("mappings", {}): - _parse_properties('', index_mappings['mappings'][m]['properties']) + _parse_properties("", index_mappings["mappings"][m]["properties"]) except KeyError: - _parse_properties('', index_mappings['mappings']['properties']) + _parse_properties("", index_mappings["mappings"]["properties"]) return mappings def get_mappings(self): - response, error = self.get_response('/_mappings') + response, error = self.get_response("/_mappings") return self._parse_mappings(response.json()) def get_schema(self, *args, **kwargs): schema = {} for name, columns in self.get_mappings().items(): - schema[name] = { - 'name': name, - 'columns': list(columns.keys()) - } + schema[name] = {"name": name, "columns": list(columns.keys())} return list(schema.values()) @classmethod - def _parse_results(cls, result_fields, raw_result): + def _parse_results(cls, result_fields, raw_result): # noqa: C901 result_columns = [] result_rows = [] result_columns_index = {c["name"]: c for c in result_columns} @@ -120,11 +119,13 @@ def _parse_results(cls, result_fields, raw_result): def add_column_if_needed(column_name, value=None): if column_name not in result_columns_index: - result_columns.append({ - 'name': column_name, - 'friendly_name': column_name, - 'type': TYPES_MAP.get(type(value), TYPE_STRING) - }) + result_columns.append( + { + "name": column_name, + "friendly_name": column_name, + "type": TYPES_MAP.get(type(value), TYPE_STRING), + } + ) result_columns_index[column_name] = result_columns[-1] def get_row(rows, row): @@ -143,23 +144,23 @@ def collect_value(row, key, value): def parse_bucket_to_row(data, row, agg_key): sub_agg_key = "" for key, item in data.items(): - if key == 'key_as_string': + if key == "key_as_string": continue - if key == 'key': - if 'key_as_string' in data: - collect_value(row, agg_key, data['key_as_string']) + if key == "key": + if "key_as_string" in data: + collect_value(row, agg_key, data["key_as_string"]) else: - collect_value(row, agg_key, data['key']) + collect_value(row, agg_key, data["key"]) continue if isinstance(item, (str, int, float)): - collect_value(row, agg_key + '.' + key, item) + collect_value(row, agg_key + "." + key, item) elif isinstance(item, dict): - if 'buckets' not in item: + if "buckets" not in item: for sub_key, sub_item in item.items(): collect_value( row, - agg_key + '.' + key + '.' + sub_key, + agg_key + "." + key + "." + sub_key, sub_item, ) else: @@ -179,18 +180,18 @@ def parse_buckets_list(rows, parent_key, data, row, depth): rows.append(row) else: depth += 1 - parse_buckets_list(rows, sub_agg_key, value[sub_agg_key]['buckets'], row, depth) + parse_buckets_list(rows, sub_agg_key, value[sub_agg_key]["buckets"], row, depth) def collect_aggregations(rows, parent_key, data, row, depth): row = get_row(rows, row) parse_bucket_to_row(data, row, parent_key) - if 'buckets' in data: - parse_buckets_list(rows, parent_key, data['buckets'], row, depth) + if "buckets" in data: + parse_buckets_list(rows, parent_key, data["buckets"], row, depth) return None - def get_flatten_results(dd, separator='.', prefix=''): + def get_flatten_results(dd, separator=".", prefix=""): if isinstance(dd, dict): return { prefix + separator + k if prefix else k: v @@ -206,17 +207,17 @@ def get_flatten_results(dd, separator='.', prefix=''): for r in result_fields: result_fields_index[r] = None - if 'error' in raw_result: - error = raw_result['error'] + if "error" in raw_result: + error = raw_result["error"] if len(error) > 10240: - error = error[:10240] + '... continues' + error = error[:10240] + "... continues" raise Exception(error) - elif 'aggregations' in raw_result: + elif "aggregations" in raw_result: for key, data in raw_result["aggregations"].items(): collect_aggregations(result_rows, key, data, None, 0) - elif 'hits' in raw_result and 'hits' in raw_result['hits']: + elif "hits" in raw_result and "hits" in raw_result["hits"]: for h in raw_result["hits"]["hits"]: row = {} @@ -235,23 +236,17 @@ def get_flatten_results(dd, separator='.', prefix=''): else: raise Exception("Redash failed to parse the results it got from Elasticsearch.") - return { - 'columns': result_columns, - 'rows': result_rows - } + return {"columns": result_columns, "rows": result_rows} class OpenDistroSQLElasticSearch(ElasticSearch2): - def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) - self.syntax = 'sql' + self.syntax = "sql" def _build_query(self, query: str) -> Tuple[dict, str, Optional[list]]: - sql_query = { - 'query': query - } - sql_query_url = '/_opendistro/_sql' + sql_query = {"query": query} + sql_query_url = "/_opendistro/_sql" return sql_query, sql_query_url, None @classmethod @@ -263,56 +258,52 @@ def type(cls): return "elasticsearch2_OpenDistroSQLElasticSearch" - class XPackSQLElasticSearch(ElasticSearch2): - def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) - self.syntax = 'sql' + self.syntax = "sql" def _build_query(self, query: str) -> Tuple[dict, str, Optional[list]]: - sql_query = { - 'query': query - } - sql_query_url = '/_xpack/sql' + sql_query = {"query": query} + sql_query_url = "/_xpack/sql" return sql_query, sql_query_url, None @classmethod def _parse_results(cls, result_fields, raw_result): - error = raw_result.get('error') + error = raw_result.get("error") if error: raise Exception(error) rv = { - 'columns': [ + "columns": [ { - 'name': c['name'], - 'friendly_name': c['name'], - 'type': ELASTICSEARCH_TYPES_MAPPING.get(c['type'], 'string') - } for c in raw_result['columns'] + "name": c["name"], + "friendly_name": c["name"], + "type": ELASTICSEARCH_TYPES_MAPPING.get(c["type"], "string"), + } + for c in raw_result["columns"] ], - 'rows': [] + "rows": [], } - query_results_rows = raw_result['rows'] + query_results_rows = raw_result["rows"] for query_results_row in query_results_rows: result_row = dict() - for column, column_value in zip(rv['columns'], query_results_row): - result_row[column['name']] = column_value - rv['rows'].append(result_row) + for column, column_value in zip(rv["columns"], query_results_row): + result_row[column["name"]] = column_value + rv["rows"].append(result_row) return rv @classmethod def name(cls): return cls.__name__ - + @classmethod def type(cls): return "elasticsearch2_XPackSQLElasticSearch" - register(ElasticSearch2) register(OpenDistroSQLElasticSearch) register(XPackSQLElasticSearch) diff --git a/redash/query_runner/exasol.py b/redash/query_runner/exasol.py index 5bdbae5fc5..b7fd53c2a2 100644 --- a/redash/query_runner/exasol.py +++ b/redash/query_runner/exasol.py @@ -1,6 +1,14 @@ import datetime -from redash.query_runner import * +from redash.query_runner import ( + TYPE_DATE, + TYPE_DATETIME, + TYPE_FLOAT, + TYPE_INTEGER, + TYPE_STRING, + BaseQueryRunner, + register, +) from redash.utils import json_dumps @@ -95,8 +103,7 @@ def run_query(self, query, user): try: statement = connection.execute(query) columns = [ - {"name": n, "friendly_name": n, "type": _type_mapper(t)} - for (n, t) in statement.columns().items() + {"name": n, "friendly_name": n, "type": _type_mapper(t)} for (n, t) in statement.columns().items() ] cnames = statement.column_names() @@ -126,7 +133,7 @@ def get_schema(self, get_stats=False): statement = connection.execute(query) result = {} - for (schema, table_name, column) in statement: + for schema, table_name, column in statement: table_name_with_schema = "%s.%s" % (schema, table_name) if table_name_with_schema not in result: diff --git a/redash/query_runner/excel.py b/redash/query_runner/excel.py index 792a821bcd..bcea1bca90 100644 --- a/redash/query_runner/excel.py +++ b/redash/query_runner/excel.py @@ -1,22 +1,27 @@ import logging -import yaml -from redash.utils.requests_session import requests_or_advocate, UnacceptableAddressException +import yaml -from redash.query_runner import * +from redash.query_runner import BaseQueryRunner, NotSupported, register from redash.utils import json_dumps +from redash.utils.requests_session import ( + UnacceptableAddressException, + requests_or_advocate, +) logger = logging.getLogger(__name__) try: - import pandas as pd - import xlrd - import openpyxl import numpy as np + import openpyxl # noqa: F401 + import pandas as pd + import xlrd # noqa: F401 + enabled = True except ImportError: enabled = False + class Excel(BaseQueryRunner): should_annotate_query = False @@ -27,8 +32,8 @@ def enabled(cls): @classmethod def configuration_schema(cls): return { - 'type': 'object', - 'properties': {}, + "type": "object", + "properties": {}, } def __init__(self, configuration): @@ -44,12 +49,12 @@ def run_query(self, query, user): args = {} try: args = yaml.safe_load(query) - path = args['url'] - args.pop('url', None) - ua = args['user-agent'] - args.pop('user-agent', None) + path = args["url"] + args.pop("url", None) + ua = args["user-agent"] + args.pop("user-agent", None) - except: + except Exception: pass try: @@ -57,25 +62,37 @@ def run_query(self, query, user): workbook = pd.read_excel(response.content, **args) df = workbook.copy() - data = {'columns': [], 'rows': []} + data = {"columns": [], "rows": []} conversions = [ - {'pandas_type': np.integer, 'redash_type': 'integer',}, - {'pandas_type': np.inexact, 'redash_type': 'float',}, - {'pandas_type': np.datetime64, 'redash_type': 'datetime', 'to_redash': lambda x: x.strftime('%Y-%m-%d %H:%M:%S')}, - {'pandas_type': np.bool_, 'redash_type': 'boolean'}, - {'pandas_type': np.object, 'redash_type': 'string'} + { + "pandas_type": np.integer, + "redash_type": "integer", + }, + { + "pandas_type": np.inexact, + "redash_type": "float", + }, + { + "pandas_type": np.datetime64, + "redash_type": "datetime", + "to_redash": lambda x: x.strftime("%Y-%m-%d %H:%M:%S"), + }, + {"pandas_type": np.bool_, "redash_type": "boolean"}, + {"pandas_type": np.object, "redash_type": "string"}, ] labels = [] for dtype, label in zip(df.dtypes, df.columns): for conversion in conversions: - if issubclass(dtype.type, conversion['pandas_type']): - data['columns'].append({'name': label, 'friendly_name': label, 'type': conversion['redash_type']}) + if issubclass(dtype.type, conversion["pandas_type"]): + data["columns"].append( + {"name": label, "friendly_name": label, "type": conversion["redash_type"]} + ) labels.append(label) - func = conversion.get('to_redash') + func = conversion.get("to_redash") if func: df[label] = df[label].apply(func) break - data['rows'] = df[labels].replace({np.nan: None}).to_dict(orient='records') + data["rows"] = df[labels].replace({np.nan: None}).to_dict(orient="records") json_data = json_dumps(data) error = None @@ -94,4 +111,5 @@ def run_query(self, query, user): def get_schema(self): raise NotSupported() + register(Excel) diff --git a/redash/query_runner/google_analytics.py b/redash/query_runner/google_analytics.py index 9956f5d5f3..bc7c5ebdfc 100644 --- a/redash/query_runner/google_analytics.py +++ b/redash/query_runner/google_analytics.py @@ -3,19 +3,27 @@ from datetime import datetime from urllib.parse import parse_qs, urlparse -from redash.query_runner import * +from redash.query_runner import ( + TYPE_DATE, + TYPE_DATETIME, + TYPE_FLOAT, + TYPE_INTEGER, + TYPE_STRING, + BaseSQLQueryRunner, + register, +) from redash.utils import json_dumps, json_loads logger = logging.getLogger(__name__) try: - from oauth2client.service_account import ServiceAccountCredentials + import httplib2 from apiclient.discovery import build from apiclient.errors import HttpError - import httplib2 + from oauth2client.service_account import ServiceAccountCredentials enabled = True -except ImportError as e: +except ImportError: enabled = False @@ -48,9 +56,7 @@ def parse_ga_response(response): d = {} for c, value in enumerate(r): column_name = response["columnHeaders"][c]["name"] - column_type = [col for col in columns if col["name"] == column_name][0][ - "type" - ] + column_type = [col for col in columns if col["name"] == column_name][0]["type"] # mcf results come a bit different than ga results: if isinstance(value, dict): @@ -59,9 +65,7 @@ def parse_ga_response(response): elif "conversionPathValue" in value: steps = [] for step in value["conversionPathValue"]: - steps.append( - "{}:{}".format(step["interactionType"], step["nodeValue"]) - ) + steps.append("{}:{}".format(step["interactionType"], step["nodeValue"])) value = ", ".join(steps) else: raise Exception("Results format not supported") @@ -74,9 +78,7 @@ def parse_ga_response(response): elif len(value) == 12: value = datetime.strptime(value, "%Y%m%d%H%M") else: - raise Exception( - "Unknown date/time format in results: '{}'".format(value) - ) + raise Exception("Unknown date/time format in results: '{}'".format(value)) d[column_name] = value rows.append(d) @@ -119,14 +121,7 @@ def _get_analytics_service(self): return build("analytics", "v3", http=creds.authorize(httplib2.Http())) def _get_tables(self, schema): - accounts = ( - self._get_analytics_service() - .management() - .accounts() - .list() - .execute() - .get("items") - ) + accounts = self._get_analytics_service().management().accounts().list().execute().get("items") if accounts is None: raise Exception("Failed getting accounts.") else: @@ -143,9 +138,7 @@ def _get_tables(self, schema): for property_ in properties: if "defaultProfileId" in property_ and "name" in property_: schema[account["name"]]["columns"].append( - "{0} (ga:{1})".format( - property_["name"], property_["defaultProfileId"] - ) + "{0} (ga:{1})".format(property_["name"], property_["defaultProfileId"]) ) return list(schema.values()) @@ -162,16 +155,14 @@ def run_query(self, query, user): logger.debug("Analytics is about to execute query: %s", query) try: params = json_loads(query) - except: - query_string = parse_qs(urlparse(query).query, keep_blank_values=True) - params = {k.replace('-', '_'): ",".join(v) for k,v in query_string.items()} + except Exception: + query_string = parse_qs(urlparse(query).query, keep_blank_values=True) + params = {k.replace("-", "_"): ",".join(v) for k, v in query_string.items()} if "mcf:" in params["metrics"] and "ga:" in params["metrics"]: raise Exception("Can't mix mcf: and ga: metrics.") - if "mcf:" in params.get("dimensions", "") and "ga:" in params.get( - "dimensions", "" - ): + if "mcf:" in params.get("dimensions", "") and "ga:" in params.get("dimensions", ""): raise Exception("Can't mix mcf: and ga: dimensions.") if "mcf:" in params["metrics"]: diff --git a/redash/query_runner/google_spreadsheets.py b/redash/query_runner/google_spreadsheets.py index c9f159c75b..03b59c9631 100644 --- a/redash/query_runner/google_spreadsheets.py +++ b/redash/query_runner/google_spreadsheets.py @@ -5,7 +5,16 @@ from requests import Session from xlsxwriter.utility import xl_col_to_name -from redash.query_runner import * +from redash.query_runner import ( + TYPE_BOOLEAN, + TYPE_DATETIME, + TYPE_FLOAT, + TYPE_INTEGER, + TYPE_STRING, + BaseQueryRunner, + guess_type, + register, +) from redash.utils import json_dumps, json_loads logger = logging.getLogger(__name__) @@ -39,9 +48,7 @@ def _get_columns_and_column_names(row): duplicate_counter += 1 column_names.append(column_name) - columns.append( - {"name": column_name, "friendly_name": column_name, "type": TYPE_STRING} - ) + columns.append({"name": column_name, "friendly_name": column_name, "type": TYPE_STRING}) return columns, column_names @@ -102,10 +109,7 @@ def parse_worksheet(worksheet): columns[j]["type"] = guess_type(value) column_types = [c["type"] for c in columns] - rows = [ - dict(zip(column_names, _value_eval_list(row, column_types))) - for row in worksheet[HEADER_INDEX + 1 :] - ] + rows = [dict(zip(column_names, _value_eval_list(row, column_types))) for row in worksheet[HEADER_INDEX + 1 :]] data = {"columns": columns, "rows": rows} return data @@ -210,9 +214,7 @@ def run_query(self, query, user): except gspread.SpreadsheetNotFound: return ( None, - "Spreadsheet ({}) not found. Make sure you used correct id.".format( - key - ), + "Spreadsheet ({}) not found. Make sure you used correct id.".format(key), ) except APIError as e: return None, parse_api_error(e) diff --git a/redash/query_runner/graphite.py b/redash/query_runner/graphite.py index 3bbf098598..f306b9d3c7 100644 --- a/redash/query_runner/graphite.py +++ b/redash/query_runner/graphite.py @@ -3,7 +3,13 @@ import requests -from redash.query_runner import * +from redash.query_runner import ( + TYPE_DATETIME, + TYPE_FLOAT, + TYPE_STRING, + BaseQueryRunner, + register, +) from redash.utils import json_dumps logger = logging.getLogger(__name__) @@ -69,11 +75,7 @@ def test_connection(self): verify=self.verify, ) if r.status_code != 200: - raise Exception( - "Got invalid response from Graphite (http status code: {0}).".format( - r.status_code - ) - ) + raise Exception("Got invalid response from Graphite (http status code: {0}).".format(r.status_code)) def run_query(self, query, user): url = "%s%s" % (self.base_url, "&".join(query.split("\n"))) diff --git a/redash/query_runner/hive_ds.py b/redash/query_runner/hive_ds.py index 1baab89560..d66f5fbb9f 100644 --- a/redash/query_runner/hive_ds.py +++ b/redash/query_runner/hive_ds.py @@ -1,8 +1,17 @@ -import logging -import sys import base64 +import logging -from redash.query_runner import * +from redash.query_runner import ( + TYPE_BOOLEAN, + TYPE_DATE, + TYPE_DATETIME, + TYPE_FLOAT, + TYPE_INTEGER, + TYPE_STRING, + BaseSQLQueryRunner, + JobTimeoutException, + register, +) from redash.utils import json_dumps logger = logging.getLogger(__name__) @@ -71,27 +80,17 @@ def _get_tables(self, schema): columns_query = "show columns in %s.%s" for schema_name in [ - a - for a in [ - str(a["database_name"]) for a in self._run_query_internal(schemas_query) - ] - if len(a) > 0 + a for a in [str(a["database_name"]) for a in self._run_query_internal(schemas_query)] if len(a) > 0 ]: for table_name in [ a - for a in [ - str(a["tab_name"]) - for a in self._run_query_internal(tables_query % schema_name) - ] + for a in [str(a["tab_name"]) for a in self._run_query_internal(tables_query % schema_name)] if len(a) > 0 ]: columns = [ a for a in [ - str(a["field"]) - for a in self._run_query_internal( - columns_query % (schema_name, table_name) - ) + str(a["field"]) for a in self._run_query_internal(columns_query % (schema_name, table_name)) ] if len(a) > 0 ] diff --git a/redash/query_runner/impala_ds.py b/redash/query_runner/impala_ds.py index 631fa5e0cb..3c8662cb99 100644 --- a/redash/query_runner/impala_ds.py +++ b/redash/query_runner/impala_ds.py @@ -1,6 +1,15 @@ import logging -from redash.query_runner import * +from redash.query_runner import ( + TYPE_BOOLEAN, + TYPE_DATETIME, + TYPE_FLOAT, + TYPE_INTEGER, + TYPE_STRING, + BaseSQLQueryRunner, + JobTimeoutException, + register, +) from redash.utils import json_dumps logger = logging.getLogger(__name__) @@ -10,7 +19,7 @@ from impala.error import DatabaseError, RPCError enabled = True -except ImportError as e: +except ImportError: enabled = False COLUMN_NAME = 0 @@ -71,18 +80,10 @@ def _get_tables(self, schema_dict): tables_query = "show tables in %s;" columns_query = "show column stats %s.%s;" - for schema_name in [ - str(a["name"]) for a in self._run_query_internal(schemas_query) - ]: - for table_name in [ - str(a["name"]) - for a in self._run_query_internal(tables_query % schema_name) - ]: + for schema_name in [str(a["name"]) for a in self._run_query_internal(schemas_query)]: + for table_name in [str(a["name"]) for a in self._run_query_internal(tables_query % schema_name)]: columns = [ - str(a["Column"]) - for a in self._run_query_internal( - columns_query % (schema_name, table_name) - ) + str(a["Column"]) for a in self._run_query_internal(columns_query % (schema_name, table_name)) ] if schema_name != "default": @@ -93,7 +94,6 @@ def _get_tables(self, schema_dict): return list(schema_dict.values()) def run_query(self, query, user): - connection = None try: connection = connect(**self.configuration.to_dict()) diff --git a/redash/query_runner/influx_db.py b/redash/query_runner/influx_db.py index 6ca3ecb23c..a08e6b7df4 100644 --- a/redash/query_runner/influx_db.py +++ b/redash/query_runner/influx_db.py @@ -1,6 +1,6 @@ import logging -from redash.query_runner import * +from redash.query_runner import BaseQueryRunner, register from redash.utils import json_dumps logger = logging.getLogger(__name__) @@ -42,9 +42,7 @@ def _transform_result(results): result_row[column] = value result_rows.append(result_row) - return json_dumps( - {"columns": [{"name": c} for c in result_columns], "rows": result_rows} - ) + return json_dumps({"columns": [{"name": c} for c in result_columns], "rows": result_rows}) class InfluxDB(BaseQueryRunner): diff --git a/redash/query_runner/jql.py b/redash/query_runner/jql.py index d2a4dcfd5d..519e4bec1f 100644 --- a/redash/query_runner/jql.py +++ b/redash/query_runner/jql.py @@ -1,7 +1,7 @@ import re from collections import OrderedDict -from redash.query_runner import * +from redash.query_runner import TYPE_STRING, BaseHTTPQueryRunner, register from redash.utils import json_dumps, json_loads @@ -32,7 +32,7 @@ def merge(self, set): self.rows = self.rows + set.rows -def parse_issue(issue, field_mapping): +def parse_issue(issue, field_mapping): # noqa: C901 result = OrderedDict() result["key"] = issue["key"] @@ -45,9 +45,7 @@ def parse_issue(issue, field_mapping): # if field mapping with dict member mappings defined get value of each member for member_name in member_names: if member_name in v: - result[ - field_mapping.get_dict_output_field_name(k, member_name) - ] = v[member_name] + result[field_mapping.get_dict_output_field_name(k, member_name)] = v[member_name] else: # these special mapping rules are kept for backwards compatibility @@ -72,9 +70,7 @@ def parse_issue(issue, field_mapping): if member_name in listItem: listValues.append(listItem[member_name]) if len(listValues) > 0: - result[ - field_mapping.get_dict_output_field_name(k, member_name) - ] = ",".join(listValues) + result[field_mapping.get_dict_output_field_name(k, member_name)] = ",".join(listValues) else: # otherwise support list values only for non-dict items @@ -114,7 +110,7 @@ def __init__(cls, query_field_mapping): member_name = None # check for member name contained in field name - member_parser = re.search("(\w+)\.(\w+)", k) + member_parser = re.search(r"(\w+)\.(\w+)", k) if member_parser: field_name = member_parser.group(1) member_name = member_parser.group(2) diff --git a/redash/query_runner/json_ds.py b/redash/query_runner/json_ds.py index ee8adc8716..de763dd68e 100644 --- a/redash/query_runner/json_ds.py +++ b/redash/query_runner/json_ds.py @@ -1,20 +1,19 @@ +import datetime import logging + import yaml -import datetime from funcy import compact, project -from redash.utils.requests_session import requests_or_advocate, UnacceptableAddressException - -from redash.utils import json_dumps from redash.query_runner import ( - BaseHTTPQueryRunner, - register, TYPE_BOOLEAN, TYPE_DATETIME, TYPE_FLOAT, TYPE_INTEGER, TYPE_STRING, + BaseHTTPQueryRunner, + register, ) +from redash.utils import json_dumps class QueryParseError(Exception): @@ -59,9 +58,7 @@ def _get_type(value): def add_column(columns, column_name, column_type): if _get_column_by_name(columns, column_name) is None: - columns.append( - {"name": column_name, "friendly_name": column_name, "type": column_type} - ) + columns.append({"name": column_name, "friendly_name": column_name, "type": column_type}) def _apply_path_search(response, path): @@ -157,14 +154,11 @@ def run_query(self, query, user): query = parse_query(query) if not isinstance(query, dict): - raise QueryParseError( - "Query should be a YAML object describing the URL to query." - ) + raise QueryParseError("Query should be a YAML object describing the URL to query.") if "url" not in query: raise QueryParseError("Query must include 'url' option.") - method = query.get("method", "get") request_options = project(query, ("params", "headers", "data", "auth", "json", "verify")) @@ -185,9 +179,7 @@ def run_query(self, query, user): if fields and not isinstance(fields, list): raise QueryParseError("'fields' needs to be a list.") - response, error = self.get_response( - query["url"], http_method=method, **request_options - ) + response, error = self.get_response(query["url"], http_method=method, **request_options) if error is not None: return None, error diff --git a/redash/query_runner/kylin.py b/redash/query_runner/kylin.py index cfc02c671f..caeead2e05 100644 --- a/redash/query_runner/kylin.py +++ b/redash/query_runner/kylin.py @@ -1,10 +1,20 @@ -import os import logging +import os + import requests from requests.auth import HTTPBasicAuth from redash import settings -from redash.query_runner import * +from redash.query_runner import ( + TYPE_BOOLEAN, + TYPE_DATE, + TYPE_DATETIME, + TYPE_FLOAT, + TYPE_INTEGER, + TYPE_STRING, + BaseQueryRunner, + register, +) from redash.utils import json_dumps logger = logging.getLogger(__name__) @@ -127,9 +137,7 @@ def get_columns(self, colmetas): ) def get_rows(self, columns, results): - return [ - dict(zip((column["name"] for column in columns), row)) for row in results - ] + return [dict(zip((column["name"] for column in columns), row)) for row in results] def get_table_schema(self, table): name = table["table_NAME"] diff --git a/redash/query_runner/memsql_ds.py b/redash/query_runner/memsql_ds.py index d1c235608d..fabe4b2ddc 100644 --- a/redash/query_runner/memsql_ds.py +++ b/redash/query_runner/memsql_ds.py @@ -1,7 +1,15 @@ import logging -import sys -from redash.query_runner import * +from redash.query_runner import ( + TYPE_BOOLEAN, + TYPE_DATETIME, + TYPE_FLOAT, + TYPE_INTEGER, + TYPE_STRING, + BaseSQLQueryRunner, + JobTimeoutException, + register, +) from redash.utils import json_dumps logger = logging.getLogger(__name__) @@ -71,27 +79,19 @@ def _get_tables(self, schema): columns_query = "show columns in %s" for schema_name in [ - a - for a in [ - str(a["Database"]) for a in self._run_query_internal(schemas_query) - ] - if len(a) > 0 + a for a in [str(a["Database"]) for a in self._run_query_internal(schemas_query)] if len(a) > 0 ]: for table_name in [ a for a in [ - str(a["Tables_in_%s" % schema_name]) - for a in self._run_query_internal(tables_query % schema_name) + str(a["Tables_in_%s" % schema_name]) for a in self._run_query_internal(tables_query % schema_name) ] if len(a) > 0 ]: table_name = ".".join((schema_name, table_name)) columns = [ a - for a in [ - str(a["Field"]) - for a in self._run_query_internal(columns_query % table_name) - ] + for a in [str(a["Field"]) for a in self._run_query_internal(columns_query % table_name)] if len(a) > 0 ] @@ -99,7 +99,6 @@ def _get_tables(self, schema): return list(schema.values()) def run_query(self, query, user): - cursor = None try: cursor = database.connect(**self.configuration.to_dict()) @@ -128,9 +127,7 @@ def run_query(self, query, user): if column_names: for column in column_names: - columns.append( - {"name": column, "friendly_name": column, "type": TYPE_STRING} - ) + columns.append({"name": column, "friendly_name": column, "type": TYPE_STRING}) data = {"columns": columns, "rows": rows} json_data = json_dumps(data) diff --git a/redash/query_runner/mongodb.py b/redash/query_runner/mongodb.py index f5d2a91cc2..83b0e5ff04 100644 --- a/redash/query_runner/mongodb.py +++ b/redash/query_runner/mongodb.py @@ -4,18 +4,27 @@ from dateutil.parser import parse -from redash.query_runner import * +from redash.query_runner import ( + TYPE_BOOLEAN, + TYPE_DATETIME, + TYPE_FLOAT, + TYPE_INTEGER, + TYPE_STRING, + BaseQueryRunner, + register, +) from redash.utils import JSONEncoder, json_dumps, json_loads, parse_human_time logger = logging.getLogger(__name__) try: import pymongo - from bson.objectid import ObjectId - from bson.timestamp import Timestamp from bson.decimal128 import Decimal128 + from bson.json_util import JSONOptions + from bson.json_util import object_hook as bson_object_hook + from bson.objectid import ObjectId from bson.son import SON - from bson.json_util import object_hook as bson_object_hook, JSONOptions + from bson.timestamp import Timestamp enabled = True @@ -44,7 +53,7 @@ def default(self, o): return super(MongoDBJSONEncoder, self).default(o) -date_regex = re.compile('ISODate\("(.*)"\)', re.IGNORECASE) +date_regex = re.compile(r'ISODate\("(.*)"\)', re.IGNORECASE) def parse_oids(oids): @@ -100,9 +109,7 @@ def parse_results(results): { "name": column_name, "friendly_name": column_name, - "type": TYPES_MAP.get( - type(row[key][inner_key]), TYPE_STRING - ), + "type": TYPES_MAP.get(type(row[key][inner_key]), TYPE_STRING), } ) @@ -166,10 +173,7 @@ def __init__(self, configuration): self.db_name = self.configuration["dbName"] self.is_replica_set = ( - True - if "replicaSetName" in self.configuration - and self.configuration["replicaSetName"] - else False + True if "replicaSetName" in self.configuration and self.configuration["replicaSetName"] else False ) def _get_db(self): @@ -186,9 +190,7 @@ def _get_db(self): if "password" in self.configuration: kwargs["password"] = self.configuration["password"] - db_connection = pymongo.MongoClient( - self.configuration["connectionString"], **kwargs - ) + db_connection = pymongo.MongoClient(self.configuration["connectionString"], **kwargs) return db_connection[self.db_name] @@ -257,12 +259,10 @@ def get_schema(self, get_stats=False): return list(schema.values()) - def run_query(self, query, user): + def run_query(self, query, user): # noqa: C901 db = self._get_db() - logger.debug( - "mongodb connection string: %s", self.configuration["connectionString"] - ) + logger.debug("mongodb connection string: %s", self.configuration["connectionString"]) logger.debug("mongodb got query: %s", query) try: @@ -332,9 +332,7 @@ def run_query(self, query, user): cursor = r if "count" in query_data: - columns.append( - {"name": "count", "friendly_name": "count", "type": TYPE_INTEGER} - ) + columns.append({"name": "count", "friendly_name": "count", "type": TYPE_INTEGER}) rows.append({"count": cursor}) else: diff --git a/redash/query_runner/mssql.py b/redash/query_runner/mssql.py index ced7170498..09504fac25 100644 --- a/redash/query_runner/mssql.py +++ b/redash/query_runner/mssql.py @@ -1,8 +1,13 @@ import logging -import sys -import uuid -from redash.query_runner import * +from redash.query_runner import ( + TYPE_DATETIME, + TYPE_FLOAT, + TYPE_STRING, + BaseSQLQueryRunner, + JobTimeoutException, + register, +) from redash.utils import json_dumps, json_loads logger = logging.getLogger(__name__) @@ -131,13 +136,8 @@ def run_query(self, query, user): data = cursor.fetchall() if cursor.description is not None: - columns = self.fetch_columns( - [(i[0], types_map.get(i[1], None)) for i in cursor.description] - ) - rows = [ - dict(zip((column["name"] for column in columns), row)) - for row in data - ] + columns = self.fetch_columns([(i[0], types_map.get(i[1], None)) for i in cursor.description]) + rows = [dict(zip((column["name"] for column in columns), row)) for row in data] data = {"columns": columns, "rows": rows} json_data = json_dumps(data) diff --git a/redash/query_runner/mssql_odbc.py b/redash/query_runner/mssql_odbc.py index 866b4abc66..1d088a1b1d 100644 --- a/redash/query_runner/mssql_odbc.py +++ b/redash/query_runner/mssql_odbc.py @@ -1,8 +1,10 @@ import logging -import sys -import uuid -from redash.query_runner import * +from redash.query_runner import ( + BaseSQLQueryRunner, + JobTimeoutException, + register, +) from redash.query_runner.mssql import types_map from redash.utils import json_dumps, json_loads @@ -35,7 +37,11 @@ def configuration_schema(cls): "default": "UTF-8", "title": "Character Set", }, - "use_ssl": {"type": "boolean", "title": "Use SSL", "default": False,}, + "use_ssl": { + "type": "boolean", + "title": "Use SSL", + "default": False, + }, "verify_ssl": { "type": "boolean", "title": "Verify SSL certificate", @@ -112,12 +118,9 @@ def run_query(self, query, user): password = self.configuration.get("password", "") db = self.configuration["db"] port = self.configuration.get("port", 1433) - charset = self.configuration.get("charset", "UTF-8") connection_string_fmt = "DRIVER={{ODBC Driver 17 for SQL Server}};SERVER={},{};DATABASE={};UID={};PWD={}" - connection_string = connection_string_fmt.format( - server, port, db, user, password - ) + connection_string = connection_string_fmt.format(server, port, db, user, password) if self.configuration.get("use_ssl", False): connection_string += ";Encrypt=YES" @@ -132,13 +135,8 @@ def run_query(self, query, user): data = cursor.fetchall() if cursor.description is not None: - columns = self.fetch_columns( - [(i[0], types_map.get(i[1], None)) for i in cursor.description] - ) - rows = [ - dict(zip((column["name"] for column in columns), row)) - for row in data - ] + columns = self.fetch_columns([(i[0], types_map.get(i[1], None)) for i in cursor.description]) + rows = [dict(zip((column["name"] for column in columns), row)) for row in data] data = {"columns": columns, "rows": rows} json_data = json_dumps(data) diff --git a/redash/query_runner/mysql.py b/redash/query_runner/mysql.py index 83fc9b9a14..144849895e 100644 --- a/redash/query_runner/mysql.py +++ b/redash/query_runner/mysql.py @@ -3,11 +3,11 @@ import threading from redash.query_runner import ( + TYPE_DATE, + TYPE_DATETIME, TYPE_FLOAT, TYPE_INTEGER, - TYPE_DATETIME, TYPE_STRING, - TYPE_DATE, BaseSQLQueryRunner, InterruptException, JobTimeoutException, @@ -54,9 +54,7 @@ class Mysql(BaseSQLQueryRunner): @classmethod def configuration_schema(cls): - show_ssl_settings = parse_boolean( - os.environ.get("MYSQL_SHOW_SSL_SETTINGS", "true") - ) + show_ssl_settings = parse_boolean(os.environ.get("MYSQL_SHOW_SSL_SETTINGS", "true")) schema = { "type": "object", @@ -154,7 +152,6 @@ def _get_tables(self, schema): return list(schema.values()) - def run_query(self, query, user): ev = threading.Event() thread_id = "" @@ -164,9 +161,7 @@ def run_query(self, query, user): try: connection = self._connection() thread_id = connection.thread_id() - t = threading.Thread( - target=self._run_query, args=(query, user, connection, r, ev) - ) + t = threading.Thread(target=self._run_query, args=(query, user, connection, r, ev)) t.start() while not ev.wait(1): pass @@ -193,13 +188,8 @@ def _run_query(self, query, user, connection, r, ev): # TODO - very similar to pg.py if desc is not None: - columns = self.fetch_columns( - [(i[0], types_map.get(i[1], None)) for i in desc] - ) - rows = [ - dict(zip((column["name"] for column in columns), row)) - for row in data - ] + columns = self.fetch_columns([(i[0], types_map.get(i[1], None)) for i in desc]) + rows = [dict(zip((column["name"] for column in columns), row)) for row in data] data = {"columns": columns, "rows": rows} r.json_data = json_dumps(data) @@ -284,9 +274,7 @@ def configuration_schema(cls): def _get_ssl_parameters(self): if self.configuration.get("use_ssl"): - ca_path = os.path.join( - os.path.dirname(__file__), "./files/rds-combined-ca-bundle.pem" - ) + ca_path = os.path.join(os.path.dirname(__file__), "./files/rds-combined-ca-bundle.pem") return {"ca": ca_path} return None diff --git a/redash/query_runner/nz.py b/redash/query_runner/nz.py index 0486b5b497..6939cc23e8 100644 --- a/redash/query_runner/nz.py +++ b/redash/query_runner/nz.py @@ -1,40 +1,48 @@ -from dataclasses import dataclass +import json import logging import traceback -import json -from redash.query_runner import * -from redash.utils import json_dumps, json_loads +from redash.query_runner import ( + TYPE_BOOLEAN, + TYPE_DATE, + TYPE_DATETIME, + TYPE_FLOAT, + TYPE_INTEGER, + TYPE_STRING, + BaseSQLQueryRunner, + register, +) logger = logging.getLogger(__name__) try: import nzpy import nzpy.core + _enabled = True _nztypes = { - nzpy.core.NzTypeInt1 : TYPE_INTEGER, - nzpy.core.NzTypeInt2 : TYPE_INTEGER, - nzpy.core.NzTypeInt : TYPE_INTEGER, - nzpy.core.NzTypeInt8 : TYPE_INTEGER, - nzpy.core.NzTypeBool : TYPE_BOOLEAN, - nzpy.core.NzTypeDate : TYPE_DATE, - nzpy.core.NzTypeTimestamp : TYPE_DATETIME, - nzpy.core.NzTypeDouble : TYPE_FLOAT, - nzpy.core.NzTypeFloat : TYPE_FLOAT, - nzpy.core.NzTypeChar : TYPE_STRING, - nzpy.core.NzTypeNChar : TYPE_STRING, - nzpy.core.NzTypeNVarChar : TYPE_STRING, - nzpy.core.NzTypeVarChar : TYPE_STRING, - nzpy.core.NzTypeVarFixedChar : TYPE_STRING, - nzpy.core.NzTypeNumeric : TYPE_FLOAT, + nzpy.core.NzTypeInt1: TYPE_INTEGER, + nzpy.core.NzTypeInt2: TYPE_INTEGER, + nzpy.core.NzTypeInt: TYPE_INTEGER, + nzpy.core.NzTypeInt8: TYPE_INTEGER, + nzpy.core.NzTypeBool: TYPE_BOOLEAN, + nzpy.core.NzTypeDate: TYPE_DATE, + nzpy.core.NzTypeTimestamp: TYPE_DATETIME, + nzpy.core.NzTypeDouble: TYPE_FLOAT, + nzpy.core.NzTypeFloat: TYPE_FLOAT, + nzpy.core.NzTypeChar: TYPE_STRING, + nzpy.core.NzTypeNChar: TYPE_STRING, + nzpy.core.NzTypeNVarChar: TYPE_STRING, + nzpy.core.NzTypeVarChar: TYPE_STRING, + nzpy.core.NzTypeVarFixedChar: TYPE_STRING, + nzpy.core.NzTypeNumeric: TYPE_FLOAT, } - + _cat_types = { 16: TYPE_BOOLEAN, # boolean - 17: TYPE_STRING, # bytea + 17: TYPE_STRING, # bytea 19: TYPE_STRING, # name type - 20: TYPE_INTEGER, # int8 + 20: TYPE_INTEGER, # int8 21: TYPE_INTEGER, # int2 23: TYPE_INTEGER, # int4 25: TYPE_STRING, # TEXT type @@ -52,13 +60,14 @@ 1184: TYPE_DATETIME, 1700: TYPE_FLOAT, # NUMERIC 2275: TYPE_STRING, # cstring - 2950: TYPE_STRING # uuid + 2950: TYPE_STRING, # uuid } -except: +except ImportError: _enabled = False _nztypes = {} _cat_types = {} + class Netezza(BaseSQLQueryRunner): noop_query = "SELECT 1" @@ -71,7 +80,7 @@ def configuration_schema(cls): "password": {"type": "string"}, "host": {"type": "string", "default": "127.0.0.1"}, "port": {"type": "number", "default": 5480}, - "database": {"type": "string", "title": "Database Name", "default":"system"}, + "database": {"type": "string", "title": "Database Name", "default": "system"}, }, "order": ["host", "port", "user", "password", "database"], "required": ["user", "password", "database"], @@ -90,26 +99,26 @@ def __init__(self, configuration): def connection(self): if self._conn is None: self._conn = nzpy.connect( - host = self.configuration.get("host"), - user = self.configuration.get("user"), - password = self.configuration.get("password"), - port = self.configuration.get("port"), - database = self.configuration.get("database") + host=self.configuration.get("host"), + user=self.configuration.get("user"), + password=self.configuration.get("password"), + port=self.configuration.get("port"), + database=self.configuration.get("database"), ) return self._conn def get_schema(self, get_stats=False): - qry = ''' + qry = """ select table_schema || '.' || table_name as table_name, column_name, data_type - from + from columns where - table_schema not in (^information_schema^, ^definition_schema^) and + table_schema not in (^information_schema^, ^definition_schema^) and table_catalog = current_catalog; - ''' + """ schema = {} with self.connection.cursor() as cursor: cursor.execute(qry) @@ -131,14 +140,13 @@ def type_map(self, typid, func): return _cat_types.get(typid) # check for conflicts if typid == nzpy.core.NzTypeVarChar: - return TYPE_BOOLEAN if 'bool' in func.__name__ else typ + return TYPE_BOOLEAN if "bool" in func.__name__ else typ if typid == nzpy.core.NzTypeInt2: - return TYPE_STRING if 'text' in func.__name__ else typ + return TYPE_STRING if "text" in func.__name__ else typ - if typid in (nzpy.core.NzTypeVarFixedChar, nzpy.core.NzTypeVarBinary, - nzpy.core.NzTypeNVarChar): - return TYPE_INTEGER if 'int' in func.__name__ else typ + if typid in (nzpy.core.NzTypeVarFixedChar, nzpy.core.NzTypeVarBinary, nzpy.core.NzTypeNVarChar): + return TYPE_INTEGER if "int" in func.__name__ else typ return typ def run_query(self, query, user): @@ -147,19 +155,20 @@ def run_query(self, query, user): with self.connection.cursor() as cursor: cursor.execute(query) if cursor.description is None: - columns = {"columns":[], "rows":[]} + columns = {"columns": [], "rows": []} else: columns = self.fetch_columns( - [(val[0], self.type_map(val[1], cursor.ps['row_desc'][i]['func'])) - for i, val in enumerate(cursor.description)]) - rows = [ - dict(zip((column["name"] for column in columns), row)) - for row in cursor - ] + [ + (val[0], self.type_map(val[1], cursor.ps["row_desc"][i]["func"])) + for i, val in enumerate(cursor.description) + ] + ) + rows = [dict(zip((column["name"] for column in columns), row)) for row in cursor] json_data = json.dumps({"columns": columns, "rows": rows}) - except: + except Exception: error = traceback.format_exc() return json_data, error + register(Netezza) diff --git a/redash/query_runner/oracle.py b/redash/query_runner/oracle.py index ab5ecc63b0..4e1e7ae887 100644 --- a/redash/query_runner/oracle.py +++ b/redash/query_runner/oracle.py @@ -1,8 +1,16 @@ -import os import logging +import os +from redash.query_runner import ( + TYPE_DATETIME, + TYPE_FLOAT, + TYPE_INTEGER, + TYPE_STRING, + BaseSQLQueryRunner, + JobTimeoutException, + register, +) from redash.utils import json_dumps, json_loads -from redash.query_runner import * try: import cx_Oracle @@ -34,7 +42,7 @@ class Oracle(BaseSQLQueryRunner): should_annotate_query = False noop_query = "SELECT 1 FROM dual" limit_query = " FETCH NEXT 1000 ROWS ONLY" - limit_keywords = [ "ROW", "ROWS", "ONLY", "TIES"] + limit_keywords = ["ROW", "ROWS", "ONLY", "TIES"] @classmethod def get_col_type(cls, col_type, scale): @@ -90,7 +98,7 @@ def _get_tables(self, schema): results = json_loads(results) for row in results["rows"]: - if row["OWNER"] != None: + if row["OWNER"] is not None: table_name = "{}.{}".format(row["OWNER"], row["TABLE_NAME"]) else: table_name = row["TABLE_NAME"] @@ -106,7 +114,7 @@ def _get_tables(self, schema): def _convert_number(cls, value): try: return int(value) - except: + except BaseException: return value @classmethod @@ -149,12 +157,7 @@ def run_query(self, query, user): cursor.execute(query) rows_count = cursor.rowcount if cursor.description is not None: - columns = self.fetch_columns( - [ - (i[0], Oracle.get_col_type(i[1], i[5])) - for i in cursor.description - ] - ) + columns = self.fetch_columns([(i[0], Oracle.get_col_type(i[1], i[5])) for i in cursor.description]) rows = [dict(zip((c["name"] for c in columns), row)) for row in cursor] data = {"columns": columns, "rows": rows} error = None diff --git a/redash/query_runner/pg.py b/redash/query_runner/pg.py index fa8e52ca70..82f6a8bef3 100644 --- a/redash/query_runner/pg.py +++ b/redash/query_runner/pg.py @@ -1,7 +1,6 @@ -import os import logging +import os import select -from contextlib import contextmanager from base64 import b64decode from tempfile import NamedTemporaryFile from uuid import uuid4 @@ -9,7 +8,18 @@ import psycopg2 from psycopg2.extras import Range -from redash.query_runner import * +from redash.query_runner import ( + TYPE_BOOLEAN, + TYPE_DATE, + TYPE_DATETIME, + TYPE_FLOAT, + TYPE_INTEGER, + TYPE_STRING, + BaseSQLQueryRunner, + InterruptException, + JobTimeoutException, + register, +) from redash.utils import JSONEncoder, json_dumps, json_loads logger = logging.getLogger(__name__) @@ -261,13 +271,8 @@ def run_query(self, query, user): _wait(connection) if cursor.description is not None: - columns = self.fetch_columns( - [(i[0], types_map.get(i[1], None)) for i in cursor.description] - ) - rows = [ - dict(zip((column["name"] for column in columns), row)) - for row in cursor - ] + columns = self.fetch_columns([(i[0], types_map.get(i[1], None)) for i in cursor.description]) + rows = [dict(zip((column["name"] for column in columns), row)) for row in cursor] data = {"columns": columns, "rows": rows} error = None @@ -275,7 +280,7 @@ def run_query(self, query, user): else: error = "Query completed but it returned no data." json_data = None - except (select.error, OSError) as e: + except (select.error, OSError): error = "Query interrupted. Please retry." json_data = None except psycopg2.DatabaseError as e: @@ -303,9 +308,7 @@ def name(cls): def _get_connection(self): self.ssl_config = {} - sslrootcert_path = os.path.join( - os.path.dirname(__file__), "./files/redshift-ca-bundle.crt" - ) + sslrootcert_path = os.path.join(os.path.dirname(__file__), "./files/redshift-ca-bundle.crt") connection = psycopg2.connect( user=self.configuration.get("user"), @@ -419,15 +422,11 @@ def enabled(cls): def _login_method_selection(self): if self.configuration.get("rolename"): - if not self.configuration.get( - "aws_access_key_id" - ) or not self.configuration.get("aws_secret_access_key"): + if not self.configuration.get("aws_access_key_id") or not self.configuration.get("aws_secret_access_key"): return "ASSUME_ROLE_NO_KEYS" else: return "ASSUME_ROLE_KEYS" - elif self.configuration.get("aws_access_key_id") and self.configuration.get( - "aws_secret_access_key" - ): + elif self.configuration.get("aws_access_key_id") and self.configuration.get("aws_secret_access_key"): return "KEYS" elif not self.configuration.get("password"): return "ROLE" @@ -480,10 +479,7 @@ def configuration_schema(cls): } def _get_connection(self): - - sslrootcert_path = os.path.join( - os.path.dirname(__file__), "./files/redshift-ca-bundle.crt" - ) + sslrootcert_path = os.path.join(os.path.dirname(__file__), "./files/redshift-ca-bundle.crt") login_method = self._login_method_selection() @@ -495,23 +491,17 @@ def _get_connection(self): aws_secret_access_key=self.configuration.get("aws_secret_access_key"), ) elif login_method == "ROLE": - client = boto3.client( - "redshift", region_name=self.configuration.get("aws_region") - ) + client = boto3.client("redshift", region_name=self.configuration.get("aws_region")) else: if login_method == "ASSUME_ROLE_KEYS": assume_client = client = boto3.client( "sts", region_name=self.configuration.get("aws_region"), aws_access_key_id=self.configuration.get("aws_access_key_id"), - aws_secret_access_key=self.configuration.get( - "aws_secret_access_key" - ), + aws_secret_access_key=self.configuration.get("aws_secret_access_key"), ) else: - assume_client = client = boto3.client( - "sts", region_name=self.configuration.get("aws_region") - ) + assume_client = client = boto3.client("sts", region_name=self.configuration.get("aws_region")) role_session = f"redash_{uuid4().hex}" session_keys = assume_client.assume_role( RoleArn=self.configuration.get("rolename"), RoleSessionName=role_session diff --git a/redash/query_runner/phoenix.py b/redash/query_runner/phoenix.py index 61609fce4c..eb1e8df02a 100644 --- a/redash/query_runner/phoenix.py +++ b/redash/query_runner/phoenix.py @@ -1,13 +1,21 @@ -from redash.query_runner import * -from redash.utils import json_dumps, json_loads - import logging +from redash.query_runner import ( + TYPE_BOOLEAN, + TYPE_DATETIME, + TYPE_FLOAT, + TYPE_INTEGER, + TYPE_STRING, + BaseQueryRunner, + register, +) +from redash.utils import json_dumps, json_loads + logger = logging.getLogger(__name__) try: import phoenixdb - from phoenixdb.errors import * + from phoenixdb.errors import Error enabled = True @@ -87,31 +95,22 @@ def get_schema(self, get_stats=False): return list(schema.values()) def run_query(self, query, user): - connection = phoenixdb.connect( - url=self.configuration.get("url", ""), autocommit=True - ) + connection = phoenixdb.connect(url=self.configuration.get("url", ""), autocommit=True) cursor = connection.cursor() try: cursor.execute(query) - column_tuples = [ - (i[0], TYPES_MAPPING.get(i[1], None)) for i in cursor.description - ] + column_tuples = [(i[0], TYPES_MAPPING.get(i[1], None)) for i in cursor.description] columns = self.fetch_columns(column_tuples) - rows = [ - dict(zip(([column["name"] for column in columns]), r)) - for i, r in enumerate(cursor.fetchall()) - ] + rows = [dict(zip(([column["name"] for column in columns]), r)) for i, r in enumerate(cursor.fetchall())] data = {"columns": columns, "rows": rows} json_data = json_dumps(data) error = None cursor.close() except Error as e: json_data = None - error = "code: {}, sql state:{}, message: {}".format( - e.code, e.sqlstate, str(e) - ) + error = "code: {}, sql state:{}, message: {}".format(e.code, e.sqlstate, str(e)) finally: if connection: connection.close() diff --git a/redash/query_runner/pinot.py b/redash/query_runner/pinot.py index 57ffe66cbf..96c69099fe 100644 --- a/redash/query_runner/pinot.py +++ b/redash/query_runner/pinot.py @@ -1,16 +1,25 @@ try: import pinotdb + enabled = True except ImportError: enabled = False -from redash.query_runner import BaseQueryRunner, register -from redash.query_runner import TYPE_DATETIME, TYPE_FLOAT, TYPE_STRING, TYPE_INTEGER, TYPE_BOOLEAN -from redash.utils import json_dumps +import logging import requests from requests.auth import HTTPBasicAuth -import logging + +from redash.query_runner import ( + TYPE_BOOLEAN, + TYPE_DATETIME, + TYPE_FLOAT, + TYPE_INTEGER, + TYPE_STRING, + BaseQueryRunner, + register, +) +from redash.utils import json_dumps logger = logging.getLogger(__name__) @@ -56,8 +65,8 @@ def enabled(cls): def __init__(self, configuration): super(Pinot, self).__init__(configuration) self.controller_uri = self.configuration.get("controllerURI") - self.username=(self.configuration.get("username") or None) - self.password=(self.configuration.get("password") or None) + self.username = self.configuration.get("username") or None + self.password = self.configuration.get("password") or None def run_query(self, query, user): logger.debug("Running query %s with username: %s, password: %s", query, self.username, self.password) @@ -75,13 +84,11 @@ def run_query(self, query, user): try: cursor.execute(query) - logger.debug("cursor.schema = %s",cursor.schema) + logger.debug("cursor.schema = %s", cursor.schema) columns = self.fetch_columns( [(i["name"], PINOT_TYPES_MAPPING.get(i["type"], None)) for i in cursor.schema] ) - rows = [ - dict(zip((column["name"] for column in columns), row)) for row in cursor - ] + rows = [dict(zip((column["name"] for column in columns), row)) for row in cursor] data = {"columns": columns, "rows": rows} error = None @@ -99,14 +106,17 @@ def get_schema(self, get_stats=False): schema_table_name = "{}.{}".format(schema_name, table_name) if table_name not in schema: schema[schema_table_name] = {"name": schema_table_name, "columns": []} - table_schema =self.get_pinot_table_schema(table_name) + table_schema = self.get_pinot_table_schema(table_name) - for column in table_schema.get("dimensionFieldSpecs", []) + table_schema.get( - "metricFieldSpecs", []) + table_schema.get("dateTimeFieldSpecs", []): + for column in ( + table_schema.get("dimensionFieldSpecs", []) + + table_schema.get("metricFieldSpecs", []) + + table_schema.get("dateTimeFieldSpecs", []) + ): c = { - "name": column["name"], - "type": PINOT_TYPES_MAPPING[column["dataType"]], - } + "name": column["name"], + "type": PINOT_TYPES_MAPPING[column["dataType"]], + } schema[schema_table_name]["columns"].append(c) return list(schema.values()) @@ -121,7 +131,7 @@ def get_table_names(self): def get_metadata_from_controller(self, path): url = self.controller_uri + path - r = requests.get(url, headers={"Accept": "application/json"}, auth= HTTPBasicAuth(self.username, self.password)) + r = requests.get(url, headers={"Accept": "application/json"}, auth=HTTPBasicAuth(self.username, self.password)) try: result = r.json() logger.debug("get_metadata_from_controller from path %s", path) @@ -131,4 +141,5 @@ def get_metadata_from_controller(self, path): ) from e return result + register(Pinot) diff --git a/redash/query_runner/presto.py b/redash/query_runner/presto.py index 0e205bff36..721efc67e5 100644 --- a/redash/query_runner/presto.py +++ b/redash/query_runner/presto.py @@ -1,9 +1,18 @@ -from collections import defaultdict -from redash.query_runner import * -from redash.utils import json_dumps, json_loads - import logging +from redash.query_runner import ( + TYPE_BOOLEAN, + TYPE_DATE, + TYPE_FLOAT, + TYPE_INTEGER, + TYPE_STRING, + BaseQueryRunner, + InterruptException, + JobTimeoutException, + register, +) +from redash.utils import json_dumps, json_loads + logger = logging.getLogger(__name__) @@ -107,14 +116,9 @@ def run_query(self, query, user): try: cursor.execute(query) - column_tuples = [ - (i[0], PRESTO_TYPES_MAPPING.get(i[1], None)) for i in cursor.description - ] + column_tuples = [(i[0], PRESTO_TYPES_MAPPING.get(i[1], None)) for i in cursor.description] columns = self.fetch_columns(column_tuples) - rows = [ - dict(zip(([column["name"] for column in columns]), r)) - for i, r in enumerate(cursor.fetchall()) - ] + rows = [dict(zip(([column["name"] for column in columns]), r)) for i, r in enumerate(cursor.fetchall())] data = {"columns": columns, "rows": rows} json_data = json_dumps(data) error = None @@ -122,9 +126,7 @@ def run_query(self, query, user): json_data = None default_message = "Unspecified DatabaseError: {0}".format(str(db)) if isinstance(db.args[0], dict): - message = db.args[0].get("failureInfo", {"message", None}).get( - "message" - ) + message = db.args[0].get("failureInfo", {"message", None}).get("message") else: message = None error = default_message if message is None else message diff --git a/redash/query_runner/prometheus.py b/redash/query_runner/prometheus.py index ad6c3348ab..6037e2c575 100644 --- a/redash/query_runner/prometheus.py +++ b/redash/query_runner/prometheus.py @@ -1,9 +1,16 @@ -import requests import time from datetime import datetime -from dateutil import parser from urllib.parse import parse_qs -from redash.query_runner import BaseQueryRunner, register, TYPE_DATETIME, TYPE_STRING + +import requests +from dateutil import parser + +from redash.query_runner import ( + TYPE_DATETIME, + TYPE_STRING, + BaseQueryRunner, + register, +) from redash.utils import json_dumps @@ -118,17 +125,13 @@ def run_query(self, query, user): error = None query = query.strip() # for backward compatibility - query = ( - "query={}".format(query) if not query.startswith("query=") else query - ) + query = "query={}".format(query) if not query.startswith("query=") else query payload = parse_qs(query) query_type = "query_range" if "step" in payload.keys() else "query" # for the range of until now - if query_type == "query_range" and ( - "end" not in payload.keys() or "now" in payload["end"] - ): + if query_type == "query_range" and ("end" not in payload.keys() or "now" in payload["end"]): date_now = datetime.now() payload.update({"end": [date_now]}) diff --git a/redash/query_runner/python.py b/redash/query_runner/python.py index 83e135bf43..78af53140c 100644 --- a/redash/query_runner/python.py +++ b/redash/query_runner/python.py @@ -3,15 +3,31 @@ import logging import sys -from redash.query_runner import * -from redash.utils import json_dumps, json_loads -from redash import models from RestrictedPython import compile_restricted -from RestrictedPython.Guards import safe_builtins, guarded_iter_unpack_sequence, guarded_unpack_sequence +from RestrictedPython.Guards import ( + guarded_iter_unpack_sequence, + guarded_unpack_sequence, + safe_builtins, +) + +from redash import models +from redash.query_runner import ( + SUPPORTED_COLUMN_TYPES, + TYPE_BOOLEAN, + TYPE_DATE, + TYPE_DATETIME, + TYPE_FLOAT, + TYPE_INTEGER, + TYPE_STRING, + BaseQueryRunner, + register, +) +from redash.utils import json_dumps, json_loads try: - import pandas as pd import numpy as np + import pandas as pd + pandas_installed = True except ImportError: pandas_installed = False @@ -31,9 +47,7 @@ def __init__(self): def write(self, text): if self.enabled: if text and text.strip(): - log_line = "[{0}] {1}".format( - datetime.datetime.utcnow().isoformat(), text - ) + log_line = "[{0}] {1}".format(datetime.datetime.utcnow().isoformat(), text) self.lines.append(log_line) def enable(self): @@ -120,7 +134,7 @@ def __init__(self, configuration): if self.configuration.get("additionalBuiltins", None): for b in self.configuration["additionalBuiltins"].split(","): if b not in self.safe_builtins: - self.safe_builtins += (b, ) + self.safe_builtins += (b,) def custom_import(self, name, globals=None, locals=None, fromlist=(), level=0): if name in self._allowed_modules: @@ -133,9 +147,7 @@ def custom_import(self, name, globals=None, locals=None, fromlist=(), level=0): return m - raise Exception( - "'{0}' is not configured as a supported import module".format(name) - ) + raise Exception("'{0}' is not configured as a supported import module".format(name)) @staticmethod def custom_write(obj): @@ -177,9 +189,7 @@ def add_result_column(result, column_name, friendly_name, column_type): if "columns" not in result: result["columns"] = [] - result["columns"].append( - {"name": column_name, "friendly_name": friendly_name, "type": column_type} - ) + result["columns"].append({"name": column_name, "friendly_name": friendly_name, "type": column_type}) @staticmethod def add_result_row(result, values): @@ -223,7 +233,6 @@ def execute_query(data_source_name_or_id, query, result_type=None): return query_result - @staticmethod def get_source_schema(data_source_name_or_id): """Get schema from specific data source. @@ -262,7 +271,6 @@ def get_query_result(query_id): return query.latest_query_data.data def dataframe_to_result(self, result, df): - result["rows"] = df.to_dict("records") for column_name, column_type in df.dtypes.items(): @@ -272,7 +280,7 @@ def dataframe_to_result(self, result, df): redash_type = TYPE_FLOAT elif column_type == np.integer: redash_type = TYPE_INTEGER - elif column_type in (np.datetime64, np.dtype(' 10: @@ -352,4 +360,5 @@ def run_query(self, query, user): return json_data, error + register(Python) diff --git a/redash/query_runner/qubole.py b/redash/query_runner/qubole.py index 7e91fb36f8..55bb091566 100644 --- a/redash/query_runner/qubole.py +++ b/redash/query_runner/qubole.py @@ -1,21 +1,26 @@ -import time -import requests import logging +import time from io import StringIO +import requests + from redash.query_runner import ( + TYPE_STRING, BaseQueryRunner, - register, JobTimeoutException, - TYPE_STRING, + register, ) from redash.utils import json_dumps try: - import qds_sdk + import qds_sdk # noqa: F401 + from qds_sdk.commands import ( + Command, + HiveCommand, + PrestoCommand, + SqlCommand, + ) from qds_sdk.qubole import Qubole as qbol - from qds_sdk.commands import Command, HiveCommand - from qds_sdk.commands import SqlCommand, PrestoCommand enabled = True except ImportError: @@ -66,9 +71,7 @@ def enabled(cls): def test_connection(self): headers = self._get_header() - r = requests.head( - "%s/api/latest/users" % self.configuration.get("endpoint"), headers=headers - ) + r = requests.head("%s/api/latest/users" % self.configuration.get("endpoint"), headers=headers) r.status_code == 200 def run_query(self, query, user): @@ -83,13 +86,9 @@ def run_query(self, query, user): if query_type == "quantum": cmd = SqlCommand.create(query=query) elif query_type == "hive": - cmd = HiveCommand.create( - query=query, label=self.configuration.get("cluster") - ) + cmd = HiveCommand.create(query=query, label=self.configuration.get("cluster")) elif query_type == "presto": - cmd = PrestoCommand.create( - query=query, label=self.configuration.get("cluster") - ) + cmd = PrestoCommand.create(query=query, label=self.configuration.get("cluster")) else: raise Exception( "Invalid Query Type:%s.\ @@ -97,9 +96,7 @@ def run_query(self, query, user): % self.configuration.get("query_type") ) - logging.info( - "Qubole command created with Id: %s and Status: %s", cmd.id, cmd.status - ) + logging.info("Qubole command created with Id: %s and Status: %s", cmd.id, cmd.status) while not Command.is_done(cmd.status): time.sleep(qbol.poll_interval) @@ -125,13 +122,8 @@ def run_query(self, query, user): fp.close() data = results.split("\r\n") - columns = self.fetch_columns( - [(i, TYPE_STRING) for i in data.pop(0).split("\t")] - ) - rows = [ - dict(zip((column["name"] for column in columns), row.split("\t"))) - for row in data - ] + columns = self.fetch_columns([(i, TYPE_STRING) for i in data.pop(0).split("\t")]) + rows = [dict(zip((column["name"] for column in columns), row.split("\t"))) for row in data] json_data = json_dumps({"columns": columns, "rows": rows}) except (KeyboardInterrupt, JobTimeoutException): @@ -146,8 +138,7 @@ def get_schema(self, get_stats=False): try: headers = self._get_header() content = requests.get( - "%s/api/latest/hive?describe=true&per_page=10000" - % self.configuration.get("endpoint"), + "%s/api/latest/hive?describe=true&per_page=10000" % self.configuration.get("endpoint"), headers=headers, ) data = content.json() @@ -164,9 +155,7 @@ def get_schema(self, get_stats=False): schemas[table_name] = {"name": table_name, "columns": columns} except Exception as e: - logging.error( - "Failed to get schema information from Qubole. Error {}".format(str(e)) - ) + logging.error("Failed to get schema information from Qubole. Error {}".format(str(e))) return list(schemas.values()) diff --git a/redash/query_runner/query_results.py b/redash/query_runner/query_results.py index 7da4ff0afb..9122f258be 100644 --- a/redash/query_runner/query_results.py +++ b/redash/query_runner/query_results.py @@ -5,11 +5,11 @@ from redash import models from redash.permissions import has_access, view_only from redash.query_runner import ( - BaseQueryRunner, TYPE_STRING, + BaseQueryRunner, + JobTimeoutException, guess_type, register, - JobTimeoutException, ) from redash.utils import json_dumps, json_loads @@ -56,9 +56,7 @@ def get_query_results(user, query_id, bring_from_cache): else: raise Exception("No cached result available for query {}.".format(query.id)) else: - results, error = query.data_source.query_runner.run_query( - query.query_text, user - ) + results, error = query.data_source.query_runner.run_query(query.query_text, user) if error: raise Exception("Failed loading results for query id {}.".format(query.id)) else: @@ -80,7 +78,7 @@ def create_tables_from_query_ids(user, connection, query_ids, cached_query_ids=[ def fix_column_name(name): - return '"{}"'.format(re.sub('[:."\s]', "_", name, flags=re.UNICODE)) + return '"{}"'.format(re.sub(r'[:."\s]', "_", name, flags=re.UNICODE)) def flatten(value): @@ -102,9 +100,7 @@ def create_table(connection, table_name, query_results): logger.debug("CREATE TABLE query: %s", create_table) connection.execute(create_table) except sqlite3.OperationalError as exc: - raise CreateTableError( - "Error creating table {}: {}".format(table_name, str(exc)) - ) + raise CreateTableError("Error creating table {}: {}".format(table_name, str(exc))) insert_template = "insert into {table_name} ({column_list}) values ({place_holders})".format( table_name=table_name, diff --git a/redash/query_runner/rockset.py b/redash/query_runner/rockset.py index a8e0f0eb6c..ff5bc5b9ae 100644 --- a/redash/query_runner/rockset.py +++ b/redash/query_runner/rockset.py @@ -1,5 +1,13 @@ import requests -from redash.query_runner import * + +from redash.query_runner import ( + TYPE_BOOLEAN, + TYPE_FLOAT, + TYPE_INTEGER, + TYPE_STRING, + BaseSQLQueryRunner, + register, +) from redash.utils import json_dumps @@ -22,10 +30,9 @@ def __init__(self, api_key, api_server): self.api_key = api_key self.api_server = api_server - def _request(self, endpoint, method='GET', body=None): - headers = {'Authorization': 'ApiKey {}'.format(self.api_key), - 'User-Agent': 'rest:redash/1.0'} - url = '{}/v1/orgs/self/{}'.format(self.api_server, endpoint) + def _request(self, endpoint, method="GET", body=None): + headers = {"Authorization": "ApiKey {}".format(self.api_key), "User-Agent": "rest:redash/1.0"} + url = "{}/v1/orgs/self/{}".format(self.api_server, endpoint) if method == "GET": r = requests.get(url, headers=headers) @@ -37,16 +44,16 @@ def _request(self, endpoint, method='GET', body=None): raise "Unknown method: {}".format(method) def list_workspaces(self): - response = self._request('ws') - return [x['name'] for x in response['data'] if x['collection_count'] > 0] + response = self._request("ws") + return [x["name"] for x in response["data"] if x["collection_count"] > 0] - def list_collections(self, workspace='commons'): - response = self._request('ws/{}/collections'.format(workspace)) - return [x['name'] for x in response['data']] + def list_collections(self, workspace="commons"): + response = self._request("ws/{}/collections".format(workspace)) + return [x["name"] for x in response["data"]] def collection_columns(self, workspace, collection): response = self.query('DESCRIBE "{}"."{}" OPTION(max_field_depth=1)'.format(workspace, collection)) - return sorted(set([x['field'][0] for x in response['results']])) + return sorted(set([x["field"][0] for x in response["results"]])) def query(self, sql): return self._request("queries", "POST", {"sql": {"query": sql}}) @@ -86,12 +93,12 @@ def __init__(self, configuration): def _get_tables(self, schema): for workspace in self.api.list_workspaces(): for collection in self.api.list_collections(workspace): - table_name = collection if workspace == 'commons' else '{}.{}'.format(workspace, collection) + table_name = collection if workspace == "commons" else "{}.{}".format(workspace, collection) schema[table_name] = { - 'name': table_name, - 'columns': self.api.collection_columns(workspace, collection) + "name": table_name, + "columns": self.api.collection_columns(workspace, collection), } - return sorted(schema.values(), key=lambda x: x['name']) + return sorted(schema.values(), key=lambda x: x["name"]) def run_query(self, query, user): results = self.api.query(query) @@ -107,9 +114,7 @@ def run_query(self, query, user): if len(rows) > 0: columns = [] for k in rows[0]: - columns.append( - {"name": k, "friendly_name": k, "type": _get_type(rows[0][k])} - ) + columns.append({"name": k, "friendly_name": k, "type": _get_type(rows[0][k])}) data = json_dumps({"columns": columns, "rows": rows}) return data, None diff --git a/redash/query_runner/salesforce.py b/redash/query_runner/salesforce.py index fb0eeea9bb..a8f2c0490e 100644 --- a/redash/query_runner/salesforce.py +++ b/redash/query_runner/salesforce.py @@ -1,25 +1,28 @@ -import re import logging +import re from collections import OrderedDict -from redash.query_runner import BaseQueryRunner, register + from redash.query_runner import ( - TYPE_STRING, + TYPE_BOOLEAN, TYPE_DATE, TYPE_DATETIME, - TYPE_INTEGER, TYPE_FLOAT, - TYPE_BOOLEAN, + TYPE_INTEGER, + TYPE_STRING, + BaseQueryRunner, + register, ) from redash.utils import json_dumps logger = logging.getLogger(__name__) try: - from simple_salesforce import Salesforce as SimpleSalesforce, SalesforceError + from simple_salesforce import Salesforce as SimpleSalesforce + from simple_salesforce import SalesforceError from simple_salesforce.api import DEFAULT_API_VERSION enabled = True -except ImportError as e: +except ImportError: enabled = False # See https://developer.salesforce.com/docs/atlas.en-us.api.meta/api/field_types.htm diff --git a/redash/query_runner/script.py b/redash/query_runner/script.py index 9adb1851c9..ae6300c82a 100644 --- a/redash/query_runner/script.py +++ b/redash/query_runner/script.py @@ -1,8 +1,7 @@ import os import subprocess -import sys -from redash.query_runner import * +from redash.query_runner import BaseQueryRunner, register def query_to_script_path(path, query): @@ -62,9 +61,7 @@ def __init__(self, configuration): # Poor man's protection against running scripts from outside the scripts directory if self.configuration["path"].find("../") > -1: - raise ValueError( - "Scripts can only be run from the configured scripts directory" - ) + raise ValueError("Scripts can only be run from the configured scripts directory") def test_connection(self): pass diff --git a/redash/query_runner/snowflake.py b/redash/query_runner/snowflake.py index 89dbff1344..1186ae840d 100644 --- a/redash/query_runner/snowflake.py +++ b/redash/query_runner/snowflake.py @@ -6,16 +6,17 @@ enabled = False -from redash.query_runner import BaseSQLQueryRunner, register from redash.query_runner import ( - TYPE_STRING, + TYPE_BOOLEAN, TYPE_DATE, TYPE_DATETIME, - TYPE_INTEGER, TYPE_FLOAT, - TYPE_BOOLEAN, + TYPE_INTEGER, + TYPE_STRING, + BaseSQLQueryRunner, + register, ) -from redash.utils import json_dumps, json_loads +from redash.utils import json_dumps TYPES_MAP = { 0: TYPE_INTEGER, @@ -113,14 +114,9 @@ def _column_name(self, column_name): def _parse_results(self, cursor): columns = self.fetch_columns( - [ - (self._column_name(i[0]), self.determine_type(i[1], i[5])) - for i in cursor.description - ] + [(self._column_name(i[0]), self.determine_type(i[1], i[5])) for i in cursor.description] ) - rows = [ - dict(zip((column["name"] for column in columns), row)) for row in cursor - ] + rows = [dict(zip((column["name"] for column in columns), row)) for row in cursor] data = {"columns": columns, "rows": rows} return data diff --git a/redash/query_runner/sparql_endpoint.py b/redash/query_runner/sparql_endpoint.py index b9a00579ab..2cc7768880 100644 --- a/redash/query_runner/sparql_endpoint.py +++ b/redash/query_runner/sparql_endpoint.py @@ -3,19 +3,19 @@ seeAlso: https://www.w3.org/TR/rdf-sparql-query/ """ -import logging import json +import logging from os import environ -import re from redash.query_runner import BaseQueryRunner from redash.utils import json_dumps, json_loads + from . import register try: import requests from cmem.cmempy.queries import SparqlQuery - from rdflib.plugins.sparql import prepareQuery + from rdflib.plugins.sparql import prepareQuery # noqa enabled = True except ImportError: @@ -125,9 +125,7 @@ def run_query(self, query, user): query = SparqlQuery(query_text) query_type = query.get_query_type() if query_type not in ["SELECT", None]: - raise ValueError( - "Queries of type {} can not be processed by redash.".format(query_type) - ) + raise ValueError("Queries of type {} can not be processed by redash.".format(query_type)) self._setup_environment() try: diff --git a/redash/query_runner/sqlite.py b/redash/query_runner/sqlite.py index a7733de3e4..6177187aab 100644 --- a/redash/query_runner/sqlite.py +++ b/redash/query_runner/sqlite.py @@ -1,7 +1,11 @@ import logging import sqlite3 -from redash.query_runner import BaseSQLQueryRunner, register, JobTimeoutException +from redash.query_runner import ( + BaseSQLQueryRunner, + JobTimeoutException, + register, +) from redash.utils import json_dumps, json_loads logger = logging.getLogger(__name__) @@ -29,7 +33,7 @@ def __init__(self, configuration): def _get_tables(self, schema): query_table = "select tbl_name from sqlite_master where type='table'" - query_columns = "PRAGMA table_info(\"%s\")" + query_columns = 'PRAGMA table_info("%s")' results, error = self.run_query(query_table, None) @@ -61,10 +65,7 @@ def run_query(self, query, user): if cursor.description is not None: columns = self.fetch_columns([(i[0], None) for i in cursor.description]) - rows = [ - dict(zip((column["name"] for column in columns), row)) - for row in cursor - ] + rows = [dict(zip((column["name"] for column in columns), row)) for row in cursor] data = {"columns": columns, "rows": rows} error = None diff --git a/redash/query_runner/treasuredata.py b/redash/query_runner/treasuredata.py index 3e53b136ce..ff768cb94a 100644 --- a/redash/query_runner/treasuredata.py +++ b/redash/query_runner/treasuredata.py @@ -1,6 +1,14 @@ import logging -from redash.query_runner import * +from redash.query_runner import ( + TYPE_BOOLEAN, + TYPE_DATETIME, + TYPE_FLOAT, + TYPE_INTEGER, + TYPE_STRING, + BaseQueryRunner, + register, +) from redash.utils import json_dumps logger = logging.getLogger(__name__) @@ -69,17 +77,17 @@ def get_schema(self, get_stats=False): schema = {} if self.configuration.get("get_schema", False): try: - with tdclient.Client(self.configuration.get("apikey"),endpoint=self.configuration.get("endpoint")) as client: + with tdclient.Client( + self.configuration.get("apikey"), endpoint=self.configuration.get("endpoint") + ) as client: for table in client.tables(self.configuration.get("db")): - table_name = "{}.{}".format( - self.configuration.get("db"), table.name - ) + table_name = "{}.{}".format(self.configuration.get("db"), table.name) for table_schema in table.schema: schema[table_name] = { "name": table_name, "columns": [column[0] for column in table.schema], } - except Exception as ex: + except Exception: raise Exception("Failed getting schema") return list(schema.values()) @@ -95,18 +103,14 @@ def run_query(self, query, user): try: cursor.execute(query) columns_tuples = [ - (i[0], TD_TYPES_MAPPING.get(i[1], None)) - for i in cursor.show_job()["hive_result_schema"] + (i[0], TD_TYPES_MAPPING.get(i[1], None)) for i in cursor.show_job()["hive_result_schema"] ] columns = self.fetch_columns(columns_tuples) if cursor.rowcount == 0: rows = [] else: - rows = [ - dict(zip(([column["name"] for column in columns]), r)) - for r in cursor.fetchall() - ] + rows = [dict(zip(([column["name"] for column in columns]), r)) for r in cursor.fetchall()] data = {"columns": columns, "rows": rows} json_data = json_dumps(data) error = None @@ -114,9 +118,7 @@ def run_query(self, query, user): json_data = None error = "%s: %s" % ( str(e), - cursor.show_job() - .get("debug", {}) - .get("stderr", "No stderr message in the response"), + cursor.show_job().get("debug", {}).get("stderr", "No stderr message in the response"), ) return json_data, error diff --git a/redash/query_runner/trino.py b/redash/query_runner/trino.py index c8daf2a83e..fc7c43d2d2 100644 --- a/redash/query_runner/trino.py +++ b/redash/query_runner/trino.py @@ -1,6 +1,17 @@ import logging -from redash.query_runner import * +from redash.query_runner import ( + TYPE_BOOLEAN, + TYPE_DATE, + TYPE_DATETIME, + TYPE_FLOAT, + TYPE_INTEGER, + TYPE_STRING, + BaseQueryRunner, + InterruptException, + JobTimeoutException, + register, +) from redash.utils import json_dumps, json_loads logger = logging.getLogger(__name__) @@ -15,24 +26,19 @@ TRINO_TYPES_MAPPING = { "boolean": TYPE_BOOLEAN, - "tinyint": TYPE_INTEGER, "smallint": TYPE_INTEGER, "integer": TYPE_INTEGER, "long": TYPE_INTEGER, "bigint": TYPE_INTEGER, - "float": TYPE_FLOAT, "real": TYPE_FLOAT, "double": TYPE_FLOAT, - "decimal": TYPE_INTEGER, - "varchar": TYPE_STRING, "char": TYPE_STRING, "string": TYPE_STRING, "json": TYPE_STRING, - "date": TYPE_DATE, "timestamp": TYPE_DATETIME, } @@ -65,7 +71,7 @@ def configuration_schema(cls): "schema", ], "required": ["host", "username"], - "secret": ["password"] + "secret": ["password"], } @classmethod @@ -102,8 +108,7 @@ def get_schema(self, get_stats=False): def run_query(self, query, user): if self.configuration.get("password"): auth = trino.auth.BasicAuthentication( - username=self.configuration.get("username"), - password=self.configuration.get("password") + username=self.configuration.get("username"), password=self.configuration.get("password") ) else: auth = trino.constants.DEFAULT_AUTH @@ -114,7 +119,7 @@ def run_query(self, query, user): catalog=self.configuration.get("catalog", "hive"), schema=self.configuration.get("schema", "default"), user=self.configuration.get("username"), - auth=auth + auth=auth, ) cursor = connection.cursor() @@ -123,17 +128,9 @@ def run_query(self, query, user): cursor.execute(query) results = cursor.fetchall() description = cursor.description - columns = self.fetch_columns([ - (c[0], TRINO_TYPES_MAPPING.get(c[1], None)) for c in description - ]) - rows = [ - dict(zip([c["name"] for c in columns], r)) - for r in results - ] - data = { - "columns": columns, - "rows": rows - } + columns = self.fetch_columns([(c[0], TRINO_TYPES_MAPPING.get(c[1], None)) for c in description]) + rows = [dict(zip([c["name"] for c in columns], r)) for r in results] + data = {"columns": columns, "rows": rows} json_data = json_dumps(data) error = None except DatabaseError as db: diff --git a/redash/query_runner/uptycs.py b/redash/query_runner/uptycs.py index 15c9b30bc0..c1b0ea2811 100644 --- a/redash/query_runner/uptycs.py +++ b/redash/query_runner/uptycs.py @@ -1,10 +1,11 @@ -from redash.query_runner import * -from redash.utils import json_dumps, json_loads +import datetime +import logging import jwt -import datetime import requests -import logging + +from redash.query_runner import BaseSQLQueryRunner, register +from redash.utils import json_dumps, json_loads logger = logging.getLogger(__name__) @@ -62,9 +63,7 @@ def transformed_to_redash_json(self, data): def api_call(self, sql): # JWT encoded header - header = self.generate_header( - self.configuration.get("key"), self.configuration.get("secret") - ) + header = self.generate_header(self.configuration.get("key"), self.configuration.get("secret")) # URL form using API key file based on GLOBAL url = "%s/public/api/customers/%s/query" % ( @@ -105,16 +104,12 @@ def run_query(self, query, user): return json_data, error def get_schema(self, get_stats=False): - header = self.generate_header( - self.configuration.get("key"), self.configuration.get("secret") - ) + header = self.generate_header(self.configuration.get("key"), self.configuration.get("secret")) url = "%s/public/api/customers/%s/schema/global" % ( self.configuration.get("url"), self.configuration.get("customer_id"), ) - response = requests.get( - url, headers=header, verify=self.configuration.get("verify_ssl", True) - ) + response = requests.get(url, headers=header, verify=self.configuration.get("verify_ssl", True)) redash_json = [] schema = json_loads(response.content) for each_def in schema["tables"]: diff --git a/redash/query_runner/vertica.py b/redash/query_runner/vertica.py index 2735aeeb6c..64e7d06b22 100644 --- a/redash/query_runner/vertica.py +++ b/redash/query_runner/vertica.py @@ -1,8 +1,16 @@ -import sys import logging -from redash.utils import json_loads, json_dumps -from redash.query_runner import * +from redash.query_runner import ( + TYPE_BOOLEAN, + TYPE_DATE, + TYPE_DATETIME, + TYPE_FLOAT, + TYPE_INTEGER, + TYPE_STRING, + BaseSQLQueryRunner, + register, +) +from redash.utils import json_dumps, json_loads logger = logging.getLogger(__name__) @@ -59,7 +67,7 @@ def configuration_schema(cls): @classmethod def enabled(cls): try: - import vertica_python + import vertica_python # noqa: F401 except ImportError: return False @@ -109,9 +117,7 @@ def run_query(self, query, user): } if self.configuration.get("connection_timeout"): - conn_info["connection_timeout"] = self.configuration.get( - "connection_timeout" - ) + conn_info["connection_timeout"] = self.configuration.get("connection_timeout") connection = vertica_python.connect(**conn_info) cursor = connection.cursor() @@ -119,15 +125,10 @@ def run_query(self, query, user): cursor.execute(query) if cursor.description is not None: - columns_data = [ - (i[0], types_map.get(i[1], None)) for i in cursor.description - ] + columns_data = [(i[0], types_map.get(i[1], None)) for i in cursor.description] columns = self.fetch_columns(columns_data) - rows = [ - dict(zip(([c["name"] for c in columns]), r)) - for r in cursor.fetchall() - ] + rows = [dict(zip(([c["name"] for c in columns]), r)) for r in cursor.fetchall()] data = {"columns": columns, "rows": rows} json_data = json_dumps(data) diff --git a/redash/query_runner/yandex_metrica.py b/redash/query_runner/yandex_metrica.py index 1802525e73..76c5439eff 100644 --- a/redash/query_runner/yandex_metrica.py +++ b/redash/query_runner/yandex_metrica.py @@ -1,10 +1,17 @@ import logging -import yaml from urllib.parse import parse_qs, urlparse import requests +import yaml -from redash.query_runner import * +from redash.query_runner import ( + TYPE_DATE, + TYPE_DATETIME, + TYPE_FLOAT, + TYPE_STRING, + BaseSQLQueryRunner, + register, +) from redash.utils import json_dumps logger = logging.getLogger(__name__) @@ -100,14 +107,11 @@ def __init__(self, configuration): self.list_path = "counters" def _get_tables(self, schema): - counters = self._send_query("management/v1/{0}".format(self.list_path)) for row in counters[self.list_path]: owner = row.get("owner_login") - counter = "{0} | {1}".format( - row.get("name", "Unknown"), row.get("id", "Unknown") - ) + counter = "{0} | {1}".format(row.get("name", "Unknown"), row.get("id", "Unknown")) if owner not in schema: schema[owner] = {"name": owner, "columns": []} diff --git a/redash/security.py b/redash/security.py index d5ebaee547..8311445457 100644 --- a/redash/security.py +++ b/redash/security.py @@ -1,13 +1,12 @@ import functools -from flask import session, request + +from flask import request, session from flask_login import current_user from flask_talisman import talisman from flask_wtf.csrf import CSRFProtect, generate_csrf - from redash import settings - talisman = talisman.Talisman() csrf = CSRFProtect() @@ -18,9 +17,7 @@ def decorated(*args, **kwargs): return fn(*args, **kwargs) embedable_csp = talisman.content_security_policy + "frame-ancestors *;" - return talisman(content_security_policy=embedable_csp, frame_options=None)( - decorated - ) + return talisman(content_security_policy=embedable_csp, frame_options=None)(decorated) def init_app(app): @@ -35,6 +32,7 @@ def inject_csrf_token(response): return response if settings.ENFORCE_CSRF: + @app.before_request def check_csrf(): # BEGIN workaround until https://github.com/lepture/flask-wtf/pull/419 is merged @@ -42,7 +40,7 @@ def check_csrf(): return view = app.view_functions.get(request.endpoint) - dest = f'{view.__module__}.{view.__name__}' + dest = f"{view.__module__}.{view.__name__}" if dest in csrf._exempt_views: return diff --git a/redash/serializers/__init__.py b/redash/serializers/__init__.py index 6105364c49..d956235618 100644 --- a/redash/serializers/__init__.py +++ b/redash/serializers/__init__.py @@ -3,23 +3,20 @@ classes we have. This will ensure cleaner code and better separation of concerns. """ -from funcy import project - from flask_login import current_user +from funcy import project from rq.job import JobStatus from rq.timeouts import JobTimeoutException from redash import models -from redash.permissions import has_access, view_only -from redash.utils import json_loads from redash.models.parameterized_query import ParameterizedQuery - - -from .query_result import ( +from redash.permissions import has_access, view_only +from redash.serializers.query_result import ( serialize_query_result, serialize_query_result_to_dsv, serialize_query_result_to_xlsx, ) +from redash.utils import json_loads def public_widget(widget): @@ -80,21 +77,12 @@ def __init__(self, object_or_list, **kwargs): def serialize(self): if isinstance(self.object_or_list, models.Query): result = serialize_query(self.object_or_list, **self.options) - if ( - self.options.get("with_favorite_state", True) - and not current_user.is_api_user() - ): - result["is_favorite"] = models.Favorite.is_favorite( - current_user.id, self.object_or_list - ) + if self.options.get("with_favorite_state", True) and not current_user.is_api_user(): + result["is_favorite"] = models.Favorite.is_favorite(current_user.id, self.object_or_list) else: - result = [ - serialize_query(query, **self.options) for query in self.object_or_list - ] + result = [serialize_query(query, **self.options) for query in self.object_or_list] if self.options.get("with_favorite_state", True): - favorite_ids = models.Favorite.are_favorites( - current_user.id, self.object_or_list - ) + favorite_ids = models.Favorite.are_favorites(current_user.id, self.object_or_list) for query in result: query["is_favorite"] = query["id"] in favorite_ids @@ -134,11 +122,7 @@ def serialize_query( d["user_id"] = query.user_id if with_last_modified_by: - d["last_modified_by"] = ( - query.last_modified_by.to_dict() - if query.last_modified_by is not None - else None - ) + d["last_modified_by"] = query.last_modified_by.to_dict() if query.last_modified_by is not None else None else: d["last_modified_by_id"] = query.last_modified_by_id @@ -151,10 +135,7 @@ def serialize_query( d["runtime"] = None if with_visualizations: - d["visualizations"] = [ - serialize_visualization(vis, with_query=False) - for vis in query.visualizations - ] + d["visualizations"] = [serialize_visualization(vis, with_query=False) for vis in query.visualizations] return d @@ -277,21 +258,12 @@ def __init__(self, object_or_list, **kwargs): def serialize(self): if isinstance(self.object_or_list, models.Dashboard): result = serialize_dashboard(self.object_or_list, **self.options) - if ( - self.options.get("with_favorite_state", True) - and not current_user.is_api_user() - ): - result["is_favorite"] = models.Favorite.is_favorite( - current_user.id, self.object_or_list - ) + if self.options.get("with_favorite_state", True) and not current_user.is_api_user(): + result["is_favorite"] = models.Favorite.is_favorite(current_user.id, self.object_or_list) else: - result = [ - serialize_dashboard(obj, **self.options) for obj in self.object_or_list - ] + result = [serialize_dashboard(obj, **self.options) for obj in self.object_or_list] if self.options.get("with_favorite_state", True): - favorite_ids = models.Favorite.are_favorites( - current_user.id, self.object_or_list - ) + favorite_ids = models.Favorite.are_favorites(current_user.id, self.object_or_list) for obj in result: obj["is_favorite"] = obj["id"] in favorite_ids diff --git a/redash/serializers/query_result.py b/redash/serializers/query_result.py index 9eab2a1a42..1944d4cf8f 100644 --- a/redash/serializers/query_result.py +++ b/redash/serializers/query_result.py @@ -1,11 +1,12 @@ -import io import csv +import io + import xlsxwriter -from funcy import rpartial, project from dateutil.parser import isoparse as parse_date -from redash.utils import json_loads, UnicodeWriter -from redash.query_runner import TYPE_BOOLEAN, TYPE_DATE, TYPE_DATETIME +from funcy import project, rpartial + from redash.authentication.org_resolving import current_org +from redash.query_runner import TYPE_BOOLEAN, TYPE_DATE, TYPE_DATETIME def _convert_format(fmt): diff --git a/redash/settings/__init__.py b/redash/settings/__init__.py index 07ee34164e..880ab9bc3c 100644 --- a/redash/settings/__init__.py +++ b/redash/settings/__init__.py @@ -1,24 +1,23 @@ -import os import importlib +import os import ssl -from funcy import distinct, remove + from flask_talisman import talisman +from funcy import distinct, remove -from .helpers import ( - fix_assets_path, +from redash.settings.helpers import ( + add_decode_responses_to_redis_url, array_from_string, - parse_boolean, + cast_int_or_default, + fix_assets_path, int_or_none, + parse_boolean, set_from_string, - add_decode_responses_to_redis_url, - cast_int_or_default ) -from .organization import DATE_FORMAT, TIME_FORMAT # noqa +from redash.settings.organization import DATE_FORMAT, TIME_FORMAT # noqa # _REDIS_URL is the unchanged REDIS_URL we get from env vars, to be used later with RQ -_REDIS_URL = os.environ.get( - "REDASH_REDIS_URL", os.environ.get("REDIS_URL", "redis://localhost:6379/0") -) +_REDIS_URL = os.environ.get("REDASH_REDIS_URL", os.environ.get("REDIS_URL", "redis://localhost:6379/0")) # This is the one to use for Redash' own connection: REDIS_URL = add_decode_responses_to_redis_url(_REDIS_URL) PROXIES_COUNT = int(os.environ.get("REDASH_PROXIES_COUNT", "1")) @@ -34,91 +33,61 @@ ) SQLALCHEMY_MAX_OVERFLOW = int_or_none(os.environ.get("SQLALCHEMY_MAX_OVERFLOW")) SQLALCHEMY_POOL_SIZE = int_or_none(os.environ.get("SQLALCHEMY_POOL_SIZE")) -SQLALCHEMY_DISABLE_POOL = parse_boolean( - os.environ.get("SQLALCHEMY_DISABLE_POOL", "false") -) -SQLALCHEMY_ENABLE_POOL_PRE_PING = parse_boolean( - os.environ.get("SQLALCHEMY_ENABLE_POOL_PRE_PING", "false") -) +SQLALCHEMY_DISABLE_POOL = parse_boolean(os.environ.get("SQLALCHEMY_DISABLE_POOL", "false")) +SQLALCHEMY_ENABLE_POOL_PRE_PING = parse_boolean(os.environ.get("SQLALCHEMY_ENABLE_POOL_PRE_PING", "false")) SQLALCHEMY_TRACK_MODIFICATIONS = False SQLALCHEMY_ECHO = False RQ_REDIS_URL = os.environ.get("RQ_REDIS_URL", _REDIS_URL) # The following enables periodic job (every 5 minutes) of removing unused query results. -QUERY_RESULTS_CLEANUP_ENABLED = parse_boolean( - os.environ.get("REDASH_QUERY_RESULTS_CLEANUP_ENABLED", "true") -) -QUERY_RESULTS_CLEANUP_COUNT = int( - os.environ.get("REDASH_QUERY_RESULTS_CLEANUP_COUNT", "100") -) -QUERY_RESULTS_CLEANUP_MAX_AGE = int( - os.environ.get("REDASH_QUERY_RESULTS_CLEANUP_MAX_AGE", "7") -) +QUERY_RESULTS_CLEANUP_ENABLED = parse_boolean(os.environ.get("REDASH_QUERY_RESULTS_CLEANUP_ENABLED", "true")) +QUERY_RESULTS_CLEANUP_COUNT = int(os.environ.get("REDASH_QUERY_RESULTS_CLEANUP_COUNT", "100")) +QUERY_RESULTS_CLEANUP_MAX_AGE = int(os.environ.get("REDASH_QUERY_RESULTS_CLEANUP_MAX_AGE", "7")) -QUERY_RESULTS_EXPIRED_TTL_ENABLED = parse_boolean( - os.environ.get("REDASH_QUERY_RESULTS_EXPIRED_TTL_ENABLED", "false") -) +QUERY_RESULTS_EXPIRED_TTL_ENABLED = parse_boolean(os.environ.get("REDASH_QUERY_RESULTS_EXPIRED_TTL_ENABLED", "false")) # default set query results expired ttl 86400 seconds -QUERY_RESULTS_EXPIRED_TTL = int( - os.environ.get("REDASH_QUERY_RESULTS_EXPIRED_TTL", "86400") -) +QUERY_RESULTS_EXPIRED_TTL = int(os.environ.get("REDASH_QUERY_RESULTS_EXPIRED_TTL", "86400")) SCHEMAS_REFRESH_SCHEDULE = int(os.environ.get("REDASH_SCHEMAS_REFRESH_SCHEDULE", 30)) AUTH_TYPE = os.environ.get("REDASH_AUTH_TYPE", "api_key") -INVITATION_TOKEN_MAX_AGE = int( - os.environ.get("REDASH_INVITATION_TOKEN_MAX_AGE", 60 * 60 * 24 * 7) -) +INVITATION_TOKEN_MAX_AGE = int(os.environ.get("REDASH_INVITATION_TOKEN_MAX_AGE", 60 * 60 * 24 * 7)) # The secret key to use in the Flask app for various cryptographic features SECRET_KEY = os.environ.get("REDASH_COOKIE_SECRET") if SECRET_KEY is None: - raise Exception("You must set the REDASH_COOKIE_SECRET environment variable. Visit http://redash.io/help/open-source/admin-guide/secrets for more information.") + raise Exception( + "You must set the REDASH_COOKIE_SECRET environment variable. Visit http://redash.io/help/open-source/admin-guide/secrets for more information." + ) # The secret key to use when encrypting data source options DATASOURCE_SECRET_KEY = os.environ.get("REDASH_SECRET_KEY", SECRET_KEY) # Whether and how to redirect non-HTTP requests to HTTPS. Disabled by default. ENFORCE_HTTPS = parse_boolean(os.environ.get("REDASH_ENFORCE_HTTPS", "false")) -ENFORCE_HTTPS_PERMANENT = parse_boolean( - os.environ.get("REDASH_ENFORCE_HTTPS_PERMANENT", "false") -) +ENFORCE_HTTPS_PERMANENT = parse_boolean(os.environ.get("REDASH_ENFORCE_HTTPS_PERMANENT", "false")) # Whether file downloads are enforced or not. ENFORCE_FILE_SAVE = parse_boolean(os.environ.get("REDASH_ENFORCE_FILE_SAVE", "true")) # Whether api calls using the json query runner will block private addresses -ENFORCE_PRIVATE_ADDRESS_BLOCK = parse_boolean( - os.environ.get("REDASH_ENFORCE_PRIVATE_IP_BLOCK", "true") -) +ENFORCE_PRIVATE_ADDRESS_BLOCK = parse_boolean(os.environ.get("REDASH_ENFORCE_PRIVATE_IP_BLOCK", "true")) # Whether to use secure cookies by default. -COOKIES_SECURE = parse_boolean( - os.environ.get("REDASH_COOKIES_SECURE", str(ENFORCE_HTTPS)) -) +COOKIES_SECURE = parse_boolean(os.environ.get("REDASH_COOKIES_SECURE", str(ENFORCE_HTTPS))) # Whether the session cookie is set to secure. -SESSION_COOKIE_SECURE = parse_boolean( - os.environ.get("REDASH_SESSION_COOKIE_SECURE") or str(COOKIES_SECURE) -) +SESSION_COOKIE_SECURE = parse_boolean(os.environ.get("REDASH_SESSION_COOKIE_SECURE") or str(COOKIES_SECURE)) # Whether the session cookie is set HttpOnly. -SESSION_COOKIE_HTTPONLY = parse_boolean( - os.environ.get("REDASH_SESSION_COOKIE_HTTPONLY", "true") -) +SESSION_COOKIE_HTTPONLY = parse_boolean(os.environ.get("REDASH_SESSION_COOKIE_HTTPONLY", "true")) SESSION_EXPIRY_TIME = int(os.environ.get("REDASH_SESSION_EXPIRY_TIME", 60 * 60 * 6)) # Whether the session cookie is set to secure. -REMEMBER_COOKIE_SECURE = parse_boolean( - os.environ.get("REDASH_REMEMBER_COOKIE_SECURE") or str(COOKIES_SECURE) -) +REMEMBER_COOKIE_SECURE = parse_boolean(os.environ.get("REDASH_REMEMBER_COOKIE_SECURE") or str(COOKIES_SECURE)) # Whether the remember cookie is set HttpOnly. -REMEMBER_COOKIE_HTTPONLY = parse_boolean( - os.environ.get("REDASH_REMEMBER_COOKIE_HTTPONLY", "true") -) +REMEMBER_COOKIE_HTTPONLY = parse_boolean(os.environ.get("REDASH_REMEMBER_COOKIE_HTTPONLY", "true")) # The amount of time before the remember cookie expires. -REMEMBER_COOKIE_DURATION = int( - os.environ.get("REDASH_REMEMBER_COOKIE_DURATION", 60 * 60 * 24 * 31) -) +REMEMBER_COOKIE_DURATION = int(os.environ.get("REDASH_REMEMBER_COOKIE_DURATION", 60 * 60 * 24 * 31)) # Doesn't set X-Frame-Options by default since it's highly dependent # on the specific deployment. @@ -130,14 +99,10 @@ # Whether and how to send Strict-Transport-Security response headers. # See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Strict-Transport-Security # for more information. -HSTS_ENABLED = parse_boolean( - os.environ.get("REDASH_HSTS_ENABLED") or str(ENFORCE_HTTPS) -) +HSTS_ENABLED = parse_boolean(os.environ.get("REDASH_HSTS_ENABLED") or str(ENFORCE_HTTPS)) HSTS_PRELOAD = parse_boolean(os.environ.get("REDASH_HSTS_PRELOAD", "false")) HSTS_MAX_AGE = int(os.environ.get("REDASH_HSTS_MAX_AGE", talisman.ONE_YEAR_IN_SECS)) -HSTS_INCLUDE_SUBDOMAINS = parse_boolean( - os.environ.get("REDASH_HSTS_INCLUDE_SUBDOMAINS", "false") -) +HSTS_INCLUDE_SUBDOMAINS = parse_boolean(os.environ.get("REDASH_HSTS_INCLUDE_SUBDOMAINS", "false")) # Whether and how to send Content-Security-Policy response headers. # See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy @@ -150,23 +115,17 @@ "REDASH_CONTENT_SECURITY_POLICY", "default-src 'self'; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-eval'; font-src 'self' data:; img-src 'self' http: https: data: blob:; object-src 'none'; frame-ancestors 'none'; frame-src redash.io;", ) -CONTENT_SECURITY_POLICY_REPORT_URI = os.environ.get( - "REDASH_CONTENT_SECURITY_POLICY_REPORT_URI", "" -) +CONTENT_SECURITY_POLICY_REPORT_URI = os.environ.get("REDASH_CONTENT_SECURITY_POLICY_REPORT_URI", "") CONTENT_SECURITY_POLICY_REPORT_ONLY = parse_boolean( os.environ.get("REDASH_CONTENT_SECURITY_POLICY_REPORT_ONLY", "false") ) -CONTENT_SECURITY_POLICY_NONCE_IN = array_from_string( - os.environ.get("REDASH_CONTENT_SECURITY_POLICY_NONCE_IN", "") -) +CONTENT_SECURITY_POLICY_NONCE_IN = array_from_string(os.environ.get("REDASH_CONTENT_SECURITY_POLICY_NONCE_IN", "")) # Whether and how to send Referrer-Policy response headers. Defaults to # 'strict-origin-when-cross-origin'. # See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referrer-Policy # for more information. -REFERRER_POLICY = os.environ.get( - "REDASH_REFERRER_POLICY", "strict-origin-when-cross-origin" -) +REFERRER_POLICY = os.environ.get("REDASH_REFERRER_POLICY", "strict-origin-when-cross-origin") # Whether and how to send Feature-Policy response headers. Defaults to # an empty value. # See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Feature-Policy @@ -213,12 +172,8 @@ # If you also set the organization setting auth_password_login_enabled to false, # then your authentication will be seamless. Otherwise a link will be presented # on the login page to trigger remote user auth. -REMOTE_USER_LOGIN_ENABLED = parse_boolean( - os.environ.get("REDASH_REMOTE_USER_LOGIN_ENABLED", "false") -) -REMOTE_USER_HEADER = os.environ.get( - "REDASH_REMOTE_USER_HEADER", "X-Forwarded-Remote-User" -) +REMOTE_USER_LOGIN_ENABLED = parse_boolean(os.environ.get("REDASH_REMOTE_USER_LOGIN_ENABLED", "false")) +REMOTE_USER_HEADER = os.environ.get("REDASH_REMOTE_USER_HEADER", "X-Forwarded-Remote-User") # If the organization setting auth_password_login_enabled is not false, then users will still be # able to login through Redash instead of the LDAP server @@ -237,36 +192,22 @@ LDAP_DISPLAY_NAME_KEY = os.environ.get("REDASH_LDAP_DISPLAY_NAME_KEY", "displayName") LDAP_EMAIL_KEY = os.environ.get("REDASH_LDAP_EMAIL_KEY", "mail") # Prompt that should be shown above username/email field. -LDAP_CUSTOM_USERNAME_PROMPT = os.environ.get( - "REDASH_LDAP_CUSTOM_USERNAME_PROMPT", "LDAP/AD/SSO username:" -) +LDAP_CUSTOM_USERNAME_PROMPT = os.environ.get("REDASH_LDAP_CUSTOM_USERNAME_PROMPT", "LDAP/AD/SSO username:") # LDAP Search DN TEMPLATE (for AD this should be "(sAMAccountName=%(username)s)"") -LDAP_SEARCH_TEMPLATE = os.environ.get( - "REDASH_LDAP_SEARCH_TEMPLATE", "(cn=%(username)s)" -) +LDAP_SEARCH_TEMPLATE = os.environ.get("REDASH_LDAP_SEARCH_TEMPLATE", "(cn=%(username)s)") # The schema to bind to (ex. cn=users,dc=ORG,dc=local) -LDAP_SEARCH_DN = os.environ.get( - "REDASH_LDAP_SEARCH_DN", os.environ.get("REDASH_SEARCH_DN") -) +LDAP_SEARCH_DN = os.environ.get("REDASH_LDAP_SEARCH_DN", os.environ.get("REDASH_SEARCH_DN")) -STATIC_ASSETS_PATH = fix_assets_path( - os.environ.get("REDASH_STATIC_ASSETS_PATH", "../client/dist/") -) -FLASK_TEMPLATE_PATH = fix_assets_path( - os.environ.get("REDASH_FLASK_TEMPLATE_PATH", STATIC_ASSETS_PATH) -) +STATIC_ASSETS_PATH = fix_assets_path(os.environ.get("REDASH_STATIC_ASSETS_PATH", "../client/dist/")) +FLASK_TEMPLATE_PATH = fix_assets_path(os.environ.get("REDASH_FLASK_TEMPLATE_PATH", STATIC_ASSETS_PATH)) # Time limit (in seconds) for scheduled queries. Set this to -1 to execute without a time limit. -SCHEDULED_QUERY_TIME_LIMIT = int( - os.environ.get("REDASH_SCHEDULED_QUERY_TIME_LIMIT", -1) -) +SCHEDULED_QUERY_TIME_LIMIT = int(os.environ.get("REDASH_SCHEDULED_QUERY_TIME_LIMIT", -1)) # Time limit (in seconds) for adhoc queries. Set this to -1 to execute without a time limit. ADHOC_QUERY_TIME_LIMIT = int(os.environ.get("REDASH_ADHOC_QUERY_TIME_LIMIT", -1)) JOB_EXPIRY_TIME = int(os.environ.get("REDASH_JOB_EXPIRY_TIME", 3600 * 12)) -JOB_DEFAULT_FAILURE_TTL = int( - os.environ.get("REDASH_JOB_DEFAULT_FAILURE_TTL", 7 * 24 * 60 * 60) -) +JOB_DEFAULT_FAILURE_TTL = int(os.environ.get("REDASH_JOB_DEFAULT_FAILURE_TTL", 7 * 24 * 60 * 60)) LOG_LEVEL = os.environ.get("REDASH_LOG_LEVEL", "INFO") LOG_STDOUT = parse_boolean(os.environ.get("REDASH_LOG_STDOUT", "false")) @@ -293,9 +234,7 @@ MAIL_PASSWORD = os.environ.get("REDASH_MAIL_PASSWORD", None) MAIL_DEFAULT_SENDER = os.environ.get("REDASH_MAIL_DEFAULT_SENDER", None) MAIL_MAX_EMAILS = os.environ.get("REDASH_MAIL_MAX_EMAILS", None) -MAIL_ASCII_ATTACHMENTS = parse_boolean( - os.environ.get("REDASH_MAIL_ASCII_ATTACHMENTS", "false") -) +MAIL_ASCII_ATTACHMENTS = parse_boolean(os.environ.get("REDASH_MAIL_ASCII_ATTACHMENTS", "false")) def email_server_is_configured(): @@ -304,12 +243,8 @@ def email_server_is_configured(): HOST = os.environ.get("REDASH_HOST", "") -SEND_FAILURE_EMAIL_INTERVAL = int( - os.environ.get("REDASH_SEND_FAILURE_EMAIL_INTERVAL", 60) -) -MAX_FAILURE_REPORTS_PER_QUERY = int( - os.environ.get("REDASH_MAX_FAILURE_REPORTS_PER_QUERY", 100) -) +SEND_FAILURE_EMAIL_INTERVAL = int(os.environ.get("REDASH_SEND_FAILURE_EMAIL_INTERVAL", 60)) +MAX_FAILURE_REPORTS_PER_QUERY = int(os.environ.get("REDASH_MAX_FAILURE_REPORTS_PER_QUERY", 100)) ALERTS_DEFAULT_MAIL_SUBJECT_TEMPLATE = os.environ.get( "REDASH_ALERTS_DEFAULT_MAIL_SUBJECT_TEMPLATE", "({state}) {alert_name}" @@ -327,18 +262,12 @@ def email_server_is_configured(): # CORS settings for the Query Result API (and possibly future external APIs). # In most cases all you need to do is set REDASH_CORS_ACCESS_CONTROL_ALLOW_ORIGIN # to the calling domain (or domains in a comma separated list). -ACCESS_CONTROL_ALLOW_ORIGIN = set_from_string( - os.environ.get("REDASH_CORS_ACCESS_CONTROL_ALLOW_ORIGIN", "") -) +ACCESS_CONTROL_ALLOW_ORIGIN = set_from_string(os.environ.get("REDASH_CORS_ACCESS_CONTROL_ALLOW_ORIGIN", "")) ACCESS_CONTROL_ALLOW_CREDENTIALS = parse_boolean( os.environ.get("REDASH_CORS_ACCESS_CONTROL_ALLOW_CREDENTIALS", "false") ) -ACCESS_CONTROL_REQUEST_METHOD = os.environ.get( - "REDASH_CORS_ACCESS_CONTROL_REQUEST_METHOD", "GET, POST, PUT" -) -ACCESS_CONTROL_ALLOW_HEADERS = os.environ.get( - "REDASH_CORS_ACCESS_CONTROL_ALLOW_HEADERS", "Content-Type" -) +ACCESS_CONTROL_REQUEST_METHOD = os.environ.get("REDASH_CORS_ACCESS_CONTROL_REQUEST_METHOD", "GET, POST, PUT") +ACCESS_CONTROL_ALLOW_HEADERS = os.environ.get("REDASH_CORS_ACCESS_CONTROL_ALLOW_HEADERS", "Content-Type") # Query Runners default_query_runners = [ @@ -397,18 +326,14 @@ def email_server_is_configured(): "redash.query_runner.csv", "redash.query_runner.databend", "redash.query_runner.nz", - "redash.query_runner.arango" + "redash.query_runner.arango", ] enabled_query_runners = array_from_string( os.environ.get("REDASH_ENABLED_QUERY_RUNNERS", ",".join(default_query_runners)) ) -additional_query_runners = array_from_string( - os.environ.get("REDASH_ADDITIONAL_QUERY_RUNNERS", "") -) -disabled_query_runners = array_from_string( - os.environ.get("REDASH_DISABLED_QUERY_RUNNERS", "") -) +additional_query_runners = array_from_string(os.environ.get("REDASH_ADDITIONAL_QUERY_RUNNERS", "")) +disabled_query_runners = array_from_string(os.environ.get("REDASH_DISABLED_QUERY_RUNNERS", "")) QUERY_RUNNERS = remove( set(disabled_query_runners), @@ -432,35 +357,23 @@ def email_server_is_configured(): "redash.destinations.microsoft_teams_webhook", ] -enabled_destinations = array_from_string( - os.environ.get("REDASH_ENABLED_DESTINATIONS", ",".join(default_destinations)) -) -additional_destinations = array_from_string( - os.environ.get("REDASH_ADDITIONAL_DESTINATIONS", "") -) +enabled_destinations = array_from_string(os.environ.get("REDASH_ENABLED_DESTINATIONS", ",".join(default_destinations))) +additional_destinations = array_from_string(os.environ.get("REDASH_ADDITIONAL_DESTINATIONS", "")) DESTINATIONS = distinct(enabled_destinations + additional_destinations) -EVENT_REPORTING_WEBHOOKS = array_from_string( - os.environ.get("REDASH_EVENT_REPORTING_WEBHOOKS", "") -) +EVENT_REPORTING_WEBHOOKS = array_from_string(os.environ.get("REDASH_EVENT_REPORTING_WEBHOOKS", "")) # Support for Sentry (https://getsentry.com/). Just set your Sentry DSN to enable it: SENTRY_DSN = os.environ.get("REDASH_SENTRY_DSN", "") SENTRY_ENVIRONMENT = os.environ.get("REDASH_SENTRY_ENVIRONMENT") # Client side toggles: -ALLOW_SCRIPTS_IN_USER_INPUT = parse_boolean( - os.environ.get("REDASH_ALLOW_SCRIPTS_IN_USER_INPUT", "false") -) +ALLOW_SCRIPTS_IN_USER_INPUT = parse_boolean(os.environ.get("REDASH_ALLOW_SCRIPTS_IN_USER_INPUT", "false")) DASHBOARD_REFRESH_INTERVALS = list( map( int, - array_from_string( - os.environ.get( - "REDASH_DASHBOARD_REFRESH_INTERVALS", "60,300,600,1800,3600,43200,86400" - ) - ), + array_from_string(os.environ.get("REDASH_DASHBOARD_REFRESH_INTERVALS", "60,300,600,1800,3600,43200,86400")), ) ) QUERY_REFRESH_INTERVALS = list( @@ -485,21 +398,13 @@ def email_server_is_configured(): # Features: VERSION_CHECK = parse_boolean(os.environ.get("REDASH_VERSION_CHECK", "true")) -FEATURE_DISABLE_REFRESH_QUERIES = parse_boolean( - os.environ.get("REDASH_FEATURE_DISABLE_REFRESH_QUERIES", "false") -) -FEATURE_SHOW_QUERY_RESULTS_COUNT = parse_boolean( - os.environ.get("REDASH_FEATURE_SHOW_QUERY_RESULTS_COUNT", "true") -) +FEATURE_DISABLE_REFRESH_QUERIES = parse_boolean(os.environ.get("REDASH_FEATURE_DISABLE_REFRESH_QUERIES", "false")) +FEATURE_SHOW_QUERY_RESULTS_COUNT = parse_boolean(os.environ.get("REDASH_FEATURE_SHOW_QUERY_RESULTS_COUNT", "true")) FEATURE_ALLOW_CUSTOM_JS_VISUALIZATIONS = parse_boolean( os.environ.get("REDASH_FEATURE_ALLOW_CUSTOM_JS_VISUALIZATIONS", "false") ) -FEATURE_AUTO_PUBLISH_NAMED_QUERIES = parse_boolean( - os.environ.get("REDASH_FEATURE_AUTO_PUBLISH_NAMED_QUERIES", "true") -) -FEATURE_EXTENDED_ALERT_OPTIONS = parse_boolean( - os.environ.get("REDASH_FEATURE_EXTENDED_ALERT_OPTIONS", "false") -) +FEATURE_AUTO_PUBLISH_NAMED_QUERIES = parse_boolean(os.environ.get("REDASH_FEATURE_AUTO_PUBLISH_NAMED_QUERIES", "true")) +FEATURE_EXTENDED_ALERT_OPTIONS = parse_boolean(os.environ.get("REDASH_FEATURE_EXTENDED_ALERT_OPTIONS", "false")) # BigQuery BIGQUERY_HTTP_TIMEOUT = int(os.environ.get("REDASH_BIGQUERY_HTTP_TIMEOUT", "600")) @@ -507,9 +412,7 @@ def email_server_is_configured(): # Allow Parameters in Embeds # WARNING: Deprecated! # See https://discuss.redash.io/t/support-for-parameters-in-embedded-visualizations/3337 for more details. -ALLOW_PARAMETERS_IN_EMBEDS = parse_boolean( - os.environ.get("REDASH_ALLOW_PARAMETERS_IN_EMBEDS", "false") -) +ALLOW_PARAMETERS_IN_EMBEDS = parse_boolean(os.environ.get("REDASH_ALLOW_PARAMETERS_IN_EMBEDS", "false")) # Enhance schema fetching SCHEMA_RUN_TABLE_SIZE_CALCULATIONS = parse_boolean( @@ -519,9 +422,7 @@ def email_server_is_configured(): # kylin KYLIN_OFFSET = int(os.environ.get("REDASH_KYLIN_OFFSET", 0)) KYLIN_LIMIT = int(os.environ.get("REDASH_KYLIN_LIMIT", 50000)) -KYLIN_ACCEPT_PARTIAL = parse_boolean( - os.environ.get("REDASH_KYLIN_ACCEPT_PARTIAL", "false") -) +KYLIN_ACCEPT_PARTIAL = parse_boolean(os.environ.get("REDASH_KYLIN_ACCEPT_PARTIAL", "false")) # sqlparse SQLPARSE_FORMAT_OPTIONS = { @@ -530,15 +431,11 @@ def email_server_is_configured(): } # requests -REQUESTS_ALLOW_REDIRECTS = parse_boolean( - os.environ.get("REDASH_REQUESTS_ALLOW_REDIRECTS", "false") -) +REQUESTS_ALLOW_REDIRECTS = parse_boolean(os.environ.get("REDASH_REQUESTS_ALLOW_REDIRECTS", "false")) # Enforces CSRF token validation on API requests. # This is turned off by default to avoid breaking any existing deployments but it is highly recommended to turn this toggle on to prevent CSRF attacks. -ENFORCE_CSRF = parse_boolean( - os.environ.get("REDASH_ENFORCE_CSRF", "false") -) +ENFORCE_CSRF = parse_boolean(os.environ.get("REDASH_ENFORCE_CSRF", "false")) # Databricks diff --git a/redash/settings/dynamic_settings.py b/redash/settings/dynamic_settings.py index 1f15712238..706cf17531 100644 --- a/redash/settings/dynamic_settings.py +++ b/redash/settings/dynamic_settings.py @@ -1,5 +1,6 @@ from collections import defaultdict + # Replace this method with your own implementation in case you want to limit the time limit on certain queries or users. def query_time_limit(is_scheduled, user_id, org_id): from redash import settings @@ -58,6 +59,7 @@ def database_key_definitions(default): return definitions -# Since you can define custom primary key types using `database_key_definitions`, you may want to load certain extensions when creating the database. + +# Since you can define custom primary key types using `database_key_definitions`, you may want to load certain extensions when creating the database. # To do so, simply add the name of the extension you'd like to load to this list. -database_extensions = [] \ No newline at end of file +database_extensions = [] diff --git a/redash/settings/helpers.py b/redash/settings/helpers.py index 3fe95eecaa..1b5a5693c9 100644 --- a/redash/settings/helpers.py +++ b/redash/settings/helpers.py @@ -29,12 +29,14 @@ def parse_boolean(s): else: raise ValueError("Invalid boolean value %r" % s) + def cast_int_or_default(val, default=None): try: return int(val) except (ValueError, TypeError): return default + def int_or_none(value): if value is None: return value diff --git a/redash/settings/organization.py b/redash/settings/organization.py index f4a3d99818..87a2269a8a 100644 --- a/redash/settings/organization.py +++ b/redash/settings/organization.py @@ -1,18 +1,15 @@ import os + from .helpers import parse_boolean if os.environ.get("REDASH_SAML_LOCAL_METADATA_PATH") is not None: print("DEPRECATION NOTICE:\n") - print( - "SAML_LOCAL_METADATA_PATH is no longer supported. Only URL metadata is supported now, please update" - ) + print("SAML_LOCAL_METADATA_PATH is no longer supported. Only URL metadata is supported now, please update") print("your configuration and reload.") raise SystemExit(1) -PASSWORD_LOGIN_ENABLED = parse_boolean( - os.environ.get("REDASH_PASSWORD_LOGIN_ENABLED", "true") -) +PASSWORD_LOGIN_ENABLED = parse_boolean(os.environ.get("REDASH_PASSWORD_LOGIN_ENABLED", "true")) SAML_LOGIN_TYPE = os.environ.get("REDASH_SAML_AUTH_TYPE", "") SAML_METADATA_URL = os.environ.get("REDASH_SAML_METADATA_URL", "") @@ -30,30 +27,22 @@ TIME_FORMAT = os.environ.get("REDASH_TIME_FORMAT", "HH:mm") INTEGER_FORMAT = os.environ.get("REDASH_INTEGER_FORMAT", "0,0") FLOAT_FORMAT = os.environ.get("REDASH_FLOAT_FORMAT", "0,0.00") -MULTI_BYTE_SEARCH_ENABLED = parse_boolean( - os.environ.get("MULTI_BYTE_SEARCH_ENABLED", "false") -) +MULTI_BYTE_SEARCH_ENABLED = parse_boolean(os.environ.get("MULTI_BYTE_SEARCH_ENABLED", "false")) JWT_LOGIN_ENABLED = parse_boolean(os.environ.get("REDASH_JWT_LOGIN_ENABLED", "false")) JWT_AUTH_ISSUER = os.environ.get("REDASH_JWT_AUTH_ISSUER", "") JWT_AUTH_PUBLIC_CERTS_URL = os.environ.get("REDASH_JWT_AUTH_PUBLIC_CERTS_URL", "") JWT_AUTH_AUDIENCE = os.environ.get("REDASH_JWT_AUTH_AUDIENCE", "") -JWT_AUTH_ALGORITHMS = os.environ.get( - "REDASH_JWT_AUTH_ALGORITHMS", "HS256,RS256,ES256" -).split(",") +JWT_AUTH_ALGORITHMS = os.environ.get("REDASH_JWT_AUTH_ALGORITHMS", "HS256,RS256,ES256").split(",") JWT_AUTH_COOKIE_NAME = os.environ.get("REDASH_JWT_AUTH_COOKIE_NAME", "") JWT_AUTH_HEADER_NAME = os.environ.get("REDASH_JWT_AUTH_HEADER_NAME", "") -FEATURE_SHOW_PERMISSIONS_CONTROL = parse_boolean( - os.environ.get("REDASH_FEATURE_SHOW_PERMISSIONS_CONTROL", "false") -) +FEATURE_SHOW_PERMISSIONS_CONTROL = parse_boolean(os.environ.get("REDASH_FEATURE_SHOW_PERMISSIONS_CONTROL", "false")) SEND_EMAIL_ON_FAILED_SCHEDULED_QUERIES = parse_boolean( os.environ.get("REDASH_SEND_EMAIL_ON_FAILED_SCHEDULED_QUERIES", "false") ) HIDE_PLOTLY_MODE_BAR = parse_boolean(os.environ.get("HIDE_PLOTLY_MODE_BAR", "false")) -DISABLE_PUBLIC_URLS = parse_boolean( - os.environ.get("REDASH_DISABLE_PUBLIC_URLS", "false") -) +DISABLE_PUBLIC_URLS = parse_boolean(os.environ.get("REDASH_DISABLE_PUBLIC_URLS", "false")) settings = { "beacon_consent": None, diff --git a/redash/tasks/__init__.py b/redash/tasks/__init__.py index 4f68fe0ef9..4186d0e270 100644 --- a/redash/tasks/__init__.py +++ b/redash/tasks/__init__.py @@ -1,28 +1,31 @@ -from .general import ( +from rq.connections import pop_connection, push_connection + +from redash import rq_redis_connection +from redash.tasks.alerts import check_alerts_for_query +from redash.tasks.failure_report import send_aggregated_errors +from redash.tasks.general import ( record_event, - version_check, send_mail, sync_user_details, + version_check, ) -from .queries import ( +from redash.tasks.queries import ( + cleanup_query_results, + empty_schedules, enqueue_query, execute_query, refresh_queries, refresh_schemas, - cleanup_query_results, - empty_schedules, remove_ghost_locks, ) -from .alerts import check_alerts_for_query -from .failure_report import send_aggregated_errors -from .worker import Worker, Queue, Job -from .schedule import rq_scheduler, schedule_periodic_jobs, periodic_job_definitions - -from redash import rq_redis_connection -from rq.connections import push_connection, pop_connection +from redash.tasks.schedule import ( + periodic_job_definitions, + rq_scheduler, + schedule_periodic_jobs, +) +from redash.tasks.worker import Job, Queue, Worker def init_app(app): app.before_request(lambda: push_connection(rq_redis_connection)) app.teardown_request(lambda _: pop_connection()) - diff --git a/redash/tasks/alerts.py b/redash/tasks/alerts.py index 9fea0e4e22..e441899c13 100644 --- a/redash/tasks/alerts.py +++ b/redash/tasks/alerts.py @@ -1,8 +1,9 @@ -from flask import current_app import datetime -from redash.worker import job, get_job_logger -from redash import models, utils +from flask import current_app + +from redash import models, utils +from redash.worker import get_job_logger, job logger = get_job_logger(__name__) @@ -11,24 +12,17 @@ def notify_subscriptions(alert, new_state): host = utils.base_url(alert.query_rel.org) for subscription in alert.subscriptions: try: - subscription.notify( - alert, alert.query_rel, subscription.user, new_state, current_app, host - ) - except Exception as e: + subscription.notify(alert, alert.query_rel, subscription.user, new_state, current_app, host) + except Exception: logger.exception("Error with processing destination") def should_notify(alert, new_state): passed_rearm_threshold = False if alert.rearm and alert.last_triggered_at: - passed_rearm_threshold = ( - alert.last_triggered_at + datetime.timedelta(seconds=alert.rearm) - < utils.utcnow() - ) + passed_rearm_threshold = alert.last_triggered_at + datetime.timedelta(seconds=alert.rearm) < utils.utcnow() - return new_state != alert.state or ( - alert.state == models.Alert.TRIGGERED_STATE and passed_rearm_threshold - ) + return new_state != alert.state or (alert.state == models.Alert.TRIGGERED_STATE and passed_rearm_threshold) @job("default", timeout=300) @@ -49,13 +43,8 @@ def check_alerts_for_query(query_id): alert.last_triggered_at = utils.utcnow() models.db.session.commit() - if ( - old_state == models.Alert.UNKNOWN_STATE - and new_state == models.Alert.OK_STATE - ): - logger.debug( - "Skipping notification (previous state was unknown and now it's ok)." - ) + if old_state == models.Alert.UNKNOWN_STATE and new_state == models.Alert.OK_STATE: + logger.debug("Skipping notification (previous state was unknown and now it's ok).") continue if alert.muted: diff --git a/redash/tasks/databricks.py b/redash/tasks/databricks.py index 63849d9766..a9051a3825 100644 --- a/redash/tasks/databricks.py +++ b/redash/tasks/databricks.py @@ -1,9 +1,7 @@ -from rq.registry import FailedJobRegistry from redash import models, redis_connection -from redash.worker import job from redash.tasks.worker import Queue from redash.utils import json_dumps - +from redash.worker import job DATABRICKS_REDIS_EXPIRATION_TIME = 3600 @@ -24,14 +22,13 @@ def get_databricks_databases(data_source_id, redis_key): def get_database_tables_with_columns(data_source_id, database_name, redis_key): try: data_source = models.DataSource.get_by_id(data_source_id) - tables = data_source.query_runner.get_database_tables_with_columns( - database_name - ) + tables = data_source.query_runner.get_database_tables_with_columns(database_name) # check for tables since it doesn't return an error when the requested database doesn't exist if tables or redis_connection.exists(redis_key): redis_connection.set(redis_key, json_dumps(tables)) redis_connection.expire( - redis_key, DATABRICKS_REDIS_EXPIRATION_TIME, + redis_key, + DATABRICKS_REDIS_EXPIRATION_TIME, ) return {"schema": tables, "has_columns": True} except Exception: @@ -42,9 +39,7 @@ def get_database_tables_with_columns(data_source_id, database_name, redis_key): def get_databricks_tables(data_source_id, database_name): try: data_source = models.DataSource.get_by_id(data_source_id) - tables = data_source.query_runner.get_database_tables_with_columns( - database_name - ) + tables = data_source.query_runner.get_database_tables_with_columns(database_name) return {"schema": tables, "has_columns": False} except Exception: return {"error": {"code": 2, "message": "Error retrieving schema."}} diff --git a/redash/tasks/failure_report.py b/redash/tasks/failure_report.py index 0339f3107e..4b8de625d8 100644 --- a/redash/tasks/failure_report.py +++ b/redash/tasks/failure_report.py @@ -1,9 +1,10 @@ import datetime import re from collections import Counter + +from redash import models, redis_connection, settings from redash.tasks.general import send_mail -from redash import redis_connection, settings, models -from redash.utils import json_dumps, json_loads, base_url, render_template +from redash.utils import base_url, json_dumps, json_loads, render_template from redash.worker import get_job_logger logger = get_job_logger(__name__) @@ -53,13 +54,11 @@ def send_failure_report(user_id): "base_url": base_url(user.org), } - subject = "Redash failed to execute {} of your scheduled queries".format( - len(unique_errors.keys()) - ) + subject = f"Redash failed to execute {len(unique_errors.keys())} of your scheduled queries" html, text = [ render_template("emails/failures.{}".format(f), context) for f in ["html", "txt"] - ] + ] # fmt: skip send_mail.delay([user.email], subject, html, text) @@ -68,9 +67,7 @@ def send_failure_report(user_id): def notify_of_failure(message, query): subscribed = query.org.get_setting("send_email_on_failed_scheduled_queries") - exceeded_threshold = ( - query.schedule_failures >= settings.MAX_FAILURE_REPORTS_PER_QUERY - ) + exceeded_threshold = query.schedule_failures >= settings.MAX_FAILURE_REPORTS_PER_QUERY if subscribed and not query.user.is_disabled and not exceeded_threshold: redis_connection.lpush( @@ -81,9 +78,7 @@ def notify_of_failure(message, query): "name": query.name, "message": message, "schedule_failures": query.schedule_failures, - "failed_at": datetime.datetime.utcnow().strftime( - "%B %d, %Y %I:%M%p UTC" - ), + "failed_at": datetime.datetime.utcnow().strftime("%B %d, %Y %I:%M%p UTC"), } ), ) diff --git a/redash/tasks/general.py b/redash/tasks/general.py index a48e7fd347..f7e6fcb8cd 100644 --- a/redash/tasks/general.py +++ b/redash/tasks/general.py @@ -1,13 +1,12 @@ import requests -from datetime import datetime - from flask_mail import Message + from redash import mail, models, settings from redash.models import users -from redash.version_check import run_version_check -from redash.worker import job, get_job_logger -from redash.tasks.worker import Queue from redash.query_runner import NotSupported +from redash.tasks.worker import Queue +from redash.version_check import run_version_check +from redash.worker import get_job_logger, job logger = get_job_logger(__name__) diff --git a/redash/tasks/queries/__init__.py b/redash/tasks/queries/__init__.py index dcdc3bc8d9..6ca0132db2 100644 --- a/redash/tasks/queries/__init__.py +++ b/redash/tasks/queries/__init__.py @@ -1,8 +1,8 @@ +from .execution import enqueue_query, execute_query from .maintenance import ( - refresh_queries, - refresh_schemas, cleanup_query_results, empty_schedules, + refresh_queries, + refresh_schemas, remove_ghost_locks, ) -from .execution import execute_query, enqueue_query diff --git a/redash/tasks/queries/execution.py b/redash/tasks/queries/execution.py index 2fe592801f..e2432069b4 100644 --- a/redash/tasks/queries/execution.py +++ b/redash/tasks/queries/execution.py @@ -1,18 +1,18 @@ import signal import time -import redis +import redis from rq import get_current_job +from rq.exceptions import NoSuchJobError from rq.job import JobStatus from rq.timeouts import JobTimeoutException -from rq.exceptions import NoSuchJobError from redash import models, redis_connection, settings from redash.query_runner import InterruptException -from redash.tasks.worker import Queue, Job from redash.tasks.alerts import check_alerts_for_query from redash.tasks.failure_report import track_failure -from redash.utils import gen_query_hash, json_dumps, utcnow +from redash.tasks.worker import Job, Queue +from redash.utils import gen_query_hash, utcnow from redash.worker import get_job_logger logger = get_job_logger(__name__) @@ -27,9 +27,7 @@ def _unlock(query_hash, data_source_id): redis_connection.delete(_job_lock_id(query_hash, data_source_id)) -def enqueue_query( - query, data_source, user_id, is_api_key=False, scheduled_query=None, metadata={} -): +def enqueue_query(query, data_source, user_id, is_api_key=False, scheduled_query=None, metadata={}): query_hash = gen_query_hash(query) logger.info("Inserting job for %s with metadata=%s", query_hash, metadata) try_count = 0 @@ -79,9 +77,7 @@ def enqueue_query( queue_name = data_source.queue_name scheduled_query_id = None - time_limit = settings.dynamic_settings.query_time_limit( - scheduled_query, user_id, data_source.org_id - ) + time_limit = settings.dynamic_settings.query_time_limit(scheduled_query, user_id, data_source.org_id) metadata["Queue"] = queue_name queue = Queue(queue_name) @@ -103,9 +99,7 @@ def enqueue_query( if not scheduled_query: enqueue_kwargs["result_ttl"] = settings.JOB_EXPIRY_TIME - job = queue.enqueue( - execute_query, query, data_source.id, metadata, **enqueue_kwargs - ) + job = queue.enqueue(execute_query, query, data_source.id, metadata, **enqueue_kwargs) logger.info("[%s] Created new job: %s", query_hash, job.id) pipe.set( @@ -150,9 +144,7 @@ def _resolve_user(user_id, is_api_key, query_id): class QueryExecutor(object): - def __init__( - self, query, data_source_id, user_id, is_api_key, metadata, is_scheduled_query - ): + def __init__(self, query, data_source_id, user_id, is_api_key, metadata, is_scheduled_query): self.job = get_current_job() self.query = query self.data_source_id = data_source_id @@ -164,7 +156,7 @@ def __init__( models.Query.query.get(self.query_id) if self.query_id and self.query_id != "adhoc" else None - ) + ) # fmt: skip # Close DB connection to prevent holding a connection for a long time while the query is executing. models.db.session.close() @@ -252,7 +244,7 @@ def _annotate_query(self, query_runner): def _log_progress(self, state): logger.info( "job=execute_query state=%s query_hash=%s type=%s ds_id=%d " - "job_id=%s queue=%s query_id=%s username=%s", + "job_id=%s queue=%s query_id=%s username=%s", # fmt: skip state, self.query_hash, self.data_source.type, diff --git a/redash/tasks/queries/maintenance.py b/redash/tasks/queries/maintenance.py index cd039296e7..1336af4790 100644 --- a/redash/tasks/queries/maintenance.py +++ b/redash/tasks/queries/maintenance.py @@ -2,15 +2,16 @@ import time from rq.timeouts import JobTimeoutException + from redash import models, redis_connection, settings, statsd_client from redash.models.parameterized_query import ( InvalidParameterError, QueryDetachedFromDataSourceError, ) +from redash.monitor import rq_job_ids from redash.tasks.failure_report import track_failure from redash.utils import json_dumps, sentry -from redash.worker import job, get_job_logger -from redash.monitor import rq_job_ids +from redash.worker import get_job_logger, job from .execution import enqueue_query @@ -56,16 +57,14 @@ def _apply_default_parameters(query): try: return query.parameterized.apply(parameters).query except InvalidParameterError as e: - error = u"Skipping refresh of {} because of invalid parameters: {}".format( - query.id, str(e) - ) + error = f"Skipping refresh of {query.id} because of invalid parameters: {str(e)}" track_failure(query, error) raise except QueryDetachedFromDataSourceError as e: error = ( - "Skipping refresh of {} because a related dropdown " - "query ({}) is unattached to any datasource." - ).format(query.id, e.query_id) + f"Skipping refresh of {query.id} because a related dropdown " + f"query ({e.query_id}) is unattached to any datasource." + ) track_failure(query, error) raise else: @@ -78,9 +77,7 @@ class RefreshQueriesError(Exception): def _apply_auto_limit(query_text, query): should_apply_auto_limit = query.options.get("apply_auto_limit", False) - return query.data_source.query_runner.apply_auto_limit( - query_text, should_apply_auto_limit - ) + return query.data_source.query_runner.apply_auto_limit(query_text, should_apply_auto_limit) def refresh_queries(): @@ -132,13 +129,9 @@ def cleanup_query_results(): settings.QUERY_RESULTS_CLEANUP_MAX_AGE, ) - unused_query_results = models.QueryResult.unused( - settings.QUERY_RESULTS_CLEANUP_MAX_AGE - ) + unused_query_results = models.QueryResult.unused(settings.QUERY_RESULTS_CLEANUP_MAX_AGE) deleted_count = models.QueryResult.query.filter( - models.QueryResult.id.in_( - unused_query_results.limit(settings.QUERY_RESULTS_CLEANUP_COUNT).subquery() - ) + models.QueryResult.id.in_(unused_query_results.limit(settings.QUERY_RESULTS_CLEANUP_COUNT).subquery()) ).delete(synchronize_session=False) models.db.session.commit() logger.info("Deleted %d unused query results.", deleted_count) @@ -165,30 +158,28 @@ def remove_ghost_locks(): @job("schemas") def refresh_schema(data_source_id): ds = models.DataSource.get_by_id(data_source_id) - logger.info(u"task=refresh_schema state=start ds_id=%s", ds.id) + logger.info("task=refresh_schema state=start ds_id=%s", ds.id) start_time = time.time() try: ds.get_schema(refresh=True) logger.info( - u"task=refresh_schema state=finished ds_id=%s runtime=%.2f", + "task=refresh_schema state=finished ds_id=%s runtime=%.2f", ds.id, time.time() - start_time, ) statsd_client.incr("refresh_schema.success") except JobTimeoutException: logger.info( - u"task=refresh_schema state=timeout ds_id=%s runtime=%.2f", + "task=refresh_schema state=timeout ds_id=%s runtime=%.2f", ds.id, time.time() - start_time, ) statsd_client.incr("refresh_schema.timeout") except Exception: - logger.warning( - u"Failed refreshing schema for the data source: %s", ds.name, exc_info=1 - ) + logger.warning("Failed refreshing schema for the data source: %s", ds.name, exc_info=1) statsd_client.incr("refresh_schema.error") logger.info( - u"task=refresh_schema state=failed ds_id=%s runtime=%.2f", + "task=refresh_schema state=failed ds_id=%s runtime=%.2f", ds.id, time.time() - start_time, ) @@ -198,34 +189,26 @@ def refresh_schemas(): """ Refreshes the data sources schemas. """ - blacklist = [ - int(ds_id) - for ds_id in redis_connection.smembers("data_sources:schema:blacklist") - if ds_id - ] + blacklist = [int(ds_id) for ds_id in redis_connection.smembers("data_sources:schema:blacklist") if ds_id] global_start_time = time.time() - logger.info(u"task=refresh_schemas state=start") + logger.info("task=refresh_schemas state=start") for ds in models.DataSource.query: if ds.paused: logger.info( - u"task=refresh_schema state=skip ds_id=%s reason=paused(%s)", + "task=refresh_schema state=skip ds_id=%s reason=paused(%s)", ds.id, ds.pause_reason, ) elif ds.id in blacklist: - logger.info( - u"task=refresh_schema state=skip ds_id=%s reason=blacklist", ds.id - ) + logger.info("task=refresh_schema state=skip ds_id=%s reason=blacklist", ds.id) elif ds.org.is_disabled: - logger.info( - u"task=refresh_schema state=skip ds_id=%s reason=org_disabled", ds.id - ) + logger.info("task=refresh_schema state=skip ds_id=%s reason=org_disabled", ds.id) else: refresh_schema.delay(ds.id) logger.info( - u"task=refresh_schemas state=finish total_runtime=%.2f", + "task=refresh_schemas state=finish total_runtime=%.2f", time.time() - global_start_time, ) diff --git a/redash/tasks/schedule.py b/redash/tasks/schedule.py index c49f9050e1..8de5261826 100644 --- a/redash/tasks/schedule.py +++ b/redash/tasks/schedule.py @@ -1,24 +1,22 @@ -from __future__ import absolute_import -import logging import hashlib import json +import logging from datetime import datetime, timedelta from rq.job import Job from rq_scheduler import Scheduler -from redash import settings, rq_redis_connection, statsd_client -from redash.tasks import ( - sync_user_details, - refresh_queries, - remove_ghost_locks, +from redash import rq_redis_connection, settings +from redash.tasks.failure_report import send_aggregated_errors +from redash.tasks.general import sync_user_details, version_check +from redash.tasks.queries import ( + cleanup_query_results, empty_schedules, + refresh_queries, refresh_schemas, - cleanup_query_results, - version_check, - send_aggregated_errors, - Queue, + remove_ghost_locks, ) +from redash.tasks.worker import Queue logger = logging.getLogger(__name__) @@ -31,9 +29,7 @@ class StatsdRecordingScheduler(Scheduler): queue_class = Queue -rq_scheduler = StatsdRecordingScheduler( - connection=rq_redis_connection, queue_name="periodic", interval=5 -) +rq_scheduler = StatsdRecordingScheduler(connection=rq_redis_connection, queue_name="periodic", interval=5) def job_id(kwargs): @@ -70,7 +66,7 @@ def periodic_job_definitions(): { "func": refresh_schemas, "interval": timedelta(minutes=settings.SCHEMAS_REFRESH_SCHEDULE), - }, + }, { "func": sync_user_details, "timeout": 60, @@ -99,14 +95,11 @@ def schedule_periodic_jobs(jobs): job_definitions = [prep(job) for job in jobs] jobs_to_clean_up = Job.fetch_many( - set([job.id for job in rq_scheduler.get_jobs()]) - - set([job_id(job) for job in job_definitions]), + set([job.id for job in rq_scheduler.get_jobs()]) - set([job_id(job) for job in job_definitions]), rq_redis_connection, ) - jobs_to_schedule = [ - job for job in job_definitions if job_id(job) not in rq_scheduler - ] + jobs_to_schedule = [job for job in job_definitions if job_id(job) not in rq_scheduler] for job in jobs_to_clean_up: logger.info("Removing %s (%s) from schedule.", job.id, job.func_name) diff --git a/redash/tasks/worker.py b/redash/tasks/worker.py index 6a7d19379a..10a83b8138 100644 --- a/redash/tasks/worker.py +++ b/redash/tasks/worker.py @@ -1,13 +1,17 @@ import errno import os import signal -import time -from redash import statsd_client -from rq import Queue as BaseQueue, get_current_job -from rq.worker import HerokuWorker # HerokuWorker implements graceful shutdown on SIGTERM + +from rq import Queue as BaseQueue +from rq.job import Job as BaseJob +from rq.job import JobStatus +from rq.timeouts import HorseMonitorTimeoutException, UnixSignalDeathPenalty from rq.utils import utcnow -from rq.timeouts import UnixSignalDeathPenalty, HorseMonitorTimeoutException -from rq.job import Job as BaseJob, JobStatus +from rq.worker import ( + HerokuWorker, # HerokuWorker implements graceful shutdown on SIGTERM +) + +from redash import statsd_client class CancellableJob(BaseJob): @@ -110,9 +114,7 @@ def monitor_work_horse(self, job, queue): job.started_at = utcnow() while True: try: - with UnixSignalDeathPenalty( - self.job_monitoring_interval, HorseMonitorTimeoutException - ): + with UnixSignalDeathPenalty(self.job_monitoring_interval, HorseMonitorTimeoutException): retpid, ret_val = os.waitpid(self._horse_pid, 0) break except HorseMonitorTimeoutException: @@ -145,7 +147,6 @@ def monitor_work_horse(self, job, queue): if job_status is None: # Job completed and its ttl has expired return if job_status not in [JobStatus.FINISHED, JobStatus.FAILED]: - if not job.ended_at: job.ended_at = utcnow() @@ -153,7 +154,7 @@ def monitor_work_horse(self, job, queue): self.log.warning( ( "Moving job to FailedJobRegistry " - "(work-horse terminated unexpectedly; waitpid returned {})" + "(work-horse terminated unexpectedly; waitpid returned {})" # fmt: skip ).format(ret_val) ) @@ -161,7 +162,7 @@ def monitor_work_horse(self, job, queue): job, queue=queue, exc_string="Work-horse process was terminated unexpectedly " - "(waitpid returned %s)" % ret_val, + "(waitpid returned %s)" % ret_val, # fmt: skip ) diff --git a/redash/utils/__init__.py b/redash/utils/__init__.py index 26eae7dfa1..0dad9111a6 100644 --- a/redash/utils/__init__.py +++ b/redash/utils/__init__.py @@ -1,14 +1,14 @@ +import binascii import codecs -import io import csv import datetime import decimal import hashlib +import io import os import random import re import uuid -import binascii import pystache import pytz @@ -16,12 +16,13 @@ import sqlparse from flask import current_app from funcy import select_values -from redash import settings from sqlalchemy.orm.query import Query +from redash import settings + from .human_time import parse_human_time -COMMENTS_REGEX = re.compile("/\*.*?\*/") +COMMENTS_REGEX = re.compile(r"/\*.*?\*/") WRITER_ENCODING = os.environ.get("REDASH_CSV_WRITER_ENCODING", "utf-8") WRITER_ERRORS = os.environ.get("REDASH_CSV_WRITER_ERRORS", "strict") @@ -45,7 +46,7 @@ def dt_from_timestamp(timestamp, tz_aware=True): def slugify(s): - return re.sub("[^a-z0-9_\-]+", "-", s.lower()) + return re.sub(r"[^a-z0-9_\-]+", "-", s.lower()) def gen_query_hash(sql): @@ -116,7 +117,7 @@ def json_dumps(data, *args, **kwargs): kwargs.setdefault("encoding", None) # Float value nan or inf in Python should be render to None or null in json. # Using ignore_nan = False will make Python render nan as NaN, leading to parse error in front-end - kwargs.setdefault('ignore_nan', True) + kwargs.setdefault("ignore_nan", True) return simplejson.dumps(data, *args, **kwargs) @@ -193,8 +194,8 @@ def filter_none(d): def to_filename(s): - s = re.sub('[<>:"\\\/|?*]+', " ", s, flags=re.UNICODE) - s = re.sub("\s+", "_", s, flags=re.UNICODE) + s = re.sub(r'[<>:"\\\/|?*]+', " ", s, flags=re.UNICODE) + s = re.sub(r"\s+", "_", s, flags=re.UNICODE) return s.strip("_") @@ -207,7 +208,7 @@ def wrapper(K): def render_template(path, context): - """ Render a template with context, without loading the entire app context. + """Render a template with context, without loading the entire app context. Using Flask's `render_template` function requires the entire app context to load, which in turn triggers any function decorated with the `context_processor` decorator, which is not explicitly required for rendering purposes. """ diff --git a/redash/utils/configuration.py b/redash/utils/configuration.py index 99387b7912..93d3f81b07 100644 --- a/redash/utils/configuration.py +++ b/redash/utils/configuration.py @@ -1,5 +1,6 @@ -import jsonschema import copy + +import jsonschema from jsonschema import ValidationError from sqlalchemy.ext.mutable import Mutable diff --git a/redash/utils/human_time.py b/redash/utils/human_time.py index 0fa1dfe81f..0a7a8b829f 100644 --- a/redash/utils/human_time.py +++ b/redash/utils/human_time.py @@ -1,6 +1,7 @@ -import parsedatetime -from time import mktime from datetime import datetime +from time import mktime + +import parsedatetime cal = parsedatetime.Calendar() diff --git a/redash/utils/requests_session.py b/redash/utils/requests_session.py index f38133a9a4..c562894181 100644 --- a/redash/utils/requests_session.py +++ b/redash/utils/requests_session.py @@ -1,13 +1,13 @@ +from advocate.exceptions import UnacceptableAddressException # noqa: F401 + from redash import settings -from advocate.exceptions import UnacceptableAddressException if settings.ENFORCE_PRIVATE_ADDRESS_BLOCK: import advocate as requests_or_advocate else: import requests as requests_or_advocate - class ConfiguredSession(requests_or_advocate.Session): def request(self, *args, **kwargs): if not settings.REQUESTS_ALLOW_REDIRECTS: diff --git a/redash/utils/sentry.py b/redash/utils/sentry.py index 9311069500..844638aa7b 100644 --- a/redash/utils/sentry.py +++ b/redash/utils/sentry.py @@ -1,13 +1,15 @@ import os + import sentry_sdk from funcy import iffy from sentry_sdk.integrations.flask import FlaskIntegration -from sentry_sdk.integrations.sqlalchemy import SqlalchemyIntegration from sentry_sdk.integrations.redis import RedisIntegration from sentry_sdk.integrations.rq import RqIntegration -from redash import settings, __version__ +from sentry_sdk.integrations.sqlalchemy import SqlalchemyIntegration + +from redash import __version__, settings -TRACES_SAMPLE_RATE = float(os.environ.get('SENTRY_TRACES_SAMPLE_RATE', '0.0')) +TRACES_SAMPLE_RATE = float(os.environ.get("SENTRY_TRACES_SAMPLE_RATE", "0.0")) NON_REPORTED_EXCEPTIONS = ["QueryExecutionError"] @@ -39,4 +41,4 @@ def init(): ) -capture_exception = iffy(lambda _: settings.SENTRY_DSN, sentry_sdk.capture_exception) \ No newline at end of file +capture_exception = iffy(lambda _: settings.SENTRY_DSN, sentry_sdk.capture_exception) diff --git a/redash/version_check.py b/redash/version_check.py index d28b95cff5..52cffe0ff5 100644 --- a/redash/version_check.py +++ b/redash/version_check.py @@ -48,20 +48,12 @@ def usage_data(): data_sources_query = "SELECT type, count(0) FROM data_sources GROUP by 1" visualizations_query = "SELECT type, count(0) FROM visualizations GROUP by 1" - destinations_query = ( - "SELECT type, count(0) FROM notification_destinations GROUP by 1" - ) + destinations_query = "SELECT type, count(0) FROM notification_destinations GROUP by 1" data = {name: value for (name, value) in db.session.execute(counts_query)} - data["data_sources"] = { - name: value for (name, value) in db.session.execute(data_sources_query) - } - data["visualization_types"] = { - name: value for (name, value) in db.session.execute(visualizations_query) - } - data["destination_types"] = { - name: value for (name, value) in db.session.execute(destinations_query) - } + data["data_sources"] = {name: value for (name, value) in db.session.execute(data_sources_query)} + data["visualization_types"] = {name: value for (name, value) in db.session.execute(visualizations_query)} + data["destination_types"] = {name: value for (name, value) in db.session.execute(destinations_query)} return data @@ -87,9 +79,7 @@ def run_version_check(): except requests.RequestException: logging.exception("Failed checking for new version.") except (ValueError, KeyError): - logging.exception( - "Failed checking for new version (probably bad/non-JSON response)." - ) + logging.exception("Failed checking for new version (probably bad/non-JSON response).") def reset_new_version_status(): diff --git a/redash/worker.py b/redash/worker.py index 8bed64e40c..c15c4e2b7c 100644 --- a/redash/worker.py +++ b/redash/worker.py @@ -1,21 +1,12 @@ -from datetime import timedelta -from functools import partial - -from flask import current_app import logging +from functools import partial from rq import get_current_job from rq.decorators import job as rq_job -from redash import ( - create_app, - settings, - redis_connection, - rq_redis_connection, -) +from redash import rq_redis_connection, settings from redash.tasks.worker import Queue as RedashQueue - default_operational_queues = ["periodic", "emails", "default"] default_query_queues = ["scheduled_queries", "queries", "schemas"] default_queues = default_operational_queues + default_query_queues @@ -29,7 +20,9 @@ class StatsdRecordingJobDecorator(rq_job): # noqa queue_class = RedashQueue -job = partial(StatsdRecordingJobDecorator, connection=rq_redis_connection, failure_ttl=settings.JOB_DEFAULT_FAILURE_TTL) +job = partial( + StatsdRecordingJobDecorator, connection=rq_redis_connection, failure_ttl=settings.JOB_DEFAULT_FAILURE_TTL +) class CurrentJobFilter(logging.Filter): diff --git a/setup.cfg b/setup.cfg index 9fa9f5c923..d6cee45ae1 100644 --- a/setup.cfg +++ b/setup.cfg @@ -2,6 +2,9 @@ max-line-length = 120 [flake8] -ignore = E501 -exclude = .git -max-complexity = 10 +ignore = E501, W503 +extend-ignore = E203 +exclude = .git,viz-lib,node_modules,migrations +max-complexity = 15 +per-file-ignores = + __init__.py: F401 diff --git a/tests/__init__.py b/tests/__init__.py index 89c18f8394..1b6f7be9c0 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -4,13 +4,9 @@ from contextlib import contextmanager from unittest import TestCase -os.environ["REDASH_REDIS_URL"] = os.environ.get( - "REDASH_REDIS_URL", "redis://localhost:6379/0" -).replace("/0", "/5") +os.environ["REDASH_REDIS_URL"] = os.environ.get("REDASH_REDIS_URL", "redis://localhost:6379/0").replace("/0", "/5") # Use different url for RQ to avoid DB being cleaned up: -os.environ["RQ_REDIS_URL"] = os.environ.get( - "REDASH_REDIS_URL", "redis://localhost:6379/0" -).replace("/5", "/6") +os.environ["RQ_REDIS_URL"] = os.environ.get("REDASH_REDIS_URL", "redis://localhost:6379/0").replace("/5", "/6") # Dummy values for oauth login os.environ["REDASH_GOOGLE_CLIENT_ID"] = "dummy" @@ -22,11 +18,11 @@ os.environ["REDASH_ENFORCE_CSRF"] = "false" -from redash import limiter, redis_connection -from redash.app import create_app -from redash.models import db -from redash.utils import json_dumps -from tests.factories import Factory, user_factory +from redash import limiter, redis_connection # noqa: E402 +from redash.app import create_app # noqa: E402 +from redash.models import db # noqa: E402 +from redash.utils import json_dumps # noqa: E402 +from tests.factories import Factory, user_factory # noqa: E402 logging.disable(logging.INFO) logging.getLogger("metrics").setLevel(logging.ERROR) @@ -125,9 +121,7 @@ def post_request(self, path, data=None, org=None, headers=None): def assertResponseEqual(self, expected, actual): for k, v in expected.items(): - if isinstance(v, datetime.datetime) or isinstance( - actual[k], datetime.datetime - ): + if isinstance(v, datetime.datetime) or isinstance(actual[k], datetime.datetime): continue if isinstance(v, list): diff --git a/tests/factories.py b/tests/factories.py index e84ec37c08..3f676e4a50 100644 --- a/tests/factories.py +++ b/tests/factories.py @@ -1,4 +1,5 @@ from passlib.apps import custom_app_context as pwd_context + import redash.models from redash.models import db from redash.permissions import ACCESS_TYPE_MODIFY @@ -190,19 +191,13 @@ def user(self): def data_source(self): if self._data_source is None: self._data_source = data_source_factory.create(org=self.org) - db.session.add( - redash.models.DataSourceGroup( - group=self.default_group, data_source=self._data_source - ) - ) + db.session.add(redash.models.DataSourceGroup(group=self.default_group, data_source=self._data_source)) return self._data_source def create_org(self, **kwargs): org = org_factory.create(**kwargs) - self.create_group( - org=org, type=redash.models.Group.BUILTIN_GROUP, name="default" - ) + self.create_group(org=org, type=redash.models.Group.BUILTIN_GROUP, name="default") self.create_group( org=org, type=redash.models.Group.BUILTIN_GROUP, @@ -270,11 +265,7 @@ def create_data_source(self, **kwargs): data_source = data_source_factory.create(**args) if group: - db.session.add( - redash.models.DataSourceGroup( - group=group, data_source=data_source, view_only=view_only - ) - ) + db.session.add(redash.models.DataSourceGroup(group=group, data_source=data_source, view_only=view_only)) return data_source diff --git a/tests/handlers/test_alerts.py b/tests/handlers/test_alerts.py index 3988c42704..6bafcf34c0 100644 --- a/tests/handlers/test_alerts.py +++ b/tests/handlers/test_alerts.py @@ -35,9 +35,8 @@ def test_returns_404_if_admin_from_another_org(self): class TestAlertResourcePost(BaseTestCase): def test_updates_alert(self): alert = self.factory.create_alert() - rv = self.make_request( - "post", "/api/alerts/{}".format(alert.id), data={"name": "Testing"} - ) + rv = self.make_request("post", "/api/alerts/{}".format(alert.id), data={"name": "Testing"}) + self.assertEqual(rv.status_code, 200) class TestAlertResourceDelete(BaseTestCase): @@ -70,9 +69,7 @@ def test_returns_404_for_unauthorized_users(self): second_org = self.factory.create_org() second_org_admin = self.factory.create_admin(org=second_org) - rv = self.make_request( - "delete", "/api/alerts/{}".format(alert.id), user=second_org_admin - ) + rv = self.make_request("delete", "/api/alerts/{}".format(alert.id), user=second_org_admin) self.assertEqual(rv.status_code, 404) @@ -89,9 +86,7 @@ def test_returns_all_alerts(self): def test_returns_alerts_only_from_users_groups(self): alert = self.factory.create_alert() query = self.factory.create_query( - data_source=self.factory.create_data_source( - group=self.factory.create_group() - ) + data_source=self.factory.create_data_source(group=self.factory.create_group()) ) alert2 = self.factory.create_alert(query_rel=query) rv = self.make_request("get", "/api/alerts") diff --git a/tests/handlers/test_authentication.py b/tests/handlers/test_authentication.py index 169ae5c88e..d2aec4386d 100644 --- a/tests/handlers/test_authentication.py +++ b/tests/handlers/test_authentication.py @@ -1,11 +1,11 @@ import time import mock -from tests import BaseTestCase -from redash import settings, limiter +from redash import limiter, settings from redash.authentication.account import invite_token from redash.models import User +from tests import BaseTestCase class TestResetPassword(BaseTestCase): @@ -18,7 +18,6 @@ def test_shows_reset_password_form(self): class TestInvite(BaseTestCase): def test_expired_invite_token(self): - with mock.patch("time.time") as patched_time: patched_time.return_value = time.time() - (7 * 24 * 3600) - 10 token = invite_token(self.factory.user) @@ -50,16 +49,12 @@ def test_already_active_user(self): class TestInvitePost(BaseTestCase): def test_empty_password(self): token = invite_token(self.factory.user) - response = self.post_request( - "/invite/{}".format(token), data={"password": ""}, org=self.factory.org - ) + response = self.post_request("/invite/{}".format(token), data={"password": ""}, org=self.factory.org) self.assertEqual(response.status_code, 400) def test_invalid_password(self): token = invite_token(self.factory.user) - response = self.post_request( - "/invite/{}".format(token), data={"password": "1234"}, org=self.factory.org - ) + response = self.post_request("/invite/{}".format(token), data={"password": "1234"}, org=self.factory.org) self.assertEqual(response.status_code, 400) def test_bad_token(self): @@ -134,6 +129,4 @@ def test_throttle_password_reset(self): class TestSession(BaseTestCase): # really simple test just to trigger this route def test_get(self): - self.make_request( - "get", "/default/api/session", user=self.factory.user, org=False - ) + self.make_request("get", "/default/api/session", user=self.factory.user, org=False) diff --git a/tests/handlers/test_dashboards.py b/tests/handlers/test_dashboards.py index f89e553b4b..748f5fc36a 100644 --- a/tests/handlers/test_dashboards.py +++ b/tests/handlers/test_dashboards.py @@ -1,9 +1,8 @@ -from tests import BaseTestCase - -from redash.models import ApiKey, Dashboard, AccessPermission, db +from redash.models import AccessPermission, ApiKey, Dashboard, db from redash.permissions import ACCESS_TYPE_MODIFY from redash.serializers import serialize_dashboard from redash.utils import json_loads +from tests import BaseTestCase class TestDashboardListResource(BaseTestCase): @@ -25,14 +24,12 @@ def test_returns_dashboards(self): rv = self.make_request("get", "/api/dashboards") assert len(rv.json["results"]) == 3 - assert set([result["id"] for result in rv.json["results"]]) == set( - [d1.id, d2.id, d3.id] - ) + assert set([result["id"] for result in rv.json["results"]]) == set([d1.id, d2.id, d3.id]) def test_filters_with_tags(self): d1 = self.factory.create_dashboard(tags=["test"]) - d2 = self.factory.create_dashboard() - d3 = self.factory.create_dashboard() + self.factory.create_dashboard() + self.factory.create_dashboard() rv = self.make_request("get", "/api/dashboards?tags=test") assert len(rv.json["results"]) == 1 @@ -41,13 +38,11 @@ def test_filters_with_tags(self): def test_search_term(self): d1 = self.factory.create_dashboard(name="Sales") d2 = self.factory.create_dashboard(name="Q1 sales") - d3 = self.factory.create_dashboard(name="Ops") + self.factory.create_dashboard(name="Ops") rv = self.make_request("get", "/api/dashboards?q=sales") assert len(rv.json["results"]) == 2 - assert set([result["id"] for result in rv.json["results"]]) == set( - [d1.id, d2.id] - ) + assert set([result["id"] for result in rv.json["results"]]) == set([d1.id, d2.id]) class TestDashboardResourceGet(BaseTestCase): @@ -74,14 +69,10 @@ def test_get_dashboard_with_slug(self): def test_get_dashboard_filters_unauthorized_widgets(self): dashboard = self.factory.create_dashboard() - restricted_ds = self.factory.create_data_source( - group=self.factory.create_group() - ) + restricted_ds = self.factory.create_data_source(group=self.factory.create_group()) query = self.factory.create_query(data_source=restricted_ds) vis = self.factory.create_visualization(query_rel=query) - restricted_widget = self.factory.create_widget( - visualization=vis, dashboard=dashboard - ) + restricted_widget = self.factory.create_widget(visualization=vis, dashboard=dashboard) widget = self.factory.create_widget(dashboard=dashboard) dashboard.layout = "[[{}, {}]]".format(widget.id, restricted_widget.id) db.session.commit() @@ -147,9 +138,7 @@ def test_works_for_non_owner_with_permission(self): ) self.assertEqual(rv.status_code, 403) - AccessPermission.grant( - obj=d, access_type=ACCESS_TYPE_MODIFY, grantee=user, grantor=d.user - ) + AccessPermission.grant(obj=d, access_type=ACCESS_TYPE_MODIFY, grantee=user, grantor=d.user) rv = self.make_request( "post", @@ -185,16 +174,12 @@ def test_requires_admin_or_owner(self): dashboard = self.factory.create_dashboard() user = self.factory.create_user() - res = self.make_request( - "post", "/api/dashboards/{}/share".format(dashboard.id), user=user - ) + res = self.make_request("post", "/api/dashboards/{}/share".format(dashboard.id), user=user) self.assertEqual(res.status_code, 403) user.group_ids.append(self.factory.org.admin_group.id) - res = self.make_request( - "post", "/api/dashboards/{}/share".format(dashboard.id), user=user - ) + res = self.make_request("post", "/api/dashboards/{}/share".format(dashboard.id), user=user) self.assertEqual(res.status_code, 200) @@ -203,32 +188,24 @@ def test_disables_api_key(self): dashboard = self.factory.create_dashboard() ApiKey.create_for_object(dashboard, self.factory.user) - res = self.make_request( - "delete", "/api/dashboards/{}/share".format(dashboard.id) - ) + res = self.make_request("delete", "/api/dashboards/{}/share".format(dashboard.id)) self.assertEqual(res.status_code, 200) self.assertIsNone(ApiKey.get_by_object(dashboard)) def test_ignores_when_no_api_key_exists(self): dashboard = self.factory.create_dashboard() - res = self.make_request( - "delete", "/api/dashboards/{}/share".format(dashboard.id) - ) + res = self.make_request("delete", "/api/dashboards/{}/share".format(dashboard.id)) self.assertEqual(res.status_code, 200) def test_requires_admin_or_owner(self): dashboard = self.factory.create_dashboard() user = self.factory.create_user() - res = self.make_request( - "delete", "/api/dashboards/{}/share".format(dashboard.id), user=user - ) + res = self.make_request("delete", "/api/dashboards/{}/share".format(dashboard.id), user=user) self.assertEqual(res.status_code, 403) user.group_ids.append(self.factory.org.admin_group.id) - res = self.make_request( - "delete", "/api/dashboards/{}/share".format(dashboard.id), user=user - ) + res = self.make_request("delete", "/api/dashboards/{}/share".format(dashboard.id), user=user) self.assertEqual(res.status_code, 200) diff --git a/tests/handlers/test_data_sources.py b/tests/handlers/test_data_sources.py index b500e6550c..6f8d87d42e 100644 --- a/tests/handlers/test_data_sources.py +++ b/tests/handlers/test_data_sources.py @@ -1,9 +1,7 @@ from funcy import pairwise -from tests import BaseTestCase -from mock import patch from redash.models import DataSource -from redash.query_runner.pg import PostgreSQL +from tests import BaseTestCase class TestDataSourceGetSchema(BaseTestCase): @@ -71,9 +69,7 @@ def test_returns_only_view_only_for_users_without_list_permissions(self): data_source = self.factory.create_data_source(group=group, view_only=True) user = self.factory.create_user(group_ids=[group.id]) - rv = self.make_request( - "get", "/api/data_sources/{}".format(data_source.id), user=user - ) + rv = self.make_request("get", "/api/data_sources/{}".format(data_source.id), user=user) self.assertEqual(rv.status_code, 200) self.assertEqual(rv.json, {"view_only": True}) @@ -132,9 +128,7 @@ def test_deletes_the_data_source(self): data_source = self.factory.create_data_source() admin = self.factory.create_admin() - rv = self.make_request( - "delete", "/api/data_sources/{}".format(data_source.id), user=admin - ) + rv = self.make_request("delete", "/api/data_sources/{}".format(data_source.id), user=admin) self.assertEqual(204, rv.status_code) self.assertIsNone(DataSource.query.get(data_source.id)) @@ -146,9 +140,7 @@ def test_returns_400_when_missing_fields(self): rv = self.make_request("post", "/api/data_sources", user=admin) self.assertEqual(rv.status_code, 400) - rv = self.make_request( - "post", "/api/data_sources", data={"name": "DS 1"}, user=admin - ) + rv = self.make_request("post", "/api/data_sources", data={"name": "DS 1"}, user=admin) self.assertEqual(rv.status_code, 400) @@ -198,25 +190,17 @@ def test_pause_sets_reason(self): ) self.assertEqual(rv.status_code, 200) self.assertEqual(DataSource.query.get(self.factory.data_source.id).paused, True) - self.assertEqual( - DataSource.query.get(self.factory.data_source.id).pause_reason, "testing" - ) + self.assertEqual(DataSource.query.get(self.factory.data_source.id).pause_reason, "testing") rv = self.make_request( "post", - "/api/data_sources/{}/pause?reason=test".format( - self.factory.data_source.id - ), + "/api/data_sources/{}/pause?reason=test".format(self.factory.data_source.id), user=admin, ) - self.assertEqual( - DataSource.query.get(self.factory.data_source.id).pause_reason, "test" - ) + self.assertEqual(DataSource.query.get(self.factory.data_source.id).pause_reason, "test") def test_requires_admin(self): - rv = self.make_request( - "post", "/api/data_sources/{}/pause".format(self.factory.data_source.id) - ) + rv = self.make_request("post", "/api/data_sources/{}/pause".format(self.factory.data_source.id)) self.assertEqual(rv.status_code, 403) @@ -230,12 +214,8 @@ def test_resumes_data_source(self): user=admin, ) self.assertEqual(rv.status_code, 200) - self.assertEqual( - DataSource.query.get(self.factory.data_source.id).paused, False - ) + self.assertEqual(DataSource.query.get(self.factory.data_source.id).paused, False) def test_requires_admin(self): - rv = self.make_request( - "delete", "/api/data_sources/{}/pause".format(self.factory.data_source.id) - ) + rv = self.make_request("delete", "/api/data_sources/{}/pause".format(self.factory.data_source.id)) self.assertEqual(rv.status_code, 403) diff --git a/tests/handlers/test_destinations.py b/tests/handlers/test_destinations.py index f901ac2ff3..3addbcbd1d 100644 --- a/tests/handlers/test_destinations.py +++ b/tests/handlers/test_destinations.py @@ -1,22 +1,19 @@ -from tests import BaseTestCase -from mock import patch - from redash.models import NotificationDestination -from redash.destinations.slack import Slack +from tests import BaseTestCase class TestDestinationListResource(BaseTestCase): def test_get_returns_all_destinations(self): - d1 = self.factory.create_destination() - d2 = self.factory.create_destination() + self.factory.create_destination() + self.factory.create_destination() rv = self.make_request("get", "/api/destinations", user=self.factory.user) self.assertEqual(len(rv.json), 2) def test_get_returns_only_destinations_of_current_org(self): - d1 = self.factory.create_destination() - d2 = self.factory.create_destination() - d3 = self.factory.create_destination(org=self.factory.create_org()) + self.factory.create_destination() + self.factory.create_destination() + self.factory.create_destination(org=self.factory.create_org()) rv = self.make_request("get", "/api/destinations", user=self.factory.user) self.assertEqual(len(rv.json), 2) @@ -27,9 +24,7 @@ def test_post_creates_new_destination(self): "name": "Test", "type": "email", } - rv = self.make_request( - "post", "/api/destinations", user=self.factory.create_admin(), data=data - ) + rv = self.make_request("post", "/api/destinations", user=self.factory.create_admin(), data=data) self.assertEqual(rv.status_code, 200) pass @@ -39,9 +34,7 @@ def test_post_requires_admin(self): "name": "Test", "type": "email", } - rv = self.make_request( - "post", "/api/destinations", user=self.factory.user, data=data - ) + rv = self.make_request("post", "/api/destinations", user=self.factory.user, data=data) self.assertEqual(rv.status_code, 403) def test_returns_400_when_name_already_exists(self): @@ -52,18 +45,14 @@ def test_returns_400_when_name_already_exists(self): "type": "email", } - rv = self.make_request( - "post", "/api/destinations", user=self.factory.create_admin(), data=data - ) + rv = self.make_request("post", "/api/destinations", user=self.factory.create_admin(), data=data) self.assertEqual(rv.status_code, 400) class TestDestinationResource(BaseTestCase): def test_get(self): d = self.factory.create_destination() - rv = self.make_request( - "get", "/api/destinations/{}".format(d.id), user=self.factory.create_admin() - ) + rv = self.make_request("get", "/api/destinations/{}".format(d.id), user=self.factory.create_admin()) self.assertEqual(rv.status_code, 200) def test_delete(self): diff --git a/tests/handlers/test_embed.py b/tests/handlers/test_embed.py index c7d624afab..59d3920d7d 100644 --- a/tests/handlers/test_embed.py +++ b/tests/handlers/test_embed.py @@ -1,5 +1,5 @@ -from tests import BaseTestCase from redash.models import db +from tests import BaseTestCase class TestUnembedables(BaseTestCase): @@ -47,15 +47,11 @@ def test_works_for_logged_in_user(self): dashboard = self.factory.create_dashboard() api_key = self.factory.create_api_key(object=dashboard) - res = self.make_request( - "get", "/public/dashboards/{}".format(api_key.api_key), is_json=False - ) + res = self.make_request("get", "/public/dashboards/{}".format(api_key.api_key), is_json=False) self.assertEqual(res.status_code, 200) def test_bad_token(self): - res = self.make_request( - "get", "/public/dashboards/bad-token", user=False, is_json=False - ) + res = self.make_request("get", "/public/dashboards/bad-token", user=False, is_json=False) self.assertEqual(res.status_code, 302) def test_inactive_token(self): @@ -94,15 +90,11 @@ def test_works_for_logged_in_user(self): dashboard = self.factory.create_dashboard() api_key = self.factory.create_api_key(object=dashboard) - res = self.make_request( - "get", "/api/dashboards/public/{}".format(api_key.api_key), is_json=False - ) + res = self.make_request("get", "/api/dashboards/public/{}".format(api_key.api_key), is_json=False) self.assertEqual(res.status_code, 200) def test_bad_token(self): - res = self.make_request( - "get", "/api/dashboards/public/bad-token", user=False, is_json=False - ) + res = self.make_request("get", "/api/dashboards/public/bad-token", user=False, is_json=False) self.assertEqual(res.status_code, 404) def test_inactive_token(self): diff --git a/tests/handlers/test_groups.py b/tests/handlers/test_groups.py index 5bdebba6d2..19bd2fb62a 100644 --- a/tests/handlers/test_groups.py +++ b/tests/handlers/test_groups.py @@ -1,13 +1,13 @@ from funcy import project +from redash.models import DataSource, Group, db from tests import BaseTestCase -from redash.models import Group, DataSource, NoResultFound, db class TestGroupDataSourceListResource(BaseTestCase): def test_returns_only_groups_for_current_org(self): group = self.factory.create_group(org=self.factory.create_org()) - data_source = self.factory.create_data_source(group=group) + self.factory.create_data_source(group=group) db.session.flush() response = self.make_request( "get", @@ -33,9 +33,7 @@ def test_list(self): class TestGroupResourceList(BaseTestCase): def test_list_admin(self): self.factory.create_group(org=self.factory.create_org()) - response = self.make_request( - "get", "/api/groups", user=self.factory.create_admin() - ) + response = self.make_request("get", "/api/groups", user=self.factory.create_admin()) g_keys = ["type", "id", "name", "permissions"] def filtergroups(gs): @@ -43,20 +41,13 @@ def filtergroups(gs): self.assertEqual( filtergroups(response.json), - filtergroups( - g.to_dict() - for g in [self.factory.admin_group, self.factory.default_group] - ), + filtergroups(g.to_dict() for g in [self.factory.admin_group, self.factory.default_group]), ) def test_list(self): - group1 = self.factory.create_group( - org=self.factory.create_org(), permissions=["view_dashboard"] - ) + group1 = self.factory.create_group(org=self.factory.create_org(), permissions=["view_dashboard"]) db.session.flush() - u = self.factory.create_user( - group_ids=[self.factory.default_group.id, group1.id] - ) + u = self.factory.create_user(group_ids=[self.factory.default_group.id, group1.id]) db.session.flush() response = self.make_request("get", "/api/groups", user=u) g_keys = ["type", "id", "name", "permissions"] @@ -82,9 +73,7 @@ def test_doesnt_change_builtin_groups(self): ) self.assertEqual(response.status_code, 400) - self.assertEqual( - current_name, Group.query.get(self.factory.default_group.id).name - ) + self.assertEqual(current_name, Group.query.get(self.factory.default_group.id).name) class TestGroupResourceDelete(BaseTestCase): @@ -128,13 +117,9 @@ def test_can_delete_group_with_data_sources(self): class TestGroupResourceGet(BaseTestCase): def test_returns_group(self): - rv = self.make_request( - "get", "/api/groups/{}".format(self.factory.default_group.id) - ) + rv = self.make_request("get", "/api/groups/{}".format(self.factory.default_group.id)) self.assertEqual(rv.status_code, 200) def test_doesnt_return_if_user_not_member_or_admin(self): - rv = self.make_request( - "get", "/api/groups/{}".format(self.factory.admin_group.id) - ) + rv = self.make_request("get", "/api/groups/{}".format(self.factory.admin_group.id)) self.assertEqual(rv.status_code, 403) diff --git a/tests/handlers/test_paginate.py b/tests/handlers/test_paginate.py index 509277560b..29e56b5625 100644 --- a/tests/handlers/test_paginate.py +++ b/tests/handlers/test_paginate.py @@ -1,8 +1,9 @@ +from unittest import TestCase + +from mock import MagicMock from werkzeug.exceptions import BadRequest from redash.handlers.base import paginate -from unittest import TestCase -from mock import MagicMock class DummyResults(object): @@ -26,17 +27,9 @@ def test_returns_paginated_results(self): self.assertEqual(page["results"], dummy_results.items) def test_raises_error_for_bad_page(self): - self.assertRaises( - BadRequest, lambda: paginate(self.query_set, -1, 25, lambda x: x) - ) - self.assertRaises( - BadRequest, lambda: paginate(self.query_set, 6, 25, lambda x: x) - ) + self.assertRaises(BadRequest, lambda: paginate(self.query_set, -1, 25, lambda x: x)) + self.assertRaises(BadRequest, lambda: paginate(self.query_set, 6, 25, lambda x: x)) def test_raises_error_for_bad_page_size(self): - self.assertRaises( - BadRequest, lambda: paginate(self.query_set, 1, 251, lambda x: x) - ) - self.assertRaises( - BadRequest, lambda: paginate(self.query_set, 1, -1, lambda x: x) - ) + self.assertRaises(BadRequest, lambda: paginate(self.query_set, 1, 251, lambda x: x)) + self.assertRaises(BadRequest, lambda: paginate(self.query_set, 1, -1, lambda x: x)) diff --git a/tests/handlers/test_permissions.py b/tests/handlers/test_permissions.py index 509b3687e5..2e831b7f83 100644 --- a/tests/handlers/test_permissions.py +++ b/tests/handlers/test_permissions.py @@ -1,7 +1,6 @@ -from tests import BaseTestCase - from redash.models import AccessPermission from redash.permissions import ACCESS_TYPE_MODIFY +from tests import BaseTestCase class TestObjectPermissionsListGet(BaseTestCase): @@ -45,9 +44,7 @@ def test_creates_permission_if_the_user_is_an_owner(self): data = {"access_type": ACCESS_TYPE_MODIFY, "user_id": other_user.id} - rv = self.make_request( - "post", "/api/queries/{}/acl".format(query.id), user=query.user, data=data - ) + rv = self.make_request("post", "/api/queries/{}/acl".format(query.id), user=query.user, data=data) self.assertEqual(200, rv.status_code) self.assertTrue(AccessPermission.exists(query, ACCESS_TYPE_MODIFY, other_user)) @@ -58,9 +55,7 @@ def test_returns_403_if_the_user_isnt_owner(self): data = {"access_type": ACCESS_TYPE_MODIFY, "user_id": other_user.id} - rv = self.make_request( - "post", "/api/queries/{}/acl".format(query.id), user=other_user, data=data - ) + rv = self.make_request("post", "/api/queries/{}/acl".format(query.id), user=other_user, data=data) self.assertEqual(403, rv.status_code) def test_returns_400_if_the_grantee_isnt_from_organization(self): @@ -69,9 +64,7 @@ def test_returns_400_if_the_grantee_isnt_from_organization(self): data = {"access_type": ACCESS_TYPE_MODIFY, "user_id": other_user.id} - rv = self.make_request( - "post", "/api/queries/{}/acl".format(query.id), user=query.user, data=data - ) + rv = self.make_request("post", "/api/queries/{}/acl".format(query.id), user=query.user, data=data) self.assertEqual(400, rv.status_code) def test_returns_404_if_the_user_from_different_org(self): @@ -80,9 +73,7 @@ def test_returns_404_if_the_user_from_different_org(self): data = {"access_type": ACCESS_TYPE_MODIFY, "user_id": other_user.id} - rv = self.make_request( - "post", "/api/queries/{}/acl".format(query.id), user=other_user, data=data - ) + rv = self.make_request("post", "/api/queries/{}/acl".format(query.id), user=other_user, data=data) self.assertEqual(404, rv.status_code) def test_accepts_only_correct_access_types(self): @@ -91,9 +82,7 @@ def test_accepts_only_correct_access_types(self): data = {"access_type": "random string", "user_id": other_user.id} - rv = self.make_request( - "post", "/api/queries/{}/acl".format(query.id), user=query.user, data=data - ) + rv = self.make_request("post", "/api/queries/{}/acl".format(query.id), user=query.user, data=data) self.assertEqual(400, rv.status_code) @@ -113,9 +102,7 @@ def test_removes_permission(self): grantee=other_user, ) - rv = self.make_request( - "delete", "/api/queries/{}/acl".format(query.id), user=user, data=data - ) + rv = self.make_request("delete", "/api/queries/{}/acl".format(query.id), user=user, data=data) self.assertEqual(rv.status_code, 200) @@ -149,9 +136,7 @@ def test_returns_404_for_outside_of_organization_users(self): query = self.factory.create_query() user = self.factory.create_user(org=self.factory.create_org()) data = {"access_type": ACCESS_TYPE_MODIFY, "user_id": user.id} - rv = self.make_request( - "delete", "/api/queries/{}/acl".format(query.id), user=user, data=data - ) + rv = self.make_request("delete", "/api/queries/{}/acl".format(query.id), user=user, data=data) self.assertEqual(rv.status_code, 404) @@ -160,9 +145,7 @@ def test_returns_403_for_non_owner(self): user = self.factory.create_user() data = {"access_type": ACCESS_TYPE_MODIFY, "user_id": user.id} - rv = self.make_request( - "delete", "/api/queries/{}/acl".format(query.id), user=user, data=data - ) + rv = self.make_request("delete", "/api/queries/{}/acl".format(query.id), user=user, data=data) self.assertEqual(rv.status_code, 403) @@ -172,9 +155,7 @@ def test_returns_200_even_if_there_is_no_permission(self): data = {"access_type": ACCESS_TYPE_MODIFY, "user_id": user.id} - rv = self.make_request( - "delete", "/api/queries/{}/acl".format(query.id), user=query.user, data=data - ) + rv = self.make_request("delete", "/api/queries/{}/acl".format(query.id), user=query.user, data=data) self.assertEqual(rv.status_code, 200) diff --git a/tests/handlers/test_queries.py b/tests/handlers/test_queries.py index b5627febc0..f29216ccde 100644 --- a/tests/handlers/test_queries.py +++ b/tests/handlers/test_queries.py @@ -1,9 +1,8 @@ -from tests import BaseTestCase from redash import models from redash.models import db - -from redash.serializers import serialize_query from redash.permissions import ACCESS_TYPE_MODIFY +from redash.serializers import serialize_query +from tests import BaseTestCase class TestQueryResourceGet(BaseTestCase): @@ -33,9 +32,7 @@ def test_query_without_data_source_should_be_available_only_by_admin(self): rv = self.make_request("get", "/api/queries/{}".format(query.id)) self.assertEqual(rv.status_code, 403) - rv = self.make_request( - "get", "/api/queries/{}".format(query.id), user=self.factory.create_admin() - ) + rv = self.make_request("get", "/api/queries/{}".format(query.id), user=self.factory.create_admin()) self.assertEqual(rv.status_code, 200) def test_query_only_accessible_to_users_from_its_organization(self): @@ -46,14 +43,10 @@ def test_query_only_accessible_to_users_from_its_organization(self): query.data_source = None db.session.add(query) - rv = self.make_request( - "get", "/api/queries/{}".format(query.id), user=second_org_admin - ) + rv = self.make_request("get", "/api/queries/{}".format(query.id), user=second_org_admin) self.assertEqual(rv.status_code, 404) - rv = self.make_request( - "get", "/api/queries/{}".format(query.id), user=self.factory.create_admin() - ) + rv = self.make_request("get", "/api/queries/{}".format(query.id), user=self.factory.create_admin()) self.assertEqual(rv.status_code, 200) def test_query_search(self): @@ -76,9 +69,7 @@ def test_query_search(self): self.assertEqual(rv.status_code, 301) self.assertIn("/api/queries?q=stronger", rv.headers["Location"]) - rv = self.make_request( - "get", "/api/queries/search?q=stronger", follow_redirects=True - ) + rv = self.make_request("get", "/api/queries/search?q=stronger", follow_redirects=True) self.assertEqual(rv.status_code, 200) self.assertEqual(len(rv.json["results"]), 1) @@ -98,9 +89,7 @@ def test_update_query(self): "data_source_id": new_ds.id, } - rv = self.make_request( - "post", "/api/queries/{0}".format(query.id), data=data, user=admin - ) + rv = self.make_request("post", "/api/queries/{0}".format(query.id), data=data, user=admin) self.assertEqual(rv.status_code, 200) self.assertEqual(rv.json["name"], data["name"]) self.assertEqual(rv.json["last_modified_by"]["id"], admin.id) @@ -162,15 +151,11 @@ def test_allows_association_with_authorized_dropdown_queries(self): self.assertEqual(rv.status_code, 200) def test_prevents_association_with_unauthorized_dropdown_queries(self): - other_data_source = self.factory.create_data_source( - group=self.factory.create_group() - ) + other_data_source = self.factory.create_data_source(group=self.factory.create_group()) other_query = self.factory.create_query(data_source=other_data_source) db.session.add(other_query) - my_data_source = self.factory.create_data_source( - group=self.factory.create_group() - ) + my_data_source = self.factory.create_data_source(group=self.factory.create_group()) my_query = self.factory.create_query(data_source=my_data_source) db.session.add(my_query) @@ -185,9 +170,7 @@ def test_prevents_association_with_unauthorized_dropdown_queries(self): self.assertEqual(rv.status_code, 403) def test_prevents_association_with_non_existing_dropdown_queries(self): - my_data_source = self.factory.create_data_source( - group=self.factory.create_group() - ) + my_data_source = self.factory.create_data_source(group=self.factory.create_group()) my_query = self.factory.create_query(data_source=my_data_source) db.session.add(my_query) @@ -226,9 +209,7 @@ def test_works_for_non_owner_with_permission(self): ) self.assertEqual(rv.status_code, 403) - models.AccessPermission.grant( - obj=query, access_type=ACCESS_TYPE_MODIFY, grantee=user, grantor=query.user - ) + models.AccessPermission.grant(obj=query, access_type=ACCESS_TYPE_MODIFY, grantee=user, grantor=query.user) rv = self.make_request( "post", @@ -250,9 +231,7 @@ def test_returns_queries(self): rv = self.make_request("get", "/api/queries") assert len(rv.json["results"]) == 3 - assert set([result["id"] for result in rv.json["results"]]) == set( - [q1.id, q2.id, q3.id] - ) + assert set([result["id"] for result in rv.json["results"]]) == set([q1.id, q2.id, q3.id]) def test_filters_with_tags(self): q1 = self.factory.create_query(tags=["test"]) @@ -270,9 +249,7 @@ def test_search_term(self): rv = self.make_request("get", "/api/queries?q=sales") assert len(rv.json["results"]) == 2 - assert set([result["id"] for result in rv.json["results"]]) == set( - [q1.id, q2.id] - ) + assert set([result["id"] for result in rv.json["results"]]) == set([q1.id, q2.id]) class TestQueryListResourcePost(BaseTestCase): @@ -319,15 +296,11 @@ def test_allows_association_with_authorized_dropdown_queries(self): self.assertEqual(rv.status_code, 200) def test_prevents_association_with_unauthorized_dropdown_queries(self): - other_data_source = self.factory.create_data_source( - group=self.factory.create_group() - ) + other_data_source = self.factory.create_data_source(group=self.factory.create_group()) other_query = self.factory.create_query(data_source=other_data_source) db.session.add(other_query) - my_data_source = self.factory.create_data_source( - group=self.factory.create_group() - ) + my_data_source = self.factory.create_data_source(group=self.factory.create_group()) query_data = { "name": "Testing", @@ -362,9 +335,7 @@ def test_returns_queries(self): rv = self.make_request("get", "/api/queries/archive") assert len(rv.json["results"]) == 2 - assert set([result["id"] for result in rv.json["results"]]) == set( - [q1.id, q2.id] - ) + assert set([result["id"] for result in rv.json["results"]]) == set([q1.id, q2.id]) def test_search_term(self): q1 = self.factory.create_query(name="Sales", is_archived=True) @@ -373,9 +344,7 @@ def test_search_term(self): rv = self.make_request("get", "/api/queries/archive?q=sales") assert len(rv.json["results"]) == 2 - assert set([result["id"] for result in rv.json["results"]]) == set( - [q1.id, q2.id] - ) + assert set([result["id"] for result in rv.json["results"]]) == set([q1.id, q2.id]) class QueryRefreshTest(BaseTestCase): @@ -412,9 +381,7 @@ def test_refresh_query_you_dont_have_access_to(self): self.assertEqual(403, response.status_code) def test_refresh_forbiden_with_query_api_key(self): - response = self.make_request( - "post", "{}?api_key={}".format(self.path, self.query.api_key), user=False - ) + response = self.make_request("post", "{}?api_key={}".format(self.path, self.query.api_key), user=False) self.assertEqual(403, response.status_code) response = self.make_request( @@ -479,9 +446,7 @@ def test_user_can_regenerate_api_key_of_myself(self): query = self.factory.create_query(user=user) orig_api_key = query.api_key - rv = self.make_request( - "post", "/api/queries/{}/regenerate_api_key".format(query.id), user=user - ) + rv = self.make_request("post", "/api/queries/{}/regenerate_api_key".format(query.id), user=user) self.assertEqual(rv.status_code, 200) updated_query = models.Query.query.get(query.id) @@ -490,9 +455,7 @@ def test_user_can_regenerate_api_key_of_myself(self): class TestQueryForkResourcePost(BaseTestCase): def test_forks_a_query(self): - ds = self.factory.create_data_source( - group=self.factory.org.default_group, view_only=False - ) + ds = self.factory.create_data_source(group=self.factory.org.default_group, view_only=False) query = self.factory.create_query(data_source=ds) rv = self.make_request("post", "/api/queries/{}/fork".format(query.id)) @@ -500,9 +463,7 @@ def test_forks_a_query(self): self.assertEqual(rv.status_code, 200) def test_must_have_full_access_to_data_source(self): - ds = self.factory.create_data_source( - group=self.factory.org.default_group, view_only=True - ) + ds = self.factory.create_data_source(group=self.factory.org.default_group, view_only=True) query = self.factory.create_query(data_source=ds) rv = self.make_request("post", "/api/queries/{}/fork".format(query.id)) @@ -521,8 +482,6 @@ def test_format_sql_query(self): WHERE x=1 AND y=2;""" - rv = self.make_request( - "post", "/api/queries/format", user=admin, data={"query": query} - ) + rv = self.make_request("post", "/api/queries/format", user=admin, data={"query": query}) self.assertEqual(rv.json["query"], expected) diff --git a/tests/handlers/test_query_results.py b/tests/handlers/test_query_results.py index c1f97df030..d6f7185fce 100644 --- a/tests/handlers/test_query_results.py +++ b/tests/handlers/test_query_results.py @@ -1,9 +1,7 @@ -from redash.query_runner import BaseSQLQueryRunner, BaseQueryRunner -from tests import BaseTestCase - +from redash.handlers.query_results import error_messages from redash.models import db from redash.utils import json_dumps -from redash.handlers.query_results import error_messages +from tests import BaseTestCase class TestQueryResultsCacheHeaders(BaseTestCase): @@ -11,9 +9,7 @@ def test_uses_cache_headers_for_specific_result(self): query_result = self.factory.create_query_result() query = self.factory.create_query(latest_query_data=query_result) - rv = self.make_request( - "get", "/api/queries/{}/results/{}.json".format(query.id, query_result.id) - ) + rv = self.make_request("get", "/api/queries/{}/results/{}.json".format(query.id, query_result.id)) self.assertIn("Cache-Control", rv.headers) def test_doesnt_use_cache_headers_for_non_specific_result(self): @@ -38,7 +34,7 @@ def test_supports_unicode(self): rv = self.make_request("get", "/api/queries/{}/results.json".format(query.id)) # This is what gunicorn will do with it try: - rv.headers['Content-Disposition'].encode('ascii') + rv.headers["Content-Disposition"].encode("ascii") except Exception as e: self.fail(repr(e)) @@ -60,7 +56,7 @@ def test_get_existing_result(self): self.assertEqual(query_result.id, rv.json["query_result"]["id"]) def test_execute_new_query(self): - query_result = self.factory.create_query_result() + self.factory.create_query_result() query = self.factory.create_query() rv = self.make_request( @@ -78,20 +74,14 @@ def test_execute_new_query(self): self.assertIn("job", rv.json) def test_add_limit_change_query_sql(self): - ds = self.factory.create_data_source( - group=self.factory.org.default_group, type="pg" - ) + ds = self.factory.create_data_source(group=self.factory.org.default_group, type="pg") query = self.factory.create_query(query_text="SELECT 2", data_source=ds) - query_result = self.factory.create_query_result(data_source=ds, query_hash=query.query_hash) + self.factory.create_query_result(data_source=ds, query_hash=query.query_hash) rv = self.make_request( "post", "/api/query_results", - data={ - "data_source_id": ds.id, - "query": query.query_text, - "apply_auto_limit": True - }, + data={"data_source_id": ds.id, "query": query.query_text, "apply_auto_limit": True}, ) self.assertEqual(rv.status_code, 200) @@ -99,20 +89,14 @@ def test_add_limit_change_query_sql(self): self.assertIn("job", rv.json) def test_add_limit_no_change_for_nonsql(self): - ds = self.factory.create_data_source( - group=self.factory.org.default_group, type="prometheus" - ) + ds = self.factory.create_data_source(group=self.factory.org.default_group, type="prometheus") query = self.factory.create_query(query_text="SELECT 5", data_source=ds) query_result = self.factory.create_query_result(data_source=ds, query_hash=query.query_hash) rv = self.make_request( "post", "/api/query_results", - data={ - "data_source_id": ds.id, - "query": query.query_text, - "apply_auto_limit": True - }, + data={"data_source_id": ds.id, "query": query.query_text, "apply_auto_limit": True}, ) self.assertEqual(rv.status_code, 200) @@ -199,9 +183,7 @@ def test_execute_on_paused_data_source(self): self.assertIn("job", rv.json) def test_execute_without_data_source(self): - rv = self.make_request( - "post", "/api/query_results", data={"query": "SELECT 1", "max_age": 0} - ) + rv = self.make_request("post", "/api/query_results", data={"query": "SELECT 1", "max_age": 0}) self.assertEqual(rv.status_code, 401) self.assertDictEqual(rv.json, error_messages["select_data_source"][0]) @@ -216,18 +198,14 @@ def test_has_no_access_to_data_source(self): self.assertEqual(rv.status_code, 403) def test_has_view_only_access_to_data_source(self): - ds = self.factory.create_data_source( - group=self.factory.org.default_group, view_only=True - ) + ds = self.factory.create_data_source(group=self.factory.org.default_group, view_only=True) query_result = self.factory.create_query_result(data_source=ds) rv = self.make_request("get", "/api/query_results/{}".format(query_result.id)) self.assertEqual(rv.status_code, 200) def test_has_full_access_to_data_source(self): - ds = self.factory.create_data_source( - group=self.factory.org.default_group, view_only=False - ) + ds = self.factory.create_data_source(group=self.factory.org.default_group, view_only=False) query_result = self.factory.create_query_result(data_source=ds) rv = self.make_request("get", "/api/query_results/{}".format(query_result.id)) @@ -236,9 +214,7 @@ def test_has_full_access_to_data_source(self): def test_execute_new_query(self): query = self.factory.create_query() - rv = self.make_request( - "post", "/api/queries/{}/results".format(query.id), data={"parameters": {}} - ) + rv = self.make_request("post", "/api/queries/{}/results".format(query.id), data={"parameters": {}}) self.assertEqual(rv.status_code, 200) self.assertIn("job", rv.json) @@ -260,39 +236,23 @@ def test_execute_with_no_parameter_values(self): self.assertIn("job", rv.json) def test_prevents_execution_of_unsafe_queries_on_view_only_data_sources(self): - ds = self.factory.create_data_source( - group=self.factory.org.default_group, view_only=True - ) - query = self.factory.create_query( - data_source=ds, options={"parameters": [{"name": "foo", "type": "text"}]} - ) + ds = self.factory.create_data_source(group=self.factory.org.default_group, view_only=True) + query = self.factory.create_query(data_source=ds, options={"parameters": [{"name": "foo", "type": "text"}]}) - rv = self.make_request( - "post", "/api/queries/{}/results".format(query.id), data={"parameters": {}} - ) + rv = self.make_request("post", "/api/queries/{}/results".format(query.id), data={"parameters": {}}) self.assertEqual(rv.status_code, 403) self.assertDictEqual(rv.json, error_messages["unsafe_on_view_only"][0]) def test_allows_execution_of_safe_queries_on_view_only_data_sources(self): - ds = self.factory.create_data_source( - group=self.factory.org.default_group, view_only=True - ) - query = self.factory.create_query( - data_source=ds, options={"parameters": [{"name": "foo", "type": "number"}]} - ) + ds = self.factory.create_data_source(group=self.factory.org.default_group, view_only=True) + query = self.factory.create_query(data_source=ds, options={"parameters": [{"name": "foo", "type": "number"}]}) - rv = self.make_request( - "post", "/api/queries/{}/results".format(query.id), data={"parameters": {}} - ) + rv = self.make_request("post", "/api/queries/{}/results".format(query.id), data={"parameters": {}}) self.assertEqual(rv.status_code, 200) def test_prevents_execution_of_unsafe_queries_using_api_key(self): - ds = self.factory.create_data_source( - group=self.factory.org.default_group, view_only=True - ) - query = self.factory.create_query( - data_source=ds, options={"parameters": [{"name": "foo", "type": "text"}]} - ) + ds = self.factory.create_data_source(group=self.factory.org.default_group, view_only=True) + query = self.factory.create_query(data_source=ds, options={"parameters": [{"name": "foo", "type": "text"}]}) data = {"parameters": {"foo": "bar"}} rv = self.make_request( @@ -304,27 +264,19 @@ def test_prevents_execution_of_unsafe_queries_using_api_key(self): self.assertDictEqual(rv.json, error_messages["unsafe_when_shared"][0]) def test_access_with_query_api_key(self): - ds = self.factory.create_data_source( - group=self.factory.org.default_group, view_only=False - ) + ds = self.factory.create_data_source(group=self.factory.org.default_group, view_only=False) query = self.factory.create_query() - query_result = self.factory.create_query_result( - data_source=ds, query_text=query.query_text - ) + query_result = self.factory.create_query_result(data_source=ds, query_text=query.query_text) rv = self.make_request( "get", - "/api/queries/{}/results/{}.json?api_key={}".format( - query.id, query_result.id, query.api_key - ), + "/api/queries/{}/results/{}.json?api_key={}".format(query.id, query_result.id, query.api_key), user=False, ) self.assertEqual(rv.status_code, 200) def test_access_with_query_api_key_without_query_result_id(self): - ds = self.factory.create_data_source( - group=self.factory.org.default_group, view_only=False - ) + ds = self.factory.create_data_source(group=self.factory.org.default_group, view_only=False) query = self.factory.create_query() query_result = self.factory.create_query_result( data_source=ds, query_text=query.query_text, query_hash=query.query_hash @@ -339,43 +291,29 @@ def test_access_with_query_api_key_without_query_result_id(self): self.assertEqual(rv.status_code, 200) def test_query_api_key_and_different_query_result(self): - ds = self.factory.create_data_source( - group=self.factory.org.default_group, view_only=False - ) + ds = self.factory.create_data_source(group=self.factory.org.default_group, view_only=False) query = self.factory.create_query(query_text="SELECT 8") - query_result2 = self.factory.create_query_result( - data_source=ds, query_hash="something-different" - ) + query_result2 = self.factory.create_query_result(data_source=ds, query_hash="something-different") rv = self.make_request( "get", - "/api/queries/{}/results/{}.json?api_key={}".format( - query.id, query_result2.id, query.api_key - ), + "/api/queries/{}/results/{}.json?api_key={}".format(query.id, query_result2.id, query.api_key), user=False, ) self.assertEqual(rv.status_code, 404) def test_signed_in_user_and_different_query_result(self): - ds2 = self.factory.create_data_source( - group=self.factory.org.admin_group, view_only=False - ) + ds2 = self.factory.create_data_source(group=self.factory.org.admin_group, view_only=False) query = self.factory.create_query(query_text="SELECT 8") - query_result2 = self.factory.create_query_result( - data_source=ds2, query_hash="something-different" - ) + query_result2 = self.factory.create_query_result(data_source=ds2, query_hash="something-different") - rv = self.make_request( - "get", "/api/queries/{}/results/{}.json".format(query.id, query_result2.id) - ) + rv = self.make_request("get", "/api/queries/{}/results/{}.json".format(query.id, query_result2.id)) self.assertEqual(rv.status_code, 403) class TestQueryResultDropdownResource(BaseTestCase): def test_checks_for_access_to_the_query(self): - ds2 = self.factory.create_data_source( - group=self.factory.org.admin_group, view_only=False - ) + ds2 = self.factory.create_data_source(group=self.factory.org.admin_group, view_only=False) query = self.factory.create_query(data_source=ds2) rv = self.make_request("get", "/api/queries/{}/dropdown".format(query.id)) @@ -386,9 +324,7 @@ def test_checks_for_access_to_the_query(self): class TestQueryDropdownsResource(BaseTestCase): def test_prevents_access_if_unassociated_and_doesnt_have_access(self): query = self.factory.create_query() - ds2 = self.factory.create_data_source( - group=self.factory.org.admin_group, view_only=False - ) + ds2 = self.factory.create_data_source(group=self.factory.org.admin_group, view_only=False) unrelated_dropdown_query = self.factory.create_query(data_source=ds2) # unrelated_dropdown_query has not been associated with query @@ -396,9 +332,7 @@ def test_prevents_access_if_unassociated_and_doesnt_have_access(self): rv = self.make_request( "get", - "/api/queries/{}/dropdowns/{}".format( - query.id, unrelated_dropdown_query.id - ), + "/api/queries/{}/dropdowns/{}".format(query.id, unrelated_dropdown_query.id), ) self.assertEqual(rv.status_code, 403) @@ -409,18 +343,14 @@ def test_allows_access_if_unassociated_but_user_has_access(self): query_result = self.factory.create_query_result() data = {"rows": [], "columns": [{"name": "whatever"}]} query_result = self.factory.create_query_result(data=json_dumps(data)) - unrelated_dropdown_query = self.factory.create_query( - latest_query_data=query_result - ) + unrelated_dropdown_query = self.factory.create_query(latest_query_data=query_result) # unrelated_dropdown_query has not been associated with query # user has direct access to unrelated_dropdown_query rv = self.make_request( "get", - "/api/queries/{}/dropdowns/{}".format( - query.id, unrelated_dropdown_query.id - ), + "/api/queries/{}/dropdowns/{}".format(query.id, unrelated_dropdown_query.id), ) self.assertEqual(rv.status_code, 200) @@ -437,16 +367,12 @@ def test_allows_access_if_associated_and_has_access_to_parent(self): # dropdown_query has been associated with query # user has access to query - rv = self.make_request( - "get", "/api/queries/{}/dropdowns/{}".format(query.id, dropdown_query.id) - ) + rv = self.make_request("get", "/api/queries/{}/dropdowns/{}".format(query.id, dropdown_query.id)) self.assertEqual(rv.status_code, 200) def test_prevents_access_if_associated_and_doesnt_have_access_to_parent(self): - ds2 = self.factory.create_data_source( - group=self.factory.org.admin_group, view_only=False - ) + ds2 = self.factory.create_data_source(group=self.factory.org.admin_group, view_only=False) dropdown_query = self.factory.create_query(data_source=ds2) options = {"parameters": [{"type": "query", "queryId": dropdown_query.id}]} query = self.factory.create_query(data_source=ds2, options=options) @@ -454,9 +380,7 @@ def test_prevents_access_if_associated_and_doesnt_have_access_to_parent(self): # dropdown_query has been associated with query # user doesnt have access to either query - rv = self.make_request( - "get", "/api/queries/{}/dropdowns/{}".format(query.id, dropdown_query.id) - ) + rv = self.make_request("get", "/api/queries/{}/dropdowns/{}".format(query.id, dropdown_query.id)) self.assertEqual(rv.status_code, 403) @@ -496,8 +420,12 @@ def test_cancels_queued_queries(self): query = self.factory.create_query() job_id = self.make_request( - "post", f"/api/queries/{query.id}/results", data={"parameters": {}}, - ).json["job"]["id"] + "post", + f"/api/queries/{query.id}/results", + data={"parameters": {}}, + ).json[ + "job" + ]["id"] status = self.make_request("get", f"/api/jobs/{job_id}").json["job"]["status"] self.assertEqual(status, QUEUED) @@ -506,4 +434,4 @@ def test_cancels_queued_queries(self): job = self.make_request("get", f"/api/jobs/{job_id}").json["job"] self.assertEqual(job["status"], FAILED) - self.assertTrue("cancelled" in job["error"]) \ No newline at end of file + self.assertTrue("cancelled" in job["error"]) diff --git a/tests/handlers/test_query_snippets.py b/tests/handlers/test_query_snippets.py index 99ef3a6b7b..6515e5fe4d 100644 --- a/tests/handlers/test_query_snippets.py +++ b/tests/handlers/test_query_snippets.py @@ -1,5 +1,5 @@ -from tests import BaseTestCase from redash.models import QuerySnippet +from tests import BaseTestCase class TestQuerySnippetResource(BaseTestCase): @@ -20,16 +20,14 @@ def test_update_snippet(self): "description": "updated description", } - rv = self.make_request( - "post", "/api/query_snippets/{}".format(snippet.id), data=data - ) + rv = self.make_request("post", "/api/query_snippets/{}".format(snippet.id), data=data) for field in ("snippet", "description", "trigger"): self.assertEqual(rv.json[field], data[field]) def test_delete_snippet(self): snippet = self.factory.create_query_snippet() - rv = self.make_request("delete", "/api/query_snippets/{}".format(snippet.id)) + self.make_request("delete", "/api/query_snippets/{}".format(snippet.id)) self.assertIsNone(QuerySnippet.query.get(snippet.id)) @@ -48,9 +46,7 @@ def test_create_snippet(self): def test_list_all_snippets(self): snippet1 = self.factory.create_query_snippet() snippet2 = self.factory.create_query_snippet() - snippet_diff_org = self.factory.create_query_snippet( - org=self.factory.create_org() - ) + snippet_diff_org = self.factory.create_query_snippet(org=self.factory.create_org()) rv = self.make_request("get", "/api/query_snippets") ids = [s["id"] for s in rv.json] diff --git a/tests/handlers/test_settings.py b/tests/handlers/test_settings.py index 6c9e33b9a9..8292d37bbd 100644 --- a/tests/handlers/test_settings.py +++ b/tests/handlers/test_settings.py @@ -1,5 +1,5 @@ -from tests import BaseTestCase from redash.models import Organization +from tests import BaseTestCase class TestOrganizationSettings(BaseTestCase): @@ -12,9 +12,7 @@ def test_post(self): user=admin, ) self.assertEqual(rv.json["settings"]["auth_password_login_enabled"], False) - self.assertEqual( - self.factory.org.settings["settings"]["auth_password_login_enabled"], False - ) + self.assertEqual(self.factory.org.settings["settings"]["auth_password_login_enabled"], False) rv = self.make_request( "post", @@ -24,14 +22,12 @@ def test_post(self): ) updated_org = Organization.get_by_slug(self.factory.org.slug) self.assertEqual(rv.json["settings"]["auth_password_login_enabled"], True) - self.assertEqual( - updated_org.settings["settings"]["auth_password_login_enabled"], True - ) + self.assertEqual(updated_org.settings["settings"]["auth_password_login_enabled"], True) def test_updates_google_apps_domains(self): admin = self.factory.create_admin() domains = ["example.com"] - rv = self.make_request( + self.make_request( "post", "/api/settings/organization", data={"auth_google_apps_domains": domains}, diff --git a/tests/handlers/test_users.py b/tests/handlers/test_users.py index 04664f65a0..562956bda1 100644 --- a/tests/handlers/test_users.py +++ b/tests/handlers/test_users.py @@ -108,24 +108,12 @@ class PlainObject(object): result = PlainObject() now = models.db.func.now() - result.enabled_active1 = self.factory.create_user( - disabled_at=None, is_invitation_pending=None - ).id - result.enabled_active2 = self.factory.create_user( - disabled_at=None, is_invitation_pending=False - ).id - result.enabled_pending = self.factory.create_user( - disabled_at=None, is_invitation_pending=True - ).id - result.disabled_active1 = self.factory.create_user( - disabled_at=now, is_invitation_pending=None - ).id - result.disabled_active2 = self.factory.create_user( - disabled_at=now, is_invitation_pending=False - ).id - result.disabled_pending = self.factory.create_user( - disabled_at=now, is_invitation_pending=True - ).id + result.enabled_active1 = self.factory.create_user(disabled_at=None, is_invitation_pending=None).id + result.enabled_active2 = self.factory.create_user(disabled_at=None, is_invitation_pending=False).id + result.enabled_pending = self.factory.create_user(disabled_at=None, is_invitation_pending=True).id + result.disabled_active1 = self.factory.create_user(disabled_at=now, is_invitation_pending=None).id + result.disabled_active2 = self.factory.create_user(disabled_at=now, is_invitation_pending=False).id + result.disabled_pending = self.factory.create_user(disabled_at=now, is_invitation_pending=True).id return result @@ -198,9 +186,7 @@ def test_gets_all_enabled_and_pending(self): def test_gets_all_disabled_and_active(self): users = self.create_filters_fixtures() - user_ids = self.make_request_and_return_ids( - "get", "/api/users?disabled=true&pending=false" - ) + user_ids = self.make_request_and_return_ids("get", "/api/users?disabled=true&pending=false") self.assertUsersListMatches( user_ids, [users.disabled_active1, users.disabled_active2], @@ -214,9 +200,7 @@ def test_gets_all_disabled_and_active(self): def test_gets_all_disabled_and_pending(self): users = self.create_filters_fixtures() - user_ids = self.make_request_and_return_ids( - "get", "/api/users?disabled=true&pending=true" - ) + user_ids = self.make_request_and_return_ids("get", "/api/users?disabled=true&pending=true") self.assertUsersListMatches( user_ids, [users.disabled_pending], @@ -260,9 +244,7 @@ class TestUserResourcePost(BaseTestCase): def test_returns_403_for_non_admin_changing_not_his_own(self): other_user = self.factory.create_user() - rv = self.make_request( - "post", "/api/users/{}".format(other_user.id), data={"name": "New Name"} - ) + rv = self.make_request("post", "/api/users/{}".format(other_user.id), data={"name": "New Name"}) self.assertEqual(rv.status_code, 403) def test_returns_200_for_non_admin_changing_his_own(self): @@ -277,20 +259,14 @@ def test_returns_200_for_non_admin_changing_his_own(self): def test_marks_email_as_not_verified_when_changed(self, _): user = self.factory.user user.is_email_verified = True - rv = self.make_request( - "post", "/api/users/{}".format(user.id), data={"email": "donald@trump.biz"} - ) + self.make_request("post", "/api/users/{}".format(user.id), data={"email": "donald@trump.biz"}) self.assertFalse(user.is_email_verified) @patch("redash.settings.email_server_is_configured", return_value=False) - def test_doesnt_mark_email_as_not_verified_when_changed_and_email_server_is_not_configured( - self, _ - ): + def test_doesnt_mark_email_as_not_verified_when_changed_and_email_server_is_not_configured(self, _): user = self.factory.user user.is_email_verified = True - rv = self.make_request( - "post", "/api/users/{}".format(user.id), data={"email": "donald@trump.biz"} - ) + self.make_request("post", "/api/users/{}".format(user.id), data={"email": "donald@trump.biz"}) self.assertTrue(user.is_email_verified) def test_returns_200_for_admin_changing_other_user(self): @@ -371,9 +347,7 @@ def test_changing_email_ends_any_other_sessions_of_current_user(self): # force the old `user_id`, simulating that the user is logged in from another browser with c.session_transaction() as sess: sess["_user_id"] = previous - rv = self.get_request( - "/api/users/{}".format(self.factory.user.id), client=c - ) + rv = self.get_request("/api/users/{}".format(self.factory.user.id), client=c) self.assertEqual(rv.status_code, 404) @@ -415,9 +389,7 @@ def test_admin_can_delete_user(self): admin_user = self.factory.create_admin() other_user = self.factory.create_user(is_invitation_pending=True) - rv = self.make_request( - "delete", "/api/users/{}".format(other_user.id), user=admin_user - ) + rv = self.make_request("delete", "/api/users/{}".format(other_user.id), user=admin_user) self.assertEqual(rv.status_code, 200) self.assertEqual(models.User.query.get(other_user.id), None) @@ -428,9 +400,7 @@ def test_non_admin_cannot_disable_user(self): other_user = self.factory.create_user() self.assertFalse(other_user.is_disabled) - rv = self.make_request( - "post", "/api/users/{}/disable".format(other_user.id), user=other_user - ) + rv = self.make_request("post", "/api/users/{}/disable".format(other_user.id), user=other_user) self.assertEqual(rv.status_code, 403) # user should stay enabled @@ -442,9 +412,7 @@ def test_admin_can_disable_user(self): other_user = self.factory.create_user() self.assertFalse(other_user.is_disabled) - rv = self.make_request( - "post", "/api/users/{}/disable".format(other_user.id), user=admin_user - ) + rv = self.make_request("post", "/api/users/{}/disable".format(other_user.id), user=admin_user) self.assertEqual(rv.status_code, 200) # user should become disabled @@ -456,9 +424,7 @@ def test_admin_can_disable_another_admin(self): admin_user2 = self.factory.create_admin() self.assertFalse(admin_user2.is_disabled) - rv = self.make_request( - "post", "/api/users/{}/disable".format(admin_user2.id), user=admin_user1 - ) + rv = self.make_request("post", "/api/users/{}/disable".format(admin_user2.id), user=admin_user1) self.assertEqual(rv.status_code, 200) # user should become disabled @@ -469,9 +435,7 @@ def test_admin_cannot_disable_self(self): admin_user = self.factory.create_admin() self.assertFalse(admin_user.is_disabled) - rv = self.make_request( - "post", "/api/users/{}/disable".format(admin_user.id), user=admin_user - ) + rv = self.make_request("post", "/api/users/{}/disable".format(admin_user.id), user=admin_user) self.assertEqual(rv.status_code, 403) # user should stay enabled @@ -483,9 +447,7 @@ def test_admin_can_enable_user(self): other_user = self.factory.create_user(disabled_at="2018-03-08 00:00") self.assertTrue(other_user.is_disabled) - rv = self.make_request( - "delete", "/api/users/{}/disable".format(other_user.id), user=admin_user - ) + rv = self.make_request("delete", "/api/users/{}/disable".format(other_user.id), user=admin_user) self.assertEqual(rv.status_code, 200) # user should become enabled @@ -497,9 +459,7 @@ def test_admin_can_enable_another_admin(self): admin_user2 = self.factory.create_admin(disabled_at="2018-03-08 00:00") self.assertTrue(admin_user2.is_disabled) - rv = self.make_request( - "delete", "/api/users/{}/disable".format(admin_user2.id), user=admin_user1 - ) + rv = self.make_request("delete", "/api/users/{}/disable".format(admin_user2.id), user=admin_user1) self.assertEqual(rv.status_code, 200) # user should become enabled @@ -546,13 +506,9 @@ def test_disabled_user_should_not_receive_restore_password_email(self): # user should receive email user = self.factory.create_user() - with patch( - "redash.handlers.users.send_password_reset_email" - ) as send_password_reset_email_mock: + with patch("redash.handlers.users.send_password_reset_email") as send_password_reset_email_mock: send_password_reset_email_mock.return_value = "reset_token" - rv = self.make_request( - "post", "/api/users/{}/reset_password".format(user.id), user=admin_user - ) + rv = self.make_request("post", "/api/users/{}/reset_password".format(user.id), user=admin_user) self.assertEqual(rv.status_code, 200) send_password_reset_email_mock.assert_called_with(user) @@ -561,13 +517,9 @@ def test_disabled_user_should_not_receive_restore_password_email(self): self.db.session.add(user) self.db.session.commit() - with patch( - "redash.handlers.users.send_password_reset_email" - ) as send_password_reset_email_mock: + with patch("redash.handlers.users.send_password_reset_email") as send_password_reset_email_mock: send_password_reset_email_mock.return_value = "reset_token" - rv = self.make_request( - "post", "/api/users/{}/reset_password".format(user.id), user=admin_user - ) + rv = self.make_request("post", "/api/users/{}/reset_password".format(user.id), user=admin_user) self.assertEqual(rv.status_code, 404) send_password_reset_email_mock.assert_not_called() @@ -593,9 +545,7 @@ def test_admin_can_regenerate_other_user_api_key(self): user2 = self.factory.create_user() orig_user2_api_key = user2.api_key - rv = self.make_request( - "post", "/api/users/{}/regenerate_api_key".format(user2.id), user=user1 - ) + rv = self.make_request("post", "/api/users/{}/regenerate_api_key".format(user2.id), user=user1) self.assertEqual(rv.status_code, 403) user = models.User.query.get(user2.id) @@ -619,9 +569,7 @@ def test_user_can_regenerate_api_key_myself(self): user = self.factory.create_user() orig_api_key = user.api_key - rv = self.make_request( - "post", "/api/users/{}/regenerate_api_key".format(user.id), user=user - ) + rv = self.make_request("post", "/api/users/{}/regenerate_api_key".format(user.id), user=user) self.assertEqual(rv.status_code, 200) user = models.User.query.get(user.id) diff --git a/tests/handlers/test_visualizations.py b/tests/handlers/test_visualizations.py index 42a5b61668..75f022d607 100644 --- a/tests/handlers/test_visualizations.py +++ b/tests/handlers/test_visualizations.py @@ -1,6 +1,5 @@ -from tests import BaseTestCase - from redash import models +from tests import BaseTestCase class VisualizationResourceTest(BaseTestCase): @@ -24,9 +23,7 @@ def test_create_visualization(self): def test_delete_visualization(self): visualization = self.factory.create_visualization() models.db.session.commit() - rv = self.make_request( - "delete", "/api/visualizations/{}".format(visualization.id) - ) + rv = self.make_request("delete", "/api/visualizations/{}".format(visualization.id)) self.assertEqual(rv.status_code, 200) self.assertEqual(models.Visualization.query.count(), 0) @@ -63,9 +60,7 @@ def test_only_owner_collaborator_or_admin_can_create_visualization(self): rv = self.make_request("post", "/api/visualizations", data=data, user=admin) self.assertEqual(rv.status_code, 200) - rv = self.make_request( - "post", "/api/visualizations", data=data, user=other_user - ) + rv = self.make_request("post", "/api/visualizations", data=data, user=other_user) self.assertEqual(rv.status_code, 403) self.make_request( @@ -73,14 +68,10 @@ def test_only_owner_collaborator_or_admin_can_create_visualization(self): "/api/queries/{}/acl".format(query.id), data={"access_type": "modify", "user_id": other_user.id}, ) - rv = self.make_request( - "post", "/api/visualizations", data=data, user=other_user - ) + rv = self.make_request("post", "/api/visualizations", data=data, user=other_user) self.assertEqual(rv.status_code, 200) - rv = self.make_request( - "post", "/api/visualizations", data=data, user=admin_from_diff_org - ) + rv = self.make_request("post", "/api/visualizations", data=data, user=admin_from_diff_org) self.assertEqual(rv.status_code, 404) def test_only_owner_collaborator_or_admin_can_edit_visualization(self): @@ -157,8 +148,6 @@ def test_deleting_a_visualization_deletes_dashboard_widgets(self): vis = self.factory.create_visualization() widget = self.factory.create_widget(visualization=vis) - rv = self.make_request("delete", "/api/visualizations/{}".format(vis.id)) + self.make_request("delete", "/api/visualizations/{}".format(vis.id)) - self.assertIsNone( - models.Widget.query.filter(models.Widget.id == widget.id).first() - ) + self.assertIsNone(models.Widget.query.filter(models.Widget.id == widget.id).first()) diff --git a/tests/handlers/test_widgets.py b/tests/handlers/test_widgets.py index 85cb522695..6756ecf606 100644 --- a/tests/handlers/test_widgets.py +++ b/tests/handlers/test_widgets.py @@ -1,5 +1,5 @@ -from tests import BaseTestCase from redash import models +from tests import BaseTestCase class WidgetAPITest(BaseTestCase): @@ -62,7 +62,5 @@ def test_delete_widget(self): rv = self.make_request("delete", "/api/widgets/{0}".format(widget.id)) self.assertEqual(rv.status_code, 200) - dashboard = models.Dashboard.get_by_slug_and_org( - widget.dashboard.slug, widget.dashboard.org - ) + dashboard = models.Dashboard.get_by_slug_and_org(widget.dashboard.slug, widget.dashboard.org) self.assertEqual(dashboard.widgets.count(), 0) diff --git a/tests/metrics/test_database.py b/tests/metrics/test_database.py index c0553409e2..7206cc75c4 100644 --- a/tests/metrics/test_database.py +++ b/tests/metrics/test_database.py @@ -1,4 +1,5 @@ -from mock import patch, ANY +from mock import ANY, patch + from tests import BaseTestCase diff --git a/tests/metrics/test_request.py b/tests/metrics/test_request.py index c04f69a3f5..64dc42b92c 100644 --- a/tests/metrics/test_request.py +++ b/tests/metrics/test_request.py @@ -1,4 +1,5 @@ -from mock import patch, ANY +from mock import ANY, patch + from tests import BaseTestCase diff --git a/tests/models/test_alerts.py b/tests/models/test_alerts.py index 2f1f999fe5..a7d3c0bde8 100644 --- a/tests/models/test_alerts.py +++ b/tests/models/test_alerts.py @@ -1,7 +1,8 @@ from unittest import TestCase -from tests import BaseTestCase -from redash.models import Alert, db, next_state, OPERATORS + +from redash.models import OPERATORS, Alert, db, next_state from redash.utils import json_dumps +from tests import BaseTestCase class TestAlertAll(BaseTestCase): @@ -41,18 +42,14 @@ def test_return_each_alert_only_once(self): def get_results(value): - return json_dumps( - {"rows": [{"foo": value}], "columns": [{"name": "foo", "type": "STRING"}]} - ) + return json_dumps({"rows": [{"foo": value}], "columns": [{"name": "foo", "type": "STRING"}]}) class TestAlertEvaluate(BaseTestCase): def create_alert(self, results, column="foo", value="1"): result = self.factory.create_query_result(data=results) query = self.factory.create_query(latest_query_data_id=result.id) - alert = self.factory.create_alert( - query_rel=query, options={"op": "equals", "column": column, "value": value} - ) + alert = self.factory.create_alert(query_rel=query, options={"op": "equals", "column": column, "value": value}) return alert def test_evaluate_triggers_alert_when_equal(self): @@ -68,9 +65,7 @@ def test_evaluate_return_unknown_when_missing_column(self): self.assertEqual(alert.evaluate(), Alert.UNKNOWN_STATE) def test_evaluate_return_unknown_when_empty_results(self): - results = json_dumps( - {"rows": [], "columns": [{"name": "foo", "type": "STRING"}]} - ) + results = json_dumps({"rows": [], "columns": [{"name": "foo", "type": "STRING"}]}) alert = self.create_alert(results) self.assertEqual(alert.evaluate(), Alert.UNKNOWN_STATE) @@ -78,28 +73,18 @@ def test_evaluate_return_unknown_when_empty_results(self): class TestNextState(TestCase): def test_numeric_value(self): self.assertEqual(Alert.TRIGGERED_STATE, next_state(OPERATORS.get("=="), 1, "1")) - self.assertEqual( - Alert.TRIGGERED_STATE, next_state(OPERATORS.get("=="), 1, "1.0") - ) + self.assertEqual(Alert.TRIGGERED_STATE, next_state(OPERATORS.get("=="), 1, "1.0")) self.assertEqual(Alert.TRIGGERED_STATE, next_state(OPERATORS.get(">"), "5", 1)) def test_numeric_value_and_plain_string(self): - self.assertEqual( - Alert.UNKNOWN_STATE, next_state(OPERATORS.get("=="), 1, "string") - ) + self.assertEqual(Alert.UNKNOWN_STATE, next_state(OPERATORS.get("=="), 1, "string")) def test_non_numeric_value(self): self.assertEqual(Alert.OK_STATE, next_state(OPERATORS.get("=="), "string", "1.0")) def test_string_value(self): - self.assertEqual( - Alert.TRIGGERED_STATE, next_state(OPERATORS.get("=="), "string", "string") - ) + self.assertEqual(Alert.TRIGGERED_STATE, next_state(OPERATORS.get("=="), "string", "string")) def test_boolean_value(self): - self.assertEqual( - Alert.TRIGGERED_STATE, next_state(OPERATORS.get("=="), False, "false") - ) - self.assertEqual( - Alert.TRIGGERED_STATE, next_state(OPERATORS.get("!="), False, "true") - ) + self.assertEqual(Alert.TRIGGERED_STATE, next_state(OPERATORS.get("=="), False, "false")) + self.assertEqual(Alert.TRIGGERED_STATE, next_state(OPERATORS.get("!="), False, "true")) diff --git a/tests/models/test_api_keys.py b/tests/models/test_api_keys.py index f01d91931e..c2f15a5559 100644 --- a/tests/models/test_api_keys.py +++ b/tests/models/test_api_keys.py @@ -1,5 +1,5 @@ -from tests import BaseTestCase from redash.models import ApiKey +from tests import BaseTestCase class TestApiKeyGetByObject(BaseTestCase): diff --git a/tests/models/test_changes.py b/tests/models/test_changes.py index e9847b0a0a..d968a35ac3 100644 --- a/tests/models/test_changes.py +++ b/tests/models/test_changes.py @@ -1,7 +1,6 @@ +from redash.models import Change, ChangeTrackingMixin, Query, db from tests import BaseTestCase -from redash.models import db, Query, Change, ChangeTrackingMixin - def create_object(factory): obj = Query( diff --git a/tests/models/test_dashboards.py b/tests/models/test_dashboards.py index e3ccb75917..2aef2e566c 100644 --- a/tests/models/test_dashboards.py +++ b/tests/models/test_dashboards.py @@ -1,5 +1,5 @@ +from redash.models import Dashboard, db from tests import BaseTestCase -from redash.models import db, Dashboard class DashboardTest(BaseTestCase): @@ -51,10 +51,9 @@ def test_returns_drafts_by_the_user(self): self.assertTrue(d in dashboards) self.assertFalse(d2 in dashboards) - def test_returns_correct_number_of_dashboards(self): # Solving https://github.com/getredash/redash/issues/5466 - + usr = self.factory.create_user() ds1 = self.factory.create_data_source() @@ -63,8 +62,12 @@ def test_returns_correct_number_of_dashboards(self): qry1 = self.factory.create_query(data_source=ds1, user=usr) qry2 = self.factory.create_query(data_source=ds2, user=usr) - viz1 = self.factory.create_visualization(query_rel=qry1, ) - viz2 = self.factory.create_visualization(query_rel=qry2, ) + viz1 = self.factory.create_visualization( + query_rel=qry1, + ) + viz2 = self.factory.create_visualization( + query_rel=qry2, + ) def create_dashboard(): dash = self.factory.create_dashboard(name="boy howdy", user=usr) @@ -73,9 +76,9 @@ def create_dashboard(): return dash - d1 = create_dashboard() - d2 = create_dashboard() - + create_dashboard() + create_dashboard() + results = Dashboard.all(self.factory.org, usr.group_ids, usr.id) self.assertEqual(2, results.count(), "The incorrect number of dashboards were returned") diff --git a/tests/models/test_data_sources.py b/tests/models/test_data_sources.py index fa503979d6..dc53444cdd 100644 --- a/tests/models/test_data_sources.py +++ b/tests/models/test_data_sources.py @@ -1,18 +1,16 @@ import mock from mock import patch -from tests import BaseTestCase from redash.models import DataSource, Query, QueryResult from redash.utils.configuration import ConfigurationContainer +from tests import BaseTestCase class DataSourceTest(BaseTestCase): def test_get_schema(self): return_value = [{"name": "table", "columns": []}] - with mock.patch( - "redash.query_runner.pg.PostgreSQL.get_schema" - ) as patched_get_schema: + with mock.patch("redash.query_runner.pg.PostgreSQL.get_schema") as patched_get_schema: patched_get_schema.return_value = return_value schema = self.factory.data_source.get_schema() @@ -21,9 +19,7 @@ def test_get_schema(self): def test_get_schema_uses_cache(self): return_value = [{"name": "table", "columns": []}] - with mock.patch( - "redash.query_runner.pg.PostgreSQL.get_schema" - ) as patched_get_schema: + with mock.patch("redash.query_runner.pg.PostgreSQL.get_schema") as patched_get_schema: patched_get_schema.return_value = return_value self.factory.data_source.get_schema() @@ -34,9 +30,7 @@ def test_get_schema_uses_cache(self): def test_get_schema_skips_cache_with_refresh_true(self): return_value = [{"name": "table", "columns": []}] - with mock.patch( - "redash.query_runner.pg.PostgreSQL.get_schema" - ) as patched_get_schema: + with mock.patch("redash.query_runner.pg.PostgreSQL.get_schema") as patched_get_schema: patched_get_schema.return_value = return_value self.factory.data_source.get_schema() @@ -85,9 +79,7 @@ def test_model_uses_schema_sorter(self): {"name": "zoo", "columns": ["is_cow", "is_snake", "is_zebra"]}, ] - with mock.patch( - "redash.query_runner.pg.PostgreSQL.get_schema" - ) as patched_get_schema: + with mock.patch("redash.query_runner.pg.PostgreSQL.get_schema") as patched_get_schema: patched_get_schema.return_value = orig_schema out_schema = self.factory.data_source.get_schema() @@ -157,9 +149,7 @@ def test_deletes_child_models(self): data_source.delete() self.assertIsNone(DataSource.query.get(data_source.id)) - self.assertEqual( - 0, QueryResult.query.filter(QueryResult.data_source == data_source).count() - ) + self.assertEqual(0, QueryResult.query.filter(QueryResult.data_source == data_source).count()) @patch("redash.redis_connection.delete") def test_deletes_schema(self, mock_redis): diff --git a/tests/models/test_parameterized_query.py b/tests/models/test_parameterized_query.py index 3d290b4323..a28bf7921f 100644 --- a/tests/models/test_parameterized_query.py +++ b/tests/models/test_parameterized_query.py @@ -1,11 +1,12 @@ -from unittest import TestCase -from mock import patch from collections import namedtuple +from unittest import TestCase + import pytest +from mock import patch from redash.models.parameterized_query import ( - ParameterizedQuery, InvalidParameterError, + ParameterizedQuery, QueryDetachedFromDataSourceError, dropdown_values, ) @@ -21,9 +22,7 @@ def test_finds_all_params_when_missing(self): self.assertEqual(set(["param", "table"]), query.missing_params) def test_finds_all_params(self): - query = ParameterizedQuery("SELECT {{param}} FROM {{table}}").apply( - {"param": "value", "table": "value"} - ) + query = ParameterizedQuery("SELECT {{param}} FROM {{table}}").apply({"param": "value", "table": "value"}) self.assertEqual(set([]), query.missing_params) def test_deduplicates_params(self): @@ -216,9 +215,7 @@ def test_validates_date_range_parameters(self): schema = [{"name": "bar", "type": "date-range"}] query = ParameterizedQuery("foo {{bar.start}} {{bar.end}}", schema) - query.apply( - {"bar": {"start": "2000-01-01 12:00:00", "end": "2000-12-31 12:00:00"}} - ) + query.apply({"bar": {"start": "2000-01-01 12:00:00", "end": "2000-12-31 12:00:00"}}) self.assertEqual("foo 2000-01-01 12:00:00 2000-12-31 12:00:00", query.text) diff --git a/tests/models/test_permissions.py b/tests/models/test_permissions.py index 9a0ef15c1c..231f364a8f 100644 --- a/tests/models/test_permissions.py +++ b/tests/models/test_permissions.py @@ -1,6 +1,6 @@ -from tests import BaseTestCase from redash.models import AccessPermission from redash.permissions import ACCESS_TYPE_MODIFY, ACCESS_TYPE_VIEW +from tests import BaseTestCase class TestAccessPermissionGrant(BaseTestCase): @@ -40,21 +40,17 @@ def test_returns_existing_object_if_exists(self): class TestAccessPermissionRevoke(BaseTestCase): def test_deletes_nothing_when_no_permission_exists(self): q = self.factory.create_query() - self.assertEqual( - 0, AccessPermission.revoke(q, self.factory.user, ACCESS_TYPE_MODIFY) - ) + self.assertEqual(0, AccessPermission.revoke(q, self.factory.user, ACCESS_TYPE_MODIFY)) def test_deletes_permission(self): q = self.factory.create_query() - permission = AccessPermission.grant( + AccessPermission.grant( obj=q, access_type=ACCESS_TYPE_MODIFY, grantor=self.factory.user, grantee=self.factory.user, ) - self.assertEqual( - 1, AccessPermission.revoke(q, self.factory.user, ACCESS_TYPE_MODIFY) - ) + self.assertEqual(1, AccessPermission.revoke(q, self.factory.user, ACCESS_TYPE_MODIFY)) def test_deletes_permission_for_only_given_grantee_on_given_grant_type(self): q = self.factory.create_query() @@ -87,14 +83,14 @@ def test_deletes_permission_for_only_given_grantee_on_given_grant_type(self): def test_deletes_all_permissions_if_no_type_given(self): q = self.factory.create_query() - permission = AccessPermission.grant( + AccessPermission.grant( obj=q, access_type=ACCESS_TYPE_MODIFY, grantor=self.factory.user, grantee=self.factory.user, ) - permission = AccessPermission.grant( + AccessPermission.grant( obj=q, access_type=ACCESS_TYPE_VIEW, grantor=self.factory.user, diff --git a/tests/models/test_queries.py b/tests/models/test_queries.py index 93b95ac69b..85f1cac5cc 100644 --- a/tests/models/test_queries.py +++ b/tests/models/test_queries.py @@ -1,9 +1,11 @@ -from tests import BaseTestCase import datetime -from redash.models import Query, QueryResult, Group, Event, db -from redash.utils import utcnow, gen_query_hash + import mock +from redash.models import Event, Group, Query, QueryResult, db +from redash.utils import gen_query_hash, utcnow +from tests import BaseTestCase + class QueryTest(BaseTestCase): def test_changing_query_text_changes_hash(self): @@ -55,9 +57,7 @@ def test_search_finds_in_multi_byte_name_and_description(self): q2 = self.factory.create_query(description="日本語の説明文テスト") q3 = self.factory.create_query(description="Testing search") - queries = Query.search( - "テスト", [self.factory.default_group.id], multi_byte_search=True - ) + queries = Query.search("テスト", [self.factory.default_group.id], multi_byte_search=True) self.assertIn(q1, queries) self.assertIn(q2, queries) @@ -96,9 +96,7 @@ def test_search_respects_groups(self): self.assertIn(q2, queries) self.assertIn(q3, queries) - queries = list( - Query.search("Testing", [other_group.id, self.factory.default_group.id]) - ) + queries = list(Query.search("Testing", [other_group.id, self.factory.default_group.id])) self.assertIn(q1, queries) self.assertIn(q2, queries) self.assertIn(q3, queries) @@ -114,7 +112,7 @@ def test_returns_each_query_only_once(self): ds = self.factory.create_data_source(group=other_group) ds.add_group(second_group, False) - q1 = self.factory.create_query(description="Testing search", data_source=ds) + self.factory.create_query(description="Testing search", data_source=ds) db.session.flush() queries = list( Query.search( @@ -143,9 +141,7 @@ def test_search_query_parser_or(self): q1 = self.factory.create_query(name="Testing") q2 = self.factory.create_query(name="search") - queries = list( - Query.search("testing or search", [self.factory.default_group.id]) - ) + queries = list(Query.search("testing or search", [self.factory.default_group.id])) self.assertIn(q1, queries) self.assertIn(q2, queries) @@ -162,9 +158,7 @@ def test_search_query_parser_parenthesis(self): q2 = self.factory.create_query(name="Testing searching") q3 = self.factory.create_query(name="Testing finding") - queries = list( - Query.search("(testing search) or finding", [self.factory.default_group.id]) - ) + queries = list(Query.search("(testing search) or finding", [self.factory.default_group.id])) self.assertIn(q1, queries) self.assertIn(q2, queries) self.assertIn(q3, queries) @@ -197,12 +191,8 @@ def test_past_scheduled_queries(self): query = self.factory.create_query() one_day_ago = (utcnow() - datetime.timedelta(days=1)).strftime("%Y-%m-%d") one_day_later = (utcnow() + datetime.timedelta(days=1)).strftime("%Y-%m-%d") - query1 = self.factory.create_query( - schedule={"interval": "3600", "until": one_day_ago} - ) - query2 = self.factory.create_query( - schedule={"interval": "3600", "until": one_day_later} - ) + query1 = self.factory.create_query(schedule={"interval": "3600", "until": one_day_ago}) + query2 = self.factory.create_query(schedule={"interval": "3600", "until": one_day_later}) oq = staticmethod(lambda: [query1, query2]) with mock.patch.object(query.query.filter(), "order_by", oq): res = query.past_scheduled_queries() @@ -266,16 +256,12 @@ def test_recent_for_user(self): object_id=q1.id, ) db.session.add(e) - recent = Query.recent( - [self.factory.default_group.id], user_id=self.factory.user.id - ) + recent = Query.recent([self.factory.default_group.id], user_id=self.factory.user.id) self.assertIn(q1, recent) self.assertNotIn(q2, recent) - recent = Query.recent( - [self.factory.default_group.id], user_id=self.factory.user.id + 1 - ) + recent = Query.recent([self.factory.default_group.id], user_id=self.factory.user.id + 1) self.assertNotIn(q1, recent) self.assertNotIn(q2, recent) @@ -328,11 +314,7 @@ def test_returns_drafts_by_the_user(self): def test_returns_only_queries_from_groups_the_user_is_member_in(self): q = self.factory.create_query() - q2 = self.factory.create_query( - data_source=self.factory.create_data_source( - group=self.factory.create_group() - ) - ) + q2 = self.factory.create_query(data_source=self.factory.create_data_source(group=self.factory.create_group())) queries = Query.by_user(self.factory.user) @@ -352,14 +334,10 @@ def assert_visualizations(self, origin_q, origin_v, forked_q, forked_v): def test_fork_with_visualizations(self): # prepare original query and visualizations data_source = self.factory.create_data_source(group=self.factory.create_group()) - query = self.factory.create_query( - data_source=data_source, description="this is description" - ) + query = self.factory.create_query(data_source=data_source, description="this is description") # create default TABLE - query factory does not create it - self.factory.create_visualization( - query_rel=query, name="Table", description="", type="TABLE", options="{}" - ) + self.factory.create_visualization(query_rel=query, name="Table", description="", type="TABLE", options="{}") visualization_chart = self.factory.create_visualization( query_rel=query, @@ -387,12 +365,8 @@ def test_fork_with_visualizations(self): count_table += 1 forked_table = v - self.assert_visualizations( - query, visualization_chart, forked_query, forked_visualization_chart - ) - self.assert_visualizations( - query, visualization_box, forked_query, forked_visualization_box - ) + self.assert_visualizations(query, visualization_chart, forked_query, forked_visualization_chart) + self.assert_visualizations(query, visualization_box, forked_query, forked_visualization_box) self.assertEqual(forked_query.org, query.org) self.assertEqual(forked_query.data_source, query.data_source) @@ -412,14 +386,10 @@ def test_fork_with_visualizations(self): def test_fork_from_query_that_has_no_visualization(self): # prepare original query and visualizations data_source = self.factory.create_data_source(group=self.factory.create_group()) - query = self.factory.create_query( - data_source=data_source, description="this is description" - ) + query = self.factory.create_query(data_source=data_source, description="this is description") # create default TABLE - query factory does not create it - self.factory.create_visualization( - query_rel=query, name="Table", description="", type="TABLE", options="{}" - ) + self.factory.create_visualization(query_rel=query, name="Table", description="", type="TABLE", options="{}") fork_user = self.factory.create_user() @@ -436,7 +406,7 @@ def test_fork_from_query_that_has_no_visualization(self): self.assertEqual(count_vis, 1) def test_fork_keeps_query_tags(self): - query = self.factory.create_query(tags=['test', 'query']) + query = self.factory.create_query(tags=["test", "query"]) forked_query = query.fork(self.factory.user) @@ -498,9 +468,7 @@ def test_doesnt_update_queries_with_different_hash(self): def test_doesnt_update_queries_with_different_data_source(self): query1 = self.factory.create_query(query_text=self.query) query2 = self.factory.create_query(query_text=self.query) - query3 = self.factory.create_query( - query_text=self.query, data_source=self.factory.create_data_source() - ) + query3 = self.factory.create_query(query_text=self.query, data_source=self.factory.create_data_source()) query_result = QueryResult.store_result( self.data_source.org_id, diff --git a/tests/models/test_query_results.py b/tests/models/test_query_results.py index 9695c40918..bcaa5e5651 100644 --- a/tests/models/test_query_results.py +++ b/tests/models/test_query_results.py @@ -1,35 +1,29 @@ import datetime - from unittest import TestCase -from tests import BaseTestCase + from mock import patch from redash import models from redash.models import DBPersistence -from redash.utils import utcnow, json_dumps +from redash.utils import utcnow +from tests import BaseTestCase class QueryResultTest(BaseTestCase): def test_get_latest_returns_none_if_not_found(self): - found_query_result = models.QueryResult.get_latest( - self.factory.data_source, "SELECT 1", 60 - ) + found_query_result = models.QueryResult.get_latest(self.factory.data_source, "SELECT 1", 60) self.assertIsNone(found_query_result) def test_get_latest_returns_when_found(self): qr = self.factory.create_query_result() - found_query_result = models.QueryResult.get_latest( - qr.data_source, qr.query_text, 60 - ) + found_query_result = models.QueryResult.get_latest(qr.data_source, qr.query_text, 60) self.assertEqual(qr, found_query_result) def test_get_latest_doesnt_return_query_from_different_data_source(self): qr = self.factory.create_query_result() data_source = self.factory.create_data_source() - found_query_result = models.QueryResult.get_latest( - data_source, qr.query_text, 60 - ) + found_query_result = models.QueryResult.get_latest(data_source, qr.query_text, 60) self.assertIsNone(found_query_result) @@ -37,9 +31,7 @@ def test_get_latest_doesnt_return_if_ttl_expired(self): yesterday = utcnow() - datetime.timedelta(days=1) qr = self.factory.create_query_result(retrieved_at=yesterday) - found_query_result = models.QueryResult.get_latest( - qr.data_source, qr.query_text, max_age=60 - ) + found_query_result = models.QueryResult.get_latest(qr.data_source, qr.query_text, max_age=60) self.assertIsNone(found_query_result) @@ -47,9 +39,7 @@ def test_get_latest_returns_if_ttl_not_expired(self): yesterday = utcnow() - datetime.timedelta(seconds=30) qr = self.factory.create_query_result(retrieved_at=yesterday) - found_query_result = models.QueryResult.get_latest( - qr.data_source, qr.query_text, max_age=120 - ) + found_query_result = models.QueryResult.get_latest(qr.data_source, qr.query_text, max_age=120) self.assertEqual(found_query_result, qr) @@ -58,9 +48,7 @@ def test_get_latest_returns_the_most_recent_result(self): self.factory.create_query_result(retrieved_at=yesterday) qr = self.factory.create_query_result() - found_query_result = models.QueryResult.get_latest( - qr.data_source, qr.query_text, 60 - ) + found_query_result = models.QueryResult.get_latest(qr.data_source, qr.query_text, 60) self.assertEqual(found_query_result.id, qr.id) @@ -70,9 +58,7 @@ def test_get_latest_returns_the_last_cached_result_for_negative_ttl(self): yesterday = utcnow() + datetime.timedelta(days=-1) qr = self.factory.create_query_result(retrieved_at=yesterday) - found_query_result = models.QueryResult.get_latest( - qr.data_source, qr.query_text, -1 - ) + found_query_result = models.QueryResult.get_latest(qr.data_source, qr.query_text, -1) self.assertEqual(found_query_result.id, qr.id) @@ -107,6 +93,6 @@ def test_calls_json_loads_only_once(self, json_loads_patch): p = DBPersistence() json_data = '{"test": 1}' p.data = json_data - a = p.data - b = p.data + a = p.data # noqa + b = p.data # noqa json_loads_patch.assert_called_once_with(json_data) diff --git a/tests/models/test_users.py b/tests/models/test_users.py index e9e0dffdb8..9ad46a03dd 100644 --- a/tests/models/test_users.py +++ b/tests/models/test_users.py @@ -1,13 +1,8 @@ -from tests import BaseTestCase, authenticated_user - from redash import redis_connection from redash.models import User, db +from redash.models.users import LAST_ACTIVE_KEY, sync_last_active_at from redash.utils import dt_from_timestamp -from redash.models.users import ( - sync_last_active_at, - update_user_active_at, - LAST_ACTIVE_KEY, -) +from tests import BaseTestCase, authenticated_user class TestUserUpdateGroupAssignments(BaseTestCase): @@ -32,9 +27,7 @@ def test_update_group_assignments(self): class TestUserFindByEmail(BaseTestCase): def test_finds_users(self): user = self.factory.create_user(email="test@example.com") - user2 = self.factory.create_user( - email="test@example.com", org=self.factory.create_org() - ) + user2 = self.factory.create_user(email="test@example.com", org=self.factory.create_org()) users = User.find_by_email(user.email) self.assertIn(user, users) @@ -98,17 +91,13 @@ def test_userdetail_db_default_save(self): self.assertEqual(user.details["test"], 1) self.assertEqual( user_reloaded, - User.query.filter( - User.details["test"].astext.cast(db.Integer) == 1 - ).first(), + User.query.filter(User.details["test"].astext.cast(db.Integer) == 1).first(), ) def test_sync(self): with authenticated_user(self.client) as user: - rv = self.client.get("/default/") - timestamp = dt_from_timestamp( - redis_connection.hget(LAST_ACTIVE_KEY, user.id) - ) + self.client.get("/default/") + timestamp = dt_from_timestamp(redis_connection.hget(LAST_ACTIVE_KEY, user.id)) sync_last_active_at() user_reloaded = User.query.filter(User.id == user.id).first() diff --git a/tests/query_runner/test_athena.py b/tests/query_runner/test_athena.py index 24552a3fc8..50ec54286d 100644 --- a/tests/query_runner/test_athena.py +++ b/tests/query_runner/test_athena.py @@ -12,7 +12,6 @@ class TestGlueSchema(TestCase): def setUp(self): - client = botocore.session.get_session().create_client( "glue", region_name="mars-east-1", @@ -32,9 +31,7 @@ def test_external_table(self): """Unpartitioned table crawled through a JDBC connection""" query_runner = Athena({"glue": True, "region": "mars-east-1"}) - self.stubber.add_response( - "get_databases", {"DatabaseList": [{"Name": "test1"}]}, {} - ) + self.stubber.add_response("get_databases", {"DatabaseList": [{"Name": "test1"}]}, {}) self.stubber.add_response( "get_tables", { @@ -77,9 +74,7 @@ def test_external_table(self): {"DatabaseName": "test1"}, ) with self.stubber: - assert query_runner.get_schema() == [ - {"columns": ["row_id"], "name": "test1.jdbc_table"} - ] + assert query_runner.get_schema() == [{"columns": ["row_id"], "name": "test1.jdbc_table"}] def test_partitioned_table(self): """ @@ -88,9 +83,7 @@ def test_partitioned_table(self): query_runner = Athena({"glue": True, "region": "mars-east-1"}) - self.stubber.add_response( - "get_databases", {"DatabaseList": [{"Name": "test1"}]}, {} - ) + self.stubber.add_response("get_databases", {"DatabaseList": [{"Name": "test1"}]}, {}) self.stubber.add_response( "get_tables", { @@ -130,16 +123,12 @@ def test_partitioned_table(self): {"DatabaseName": "test1"}, ) with self.stubber: - assert query_runner.get_schema() == [ - {"columns": ["sk", "category"], "name": "test1.partitioned_table"} - ] + assert query_runner.get_schema() == [{"columns": ["sk", "category"], "name": "test1.partitioned_table"}] def test_view(self): query_runner = Athena({"glue": True, "region": "mars-east-1"}) - self.stubber.add_response( - "get_databases", {"DatabaseList": [{"Name": "test1"}]}, {} - ) + self.stubber.add_response("get_databases", {"DatabaseList": [{"Name": "test1"}]}, {}) self.stubber.add_response( "get_tables", { @@ -166,9 +155,7 @@ def test_view(self): {"DatabaseName": "test1"}, ) with self.stubber: - assert query_runner.get_schema() == [ - {"columns": ["sk"], "name": "test1.view"} - ] + assert query_runner.get_schema() == [{"columns": ["sk"], "name": "test1.view"}] def test_dodgy_table_does_not_break_schema_listing(self): """ @@ -178,9 +165,7 @@ def test_dodgy_table_does_not_break_schema_listing(self): """ query_runner = Athena({"glue": True, "region": "mars-east-1"}) - self.stubber.add_response( - "get_databases", {"DatabaseList": [{"Name": "test1"}]}, {} - ) + self.stubber.add_response("get_databases", {"DatabaseList": [{"Name": "test1"}]}, {}) self.stubber.add_response( "get_tables", { @@ -210,32 +195,28 @@ def test_dodgy_table_does_not_break_schema_listing(self): {"DatabaseName": "test1"}, ) with self.stubber: - assert query_runner.get_schema() == [ - {"columns": ["region"], "name": "test1.csv"} - ] + assert query_runner.get_schema() == [{"columns": ["region"], "name": "test1.csv"}] def test_no_storage_descriptor_table(self): """ For some reason, not all Glue tables contain a "StorageDescriptor" entry. """ - query_runner = Athena({'glue': True, 'region': 'mars-east-1'}) + query_runner = Athena({"glue": True, "region": "mars-east-1"}) - self.stubber.add_response('get_databases', {'DatabaseList': [{'Name': 'test1'}]}, {}) + self.stubber.add_response("get_databases", {"DatabaseList": [{"Name": "test1"}]}, {}) self.stubber.add_response( - 'get_tables', + "get_tables", { - 'TableList': [ + "TableList": [ { - 'Name': 'no_storage_descriptor_table', - 'PartitionKeys': [], - 'TableType': 'EXTERNAL_TABLE', - 'Parameters': { - 'EXTERNAL': 'TRUE' - }, + "Name": "no_storage_descriptor_table", + "PartitionKeys": [], + "TableType": "EXTERNAL_TABLE", + "Parameters": {"EXTERNAL": "TRUE"}, } ] }, - {'DatabaseName': 'test1'}, + {"DatabaseName": "test1"}, ) with self.stubber: assert query_runner.get_schema() == [] diff --git a/tests/query_runner/test_basesql_queryrunner.py b/tests/query_runner/test_basesql_queryrunner.py index 01957b330d..b54f4936be 100644 --- a/tests/query_runner/test_basesql_queryrunner.py +++ b/tests/query_runner/test_basesql_queryrunner.py @@ -1,11 +1,10 @@ import unittest -from redash.query_runner import BaseSQLQueryRunner, BaseQueryRunner +from redash.query_runner import BaseQueryRunner, BaseSQLQueryRunner from redash.utils import gen_query_hash class TestBaseSQLQueryRunner(unittest.TestCase): - def setUp(self): self.query_runner = BaseSQLQueryRunner({}) @@ -32,7 +31,7 @@ def test_check_query_with_limit(self): def test_check_query_with_offset(self): query = "SELECT * LIMIT 5 OFFSET 3" self.assertEqual(False, self.query_runner.query_is_select_no_limit(query)) - + def test_add_limit_query_no_limit(self): query = "SELECT *" self.assertEqual("SELECT * LIMIT 1000", self.query_runner.add_limit_to_query(query)) @@ -62,9 +61,11 @@ def test_apply_auto_limit_origin_no_limit_2(self): self.assertEqual(origin_query_text + " LIMIT 1000", query_text) def test_apply_auto_limit_non_select_query(self): - origin_query_text = ("create table execution_times as " - "(select id, retrieved_at, data_source_id, query, runtime, query_hash " - "from query_results order by 1 desc)") + origin_query_text = ( + "create table execution_times as " + "(select id, retrieved_at, data_source_id, query, runtime, query_hash " + "from query_results order by 1 desc)" + ) query_text = self.query_runner.apply_auto_limit(origin_query_text, True) self.assertEqual(origin_query_text, query_text) @@ -74,30 +75,29 @@ def test_apply_auto_limit_error_query(self): self.assertEqual(origin_query_text, query_text) def test_apply_auto_limit_multi_query_add_limit_1(self): - origin_query_text = ("insert into execution_times (id, retrieved_at, data_source_id, query, runtime, query_hash) " - "select id, retrieved_at, data_source_id, query, runtime, query_hash from query_results " - "where id > (select max(id) from execution_times);\n" - "select max(id), 'execution_times' as table_name from execution_times " - "union all " - "select max(id), 'query_results' as table_name from query_results") + origin_query_text = ( + "insert into execution_times (id, retrieved_at, data_source_id, query, runtime, query_hash) " + "select id, retrieved_at, data_source_id, query, runtime, query_hash from query_results " + "where id > (select max(id) from execution_times);\n" + "select max(id), 'execution_times' as table_name from execution_times " + "union all " + "select max(id), 'query_results' as table_name from query_results" + ) query_text = self.query_runner.apply_auto_limit(origin_query_text, True) self.assertEqual(origin_query_text + " LIMIT 1000", query_text) def test_apply_auto_limit_multi_query_add_limit_2(self): - origin_query_text = "use database demo;\n" \ - "select * from data" + origin_query_text = "use database demo;\n" "select * from data" query_text = self.query_runner.apply_auto_limit(origin_query_text, True) self.assertEqual(origin_query_text + " LIMIT 1000", query_text) def test_apply_auto_limit_multi_query_end_with_punc(self): - origin_query_text = ("select * from table1;\n" - "select * from table2") + origin_query_text = "select * from table1;\n" "select * from table2" query_text = self.query_runner.apply_auto_limit(origin_query_text, True) self.assertEqual("select * from table1;\nselect * from table2 LIMIT 1000", query_text) def test_apply_auto_limit_multi_query_last_not_select(self): - origin_query_text = ("select * from table1;\n" - "CREATE TABLE Persons (PersonID int)") + origin_query_text = "select * from table1;\n" "CREATE TABLE Persons (PersonID int)" query_text = self.query_runner.apply_auto_limit(origin_query_text, True) self.assertEqual(origin_query_text, query_text) @@ -120,15 +120,15 @@ def test_gen_query_hash_baseSQL(self): origin_query_text = "select *" expected_query_text = "select * LIMIT 1000" base_runner = BaseQueryRunner({}) - self.assertEqual(base_runner.gen_query_hash(expected_query_text), - self.query_runner.gen_query_hash(origin_query_text, True)) + self.assertEqual( + base_runner.gen_query_hash(expected_query_text), self.query_runner.gen_query_hash(origin_query_text, True) + ) def test_gen_query_hash_NoneSQL(self): origin_query_text = "select *" base_runner = BaseQueryRunner({}) - self.assertEqual(gen_query_hash(origin_query_text), - base_runner.gen_query_hash(origin_query_text, True)) + self.assertEqual(gen_query_hash(origin_query_text), base_runner.gen_query_hash(origin_query_text, True)) -if __name__ == '__main__': +if __name__ == "__main__": unittest.main() diff --git a/tests/query_runner/test_cass.py b/tests/query_runner/test_cass.py index 6f7fcca78d..5b6e531f73 100644 --- a/tests/query_runner/test_cass.py +++ b/tests/query_runner/test_cass.py @@ -1,4 +1,3 @@ -import shutil import ssl from unittest import TestCase @@ -6,17 +5,16 @@ class TestCassandra(TestCase): - def test_generate_ssl_options_dict_creates_plain_protocol_dict(self): - expected = {'ssl_version': ssl.PROTOCOL_TLSv1_2} + expected = {"ssl_version": ssl.PROTOCOL_TLSv1_2} actual = generate_ssl_options_dict("PROTOCOL_TLSv1_2") self.assertDictEqual(expected, actual) def test_generate_ssl_options_dict_creates_certificate_dict(self): expected = { - 'ssl_version': ssl.PROTOCOL_TLSv1_2, - 'ca_certs': 'some/path', - 'cert_reqs': ssl.CERT_REQUIRED, + "ssl_version": ssl.PROTOCOL_TLSv1_2, + "ca_certs": "some/path", + "cert_reqs": ssl.CERT_REQUIRED, } actual = generate_ssl_options_dict("PROTOCOL_TLSv1_2", "some/path") self.assertDictEqual(expected, actual) diff --git a/tests/query_runner/test_clickhouse.py b/tests/query_runner/test_clickhouse.py index fd0221874b..ffae88053a 100644 --- a/tests/query_runner/test_clickhouse.py +++ b/tests/query_runner/test_clickhouse.py @@ -75,9 +75,7 @@ def test_split(self): class TestClickHouse(TestCase): @patch("requests.post") def test_send_single_query(self, post_request): - query_runner = ClickHouse( - {"url": "http://clickhouse:8123", "dbname": "system", "timeout": 60} - ) + query_runner = ClickHouse({"url": "http://clickhouse:8123", "dbname": "system", "timeout": 60}) response = Mock() response.status_code = 200 @@ -116,9 +114,7 @@ def test_send_single_query(self, post_request): @patch("requests.post") def test_send_multi_query(self, post_request): - query_runner = ClickHouse( - {"url": "http://clickhouse:8123", "dbname": "system", "timeout": 60} - ) + query_runner = ClickHouse({"url": "http://clickhouse:8123", "dbname": "system", "timeout": 60}) create_table_response = Mock() create_table_response.status_code = 200 @@ -175,13 +171,9 @@ def test_send_multi_query(self, post_request): FORMAT JSON""", ) - self.assert_session_params( - kwargs, expected_check="1", expected_timeout=60, expected_id=session_id - ) + self.assert_session_params(kwargs, expected_check="1", expected_timeout=60, expected_id=session_id) - def assert_session_params( - self, kwargs, expected_check, expected_timeout, expected_id=None - ): + def assert_session_params(self, kwargs, expected_check, expected_timeout, expected_id=None): self.assertEqual(kwargs["params"]["session_check"], expected_check) self.assertEqual(kwargs["params"]["session_timeout"], expected_timeout) diff --git a/tests/query_runner/test_databricks.py b/tests/query_runner/test_databricks.py index 4c5c3836fa..ec40397eb1 100644 --- a/tests/query_runner/test_databricks.py +++ b/tests/query_runner/test_databricks.py @@ -1,4 +1,5 @@ from unittest import TestCase + from redash.query_runner import split_sql_statements @@ -33,8 +34,8 @@ def test_splits_multiple_statements_by_semicolon(self): """ select 3 -- comment with ; semicolon from table3 - """ - ] + """, + ], ) # - it should keep whitespaces @@ -54,8 +55,8 @@ def test_keeps_original_syntax(self): """ INSERT LoReM IPSUM %^&*() - """ - ] + """, + ], ) self._assertSplitSql( @@ -69,8 +70,8 @@ def test_keeps_original_syntax(self): "set test_var = 'hello'", "select ${test_var}, 123 from table", "select 'qwerty' from ${test_var}", - "select now()" - ] + "select now()", + ], ) # - it should keep all comments to semicolon after statement @@ -96,7 +97,7 @@ def test_keeps_comments(self): -- comment 5 DELETE FROM table """, - ] + ], ) # - it should skip empty statements @@ -115,11 +116,8 @@ def test_skips_empty_statements(self): """ SELECT * FROM table """ - ] + ], ) # special case - if all statements were empty it should return the only empty statement - self._assertSplitSql( - ";; -- comment 1", - [""] - ) + self._assertSplitSql(";; -- comment 1", [""]) diff --git a/tests/query_runner/test_drill.py b/tests/query_runner/test_drill.py index ca0b0e4d44..1c2b93a458 100644 --- a/tests/query_runner/test_drill.py +++ b/tests/query_runner/test_drill.py @@ -2,10 +2,10 @@ from unittest import TestCase from redash.query_runner import ( + TYPE_BOOLEAN, TYPE_DATETIME, TYPE_FLOAT, TYPE_INTEGER, - TYPE_BOOLEAN, TYPE_STRING, ) from redash.query_runner.drill import convert_type, parse_response diff --git a/tests/query_runner/test_elasticsearch2.py b/tests/query_runner/test_elasticsearch2.py index ffa6d4b2de..1a777b1a7c 100644 --- a/tests/query_runner/test_elasticsearch2.py +++ b/tests/query_runner/test_elasticsearch2.py @@ -1,51 +1,32 @@ from unittest import TestCase -from redash.query_runner.elasticsearch2 import ElasticSearch2, XPackSQLElasticSearch +from redash.query_runner.elasticsearch2 import ( + ElasticSearch2, + XPackSQLElasticSearch, +) class TestElasticSearch(TestCase): - def test_parse_mappings(self): mapping_data = { "bank": { "mappings": { "properties": { - "account_number": { - "type": "long" - }, - "balance": { - "type": "long" - }, - "city": { - "fields": { - "keyword": { - "ignore_above": 256, - "type": "keyword" - } - }, - "type": "text" - }, - "geo": { - "properties": { - "lat": { - "type": "long" - }, - "long": { - "type": "long" - } - } - }, + "account_number": {"type": "long"}, + "balance": {"type": "long"}, + "city": {"fields": {"keyword": {"ignore_above": 256, "type": "keyword"}}, "type": "text"}, + "geo": {"properties": {"lat": {"type": "long"}, "long": {"type": "long"}}}, } } } } expected = { - 'bank': { - 'account_number': 'integer', - 'balance': 'integer', - 'city': 'string', - 'geo.lat': 'integer', - 'geo.long': 'integer' + "bank": { + "account_number": "integer", + "balance": "integer", + "city": "string", + "geo.lat": "integer", + "geo.long": "integer", } } self.assertDictEqual(ElasticSearch2._parse_mappings(mapping_data), expected) @@ -54,214 +35,105 @@ def test_parse_aggregation(self): response = { "took": 3, "timed_out": False, - "_shards": { - "total": 1, - "successful": 1, - "skipped": 0, - "failed": 0 - }, - "hits": { - "total": { - "value": 1001, - "relation": "eq" - }, - "max_score": None, - "hits": [] - }, + "_shards": {"total": 1, "successful": 1, "skipped": 0, "failed": 0}, + "hits": {"total": {"value": 1001, "relation": "eq"}, "max_score": None, "hits": []}, "aggregations": { "group_by_state": { "doc_count_error_upper_bound": 0, "sum_other_doc_count": 743, "buckets": [ - { - "key": "TX", - "doc_count": 30 - }, - { - "key": "MD", - "doc_count": 28 - }, - { - "key": "ID", - "doc_count": 27 - }, - ] + {"key": "TX", "doc_count": 30}, + {"key": "MD", "doc_count": 28}, + {"key": "ID", "doc_count": 27}, + ], } - } + }, } expected = { - 'columns': [ - { - 'friendly_name': 'group_by_state', - 'name': 'group_by_state', - 'type': 'string' - }, - { - 'friendly_name': 'group_by_state.doc_count', - 'name': 'group_by_state.doc_count', - 'type': 'integer' - } + "columns": [ + {"friendly_name": "group_by_state", "name": "group_by_state", "type": "string"}, + {"friendly_name": "group_by_state.doc_count", "name": "group_by_state.doc_count", "type": "integer"}, ], - 'rows': [ + "rows": [ { - 'group_by_state': 'TX', - 'group_by_state.doc_count': 30, + "group_by_state": "TX", + "group_by_state.doc_count": 30, }, { - 'group_by_state': 'MD', - 'group_by_state.doc_count': 28, + "group_by_state": "MD", + "group_by_state.doc_count": 28, }, { - 'group_by_state': 'ID', - 'group_by_state.doc_count': 27, - } - ] + "group_by_state": "ID", + "group_by_state.doc_count": 27, + }, + ], } - fields = ['group_by_state', 'group_by_state.doc_count'] + fields = ["group_by_state", "group_by_state.doc_count"] self.assertDictEqual(ElasticSearch2._parse_results(fields, response), expected) def test_parse_sub_aggregation(self): response = { "took": 2, "timed_out": False, - "_shards": { - "total": 1, - "successful": 1, - "skipped": 0, - "failed": 0 - }, - "hits": { - "total": { - "value": 1001, - "relation": "eq" - }, - "max_score": None, - "hits": [] - }, + "_shards": {"total": 1, "successful": 1, "skipped": 0, "failed": 0}, + "hits": {"total": {"value": 1001, "relation": "eq"}, "max_score": None, "hits": []}, "aggregations": { "group_by_state": { "doc_count_error_upper_bound": -1, "sum_other_doc_count": 828, "buckets": [ - { - "key": "CO", - "doc_count": 14, - "average_balance": { - "value": 32460.35714285714 - } - }, - { - "key": "AZ", - "doc_count": 14, - "average_balance": { - "value": 31634.785714285714 - } - } - ] + {"key": "CO", "doc_count": 14, "average_balance": {"value": 32460.35714285714}}, + {"key": "AZ", "doc_count": 14, "average_balance": {"value": 31634.785714285714}}, + ], } - } + }, } expected = { - 'columns': [ + "columns": [ + {"friendly_name": "group_by_state", "name": "group_by_state", "type": "string"}, { - 'friendly_name': 'group_by_state', - 'name': 'group_by_state', - 'type': 'string' + "friendly_name": "group_by_state.average_balance.value", + "name": "group_by_state.average_balance.value", + "type": "float", }, - { - 'friendly_name': 'group_by_state.average_balance.value', - 'name': 'group_by_state.average_balance.value', - 'type': 'float' - } ], - 'rows': [ + "rows": [ { - 'group_by_state': 'CO', - 'group_by_state.average_balance.value': 32460.35714285714, + "group_by_state": "CO", + "group_by_state.average_balance.value": 32460.35714285714, }, { - 'group_by_state': 'AZ', - 'group_by_state.average_balance.value': 31634.785714285714, + "group_by_state": "AZ", + "group_by_state.average_balance.value": 31634.785714285714, }, - ] + ], } - fields = ['group_by_state', 'group_by_state.average_balance.value'] + fields = ["group_by_state", "group_by_state.average_balance.value"] self.assertDictEqual(ElasticSearch2._parse_results(fields, response), expected) class TestXPackSQL(TestCase): - def test_parse_results(self): response = { "columns": [ - { - "name": "account_number", - "type": "long" - }, - { - "name": "firstname", - "type": "text" - }, - { - "name": "geo.lat", - "type": "long" - }, - { - "name": "geo.long", - "type": "long" - }, + {"name": "account_number", "type": "long"}, + {"name": "firstname", "type": "text"}, + {"name": "geo.lat", "type": "long"}, + {"name": "geo.long", "type": "long"}, ], - "rows": [ - [ - 1000, - "Nicolas", - 2423, - 7654 - ], - [ - 999, - "Dorothy", - None, - None - ] - ] + "rows": [[1000, "Nicolas", 2423, 7654], [999, "Dorothy", None, None]], } expected = { - 'columns': [ - { - 'friendly_name': 'account_number', - 'name': 'account_number', - 'type': 'integer' - }, - { - 'friendly_name': 'firstname', - 'name': 'firstname', - 'type': 'string' - }, - { - 'friendly_name': 'geo.lat', - 'name': 'geo.lat', - 'type': 'integer' - }, - { - 'friendly_name': 'geo.long', - 'name': 'geo.long', - 'type': 'integer' - } + "columns": [ + {"friendly_name": "account_number", "name": "account_number", "type": "integer"}, + {"friendly_name": "firstname", "name": "firstname", "type": "string"}, + {"friendly_name": "geo.lat", "name": "geo.lat", "type": "integer"}, + {"friendly_name": "geo.long", "name": "geo.long", "type": "integer"}, + ], + "rows": [ + {"account_number": 1000, "firstname": "Nicolas", "geo.lat": 2423, "geo.long": 7654}, + {"account_number": 999, "firstname": "Dorothy", "geo.lat": None, "geo.long": None}, ], - 'rows': [ - { - 'account_number': 1000, - 'firstname': 'Nicolas', - 'geo.lat': 2423, - 'geo.long': 7654 - }, - { - 'account_number': 999, - 'firstname': 'Dorothy', - 'geo.lat': None, - 'geo.long': None - } - ] } self.assertDictEqual(XPackSQLElasticSearch._parse_results(None, response), expected) diff --git a/tests/query_runner/test_google_spreadsheets.py b/tests/query_runner/test_google_spreadsheets.py index abce4ddb3d..e9eca55950 100644 --- a/tests/query_runner/test_google_spreadsheets.py +++ b/tests/query_runner/test_google_spreadsheets.py @@ -7,13 +7,11 @@ from redash.query_runner.google_spreadsheets import ( TYPE_BOOLEAN, TYPE_STRING, + WorksheetNotFoundError, _get_columns_and_column_names, _value_eval_list, is_url_key, parse_query, -) -from redash.query_runner.google_spreadsheets import ( - WorksheetNotFoundError, parse_spreadsheet, parse_worksheet, ) @@ -27,23 +25,17 @@ def test_handles_unicode(self): def test_handles_boolean(self): values = ["true", "false", "True", "False", "TRUE", "FALSE"] converted_values = [True, False, True, False, True, False] - self.assertEqual( - converted_values, _value_eval_list(values, [TYPE_BOOLEAN] * len(values)) - ) + self.assertEqual(converted_values, _value_eval_list(values, [TYPE_BOOLEAN] * len(values))) def test_handles_empty_values(self): values = ["", None] converted_values = [None, None] - self.assertEqual( - converted_values, _value_eval_list(values, [TYPE_STRING, TYPE_STRING]) - ) + self.assertEqual(converted_values, _value_eval_list(values, [TYPE_STRING, TYPE_STRING])) def test_handles_float(self): values = ["3.14", "-273.15"] converted_values = [3.14, -273.15] - self.assertEqual( - converted_values, _value_eval_list(values, [TYPE_FLOAT, TYPE_FLOAT]) - ) + self.assertEqual(converted_values, _value_eval_list(values, [TYPE_FLOAT, TYPE_FLOAT])) def test_handles_datetime(self): values = ["2018-06-28", "2020-2-29"] @@ -51,9 +43,7 @@ def test_handles_datetime(self): datetime.datetime(2018, 6, 28, 0, 0), datetime.datetime(2020, 2, 29, 0, 0), ] - self.assertEqual( - converted_values, _value_eval_list(values, [TYPE_DATETIME, TYPE_DATETIME]) - ) + self.assertEqual(converted_values, _value_eval_list(values, [TYPE_DATETIME, TYPE_DATETIME])) class TestParseSpreadsheet(TestCase): diff --git a/tests/query_runner/test_http.py b/tests/query_runner/test_http.py index 1eb499eaae..1fa361cb92 100644 --- a/tests/query_runner/test_http.py +++ b/tests/query_runner/test_http.py @@ -1,8 +1,12 @@ -import mock from unittest import TestCase -from redash.utils.requests_session import requests_or_advocate, ConfiguredSession +import mock + from redash.query_runner import BaseHTTPQueryRunner +from redash.utils.requests_session import ( + ConfiguredSession, + requests_or_advocate, +) class RequiresAuthQueryRunner(BaseHTTPQueryRunner): @@ -22,9 +26,7 @@ def test_requires_authentication_true(self): self.assertIn("password", schema["required"]) def test_get_auth_with_values(self): - query_runner = BaseHTTPQueryRunner( - {"username": "username", "password": "password"} - ) + query_runner = BaseHTTPQueryRunner({"username": "username", "password": "password"}) self.assertEqual(query_runner.get_auth(), ("username", "password")) def test_get_auth_empty(self): @@ -33,9 +35,7 @@ def test_get_auth_empty(self): def test_get_auth_empty_requires_authentication(self): query_runner = RequiresAuthQueryRunner({}) - self.assertRaisesRegex( - ValueError, "Username and Password required", query_runner.get_auth - ) + self.assertRaisesRegex(ValueError, "Username and Password required", query_runner.get_auth) @mock.patch.object(ConfiguredSession, "request") def test_get_response_success(self, mock_get): @@ -124,6 +124,4 @@ def test_get_response_generic_exception(self, mock_get): url = "https://example.com/" query_runner = BaseHTTPQueryRunner({}) - self.assertRaisesRegex( - ValueError, exception_message, query_runner.get_response, url - ) + self.assertRaisesRegex(ValueError, exception_message, query_runner.get_response, url) diff --git a/tests/query_runner/test_jql.py b/tests/query_runner/test_jql.py index 0bb01a0f84..de63551e7e 100644 --- a/tests/query_runner/test_jql.py +++ b/tests/query_runner/test_jql.py @@ -1,4 +1,5 @@ from unittest import TestCase + from redash.query_runner.jql import FieldMapping, parse_issue @@ -7,9 +8,7 @@ def test_empty(self): field_mapping = FieldMapping({}) self.assertEqual(field_mapping.get_output_field_name("field1"), "field1") - self.assertEqual( - field_mapping.get_dict_output_field_name("field1", "member1"), None - ) + self.assertEqual(field_mapping.get_dict_output_field_name("field1", "member1"), None) self.assertEqual(field_mapping.get_dict_members("field1"), []) def test_with_mappings(self): @@ -22,9 +21,7 @@ def test_with_mappings(self): ) self.assertEqual(field_mapping.get_output_field_name("field1"), "output_name_1") - self.assertEqual( - field_mapping.get_dict_output_field_name("field1", "member1"), None - ) + self.assertEqual(field_mapping.get_dict_output_field_name("field1", "member1"), None) self.assertEqual(field_mapping.get_dict_members("field1"), []) self.assertEqual(field_mapping.get_output_field_name("field2"), "field2") @@ -36,12 +33,8 @@ def test_with_mappings(self): field_mapping.get_dict_output_field_name("field2", "member2"), "output_name_3", ) - self.assertEqual( - field_mapping.get_dict_output_field_name("field2", "member3"), None - ) - self.assertEqual( - field_mapping.get_dict_members("field2"), ["member1", "member2"] - ) + self.assertEqual(field_mapping.get_dict_output_field_name("field2", "member3"), None) + self.assertEqual(field_mapping.get_dict_members("field2"), ["member1", "member2"]) class TestParseIssue(TestCase): diff --git a/tests/query_runner/test_mongodb.py b/tests/query_runner/test_mongodb.py index f156e3f36b..d8de48e000 100644 --- a/tests/query_runner/test_mongodb.py +++ b/tests/query_runner/test_mongodb.py @@ -1,15 +1,15 @@ import datetime from unittest import TestCase -from mock import patch, call -from pytz import utc from freezegun import freeze_time +from mock import patch +from pytz import utc from redash.query_runner.mongodb import ( MongoDB, + _get_column_by_name, parse_query_json, parse_results, - _get_column_by_name, ) from redash.utils import json_dumps, parse_human_time @@ -21,7 +21,7 @@ def test_username_password_present_overrides_username_from_uri(self, mongo_clien "connectionString": "mongodb://localhost:27017/test", "username": "test_user", "password": "test_pass", - "dbName": "test" + "dbName": "test", } mongo_qr = MongoDB(config) _ = mongo_qr._get_db() @@ -30,10 +30,7 @@ def test_username_password_present_overrides_username_from_uri(self, mongo_clien self.assertIn("password", mongo_client.call_args.kwargs) def test_username_password_absent_does_not_pass_args(self, mongo_client): - config = { - "connectionString": "mongodb://user:pass@localhost:27017/test", - "dbName": "test" - } + config = {"connectionString": "mongodb://user:pass@localhost:27017/test", "dbName": "test"} mongo_qr = MongoDB(config) _ = mongo_qr._get_db() @@ -58,9 +55,7 @@ def test_parses_isodate_fields(self): query_data = parse_query_json(json_dumps(query)) - self.assertEqual( - query_data["testIsoDate"], datetime.datetime(2014, 10, 3, 0, 0) - ) + self.assertEqual(query_data["testIsoDate"], datetime.datetime(2014, 10, 3, 0, 0)) def test_parses_isodate_in_nested_fields(self): query = { @@ -72,12 +67,8 @@ def test_parses_isodate_in_nested_fields(self): query_data = parse_query_json(json_dumps(query)) - self.assertEqual( - query_data["testIsoDate"], datetime.datetime(2014, 10, 3, 0, 0) - ) - self.assertEqual( - query_data["test_dict"]["b"]["date"], datetime.datetime(2014, 10, 4, 0, 0) - ) + self.assertEqual(query_data["testIsoDate"], datetime.datetime(2014, 10, 3, 0, 0)) + self.assertEqual(query_data["test_dict"]["b"]["date"], datetime.datetime(2014, 10, 4, 0, 0)) def test_handles_nested_fields(self): # https://github.com/getredash/redash/issues/597 @@ -156,9 +147,7 @@ def test_parses_nested_results(self): rows, columns = parse_results(raw_results) - self.assertDictEqual( - rows[0], {"column": 1, "column2": "test", "nested.a": 1, "nested.b": "str"} - ) + self.assertDictEqual(rows[0], {"column": 1, "column2": "test", "nested.a": 1, "nested.b": "str"}) self.assertDictEqual( rows[1], { diff --git a/tests/query_runner/test_oracle.py b/tests/query_runner/test_oracle.py index e7669ee26f..169d4ba2fd 100644 --- a/tests/query_runner/test_oracle.py +++ b/tests/query_runner/test_oracle.py @@ -2,8 +2,8 @@ from redash.query_runner.oracle import Oracle + class TestOracle(unittest.TestCase): - def setUp(self): self.query_runner = Oracle({}) @@ -26,5 +26,5 @@ def test_apply_auto_limit_origin_have_limit_1(self): self.assertEqual(origin_query_text, query_text) -if __name__ == '__main__': - unittest.main() \ No newline at end of file +if __name__ == "__main__": + unittest.main() diff --git a/tests/query_runner/test_pg.py b/tests/query_runner/test_pg.py index 17fc35315b..634547be04 100644 --- a/tests/query_runner/test_pg.py +++ b/tests/query_runner/test_pg.py @@ -1,4 +1,5 @@ from unittest import TestCase + from redash.query_runner.pg import build_schema diff --git a/tests/query_runner/test_prometheus.py b/tests/query_runner/test_prometheus.py index 302124e1ce..8adb34e5cb 100644 --- a/tests/query_runner/test_prometheus.py +++ b/tests/query_runner/test_prometheus.py @@ -48,7 +48,6 @@ def test_get_instant_rows(self): self.assertEqual(instant_rows, rows) def test_get_range_rows(self): - range_rows = [ { "name": "example_metric_name", diff --git a/tests/query_runner/test_python.py b/tests/query_runner/test_python.py index a587c68640..ae2e15071f 100644 --- a/tests/query_runner/test_python.py +++ b/tests/query_runner/test_python.py @@ -6,4 +6,4 @@ class TestPython(TestCase): def test_sorted_safe_builtins(self): src = list(Python.safe_builtins) - assert src == sorted(src), 'Python safe_builtins package not sorted.' + assert src == sorted(src), "Python safe_builtins package not sorted." diff --git a/tests/query_runner/test_query_results.py b/tests/query_runner/test_query_results.py index 175b41b609..a9138fcc1a 100644 --- a/tests/query_runner/test_query_results.py +++ b/tests/query_runner/test_query_results.py @@ -1,8 +1,8 @@ import sqlite3 from unittest import TestCase -import pytest import mock +import pytest from redash.query_runner.query_results import ( CreateTableError, @@ -11,10 +11,9 @@ create_table, extract_cached_query_ids, extract_query_ids, - get_query_results, fix_column_name, + get_query_results, ) - from redash.utils import json_dumps from tests import BaseTestCase @@ -153,9 +152,7 @@ def test_returns_query(self): self.assertEqual(query, loaded) def test_returns_query_when_user_has_view_only_access(self): - ds = self.factory.create_data_source( - group=self.factory.org.default_group, view_only=True - ) + ds = self.factory.create_data_source(group=self.factory.org.default_group, view_only=True) query = self.factory.create_query(data_source=ds) user = self.factory.create_user() @@ -198,6 +195,7 @@ def test_non_cached_query_result(self): query = self.factory.create_query(latest_query_data=query_result) from redash.query_runner.pg import PostgreSQL + with mock.patch.object(PostgreSQL, "run_query") as qr: query_result_data = {"columns": [], "rows": []} qr.return_value = (json_dumps(query_result_data), None) diff --git a/tests/query_runner/test_script.py b/tests/query_runner/test_script.py index 6de190f849..29b31bbfb7 100644 --- a/tests/query_runner/test_script.py +++ b/tests/query_runner/test_script.py @@ -11,38 +11,26 @@ class TestQueryToScript(BaseTestCase): monkeypatch = MonkeyPatch() def test_unspecified(self): - self.assertEqual( - "/foo/bar/baz.sh", query_to_script_path("*", "/foo/bar/baz.sh") - ) + self.assertEqual("/foo/bar/baz.sh", query_to_script_path("*", "/foo/bar/baz.sh")) def test_specified(self): self.assertRaises(IOError, lambda: query_to_script_path("/foo/bar", "baz.sh")) self.monkeypatch.setattr(os.path, "exists", lambda x: True) - self.assertEqual( - ["/foo/bar/baz.sh"], query_to_script_path("/foo/bar", "baz.sh") - ) + self.assertEqual(["/foo/bar/baz.sh"], query_to_script_path("/foo/bar", "baz.sh")) class TestRunScript(BaseTestCase): monkeypatch = MonkeyPatch() def test_success(self): - self.monkeypatch.setattr( - subprocess, "check_output", lambda script, shell: "test" - ) + self.monkeypatch.setattr(subprocess, "check_output", lambda script, shell: "test") self.assertEqual(("test", None), run_script("/foo/bar/baz.sh", True)) def test_failure(self): self.monkeypatch.setattr(subprocess, "check_output", lambda script, shell: None) - self.assertEqual( - (None, "Error reading output"), run_script("/foo/bar/baz.sh", True) - ) + self.assertEqual((None, "Error reading output"), run_script("/foo/bar/baz.sh", True)) self.monkeypatch.setattr(subprocess, "check_output", lambda script, shell: "") - self.assertEqual( - (None, "Empty output from script"), run_script("/foo/bar/baz.sh", True) - ) + self.assertEqual((None, "Empty output from script"), run_script("/foo/bar/baz.sh", True)) self.monkeypatch.setattr(subprocess, "check_output", lambda script, shell: " ") - self.assertEqual( - (None, "Empty output from script"), run_script("/foo/bar/baz.sh", True) - ) + self.assertEqual((None, "Empty output from script"), run_script("/foo/bar/baz.sh", True)) diff --git a/tests/query_runner/test_utils.py b/tests/query_runner/test_utils.py index 77db0bfac9..89cceb316a 100644 --- a/tests/query_runner/test_utils.py +++ b/tests/query_runner/test_utils.py @@ -1,10 +1,10 @@ from unittest import TestCase from redash.query_runner import ( + TYPE_BOOLEAN, TYPE_DATETIME, TYPE_FLOAT, TYPE_INTEGER, - TYPE_BOOLEAN, TYPE_STRING, guess_type, ) diff --git a/tests/serializers/test_query_results.py b/tests/serializers/test_query_results.py index 68649bf7fe..2bb9b443a6 100644 --- a/tests/serializers/test_query_results.py +++ b/tests/serializers/test_query_results.py @@ -1,14 +1,13 @@ -import datetime import csv import io +from redash.serializers import ( + serialize_query_result, + serialize_query_result_to_dsv, +) +from redash.utils import json_dumps from tests import BaseTestCase -from redash import models -from redash.utils import utcnow, json_dumps -from redash.serializers import serialize_query_result, serialize_query_result_to_dsv - - data = { "rows": [ {"datetime": "2019-05-26T12:39:23.026Z", "bool": True, "date": "2019-05-26"}, diff --git a/tests/tasks/__init__.py b/tests/tasks/__init__.py index 8b13789179..e69de29bb2 100644 --- a/tests/tasks/__init__.py +++ b/tests/tasks/__init__.py @@ -1 +0,0 @@ - diff --git a/tests/tasks/test_alerts.py b/tests/tasks/test_alerts.py index 305e782436..83927b0ddd 100644 --- a/tests/tasks/test_alerts.py +++ b/tests/tasks/test_alerts.py @@ -1,13 +1,9 @@ -from tests import BaseTestCase -from mock import MagicMock, ANY +from mock import ANY, MagicMock import redash.tasks.alerts -from redash.tasks.alerts import ( - check_alerts_for_query, - notify_subscriptions, - should_notify, -) from redash.models import Alert +from redash.tasks.alerts import check_alerts_for_query, notify_subscriptions +from tests import BaseTestCase class TestCheckAlertsForQuery(BaseTestCase): diff --git a/tests/tasks/test_empty_schedule.py b/tests/tasks/test_empty_schedule.py index 5a54244057..3f1c1f41bc 100644 --- a/tests/tasks/test_empty_schedule.py +++ b/tests/tasks/test_empty_schedule.py @@ -1,17 +1,17 @@ import datetime + from mock import patch -from tests import BaseTestCase -from redash.tasks import empty_schedules + from redash.models import Query +from redash.tasks import empty_schedules from redash.utils import utcnow +from tests import BaseTestCase class TestEmptyScheduleQuery(BaseTestCase): def test_empty_schedules(self): one_day_ago = (utcnow() - datetime.timedelta(days=1)).strftime("%Y-%m-%d") - query = self.factory.create_query( - schedule={"interval": "3600", "until": one_day_ago} - ) + query = self.factory.create_query(schedule={"interval": "3600", "until": one_day_ago}) oq = staticmethod(lambda: [query]) with patch.object(Query, "past_scheduled_queries", oq): empty_schedules() diff --git a/tests/tasks/test_failure_report.py b/tests/tasks/test_failure_report.py index d31386a65d..639f2e9be7 100644 --- a/tests/tasks/test_failure_report.py +++ b/tests/tasks/test_failure_report.py @@ -1,13 +1,14 @@ -from unittest import TestCase - +import dateutil import mock from freezegun import freeze_time -import dateutil +from redash import redis_connection, settings +from redash.tasks.failure_report import ( + key, + notify_of_failure, + send_failure_report, +) from tests import BaseTestCase -from redash import redis_connection, models, settings -from redash.tasks.failure_report import notify_of_failure, send_failure_report, key -from redash.utils import json_loads class TestSendAggregatedErrorsTask(BaseTestCase): @@ -82,17 +83,9 @@ def test_counts_failures_for_each_reason(self): f1 = next(f for f in failures if f["failure_reason"] == "I'm a failure") self.assertEqual(2, f1["failure_count"]) - f2 = next( - f - for f in failures - if f["failure_reason"] == "I'm a different type of failure" - ) + f2 = next(f for f in failures if f["failure_reason"] == "I'm a different type of failure") self.assertEqual(1, f2["failure_count"]) - f3 = next( - f - for f in failures - if f["failure_reason"] == "I'm a totally different query" - ) + f3 = next(f for f in failures if f["failure_reason"] == "I'm a totally different query") self.assertEqual(1, f3["failure_count"]) def test_shows_latest_failure_time(self): diff --git a/tests/tasks/test_queries.py b/tests/tasks/test_queries.py index 7bc67ea064..e7f849e149 100644 --- a/tests/tasks/test_queries.py +++ b/tests/tasks/test_queries.py @@ -1,21 +1,17 @@ -from unittest import TestCase -import uuid - -from mock import patch, Mock - +from mock import Mock, patch from rq import Connection from rq.exceptions import NoSuchJobError -from tests import BaseTestCase -from redash import redis_connection, rq_redis_connection, models -from redash.utils import json_dumps +from redash import models, rq_redis_connection from redash.query_runner.pg import PostgreSQL +from redash.tasks import Job from redash.tasks.queries.execution import ( QueryExecutionError, enqueue_query, execute_query, ) -from redash.tasks import Job +from redash.utils import json_dumps +from tests import BaseTestCase def fetch_job(*args, **kwargs): @@ -195,9 +191,7 @@ def test_success_scheduled(self, _): """ Scheduled queries remember their latest results. """ - q = self.factory.create_query( - query_text="SELECT 1, 2", schedule={"interval": 300} - ) + q = self.factory.create_query(query_text="SELECT 1, 2", schedule={"interval": 300}) with patch.object(PostgreSQL, "run_query") as qr: qr.return_value = ([1, 2], None) result_id = execute_query( @@ -215,9 +209,7 @@ def test_failure_scheduled(self, _): """ Scheduled queries that fail have their failure recorded. """ - q = self.factory.create_query( - query_text="SELECT 1, 2", schedule={"interval": 300} - ) + q = self.factory.create_query(query_text="SELECT 1, 2", schedule={"interval": 300}) with patch.object(PostgreSQL, "run_query") as qr: qr.side_effect = ValueError("broken") @@ -245,9 +237,7 @@ def test_success_after_failure(self, _): """ Query execution success resets the failure counter. """ - q = self.factory.create_query( - query_text="SELECT 1, 2", schedule={"interval": 300} - ) + q = self.factory.create_query(query_text="SELECT 1, 2", schedule={"interval": 300}) with patch.object(PostgreSQL, "run_query") as qr: qr.side_effect = ValueError("broken") result = execute_query( @@ -275,9 +265,7 @@ def test_adhoc_success_after_scheduled_failure(self, _): """ Query execution success resets the failure counter, even if it runs as an adhoc query. """ - q = self.factory.create_query( - query_text="SELECT 1, 2", schedule={"interval": 300} - ) + q = self.factory.create_query(query_text="SELECT 1, 2", schedule={"interval": 300}) with patch.object(PostgreSQL, "run_query") as qr: qr.side_effect = ValueError("broken") result = execute_query( diff --git a/tests/tasks/test_refresh_queries.py b/tests/tasks/test_refresh_queries.py index a1bbebc80f..8cd4a163d8 100644 --- a/tests/tasks/test_refresh_queries.py +++ b/tests/tasks/test_refresh_queries.py @@ -1,7 +1,8 @@ -from mock import patch, call, ANY -from tests import BaseTestCase -from redash.tasks.queries.maintenance import refresh_queries +from mock import ANY, call, patch + from redash.models import Query +from redash.tasks.queries.maintenance import refresh_queries +from tests import BaseTestCase ENQUEUE_QUERY = "redash.tasks.queries.maintenance.enqueue_query" @@ -19,9 +20,7 @@ def test_enqueues_outdated_queries_for_sqlquery(self): options={"apply_auto_limit": True}, ) oq = staticmethod(lambda: [query1, query2]) - with patch(ENQUEUE_QUERY) as add_job_mock, patch.object( - Query, "outdated_queries", oq - ): + with patch(ENQUEUE_QUERY) as add_job_mock, patch.object(Query, "outdated_queries", oq): refresh_queries() self.assertEqual(add_job_mock.call_count, 2) add_job_mock.assert_has_calls( @@ -49,19 +48,11 @@ def test_enqueues_outdated_queries_for_non_sqlquery(self): refresh_queries() launches an execution task for each query returned from Query.outdated_queries(). """ - ds = self.factory.create_data_source( - group=self.factory.org.default_group, type="prometheus" - ) - query1 = self.factory.create_query( - data_source=ds, options={"apply_auto_limit": True} - ) - query2 = self.factory.create_query( - query_text="select 42;", data_source=ds, options={"apply_auto_limit": True} - ) + ds = self.factory.create_data_source(group=self.factory.org.default_group, type="prometheus") + query1 = self.factory.create_query(data_source=ds, options={"apply_auto_limit": True}) + query2 = self.factory.create_query(query_text="select 42;", data_source=ds, options={"apply_auto_limit": True}) oq = staticmethod(lambda: [query1, query2]) - with patch(ENQUEUE_QUERY) as add_job_mock, patch.object( - Query, "outdated_queries", oq - ): + with patch(ENQUEUE_QUERY) as add_job_mock, patch.object(Query, "outdated_queries", oq): refresh_queries() self.assertEqual(add_job_mock.call_count, 2) add_job_mock.assert_has_calls( @@ -116,12 +107,8 @@ def test_doesnt_enqueue_outdated_queries_for_paused_data_source_for_non_sqlquery refresh_queries() does not launch execution tasks for queries whose data source is paused. """ - ds = self.factory.create_data_source( - group=self.factory.org.default_group, type="prometheus" - ) - query = self.factory.create_query( - data_source=ds, options={"apply_auto_limit": True} - ) + ds = self.factory.create_data_source(group=self.factory.org.default_group, type="prometheus") + query = self.factory.create_query(data_source=ds, options={"apply_auto_limit": True}) oq = staticmethod(lambda: [query]) query.data_source.pause() with patch.object(Query, "outdated_queries", oq): @@ -161,9 +148,7 @@ def test_enqueues_parameterized_queries_for_sqlquery(self): }, ) oq = staticmethod(lambda: [query]) - with patch(ENQUEUE_QUERY) as add_job_mock, patch.object( - Query, "outdated_queries", oq - ): + with patch(ENQUEUE_QUERY) as add_job_mock, patch.object(Query, "outdated_queries", oq): refresh_queries() add_job_mock.assert_called_with( "select 42 LIMIT 1000", @@ -177,9 +162,7 @@ def test_enqueues_parameterized_queries_for_non_sqlquery(self): """ Scheduled queries with parameters use saved values. """ - ds = self.factory.create_data_source( - group=self.factory.org.default_group, type="prometheus" - ) + ds = self.factory.create_data_source(group=self.factory.org.default_group, type="prometheus") query = self.factory.create_query( query_text="select {{n}}", options={ @@ -197,9 +180,7 @@ def test_enqueues_parameterized_queries_for_non_sqlquery(self): data_source=ds, ) oq = staticmethod(lambda: [query]) - with patch(ENQUEUE_QUERY) as add_job_mock, patch.object( - Query, "outdated_queries", oq - ): + with patch(ENQUEUE_QUERY) as add_job_mock, patch.object(Query, "outdated_queries", oq): refresh_queries() add_job_mock.assert_called_with( "select 42", @@ -229,9 +210,7 @@ def test_doesnt_enqueue_parameterized_queries_with_invalid_parameters(self): }, ) oq = staticmethod(lambda: [query]) - with patch(ENQUEUE_QUERY) as add_job_mock, patch.object( - Query, "outdated_queries", oq - ): + with patch(ENQUEUE_QUERY) as add_job_mock, patch.object(Query, "outdated_queries", oq): refresh_queries() add_job_mock.assert_not_called() @@ -257,11 +236,9 @@ def test_doesnt_enqueue_parameterized_queries_with_dropdown_queries_that_are_det }, ) - dropdown_query = self.factory.create_query(id=100, data_source=None) + self.factory.create_query(id=100, data_source=None) oq = staticmethod(lambda: [query]) - with patch(ENQUEUE_QUERY) as add_job_mock, patch.object( - Query, "outdated_queries", oq - ): + with patch(ENQUEUE_QUERY) as add_job_mock, patch.object(Query, "outdated_queries", oq): refresh_queries() add_job_mock.assert_not_called() diff --git a/tests/tasks/test_refresh_schemas.py b/tests/tasks/test_refresh_schemas.py index 8cb1210b90..0b68fbb2c0 100644 --- a/tests/tasks/test_refresh_schemas.py +++ b/tests/tasks/test_refresh_schemas.py @@ -1,31 +1,25 @@ from mock import patch -from tests import BaseTestCase from redash.tasks import refresh_schemas +from tests import BaseTestCase class TestRefreshSchemas(BaseTestCase): def test_calls_refresh_of_all_data_sources(self): self.factory.data_source # trigger creation - with patch( - "redash.tasks.queries.maintenance.refresh_schema.delay" - ) as refresh_job: + with patch("redash.tasks.queries.maintenance.refresh_schema.delay") as refresh_job: refresh_schemas() refresh_job.assert_called() def test_skips_paused_data_sources(self): self.factory.data_source.pause() - with patch( - "redash.tasks.queries.maintenance.refresh_schema.delay" - ) as refresh_job: + with patch("redash.tasks.queries.maintenance.refresh_schema.delay") as refresh_job: refresh_schemas() refresh_job.assert_not_called() self.factory.data_source.resume() - with patch( - "redash.tasks.queries.maintenance.refresh_schema.delay" - ) as refresh_job: + with patch("redash.tasks.queries.maintenance.refresh_schema.delay") as refresh_job: refresh_schemas() refresh_job.assert_called() diff --git a/tests/tasks/test_schedule.py b/tests/tasks/test_schedule.py index 233909e948..ca553c6295 100644 --- a/tests/tasks/test_schedule.py +++ b/tests/tasks/test_schedule.py @@ -1,5 +1,6 @@ from unittest import TestCase -from mock import patch, ANY + +from mock import patch from redash.tasks.schedule import rq_scheduler, schedule_periodic_jobs @@ -51,9 +52,7 @@ def foo(): def bar(): pass - schedule_periodic_jobs( - [{"func": foo, "interval": 60}, {"func": bar, "interval": 90}] - ) + schedule_periodic_jobs([{"func": foo, "interval": 60}, {"func": bar, "interval": 90}]) schedule_periodic_jobs([{"func": foo, "interval": 60}]) jobs = [job for job in rq_scheduler.get_jobs()] @@ -78,4 +77,3 @@ def foo(): with patch("statsd.StatsClient.incr") as incr: rq_scheduler.enqueue_jobs() incr.assert_called_once_with("rq.jobs.created.periodic") - diff --git a/tests/tasks/test_worker.py b/tests/tasks/test_worker.py index 9294bb6ae0..2497c93275 100644 --- a/tests/tasks/test_worker.py +++ b/tests/tasks/test_worker.py @@ -1,15 +1,12 @@ -from mock import patch, call +from mock import call, patch from rq import Connection from rq.job import JobStatus -from redash.tasks import Worker -from tests import BaseTestCase from redash import rq_redis_connection -from redash.tasks.worker import Queue -from redash.tasks.queries.execution import ( - enqueue_query, -) -from redash.worker import job, default_queues +from redash.tasks import Queue, Worker +from redash.tasks.queries.execution import enqueue_query +from redash.worker import default_queues, job +from tests import BaseTestCase @patch("statsd.StatsClient.incr") diff --git a/tests/test_authentication.py b/tests/test_authentication.py index d5fb43c9c5..04275669f0 100644 --- a/tests/test_authentication.py +++ b/tests/test_authentication.py @@ -29,36 +29,34 @@ def setUp(self): self.api_key = "10" self.query = self.factory.create_query(api_key=self.api_key) models.db.session.flush() - self.query_url = "/{}/api/queries/{}".format( - self.factory.org.slug, self.query.id - ) + self.query_url = "/{}/api/queries/{}".format(self.factory.org.slug, self.query.id) self.queries_url = "/{}/api/queries".format(self.factory.org.slug) def test_no_api_key(self): with self.app.test_client() as c: - rv = c.get(self.query_url) + c.get(self.query_url) self.assertIsNone(api_key_load_user_from_request(request)) def test_wrong_api_key(self): with self.app.test_client() as c: - rv = c.get(self.query_url, query_string={"api_key": "whatever"}) + c.get(self.query_url, query_string={"api_key": "whatever"}) self.assertIsNone(api_key_load_user_from_request(request)) def test_correct_api_key(self): with self.app.test_client() as c: - rv = c.get(self.query_url, query_string={"api_key": self.api_key}) + c.get(self.query_url, query_string={"api_key": self.api_key}) self.assertIsNotNone(api_key_load_user_from_request(request)) def test_no_query_id(self): with self.app.test_client() as c: - rv = c.get(self.queries_url, query_string={"api_key": self.api_key}) + c.get(self.queries_url, query_string={"api_key": self.api_key}) self.assertIsNone(api_key_load_user_from_request(request)) def test_user_api_key(self): user = self.factory.create_user(api_key="user_key") models.db.session.flush() with self.app.test_client() as c: - rv = c.get(self.queries_url, query_string={"api_key": user.api_key}) + c.get(self.queries_url, query_string={"api_key": user.api_key}) self.assertEqual(user.id, api_key_load_user_from_request(request).id) def test_disabled_user_api_key(self): @@ -66,19 +64,17 @@ def test_disabled_user_api_key(self): user.disable() models.db.session.flush() with self.app.test_client() as c: - rv = c.get(self.queries_url, query_string={"api_key": user.api_key}) + c.get(self.queries_url, query_string={"api_key": user.api_key}) self.assertEqual(None, api_key_load_user_from_request(request)) def test_api_key_header(self): with self.app.test_client() as c: - rv = c.get( - self.query_url, headers={"Authorization": "Key {}".format(self.api_key)} - ) + c.get(self.query_url, headers={"Authorization": "Key {}".format(self.api_key)}) self.assertIsNotNone(api_key_load_user_from_request(request)) def test_api_key_header_with_wrong_key(self): with self.app.test_client() as c: - rv = c.get(self.query_url, headers={"Authorization": "Key oops"}) + c.get(self.query_url, headers={"Authorization": "Key oops"}) self.assertIsNone(api_key_load_user_from_request(request)) def test_api_key_for_wrong_org(self): @@ -109,12 +105,12 @@ def signature(self, expires): def test_no_signature(self): with self.app.test_client() as c: - rv = c.get(self.path) + c.get(self.path) self.assertIsNone(hmac_load_user_from_request(request)) def test_wrong_signature(self): with self.app.test_client() as c: - rv = c.get( + c.get( self.path, query_string={"signature": "whatever", "expires": self.expires}, ) @@ -122,7 +118,7 @@ def test_wrong_signature(self): def test_correct_signature(self): with self.app.test_client() as c: - rv = c.get( + c.get( self.path, query_string={ "signature": self.signature(self.expires), @@ -133,7 +129,7 @@ def test_correct_signature(self): def test_no_query_id(self): with self.app.test_client() as c: - rv = c.get( + c.get( "/{}/api/queries".format(self.query.org.slug), query_string={"api_key": self.api_key}, ) @@ -146,7 +142,7 @@ def test_user_api_key(self): signature = sign(user.api_key, path, self.expires) with self.app.test_client() as c: - rv = c.get( + c.get( path, query_string={ "signature": signature, @@ -208,16 +204,12 @@ def test_no_domain_allowed_for_org(self): def test_domain_not_in_org_domains_list(self): profile = dict(email="arik@example.com") - self.factory.org.settings[models.Organization.SETTING_GOOGLE_APPS_DOMAINS] = [ - "example.org" - ] + self.factory.org.settings[models.Organization.SETTING_GOOGLE_APPS_DOMAINS] = ["example.org"] self.assertFalse(verify_profile(self.factory.org, profile)) def test_domain_in_org_domains_list(self): profile = dict(email="arik@example.com") - self.factory.org.settings[models.Organization.SETTING_GOOGLE_APPS_DOMAINS] = [ - "example.com" - ] + self.factory.org.settings[models.Organization.SETTING_GOOGLE_APPS_DOMAINS] = ["example.com"] self.assertTrue(verify_profile(self.factory.org, profile)) self.factory.org.settings[models.Organization.SETTING_GOOGLE_APPS_DOMAINS] = [ @@ -235,23 +227,17 @@ def test_org_in_public_mode_accepts_any_domain(self): def test_user_not_in_domain_but_account_exists(self): profile = dict(email="arik@example.com") self.factory.create_user(email="arik@example.com") - self.factory.org.settings[models.Organization.SETTING_GOOGLE_APPS_DOMAINS] = [ - "example.org" - ] + self.factory.org.settings[models.Organization.SETTING_GOOGLE_APPS_DOMAINS] = ["example.org"] self.assertTrue(verify_profile(self.factory.org, profile)) class TestGetLoginUrl(BaseTestCase): def test_when_multi_org_enabled_and_org_exists(self): with self.app.test_request_context("/{}/".format(self.factory.org.slug)): - self.assertEqual( - get_login_url(next=None), "/{}/login".format(self.factory.org.slug) - ) + self.assertEqual(get_login_url(next=None), "/{}/login".format(self.factory.org.slug)) def test_when_multi_org_enabled_and_org_doesnt_exist(self): - with self.app.test_request_context( - "/{}_notexists/".format(self.factory.org.slug) - ): + with self.app.test_request_context("/{}_notexists/".format(self.factory.org.slug)): self.assertEqual(get_login_url(next=None), "/") @@ -399,12 +385,8 @@ class TestUserForgotPassword(BaseTestCase): def test_user_should_receive_password_reset_link(self): user = self.factory.create_user() - with patch( - "redash.handlers.authentication.send_password_reset_email" - ) as send_password_reset_email_mock: - response = self.post_request( - "/forgot", org=user.org, data={"email": user.email} - ) + with patch("redash.handlers.authentication.send_password_reset_email") as send_password_reset_email_mock: + response = self.post_request("/forgot", org=user.org, data={"email": user.email}) self.assertEqual(response.status_code, 200) send_password_reset_email_mock.assert_called_with(user) @@ -419,9 +401,7 @@ def test_disabled_user_should_not_receive_password_reset_link(self): ) as send_password_reset_email_mock, patch( "redash.handlers.authentication.send_user_disabled_email" ) as send_user_disabled_email_mock: - response = self.post_request( - "/forgot", org=user.org, data={"email": user.email} - ) + response = self.post_request("/forgot", org=user.org, data={"email": user.email}) self.assertEqual(response.status_code, 200) send_password_reset_email_mock.assert_not_called() send_user_disabled_email_mock.assert_called_with(user) diff --git a/tests/test_cli.py b/tests/test_cli.py index 670ec76d18..8494a08887 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -81,9 +81,7 @@ def test_list(self): self.factory.create_data_source( name="test1", type="pg", - options=ConfigurationContainer( - {"host": "example.com", "dbname": "testdb1"} - ), + options=ConfigurationContainer({"host": "example.com", "dbname": "testdb1"}), ) self.factory.create_data_source( name="test2", @@ -116,9 +114,7 @@ def test_list(self): Type: sqlite Options: {"dbpath": "/tmp/test.db"} """ - self.assertMultiLineEqual( - result.output, textwrap.dedent(expected_output).lstrip() - ) + self.assertMultiLineEqual(result.output, textwrap.dedent(expected_output).lstrip()) def test_connection_test(self): self.factory.create_data_source( @@ -246,9 +242,7 @@ def test_create(self): gcount = Group.query.count() perms = ["create_query", "edit_query", "view_query"] runner = CliRunner() - result = runner.invoke( - manager, ["groups", "create", "test", "--permissions", ",".join(perms)] - ) + result = runner.invoke(manager, ["groups", "create", "test", "--permissions", ",".join(perms)]) self.assertFalse(result.exception) self.assertEqual(result.exit_code, 0) self.assertEqual(Group.query.count(), gcount + 1) @@ -337,9 +331,7 @@ class OrganizationCommandTests(BaseTestCase): def test_set_google_apps_domains(self): domains = ["example.org", "example.com"] runner = CliRunner() - result = runner.invoke( - manager, ["org", "set_google_apps_domains", ",".join(domains)] - ) + result = runner.invoke(manager, ["org", "set_google_apps_domains", ",".join(domains)]) self.assertFalse(result.exception) self.assertEqual(result.exit_code, 0) db.session.add(self.factory.org) @@ -457,9 +449,7 @@ def test_delete(self): result = runner.invoke(manager, ["users", "delete", "foobar@example.com"]) self.assertFalse(result.exception) self.assertEqual(result.exit_code, 0) - self.assertEqual( - User.query.filter(User.email == "foobar@example.com").count(), 0 - ) + self.assertEqual(User.query.filter(User.email == "foobar@example.com").count(), 0) self.assertEqual(User.query.count(), ucount - 1) def test_delete_bad(self): @@ -472,9 +462,7 @@ def test_delete_bad(self): def test_password(self): self.factory.create_user(email="foobar@example.com") runner = CliRunner() - result = runner.invoke( - manager, ["users", "password", "foobar@example.com", "xyzzy"] - ) + result = runner.invoke(manager, ["users", "password", "foobar@example.com", "xyzzy"]) self.assertFalse(result.exception) self.assertEqual(result.exit_code, 0) u = User.query.filter(User.email == "foobar@example.com").first() @@ -482,9 +470,7 @@ def test_password(self): def test_password_bad(self): runner = CliRunner() - result = runner.invoke( - manager, ["users", "password", "foobar@example.com", "xyzzy"] - ) + result = runner.invoke(manager, ["users", "password", "foobar@example.com", "xyzzy"]) self.assertTrue(result.exception) self.assertEqual(result.exit_code, 1) self.assertIn("not found", result.output) @@ -523,17 +509,11 @@ def test_invite(self): self.assertEqual(c[2].email, "foobar@example.com") def test_list(self): - self.factory.create_user( - name="Fred Foobar", email="foobar@example.com", org=self.factory.org - ) + self.factory.create_user(name="Fred Foobar", email="foobar@example.com", org=self.factory.org) - self.factory.create_user( - name="William Foobar", email="william@example.com", org=self.factory.org - ) + self.factory.create_user(name="William Foobar", email="william@example.com", org=self.factory.org) - self.factory.create_user( - name="Andrew Foobar", email="andrew@example.com", org=self.factory.org - ) + self.factory.create_user(name="Andrew Foobar", email="andrew@example.com", org=self.factory.org) runner = CliRunner() result = runner.invoke(manager, ["users", "list"]) diff --git a/tests/test_configuration.py b/tests/test_configuration.py index e3b90ed8b7..be66a8d8ce 100644 --- a/tests/test_configuration.py +++ b/tests/test_configuration.py @@ -4,7 +4,6 @@ from redash.utils.configuration import ConfigurationContainer - configuration_schema = { "type": "object", "properties": { @@ -27,9 +26,7 @@ def test_returns_plain_dict(self): def test_raises_exception_when_no_schema_set(self): self.container.set_schema(None) - self.assertRaises( - RuntimeError, lambda: self.container.to_dict(mask_secrets=True) - ) + self.assertRaises(RuntimeError, lambda: self.container.to_dict(mask_secrets=True)) def test_returns_dict_with_masked_secrets(self): d = self.container.to_dict(mask_secrets=True) @@ -62,9 +59,7 @@ def test_updates_secret(self): self.assertDictEqual(self.container._config, new_config) def test_doesnt_leave_leftovers(self): - container = ConfigurationContainer( - {"a": 1, "b": "test", "e": 3}, configuration_schema - ) + container = ConfigurationContainer({"a": 1, "b": "test", "e": 3}, configuration_schema) new_config = container.to_dict(mask_secrets=True) new_config.pop("e") container.update(new_config) diff --git a/tests/test_handlers.py b/tests/test_handlers.py index fc7156fbb0..d9e605dcf1 100644 --- a/tests/test_handlers.py +++ b/tests/test_handlers.py @@ -72,9 +72,7 @@ class StatusTest(BaseTestCase): def test_returns_data_for_super_admin(self): admin = self.factory.create_admin() models.db.session.commit() - rv = self.make_request( - "get", "/status.json", org=False, user=admin, is_json=False - ) + rv = self.make_request("get", "/status.json", org=False, user=admin, is_json=False) self.assertEqual(rv.status_code, 200) def test_returns_403_for_non_admin(self): @@ -111,21 +109,15 @@ def test_get_login_form_remote_auth(self): settings.LDAP_LOGIN_ENABLED = True rv = self.client.get("/default/login") self.assertEqual(rv.status_code, 200) - self.assertIn( - "/{}/remote_user/login".format(self.factory.org.slug), rv.data.decode() - ) - self.assertIn( - "/{}/ldap/login".format(self.factory.org.slug), rv.data.decode() - ) + self.assertIn("/{}/remote_user/login".format(self.factory.org.slug), rv.data.decode()) + self.assertIn("/{}/ldap/login".format(self.factory.org.slug), rv.data.decode()) finally: settings.REMOTE_USER_LOGIN_ENABLED = old_remote_user_enabled settings.LDAP_LOGIN_ENABLED = old_ldap_login_enabled def test_submit_non_existing_user(self): with patch("redash.handlers.authentication.login_user") as login_user_mock: - rv = self.client.post( - "/default/login", data={"email": "arik", "password": "password"} - ) + rv = self.client.post("/default/login", data={"email": "arik", "password": "password"}) self.assertEqual(rv.status_code, 200) self.assertFalse(login_user_mock.called) @@ -137,9 +129,7 @@ def test_submit_correct_user_and_password(self): self.db.session.commit() with patch("redash.handlers.authentication.login_user") as login_user_mock: - rv = self.client.post( - "/default/login", data={"email": user.email, "password": "password"} - ) + rv = self.client.post("/default/login", data={"email": user.email, "password": "password"}) self.assertEqual(rv.status_code, 302) login_user_mock.assert_called_with(user, remember=False) @@ -191,9 +181,7 @@ def test_submit_correct_user_and_password_with_next(self): def test_submit_incorrect_user(self): with patch("redash.handlers.authentication.login_user") as login_user_mock: - rv = self.client.post( - "/default/login", data={"email": "non-existing", "password": "password"} - ) + rv = self.client.post("/default/login", data={"email": "non-existing", "password": "password"}) self.assertEqual(rv.status_code, 200) self.assertFalse(login_user_mock.called) @@ -216,16 +204,12 @@ def test_submit_empty_password(self): user = self.factory.user with patch("redash.handlers.authentication.login_user") as login_user_mock: - rv = self.client.post( - "/default/login", data={"email": user.email, "password": ""} - ) + rv = self.client.post("/default/login", data={"email": user.email, "password": ""}) self.assertEqual(rv.status_code, 200) self.assertFalse(login_user_mock.called) def test_user_already_loggedin(self): - with authenticated_user(self.client), patch( - "redash.handlers.authentication.login_user" - ) as login_user_mock: + with authenticated_user(self.client), patch("redash.handlers.authentication.login_user") as login_user_mock: rv = self.client.get("/default/login") self.assertEqual(rv.status_code, 302) self.assertFalse(login_user_mock.called) @@ -239,14 +223,10 @@ def test_correct_user_and_password_when_password_login_disabled(self): self.factory.org.set_setting("auth_password_login_enabled", False) - with patch("redash.handlers.authentication.login_user") as login_user_mock: - rv = self.client.post( - "/default/login", data={"email": user.email, "password": "password"} - ) + with patch("redash.handlers.authentication.login_user"): + rv = self.client.post("/default/login", data={"email": user.email, "password": "password"}) self.assertEqual(rv.status_code, 200) - self.assertIn( - "Password login is not enabled for your organization", str(rv.data) - ) + self.assertIn("Password login is not enabled for your organization", str(rv.data)) class TestLogout(BaseTestCase): diff --git a/tests/test_migrations.py b/tests/test_migrations.py index 9a05d4ba8f..a41e07c152 100644 --- a/tests/test_migrations.py +++ b/tests/test_migrations.py @@ -1,20 +1,21 @@ import os + from alembic.config import Config from alembic.script import ScriptDirectory def test_only_single_head_revision_in_migrations(): """ - If multiple developers are working on migrations and one of them is merged before the + If multiple developers are working on migrations and one of them is merged before the other you might end up with multiple heads (multiple revisions with the same down_revision). This makes sure that there is only a single head revision in the migrations directory. Adopted from https://blog.jerrycodes.com/multiple-heads-in-alembic-migrations/. """ - config = Config(os.path.join("migrations", 'alembic.ini')) - config.set_main_option('script_location', "migrations") + config = Config(os.path.join("migrations", "alembic.ini")) + config.set_main_option("script_location", "migrations") script = ScriptDirectory.from_config(config) # This will raise if there are multiple heads - script.get_current_head() \ No newline at end of file + script.get_current_head() diff --git a/tests/test_models.py b/tests/test_models.py index 20f7365cf4..0f12c5117b 100644 --- a/tests/test_models.py +++ b/tests/test_models.py @@ -2,14 +2,12 @@ import datetime from unittest import TestCase -import pytz from dateutil.parser import parse as date_parse -from tests import BaseTestCase - -from redash import models, redis_connection -from redash.models import db, types +from redash import models +from redash.models import db from redash.utils import gen_query_hash, utcnow +from tests import BaseTestCase class DashboardTest(BaseTestCase): @@ -44,9 +42,7 @@ def test_exact_time_that_needs_reschedule(self): yesterday = now - datetime.timedelta(days=1) scheduled_datetime = now - datetime.timedelta(hours=3) scheduled_time = "{:02d}:00".format(scheduled_datetime.hour) - self.assertTrue( - models.should_schedule_next(yesterday, now, "86400", scheduled_time) - ) + self.assertTrue(models.should_schedule_next(yesterday, now, "86400", scheduled_time)) def test_exact_time_that_doesnt_need_reschedule(self): now = date_parse("2015-10-16 20:10") @@ -57,7 +53,7 @@ def test_exact_time_that_doesnt_need_reschedule(self): def test_exact_time_with_day_change(self): now = utcnow().replace(hour=0, minute=1) previous = (now - datetime.timedelta(days=2)).replace(hour=23, minute=59) - schedule = "23:59".format(now.hour + 3) + schedule = "23:59" self.assertTrue(models.should_schedule_next(previous, now, "86400", schedule)) def test_exact_time_every_x_days_that_needs_reschedule(self): @@ -66,11 +62,7 @@ def test_exact_time_every_x_days_that_needs_reschedule(self): three_day_interval = "259200" scheduled_datetime = now - datetime.timedelta(hours=3) scheduled_time = "{:02d}:00".format(scheduled_datetime.hour) - self.assertTrue( - models.should_schedule_next( - four_days_ago, now, three_day_interval, scheduled_time - ) - ) + self.assertTrue(models.should_schedule_next(four_days_ago, now, three_day_interval, scheduled_time)) def test_exact_time_every_x_days_that_doesnt_need_reschedule(self): now = utcnow() @@ -78,20 +70,14 @@ def test_exact_time_every_x_days_that_doesnt_need_reschedule(self): three_day_interval = "259200" scheduled_datetime = now - datetime.timedelta(hours=3) scheduled_time = "{:02d}:00".format(scheduled_datetime.hour) - self.assertFalse( - models.should_schedule_next( - four_days_ago, now, three_day_interval, scheduled_time - ) - ) + self.assertFalse(models.should_schedule_next(four_days_ago, now, three_day_interval, scheduled_time)) def test_exact_time_every_x_days_with_day_change(self): now = utcnow().replace(hour=23, minute=59) previous = (now - datetime.timedelta(days=2)).replace(hour=0, minute=1) schedule = "23:58" three_day_interval = "259200" - self.assertTrue( - models.should_schedule_next(previous, now, three_day_interval, schedule) - ) + self.assertTrue(models.should_schedule_next(previous, now, three_day_interval, schedule)) def test_exact_time_every_x_weeks_that_needs_reschedule(self): # Setup: @@ -112,9 +98,7 @@ def test_exact_time_every_x_weeks_that_needs_reschedule(self): scheduled_datetime = now - datetime.timedelta(hours=3) scheduled_time = "{:02d}:00".format(scheduled_datetime.hour) self.assertTrue( - models.should_schedule_next( - three_weeks_ago, now, three_week_interval, scheduled_time, "Tuesday" - ) + models.should_schedule_next(three_weeks_ago, now, three_week_interval, scheduled_time, "Tuesday") ) def test_exact_time_every_x_weeks_that_doesnt_need_reschedule(self): @@ -136,27 +120,19 @@ def test_exact_time_every_x_weeks_that_doesnt_need_reschedule(self): scheduled_datetime = now - datetime.timedelta(hours=3) scheduled_time = "{:02d}:00".format(scheduled_datetime.hour) self.assertFalse( - models.should_schedule_next( - three_weeks_ago, now, three_week_interval, scheduled_time, "Thursday" - ) + models.should_schedule_next(three_weeks_ago, now, three_week_interval, scheduled_time, "Thursday") ) def test_backoff(self): now = utcnow() two_hours_ago = now - datetime.timedelta(hours=2) - self.assertTrue( - models.should_schedule_next(two_hours_ago, now, "3600", failures=5) - ) - self.assertFalse( - models.should_schedule_next(two_hours_ago, now, "3600", failures=10) - ) + self.assertTrue(models.should_schedule_next(two_hours_ago, now, "3600", failures=5)) + self.assertFalse(models.should_schedule_next(two_hours_ago, now, "3600", failures=10)) def test_next_iteration_overflow(self): now = utcnow() two_hours_ago = now - datetime.timedelta(hours=2) - self.assertFalse( - models.should_schedule_next(two_hours_ago, now, "3600", failures=32) - ) + self.assertFalse(models.should_schedule_next(two_hours_ago, now, "3600", failures=32)) class QueryOutdatedQueriesTest(BaseTestCase): @@ -325,7 +301,7 @@ def test_skips_and_disables_faulty_queries(self): valid_query = self.create_scheduled_query(interval="60") self.fake_previous_execution(valid_query, minutes=10) - queries = models.Query.outdated_queries() + models.Query.outdated_queries() self.assertEqual(list(models.Query.outdated_queries()), [valid_query]) self.assertTrue(faulty_query.schedule.get("disabled")) @@ -345,9 +321,7 @@ def test_archive_query_sets_flag(self): self.assertEqual(query.is_archived, True) def test_archived_query_doesnt_return_in_all(self): - query = self.factory.create_query( - schedule={"interval": "1", "until": None, "time": None, "day_of_week": None} - ) + query = self.factory.create_query(schedule={"interval": "1", "until": None, "time": None, "day_of_week": None}) yesterday = utcnow() - datetime.timedelta(days=1) query_result = models.QueryResult.store_result( query.org_id, @@ -378,9 +352,7 @@ def test_removes_associated_widgets_from_dashboards(self): self.assertEqual(models.Widget.query.get(widget.id), None) def test_removes_scheduling(self): - query = self.factory.create_query( - schedule={"interval": "1", "until": None, "time": None, "day_of_week": None} - ) + query = self.factory.create_query(schedule={"interval": "1", "until": None, "time": None, "day_of_week": None}) query.archive() @@ -453,9 +425,7 @@ def test_includes_drafts_of_given_user(self): q = self.factory.create_query(is_draft=True) self.assertIn( q, - models.Query.all_queries( - [self.factory.default_group.id], user_id=q.user_id - ), + models.Query.all_queries([self.factory.default_group.id], user_id=q.user_id), ) def test_order_by_relationship(self): @@ -473,9 +443,7 @@ def test_order_by_relationship(self): self.assertEqual(["bob", "alice"], [q.user.name for q in qs2]) def test_update_query_hash_basesql_with_options(self): - ds = self.factory.create_data_source( - group=self.factory.org.default_group, type="pg" - ) + ds = self.factory.create_data_source(group=self.factory.org.default_group, type="pg") query = self.factory.create_query(query_text="SELECT 2", data_source=ds) query.options = {"apply_auto_limit": True} origin_hash = query.query_hash @@ -483,9 +451,7 @@ def test_update_query_hash_basesql_with_options(self): self.assertNotEqual(origin_hash, query.query_hash) def test_update_query_hash_basesql_no_options(self): - ds = self.factory.create_data_source( - group=self.factory.org.default_group, type="pg" - ) + ds = self.factory.create_data_source(group=self.factory.org.default_group, type="pg") query = self.factory.create_query(query_text="SELECT 2", data_source=ds) query.options = {} origin_hash = query.query_hash @@ -493,9 +459,7 @@ def test_update_query_hash_basesql_no_options(self): self.assertEqual(origin_hash, query.query_hash) def test_update_query_hash_non_basesql(self): - ds = self.factory.create_data_source( - group=self.factory.org.default_group, type="prometheus" - ) + ds = self.factory.create_data_source(group=self.factory.org.default_group, type="prometheus") query = self.factory.create_query(query_text="SELECT 2", data_source=ds) query.options = {"apply_auto_limit": True} origin_hash = query.query_hash @@ -503,7 +467,6 @@ def test_update_query_hash_non_basesql(self): self.assertEqual(origin_hash, query.query_hash) - class TestGroup(BaseTestCase): def test_returns_groups_with_specified_names(self): org1 = self.factory.create_org() @@ -627,9 +590,7 @@ def setUp(self): def test_requires_group_or_user_id(self): d1 = self.factory.create_dashboard() - self.assertNotIn( - d1, list(models.Dashboard.all(d1.user.org, d1.user.group_ids, None)) - ) + self.assertNotIn(d1, list(models.Dashboard.all(d1.user.org, d1.user.group_ids, None))) l2 = list(models.Dashboard.all(d1.user.org, [0], d1.user.id)) self.assertIn(d1, l2) @@ -664,13 +625,9 @@ def test_returns_dashboard_you_have_partial_access_to(self): def test_returns_dashboards_created_by_user(self): d1 = self.factory.create_dashboard(user=self.u1) db.session.flush() - self.assertIn( - d1, list(models.Dashboard.all(self.u1.org, self.u1.group_ids, self.u1.id)) - ) + self.assertIn(d1, list(models.Dashboard.all(self.u1.org, self.u1.group_ids, self.u1.id))) self.assertIn(d1, list(models.Dashboard.all(self.u1.org, [0], self.u1.id))) - self.assertNotIn( - d1, list(models.Dashboard.all(self.u2.org, self.u2.group_ids, self.u2.id)) - ) + self.assertNotIn(d1, list(models.Dashboard.all(self.u2.org, self.u2.group_ids, self.u2.id))) def test_returns_dashboards_with_text_widgets_to_creator(self): w1 = self.factory.create_widget(visualization=None) @@ -698,12 +655,6 @@ def test_returns_dashboards_from_current_org_only(self): self.assertIn( w1.dashboard, - list( - models.Dashboard.all( - self.factory.user.org, self.factory.user.group_ids, None - ) - ), - ) - self.assertNotIn( - w1.dashboard, list(models.Dashboard.all(user.org, user.group_ids, user.id)) + list(models.Dashboard.all(self.factory.user.org, self.factory.user.group_ids, None)), ) + self.assertNotIn(w1.dashboard, list(models.Dashboard.all(user.org, user.group_ids, user.id))) diff --git a/tests/test_permissions.py b/tests/test_permissions.py index 0076af04ae..6f72ae0e77 100644 --- a/tests/test_permissions.py +++ b/tests/test_permissions.py @@ -1,9 +1,8 @@ -from tests import BaseTestCase from collections import namedtuple -from unittest import TestCase -from redash.permissions import has_access -from redash import models +from redash import models +from redash.permissions import has_access +from tests import BaseTestCase MockUser = namedtuple("MockUser", ["permissions", "group_ids"]) view_only = True @@ -29,14 +28,10 @@ def test_allows_if_user_member_in_group_with_full_access(self): def test_allows_if_user_member_in_multiple_groups(self): user = MockUser([], [1, 2, 3]) - self.assertTrue( - has_access({1: not view_only, 2: view_only}, user, not view_only) - ) + self.assertTrue(has_access({1: not view_only, 2: view_only}, user, not view_only)) self.assertFalse(has_access({1: view_only, 2: view_only}, user, not view_only)) self.assertTrue(has_access({1: view_only, 2: view_only}, user, view_only)) - self.assertTrue( - has_access({1: not view_only, 2: not view_only}, user, view_only) - ) + self.assertTrue(has_access({1: not view_only, 2: not view_only}, user, view_only)) def test_not_allows_if_not_enough_permission(self): user = MockUser([], [1]) @@ -44,9 +39,7 @@ def test_not_allows_if_not_enough_permission(self): self.assertFalse(has_access({1: view_only}, user, not view_only)) self.assertFalse(has_access({2: view_only}, user, not view_only)) self.assertFalse(has_access({2: view_only}, user, view_only)) - self.assertFalse( - has_access({2: not view_only, 1: view_only}, user, not view_only) - ) + self.assertFalse(has_access({2: not view_only, 1: view_only}, user, not view_only)) def test_allows_access_to_query_by_query_api_key(self): query = self.factory.create_query() diff --git a/tests/test_utils.py b/tests/test_utils.py index b77c1e78f4..736d6899e6 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -6,12 +6,11 @@ build_url, collect_parameters_from_request, filter_none, - json_dumps, generate_token, + json_dumps, render_template, ) - DummyRequest = namedtuple("DummyRequest", ["host", "scheme"]) @@ -80,15 +79,24 @@ class TestGenerateToken(TestCase): def test_format(self): token = generate_token(40) self.assertRegex(token, r"[a-zA-Z0-9]{40}") - + + class TestRenderTemplate(TestCase): def test_render(self): app = create_app() with app.app_context(): - d = {"failures": [{"id": 1, "name": "Failure Unit Test", "failed_at": "May 04, 2021 02:07PM UTC", "failure_reason": "", "failure_count": 1, "comment": None}]} - html, text = [ - render_template("emails/failures.{}".format(f), d) - for f in ["html", "txt"] - ] - self.assertIn('Failure Unit Test',html) - self.assertIn('Failure Unit Test',text) + d = { + "failures": [ + { + "id": 1, + "name": "Failure Unit Test", + "failed_at": "May 04, 2021 02:07PM UTC", + "failure_reason": "", + "failure_count": 1, + "comment": None, + } + ] + } + html, text = [render_template("emails/failures.{}".format(f), d) for f in ["html", "txt"]] + self.assertIn("Failure Unit Test", html) + self.assertIn("Failure Unit Test", text) From a1a00c6819f681486eea6898317d4ff4ebdcd6ad Mon Sep 17 00:00:00 2001 From: Jun Date: Tue, 11 Jul 2023 21:34:13 +0900 Subject: [PATCH 108/274] upgrade flask limiter (#6174) Signed-off-by: Ye Sijun --- redash/__init__.py | 4 ++-- requirements.txt | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/redash/__init__.py b/redash/__init__.py index 2fbf5f9d44..d3317ec237 100644 --- a/redash/__init__.py +++ b/redash/__init__.py @@ -4,7 +4,7 @@ import redis from flask_limiter import Limiter -from flask_limiter.util import get_ipaddr +from flask_limiter.util import get_remote_address from flask_mail import Mail from flask_migrate import Migrate from statsd import StatsClient @@ -48,7 +48,7 @@ def setup_logging(): mail = Mail() migrate = Migrate(compare_type=True) statsd_client = StatsClient(host=settings.STATSD_HOST, port=settings.STATSD_PORT, prefix=settings.STATSD_PREFIX) -limiter = Limiter(key_func=get_ipaddr, storage_uri=settings.LIMITER_STORAGE) +limiter = Limiter(key_func=get_remote_address, storage_uri=settings.LIMITER_STORAGE) import_query_runners(settings.QUERY_RUNNERS) import_destinations(settings.DESTINATIONS) diff --git a/requirements.txt b/requirements.txt index 9a1fb66c68..997b415ca5 100644 --- a/requirements.txt +++ b/requirements.txt @@ -12,7 +12,7 @@ Flask-SQLAlchemy==2.5.1 Flask-Migrate==2.5.2 flask-mail==0.9.1 flask-talisman==0.7.0 -Flask-Limiter==0.9.3 +Flask-Limiter==3.3.1 Flask-WTF==1.1.1 passlib==1.7.3 aniso8601==8.0.0 From ad6b12c5ad27e4c40e4a74654169f5eea3f76161 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 11 Jul 2023 23:02:19 +0900 Subject: [PATCH 109/274] Bump shell-quote from 1.7.2 to 1.8.1 in /viz-lib (#6175) Bumps [shell-quote](https://github.com/ljharb/shell-quote) from 1.7.2 to 1.8.1. - [Changelog](https://github.com/ljharb/shell-quote/blob/main/CHANGELOG.md) - [Commits](https://github.com/ljharb/shell-quote/compare/v1.7.2...v1.8.1) --- updated-dependencies: - dependency-name: shell-quote dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- viz-lib/yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/viz-lib/yarn.lock b/viz-lib/yarn.lock index eef69cc9c4..7f3c225fde 100644 --- a/viz-lib/yarn.lock +++ b/viz-lib/yarn.lock @@ -9000,9 +9000,9 @@ shebang-regex@^3.0.0: integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== shell-quote@^1.6.1: - version "1.7.2" - resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2" - integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== + version "1.8.1" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.1.tgz#6dbf4db75515ad5bac63b4f1894c3a154c766680" + integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA== shellwords@^0.1.1: version "0.1.1" From 591b607dd58ee85f5d8be9c30cb2ffd31a6e74dc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 11 Jul 2023 23:03:10 +0900 Subject: [PATCH 110/274] Bump decode-uri-component from 0.2.0 to 0.2.2 in /viz-lib (#5871) Bumps [decode-uri-component](https://github.com/SamVerschueren/decode-uri-component) from 0.2.0 to 0.2.2. - [Release notes](https://github.com/SamVerschueren/decode-uri-component/releases) - [Commits](https://github.com/SamVerschueren/decode-uri-component/compare/v0.2.0...v0.2.2) --- updated-dependencies: - dependency-name: decode-uri-component dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- viz-lib/yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/viz-lib/yarn.lock b/viz-lib/yarn.lock index 7f3c225fde..7bdd3ed66b 100644 --- a/viz-lib/yarn.lock +++ b/viz-lib/yarn.lock @@ -3526,9 +3526,9 @@ decamelize@^1.0.0, decamelize@^1.2.0: integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= decode-uri-component@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" - integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= + version "0.2.2" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9" + integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ== deep-equal@~1.1.1: version "1.1.1" From d1e533264d1451730a727948aacb08268fe9422e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 11 Jul 2023 23:03:25 +0900 Subject: [PATCH 111/274] Bump minimatch from 3.0.4 to 3.1.2 in /viz-lib (#5856) Bumps [minimatch](https://github.com/isaacs/minimatch) from 3.0.4 to 3.1.2. - [Release notes](https://github.com/isaacs/minimatch/releases) - [Commits](https://github.com/isaacs/minimatch/compare/v3.0.4...v3.1.2) --- updated-dependencies: - dependency-name: minimatch dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- viz-lib/yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/viz-lib/yarn.lock b/viz-lib/yarn.lock index 7bdd3ed66b..33db71fbad 100644 --- a/viz-lib/yarn.lock +++ b/viz-lib/yarn.lock @@ -6975,9 +6975,9 @@ mimic-fn@^2.0.0: integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== minimatch@^3.0.2, minimatch@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== dependencies: brace-expansion "^1.1.7" From 9d5754793f39c741b883f31126dd0363dd009209 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 11 Jul 2023 23:03:46 +0900 Subject: [PATCH 112/274] Bump terser from 4.8.0 to 4.8.1 (#5833) Bumps [terser](https://github.com/terser/terser) from 4.8.0 to 4.8.1. - [Release notes](https://github.com/terser/terser/releases) - [Changelog](https://github.com/terser/terser/blob/master/CHANGELOG.md) - [Commits](https://github.com/terser/terser/compare/v4.8.0...v4.8.1) --- updated-dependencies: - dependency-name: terser dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index e40984188d..ee7c0b945f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -15214,9 +15214,9 @@ terser-webpack-plugin@^1.4.3: worker-farm "^1.7.0" terser@^4.1.2: - version "4.8.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17" - integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw== + version "4.8.1" + resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.1.tgz#a00e5634562de2239fd404c649051bf6fc21144f" + integrity sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw== dependencies: commander "^2.20.0" source-map "~0.6.1" From 32b3e56c974a84bfb49aa1e302d4fc3867ea7c1a Mon Sep 17 00:00:00 2001 From: Flavio Altinier Maximiano da Silva Date: Tue, 11 Jul 2023 11:55:47 -0300 Subject: [PATCH 113/274] Make the database reencrypt script safer (#5878) * Reencrypt Database Safely * Try with only one statement * remove success logging Signed-off-by: Ye Sijun --------- Signed-off-by: Ye Sijun Co-authored-by: Jun --- redash/cli/database.py | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/redash/cli/database.py b/redash/cli/database.py index 4520c5f4eb..ef1d4adbe9 100644 --- a/redash/cli/database.py +++ b/redash/cli/database.py @@ -1,7 +1,9 @@ +import logging import time import sqlalchemy from click import argument, option +from cryptography.fernet import InvalidToken from flask.cli import AppGroup from flask_migrate import stamp from sqlalchemy.exc import DatabaseError @@ -81,8 +83,6 @@ def reencrypt(old_secret, new_secret, show_sql): _wait_for_db_connection(db) if show_sql: - import logging - logging.basicConfig() logging.getLogger("sqlalchemy.engine").setLevel(logging.INFO) @@ -109,10 +109,14 @@ def _reencrypt_for_table(table_name, orm_name): update = table_for_update.update() selected_items = db.session.execute(select([table_for_select])) for item in selected_items: - stmt = update.where(table_for_update.c.id == item["id"]).values( - encrypted_options=item["encrypted_options"] - ) - db.session.execute(stmt) + try: + stmt = update.where(table_for_update.c.id == item["id"]).values( + encrypted_options=item["encrypted_options"] + ) + except InvalidToken: + logging.error(f'Invalid Decryption Key for id {item["id"]} in table {table_for_select}') + else: + db.session.execute(stmt) selected_items.close() db.session.commit() From c707cccfbfa9086305f78def5995f1f4790799f6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 12 Jul 2023 07:31:02 +0900 Subject: [PATCH 114/274] Bump moment from 2.24.0 to 2.29.4 (#5787) Bumps [moment](https://github.com/moment/moment) from 2.24.0 to 2.29.4. - [Release notes](https://github.com/moment/moment/releases) - [Changelog](https://github.com/moment/moment/blob/develop/CHANGELOG.md) - [Commits](https://github.com/moment/moment/compare/2.24.0...2.29.4) --- updated-dependencies: - dependency-name: moment dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 18 ++++-------------- 2 files changed, 5 insertions(+), 15 deletions(-) diff --git a/package.json b/package.json index 72d368f8a4..4c72ceeae5 100644 --- a/package.json +++ b/package.json @@ -60,7 +60,7 @@ "hoist-non-react-statics": "^3.3.0", "markdown": "0.5.0", "material-design-iconic-font": "^2.2.0", - "moment": "^2.19.3", + "moment": "^2.29.4", "mousetrap": "^1.6.1", "mustache": "^2.3.0", "numeral": "^2.0.6", diff --git a/yarn.lock b/yarn.lock index ee7c0b945f..76646fed73 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10498,20 +10498,10 @@ module-deps@^6.0.0: through2 "^2.0.0" xtend "^4.0.0" -moment@^2.19.3, moment@^2.24.0: - version "2.24.0" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.24.0.tgz#0d055d53f5052aa653c9f6eb68bb5d12bf5c2b5b" - integrity sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg== - -moment@^2.25.3: - version "2.27.0" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.27.0.tgz#8bff4e3e26a236220dfe3e36de756b6ebaa0105d" - integrity sha512-al0MUK7cpIcglMv3YF13qSgdAIqxHTO7brRtaz3DlSULbqfazqkc5kEjNrLDOM7fsjshoFIihnU8snrP7zUvhQ== - -moment@^2.27.0: - version "2.29.0" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.0.tgz#fcbef955844d91deb55438613ddcec56e86a3425" - integrity sha512-z6IJ5HXYiuxvFTI6eiQ9dm77uE0gyy1yXNApVHqTcnIKfY9tIwEjlzsZ6u1LQXvVgKeTnv9Xm7NDvJ7lso3MtA== +moment@^2.19.3, moment@^2.24.0, moment@^2.25.3, moment@^2.27.0, moment@^2.29.4: + version "2.29.4" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.4.tgz#3dbe052889fe7c1b2ed966fcb3a77328964ef108" + integrity sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w== monotone-convex-hull-2d@^1.0.1: version "1.0.1" From 3e3cca40238586fba31239e39f69a434dab0e2fd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 12 Jul 2023 07:32:31 +0900 Subject: [PATCH 115/274] Bump moment from 2.24.0 to 2.29.4 in /viz-lib (#5786) Bumps [moment](https://github.com/moment/moment) from 2.24.0 to 2.29.4. - [Release notes](https://github.com/moment/moment/releases) - [Changelog](https://github.com/moment/moment/blob/develop/CHANGELOG.md) - [Commits](https://github.com/moment/moment/compare/2.24.0...2.29.4) --- updated-dependencies: - dependency-name: moment dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- viz-lib/yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/viz-lib/yarn.lock b/viz-lib/yarn.lock index 33db71fbad..249b784f4c 100644 --- a/viz-lib/yarn.lock +++ b/viz-lib/yarn.lock @@ -7019,9 +7019,9 @@ mkdirp@^0.5.1, mkdirp@^0.5.3: minimist "^1.2.5" moment@^2.19.3: - version "2.24.0" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.24.0.tgz#0d055d53f5052aa653c9f6eb68bb5d12bf5c2b5b" - integrity sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg== + version "2.29.4" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.4.tgz#3dbe052889fe7c1b2ed966fcb3a77328964ef108" + integrity sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w== monotone-convex-hull-2d@^1.0.1: version "1.0.1" From fc39e367716c5edbf1228d3fd4a7f1e9567231d4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 12 Jul 2023 08:09:40 +0900 Subject: [PATCH 116/274] Bump ajv from 6.12.0 to 6.12.6 in /viz-lib (#5778) Bumps [ajv](https://github.com/ajv-validator/ajv) from 6.12.0 to 6.12.6. - [Release notes](https://github.com/ajv-validator/ajv/releases) - [Commits](https://github.com/ajv-validator/ajv/compare/v6.12.0...v6.12.6) --- updated-dependencies: - dependency-name: ajv dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- viz-lib/yarn.lock | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/viz-lib/yarn.lock b/viz-lib/yarn.lock index 249b784f4c..45c813421d 100644 --- a/viz-lib/yarn.lock +++ b/viz-lib/yarn.lock @@ -2147,17 +2147,7 @@ ajv-keywords@^3.5.2: resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== -ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.0, ajv@^6.5.5: - version "6.12.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.0.tgz#06d60b96d87b8454a5adaba86e7854da629db4b7" - integrity sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw== - dependencies: - 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@^6.12.4, ajv@^6.12.5: +ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.0, ajv@^6.12.4, ajv@^6.12.5, ajv@^6.5.5: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== From 6dd6a4c28b24c65f6c56733418265cd0d6fdc9d0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 12 Jul 2023 08:11:29 +0900 Subject: [PATCH 117/274] Bump cached-path-relative from 1.0.2 to 1.1.0 (#5699) Bumps [cached-path-relative](https://github.com/ashaffer/cached-path-relative) from 1.0.2 to 1.1.0. - [Release notes](https://github.com/ashaffer/cached-path-relative/releases) - [Commits](https://github.com/ashaffer/cached-path-relative/commits) --- updated-dependencies: - dependency-name: cached-path-relative dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 76646fed73..7c99175938 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3525,9 +3525,9 @@ cache-base@^1.0.1: unset-value "^1.0.0" cached-path-relative@^1.0.0, cached-path-relative@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/cached-path-relative/-/cached-path-relative-1.0.2.tgz#a13df4196d26776220cc3356eb147a52dba2c6db" - integrity sha512-5r2GqsoEb4qMTTN9J+WzXfjov+hjxT+j3u5K+kIVNIwAd99DLCJE9pBIMP1qVeybV6JiijL385Oz0DcYxfbOIg== + version "1.1.0" + resolved "https://registry.yarnpkg.com/cached-path-relative/-/cached-path-relative-1.1.0.tgz#865576dfef39c0d6a7defde794d078f5308e3ef3" + integrity sha512-WF0LihfemtesFcJgO7xfOoOcnWzY/QHR4qeDqV44jPU3HTI54+LnfXK3SA27AVVGCdZFgjjFFaqUA9Jx7dMJZA== cachedir@^2.3.0: version "2.3.0" From 39f4530562c7f56c73fe844c2bfd4c6e86d5690c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 12 Jul 2023 08:12:03 +0900 Subject: [PATCH 118/274] Bump axios from 0.19.2 to 0.21.2 in /viz-lib (#5610) Bumps [axios](https://github.com/axios/axios) from 0.19.2 to 0.21.2. - [Release notes](https://github.com/axios/axios/releases) - [Changelog](https://github.com/axios/axios/blob/master/CHANGELOG.md) - [Commits](https://github.com/axios/axios/compare/v0.19.2...v0.21.2) --- updated-dependencies: - dependency-name: axios dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- viz-lib/package.json | 2 +- viz-lib/yarn.lock | 27 +++++++++------------------ 2 files changed, 10 insertions(+), 19 deletions(-) diff --git a/viz-lib/package.json b/viz-lib/package.json index 9741a8b034..501acbbc6b 100644 --- a/viz-lib/package.json +++ b/viz-lib/package.json @@ -76,7 +76,7 @@ "lib" ], "dependencies": { - "axios": "^0.19.2", + "axios": "^0.21.2", "beautifymarker": "^1.0.7", "chroma-js": "^1.3.6", "classnames": "^2.2.6", diff --git a/viz-lib/yarn.lock b/viz-lib/yarn.lock index 45c813421d..d5f7279610 100644 --- a/viz-lib/yarn.lock +++ b/viz-lib/yarn.lock @@ -2428,12 +2428,12 @@ aws4@^1.8.0: resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.9.1.tgz#7e33d8f7d449b3f673cd72deb9abdc552dbe528e" integrity sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug== -axios@^0.19.2: - version "0.19.2" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.19.2.tgz#3ea36c5d8818d0d5f8a8a97a6d36b86cdc00cb27" - integrity sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA== +axios@^0.21.2: + version "0.21.2" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.2.tgz#21297d5084b2aeeb422f5d38e7be4fbb82239017" + integrity sha512-87otirqUw3e8CzHTMO+/9kh/FSgXt/eVDvipijwDtEuwbkySWZ9SBm6VEubmJ/kLKEoLQV/POhxXFb66bfekfg== dependencies: - follow-redirects "1.5.10" + follow-redirects "^1.14.0" babel-core@^7.0.0-bridge.0: version "7.0.0-bridge.0" @@ -3475,13 +3475,6 @@ data-urls@^1.0.0: whatwg-mimetype "^2.2.0" whatwg-url "^7.0.0" -debug@=3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" - integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== - dependencies: - ms "2.0.0" - debug@^2.2.0, debug@^2.3.3: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" @@ -4444,12 +4437,10 @@ flow-parser@0.*: resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.139.0.tgz#c046779114487175f2b1e8aa639bf977d4c7dd9f" integrity sha512-yEh5wJIi/BG7JZvWAWxTdfZ1uoh/W3oefJOuvUDosKFIE5H7ad8Eu6k9ba1yr83Lxn5vY6kZMG1IaiiiA/5scg== -follow-redirects@1.5.10: - version "1.5.10" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a" - integrity sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ== - dependencies: - debug "=3.1.0" +follow-redirects@^1.14.0: + version "1.15.2" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" + integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== font-atlas@^2.1.0: version "2.1.0" From 1b3215f79fe58eff6a442d1f71364320dd2539c6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 11 Jul 2023 23:21:44 +0000 Subject: [PATCH 119/274] Bump async from 2.6.2 to 2.6.4 (#5779) Bumps [async](https://github.com/caolan/async) from 2.6.2 to 2.6.4. - [Release notes](https://github.com/caolan/async/releases) - [Changelog](https://github.com/caolan/async/blob/v2.6.4/CHANGELOG.md) - [Commits](https://github.com/caolan/async/compare/v2.6.2...v2.6.4) --- updated-dependencies: - dependency-name: async dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/yarn.lock b/yarn.lock index 7c99175938..40bdb87b31 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2711,16 +2711,16 @@ async-validator@^3.0.3: integrity sha512-cAHGD9EL8aCqWXjnb44q94MWiDFzUo1tMhvLb2WzcpWqGiKugsjWG9cvl+jPgkPca7asNbsBU3fa0cwkI/P+Xg== async@^2.5.0, async@^2.6.1, async@^2.6.2: - version "2.6.2" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.2.tgz#18330ea7e6e313887f5d2f2a904bac6fe4dd5381" - integrity sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg== + version "2.6.4" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.4.tgz#706b7ff6084664cd7eae713f6f965433b5504221" + integrity sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA== dependencies: - lodash "^4.17.11" + lodash "^4.17.14" async@^3.1.0, async@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/async/-/async-3.2.0.tgz#b3a2685c5ebb641d3de02d161002c60fc9f85720" - integrity sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw== + version "3.2.4" + resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c" + integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== asynckit@^0.4.0: version "0.4.0" From 60531a739dda3bd3cd2a8d614d69bb97a341dd47 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 13 Jul 2023 01:50:06 +1000 Subject: [PATCH 120/274] Bump axios from 0.21.1 to 0.27.2 (#5652) * Bump axios from 0.21.1 to 0.21.2 Bumps [axios](https://github.com/axios/axios) from 0.21.1 to 0.21.2. - [Release notes](https://github.com/axios/axios/releases) - [Changelog](https://github.com/axios/axios/blob/master/CHANGELOG.md) - [Commits](https://github.com/axios/axios/compare/v0.21.1...v0.21.2) --- updated-dependencies: - dependency-name: axios dependency-type: direct:production ... Signed-off-by: dependabot[bot] * Bump axios to 0.27.2, and axios-auth-refresh to 3.3.6 --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Justin Clift --- package.json | 4 ++-- yarn.lock | 59 +++++++++++++++++++++++++++++++++++++++------------- 2 files changed, 46 insertions(+), 17 deletions(-) diff --git a/package.json b/package.json index 4c72ceeae5..64dc0b8d62 100644 --- a/package.json +++ b/package.json @@ -48,8 +48,8 @@ "@redash/viz": "file:viz-lib", "ace-builds": "^1.4.12", "antd": "^4.4.3", - "axios": "^0.21.1", - "axios-auth-refresh": "^3.0.0", + "axios": "0.27.2", + "axios-auth-refresh": "3.3.6", "bootstrap": "^3.3.7", "classnames": "^2.2.6", "d3": "^3.5.17", diff --git a/yarn.lock b/yarn.lock index 40bdb87b31..87d9923bd9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1677,7 +1677,7 @@ "@redash/viz@file:viz-lib": version "1.0.0" dependencies: - axios "^0.19.2" + axios "^0.21.2" beautifymarker "^1.0.7" chroma-js "^1.3.6" classnames "^2.2.6" @@ -2774,12 +2774,20 @@ axe-core@^4.0.2: resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.1.2.tgz#7cf783331320098bfbef620df3b3c770147bc224" integrity sha512-V+Nq70NxKhYt89ArVcaNL9FDryB3vQOd+BFXZIfO3RP6rwtj+2yqqqdHEkacutglPaZLkJeuXKCjCJDMGPtPqg== -axios-auth-refresh@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/axios-auth-refresh/-/axios-auth-refresh-3.0.0.tgz#dd8c8a8458250c554c9b00c6b2cf571397c8eec6" - integrity sha512-0XJnJY711f7opdT+b/au/xw1g4MYrjntXB8Oy5l48plbzOWLjUtJ+m8CtiNLgN3MAvGFJ/Q1NtQ7WKf2euKu6g== +axios-auth-refresh@3.3.6: + version "3.3.6" + resolved "https://registry.yarnpkg.com/axios-auth-refresh/-/axios-auth-refresh-3.3.6.tgz#a879f6296a889d6616e51069c2a8135b697966e7" + integrity sha512-2CeBUce/SxIfFxow5/n8vApJ97yYF6qoV4gh1UrswT7aEOnlOdBLxxyhOI4IaxGs6BY0l8YujU2jlc4aCmK17Q== + +axios@0.27.2: + version "0.27.2" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.27.2.tgz#207658cc8621606e586c85db4b41a750e756d972" + integrity sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ== + dependencies: + follow-redirects "^1.14.9" + form-data "^4.0.0" -axios@^0.19.0, axios@^0.19.2: +axios@^0.19.0: version "0.19.2" resolved "https://registry.yarnpkg.com/axios/-/axios-0.19.2.tgz#3ea36c5d8818d0d5f8a8a97a6d36b86cdc00cb27" integrity sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA== @@ -2793,12 +2801,12 @@ axios@^0.20.0: dependencies: follow-redirects "^1.10.0" -axios@^0.21.1: - version "0.21.1" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.1.tgz#22563481962f4d6bde9a76d516ef0e5d3c09b2b8" - integrity sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA== +axios@^0.21.2: + version "0.21.2" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.2.tgz#21297d5084b2aeeb422f5d38e7be4fbb82239017" + integrity sha512-87otirqUw3e8CzHTMO+/9kh/FSgXt/eVDvipijwDtEuwbkySWZ9SBm6VEubmJ/kLKEoLQV/POhxXFb66bfekfg== dependencies: - follow-redirects "^1.10.0" + follow-redirects "^1.14.0" axobject-query@^2.2.0: version "2.2.0" @@ -4217,6 +4225,13 @@ combined-stream@^1.0.6, combined-stream@~1.0.6: dependencies: delayed-stream "~1.0.0" +combined-stream@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + commander@2, commander@^2.13.0, commander@^2.15.1, commander@^2.19.0: version "2.19.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a" @@ -6727,10 +6742,15 @@ follow-redirects@1.9.0: dependencies: debug "^3.0.0" -follow-redirects@^1.0.0, follow-redirects@^1.10.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.13.0.tgz#b42e8d93a2a7eea5ed88633676d6597bc8e384db" - integrity sha512-aq6gF1BEKje4a9i9+5jimNFIpq4Q1WiwBToeRK5NvZBd/TRsmW8BsJfOEGkr76TbOyPVD3OVDN910EcUNtRYEA== +follow-redirects@^1.0.0, follow-redirects@^1.10.0, follow-redirects@^1.14.0: + version "1.14.5" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.5.tgz#f09a5848981d3c772b5392309778523f8d85c381" + integrity sha512-wtphSXy7d4/OR+MvIFbCVBDzZ5520qV8XfPklSN5QtxuMUJZ+b0Wnst1e1lCDocfzuCkHqj8k0FpZqO+UIaKNA== + +follow-redirects@^1.14.9: + version "1.15.2" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" + integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== font-atlas@^2.1.0: version "2.1.0" @@ -6786,6 +6806,15 @@ forever-agent@~0.6.1: resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= +form-data@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" + integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + form-data@~2.3.2: version "2.3.3" resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" From 05526b557e2e0f98ac77ece30b71bb928ab48c43 Mon Sep 17 00:00:00 2001 From: Justin Clift Date: Fri, 14 Jul 2023 01:36:25 +1000 Subject: [PATCH 121/274] Update /viz-lib axios to 0.27.2, and its axios-auth-refresh to 3.3.6 (#6177) --- viz-lib/package.json | 3 ++- viz-lib/yarn.lock | 29 ++++++++++++++++++++++------- 2 files changed, 24 insertions(+), 8 deletions(-) diff --git a/viz-lib/package.json b/viz-lib/package.json index 501acbbc6b..d9860e8db1 100644 --- a/viz-lib/package.json +++ b/viz-lib/package.json @@ -76,7 +76,8 @@ "lib" ], "dependencies": { - "axios": "^0.21.2", + "axios": "0.27.2", + "axios-auth-refresh": "3.3.6", "beautifymarker": "^1.0.7", "chroma-js": "^1.3.6", "classnames": "^2.2.6", diff --git a/viz-lib/yarn.lock b/viz-lib/yarn.lock index d5f7279610..1df36b67ae 100644 --- a/viz-lib/yarn.lock +++ b/viz-lib/yarn.lock @@ -2428,12 +2428,18 @@ aws4@^1.8.0: resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.9.1.tgz#7e33d8f7d449b3f673cd72deb9abdc552dbe528e" integrity sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug== -axios@^0.21.2: - version "0.21.2" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.2.tgz#21297d5084b2aeeb422f5d38e7be4fbb82239017" - integrity sha512-87otirqUw3e8CzHTMO+/9kh/FSgXt/eVDvipijwDtEuwbkySWZ9SBm6VEubmJ/kLKEoLQV/POhxXFb66bfekfg== +axios-auth-refresh@3.3.6: + version "3.3.6" + resolved "https://registry.yarnpkg.com/axios-auth-refresh/-/axios-auth-refresh-3.3.6.tgz#a879f6296a889d6616e51069c2a8135b697966e7" + integrity sha512-2CeBUce/SxIfFxow5/n8vApJ97yYF6qoV4gh1UrswT7aEOnlOdBLxxyhOI4IaxGs6BY0l8YujU2jlc4aCmK17Q== + +axios@0.27.2: + version "0.27.2" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.27.2.tgz#207658cc8621606e586c85db4b41a750e756d972" + integrity sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ== dependencies: - follow-redirects "^1.14.0" + follow-redirects "^1.14.9" + form-data "^4.0.0" babel-core@^7.0.0-bridge.0: version "7.0.0-bridge.0" @@ -3084,7 +3090,7 @@ colors@^1.1.2: resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== -combined-stream@^1.0.6, combined-stream@~1.0.6: +combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: version "1.0.8" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== @@ -4437,7 +4443,7 @@ flow-parser@0.*: resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.139.0.tgz#c046779114487175f2b1e8aa639bf977d4c7dd9f" integrity sha512-yEh5wJIi/BG7JZvWAWxTdfZ1uoh/W3oefJOuvUDosKFIE5H7ad8Eu6k9ba1yr83Lxn5vY6kZMG1IaiiiA/5scg== -follow-redirects@^1.14.0: +follow-redirects@^1.14.9: version "1.15.2" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== @@ -4483,6 +4489,15 @@ forever-agent@~0.6.1: resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= +form-data@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" + integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + form-data@~2.3.2: version "2.3.3" resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" From d5b821e30a22224fe62d265cd08af07754c5e931 Mon Sep 17 00:00:00 2001 From: Will Lachance Date: Sat, 15 Jul 2023 13:56:39 -0400 Subject: [PATCH 122/274] Fix persisting datasource selection choice (#6181) * Fix persisting datasource selection choice Closes getredash/redash#5646. We were already storing this in localStorage, however we weren't accounting for the fact that it was stored as a string, rather than an integer. * Restyled by prettier (#6182) Co-authored-by: Restyled.io --------- Co-authored-by: restyled-io[bot] <32688539+restyled-io[bot]@users.noreply.github.com> Co-authored-by: Restyled.io --- client/app/pages/queries/QuerySource.jsx | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/client/app/pages/queries/QuerySource.jsx b/client/app/pages/queries/QuerySource.jsx index 774b720963..f492b99324 100644 --- a/client/app/pages/queries/QuerySource.jsx +++ b/client/app/pages/queries/QuerySource.jsx @@ -134,11 +134,10 @@ function QuerySource(props) { // choose data source id for new queries if (dataSourcesLoaded && queryFlags.isNew) { const firstDataSourceId = dataSources.length > 0 ? dataSources[0].id : null; + const selectedDataSourceId = parseInt(localStorage.getItem("lastSelectedDataSourceId")) || null; + handleDataSourceChange( - chooseDataSourceId( - [query.data_source_id, localStorage.getItem("lastSelectedDataSourceId"), firstDataSourceId], - dataSources - ) + chooseDataSourceId([query.data_source_id, selectedDataSourceId, firstDataSourceId], dataSources) ); } }, [query.data_source_id, queryFlags.isNew, dataSourcesLoaded, dataSources, handleDataSourceChange]); From 02d128e7aee83d08a8188ea3e9291a4665925c67 Mon Sep 17 00:00:00 2001 From: shinsuke-nara Date: Sun, 16 Jul 2023 14:15:03 +0900 Subject: [PATCH 123/274] Embed view becomes flex. (#4422) Co-authored-by: Shinsuke Nara Co-authored-by: Justin Clift --- client/app/assets/less/redash/query.less | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/client/app/assets/less/redash/query.less b/client/app/assets/less/redash/query.less index 3dd5daf090..e1a6f96e05 100644 --- a/client/app/assets/less/redash/query.less +++ b/client/app/assets/less/redash/query.less @@ -90,6 +90,23 @@ body.fixed-layout { .embed__vis { display: flex; flex-flow: column; + height: calc(~'100vh - 25px'); + + > .embed-heading { + flex: 0 0 auto; + } + + > .query__vis { + flex: 1 1 auto; + + .chart-visualization-container, .visualization-renderer-wrapper, .visualization-renderer { + height: 100% + } + } + + > .tile__bottom-control { + flex: 0 0 auto; + } width: 100%; } From 095ac2ecf074bbb0e373066c32284203e83e3126 Mon Sep 17 00:00:00 2001 From: Vinod Pandey Date: Mon, 17 Jul 2023 06:15:14 +0530 Subject: [PATCH 124/274] Added query runner for Google Analytics Data API (GA4) and Google Search Console API (#5868) * quick and dirty GA4 integration to support limited queries request pattern: { "propertyId": 123456789, "dateRanges": [{ "startDate": "yesterday", "endDate": "yesterday" }], "dimensions": [{ "name": "date" }], "metrics": [{ "name": "activeUsers" }] } * Update Dockerfile * Update requirements_bundles.txt related issue: https://github.com/getredash/redash/pull/5851 https://stackoverflow.com/questions/73929564/entrypoints-object-has-no-attribute-get-digital-ocean * updated integration code to support all usecases for runReport endpoint (does not have support for runPivotReport yet) * added google search console as query runner * removed info logger * removed files that were causing merge conflicts * fixed failing testcases and pre-commit formatting changes * added testcases * fixed linting errors in test files * code optimization --- .../images/db-logos/google_analytics4.png | Bin 0 -> 14670 bytes .../images/db-logos/google_search_console.png | Bin 0 -> 14406 bytes redash/query_runner/google_analytics4.py | 179 ++++++++++++++++ redash/query_runner/google_search_console.py | 160 +++++++++++++++ redash/settings/__init__.py | 2 + tests/query_runner/test_google_analytics4.py | 194 ++++++++++++++++++ .../test_google_search_console.py | 169 +++++++++++++++ 7 files changed, 704 insertions(+) create mode 100644 client/app/assets/images/db-logos/google_analytics4.png create mode 100644 client/app/assets/images/db-logos/google_search_console.png create mode 100644 redash/query_runner/google_analytics4.py create mode 100644 redash/query_runner/google_search_console.py create mode 100644 tests/query_runner/test_google_analytics4.py create mode 100644 tests/query_runner/test_google_search_console.py diff --git a/client/app/assets/images/db-logos/google_analytics4.png b/client/app/assets/images/db-logos/google_analytics4.png new file mode 100644 index 0000000000000000000000000000000000000000..eaddd9d56951e8fd58a1d624d492b1a9cc663dec GIT binary patch literal 14670 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 aYfIA_p70dz^zefuKuhhpYNfJ8$o~LVr_3t= literal 0 HcmV?d00001 diff --git a/client/app/assets/images/db-logos/google_search_console.png b/client/app/assets/images/db-logos/google_search_console.png new file mode 100644 index 0000000000000000000000000000000000000000..a302ca590fa1272caac49aa56ac3acbf3f7e96d4 GIT binary patch literal 14406 zcmXwg1z1$y^Y>+0qy(03Tsj1#K_ynYkx&|>l#uRbrMsm;LPC`8P9>yEx=T8xc`x7J z|6LxQefFN2Gjq;8cjhy3LtiV);9yZ;0RVs_Co8E204OmJ{}_+JD}Jp4zrn9Z#tJf$ z!2QGDm*#?a01&*ElYFJ&HnW$3o=i27crZ(*$o1#Xj`vR2)pX+!_-TA(vXF}YC!T>e zriU(sE7_D#iHD3*g3|e4gaZPF7NyUKC?+NbMu7E&tM9o2OTmb_xaOP9{l?AHh`d<7 zY>BVBXZPNVmp9}w`2{xfCp&3_XKsKUY|k^SG$|qYzB*5_@mryywc(oj!P8^bA)?D_ zLDok^mlNfuLmR{QoOxOkWV+!uefvSLttceE!XmRX?=}nW8h*6^ zkpz3vSMN(@;UU8QKEM1LkPIiZfzes7UcoOaIf++_-FN|D={vqu=rcDFC6wEuWy<=R zWP+j%FI7`&?yvzq4uLQk4q-@Rd#N{`EevSmrw?D@*`xR@wOTbs8$x>^B+DI}Wr0+= z<`*+*vH*bX`jYFTem9$}eB-9m0ry9Y4KEnHIwh>Ax)V=WzWUeR&AJhy05zL4qAM#a zJZC>w{AOB>2E>)CPgCU)dkW!a)aC&W_zN0;S)#!z%Ql0>NFtq4TZI zlyvgcw+lUaWbI$Irb_^z&O;Wl3MxBiBw#8JqXIK|tAM=`p~X0TD4p`&?uxz>-$3^P zh6fg~M8wB&_B5>h&-?HmxTX16S6hd}S<=>XppM9Z%es&;QIyxOE2M|XDsu-2nCy}+m;HB>&#=M{*I+X-WQ}c7s27hK~a5L}(tiK7Umq$K3y&vX9DdW~7 zX)ZT6!V1MU>TFadIT5heOGWcjs`DtU^K(%b`BXuN5&8++TJ-k;rw126vUC=9a`BGT zyLdJ>Y(8;kiu@@Dk*(xeUpRe*#EukZ5? z3QXX|sFtWVF~Q>w;`Yr%I010%Un@HLJc?144MXtJk7%#^c90T+bqlSst^r z<|g@~69ACx{;J8ODwjXFDQH5e5Zk@=$j0K=yD;SN?M=vA)g>Gs^pr>| ztu2gzYI?#@{<7n9X82H~T`$~}{T=0uEB1ZzS~(Fl5i-UY>1}2Yzfd>je0MAEj__>C9;ST31fd;i z2oYajdGhKJ>RTmkeT^;k;9Pn-7(uWK^~Cg3&R5c?8%o-j;+n(#wGe6;(k?)9@{o^@ zhmy-DDbbL%E7SqnVXvyMkzXSdg!&Wl4{uoEoXtg>78Vr=J;*!t=ysQNLkO1a_}o+& zw+fI`KStU~d36P<#9kuq)Ze14Z=Q-<%M^&i^@w$`A?;bTsGrhV|K<~oglmKk1|aHq zEae+m(Ru>l!Lh+Q^3PrqWndufoFy&Be*5=?z{9(bo#Y7gt^yEnNeRx^P3e>|@K@n> zkyN5u0l5AM_#o~JAz_Gf6{1ql@a;biw)Pf)8V!l4B11Xj-5rK}7=Ha&b^a6XCj^`) zrYE1y@It01y{%LCZ0oB~NE8wQuVC?Y$ZIRTfsl`PCnQ*Cj`Y6{#09TAkcCn`JuKFw zi*K+`vq^EmX@)WnP}1kUlH6?IX& zgtAxc!EV7a?~?nUV_v7fUqhqjsc#L;yUqSa_LN1@xSMAbWz#Ds1iQ*hdR4u!+5X^m zkrAU+D`*tH$?YPic$!XL-lX*YdwGqLe38=Rfr1ui^Z~a`rSSC)ecY{!ACPCKj6)?BO5b5U z)BjDhZWM>0$ghOVDD|}QsOX}7nmWS86zu85LZ)-zJw30C~Ao;Z(E<{z-3XvhN-KzMbD7NSuaPDAT;f%zN&h%n|c>rb`i-P&3T*9xIR0 zU5hqmW6h`nF{lQ;7cHVMJx5DNtwP$3R?kW6u=%N&{Tewaxbn}N_h znel-y8zF?70D61kl$oG}gek9h3iDjub)zZ-Pi(L@q*sy#q#YCBR)c>fuL+HX^lH$& z#{ikN*kMrvbt+x&^+YuE5IDR;1IJuy@RYvJ$4FB)JbJV^r8F|em{InbE*7LIJzg$a zT#@icIINv?YWclHBjO(s>GedcO;WHbq*wYu1f@Gj{&BVo1JrMtNg9Je*PV=?of64fL|Nw)ARH2d@gcoZG&KYmnv$Te^=(70k@kU`WsCkY{cVoul$jf)mOC6O&TE=xg-GOC0%uuAo8 zW=^pyh zSEjW&&qo_d<9T7PWw#=Z6N57$y_z&07?RNfy_)c^FRJ8PAR`hq9+(Vakx zjvKmADCIa)4S-t#YhKF^Mx4gUh(bmxl^lp=i=wRKiV>#?GN3F48W$2-9XgaVVp9)# zB66Q<%tlEJ$e+uLo88=9sod2WwuBjRskR=h4Jt^Jdjw!dG`1 z^aXF|J<5L3;(4Rx)CwQthb$cTNWrD6jFx=PJVDxLTKM)a?@gJdTmao%H>0!BRvEhh_m|zA-_8H81uiCq- zn+tIljJ6mod`cXm`k#zmdP*eOG*b#z-guipuLfMYk6sr^#)zj49o5=5C3+mQm~*)r z6WjvfR->85>XLOgWrO9;G7usYDCU?_FuKg$K|%EEw226c6{BQ$Qc-cmm2Uw@Bi34W z79!%ai~xjNhX$mJ5U@~ye`TtY(}i$L(4=62jIu1S#Am(!_!VEug|8iYB*c)(w9$%a z#zDd}1R>hiqp1jaCCm6psPSiE9{dpU|+HwSxnrqJ2TYJ9tUD)S>lAjVZR~Y{reY$2}gZOS4 zpATWJE>udz>SFtEk~P{&1jV!LZ+@()NxwQDM3l?Z3}8Nt5{D#OJAgKXq^4I6sl^&y ziDsNAoJWdL8hkN+Z4|*&^)ImG3%WX<``WLSz0lJSg=1=;y@PU{<&J*+6W>l&qMneK z_Qofc5DO0r2(+#Um|0T_pIy`PRudL`!S3=zL1%`>mxffimGo_G=q@C?@ab`&58#+i z;mtDk^-dbGoJEoyl}cdAz-Ww#0+eBXx7m-!Ive=*PX4zRp~^q)BE}W<4{cPL>i<#| zrbG16El)WFnWDzO4lAIvhR^j`8g!b*6!XBiiG4=@KX(a@NM9>+2*1G zV#I{kg+EB>3G*>9tg@_y6uX*@a5>~D;!KtYvq}5VbP^E*xJ11P#N76dD$~*oeO#`} z`p)WMTPS&^7AyugFE#vW(E;Tk*Y6_Sdf!H5!=BALCJMjs>}E6_oUh}Xe$ewymwu{s6{%lB0kn-)2nt4jO(b!fmC%7&a`C6L=Fwrd0z0Ah3W z4v+toQK6A~&-}psQT3EF$Ivc%p3-mUEd8|+9?)h{7d1`oZT4rScz0h2p|{mkRP1-& z@c2rI2C=13^TXkrbfCb9!ceN5O)rtNAq-X4B0O(9te06_sv@iuX%kEuBd z#mpBSpYRPa&7$7E!-qmZoRoa26gC0N}8+ zV3iD$(vb%w!uo{afg%mTf_3vZ(S^c0A`k%pun-1x?AyPxo^#F%BBv5p2yP5003c-v z%g@gBvh3zq;@+RZVBSLxq)150}%Xfvl;%4MWHRt#s86NZZC@9-8_|Pqb`N}ekY!5jYMBAy>v9TkYY^~n>iOlLv-gR? zb@?G2UTVqK&qq`~k$}Sh0J_4CBtjp*3+l@SL*VRP<{?lw06O|nc{8n1Xyrh@Ew?$h8S9$2B|{>=kU4YX2>9Qxvh!5va79z(RH* zs=v0_q6ZD^F>kxspmfiy{xLZb|C$DEmr{g20ipfxkAFV1D2YTFP$|?Vsve+(o37qL zp>(d$(mi_4N!zQw(z(51^mRAnA)nN}N{$zL1?x~eVb5T0S;+h!dj?h-cR|xh_fMxU zH&3^f(6IxgY5S;Oyj_@Jl7JuE*9kECi1C?T@ixa!%DQ<&|M*8w{gk@qIk_f@c8ea* zhr^y1lrwG7MW2gwPi;SY{0i<+e)&#qZb7s1bQ;&tk7M+6iM#6IRYKxHo3%Gz`K>Gg zB=(txetvnOya_Y97=sL!>C?Ti?Qw<5?h|TZQi5_UpK}*Cbhq-%)?qLJ)93rTP}q4D zEC7SVqKl5%TiFi09desf+dbn?Q#I`Rc!oPCPao^g90v>08&L_~Yn{w=(gIc7r1czRIsDrI(0gyk!0s3ij$vWIZ?IK2hyZhRT9M-_6U68-1=`HA4L zCE5q6hz&QcuRE8x&AB(Z7*INOr{e2cFXb#TbY#!TkFoust7=RmQ#XJ2jK0V}w<30Z z=HoaJT6E#WV8r+|EaY|>)%ah_54oeJr>;h9{VYP<{fD@7VzPus;60J^N{APB!zR5o z!hw{FscZhsb6nt9#^f-psR12Bmw&AP<_Al*|2MKbLp~nuu{otkI5* z!qHDtMU(CBMYfL77WAhs%;4FOrroR1LTGw{s*wvAE|4aZ-XTQ~X_d4W{qeJ8Xko14 zNAI~Is-y_`d2lIR;^p+JsmI+RZ^9+@k}DY`HmB)&E@I98?6p0Ta?n@k6&&v|uH5ae zAa$F|f|qtBGws>Sw#`qVoI!sOuwGi*E^>^O*pEoW>cBHRE!4!W(R9mVGM`}!{QByH zenB0CFvZ-{v@Z3%7~iA?cOtkfjM4YJa`F}Y@_59u9&I$r1z#LK`rThRtrzoD4i*CL z-0if>IeJ%GOMfk7~VMQ&b1Bm6+E1}R5QapJt8uQ&a@K#OW1pYmotT`+JiH$ma-0@=1 zlJQ?{Oog^Nxy$6F;W5#|>W!taiNW1Febxz1bNF^)mO)>36V(p!#8gDFCk+utFl5}I z0ndI&+Yac#zuwFR;z?XxBN~Qc4rVu%M9S{6nQz!_cR39gch1V^a$hH51w`RNeP@0{ z8XTTM>7GzBrvL0XO}tC+C2Bt01QHuB*2FwS$96!r@}mG@XgWK1 zy>?BzomH=kHu}-Rl>({gk62p^w?2*#Hz;kBQj?|~JNuc~NB|3|(si%y9Z2Mw#z6M; zJLc|Y3D?;z?3<8zlXWMZepFy!u|2sl|KJsBw}%nnvLnD80|!lKBa3_0v)X@^G*{Y0 z+6(U<4OP3U?H~@eT2|#SB=-v)y>ZwJFawq)v|YRh@$hg$WglZMnA26gOwHoQ#TAE3 zOCxK~9i|NE)-{lanI10<9Q%_V?Unu#e3GWN}iHhNh;LukY-E z{@Jje5@P?zi)m@Z==}0g-%`C9uyUV}mEyvjvvo@833~4@Eu>*BMB8gRUn6IkG}c-ET`pLkdNctsi9a4v1xY ziM^Sb58P`w*Cx!aaclb&)~sg_-&i_;?PqqVec&VRd5h6i|GU5<@8wlWWntf0t$!b7JQZZtUG@C2tbUu)3VW^gA?6*JD$RZrQd{Pt?C( z?cHx$(ta1Fu6~nF4Q>8=(XNBh7o=8f{Op&T6P{1^JHU{rsGr~G`AnFI_ZS|?t+brAg#&f^IS+vmw(uNLo zt$ckPWL+AO`w|x;!9qE2Xcw2)D-Fr(7}q zy^>6(n2Y6u?$*_J&;r~CoKIv zED-bo(71Uc@pYORGab4e}!rgi!#bw;}Ik;`%(=|KywPF5&l}{7)RaNmg(W?XL&q1xky^6^0b~|Br>o zQVUM|e?$@{NQVDU0);}rY2Y#GXrEZwAGjP+J38oIJgnt8dyWa^GY?QvNUuHRGhBjC z=|y;7yMk^*oyIL#g<)x()=m}8b$j5REWQ#?;CZFegCuSwT&a&W`qndD^`d|+lN_G_ zJOYP)A0O3X)(%YXbzApXW5Q$f6jHt<)Af+u4Zbk9nWZjR+%1${!7f?1qqNhlnlPBl zH|NA)xHb-B*^J7JL8BLoHoN(F&&^M_a^YY_ezRMT!(;u-Mi)Su>JCzq$|EEG7-kUd z^;LMb_-2ri#0q6*fKR8dwYX4m%}UL>z$2LKPg411d0h+!b)J+4OU}$E)FiLi|D-;8 z7Ikl-AyiPa@<6kpIde7s9EQ;oz#J6p;4}CY1eMtoUXA>z{-+U7DB?U{+Eb!pFvPQ* z7FAwS^$1}=O*=AftC}*;sJ*LC&sE<&-Z^LLvi3f_m82yTlI;>1DWB+`1rQz6a{TLqe*wyIF4B3Q<^iw=k4&6GRTTG|ImnWm>O@fPb zwyI$5Omfcs1aE;Nd}gQWQI0SwNT}5$lD$*e8lJE4`Jf}=ZOQkAc-X(k!%o(O|A}UT zt;-omw&Foh$dwX@{gAF2+YQ8AU&7i?a_BzMV~}?aSuPcf@G2+n;Lp{tKE?u*nWQ7P zee+;uZ1xo#uKq1Cfzyii!>?O^zJ&1}KY5CBXX?W3yPJBYdTSJDoV}BJm>bTTCb(BY ztL+JHZst8P=UeASk{T2Au^9s+4GASyua*2~368--NP|o$Zaw`kDGEWE?m$P)@>(Pd zt$L<8rp{*xmE#~%3I(A=cjSDe`~Bsd497PX33z?Lvr|-+>&%rMP=p*^6>3OvJ;j88 z>oDC*TNRvNbF5KE3MMP(EvZIBNmIgQgt(Ai{t^%^pL2Qf(?TH*wDSB(ZZo|-0xPH? zt1KxEwA1AYzu2SJz2Rj)4ppK<$UdioCtgBbnAzS@&J}~fSLnwHpF(-Nb@!N%S;ED+ z#`97JtR(odMPr%=+5OFX)ZYjNSec;`!B!10wuj76m`N z=I2)-g^r!)H`?wqLlGlCdzT>LhBOk~3K){Ltlv=zpyI*x21taT!QnouNWYaSh47Vo zGab9A9(mwkEZsn>C+ey3Nu~N=TBqbh0!21p-QfA9LZ9T3yLf53bRI^sG=)w0T;FM6~9+HJw zm1sm?l@%QJu4m;iH18ocv!1yYebIeO+E5ft8pq5L9XeFo-Thgj_ms|s%U|EX>n`wq z7A$3K7qNUMyw@*{!VC9Yocws=DauQiaF-51xal6E;{vGKLwyZ`A|3lh_~)$MkK~qK z=km+Rg&FdZ@?fg03^C@c47oOHSV%17XwqQc0_(OD4uwRl$y&4BD$TDa9g>lFpdD+2z0zwOv6eux@*kzfPE;7ZfsXI#iM(JMzVKPqKB>JSNoi^EAW zP~1MzT|0@y2fo28{J!vRM` zJ~oRuML{vaiDzFN8Z2b}Wm(_f`&%lcQxVMYt1tN{gdg>i`>poQ%1XHr?Nr#R{nh*j z^&jlt?GbPRtce}sP4`s)yLC1U=pUStmi{qa8?wYX@ej&wsg|og<2u2JkK~D&pTF#B zA4tI4N)B&{y{@h~*d+fH6*!uXhPvcj7Qz{_!hTVM+t@rMmf)&OB%5vMjRHZbP_*Zm zj|ESObe^z!2jd$LZz_DyNW*b3By(P8S}Vc3VHh#7s2Yw|Gv9(BL3)xSHV4xpk%82g zyvHBFg+!==*-vv-xF9saHwfWJScsKBI;P)gzPDzpv2uI&D)oyMc7&Lzl-Me=J=;n9 zav3{kd&o{WWL_N>B7uwl=+ph01Fg}2v47Eri@l@*y>>;!pvS^Y&7L{1 z2+#3*i}IgKbdZLQ+goD=?7zPw{Ljz!r0|y|6wDIIJ~SNs&+~>S$yT$#N`Y!r$4tU&6yN~ zbUdfEX%GjmOkG83xA^C_6W|B){1&&ek(sIsRh#X8+Ook7VJi{p;~;7I;1^U$3)H29 zey+~;i`82DnC5|d#Hal77xn9}9PFwG2-z4Qew52N{LyteD~G#@+XzK|)p!h`K6VSr3WBFm$J$o%UDN=LnA-M;&?WE7F5 zL@7@19x!VWDy6#$c}fomq3-u%*K~D@*jjb`aF67~(_7)jo?*TT@O&q@gAuuo?Qm=Y8fm23qGI4GBKx!)JKS_THv#>4jR2g0wk8z8HQ# zLSH}82gCL&UjpaN7cwXKYw7#k@#0x8sPOK7*TwG3`ebsZZohm<$HWo+HMqOq;>i0f z38Ps&Qpoi<##gYa+^3z=uny0`aF_RK+{&(=4;x?U@Bt7A5&;|i=@I>g=rZBMFo1ypg}mzVI0!yYFoXQpJydr= z0%k73@;=6P&QFl}eSW#e7g`t$1Ntdu-_EJcgkP#<7;mdnas>V#Gnj_`w4eRNW7jXO zuZbSC?ND0pi}8OVF4=1wXJT6tUx&H=M_1-%P;xhF!ig6wl z1ieCltQ{M4bi{0z`DHB%;8Cu=pcmFB!hXL}J3CyH# z#-a#NQ{eo!)U@3uEEZQcQ>0Qbwf6t0=-$q{Y`%HQUtuHDNlxljITLQuvCnWt;l4oDit}MnuLde$ZD4!C??)k*gNKxg3o>3cV`i&v;N!8%QZTLWnz2hm6SL#8W6q{Wo1v`lBNc@nt*!`DYAOn;y}lB>S*;Z?sdM|hTmv#W?fG28Q9e9(18za z`o@QIEDnHF$qbsaR%KA5hhU2+2SktMB8MWAeg;VqjJ*X+q5p_Q{X*uJ6D0hn=gE&* zDXyI6MpQa4ae<0FX{FG{D8t1 zGq?K4T-R2Gua3=t`iV3N0LL>(^DFuu^xBK2b{K5u$?ne7w-GaIIS|6dg2do~R!iuI za&6nFl0T{Y9CV&sO}5po??>cd;3@!Ip8Pb`j22gunoppMrnEo7bWUJJK|B#qttU(u za;2qiI$O*Swi~yOyc>>zd58cn)UK3!A`@Nk3?G_pqSIK z!I>V`P&I@)x*VJMyUwgEfv?BHi6Nh0Y>Jz$vH{b$`5{ zA069j)_JN0&oSNpDB&uGk|GQ2Ujt4zRdPExwS_brJIDq!cd0i|e;&M~1dBXepB8Lb zDz?;R+KD(`s~MaqdB}QZ+&~odg3z3Rh<67mpN2QYFD|kZmKz^eckj zdf_vg09ktke^g0iVxHwjt3NG|Hr^4dPeBXDi6H2T$=W}prL)7jv3X4!p7uW-EC_xZ z`nM7AQ(SIYe~tY9&<6*+?|J{KS$Dp5#2@>iF7ppdQhmm`_}-99Tv^w%S_X`o{jAUk zUOx%IJl4Te4OZ}8eP^iDq^LQGn@LGrIrS@$;3um%5CNCdDa~@9Od&T_REb2aFwQ4HOubCx zGj6)Wq?^CiGWCgth4krT;;VcaLs^onvwb$3BKyy|*i>y--B2=L5R0}&e0GK@Wh6## znwLw2?(@EE2w5JAU-6P?Yrs`YmII<7^L?*mO5a0|#IV%aH-&8@TY+!*_ZJ2%`UJEQ zac=-W>6C}sh>AWbC3DP=LPxXDk|1s#K`k9AK5}bZe5a!^>qFJRHU&MVmxDUg+}3nd zYp?&!NH}MDJKvj~UD3}(AkYu{wLLsB5E&j!-B`SmO^buhFtt}H^LBYJ2`o#k1dc49 zTKL|j@AYZe{{uLh869cfyswtXi4yctKT{6P6QlI~=@j_MN9U?iMTds4`kTmjZB&cK zSsJxcEr0EEUu7_>txqO>(3SLS*j2~m+4|>9Uixjl_+|I#R=EFc_FSl;dx4bw>)>^3 z_h8Gz^%ES24CNNAP3k-pDZ*=XG(96o4H|JjUOOHi z@ca!=4$(agJ5GAkVp%^h@-k!PTqQij5^Xa}$A2jJEQR>_nOXL9e|DiHAy2K+lG?9v zmaNR%iW9*Re`a`8%^wdI)`rs|8`Z;nnhnyR?_+8!mm|}Qo&yC@>P#C=47cnH39);d zYYc;}xhZAu>NzSe({D;XzKrmhAkpg!ky0ZN`ap3@*ir#WnUy{y5wc7_n?nfemz7dH zb7MMmT=9>4PVJEs)s9~J8!lhsapgZp%3ePgp?%1i;U(ZAsW>A($S5N3@Exc71O2&1 zcC^`x>a&fto?eS$B`;?|o*HVEZ`U1SI#rA%%ZUTRtYSh!t@;dJ#nWs=ZD#E+^}nM zz}@*L;Fsg6hlc9<83sKeP3h2KgTlf(`^XoAA^tu7)3`;CkBi|?r zxekPhBYfeNE9$$irIGGeFRv{c63fMmmXzr@nX{*|ITrBEi1ZRvN{6%s=7m^K=;{p2 z2HZuUB0ro9A$H%4wNGhG-={FBkzaeWupL^~wguf{>ML;DU6M+)OpK8p>3Z(C{!NgsQDiFNBXuu-lfo=e4N;l4s^YKoasA$%NcM}*7maP`;JNzj}k zyrA^-CjBOInx$gCck(S+^&6ei?Wc++)yhJj3DiIT%9LXIoV;DUQficap!aCKT)nW~ zEf8yf9OZy$^m?)<4`q>+AYn(rsbw$9*Oh)L$Irt@d7KUfjznDZ% znR@kGkI<8n;Q7E-_m#5IWj;A?U^n_CsBY~Uw+)uUP&Gx=o=k+h(c;zXMb_`-3S5B` zP6PX^)ki)(b%Ru)H}n+0QZYIUdd?K-Oh_o>B@^t}^rNIphc265(KBw;t6q6mZhFY; zbS1kc_UCU+pNH3)L)?{LD= zq@#E>l5n1rT9CI_aq_Rc` zNICe9o3OG<>*SbODZMT4Qt)Z@MVY5OJ_$=&&h-7k?)lDXyb`vB+8)ywjj%^s@RFfz zVrd>(as=jNRlH+-J673Rq)+ZTZUmX_90aer^;FC*Pnt6m&9=|`n)td?Q=52>FnGRU zr_{W#Z=CJVJQSQaPGdIP0MjC+R+3qi&3Ra?#U zS#A?M$D#gjf@_F1-;su3bgN^^&o$S;XB`f_e8*v$>`_$`kI*tP6ITS$mGe4m_F-Nd z@Ui%Dy*|$wHY)-Q-vtC@<>&M*)ZW{|l;TP=V#{9Z1nz?T)T^7=OUnD8{ zrr1b-+@BQWt4|r-ZW2jxO+MnwnRtrnCBATC4iyF}c`WV(% z#jmyZi&#`~0CS!d{gB@nJV92|OXDwq{h)91Js3}^7mrYY(uFeLov#{MTgx!aqX9FMF+rkMWOc(B?q27sFrb#3#m0y*+OXS|X6=N-o#cY%VpJYnJ1X_h0lrREqRx-!ses$(TJhg~ zd=1u^d-&Q$J_^GQvSf{|p@7Izi{wNFI(;QDRp!=uahILC=HuiGIBd%5|J}-oT){FW zT9P+!JaEh|451|kVxCuZvej6+9iepp5vO{g$u2B(n3(v&!8>Cy_5sWqV zBYgfkcf;fJ6CgxY0@^r4J>JAJk=BB&|Y z?Z+efLBiOn`~4CBsX4&zXDhzenDKAy@Chqs4-lPs`3)81qU1J{+AUH-kC!RGCH)ht z|10iH_%^JF4fv=iWp-M!-ngQhV_yi>Qb_0ITAF>%4EjK1CZ?Zcgbu-N_a}~{z;-(< zCY1afDXB2r`yZ5*3@$hxbN~UbN8)+2ieMMheyOt2CJC39x5?nup8)&BzpY<3QI@!v zN{IY1-ysJ8)+KkRg^BJ( z7k3-#U{WPABT4n`oIv63o}IVIAbxURX}|cb8fM-cwxWtvntOOjcz6DLF{eGn?u~9seY9)GQAm^wDgD#j z`%pnJftlJ?%kdU8?P>L#3s%dYFLKVVU3ulM=t&C8F^6O#K{ z$3}mQ+#|420Y54Bg=a0TrZOuVZ#=vEDRCKsY(x?+OkLkNoFNH|o<&bGM^BlvCdRoY z;7b0?v5#F_3dmFpb1Dl;RUhf~^*L@`6>~fuI$7-YWxk)k;l&-#a~T`btKPG-B=LQ8 j$9|J?QJEd+7k^=E#mttr!PCbAfFC(2Wyuopcc1& literal 0 HcmV?d00001 diff --git a/redash/query_runner/google_analytics4.py b/redash/query_runner/google_analytics4.py new file mode 100644 index 0000000000..7ded4cf61f --- /dev/null +++ b/redash/query_runner/google_analytics4.py @@ -0,0 +1,179 @@ +import datetime +import logging +from base64 import b64decode + +import requests + +from redash.query_runner import ( + TYPE_DATE, + TYPE_DATETIME, + TYPE_FLOAT, + TYPE_INTEGER, + TYPE_STRING, + BaseQueryRunner, + register, +) +from redash.utils import json_dumps, json_loads + +logger = logging.getLogger(__name__) + +try: + import httplib2 + from apiclient.discovery import build + from oauth2client.service_account import ServiceAccountCredentials + + enabled = True +except ImportError: + enabled = False + +types_conv = dict( + STRING=TYPE_STRING, + INTEGER=TYPE_INTEGER, + FLOAT=TYPE_FLOAT, + DATE=TYPE_DATE, + DATETIME=TYPE_DATETIME, +) + +ga_report_endpoint = "https://analyticsdata.googleapis.com/v1beta/properties/{propertyId}:runReport" +ga_metadata_endpoint = "https://analyticsdata.googleapis.com/v1beta/properties/{propertyId}/metadata" + + +def format_column_value(column_name, value, columns): + column_type = [col for col in columns if col["name"] == column_name][0]["type"] + + if column_type == TYPE_DATE: + value = datetime.datetime.strptime(value, "%Y%m%d") + elif column_type == TYPE_DATETIME: + if len(value) == 10: + value = datetime.datetime.strptime(value, "%Y%m%d%H") + elif len(value) == 12: + value = datetime.datetime.strptime(value, "%Y%m%d%H%M") + else: + raise Exception("Unknown date/time format in results: '{}'".format(value)) + + return value + + +def get_formatted_column_json(column_name): + data_type = None + + if column_name == "date": + data_type = "DATE" + elif column_name == "dateHour": + data_type = "DATETIME" + + result = { + "name": column_name, + "friendly_name": column_name, + "type": types_conv.get(data_type, "string"), + } + + return result + + +def parse_ga_response(response): + columns = [] + + for dim_header in response["dimensionHeaders"]: + columns.append(get_formatted_column_json(dim_header["name"])) + + for met_header in response["metricHeaders"]: + columns.append(get_formatted_column_json(met_header["name"])) + + rows = [] + for r in response["rows"]: + counter = 0 + d = {} + for item in r["dimensionValues"]: + column_name = columns[counter]["name"] + value = item["value"] + + d[column_name] = format_column_value(column_name, value, columns) + counter = counter + 1 + + for item in r["metricValues"]: + column_name = columns[counter]["name"] + value = item["value"] + + d[column_name] = format_column_value(column_name, value, columns) + counter = counter + 1 + + rows.append(d) + + return {"columns": columns, "rows": rows} + + +class GoogleAnalytics4(BaseQueryRunner): + should_annotate_query = False + + @classmethod + def type(cls): + return "google_analytics4" + + @classmethod + def name(cls): + return "Google Analytics 4" + + @classmethod + def enabled(cls): + return enabled + + @classmethod + def configuration_schema(cls): + return { + "type": "object", + "properties": { + "propertyId": {"type": "number", "title": "Property Id"}, + "jsonKeyFile": {"type": "string", "title": "JSON Key File"}, + }, + "required": ["propertyId", "jsonKeyFile"], + "secret": ["jsonKeyFile"], + } + + def _get_access_token(self): + key = json_loads(b64decode(self.configuration["jsonKeyFile"])) + + scope = ["https://www.googleapis.com/auth/analytics.readonly"] + creds = ServiceAccountCredentials.from_json_keyfile_dict(key, scope) + + build("analyticsdata", "v1beta", http=creds.authorize(httplib2.Http())) + + return creds.access_token + + def run_query(self, query, user): + access_token = self._get_access_token() + params = json_loads(query) + + property_id = self.configuration["propertyId"] + + headers = {"Content-Type": "application/json", "Authorization": f"Bearer {access_token}"} + + url = ga_report_endpoint.replace("{propertyId}", str(property_id)) + r = requests.post(url, json=params, headers=headers) + r.raise_for_status() + + raw_result = r.json() + + data = parse_ga_response(raw_result) + + error = None + json_data = json_dumps(data) + + return json_data, error + + def test_connection(self): + try: + access_token = self._get_access_token() + property_id = self.configuration["propertyId"] + + url = ga_metadata_endpoint.replace("{propertyId}", str(property_id)) + + headers = {"Content-Type": "application/json", "Authorization": f"Bearer {access_token}"} + + r = requests.get(url, headers=headers) + r.raise_for_status() + except Exception as e: + raise Exception(e) + + +register(GoogleAnalytics4) diff --git a/redash/query_runner/google_search_console.py b/redash/query_runner/google_search_console.py new file mode 100644 index 0000000000..52c3b198a2 --- /dev/null +++ b/redash/query_runner/google_search_console.py @@ -0,0 +1,160 @@ +import logging +from base64 import b64decode +from datetime import datetime + +from redash.query_runner import ( + TYPE_DATE, + TYPE_DATETIME, + TYPE_FLOAT, + TYPE_INTEGER, + TYPE_STRING, + BaseSQLQueryRunner, + register, +) +from redash.utils import json_dumps, json_loads + +logger = logging.getLogger(__name__) + +try: + import httplib2 + from apiclient.discovery import build + from apiclient.errors import HttpError + from oauth2client.service_account import ServiceAccountCredentials + + enabled = True +except ImportError: + enabled = False + + +types_conv = dict( + STRING=TYPE_STRING, + INTEGER=TYPE_INTEGER, + FLOAT=TYPE_FLOAT, + DATE=TYPE_DATE, + DATETIME=TYPE_DATETIME, +) + + +def parse_ga_response(response, dimensions): + columns = [] + + for item in dimensions: + if item == "date": + data_type = "date" + else: + data_type = "string" + columns.append( + { + "name": item, + "friendly_name": item, + "type": data_type, + } + ) + + default_items = ["clicks", "impressions", "ctr", "position"] + for item in default_items: + columns.append({"name": item, "friendly_name": item, "type": "number"}) + + rows = [] + for r in response.get("rows", []): + d = {} + for k, value in r.items(): + if k == "keys": + for index, val in enumerate(value): + column_name = columns[index]["name"] + column_type = columns[index]["type"] + val = get_formatted_value(column_type, val) + d[column_name] = val + else: + column_name = k + column_type = [col for col in columns if col["name"] == column_name][0]["type"] + value = get_formatted_value(column_type, value) + d[column_name] = value + rows.append(d) + + return {"columns": columns, "rows": rows} + + +def get_formatted_value(column_type, value): + if column_type == "number": + value = round(value, 2) + elif column_type == TYPE_DATE: + value = datetime.strptime(value, "%Y-%m-%d") + elif column_type == TYPE_DATETIME: + if len(value) == 10: + value = datetime.strptime(value, "%Y%m%d%H") + elif len(value) == 12: + value = datetime.strptime(value, "%Y%m%d%H%M") + else: + raise Exception("Unknown date/time format in results: '{}'".format(value)) + return value + + +class GoogleSearchConsole(BaseSQLQueryRunner): + should_annotate_query = False + + @classmethod + def type(cls): + return "google_search_console" + + @classmethod + def name(cls): + return "Google Search Console" + + @classmethod + def enabled(cls): + return enabled + + @classmethod + def configuration_schema(cls): + return { + "type": "object", + "properties": { + "siteURL": {"type": "string", "title": "Site URL"}, + "jsonKeyFile": {"type": "string", "title": "JSON Key File"}, + }, + "required": ["jsonKeyFile"], + "secret": ["jsonKeyFile"], + } + + def __init__(self, configuration): + super(GoogleSearchConsole, self).__init__(configuration) + self.syntax = "json" + + def _get_search_service(self): + scope = ["https://www.googleapis.com/auth/webmasters.readonly"] + key = json_loads(b64decode(self.configuration["jsonKeyFile"])) + creds = ServiceAccountCredentials.from_json_keyfile_dict(key, scope) + return build("searchconsole", "v1", http=creds.authorize(httplib2.Http())) + + def test_connection(self): + try: + service = self._get_search_service() + service.sites().list().execute() + except HttpError as e: + # Make sure we return a more readable error to the end user + raise Exception(e._get_reason()) + + def run_query(self, query, user): + logger.debug("Search Analytics is about to execute query: %s", query) + params = json_loads(query) + site_url = self.configuration["siteURL"] + api = self._get_search_service() + + if len(params) > 0: + try: + response = api.searchanalytics().query(siteUrl=site_url, body=params).execute() + data = parse_ga_response(response, params["dimensions"]) + error = None + json_data = json_dumps(data) + except HttpError as e: + # Make sure we return a more readable error to the end user + error = e._get_reason() + json_data = None + else: + error = "Wrong query format." + json_data = None + return json_data, error + + +register(GoogleSearchConsole) diff --git a/redash/settings/__init__.py b/redash/settings/__init__.py index 880ab9bc3c..f5f83cbe41 100644 --- a/redash/settings/__init__.py +++ b/redash/settings/__init__.py @@ -327,6 +327,8 @@ def email_server_is_configured(): "redash.query_runner.databend", "redash.query_runner.nz", "redash.query_runner.arango", + "redash.query_runner.google_analytics4", + "redash.query_runner.google_search_console", ] enabled_query_runners = array_from_string( diff --git a/tests/query_runner/test_google_analytics4.py b/tests/query_runner/test_google_analytics4.py new file mode 100644 index 0000000000..9a6818758d --- /dev/null +++ b/tests/query_runner/test_google_analytics4.py @@ -0,0 +1,194 @@ +import datetime +from unittest import TestCase + +from redash.query_runner.google_analytics4 import ( + format_column_value, + get_formatted_column_json, + parse_ga_response, +) + + +class TestFormatColumnValue(TestCase): + def setUp(self): + self.columns = [ + { + "name": "date", + "friendly_name": "date", + "type": "date", + }, + { + "name": "dateHour", + "friendly_name": "dateHour", + "type": "datetime", + }, + { + "name": "dateHourMinute", + "friendly_name": "dateHourMinute", + "type": "datetime", + }, + { + "name": "city", + "friendly_name": "city", + "type": "string", + }, + ] + + def test_string_value(self): + column_name = "city" + column_value = "Delhi" + + value = format_column_value(column_name, column_value, self.columns) + + self.assertEqual(value, column_value) + + def test_for_date(self): + column_name = "date" + column_value = "20230711" + + value = format_column_value(column_name, column_value, self.columns) + + self.assertEqual(value, datetime.datetime.strptime(column_value, "%Y%m%d")) + + def test_for_date_hour(self): + column_name = "dateHour" + column_value = "2023071210" + + value = format_column_value(column_name, column_value, self.columns) + + self.assertEqual(value, datetime.datetime.strptime(column_value, "%Y%m%d%H")) + + def test_for_date_hour_minute(self): + column_name = "dateHour" + column_value = "202307121030" + + value = format_column_value(column_name, column_value, self.columns) + + self.assertEqual(value, datetime.datetime.strptime(column_value, "%Y%m%d%H%M")) + + def test_when_exception_raise(self): + column_name = "dateHour" + column_value = "20230712103025" + + with self.assertRaisesRegex(Exception, "Unknown date/time format in results: '20230712103025'"): + format_column_value(column_name, column_value, self.columns) + + +class TestGetFormattedColumnJson(TestCase): + def test_date_column(self): + column_name = "date" + expected_response = { + "name": column_name, + "friendly_name": column_name, + "type": "date", + } + + self.assertEquals(get_formatted_column_json(column_name), expected_response) + + def test_date_hour_column(self): + column_name = "dateHour" + expected_response = { + "name": column_name, + "friendly_name": column_name, + "type": "datetime", + } + + self.assertEquals(get_formatted_column_json(column_name), expected_response) + + def test_other_string(self): + column_name = "city" + expected_response = { + "name": column_name, + "friendly_name": column_name, + "type": "string", + } + + self.assertEquals(get_formatted_column_json(column_name), expected_response) + + +class TestParseGaResponse(TestCase): + def test_parse_ga_response(self): + response = { + "dimensionHeaders": [{"name": "date"}], + "metricHeaders": [{"name": "activeUsers", "type": "TYPE_INTEGER"}], + "rows": [{"dimensionValues": [{"value": "20230713"}], "metricValues": [{"value": "50"}]}], + "rowCount": 1, + "metadata": {"currencyCode": "USD", "timeZone": "Asia/Calcutta"}, + "kind": "analyticsData#runReport", + } + + expected_value = { + "columns": [ + {"name": "date", "friendly_name": "date", "type": "date"}, + {"name": "activeUsers", "friendly_name": "activeUsers", "type": "string"}, + ], + "rows": [{"date": datetime.datetime(2023, 7, 13, 0, 0), "activeUsers": "50"}], + } + + value = parse_ga_response(response) + + self.assertEquals(value, expected_value) + + def test_parse_ga_response_with_date_hour(self): + response = { + "dimensionHeaders": [{"name": "dateHour"}], + "metricHeaders": [{"name": "activeUsers", "type": "TYPE_INTEGER"}], + "rows": [ + {"dimensionValues": [{"value": "2023071312"}], "metricValues": [{"value": "7"}]}, + {"dimensionValues": [{"value": "2023071318"}], "metricValues": [{"value": "7"}]}, + {"dimensionValues": [{"value": "2023071317"}], "metricValues": [{"value": "5"}]}, + {"dimensionValues": [{"value": "2023071319"}], "metricValues": [{"value": "5"}]}, + {"dimensionValues": [{"value": "2023071320"}], "metricValues": [{"value": "5"}]}, + {"dimensionValues": [{"value": "2023071314"}], "metricValues": [{"value": "4"}]}, + {"dimensionValues": [{"value": "2023071315"}], "metricValues": [{"value": "4"}]}, + {"dimensionValues": [{"value": "2023071302"}], "metricValues": [{"value": "3"}]}, + {"dimensionValues": [{"value": "2023071305"}], "metricValues": [{"value": "3"}]}, + {"dimensionValues": [{"value": "2023071313"}], "metricValues": [{"value": "3"}]}, + {"dimensionValues": [{"value": "2023071306"}], "metricValues": [{"value": "2"}]}, + {"dimensionValues": [{"value": "2023071310"}], "metricValues": [{"value": "2"}]}, + {"dimensionValues": [{"value": "2023071321"}], "metricValues": [{"value": "2"}]}, + {"dimensionValues": [{"value": "2023071300"}], "metricValues": [{"value": "1"}]}, + {"dimensionValues": [{"value": "2023071304"}], "metricValues": [{"value": "1"}]}, + {"dimensionValues": [{"value": "2023071307"}], "metricValues": [{"value": "1"}]}, + {"dimensionValues": [{"value": "2023071308"}], "metricValues": [{"value": "1"}]}, + {"dimensionValues": [{"value": "2023071309"}], "metricValues": [{"value": "1"}]}, + {"dimensionValues": [{"value": "2023071311"}], "metricValues": [{"value": "1"}]}, + {"dimensionValues": [{"value": "2023071316"}], "metricValues": [{"value": "1"}]}, + {"dimensionValues": [{"value": "2023071323"}], "metricValues": [{"value": "1"}]}, + ], + "rowCount": 21, + "metadata": {"currencyCode": "USD", "timeZone": "Asia/Calcutta"}, + "kind": "analyticsData#runReport", + } + + expected_value = { + "columns": [ + {"name": "dateHour", "friendly_name": "dateHour", "type": "datetime"}, + {"name": "activeUsers", "friendly_name": "activeUsers", "type": "string"}, + ], + "rows": [ + {"dateHour": datetime.datetime(2023, 7, 13, 12, 0), "activeUsers": "7"}, + {"dateHour": datetime.datetime(2023, 7, 13, 18, 0), "activeUsers": "7"}, + {"dateHour": datetime.datetime(2023, 7, 13, 17, 0), "activeUsers": "5"}, + {"dateHour": datetime.datetime(2023, 7, 13, 19, 0), "activeUsers": "5"}, + {"dateHour": datetime.datetime(2023, 7, 13, 20, 0), "activeUsers": "5"}, + {"dateHour": datetime.datetime(2023, 7, 13, 14, 0), "activeUsers": "4"}, + {"dateHour": datetime.datetime(2023, 7, 13, 15, 0), "activeUsers": "4"}, + {"dateHour": datetime.datetime(2023, 7, 13, 2, 0), "activeUsers": "3"}, + {"dateHour": datetime.datetime(2023, 7, 13, 5, 0), "activeUsers": "3"}, + {"dateHour": datetime.datetime(2023, 7, 13, 13, 0), "activeUsers": "3"}, + {"dateHour": datetime.datetime(2023, 7, 13, 6, 0), "activeUsers": "2"}, + {"dateHour": datetime.datetime(2023, 7, 13, 10, 0), "activeUsers": "2"}, + {"dateHour": datetime.datetime(2023, 7, 13, 21, 0), "activeUsers": "2"}, + {"dateHour": datetime.datetime(2023, 7, 13, 0, 0), "activeUsers": "1"}, + {"dateHour": datetime.datetime(2023, 7, 13, 4, 0), "activeUsers": "1"}, + {"dateHour": datetime.datetime(2023, 7, 13, 7, 0), "activeUsers": "1"}, + {"dateHour": datetime.datetime(2023, 7, 13, 8, 0), "activeUsers": "1"}, + {"dateHour": datetime.datetime(2023, 7, 13, 9, 0), "activeUsers": "1"}, + {"dateHour": datetime.datetime(2023, 7, 13, 11, 0), "activeUsers": "1"}, + {"dateHour": datetime.datetime(2023, 7, 13, 16, 0), "activeUsers": "1"}, + {"dateHour": datetime.datetime(2023, 7, 13, 23, 0), "activeUsers": "1"}, + ], + } + value = parse_ga_response(response) + + self.assertEquals(value, expected_value) diff --git a/tests/query_runner/test_google_search_console.py b/tests/query_runner/test_google_search_console.py new file mode 100644 index 0000000000..433f0898bf --- /dev/null +++ b/tests/query_runner/test_google_search_console.py @@ -0,0 +1,169 @@ +import datetime +from unittest import TestCase + +from redash.query_runner.google_search_console import ( + get_formatted_value, + parse_ga_response, +) + + +class TestParseGaResponse(TestCase): + def test_parse_ga_response(self): + response = { + "rows": [ + { + "keys": ["example", "https://example.com/"], + "clicks": 1400, + "impressions": 48844, + "ctr": 0.5655737704918032, + "position": 1.0163934426229508, + }, + { + "keys": ["second keyword example", "https://example.com/example.html"], + "clicks": 12300, + "impressions": 41944, + "ctr": 0.5417661097852029, + "position": 1, + }, + ], + "responseAggregationType": "byPage", + } + + dimensions = ["query", "page"] + + expected_value = { + "columns": [ + {"name": "query", "friendly_name": "query", "type": "string"}, + {"name": "page", "friendly_name": "page", "type": "string"}, + {"name": "clicks", "friendly_name": "clicks", "type": "number"}, + {"name": "impressions", "friendly_name": "impressions", "type": "number"}, + {"name": "ctr", "friendly_name": "ctr", "type": "number"}, + {"name": "position", "friendly_name": "position", "type": "number"}, + ], + "rows": [ + { + "query": "example", + "page": "https://example.com/", + "clicks": 1400, + "impressions": 48844, + "ctr": 0.57, + "position": 1.02, + }, + { + "query": "second keyword example", + "page": "https://example.com/example.html", + "clicks": 12300, + "impressions": 41944, + "ctr": 0.54, + "position": 1, + }, + ], + } + + value = parse_ga_response(response, dimensions) + + self.assertEqual(value, expected_value) + + def test_parse_ga_response_with_date(self): + response = { + "rows": [ + { + "keys": ["example keyword", "2022-11-01"], + "clicks": 3964, + "impressions": 4954, + "ctr": 0.8, + "position": 1.0161616161616163, + }, + { + "keys": ["second keyword", "2022-11-01"], + "clicks": 35033, + "impressions": 42443, + "ctr": 0.8254716981132075, + "position": 1, + }, + ], + "responseAggregationType": "byProperty", + } + + dimensions = ["query", "date"] + + expected_value = { + "columns": [ + {"name": "query", "friendly_name": "query", "type": "string"}, + {"name": "date", "friendly_name": "date", "type": "date"}, + {"name": "clicks", "friendly_name": "clicks", "type": "number"}, + {"name": "impressions", "friendly_name": "impressions", "type": "number"}, + {"name": "ctr", "friendly_name": "ctr", "type": "number"}, + {"name": "position", "friendly_name": "position", "type": "number"}, + ], + "rows": [ + { + "query": "example keyword", + "date": datetime.datetime(2022, 11, 1, 0, 0), + "clicks": 3964, + "impressions": 4954, + "ctr": 0.8, + "position": 1.02, + }, + { + "query": "second keyword", + "date": datetime.datetime(2022, 11, 1, 0, 0), + "clicks": 35033, + "impressions": 42443, + "ctr": 0.83, + "position": 1, + }, + ], + } + value = parse_ga_response(response, dimensions) + + self.assertEqual(value, expected_value) + + +class TestFormatColumnValue(TestCase): + def test_string_value(self): + column_name = "city" + column_value = "Delhi" + + value = get_formatted_value(column_name, column_value) + + self.assertEqual(value, column_value) + + def test_number_value(self): + column_name = "number" + column_value = 25.4145 + + value = get_formatted_value(column_name, column_value) + + self.assertEqual(value, 25.41) + + def test_for_date(self): + column_name = "date" + column_value = "2023-07-11" + + value = get_formatted_value(column_name, column_value) + + self.assertEqual(value, datetime.datetime.strptime(column_value, "%Y-%m-%d")) + + def test_for_date_hour(self): + column_name = "datetime" + column_value = "2023071210" + + value = get_formatted_value(column_name, column_value) + + self.assertEqual(value, datetime.datetime.strptime(column_value, "%Y%m%d%H")) + + def test_for_date_hour_minute(self): + column_name = "datetime" + column_value = "202307121030" + + value = get_formatted_value(column_name, column_value) + + self.assertEqual(value, datetime.datetime.strptime(column_value, "%Y%m%d%H%M")) + + def test_when_exception_raise(self): + column_name = "datetime" + column_value = "20230712103025" + + with self.assertRaisesRegex(Exception, "Unknown date/time format in results: '20230712103025'"): + get_formatted_value(column_name, column_value) From c8516d38a7d3ee1622f84834bf27424a1468f8dc Mon Sep 17 00:00:00 2001 From: Oluwafemi Sule Date: Mon, 17 Jul 2023 04:40:00 +0200 Subject: [PATCH 125/274] Give query case sensitive treatment in query hash (#4254) Generating the query hash from the query text with no lowercasing of the query text allows case-sensitive parameter values in the dashboard to have different cache entries. Fixes #2137 --- ...ake_case_insensitive_hash_of_query_text.py | 51 +++++++++++++++++++ redash/utils/__init__.py | 6 +-- 2 files changed, 54 insertions(+), 3 deletions(-) create mode 100644 migrations/versions/1038c2174f5d_make_case_insensitive_hash_of_query_text.py diff --git a/migrations/versions/1038c2174f5d_make_case_insensitive_hash_of_query_text.py b/migrations/versions/1038c2174f5d_make_case_insensitive_hash_of_query_text.py new file mode 100644 index 0000000000..c872a918b9 --- /dev/null +++ b/migrations/versions/1038c2174f5d_make_case_insensitive_hash_of_query_text.py @@ -0,0 +1,51 @@ +"""Make case insensitive hash of query text + +Revision ID: 1038c2174f5d +Revises: fd4fc850d7ea +Create Date: 2023-07-16 23:10:12.885949 + +""" +from alembic import op +import sqlalchemy as sa +from sqlalchemy.sql import table + +from redash.utils import gen_query_hash + +# revision identifiers, used by Alembic. +revision = '1038c2174f5d' +down_revision = 'fd4fc850d7ea' +branch_labels = None +depends_on = None + + + +def change_query_hash(conn, table, query_text_to): + for record in conn.execute(table.select()): + query_text = query_text_to(record.query) + conn.execute( + table + .update() + .where(table.c.id == record.id) + .values(query_hash=gen_query_hash(query_text))) + + +def upgrade(): + queries = table( + 'queries', + sa.Column('id', sa.Integer, primary_key=True), + sa.Column('query', sa.Text), + sa.Column('query_hash', sa.String(length=10))) + + conn = op.get_bind() + change_query_hash(conn, queries, query_text_to=str) + + +def downgrade(): + queries = table( + 'queries', + sa.Column('id', sa.Integer, primary_key=True), + sa.Column('query', sa.Text), + sa.Column('query_hash', sa.String(length=10))) + + conn = op.get_bind() + change_query_hash(conn, queries, query_text_to=str.lower) diff --git a/redash/utils/__init__.py b/redash/utils/__init__.py index 0dad9111a6..5c81e43a64 100644 --- a/redash/utils/__init__.py +++ b/redash/utils/__init__.py @@ -51,14 +51,14 @@ def slugify(s): def gen_query_hash(sql): """Return hash of the given query after stripping all comments, line breaks - and multiple spaces, and lower casing all text. + and multiple spaces. - TODO: possible issue - the following queries will get the same id: + The following queries will get different ids: 1. SELECT 1 FROM table WHERE column='Value'; 2. SELECT 1 FROM table where column='value'; """ sql = COMMENTS_REGEX.sub("", sql) - sql = "".join(sql.split()).lower() + sql = "".join(sql.split()) return hashlib.md5(sql.encode("utf-8")).hexdigest() From 1ab90363252aed0e7ae1afe8caa7b00ff62bb4da Mon Sep 17 00:00:00 2001 From: Peter Lee Date: Tue, 18 Jul 2023 00:05:40 +0800 Subject: [PATCH 126/274] change default allow custom chart to true (#6184) --- redash/settings/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/redash/settings/__init__.py b/redash/settings/__init__.py index f5f83cbe41..72060dc32c 100644 --- a/redash/settings/__init__.py +++ b/redash/settings/__init__.py @@ -403,7 +403,7 @@ def email_server_is_configured(): FEATURE_DISABLE_REFRESH_QUERIES = parse_boolean(os.environ.get("REDASH_FEATURE_DISABLE_REFRESH_QUERIES", "false")) FEATURE_SHOW_QUERY_RESULTS_COUNT = parse_boolean(os.environ.get("REDASH_FEATURE_SHOW_QUERY_RESULTS_COUNT", "true")) FEATURE_ALLOW_CUSTOM_JS_VISUALIZATIONS = parse_boolean( - os.environ.get("REDASH_FEATURE_ALLOW_CUSTOM_JS_VISUALIZATIONS", "false") + os.environ.get("REDASH_FEATURE_ALLOW_CUSTOM_JS_VISUALIZATIONS", "true") ) FEATURE_AUTO_PUBLISH_NAMED_QUERIES = parse_boolean(os.environ.get("REDASH_FEATURE_AUTO_PUBLISH_NAMED_QUERIES", "true")) FEATURE_EXTENDED_ALERT_OPTIONS = parse_boolean(os.environ.get("REDASH_FEATURE_EXTENDED_ALERT_OPTIONS", "false")) From f51b5ad1bb0b5548ae26fd9fd0be895690f2b1e9 Mon Sep 17 00:00:00 2001 From: Justin Clift Date: Tue, 18 Jul 2023 04:25:29 +1000 Subject: [PATCH 127/274] Switch to automatically upgraded PostgreSQL 15 (#6185) The pgautoupgrade repo on Docker Hub now has stable version tags, so lets use the PostgreSQL 15.x series. --- .ci/docker-compose.ci.yml | 2 +- .ci/docker-compose.cypress.yml | 2 +- docker-compose.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.ci/docker-compose.ci.yml b/.ci/docker-compose.ci.yml index fcec357635..774ef8994a 100644 --- a/.ci/docker-compose.ci.yml +++ b/.ci/docker-compose.ci.yml @@ -19,7 +19,7 @@ services: image: redis:7-alpine restart: unless-stopped postgres: - image: pgautoupgrade/pgautoupgrade:dev + image: pgautoupgrade/pgautoupgrade:15-alpine3.8 command: "postgres -c fsync=off -c full_page_writes=off -c synchronous_commit=OFF" restart: unless-stopped environment: diff --git a/.ci/docker-compose.cypress.yml b/.ci/docker-compose.cypress.yml index 1d3d5bc39e..d5227dff01 100644 --- a/.ci/docker-compose.cypress.yml +++ b/.ci/docker-compose.cypress.yml @@ -68,7 +68,7 @@ services: image: redis:7-alpine restart: unless-stopped postgres: - image: pgautoupgrade/pgautoupgrade:dev + image: pgautoupgrade/pgautoupgrade:15-alpine3.8 command: "postgres -c fsync=off -c full_page_writes=off -c synchronous_commit=OFF" restart: unless-stopped environment: diff --git a/docker-compose.yml b/docker-compose.yml index 42444c0485..8c4397ca9c 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -52,7 +52,7 @@ services: image: redis:7-alpine restart: unless-stopped postgres: - image: pgautoupgrade/pgautoupgrade:dev + image: pgautoupgrade/pgautoupgrade:15-alpine3.8 ports: - "15432:5432" # The following turns the DB into less durable, but gains significant performance improvements for the tests run (x3 From 1e33eee479355373da27e4a8777556d1910aa543 Mon Sep 17 00:00:00 2001 From: Eric Radman Date: Mon, 17 Jul 2023 16:05:42 -0400 Subject: [PATCH 128/274] Ensure the email dev server is reachable on port 1080 and 1025 (#6186) Also set Redash to use local maildev when docker-compose is used to start a development server. Co-authored-by: Justin Clift --- docker-compose.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index 8c4397ca9c..5788e73985 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -17,6 +17,7 @@ x-redash-environment: &redash-environment REDASH_RATELIMIT_ENABLED: "false" REDASH_MAIL_DEFAULT_SENDER: "redash@example.com" REDASH_MAIL_SERVER: "email" + REDASH_MAIL_PORT: 1025 REDASH_ENFORCE_CSRF: "true" REDASH_GUNICORN_TIMEOUT: 60 # Set secret keys in the .env file @@ -65,5 +66,6 @@ services: email: image: maildev/maildev ports: - - "1080:80" + - "1080:1080" + - "1025:1025" restart: unless-stopped From 0bdd3bd826bf59c353f50a8eccfd926b2e1aa140 Mon Sep 17 00:00:00 2001 From: Eric Radman Date: Mon, 17 Jul 2023 16:51:42 -0400 Subject: [PATCH 129/274] Add support for a default alert template (#5996) - Escape all variables by default since Mustache only has a syntax for raw values - Generate a generic HTML result table to allow an alert template to display any query - Optionally allow alert template to be defined to be set using REDASH_ALERTS_DEFAULT_MAIL_BODY_TEMPLATE - Formatting updated by black --- redash/destinations/email.py | 8 +-- redash/models/__init__.py | 8 ++- redash/settings/__init__.py | 6 +- redash/templates/emails/alert.html | 92 ++++++++++++++++++++++++++++++ redash/utils/__init__.py | 5 ++ tests/models/test_alerts.py | 69 ++++++++++++++++++++++ 6 files changed, 180 insertions(+), 8 deletions(-) create mode 100644 redash/templates/emails/alert.html diff --git a/redash/destinations/email.py b/redash/destinations/email.py index 2b1a70a225..8f10737c6a 100644 --- a/redash/destinations/email.py +++ b/redash/destinations/email.py @@ -36,12 +36,8 @@ def notify(self, alert, query, user, new_state, app, host, options): if alert.custom_body: html = alert.custom_body else: - html = """ - Check alert / check - query
. - """.format( - host=host, alert_id=alert.id, query_id=query.id - ) + with open(settings.REDASH_ALERTS_DEFAULT_MAIL_BODY_TEMPLATE_FILE, "r") as f: + html = alert.render_template(f.read()) logging.debug("Notifying: %s", recipients) try: diff --git a/redash/models/__init__.py b/redash/models/__init__.py index 7721503345..b778309f3a 100644 --- a/redash/models/__init__.py +++ b/redash/models/__init__.py @@ -72,6 +72,7 @@ json_dumps, json_loads, mustache_render, + mustache_render_escape, sentry, ) from redash.utils.configuration import ConfigurationContainer @@ -975,6 +976,10 @@ def render_template(self, template): else: result_value = None + result_table = [] # A two-dimensional array which can rendered as a table in Mustache + for row in data["rows"]: + result_table.append([row[col["name"]] for col in data["columns"]]) + context = { "ALERT_NAME": self.name, "ALERT_URL": "{host}/alerts/{alert_id}".format(host=host, alert_id=self.id), @@ -986,8 +991,9 @@ def render_template(self, template): "QUERY_RESULT_VALUE": result_value, "QUERY_RESULT_ROWS": data["rows"], "QUERY_RESULT_COLS": data["columns"], + "QUERY_RESULT_TABLE": result_table, } - return mustache_render(template, context) + return mustache_render_escape(template, context) @property def custom_body(self): diff --git a/redash/settings/__init__.py b/redash/settings/__init__.py index 72060dc32c..68f2e41ce5 100644 --- a/redash/settings/__init__.py +++ b/redash/settings/__init__.py @@ -247,7 +247,11 @@ def email_server_is_configured(): MAX_FAILURE_REPORTS_PER_QUERY = int(os.environ.get("REDASH_MAX_FAILURE_REPORTS_PER_QUERY", 100)) ALERTS_DEFAULT_MAIL_SUBJECT_TEMPLATE = os.environ.get( - "REDASH_ALERTS_DEFAULT_MAIL_SUBJECT_TEMPLATE", "({state}) {alert_name}" + "REDASH_ALERTS_DEFAULT_MAIL_SUBJECT_TEMPLATE", "Alert: {alert_name} changed status to {state}" +) + +REDASH_ALERTS_DEFAULT_MAIL_BODY_TEMPLATE_FILE = os.environ.get( + "REDASH_ALERTS_DEFAULT_MAIL_BODY_TEMPLATE_FILE", fix_assets_path("templates/emails/alert.html") ) # How many requests are allowed per IP to the login page before diff --git a/redash/templates/emails/alert.html b/redash/templates/emails/alert.html new file mode 100644 index 0000000000..a3e1ebd19f --- /dev/null +++ b/redash/templates/emails/alert.html @@ -0,0 +1,92 @@ + + + + + + +

+ STATUS: {{ALERT_STATUS}} +

+ +

+ CONDITION: + + {{QUERY_RESULT_VALUE}} {{ALERT_CONDITION}} {{ALERT_THRESHOLD}} + +

+ +

+ QUERY: + {{QUERY_NAME}} +

+ + + + + {{#QUERY_RESULT_COLS}} + + {{/QUERY_RESULT_COLS}} + + + +{{#QUERY_RESULT_TABLE}} + + {{#.}} + + {{/.}} + +{{/QUERY_RESULT_TABLE}} +
{{friendly_name}}
{{.}}
+ +
+
+ + + diff --git a/redash/utils/__init__.py b/redash/utils/__init__.py index 5c81e43a64..8857c402af 100644 --- a/redash/utils/__init__.py +++ b/redash/utils/__init__.py @@ -126,6 +126,11 @@ def mustache_render(template, context=None, **kwargs): return renderer.render(template, context, **kwargs) +def mustache_render_escape(template, context=None, **kwargs): + renderer = pystache.Renderer() + return renderer.render(template, context, **kwargs) + + def build_url(request, host, path): parts = request.host.split(":") if len(parts) > 1: diff --git a/tests/models/test_alerts.py b/tests/models/test_alerts.py index a7d3c0bde8..d4b1c9a8a5 100644 --- a/tests/models/test_alerts.py +++ b/tests/models/test_alerts.py @@ -1,3 +1,4 @@ +import textwrap from unittest import TestCase from redash.models import OPERATORS, Alert, db, next_state @@ -88,3 +89,71 @@ def test_string_value(self): def test_boolean_value(self): self.assertEqual(Alert.TRIGGERED_STATE, next_state(OPERATORS.get("=="), False, "false")) self.assertEqual(Alert.TRIGGERED_STATE, next_state(OPERATORS.get("!="), False, "true")) + + +class TestAlertRenderTemplate(BaseTestCase): + def create_alert(self, results, column="foo", value="5"): + result = self.factory.create_query_result(data=results) + query = self.factory.create_query(latest_query_data_id=result.id) + alert = self.factory.create_alert(query_rel=query, options={"op": "equals", "column": column, "value": value}) + return alert + + def test_render_custom_alert_template(self): + alert = self.create_alert(get_results(1)) + custom_alert = """ +
+        ALERT_STATUS        {{ALERT_STATUS}}
+        ALERT_CONDITION     {{ALERT_CONDITION}}
+        ALERT_THRESHOLD     {{ALERT_THRESHOLD}}
+        ALERT_NAME          {{ALERT_NAME}}
+        ALERT_URL           {{{ALERT_URL}}}
+        QUERY_NAME          {{QUERY_NAME}}
+        QUERY_URL           {{{QUERY_URL}}}
+        QUERY_RESULT_VALUE  {{QUERY_RESULT_VALUE}}
+        QUERY_RESULT_ROWS   {{{QUERY_RESULT_ROWS}}}
+        QUERY_RESULT_COLS   {{{QUERY_RESULT_COLS}}}
+        
+ """ + expected = """ +
+        ALERT_STATUS        UNKNOWN
+        ALERT_CONDITION     equals
+        ALERT_THRESHOLD     5
+        ALERT_NAME          %s
+        ALERT_URL           https:///default/alerts/%d
+        QUERY_NAME          Query
+        QUERY_URL           https:///default/queries/%d
+        QUERY_RESULT_VALUE  1
+        QUERY_RESULT_ROWS   [{'foo': 1}]
+        QUERY_RESULT_COLS   [{'name': 'foo', 'type': 'STRING'}]
+        
+ """ % ( + alert.name, + alert.id, + alert.query_id, + ) + result = alert.render_template(textwrap.dedent(custom_alert)) + self.assertMultiLineEqual(result, textwrap.dedent(expected)) + + def test_render_custom_alert_template_query_table(self): + alert = self.create_alert(get_results(1)) + custom_alert = """ + + {{#QUERY_RESULT_TABLE}} + + {{#.}} + + {{/.}} + + {{/QUERY_RESULT_TABLE}} +
{{.}}
+ """ + expected = """ + + + + +
1
+ """ + result = alert.render_template(textwrap.dedent(custom_alert)) + self.assertMultiLineEqual(result, textwrap.dedent(expected)) From 6237d54347bb8739640f2d0649627bd385293165 Mon Sep 17 00:00:00 2001 From: Jun Date: Tue, 18 Jul 2023 10:26:18 +0900 Subject: [PATCH 130/274] Bump cryptography to 40.0.2 (#6187) Signed-off-by: Ye Sijun --- requirements.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/requirements.txt b/requirements.txt index 997b415ca5..7b78d2bbd3 100644 --- a/requirements.txt +++ b/requirements.txt @@ -3,7 +3,7 @@ Jinja2==3.1.2 itsdangerous==2.1.2 click==8.1.3 MarkupSafe==2.1.1 -pyOpenSSL==19.0.0 +pyOpenSSL==23.2.0 httplib2==0.18.1 wtforms==2.2.1 Flask-RESTful==0.3.10 @@ -46,7 +46,7 @@ xlsxwriter==1.2.2 pystache==0.6.0 parsedatetime==2.4 PyJWT==2.4.0 -cryptography==3.4.8 +cryptography==40.0.2 simplejson==3.16.0 ua-parser==0.8.0 user-agents==2.0 From 7567a8a76a75890375d92e2a2999bf47b95eea85 Mon Sep 17 00:00:00 2001 From: Justin Clift Date: Tue, 18 Jul 2023 18:17:34 +1000 Subject: [PATCH 131/274] Update yarn.lock for axios 0.27.2 version bump (#6190) Looks like I missed adding this file with one of the recent axios version bumps. --- yarn.lock | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/yarn.lock b/yarn.lock index 87d9923bd9..535c3e9ebc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1677,7 +1677,8 @@ "@redash/viz@file:viz-lib": version "1.0.0" dependencies: - axios "^0.21.2" + axios "0.27.2" + axios-auth-refresh "3.3.6" beautifymarker "^1.0.7" chroma-js "^1.3.6" classnames "^2.2.6" @@ -2801,13 +2802,6 @@ axios@^0.20.0: dependencies: follow-redirects "^1.10.0" -axios@^0.21.2: - version "0.21.2" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.2.tgz#21297d5084b2aeeb422f5d38e7be4fbb82239017" - integrity sha512-87otirqUw3e8CzHTMO+/9kh/FSgXt/eVDvipijwDtEuwbkySWZ9SBm6VEubmJ/kLKEoLQV/POhxXFb66bfekfg== - dependencies: - follow-redirects "^1.14.0" - axobject-query@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be" @@ -6742,7 +6736,7 @@ follow-redirects@1.9.0: dependencies: debug "^3.0.0" -follow-redirects@^1.0.0, follow-redirects@^1.10.0, follow-redirects@^1.14.0: +follow-redirects@^1.0.0, follow-redirects@^1.10.0: version "1.14.5" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.5.tgz#f09a5848981d3c772b5392309778523f8d85c381" integrity sha512-wtphSXy7d4/OR+MvIFbCVBDzZ5520qV8XfPklSN5QtxuMUJZ+b0Wnst1e1lCDocfzuCkHqj8k0FpZqO+UIaKNA== From a6447b46be123e81c175318c1cf83bb3a958dbbc Mon Sep 17 00:00:00 2001 From: Peter Lee Date: Wed, 19 Jul 2023 11:47:16 +0800 Subject: [PATCH 132/274] Add Bahrain to Map Visualization #5839 (#6192) --- LICENSE.borders | 3 +++ viz-lib/src/visualizations/choropleth/maps/countries.geo.json | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) create mode 100644 LICENSE.borders diff --git a/LICENSE.borders b/LICENSE.borders new file mode 100644 index 0000000000..f9e6eff226 --- /dev/null +++ b/LICENSE.borders @@ -0,0 +1,3 @@ +The Bahrain map data used in Redash was downloaded from +https://cartographyvectors.com/map/857-bahrain-detailed-boundary in PR #6192. +* Free for personal and commercial purpose with attribution. diff --git a/viz-lib/src/visualizations/choropleth/maps/countries.geo.json b/viz-lib/src/visualizations/choropleth/maps/countries.geo.json index d124a70d99..01dbf079a0 100644 --- a/viz-lib/src/visualizations/choropleth/maps/countries.geo.json +++ b/viz-lib/src/visualizations/choropleth/maps/countries.geo.json @@ -1 +1 @@ -{"type":"FeatureCollection","features":[{"type":"Feature","properties":{"abbrev":"Belize","name":"Belize","name_long":"Belize","iso_a2":"BZ","iso_a3":"BLZ","iso_n3":"084"},"geometry":{"type":"Polygon","coordinates":[[[-89.14308041050332,17.80831899664932],[-89.15090938999553,17.95546763760042],[-89.02985734735182,18.001511338772488],[-88.84834387892661,17.883198147040233],[-88.49012285027935,18.486830552641603],[-88.3000310940937,18.4999822046599],[-88.29633622918482,18.35327281338327],[-88.10681291375437,18.348673610909287],[-88.1234785631685,18.07667470954101],[-88.2853549873228,17.644142971258034],[-88.19786678745265,17.489475409408456],[-88.30264075392444,17.131693630435663],[-88.23951799187991,17.036066392479555],[-88.35542822951057,16.530774237529627],[-88.55182451043585,16.265467434143147],[-88.73243364129594,16.233634751851355],[-88.93061275913527,15.887273464415074],[-89.22912167026928,15.88693756760517],[-89.15080603713095,17.015576687075836],[-89.14308041050332,17.80831899664932]]]}},{"type":"Feature","properties":{"abbrev":"Can.","name":"Canada","name_long":"Canada","iso_a2":"CA","iso_a3":"CAN","iso_n3":"124"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-63.6645,46.55001],[-62.9393,46.41587],[-62.01208,46.44314],[-62.50391,46.03339],[-62.87433,45.96818],[-64.1428,46.39265],[-64.39261,46.72747],[-64.01486,47.03601],[-63.6645,46.55001]]],[[[-61.806305,49.10506],[-62.29318,49.08717],[-63.58926,49.40069],[-64.51912,49.87304],[-64.17322,49.95718],[-62.85829,49.70641],[-61.835585,49.28855],[-61.806305,49.10506]]],[[[-123.51000158755114,48.51001089130344],[-124.0128907883995,48.370846259141416],[-125.65501277733837,48.8250045843385],[-125.95499446679275,49.179995835967645],[-126.85000443587187,49.53000031188043],[-127.0299934495444,49.81499583597008],[-128.05933630436624,49.9949590114266],[-128.44458410710217,50.539137681676124],[-128.35841365625544,50.770648098343685],[-127.3085810960299,50.55257355407195],[-126.69500097721232,50.400903225295394],[-125.75500667382319,50.29501821552938],[-125.4150015875588,49.95000051533261],[-124.92076818911934,49.475274970083404],[-123.92250870832102,49.06248362893581],[-123.51000158755114,48.51001089130344]]],[[[-56.13403581401712,50.6870097926793],[-56.795881720595276,49.81230866149096],[-56.1431050278843,50.150117499382844],[-55.471492275602934,49.93581533466846],[-55.82240108908093,49.58712860777911],[-54.935142584845664,49.31301097268684],[-54.47377539734378,49.55669118915918],[-53.476549445191324,49.24913890237405],[-53.78601375997124,48.51678050393363],[-53.086133999226256,48.687803656603535],[-52.958648240762244,48.157164211614486],[-52.64809872090419,47.5355484075755],[-53.069158291218336,46.65549876564495],[-53.52145626485304,46.61829173439483],[-54.17893551290254,46.80706574155701],[-53.961868659060485,47.62520701760192],[-54.24048214376214,47.75227936460763],[-55.4007730780115,46.884993801453135],[-55.99748084168584,46.9197203639533],[-55.29121904155278,47.389562486351],[-56.25079871278052,47.63254507098739],[-57.3252292547771,47.572807115258],[-59.26601518414677,47.603347886742505],[-59.419494188053704,47.899453843774864],[-58.796586473207405,48.25152537697949],[-59.231624518456535,48.52318838153781],[-58.39180497906523,49.12558055276418],[-57.35868974468604,50.718274034215845],[-56.73865007183201,51.28743825947853],[-55.870976935435294,51.632094224649194],[-55.406974249886616,51.58827261006573],[-55.60021826844209,51.31707469339793],[-56.13403581401712,50.6870097926793]]],[[[-133.1800040417117,54.16997549093531],[-132.71000788443132,54.040009315423525],[-131.74998958400326,54.12000438090922],[-132.049480347351,52.984621487024526],[-131.1790425218266,52.180432847698285],[-131.57782954982292,52.18237071390925],[-132.18042842677855,52.639707139692405],[-132.54999243231387,53.100014960332146],[-133.05461117875552,53.41146881775537],[-133.2396644827927,53.8510802272624],[-133.1800040417117,54.16997549093531]]],[[[-79.26582,62.158675],[-79.65752,61.63308],[-80.09956,61.7181],[-80.36215,62.01649],[-80.315395,62.085565],[-79.92939,62.3856],[-79.52002,62.36371],[-79.26582,62.158675]]],[[[-81.89825,62.7108],[-83.06857,62.15922],[-83.77462,62.18231],[-83.99367,62.4528],[-83.25048,62.91409],[-81.87699,62.90458],[-81.89825,62.7108]]],[[[-85.16130794954985,65.65728465439281],[-84.97576371940596,65.217518215589],[-84.4640120104195,65.37177236598018],[-83.88262630891975,65.10961782496355],[-82.78757687043877,64.76669302027469],[-81.64201371939254,64.45513580998696],[-81.55344031444425,63.979609280037145],[-80.81736121287886,64.05748566350101],[-80.10345130076661,63.725981350348604],[-80.99101986359568,63.41124603947497],[-82.54717810741701,63.65172231714524],[-83.10879757356506,64.10187571883972],[-84.10041663281388,63.56971181909802],[-85.52340471061902,63.05237905542409],[-85.86676876498237,63.637252916103556],[-87.22198320183674,63.541238104905226],[-86.35275977247127,64.03583323837071],[-86.22488644076513,64.82291697860826],[-85.88384782585487,65.73877838811705],[-85.16130794954985,65.65728465439281]]],[[[-75.86588,67.14886],[-76.98687,67.09873],[-77.2364,67.58809],[-76.81166,68.14856],[-75.89521,68.28721],[-75.1145,68.01036],[-75.10333,67.58202],[-75.21597,67.44425],[-75.86588,67.14886]]],[[[-95.64768120380052,69.10769035832178],[-96.2695212038006,68.75704035832175],[-97.61740120380057,69.0600303583218],[-98.43180120380052,68.9507003583218],[-99.79740120380053,69.4000303583218],[-98.91740120380055,69.7100303583218],[-98.2182612038005,70.14354035832176],[-97.15740120380056,69.86003035832181],[-96.55740120380054,69.68003035832176],[-96.25740120380053,69.49003035832177],[-95.64768120380052,69.10769035832178]]],[[[-90.5471,69.49766],[-90.55151,68.47499],[-89.21515,69.25873],[-88.01966,68.61508],[-88.31749,67.87338],[-87.35017,67.19872],[-86.30607,67.92146],[-85.57664,68.78456],[-85.52197,69.88211],[-84.10081,69.80539],[-82.62258,69.65826],[-81.28043,69.16202],[-81.2202,68.66567],[-81.96436,68.13253],[-81.25928,67.59716],[-81.38653,67.11078],[-83.34456,66.41154],[-84.73542,66.2573],[-85.76943,66.55833],[-86.0676,66.05625],[-87.03143,65.21297],[-87.32324,64.77563],[-88.48296,64.09897],[-89.91444,64.03273],[-90.70398,63.61017],[-90.77004,62.96021],[-91.93342,62.83508],[-93.15698,62.02469],[-94.24153,60.89865],[-94.62931,60.11021],[-94.6846,58.94882],[-93.21502,58.78212],[-92.76462,57.84571],[-92.29703,57.08709],[-90.89769,57.28468],[-89.03953,56.85172],[-88.03978,56.47162],[-87.32421,55.99914],[-86.07121,55.72383],[-85.01181,55.3026],[-83.36055,55.24489],[-82.27285,55.14832],[-82.4362,54.28227],[-82.12502,53.27703],[-81.40075,52.15788],[-79.91289,51.20842],[-79.14301,51.53393],[-78.60191,52.56208],[-79.12421,54.14145],[-79.82958,54.66772],[-78.22874,55.13645],[-77.0956,55.83741],[-76.54137,56.53423],[-76.62319,57.20263],[-77.30226,58.05209],[-78.51688,58.80458],[-77.33676,59.85261],[-77.77272,60.75788],[-78.10687,62.31964],[-77.41067,62.55053],[-75.69621,62.2784],[-74.6682,62.18111],[-73.83988,62.4438],[-72.90853,62.10507],[-71.67708,61.52535],[-71.37369,61.13717],[-69.59042,61.06141],[-69.62033,60.22125],[-69.2879,58.95736],[-68.37455,58.80106],[-67.64976,58.21206],[-66.20178,58.76731],[-65.24517,59.87071],[-64.58352,60.33558],[-63.80475,59.4426],[-62.50236,58.16708],[-61.39655,56.96745],[-61.79866,56.33945],[-60.46853,55.77548],[-59.56962,55.20407],[-57.97508,54.94549],[-57.3332,54.6265],[-56.93689,53.78032],[-56.15811,53.64749],[-55.75632,53.27036],[-55.68338,52.14664],[-56.40916,51.7707],[-57.12691,51.41972],[-58.77482,51.0643],[-60.03309,50.24277],[-61.72366,50.08046],[-63.86251,50.29099],[-65.36331,50.2982],[-66.39905,50.22897],[-67.23631,49.51156],[-68.51114,49.06836],[-69.95362,47.74488],[-71.10458,46.82171],[-70.25522,46.98606],[-68.65,48.3],[-66.55243,49.1331],[-65.05626,49.23278],[-64.17099,48.74248],[-65.11545,48.07085],[-64.79854,46.99297],[-64.47219,46.23849],[-63.17329,45.73902],[-61.52072,45.88377],[-60.51815,47.00793],[-60.4486,46.28264],[-59.80287,45.9204],[-61.03988,45.26525],[-63.25471,44.67014],[-64.24656,44.26553],[-65.36406,43.54523],[-66.1234,43.61867],[-66.16173,44.46512],[-64.42549,45.29204],[-66.02605,45.25931],[-67.13741,45.13753],[-67.79134,45.70281],[-67.79046,47.06636],[-68.23444,47.35486],[-68.905,47.185],[-69.237216,47.447781],[-69.99997,46.69307],[-70.305,45.915],[-70.66,45.46],[-71.08482,45.30524],[-71.405,45.255],[-71.50506,45.0082],[-73.34783,45.00738],[-74.867,45.00048],[-75.31821,44.81645],[-76.375,44.09631],[-76.5,44.01845889375872],[-76.82003414580558,43.628784288093755],[-77.7378850979577,43.629055589363304],[-78.72027991404238,43.625089423184875],[-79.17167355011188,43.46633942318422],[-79.01,43.27],[-78.92,42.965],[-78.9393621487437,42.86361135514804],[-80.24744767934794,42.36619985612259],[-81.27774654816716,42.20902598730686],[-82.43927771679162,41.675105088867156],[-82.69008928092018,41.675105088867156],[-83.02981014680694,41.83279572200584],[-83.14199968131256,41.975681057292825],[-83.12,42.08],[-82.9,42.43],[-82.43,42.98],[-82.1376423815039,43.571087551439916],[-82.33776312543108,44.44],[-82.55092464875818,45.347516587905375],[-83.59285071484308,45.81689362241237],[-83.46955074739463,45.99468638771259],[-83.61613094759059,46.11692698829907],[-83.89076534700575,46.11692698829907],[-84.09185126416148,46.275418606138174],[-84.14211951367338,46.51222585711574],[-84.3367,46.40877],[-84.6049,46.4396],[-84.54374874544587,46.538684190449146],[-84.77923824739992,46.637101955749046],[-84.87607988151485,46.90008331968238],[-85.65236324740343,47.22021881773051],[-86.46199083122826,47.55333801939204],[-87.43979262330024,47.94],[-88.37811418328673,48.302917588893735],[-89.27291744663668,48.019808254582664],[-89.6,48.01],[-90.83,48.27],[-91.64,48.14],[-92.61,48.45],[-93.63087,48.60926],[-94.32914,48.67074],[-94.64,48.84],[-94.81758,49.38905],[-95.15609,49.38425],[-95.15906950917204,49],[-97.22872000000481,49.0007],[-100.65,49],[-104.04826,48.99986],[-107.05,49],[-110.05,49],[-113,49],[-116.04818,49],[-117.03121,49],[-120,49],[-122.84,49],[-122.97421,49.0025377777778],[-124.91024,49.98456],[-125.62461,50.41656],[-127.43561,50.83061],[-127.99276,51.71583],[-127.85032,52.32961],[-129.12979,52.75538],[-129.30523,53.56159],[-130.51497,54.28757],[-130.53611,54.80278],[-129.98,55.285],[-130.00778,55.91583],[-131.70781,56.55212],[-132.73042,57.69289],[-133.35556,58.41028],[-134.27111,58.86111],[-134.945,59.27056],[-135.47583,59.78778],[-136.47972,59.46389],[-137.4525,58.905],[-138.34089,59.56211],[-139.039,60],[-140.013,60.27682],[-140.99778,60.30639],[-140.9925,66.00003],[-140.986,69.712],[-139.12052,69.47102],[-137.54636,68.99002],[-136.50358,68.89804],[-135.62576,69.31512],[-134.41464,69.62743],[-132.92925,69.50534],[-131.43136,69.94451],[-129.79471,70.19369],[-129.10773,69.77927],[-128.36156,70.01286],[-128.13817,70.48384],[-127.44712,70.37721],[-125.75632,69.48058],[-124.42483,70.1584],[-124.28968,69.39969],[-123.06108,69.56372],[-122.6835,69.85553],[-121.47226,69.79778],[-119.94288,69.37786],[-117.60268,69.01128],[-116.22643,68.84151],[-115.2469,68.90591],[-113.89794,68.3989],[-115.30489,67.90261],[-113.49727,67.68815],[-110.798,67.80612],[-109.94619,67.98104],[-108.8802,67.38144],[-107.79239,67.88736],[-108.81299,68.31164],[-108.16721,68.65392],[-106.95,68.7],[-106.15,68.8],[-105.34282,68.56122],[-104.33791,68.018],[-103.22115,68.09775],[-101.45433,67.64689],[-99.90195,67.80566],[-98.4432,67.78165],[-98.5586,68.40394],[-97.66948,68.57864],[-96.11991,68.23939],[-96.12588,67.29338],[-95.48943,68.0907],[-94.685,68.06383],[-94.23282,69.06903],[-95.30408,69.68571],[-96.47131,70.08976],[-96.39115,71.19482],[-95.2088,71.92053],[-93.88997,71.76015],[-92.87818,71.31869],[-91.51964,70.19129],[-92.40692,69.69997],[-90.5471,69.49766]]],[[[-114.1671699999999,73.12145],[-114.66634,72.65277],[-112.44101999999988,72.95540000000011],[-111.05039,72.4504],[-109.92034999999989,72.96113],[-109.00654,72.63335],[-108.18835,71.65089],[-107.68599,72.06548],[-108.39639,73.08953000000011],[-107.51645,73.23598],[-106.52259,73.07601],[-105.40246,72.67259],[-104.77484,71.6984],[-104.46475999999984,70.99297],[-102.78537,70.49776],[-100.9807799999999,70.02432],[-101.08929,69.58447000000012],[-102.73116,69.50402],[-102.09329,69.11962000000011],[-102.43024,68.75282],[-104.24,68.91],[-105.96,69.18000000000015],[-107.12254,69.11922],[-109,68.78],[-111.53414887520013,68.63005915681794],[-113.3132,68.53554],[-113.85495999999983,69.00744000000012],[-115.22,69.28],[-116.10794,69.16821],[-117.34,69.96000000000012],[-116.67472999999988,70.06655],[-115.13112,70.2373],[-113.72141,70.19237],[-112.4161,70.36638],[-114.35,70.6],[-116.48684,70.52045],[-117.9048,70.54056000000014],[-118.43238,70.9092],[-116.11311,71.30918],[-117.65568,71.2952],[-119.40199,71.55859],[-118.56267,72.30785],[-117.86642,72.70594],[-115.18909,73.31459000000012],[-114.1671699999999,73.12145]]],[[[-104.5,73.42],[-105.38,72.76],[-106.94,73.46],[-106.6,73.6],[-105.26,73.64],[-104.5,73.42]]],[[[-76.34,73.10268498995302],[-76.25140380859375,72.82638549804688],[-77.31443786621091,72.85554504394527],[-78.39167022705081,72.87665557861328],[-79.48625183105466,72.74220275878909],[-79.77583312988284,72.80290222167974],[-80.87609863281253,73.3331832885742],[-80.83388519287105,73.69318389892578],[-80.35305786132812,73.75971984863278],[-78.06443786621094,73.65193176269534],[-76.34,73.10268498995302]]],[[[-86.56217851433414,73.15744700793846],[-85.77437130404454,72.53412588163383],[-84.85011247428824,73.34027822538712],[-82.31559017610098,73.75095083281059],[-80.60008765330764,72.71654368762421],[-80.7489416165244,72.06190664335077],[-78.77063859731078,72.35217316353416],[-77.82462398955958,72.74961660429105],[-75.60584469267573,72.24367849393741],[-74.22861609566499,71.7671442735579],[-74.09914079455771,71.33084015571765],[-72.24222571479766,71.5569245469945],[-71.20001542833519,70.92001251899723],[-68.7860542466849,70.52502370877426],[-67.91497046575694,70.12194753689761],[-66.96903337265417,69.18608734809189],[-68.80512285020055,68.72019847276442],[-66.44986609563387,68.06716339789202],[-64.86231441919522,67.84753856065163],[-63.42493445499676,66.92847321234066],[-61.85198137068058,66.86212067327784],[-62.1631768459423,66.16025136988961],[-63.918444383384184,64.99866852483284],[-65.14886023625363,65.42603261988668],[-66.72121904159854,66.3880410834322],[-68.01501603867396,66.26272573512439],[-68.14128740097917,65.68978913030438],[-67.08964616562339,65.108455105237],[-65.73208045109976,64.64840566675863],[-65.32016760930128,64.38273712834606],[-64.66940629744968,63.39292674422748],[-65.01380388045891,62.67418508569599],[-66.27504472519047,62.945098781986076],[-68.78318620469273,63.74567007105181],[-67.36968075221304,62.883965562584876],[-66.3282972886672,62.280074774822054],[-66.16556820338016,61.93089712182589],[-68.87736650254465,62.33014923771282],[-71.02343705919384,62.91070811629584],[-72.235378587519,63.39783600529517],[-71.8862784491713,63.67998932560885],[-73.37830624051838,64.19396312118383],[-74.8344189114226,64.67907562932379],[-74.81850257027673,64.38909332951798],[-77.70997982452005,64.22954234481679],[-78.55594885935417,64.57290639918014],[-77.89728105336192,65.30919220647479],[-76.0182742987972,65.32696889918316],[-73.95979529488272,65.45476471624089],[-74.29388342964964,65.8117713487294],[-73.94491248238265,66.31057811142672],[-72.65116716173941,67.28457550726387],[-72.92605994331609,67.72692576768239],[-73.31161780464575,68.06943716091291],[-74.84330725777681,68.55462718370129],[-76.86910091826674,68.89473562283027],[-76.22864905465735,69.14776927354742],[-77.28736996123712,69.76954010688328],[-78.1686339993266,69.82648753526891],[-78.95724219431673,70.16688019477542],[-79.49245500356366,69.87180776638891],[-81.30547095409176,69.74318512641435],[-84.94470618359847,69.9666340196444],[-87.06000342481789,70.26000112576537],[-88.6817132230015,70.41074127876081],[-89.51341956252304,70.76203766548099],[-88.46772111688075,71.21818553332133],[-89.8881512112875,71.22255219184996],[-90.20516028518202,72.2350743679608],[-89.43657670770494,73.12946421985237],[-88.40824154331281,73.53788890247121],[-85.82615108920092,73.80381582304521],[-86.56217851433414,73.15744700793846]]],[[[-100.35642,73.84389],[-99.16387,73.63339],[-97.38,73.76],[-97.12,73.47],[-98.05359,72.99052],[-96.54,72.56],[-96.72,71.66],[-98.35966,71.27285],[-99.32286,71.35639],[-100.01482,71.73827],[-102.5,72.51],[-102.48,72.83],[-100.43836,72.70588],[-101.54,73.36],[-100.35642,73.84389]]],[[[-93.19629553910022,72.77199249947336],[-94.26904659704726,72.02459625923598],[-95.40985551632266,72.06188080513459],[-96.03374508338246,72.94027680123182],[-96.01826799191099,73.4374299180958],[-95.49579342322403,73.86241689726418],[-94.50365759965234,74.1349067247392],[-92.42001217321177,74.10002513294219],[-90.50979285354259,73.85673248971203],[-92.0039652168299,72.9662442084585],[-93.19629553910022,72.77199249947336]]],[[[-120.46,71.38360179308759],[-123.09219,70.90164],[-123.62,71.34],[-125.92894873747335,71.86868846301141],[-125.5,72.29226081179502],[-124.80729,73.02256],[-123.9399999999999,73.68000000000015],[-124.91775,74.29275000000013],[-121.53788,74.44893],[-120.10978,74.24135],[-117.55563999999987,74.18577],[-116.58442,73.89607],[-115.51081,73.47519],[-116.76793999999988,73.22292],[-119.22,72.52],[-120.46,71.82],[-120.46,71.38360179308759]]],[[[-93.61275590694049,74.97999726022445],[-94.15690873897384,74.59234650338686],[-95.60868058956561,74.66686391875177],[-96.82093217648458,74.92762319609658],[-96.2885874092298,75.37782827422335],[-94.85081987178913,75.6472175157609],[-93.97774654821794,75.29648956979597],[-93.61275590694049,74.97999726022445]]],[[[-98.5,76.72],[-97.735585,76.25656],[-97.704415,75.74344],[-98.16,75],[-99.80874,74.89744],[-100.88366,75.05736],[-100.86292,75.64075],[-102.50209,75.5638],[-102.56552,76.3366],[-101.48973,76.30537],[-99.98349,76.64634],[-98.57699,76.58859],[-98.5,76.72]]],[[[-108.21141,76.20168],[-107.81943,75.84552],[-106.92893,76.01282],[-105.881,75.9694],[-105.70498,75.47951],[-106.31347,75.00527],[-109.7,74.85],[-112.22307,74.41696],[-113.74381,74.39427],[-113.87135,74.72029],[-111.79421,75.1625],[-116.31221,75.04343],[-117.7104,75.2222],[-116.34602,76.19903],[-115.40487,76.47887],[-112.59056,76.14134],[-110.81422,75.54919],[-109.0671,75.47321],[-110.49726,76.42982],[-109.5811,76.79417],[-108.54859,76.67832],[-108.21141,76.20168]]],[[[-94.68408586299947,77.09787832305838],[-93.57392106807313,76.77629588490609],[-91.60502315953661,76.77851797149461],[-90.74184587274922,76.44959747995681],[-90.96966142450799,76.07401317005946],[-89.82223792189927,75.84777374948563],[-89.18708289259979,75.61016551380763],[-87.83827633334963,75.56618886992723],[-86.37919226758868,75.48242137318218],[-84.78962521029061,75.69920400664651],[-82.75344458691006,75.78431509063125],[-81.12853084992437,75.71398346628203],[-80.05751095245915,75.33684886341588],[-79.83393286814832,74.92312734648719],[-80.45777075877584,74.65730377877779],[-81.94884253612554,74.44245901152433],[-83.22889360221143,74.56402781849096],[-86.0974523587333,74.41003205026115],[-88.15035030796022,74.39230703398499],[-89.76472205275837,74.51555532500115],[-92.42244096552943,74.837757880341],[-92.7682854886428,75.38681997344216],[-92.88990597204173,75.88265534128266],[-93.893824022176,76.31924367950054],[-95.96245744503582,76.44138092722247],[-97.12137895382949,76.75107778594761],[-96.74512285031236,77.16138865834515],[-94.68408586299947,77.09787832305838]]],[[[-116.19858659550734,77.64528677032621],[-116.33581336145838,76.87696157501055],[-117.10605058476878,76.53003184681913],[-118.04041215703813,76.4811717800871],[-119.89931758688569,76.05321340606199],[-121.4999950771265,75.9000186225328],[-122.85492448615896,76.11654287383568],[-122.8549252936032,76.11654287383568],[-121.15753536032825,76.86450755482835],[-119.10393897182104,77.51221995717464],[-117.57013078496597,77.4983189968881],[-116.19858659550734,77.64528677032621]]],[[[-93.84000301794399,77.5199972602345],[-94.29560828324526,77.4913426785287],[-96.16965410031008,77.5551113959769],[-96.43630449093612,77.83462921824362],[-94.42257727738638,77.82000478790499],[-93.72065629756588,77.63433136668033],[-93.84000301794399,77.5199972602345]]],[[[-110.18693803591297,77.6970148790503],[-112.05119116905848,77.40922882761686],[-113.53427893761906,77.73220652944116],[-112.72458675825384,78.05105011668195],[-111.26444332563085,78.15295604116156],[-109.8544518705471,77.99632477488484],[-110.18693803591297,77.6970148790503]]],[[[-109.66314571820259,78.60197256134569],[-110.88131425661886,78.40691986766001],[-112.54209143761517,78.4079017198735],[-112.5258908760916,78.55055451121522],[-111.5000103422334,78.84999359813057],[-110.96366065147602,78.80444082306522],[-109.66314571820259,78.60197256134569]]],[[[-95.83029496944934,78.05694122996326],[-97.30984290239799,77.85059723582178],[-98.12428931353396,78.08285696075758],[-98.55286780474664,78.4581053738451],[-98.63198442258552,78.87193024363839],[-97.33723141151262,78.83198436147677],[-96.75439876990879,78.765812689927],[-95.55927792029458,78.41831452098029],[-95.83029496944934,78.05694122996326]]],[[[-100.06019182005214,78.3247543403159],[-99.67093909381362,77.9075446642074],[-101.30394019245301,78.01898489044481],[-102.94980872273305,78.34322866486022],[-105.17613277873154,78.38033234324574],[-104.21042945027716,78.6774201524918],[-105.41958045125854,78.91833567983645],[-105.49228919149316,79.30159393992919],[-103.52928239623793,79.16534902619165],[-100.82515804726881,78.80046173777869],[-100.06019182005214,78.3247543403159]]],[[[-87.02,79.66],[-85.81435,79.3369],[-87.18756,79.0393],[-89.03535,78.28723],[-90.80436,78.21533],[-92.87669,78.34333],[-93.95116,78.75099],[-93.93574,79.11373],[-93.14524,79.3801],[-94.974,79.37248],[-96.07614,79.70502],[-96.70972,80.15777],[-96.01644,80.60233],[-95.32345,80.90729],[-94.29843,80.97727],[-94.73542,81.20646],[-92.40984,81.25739],[-91.13289,80.72345],[-89.45,80.50932203389829],[-87.81,80.32],[-87.02,79.66]]],[[[-68.5,83.10632151676575],[-65.82735,83.02801],[-63.68,82.9],[-61.85,82.6286],[-61.89388,82.36165],[-64.334,81.92775],[-66.75342,81.72527],[-67.65755,81.50141],[-65.48031,81.50657],[-67.84,80.9],[-69.4697,80.61683],[-71.18,79.8],[-73.2428,79.63415],[-73.88,79.43016220480207],[-76.90773,79.32309],[-75.52924,79.19766],[-76.22046,79.01907],[-75.39345,78.52581],[-76.34354,78.18296],[-77.88851,77.89991],[-78.36269,77.50859],[-79.75951,77.20968],[-79.61965,76.98336],[-77.91089,77.022045],[-77.88911,76.777955],[-80.56125,76.17812],[-83.17439,76.45403],[-86.11184,76.29901],[-87.6,76.42],[-89.49068,76.47239],[-89.6161,76.95213],[-87.76739,77.17833],[-88.26,77.9],[-87.65,77.97022222222222],[-84.97634,77.53873],[-86.34,78.18],[-87.96192,78.37181],[-87.15198,78.75867],[-85.37868,78.9969],[-85.09495,79.34543],[-86.50734,79.73624],[-86.93179,80.25145],[-84.19844,80.20836],[-83.40869565217383,80.1],[-81.84823,80.46442],[-84.1,80.58],[-87.59895,80.51627],[-89.36663,80.85569],[-90.2,81.26],[-91.36786,81.5531],[-91.58702,81.89429],[-90.1,82.085],[-88.93227,82.11751],[-86.97024,82.27961],[-85.5,82.65227345805704],[-84.260005,82.6],[-83.18,82.32],[-82.42,82.86],[-81.1,83.02],[-79.30664,83.13056],[-76.25,83.1720588235294],[-75.71878,83.06404],[-72.83153,83.23324],[-70.665765,83.16978075838284],[-68.5,83.10632151676575]]]]}},{"type":"Feature","properties":{"abbrev":"Bhs.","name":"Bahamas","name_long":"Bahamas","iso_a2":"BS","iso_a3":"BHS","iso_n3":"044"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-77.53466,23.75975],[-77.78,23.71],[-78.03405,24.28615],[-78.40848,24.57564],[-78.19087,25.2103],[-77.89,25.17],[-77.54,24.34],[-77.53466,23.75975]]],[[[-77.82,26.58],[-78.91,26.42],[-78.98,26.79],[-78.51,26.87],[-77.85,26.84],[-77.82,26.58]]],[[[-77,26.59],[-77.17255,25.87918],[-77.35641,26.00735],[-77.34,26.53],[-77.78802,26.92516],[-77.79,27.04],[-77,26.59]]]]}},{"type":"Feature","properties":{"abbrev":"C.R.","name":"Costa Rica","name_long":"Costa Rica","iso_a2":"CR","iso_a3":"CRI","iso_n3":"188"},"geometry":{"type":"Polygon","coordinates":[[[-82.96578304719736,8.225027980985985],[-83.50843726269431,8.446926581247283],[-83.71147396516908,8.656836249216866],[-83.59631303580665,8.830443223501419],[-83.63264156770784,9.051385809765321],[-83.90988562695372,9.29080272057358],[-84.30340165885636,9.487354030795714],[-84.64764421256866,9.615537421095707],[-84.71335079622777,9.908051866083852],[-84.97566036654133,10.086723130733006],[-84.91137488477024,9.795991522658923],[-85.11092342806532,9.55703969974131],[-85.33948828809227,9.83454214114866],[-85.66078650586698,9.933347479690724],[-85.79744483106285,10.134885565629034],[-85.79170874707843,10.439337266476613],[-85.65931372754666,10.75433095951172],[-85.94172543002176,10.895278428587801],[-85.7125404528073,11.088444932494824],[-85.56185197624418,11.217119248901597],[-84.90300330273895,10.952303371621896],[-84.67306901725627,11.082657172078143],[-84.35593075228104,10.999225572142905],[-84.19017859570485,10.793450018756674],[-83.89505449088595,10.726839097532446],[-83.65561174186158,10.938764146361422],[-83.40231970898296,10.395438137244652],[-83.01567664257517,9.992982082555555],[-82.54619625520348,9.566134751824677],[-82.93289099804358,9.476812038608173],[-82.92715491405916,9.074330145702916],[-82.71918311230053,8.925708726431495],[-82.86865719270477,8.807266343618522],[-82.82977067740516,8.62629547773237],[-82.91317643912421,8.42351715741907],[-82.96578304719736,8.225027980985985]]]}},{"type":"Feature","properties":{"abbrev":"Grlnd.","name":"Greenland","name_long":"Greenland","iso_a2":"GL","iso_a3":"GRL","iso_n3":"304"},"geometry":{"type":"Polygon","coordinates":[[[-46.76379,82.62796],[-43.40644,83.22516],[-39.89753,83.18018],[-38.62214,83.54905],[-35.08787,83.64513],[-27.10046,83.51966],[-20.84539,82.72669],[-22.69182,82.34165],[-26.51753,82.29765],[-31.9,82.2],[-31.39646,82.02154],[-27.85666,82.13178],[-24.84448,81.78697],[-22.90328,82.09317],[-22.07175,81.73449],[-23.16961,81.15271],[-20.62363,81.52462],[-15.76818,81.91245],[-12.77018,81.71885],[-12.20855,81.29154],[-16.28533,80.58004],[-16.85,80.35],[-20.04624,80.17708],[-17.73035,80.12912],[-18.9,79.4],[-19.70499,78.75128],[-19.67353,77.63859],[-18.47285,76.98565],[-20.03503,76.94434],[-21.67944,76.62795],[-19.83407,76.09808],[-19.59896,75.24838],[-20.66818,75.15585],[-19.37281,74.29561],[-21.59422,74.22382],[-20.43454,73.81713],[-20.76234,73.46436],[-22.17221,73.30955],[-23.56593,73.30663],[-22.31311,72.62928],[-22.29954,72.18409],[-24.27834,72.59788],[-24.79296,72.3302],[-23.44296,72.08016],[-22.13281,71.46898],[-21.75356,70.66369],[-23.53603,70.471],[-24.30702,70.85649],[-25.54341,71.43094],[-25.20135,70.75226],[-26.36276,70.22646],[-23.72742,70.18401],[-22.34902,70.12946],[-25.02927,69.2588],[-27.74737,68.47046],[-30.67371,68.12503],[-31.77665,68.12078],[-32.81105,67.73547],[-34.20196,66.67974],[-36.35284,65.9789],[-37.04378,65.93768],[-38.37505,65.69213],[-39.81222,65.45848],[-40.66899,64.83997],[-40.68281,64.13902],[-41.1887,63.48246],[-42.81938,62.68233],[-42.41666,61.90093],[-42.86619,61.07404],[-43.3784,60.09772],[-44.7875,60.03676],[-46.26364,60.85328],[-48.26294,60.85843],[-49.23308,61.40681],[-49.90039,62.38336],[-51.63325,63.62691],[-52.14014,64.27842],[-52.27659,65.1767],[-53.66166,66.09957],[-53.30161,66.8365],[-53.96911,67.18899],[-52.9804,68.35759],[-51.47536,68.72958],[-51.08041,69.14781],[-50.87122,69.9291],[-52.013585,69.574925],[-52.55792,69.42616],[-53.45629,69.283625],[-54.68336,69.61003],[-54.75001,70.28932],[-54.35884,70.821315],[-53.431315,70.835755],[-51.39014,70.56978],[-53.10937,71.20485],[-54.00422,71.54719],[-55,71.40653696727257],[-55.83468,71.65444],[-54.71819,72.58625],[-55.32634,72.95861],[-56.12003,73.64977],[-57.32363,74.71026],[-58.59679,75.09861],[-58.58516,75.51727],[-61.26861,76.10238],[-63.39165,76.1752],[-66.06427,76.13486],[-68.50438,76.06141],[-69.66485,76.37975],[-71.40257,77.00857],[-68.77671,77.32312],[-66.76397,77.37595],[-71.04293,77.63595],[-73.297,78.04419],[-73.15938,78.43271],[-69.37345,78.91388],[-65.7107,79.39436],[-65.3239,79.75814],[-68.02298,80.11721],[-67.15129,80.51582],[-63.68925,81.21396],[-62.23444,81.3211],[-62.65116,81.77042],[-60.28249,82.03363],[-57.20744,82.19074],[-54.13442,82.19962],[-53.04328,81.88833],[-50.39061,82.43883],[-48.00386,82.06481],[-46.59984,81.985945],[-44.523,81.6607],[-46.9007,82.19979],[-46.76379,82.62796]]]}},{"type":"Feature","properties":{"abbrev":"Dom. Rep.","name":"Dominican Rep.","name_long":"Dominican Republic","iso_a2":"DO","iso_a3":"DOM","iso_n3":"214"},"geometry":{"type":"Polygon","coordinates":[[[-71.71236141629296,19.714455878167357],[-71.58730445014663,19.8849105900821],[-70.80670610216174,19.880285549391985],[-70.21436499701613,19.62288524014616],[-69.95081519232758,19.647999986240006],[-69.76925004747008,19.293267116772437],[-69.22212582057988,19.313214219637103],[-69.25434607611385,19.015196234609874],[-68.80941199408083,18.979074408437853],[-68.31794328476897,18.612197577381693],[-68.68931596543452,18.205142320218613],[-69.16494584824892,18.42264842373511],[-69.62398759629764,18.380712998930246],[-69.95293392605154,18.42830699307106],[-70.1332329983179,18.245915025296895],[-70.51713721381422,18.184290879788833],[-70.66929846869763,18.426885891183034],[-70.99995012071719,18.283328762276213],[-71.4002099270339,17.5985643579766],[-71.65766191271202,17.7575727401387],[-71.70830481635805,18.04499705654609],[-71.68773759630587,18.31666006110447],[-71.94511206733556,18.61690013272026],[-71.70130265978248,18.78541697842405],[-71.62487321642283,19.169837958243306],[-71.71236141629296,19.714455878167357]]]}},{"type":"Feature","properties":{"abbrev":"Cuba","name":"Cuba","name_long":"Cuba","iso_a2":"CU","iso_a3":"CUB","iso_n3":"192"},"geometry":{"type":"Polygon","coordinates":[[[-82.26815121125706,23.188610744717703],[-81.40445716014683,23.11727142993878],[-80.6187686835812,23.105980129483],[-79.67952368846025,22.76530324959883],[-79.28148596873207,22.399201565027056],[-78.34743445505649,22.512166246017088],[-77.99329586456028,22.277193508385935],[-77.14642249216105,21.657851467367834],[-76.52382483590856,21.206819566324373],[-76.19462012399319,21.220565497314013],[-75.59822241891267,21.016624457274133],[-75.67106035022806,20.735091254148],[-74.9338960435845,20.693905137611385],[-74.17802486845126,20.28462779385974],[-74.29664811877724,20.05037852628068],[-74.96159461129294,19.92343537035569],[-75.63468014189459,19.873774318923196],[-76.323656175426,19.95289093676206],[-77.75548092315306,19.855480861891873],[-77.08510840524674,20.413353786698792],[-77.49265458851661,20.67310537361389],[-78.13729224314159,20.73994883878343],[-78.48282670766119,21.02861338956585],[-78.71986650258401,21.598113511638434],[-79.28499996612794,21.5591753199065],[-80.21747534861865,21.827324327069036],[-80.51753455272141,22.03707896574176],[-81.82094336620318,22.19205658618507],[-82.16999182811864,22.38710927987075],[-81.79500179719267,22.636964830001958],[-82.77589799674084,22.688150336187064],[-83.49445878775936,22.16851797127613],[-83.90880042187563,22.154565334557333],[-84.05215084505326,21.910575059491254],[-84.54703019889638,21.801227728761642],[-84.97491105827311,21.89602814380109],[-84.44706214062776,22.204949856041907],[-84.23035702181178,22.565754706303764],[-83.7782399156902,22.788118394455694],[-83.26754757356575,22.983041897060644],[-82.51043616405751,23.078746649665188],[-82.26815121125706,23.188610744717703]]]}},{"type":"Feature","properties":{"abbrev":"Hond.","name":"Honduras","name_long":"Honduras","iso_a2":"HN","iso_a3":"HND","iso_n3":"340"},"geometry":{"type":"Polygon","coordinates":[[[-87.31665442579549,12.984685777229004],[-87.48940873894713,13.297534898323931],[-87.79311113152653,13.384480495655168],[-87.72350297722932,13.785050360565606],[-87.85951534702161,13.893312486217097],[-88.06534257684012,13.96462596277979],[-88.50399797234962,13.845485948130943],[-88.54123084181595,13.980154730683523],[-88.84307288283276,14.140506700085211],[-89.05851192905766,14.340029405164215],[-89.35332597528281,14.424132798719086],[-89.14553504103719,14.678019110569153],[-89.22522009963124,14.874286200413678],[-89.15481096063353,15.066419175674866],[-88.6806796943556,15.34624705653539],[-88.22502275262195,15.72772247971403],[-88.12115312371537,15.688655096901359],[-87.90181250685241,15.864458319558196],[-87.61568010125234,15.8787985295192],[-87.52292090528846,15.797278957578783],[-87.36776241733213,15.84694000901129],[-86.90319129102818,15.756712958229569],[-86.44094560417739,15.78283539475319],[-86.11923397494434,15.893448798073962],[-86.00195431185784,16.00540578863439],[-85.68331743034628,15.953651841693953],[-85.44400387240256,15.885749009662446],[-85.18244361035721,15.90915843349063],[-84.98372188997882,15.995923163308701],[-84.52697974316715,15.857223619037427],[-84.36825558138258,15.835157782448732],[-84.06305457226682,15.648244126849136],[-83.77397661002612,15.42407176356687],[-83.41038123242036,15.270902818253774],[-83.14721900097413,14.99582916916421],[-83.48998877636602,15.016267198135663],[-83.62858496777288,14.880073960830371],[-83.97572140169359,14.749435939996486],[-84.22834164095241,14.74876414637663],[-84.4493359036486,14.621614284722511],[-84.64958207877963,14.666805324761867],[-84.8200367906943,14.81958669683263],[-84.92450069857233,14.790492865452336],[-85.05278744173688,14.551541042534723],[-85.14875057650288,14.560196844943619],[-85.16536454948482,14.35436961512505],[-85.51441301140028,14.079011745657908],[-85.69866533073696,13.960078436738002],[-85.8012947252685,13.836054999237604],[-86.09626380079061,14.038187364147234],[-86.31214209668985,13.771356106008225],[-86.52070817741992,13.778487453664468],[-86.75508663607962,13.75484548589094],[-86.73382178419149,13.263092556201398],[-86.88055701368438,13.254204209847217],[-87.00576900912743,13.025794379117258],[-87.31665442579549,12.984685777229004]]]}},{"type":"Feature","properties":{"abbrev":"Guat.","name":"Guatemala","name_long":"Guatemala","iso_a2":"GT","iso_a3":"GTM","iso_n3":"320"},"geometry":{"type":"Polygon","coordinates":[[[-90.09555457229098,13.735337632700734],[-90.60862403030085,13.909771429901951],[-91.23241024449605,13.927832342987957],[-91.68974667027912,14.126218166556455],[-92.22775000686983,14.538828640190928],[-92.20322953974731,14.830102850804069],[-92.08721594925207,15.06458466232844],[-92.22924862340628,15.25144664149586],[-91.74796017125591,16.066564846251723],[-90.46447262242265,16.069562079324655],[-90.43886695022204,16.410109768128095],[-90.60084672724092,16.47077789963876],[-90.71182186558772,16.687483018454728],[-91.08167009150065,16.918476670799404],[-91.45392127151516,17.252177232324172],[-91.0022692532842,17.25465770107418],[-91.00151994501596,17.81759491624571],[-90.06793351923098,17.819326076727474],[-89.14308041050332,17.80831899664932],[-89.15080603713095,17.015576687075836],[-89.22912167026928,15.88693756760517],[-88.93061275913527,15.887273464415074],[-88.60458614780583,15.70638011317736],[-88.51836402052686,15.855389105690975],[-88.22502275262202,15.727722479713902],[-88.68067969435563,15.346247056535304],[-89.15481096063357,15.06641917567481],[-89.22522009963127,14.874286200413621],[-89.14553504103718,14.678019110569084],[-89.35332597528279,14.424132798719116],[-89.58734269891654,14.362586167859488],[-89.53421932652051,14.244815578666305],[-89.72193396682073,14.134228013561694],[-90.0646779039966,13.881969509328924],[-90.09555457229098,13.735337632700734]]]}},{"type":"Feature","properties":{"abbrev":"Haiti","name":"Haiti","name_long":"Haiti","iso_a2":"HT","iso_a3":"HTI","iso_n3":"332"},"geometry":{"type":"Polygon","coordinates":[[[-73.18979061551762,19.915683905511912],[-72.57967281766362,19.871500555902358],[-71.71236141629296,19.714455878167357],[-71.62487321642283,19.169837958243306],[-71.70130265978248,18.78541697842405],[-71.94511206733556,18.61690013272026],[-71.68773759630587,18.31666006110447],[-71.70830481635805,18.04499705654609],[-72.37247616238935,18.21496084235406],[-72.84441118029488,18.14561107021836],[-73.45455481636503,18.217906398994696],[-73.92243323433566,18.030992743395004],[-74.45803361682478,18.342549953682706],[-74.36992529976713,18.66490753831941],[-73.44954220243272,18.526052964751145],[-72.69493709989064,18.445799465401862],[-72.334881557897,18.668421535715254],[-72.79164954292489,19.10162506761803],[-72.78410478381028,19.48359141690341],[-73.41502234566175,19.639550889560283],[-73.18979061551762,19.915683905511912]]]}},{"type":"Feature","properties":{"abbrev":"Mex.","name":"Mexico","name_long":"Mexico","iso_a2":"MX","iso_a3":"MEX","iso_n3":"484"},"geometry":{"type":"Polygon","coordinates":[[[-97.14000830767071,25.869997463478395],[-97.52807247596655,24.992144069920297],[-97.70294552284223,24.272343044526735],[-97.77604183631905,22.932579860927657],[-97.87236670611111,22.44421173755336],[-97.69904395220419,21.898689480064263],[-97.38895952023677,21.411018988525825],[-97.18933346229329,20.635433254473128],[-96.52557552772032,19.890930894444068],[-96.29212724484177,19.320371405509547],[-95.90088497595995,18.82802419684873],[-94.83906348344271,18.562717393462208],[-94.4257295397562,18.144370835843347],[-93.5486512926824,18.423836981677937],[-92.7861138577835,18.52483856859226],[-92.0373481920904,18.704569200103432],[-91.40790340855926,18.87608327888023],[-90.77186987991087,19.28412038825678],[-90.53358985061305,19.8674181177513],[-90.45147599970124,20.707521877520435],[-90.27861833368489,20.99985545499555],[-89.60132117385149,21.26172577563449],[-88.54386633986284,21.49367544197662],[-87.65841651075772,21.458845526611977],[-87.05189022494807,21.543543199138295],[-86.81198238803296,21.331514797444754],[-86.84590796583262,20.849864610268355],[-87.38329118523586,20.25540477139873],[-87.62105445021075,19.64655304613592],[-87.43675045444176,19.47240346931227],[-87.58656043165593,19.04013011319074],[-87.83719112827151,18.25981598558343],[-88.09066402866318,18.51664785407405],[-88.30003109409364,18.49998220466],[-88.4901228502793,18.48683055264172],[-88.84834387892658,17.883198147040332],[-89.02985734735176,18.00151133877256],[-89.15090938999549,17.955467637600407],[-89.14308041050333,17.808318996649405],[-90.0679335192309,17.81932607672752],[-91.00151994501596,17.817594916245696],[-91.00226925328417,17.25465770107428],[-91.45392127151511,17.252177232324186],[-91.0816700915006,16.91847667079952],[-90.71182186558764,16.687483018454767],[-90.60084672724093,16.47077789963879],[-90.438866950222,16.41010976812811],[-90.46447262242265,16.069562079324726],[-91.74796017125595,16.066564846251765],[-92.2292486234063,15.251446641495873],[-92.08721594925203,15.064584662328512],[-92.20322953974727,14.83010285080411],[-92.22775000686983,14.538828640190957],[-93.35946387406176,15.615429592343672],[-93.87516883011851,15.940164292865914],[-94.69165646033014,16.200975246642884],[-95.25022701697304,16.128318182840644],[-96.05338212765331,15.752087917539596],[-96.55743404822829,15.65351512294279],[-97.26359249549665,15.917064927631316],[-98.01302995480961,16.107311713113912],[-98.94767574745651,16.566043402568763],[-99.69739742714705,16.70616404872817],[-100.82949886758131,17.17107107184205],[-101.66608862995446,17.649026394109626],[-101.91852800170022,17.916090196193977],[-102.47813208698891,17.975750637275098],[-103.50098954955808,18.29229462327885],[-103.91752743204682,18.74857168220001],[-104.9920096504755,19.316133938061682],[-105.49303849976144,19.946767279535436],[-105.73139604370766,20.434101874264115],[-105.39777299683135,20.531718654863425],[-105.50066077352443,20.81689504646613],[-105.27075232625793,21.07628489835514],[-105.26581722697402,21.42210358325235],[-105.6031609769754,21.871145941652568],[-105.69341386597313,22.269080308516152],[-106.02871639689897,22.773752346278627],[-106.90998043498837,23.767774359628902],[-107.91544877809139,24.54891531015295],[-108.40190487347098,25.17231395110593],[-109.26019873740665,25.58060944264406],[-109.44408932171734,25.824883938087677],[-109.29164384645627,26.442934068298428],[-109.80145768923182,26.676175645447927],[-110.3917317370857,27.16211497650454],[-110.64101884646163,27.859876003525528],[-111.17891883018785,27.941240546169066],[-111.75960689985163,28.46795258230395],[-112.2282346260904,28.95440867768349],[-112.27182369672869,29.266844387320074],[-112.80959448937398,30.021113593052345],[-113.16381059451868,30.78688080496943],[-113.14866939985717,31.17096588797892],[-113.87188106978186,31.567608344035193],[-114.2057366606035,31.52404511161313],[-114.77645117883503,31.799532172161147],[-114.93669979537212,31.3934846054276],[-114.77123185917351,30.913617255165267],[-114.67389929895177,30.162681179315992],[-114.33097449426292,29.75043244070741],[-113.58887508833544,29.061611436473015],[-113.42405310754054,28.82617361095123],[-113.27196936730553,28.7547826197399],[-113.14003943566439,28.411289374295958],[-112.9622983467965,28.42519033458251],[-112.76158708377488,27.780216783147523],[-112.45791052941166,27.52581370697476],[-112.2449519519368,27.17172679291076],[-111.6164890206192,26.662817287700477],[-111.28467464887302,25.732589830014433],[-110.98781938357239,25.294606228124564],[-110.71000688357134,24.82600434010186],[-110.65504899782887,24.298594672131117],[-110.17285620811343,24.265547593680424],[-109.77184709352855,23.811182562754198],[-109.4091043770557,23.36467234953625],[-109.43339230023292,23.1855876734287],[-109.85421932660171,22.818271592698068],[-110.03139197471444,22.823077500901206],[-110.29507097048366,23.43097321216669],[-110.94950130902805,24.00096426034599],[-111.67056840701268,24.484423122652515],[-112.18203589562147,24.738412787367167],[-112.14898881717085,25.47012523040405],[-112.3007108223797,26.012004299416613],[-112.77729671919155,26.32195954030317],[-113.46467078332194,26.768185533143424],[-113.59672990604383,26.639459540304472],[-113.84893673384424,26.90006378835244],[-114.46574662968003,27.142090358991368],[-115.055142178185,27.72272675222291],[-114.98225257043741,27.798200181585116],[-114.57036556685495,27.74148529714489],[-114.19932878299925,28.115002549750553],[-114.16201839888463,28.566111965442303],[-114.93184221073663,29.279479275015486],[-115.518653937627,29.556361599235398],[-115.88736528202958,30.180793768834178],[-116.25835038945293,30.83646434175358],[-116.72152625208498,31.635743720012044],[-117.12775999999985,32.53534],[-115.99135,32.61239000000012],[-114.72139,32.72083],[-114.815,32.52528],[-113.30498,32.03914],[-111.02361,31.33472],[-109.035,31.341940000000136],[-108.24194,31.34222],[-108.24,31.75485371816637],[-106.50759,31.75452],[-106.1429,31.39995],[-105.63159,31.08383],[-105.03737,30.64402],[-104.70575,30.12173],[-104.4569699999999,29.57196],[-103.94,29.27],[-103.11,28.97],[-102.48,29.76],[-101.6624,29.7793],[-100.9576,29.380710000000132],[-100.45584,28.696120000000118],[-100.11,28.110000000000127],[-99.52,27.54],[-99.3,26.84],[-99.02,26.37],[-98.24,26.06],[-97.53,25.84],[-97.14000830767071,25.869997463478395]]]}},{"type":"Feature","properties":{"abbrev":"Jam.","name":"Jamaica","name_long":"Jamaica","iso_a2":"JM","iso_a3":"JAM","iso_n3":"388"},"geometry":{"type":"Polygon","coordinates":[[[-77.56960079619921,18.490525417550487],[-76.89661861846211,18.400866807524082],[-76.36535905628554,18.160700588447597],[-76.19965857614164,17.886867173732966],[-76.9025614081757,17.868237819891746],[-77.20634131540348,17.70111623785982],[-77.76602291534061,17.86159739834224],[-78.33771928578561,18.225967922432233],[-78.21772661000388,18.454532782459193],[-77.79736467152563,18.524218451404778],[-77.56960079619921,18.490525417550487]]]}},{"type":"Feature","properties":{"abbrev":"P.R.","name":"Puerto Rico","name_long":"Puerto Rico","iso_a2":"PR","iso_a3":"PRI","iso_n3":"630"},"geometry":{"type":"Polygon","coordinates":[[[-66.28243445500821,18.514761664295364],[-65.7713028632093,18.426679185453878],[-65.59100379094295,18.228034979723915],[-65.84716386581377,17.97590566657186],[-66.59993445500949,17.981822618069273],[-67.18416236028527,17.946553453030077],[-67.24242753769435,18.374460150622937],[-67.10067908391774,18.52060110114435],[-66.28243445500821,18.514761664295364]]]}},{"type":"Feature","properties":{"abbrev":"Pan.","name":"Panama","name_long":"Panama","iso_a2":"PA","iso_a3":"PAN","iso_n3":"591"},"geometry":{"type":"Polygon","coordinates":[[[-77.88157141794525,7.223771267114785],[-78.21493608266012,7.512254950384161],[-78.42916073272607,8.052041123888927],[-78.18209570993864,8.319182440621773],[-78.4354652574657,8.38770538984079],[-78.62212053090394,8.718124497915028],[-79.12030717641375,8.996092027213022],[-79.55787736684519,8.932374986197146],[-79.76057817251004,8.5845150822244],[-80.16448116730334,8.333315944853595],[-80.38265906443961,8.298408514840432],[-80.4806892564973,8.09030752200107],[-80.00368994822716,7.547524115423371],[-80.276670701809,7.419754136581715],[-80.42115800649708,7.271571966984764],[-80.8864009264208,7.220541490096537],[-81.05954281281473,7.817921047390596],[-81.18971574575795,7.647905585150339],[-81.51951473664468,7.706610012233909],[-81.72131120474445,8.108962714058435],[-82.13144120962892,8.175392767769635],[-82.39093441438257,8.29236237226229],[-82.82008134635042,8.290863755725823],[-82.85095801464482,8.073822740099956],[-82.96578304719736,8.225027980985985],[-82.91317643912421,8.42351715741907],[-82.82977067740516,8.62629547773237],[-82.86865719270477,8.807266343618522],[-82.71918311230053,8.925708726431495],[-82.92715491405916,9.074330145702916],[-82.93289099804358,9.476812038608173],[-82.54619625520348,9.566134751824677],[-82.18712256542341,9.20744863528678],[-82.20758643261095,8.9955752628901],[-81.80856686066929,8.950616766796173],[-81.71415401887204,9.031955471223583],[-81.43928707551154,8.786234035675719],[-80.94730160187676,8.858503526235905],[-80.52190121125008,9.111072089062432],[-79.91459977895599,9.31276520429762],[-79.57330278188431,9.611610012241526],[-79.02119177927793,9.552931423374105],[-79.05845048696037,9.454565334506526],[-78.50088762074719,9.420458889193881],[-78.05592770049802,9.2477304142583],[-77.72951351592641,8.946844387238869],[-77.35336076527385,8.67050466555807],[-77.47472286651133,8.524286200388218],[-77.24256649444008,7.935278225125444],[-77.43110795765699,7.638061224798735],[-77.75341386586139,7.709839789252142],[-77.88157141794525,7.223771267114785]]]}},{"type":"Feature","properties":{"abbrev":"Nic.","name":"Nicaragua","name_long":"Nicaragua","iso_a2":"NI","iso_a3":"NIC","iso_n3":"558"},"geometry":{"type":"Polygon","coordinates":[[[-85.7125404528073,11.088444932494824],[-86.05848832878526,11.403438625529944],[-86.52584998243296,11.806876532432597],[-86.74599158399633,12.143961900272487],[-87.16751624220116,12.458257961471656],[-87.66849341505471,12.909909979702633],[-87.5574666002756,13.064551703336065],[-87.39238623731923,12.914018256069838],[-87.31665442579549,12.984685777228975],[-87.00576900912756,13.025794379117157],[-86.88055701368437,13.254204209847245],[-86.7338217841916,13.263092556201443],[-86.7550866360797,13.754845485890913],[-86.5207081774199,13.77848745366444],[-86.31214209668993,13.77135610600817],[-86.0962638007906,14.038187364147248],[-85.80129472526859,13.83605499923759],[-85.69866533073693,13.960078436738087],[-85.51441301140025,14.079011745657837],[-85.1653645494848,14.354369615125078],[-85.14875057650296,14.560196844943619],[-85.05278744173692,14.551541042534723],[-84.9245006985724,14.790492865452352],[-84.82003679069435,14.819586696832669],[-84.64958207877962,14.666805324761754],[-84.4493359036486,14.621614284722495],[-84.22834164095241,14.748764146376658],[-83.97572140169359,14.749435939996461],[-83.62858496777292,14.880073960830302],[-83.48998877636612,15.016267198135536],[-83.14721900097413,14.99582916916411],[-83.23323442252394,14.899866034398102],[-83.2841615465476,14.6766238468972],[-83.18212643098728,14.31070302983845],[-83.41249996614445,13.970077826386557],[-83.51983191601468,13.567699286345883],[-83.55220720084554,13.127054348193086],[-83.49851538769427,12.869292303921227],[-83.47332312695198,12.419087225794428],[-83.62610449902292,12.320850328007566],[-83.71961300325506,11.893124497927726],[-83.65085751009072,11.629032090700118],[-83.8554703437504,11.373311265503787],[-83.80893571647155,11.103043524617274],[-83.65561174186158,10.938764146361422],[-83.89505449088595,10.726839097532446],[-84.19017859570485,10.793450018756674],[-84.35593075228104,10.999225572142905],[-84.67306901725627,11.082657172078143],[-84.90300330273895,10.952303371621896],[-85.56185197624418,11.217119248901597],[-85.7125404528073,11.088444932494824]]]}},{"type":"Feature","properties":{"abbrev":"El. S.","name":"El Salvador","name_long":"El Salvador","iso_a2":"SV","iso_a3":"SLV","iso_n3":"222"},"geometry":{"type":"Polygon","coordinates":[[[-87.79311113152657,13.384480495655055],[-87.90411210808952,13.149016831917137],[-88.48330156121682,13.163951320849492],[-88.8432279121297,13.259733588102478],[-89.2567427233293,13.458532823129303],[-89.81239356154767,13.520622056527998],[-90.09555457229098,13.735337632700734],[-90.0646779039966,13.881969509328924],[-89.72193396682073,14.134228013561694],[-89.53421932652051,14.244815578666305],[-89.58734269891654,14.362586167859488],[-89.35332597528279,14.424132798719116],[-89.05851192905766,14.340029405164085],[-88.84307288283284,14.140506700085169],[-88.541230841816,13.980154730683479],[-88.50399797234971,13.845485948130857],[-88.06534257684012,13.964625962779778],[-87.8595153470216,13.893312486216983],[-87.72350297722939,13.785050360565506],[-87.79311113152657,13.384480495655055]]]}},{"type":"Feature","properties":{"abbrev":"Tr.T.","name":"Trinidad and Tobago","name_long":"Trinidad and Tobago","iso_a2":"TT","iso_a3":"TTO","iso_n3":"780"},"geometry":{"type":"Polygon","coordinates":[[[-61.68,10.76],[-61.105,10.89],[-60.895,10.855],[-60.935,10.11],[-61.77,10],[-61.95,10.09],[-61.66,10.365],[-61.68,10.76]]]}},{"type":"Feature","properties":{"abbrev":"U.S.A.","name":"United States","name_long":"United States","iso_a2":"US","iso_a3":"USA","iso_n3":"840"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-155.54211,19.08348],[-155.68817,18.91619],[-155.93665,19.05939],[-155.90806,19.33888],[-156.07347,19.70294],[-156.02368,19.81422],[-155.85008,19.97729],[-155.91907,20.17395],[-155.86108,20.26721],[-155.78505,20.2487],[-155.40214,20.07975],[-155.22452,19.99302],[-155.06226,19.8591],[-154.80741,19.50871],[-154.83147,19.45328],[-155.22217,19.23972],[-155.54211,19.08348]]],[[[-156.07926,20.64397],[-156.41445,20.57241],[-156.58673,20.783],[-156.70167,20.8643],[-156.71055,20.92676],[-156.61258,21.01249],[-156.25711,20.91745],[-155.99566,20.76404],[-156.07926,20.64397]]],[[[-156.75824,21.17684],[-156.78933,21.06873],[-157.32521,21.09777],[-157.25027,21.21958],[-156.75824,21.17684]]],[[[-157.65283,21.32217],[-157.70703,21.26442],[-157.7786,21.27729],[-158.12667,21.31244],[-158.2538,21.53919],[-158.29265,21.57912],[-158.0252,21.71696],[-157.94161,21.65272],[-157.65283,21.32217]]],[[[-159.34512,21.982],[-159.46372,21.88299],[-159.80051,22.06533],[-159.74877,22.1382],[-159.5962,22.23618],[-159.36569,22.21494],[-159.34512,21.982]]],[[[-94.81758,49.38905],[-94.63999999999987,48.84000000000012],[-94.32914,48.67074000000011],[-93.63087,48.60926],[-92.61,48.45],[-91.64,48.14],[-90.82999999999986,48.27],[-89.6,48.010000000000105],[-89.27291744663668,48.01980825458284],[-88.37811418328653,48.30291758889382],[-87.43979262330024,47.94],[-86.46199083122815,47.55333801939204],[-85.65236324740323,47.22021881773051],[-84.87607988151485,46.90008331968238],[-84.77923824739983,46.63710195574913],[-84.54374874544567,46.53868419044923],[-84.6049,46.4396],[-84.3367,46.40877000000011],[-84.1421195136733,46.51222585711574],[-84.09185126416148,46.27541860613826],[-83.89076534700567,46.116926988299156],[-83.6161309475905,46.116926988299156],[-83.46955074739463,45.99468638771259],[-83.59285071484308,45.81689362241255],[-82.55092464875818,45.34751658790545],[-82.33776312543108,44.44],[-82.13764238150397,43.57108755144],[-82.43,42.9800000000001],[-82.89999999999989,42.43000000000015],[-83.11999999999989,42.08],[-83.14199968131256,41.975681057293],[-83.02981014680694,41.83279572200601],[-82.69008928092018,41.675105088867326],[-82.43927771679162,41.675105088867326],[-81.27774654816707,42.20902598730686],[-80.24744767934784,42.36619985612267],[-78.9393621487437,42.86361135514812],[-78.92,42.965],[-79.00999999999988,43.27],[-79.17167355011188,43.46633942318431],[-78.72027991404238,43.62508942318496],[-77.73788509795762,43.62905558936339],[-76.82003414580558,43.628784288093755],[-76.5,44.018458893758606],[-76.375,44.09631],[-75.31821,44.816450000000174],[-74.867,45.000480000000124],[-73.34783,45.00738],[-71.50505999999987,45.0082000000001],[-71.405,45.25500000000014],[-71.08482,45.30524000000017],[-70.6599999999998,45.46],[-70.305,45.915],[-69.99997,46.69307],[-69.237216,47.447781],[-68.905,47.185],[-68.23444,47.35486],[-67.79046,47.06636],[-67.79134,45.70281000000014],[-67.13741,45.13753],[-66.96466,44.80970000000016],[-68.03252,44.3252],[-69.05999999999989,43.98],[-70.11617,43.684050000000155],[-70.645475633411,43.09023834896405],[-70.81489,42.8653],[-70.825,42.335],[-70.495,41.805],[-70.08,41.78],[-70.185,42.145],[-69.88497,41.92283000000012],[-69.96503,41.63717000000017],[-70.64,41.475],[-71.12039,41.49445000000017],[-71.85999999999984,41.32],[-72.295,41.27],[-72.87643,41.22065],[-73.71,40.93110235165449],[-72.24126,41.11948000000015],[-71.94499999999982,40.93],[-73.345,40.63],[-73.982,40.628],[-73.952325,40.75075],[-74.25671,40.47351],[-73.96244,40.42763],[-74.17838,39.70926],[-74.90604,38.93954],[-74.98041,39.1964],[-75.20002,39.248450000000105],[-75.52805,39.4985],[-75.32,38.96],[-75.0718347647898,38.78203223017928],[-75.05673,38.40412000000012],[-75.37747,38.01551],[-75.94023,37.21689],[-76.03127,37.2566],[-75.72204999999978,37.93705000000011],[-76.23287,38.319215],[-76.35,39.15],[-76.542725,38.71761500000011],[-76.32933,38.08326],[-76.98999793161354,38.23999176691339],[-76.30162,37.917945],[-76.25874,36.96640000000011],[-75.9718,36.89726],[-75.86803999999984,36.55125],[-75.72749,35.55074000000013],[-76.36318,34.80854000000013],[-77.39763499999988,34.51201],[-78.05496,33.92547],[-78.55434999999983,33.86133000000012],[-79.06067,33.49395],[-79.20357,33.15839],[-80.301325,32.509355],[-80.86498,32.0333],[-81.33629,31.44049],[-81.49042,30.72999000000013],[-81.31371,30.035520000000105],[-80.98,29.180000000000117],[-80.53558499999988,28.47213],[-80.5299999999998,28.040000000000106],[-80.05653928497756,26.880000000000138],[-80.088015,26.205765],[-80.13155999999987,25.816775],[-80.38103,25.20616],[-80.67999999999988,25.08],[-81.17213,25.201260000000133],[-81.33,25.64],[-81.70999999999981,25.87],[-82.24,26.730000000000132],[-82.70515,27.49504],[-82.85526,27.88624],[-82.65,28.550000000000153],[-82.92999999999988,29.100000000000136],[-83.70959,29.93656],[-84.1,30.090000000000117],[-85.10882,29.63615],[-85.28784,29.68612000000013],[-85.7731,30.152610000000124],[-86.39999999999988,30.40000000000012],[-87.53036,30.27433],[-88.41782,30.3849],[-89.18048999999984,30.31598],[-89.59383117841978,30.15999400483685],[-89.413735,29.89419],[-89.43,29.48864],[-89.21767,29.29108],[-89.40823,29.15961],[-89.77928,29.307140000000143],[-90.15463,29.11743],[-90.880225,29.148535000000123],[-91.62678499999987,29.67700000000013],[-92.49906,29.5523],[-93.22637,29.78375],[-93.84842,29.71363],[-94.69,29.480000000000132],[-95.60026,28.73863],[-96.59404,28.30748],[-97.13999999999982,27.83],[-97.37,27.38],[-97.37999999999987,26.69],[-97.33,26.21000000000012],[-97.13999999999982,25.87],[-97.52999999999989,25.84],[-98.24,26.060000000000116],[-99.01999999999988,26.37],[-99.3,26.84],[-99.51999999999987,27.54],[-100.11,28.110000000000127],[-100.45584,28.696120000000118],[-100.9576,29.380710000000132],[-101.6624,29.779300000000116],[-102.48,29.76],[-103.11,28.97],[-103.94,29.27],[-104.45696999999984,29.57196],[-104.70575,30.12173],[-105.03737,30.64402],[-105.63159,31.08383000000012],[-106.1429,31.39995],[-106.50758999999982,31.75452],[-108.24,31.7548537181664],[-108.24194,31.34222],[-109.035,31.34194000000016],[-111.02361,31.33472],[-113.30498,32.03914],[-114.815,32.52528],[-114.72138999999986,32.72083],[-115.9913499999999,32.61239000000014],[-117.12775999999978,32.53534],[-117.29593769127388,33.04622461520389],[-117.944,33.621236431201396],[-118.41060227589749,33.740909223124504],[-118.51989482279971,34.02778157757575],[-119.081,34.078],[-119.43884064201669,34.3484771782843],[-120.36778,34.44711],[-120.62286,34.60855],[-120.74433,35.15686000000011],[-121.71456999999988,36.16153],[-122.54747,37.551760000000115],[-122.51201,37.78339000000013],[-122.95319,38.11371000000011],[-123.7272,38.95166000000012],[-123.86517,39.76699000000013],[-124.39807,40.3132],[-124.17886,41.142020000000116],[-124.2137,41.99964000000014],[-124.53284,42.7659900000001],[-124.14214,43.70838],[-124.020535,44.615895],[-123.89893,45.52341],[-124.079635,46.86475],[-124.39567,47.72017000000011],[-124.68721008300783,48.18443298339855],[-124.56610107421876,48.3797149658204],[-123.12,48.04],[-122.58736,47.096],[-122.34,47.36],[-122.5,48.18],[-122.84,49.000000000000114],[-120,49.000000000000114],[-117.03121,49.000000000000114],[-116.04818,49.000000000000114],[-113,49.000000000000114],[-110.04999999999983,49.000000000000114],[-107.05,49.000000000000114],[-104.04826,48.99986],[-100.65,49.000000000000114],[-97.22872000000471,49.00070000000011],[-95.15906950917196,49.000000000000114],[-95.15609,49.38425],[-94.81758,49.38905]]],[[[-153.0063140533369,57.11584219016589],[-154.0050902984581,56.73467682558106],[-154.5164027577701,56.9927489284467],[-154.67099280497115,57.46119578717249],[-153.76277950744148,57.81657461204377],[-153.2287294179211,57.968968410872435],[-152.56479061583514,57.901427313866975],[-152.1411472239063,57.59105866152199],[-153.0063140533369,57.11584219016589]]],[[[-165.57916419173358,59.90998688418755],[-166.19277014876727,59.754440822988975],[-166.848337368822,59.94140615502096],[-167.45527706609008,60.21306915957938],[-166.46779212142462,60.38416982689778],[-165.67442969466367,60.293606879306246],[-165.57916419173358,59.90998688418755]]],[[[-171.7316568675394,63.78251536727592],[-171.1144335602452,63.592191067144995],[-170.4911124339407,63.69497549097352],[-169.68250545965358,63.431115627691156],[-168.6894394603007,63.2975062120006],[-168.7719408844546,63.18859813094545],[-169.52943986720504,62.9769314642779],[-170.29055620021597,63.194437567794466],[-170.67138566799088,63.37582184513897],[-171.55306311753867,63.317789211675084],[-171.7911106028912,63.405845852300494],[-171.7316568675394,63.78251536727592]]],[[[-155.06779029032424,71.1477763943237],[-154.34416520894123,70.6964085964702],[-153.90000627339262,70.8899885118357],[-152.2100060699353,70.82999217394485],[-152.27000240782615,70.60000621202985],[-150.73999243874454,70.43001658800571],[-149.72000301816752,70.53001048449045],[-147.61336157935708,70.2140349392418],[-145.6899898002253,70.12000967068676],[-144.92001095907642,69.9899917670405],[-143.5894461804252,70.15251414659832],[-142.07251034871342,69.85193817817265],[-140.98598752156073,69.71199839952638],[-140.9859883290049,69.71199839952638],[-140.9924987520294,66.00002859156868],[-140.99776974812312,60.30639679629861],[-140.0129978161531,60.27683787702759],[-139.03900042031586,60.000007229240026],[-138.34089,59.56211000000016],[-137.4525,58.905000000000115],[-136.4797200000001,59.46389],[-135.47583,59.78778],[-134.945,59.27056000000013],[-134.27111,58.86111],[-133.35554888220722,58.410285142645165],[-132.73042,57.69289000000011],[-131.70780999999988,56.55212],[-130.00778,55.91583],[-129.9799942633583,55.28499787049722],[-130.53611018946725,54.8027534043494],[-131.08581823797215,55.17890615500204],[-131.9672114671423,55.49777558045906],[-132.25001074285947,56.36999624289746],[-133.53918108435641,57.17888743756214],[-134.07806292029605,58.1230675319669],[-135.03821103227907,58.18771474876393],[-136.62806230995466,58.21220937767046],[-137.80000627968604,58.49999542910379],[-139.867787041413,59.53776154238915],[-140.82527381713305,59.727517401765084],[-142.57444353556446,60.08444651960499],[-143.9588809948799,59.9991804063234],[-145.92555681682785,60.45860972761429],[-147.11437394914668,60.88465607364463],[-148.22430620012767,60.672989406977166],[-148.01806555885076,59.97832896589363],[-148.5708225168609,59.914172675203304],[-149.72785783587585,59.70565827090556],[-150.60824337461645,59.36821116803949],[-151.71639278868332,59.15582103131999],[-151.85943315326716,59.744984035879604],[-151.4097190012472,60.72580272077939],[-150.34694149473253,61.03358755150986],[-150.62111080625698,61.284424953854455],[-151.89583919981686,60.72719798445129],[-152.5783298410956,60.06165721296429],[-154.01917212625762,59.35027944603428],[-153.28751135965317,58.8647276882198],[-154.2324924387585,58.14637360293054],[-155.30749142151024,57.72779450136633],[-156.3083347239231,57.42277435976365],[-156.55609737854633,56.979984849670636],[-158.11721655986776,56.46360809999419],[-158.43332129619716,55.99415355083855],[-159.60332739971744,55.56668610292012],[-160.2897196116342,55.643580634170576],[-161.2230476552578,55.364734605523495],[-162.23776607974108,55.02418691672011],[-163.06944658104638,54.68973704692717],[-164.7855692210272,54.40417308208217],[-164.94222632552004,54.57222483989534],[-163.84833960676568,55.03943146424612],[-162.87000139061593,55.348043117893205],[-161.80417497459604,55.89498647727043],[-160.56360470278116,56.00805451112504],[-160.0705598622845,56.41805532492876],[-158.68444291891944,57.01667511659787],[-158.46109737855394,57.21692129172888],[-157.7227703521839,57.57000051536306],[-157.55027442119356,58.32832632103023],[-157.041674974577,58.91888458926172],[-158.19473120830548,58.61580231386984],[-158.5172179840231,58.78778148053732],[-159.05860612692874,58.424186102931685],[-159.71166704001735,58.93139028587634],[-159.9812888255002,58.57254914004164],[-160.35527116599653,59.07112335879364],[-161.35500342511506,58.670837714260756],[-161.96889360252635,58.67166453717738],[-162.05498653872468,59.26692536074745],[-161.87417070213536,59.6336213242906],[-162.5180590484921,59.98972361921391],[-163.81834143782015,59.79805573184339],[-164.66221757714646,60.26748444278265],[-165.34638770247483,60.50749563256241],[-165.35083187565186,61.07389516869751],[-166.12137915755596,61.500019029376226],[-165.73445187077053,62.074996853271806],[-164.91917863671785,62.63307648380793],[-164.56250790103934,63.14637848576305],[-163.75333248599702,63.21944896102377],[-163.0672244944579,63.05945872664802],[-162.26055538638172,63.54193573674117],[-161.5344498362486,63.455816962326764],[-160.77250668032113,63.766108100023274],[-160.95833513084256,64.22279857040277],[-161.5180684072122,64.40278758407531],[-160.77777767641476,64.78860382756642],[-161.39192623598763,64.77723501246234],[-162.45305009666885,64.55944468856822],[-162.7577860178941,64.33860545516882],[-163.5463942128843,64.5591604681905],[-164.96082984114517,64.44694509546885],[-166.42528825586447,64.68667206487072],[-166.84500423893905,65.08889557561453],[-168.11056006576717,65.66999705673675],[-166.70527116602196,66.0883177761394],[-164.4747096425755,66.5766600612975],[-163.65251176659564,66.5766600612975],[-163.78860165103617,66.07720734319668],[-161.67777442121016,66.11611969671242],[-162.48971452538,66.73556509059512],[-163.71971696679108,67.1163945583701],[-164.4309913808565,67.6163382025778],[-165.39028683170676,68.04277212185025],[-166.76444068099602,68.35887685817968],[-166.20470740462662,68.88303091091618],[-164.4308105133435,68.91553538682774],[-163.16861365461452,69.3711148139129],[-162.93056616926202,69.85806183539927],[-161.90889726463553,70.33332998318764],[-160.9347965159337,70.44768992784958],[-159.03917578838715,70.89164215766894],[-158.11972286683397,70.82472117785105],[-156.58082455139805,71.35776357694175],[-155.06779029032424,71.1477763943237]]]]}},{"type":"Feature","properties":{"abbrev":"Arg.","name":"Argentina","name_long":"Argentina","iso_a2":"AR","iso_a3":"ARG","iso_n3":"032"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-65.5,-55.2],[-66.45,-55.25],[-66.95992,-54.89681],[-67.56244,-54.87001],[-68.63335,-54.8695],[-68.63401022758316,-52.63637045887445],[-68.25,-53.1],[-67.75,-53.85],[-66.45,-54.45],[-65.05,-54.7],[-65.5,-55.2]]],[[[-64.96489213729458,-22.075861504812348],[-64.37702104354227,-22.798091322523547],[-63.98683814152247,-21.993644301035957],[-62.846468471921554,-22.034985446869456],[-62.6850571356579,-22.249029229422405],[-60.84656470400994,-23.8807125790383],[-60.02896603050399,-24.032796319273245],[-58.80712846539495,-24.771459242453275],[-57.77721716981796,-25.16233977630904],[-57.63366004091114,-25.60365650808167],[-58.61817359071972,-27.12371876394712],[-57.60975969097615,-27.395898532828426],[-56.48670162619299,-27.54849903738625],[-55.6958455063982,-27.38783700939082],[-54.78879492859505,-26.621785577096087],[-54.625290696823555,-25.739255466415486],[-54.13004960795441,-25.54763925547725],[-53.62834896504873,-26.124865004177437],[-53.648735317587885,-26.92347258881611],[-54.49072526713553,-27.474756768505767],[-55.1622863429846,-27.88191537853342],[-56.2908996242391,-28.852760512000852],[-57.62513342958291,-30.216294854454244],[-57.87493730328191,-31.016556084926165],[-58.14244035504075,-32.04450367607619],[-58.13264767112142,-33.040566908502015],[-58.34961117209883,-33.263188978815435],[-58.42707414410438,-33.90945444105755],[-58.49544206402654,-34.43148976007011],[-57.225829637263644,-35.28802662530789],[-57.362358771378744,-35.977390232081504],[-56.73748735210546,-36.41312590916658],[-56.78828528504834,-36.901571547189334],[-57.74915686708343,-38.183870538079915],[-59.231857062401865,-38.720220228837206],[-61.23744523786561,-38.928424574541154],[-62.33595699731015,-38.82770720800437],[-62.12576310896293,-39.424104913084875],[-62.330530971919444,-40.17258635840032],[-62.14599443220524,-40.67689666113674],[-62.745802781816984,-41.02876148861209],[-63.77049475773253,-41.166789239263665],[-64.73208980981971,-40.802677097335135],[-65.11803524439159,-41.06431487402888],[-64.97856055363584,-42.05800099056932],[-64.30340796574248,-42.359016208669495],[-63.75594784204235,-42.04368661882451],[-63.45805904809589,-42.563138116222355],[-64.3788038804563,-42.87355844499964],[-65.1818039618397,-43.495380954767796],[-65.32882341171013,-44.501366062193696],[-65.5652689276616,-45.03678557716979],[-66.50996578638936,-45.03962778094584],[-67.29379391139244,-45.5518962542552],[-67.58054643418009,-46.30177296324254],[-66.59706641301726,-47.03392465595381],[-65.64102657740145,-47.236134535511894],[-65.98508826360074,-48.13328907653114],[-67.16617896184766,-48.697337334996945],[-67.81608761256646,-49.86966887797042],[-68.72874508327317,-50.26421843851887],[-69.1385391913478,-50.7325102679478],[-68.81556148952353,-51.771104011594105],[-68.14999487982041,-52.3499834061277],[-68.57154537624135,-52.29944385534626],[-69.49836218939609,-52.14276091263725],[-71.91480383979635,-52.009022305865926],[-72.32940385607404,-51.42595631287241],[-72.30997351753237,-50.677009779666356],[-72.97574683296463,-50.74145029073431],[-73.32805091011448,-50.37878508890987],[-73.41543575712004,-49.31843637471296],[-72.64824744331494,-48.87861825947679],[-72.33116085477195,-48.244238376661826],[-72.44735531278027,-47.73853281025353],[-71.91725847033021,-46.8848381487918],[-71.55200944689125,-45.56073292417713],[-71.65931555854533,-44.97368865334144],[-71.22277889675973,-44.784242852559416],[-71.32980078803621,-44.40752166115169],[-71.79362260607195,-44.20717213315611],[-71.46405615913051,-43.78761117937833],[-71.91542395698391,-43.40856454851742],[-72.14889807807853,-42.25488819760139],[-71.74680375841547,-42.051386407235995],[-71.91573401557756,-40.83233936947073],[-71.68076127794646,-39.80816415787807],[-71.41351660834904,-38.916022230791114],[-70.81466427273472,-38.55299529394074],[-71.11862504747543,-37.5768274879472],[-71.1218806627098,-36.65812387466234],[-70.36476925320167,-36.005088799789945],[-70.38804948594908,-35.16968759535944],[-69.81730912950147,-34.193571465798286],[-69.81477698431921,-33.27388600029985],[-70.07439938015364,-33.09120981214803],[-70.53506893581945,-31.365010267870286],[-69.91900834825192,-30.336339206668313],[-70.01355038112987,-29.36792286551855],[-69.65613033718314,-28.459141127233693],[-69.00123491074828,-27.52121388113613],[-68.2955415513704,-26.89933969493579],[-68.59479977077268,-26.506908868111267],[-68.38600114609736,-26.185016371365233],[-68.41765296087613,-24.518554782816878],[-67.32844295924414,-24.02530323659091],[-66.98523393417764,-22.98634856536283],[-67.10667355006362,-22.7359245744764],[-66.27333940292485,-21.832310479420684],[-64.96489213729458,-22.075861504812348]]]]}},{"type":"Feature","properties":{"abbrev":"Bolivia","name":"Bolivia","name_long":"Bolivia","iso_a2":"BO","iso_a3":"BOL","iso_n3":"068"},"geometry":{"type":"Polygon","coordinates":[[[-62.846468471921554,-22.03498544686945],[-63.98683814152247,-21.99364430103595],[-64.37702104354226,-22.79809132252354],[-64.9648921372946,-22.075861504812327],[-66.27333940292485,-21.83231047942072],[-67.1066735500636,-22.735924574476414],[-67.82817989772273,-22.872918796482175],[-68.21991309271128,-21.494346612231865],[-68.75716712103375,-20.372657972904463],[-68.44222510443092,-19.40506845467143],[-68.96681840684187,-18.981683444904107],[-69.10024695501949,-18.260125420812674],[-69.59042375352405,-17.580011895419332],[-68.9596353827533,-16.50069793057127],[-69.38976416693471,-15.660129082911654],[-69.16034664577495,-15.323973890853019],[-69.33953467474701,-14.953195489158832],[-68.9488866848366,-14.453639418193283],[-68.92922380234954,-13.602683607643007],[-68.88007951523997,-12.899729099176653],[-68.66507971868961,-12.561300144097173],[-69.52967810736496,-10.951734307502194],[-68.78615759954948,-11.03638030359628],[-68.27125362819326,-11.01452117273682],[-68.04819230820539,-10.712059014532485],[-67.17380123561074,-10.30681243249961],[-66.64690833196279,-9.931331475466862],[-65.33843522811642,-9.76198780684639],[-65.44483700220539,-10.511451104375432],[-65.32189876978302,-10.895872084194679],[-65.40228146021303,-11.566270440317153],[-64.3163529120316,-12.461978041232191],[-63.19649878605057,-12.627032565972433],[-62.80306026879638,-13.000653171442686],[-62.127080857986385,-13.198780612849724],[-61.71320431176078,-13.489202162330052],[-61.08412126325565,-13.479383640194598],[-60.503304002511136,-13.775954685117659],[-60.45919816755003,-14.354007256734555],[-60.26432634137736,-14.64597909918364],[-60.251148851142936,-15.077218926659322],[-60.542965664295146,-15.093910414289596],[-60.158389655179036,-16.258283786690082],[-58.24121985536669,-16.299573256091293],[-58.38805843772404,-16.877109063385276],[-58.28080400250226,-17.271710300366017],[-57.734558274961,-17.55246835700777],[-57.498371141170985,-18.174187513911292],[-57.67600887717431,-18.961839694904025],[-57.949997321185826,-19.40000416430682],[-57.85380164247451,-19.969995212486186],[-58.166392381408045,-20.176700941653678],[-58.183471442280506,-19.868399346600363],[-59.115042487206104,-19.356906019775398],[-60.04356462262649,-19.342746677327426],[-61.786326463453776,-19.633736667562964],[-62.26596126977079,-20.513734633061276],[-62.29117936872922,-21.05163461678739],[-62.685057135657885,-22.249029229422387],[-62.846468471921554,-22.03498544686945]]]}},{"type":"Feature","properties":{"abbrev":"Brazil","name":"Brazil","name_long":"Brazil","iso_a2":"BR","iso_a3":"BRA","iso_n3":"076"},"geometry":{"type":"Polygon","coordinates":[[[-57.62513342958296,-30.216294854454258],[-56.29089962423908,-28.85276051200089],[-55.16228634298457,-27.881915378533463],[-54.490725267135524,-27.47475676850579],[-53.648735317587885,-26.923472588816086],[-53.62834896504874,-26.124865004177472],[-54.13004960795439,-25.547639255477254],[-54.625290696823576,-25.73925546641551],[-54.42894609233059,-25.162184747012166],[-54.29347632507745,-24.570799655863965],[-54.29295956075451,-24.02101409271073],[-54.652834235235126,-23.83957813893396],[-55.02790178080954,-24.001273695575225],[-55.40074723979542,-23.956935316668805],[-55.517639329639636,-23.571997572526634],[-55.610682745981144,-22.655619398694842],[-55.79795813660691,-22.356929620047822],[-56.47331743022939,-22.086300144135283],[-56.8815095689029,-22.28215382252148],[-57.937155727761294,-22.090175876557172],[-57.87067399761779,-20.73268767668195],[-58.166392381408045,-20.176700941653678],[-57.85380164247451,-19.969995212486186],[-57.949997321185826,-19.40000416430682],[-57.67600887717431,-18.961839694904025],[-57.498371141170985,-18.174187513911292],[-57.734558274961,-17.55246835700777],[-58.28080400250226,-17.271710300366017],[-58.38805843772404,-16.877109063385276],[-58.24121985536669,-16.299573256091293],[-60.158389655179036,-16.258283786690082],[-60.542965664295146,-15.093910414289596],[-60.251148851142936,-15.077218926659322],[-60.26432634137736,-14.64597909918364],[-60.45919816755003,-14.354007256734555],[-60.503304002511136,-13.775954685117659],[-61.08412126325565,-13.479383640194598],[-61.71320431176078,-13.489202162330052],[-62.127080857986385,-13.198780612849724],[-62.80306026879638,-13.000653171442686],[-63.19649878605057,-12.627032565972433],[-64.3163529120316,-12.461978041232191],[-65.40228146021303,-11.566270440317153],[-65.32189876978302,-10.895872084194679],[-65.44483700220539,-10.511451104375432],[-65.33843522811642,-9.76198780684639],[-66.64690833196279,-9.931331475466862],[-67.17380123561074,-10.30681243249961],[-68.04819230820539,-10.712059014532485],[-68.27125362819326,-11.01452117273682],[-68.78615759954948,-11.03638030359628],[-69.52967810736496,-10.951734307502194],[-70.0937522040469,-11.123971856331012],[-70.54868567572841,-11.009146823778465],[-70.48189388699117,-9.490118096558845],[-71.30241227892154,-10.079436130415374],[-72.18489071316984,-10.053597914269432],[-72.56303300646564,-9.520193780152717],[-73.22671342639016,-9.462212823121234],[-73.01538265653254,-9.03283334720806],[-73.57105933296707,-8.424446709835834],[-73.98723548042966,-7.523829847853064],[-73.7234014553635,-7.340998630404414],[-73.72448666044164,-6.91859547285064],[-73.1200274319236,-6.629930922068239],[-73.21971126981461,-6.089188734566078],[-72.96450720894119,-5.741251315944893],[-72.89192765978726,-5.274561455916981],[-71.74840572781655,-4.593982842633011],[-70.92884334988358,-4.401591485210368],[-70.7947688463023,-4.251264743673303],[-69.89363521999663,-4.298186944194327],[-69.44410193548961,-1.556287123219818],[-69.42048580593223,-1.122618503426409],[-69.5770653957766,-0.549991957200163],[-70.02065589057005,-0.185156345219539],[-70.0155657619893,0.541414292804205],[-69.45239600287246,0.706158758950693],[-69.25243404811906,0.602650865070075],[-69.21863766140018,0.985676581217433],[-69.80459672715773,1.089081122233466],[-69.81697323269162,1.714805202639624],[-67.86856502955884,1.692455145673392],[-67.53781002467468,2.03716278727633],[-67.25999752467358,1.719998684084956],[-67.0650481838525,1.130112209473225],[-66.87632585312258,1.253360500489336],[-66.32576514348496,0.724452215982012],[-65.54826738143757,0.78925446207603],[-65.35471330428837,1.0952822941085],[-64.61101192895985,1.328730576987042],[-64.19930579289051,1.49285492594602],[-64.08308549666609,1.91636912679408],[-63.36878801131166,2.200899562993129],[-63.42286739770512,2.411067613124174],[-64.26999915226578,2.497005520025567],[-64.40882788761792,3.126786200366624],[-64.36849443221409,3.797210394705246],[-64.81606401229402,4.056445217297423],[-64.62865943058755,4.14848094320925],[-63.88834286157416,4.020530096854571],[-63.0931975978991,3.770571193858785],[-62.804533047116706,4.006965033377952],[-62.08542965355914,4.162123521334308],[-60.96689327660153,4.536467596856639],[-60.60117916527194,4.91809804933213],[-60.73357418480372,5.200277207861901],[-60.21368343773133,5.244486395687602],[-59.98095862490488,5.014061184098139],[-60.11100236676737,4.574966538914083],[-59.767405768458715,4.423502915866607],[-59.53803992373123,3.958802598481938],[-59.81541317405786,3.606498521332085],[-59.97452490908456,2.755232652188056],[-59.71854570172674,2.24963043864436],[-59.64604366722126,1.786893825686789],[-59.03086157900265,1.317697658692722],[-58.5400129868783,1.268088283692521],[-58.42947709820596,1.463941962078721],[-58.11344987652502,1.507195135907025],[-57.66097103537737,1.682584947105639],[-57.335822923396904,1.94853770589576],[-56.78270423036083,1.863710842288654],[-56.539385748914555,1.899522609866921],[-55.99569800477175,1.817667141116601],[-55.905600145070885,2.02199575439866],[-56.0733418442903,2.220794989425499],[-55.973322109589375,2.510363877773017],[-55.569755011606,2.421506252447131],[-55.09758744975514,2.523748073736613],[-54.52475419779971,2.311848863123785],[-54.08806250671724,2.105556545414629],[-53.77852067728892,2.376702785650082],[-53.55483924011354,2.334896551925951],[-53.4184651352953,2.053389187015981],[-52.939657151894956,2.124857692875636],[-52.55642473001842,2.504705308437053],[-52.249337531123956,3.241094468596245],[-51.65779741067888,4.156232408053029],[-51.31714636901086,4.203490505383954],[-51.069771287629656,3.650397650564031],[-50.508875291533656,1.901563828942457],[-49.97407589374506,1.736483465986069],[-49.947100796088705,1.046189683431223],[-50.699251268096916,0.222984117021682],[-50.38821082213214,-0.078444512536819],[-48.62056677915631,-0.235489190271821],[-48.58449662941659,-1.237805271005001],[-47.824956427590635,-0.5816179337628],[-46.566583624851226,-0.941027520352776],[-44.905703090990414,-1.551739597178134],[-44.417619187993665,-2.137750339367976],[-44.58158850765578,-2.691308282078524],[-43.418791266440195,-2.383110039889793],[-41.47265682632825,-2.912018324397116],[-39.97866533055404,-2.873054294449041],[-38.50038347019657,-3.700652357603395],[-37.2232521225352,-4.820945733258917],[-36.45293738457639,-5.109403578312153],[-35.59779578301047,-5.149504489770648],[-35.23538896334756,-5.464937432480247],[-34.89602983248683,-6.738193047719711],[-34.729993455533034,-7.343220716992966],[-35.12821204277422,-8.996401462442286],[-35.636966518687714,-9.649281508017815],[-37.046518724097,-11.040721123908801],[-37.68361161960736,-12.171194756725823],[-38.42387651218844,-13.038118584854288],[-38.673887091616514,-13.057652276260619],[-38.953275722802545,-13.793369642800023],[-38.88229814304965,-15.667053724838768],[-39.16109249526431,-17.208406670808472],[-39.2673392400564,-17.867746270420483],[-39.58352149103423,-18.262295830968938],[-39.76082333022764,-19.59911345792741],[-40.77474077001034,-20.904511814052423],[-40.94475623225061,-21.937316989837807],[-41.754164191238225,-22.370675551037458],[-41.98828426773655,-22.970070489190892],[-43.07470374202475,-22.96769337330547],[-44.64781185563781,-23.351959323827842],[-45.35213578955991,-23.796841729428582],[-46.47209326840554,-24.08896860117454],[-47.64897233742066,-24.885199069927722],[-48.4954581365777,-25.877024834905654],[-48.64100480812774,-26.623697605090932],[-48.47473588722865,-27.17591196056189],[-48.661520351747626,-28.186134535435716],[-48.88845740415739,-28.674115085567884],[-49.587329474472675,-29.224469089476337],[-50.696874152211485,-30.984465020472957],[-51.576226162306156,-31.77769825615321],[-52.256081305538046,-32.24536996839466],[-52.712099982297694,-33.19657805759118],[-53.373661668498244,-33.768377780900764],[-53.6505439927181,-33.20200408298183],[-53.209588995971544,-32.727666110974724],[-53.787951626182185,-32.047242526987624],[-54.57245154480512,-31.494511407193748],[-55.601510179249345,-30.853878676071393],[-55.97324459494093,-30.883075860316303],[-56.97602576356473,-30.109686374636127],[-57.62513342958296,-30.216294854454258]]]}},{"type":"Feature","properties":{"abbrev":"Chile","name":"Chile","name_long":"Chile","iso_a2":"CL","iso_a3":"CHL","iso_n3":"152"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-68.63401022758316,-52.63637045887437],[-68.6333499999999,-54.8695],[-67.56244,-54.87001],[-66.95992,-54.89681],[-67.29102999999989,-55.30124],[-68.14862999999986,-55.61183],[-68.63999081081181,-55.58001799908689],[-69.2321,-55.49906],[-69.95809,-55.19843],[-71.00568,-55.05383],[-72.2639,-54.49514],[-73.2852,-53.95751999999989],[-74.66253,-52.83749],[-73.8381,-53.04743],[-72.43418,-53.7154],[-71.10773,-54.07433],[-70.59177999999979,-53.61583],[-70.26748,-52.93123],[-69.34564999999989,-52.5183],[-68.63401022758316,-52.63637045887437]]],[[[-68.21991309271124,-21.494346612231837],[-67.82817989772266,-22.87291879648218],[-67.10667355006362,-22.7359245744764],[-66.98523393417764,-22.98634856536283],[-67.32844295924414,-24.02530323659091],[-68.41765296087613,-24.518554782816878],[-68.38600114609736,-26.185016371365233],[-68.59479977077268,-26.506908868111267],[-68.2955415513704,-26.89933969493579],[-69.00123491074828,-27.52121388113613],[-69.65613033718314,-28.459141127233693],[-70.01355038112987,-29.36792286551855],[-69.91900834825192,-30.336339206668313],[-70.53506893581945,-31.365010267870286],[-70.07439938015364,-33.09120981214803],[-69.81477698431921,-33.27388600029985],[-69.81730912950147,-34.193571465798286],[-70.38804948594908,-35.16968759535944],[-70.36476925320167,-36.005088799789945],[-71.1218806627098,-36.65812387466234],[-71.11862504747543,-37.5768274879472],[-70.81466427273472,-38.55299529394074],[-71.41351660834904,-38.916022230791114],[-71.68076127794646,-39.80816415787807],[-71.91573401557756,-40.83233936947073],[-71.74680375841547,-42.051386407235995],[-72.14889807807853,-42.25488819760139],[-71.91542395698391,-43.40856454851742],[-71.46405615913051,-43.78761117937833],[-71.79362260607195,-44.20717213315611],[-71.32980078803621,-44.40752166115169],[-71.22277889675973,-44.784242852559416],[-71.65931555854533,-44.97368865334144],[-71.55200944689125,-45.56073292417713],[-71.91725847033021,-46.8848381487918],[-72.44735531278027,-47.73853281025353],[-72.33116085477195,-48.244238376661826],[-72.64824744331494,-48.87861825947679],[-73.41543575712004,-49.31843637471296],[-73.32805091011448,-50.37878508890987],[-72.97574683296463,-50.74145029073431],[-72.30997351753237,-50.677009779666356],[-72.32940385607404,-51.42595631287241],[-71.91480383979635,-52.009022305865926],[-69.49836218939609,-52.14276091263725],[-68.57154537624135,-52.29944385534626],[-69.46128434922664,-52.29195077266393],[-69.94277950710614,-52.53793059037325],[-70.84510169135453,-52.899200528525725],[-71.00633216010525,-53.83325204220135],[-71.42979468452094,-53.85645476030039],[-72.55794287788486,-53.531410001184454],[-73.70275672066288,-52.83506926860725],[-73.70275672066288,-52.8350700760515],[-74.94676347522515,-52.26275358841903],[-75.2600260077785,-51.629354750373224],[-74.9766324530898,-51.04339568461569],[-75.4797541978835,-50.37837167745156],[-75.60801510283196,-48.6737728818718],[-75.18276974150213,-47.71191944762316],[-74.1265809801047,-46.9392534319951],[-75.64439531116545,-46.64764332457203],[-74.69215369332306,-45.76397633238098],[-74.35170935738427,-44.103044122087894],[-73.2403560045152,-44.454960625995625],[-72.71780392117978,-42.383355808278985],[-73.38889990913825,-42.11753224056957],[-73.70133561877486,-43.365776462579745],[-74.33194312203258,-43.22495818458441],[-74.01795711942717,-41.794812920906836],[-73.67709937202997,-39.942212823243125],[-73.21759253609068,-39.258688653318515],[-73.50555945503706,-38.28288258235107],[-73.58806087919109,-37.156284681956016],[-73.1667170884993,-37.12378020604435],[-72.55313696968173,-35.508840020491036],[-71.86173214383257,-33.90909270603153],[-71.43845048692992,-32.41889942803083],[-71.66872066922244,-30.92064462659252],[-71.37008256700773,-30.095682061485004],[-71.48989437527646,-28.861442152625912],[-70.90512386746158,-27.6403797340012],[-70.72495398627598,-25.70592416758721],[-70.40396582709505,-23.628996677344542],[-70.09124589708067,-21.393319187101223],[-70.16441972520599,-19.756468194256186],[-70.37257239447774,-18.347975355708883],[-69.85844356960581,-18.092693780187034],[-69.590423753524,-17.58001189541929],[-69.10024695501943,-18.260125420812656],[-68.96681840684184,-18.981683444904093],[-68.44222510443095,-19.405068454671422],[-68.75716712103372,-20.372657972904477],[-68.21991309271124,-21.494346612231837]]]]}},{"type":"Feature","properties":{"abbrev":"Col.","name":"Colombia","name_long":"Colombia","iso_a2":"CO","iso_a3":"COL","iso_n3":"170"},"geometry":{"type":"Polygon","coordinates":[[[-75.37322323271385,-0.15203175212045],[-75.80146582711659,0.084801337073202],[-76.29231441924097,0.416047268064119],[-76.57637976754938,0.256935533037435],[-77.4249843004304,0.395686753741117],[-77.66861284047044,0.825893052570961],[-77.85506140817952,0.809925034992773],[-78.85525875518871,1.380923773601822],[-78.99093522817103,1.691369940595251],[-78.61783138702371,1.766404120283056],[-78.66211808949785,2.267355454920477],[-78.42761043975732,2.629555568854215],[-77.93154252797149,2.696605739752926],[-77.51043128122501,3.325016994638247],[-77.12768978545526,3.849636135265357],[-77.49627193877703,4.087606105969428],[-77.3076012844794,4.667984117039452],[-77.53322058786573,5.582811997902496],[-77.31881507028675,5.84535411216136],[-77.47666073272228,6.691116441266303],[-77.88157141794525,7.223771267114785],[-77.75341386586139,7.709839789252142],[-77.43110795765699,7.638061224798735],[-77.24256649444008,7.935278225125444],[-77.47472286651133,8.524286200388218],[-77.35336076527385,8.67050466555807],[-76.83667395700357,8.638749497914716],[-76.08638383655786,9.336820583529487],[-75.67460018584005,9.443248195834599],[-75.66470414905618,9.774003200718738],[-75.48042599150335,10.618990383339309],[-74.90689510771197,11.083044745320322],[-74.27675269234489,11.102035834187587],[-74.1972226630477,11.310472723836865],[-73.41476396350029,11.22701528568548],[-72.62783525255963,11.731971543825523],[-72.23819495307892,11.955549628136326],[-71.75409013536864,12.437303168177309],[-71.3998223537917,12.376040757695293],[-71.13746110704588,12.112981879113505],[-71.3315836249503,11.776284084515808],[-71.97392167833829,11.60867157637712],[-72.22757544624294,11.10870209395324],[-72.61465776232521,10.821975409381778],[-72.9052860175347,10.450344346554772],[-73.02760413276957,9.736770331252444],[-73.30495154488005,9.151999823437606],[-72.7887298245004,9.085027167187334],[-72.6604947577681,8.625287787302682],[-72.43986223009796,8.405275376820029],[-72.36090064155596,8.002638454617895],[-72.47967892117885,7.632506008327354],[-72.44448727078807,7.423784898300481],[-72.19835242378188,7.340430813013682],[-71.96017574734864,6.991614895043538],[-70.67423356798152,7.087784735538719],[-70.09331295437242,6.96037649172311],[-69.38947994655712,6.099860541198836],[-68.98531856960236,6.206804917826858],[-68.26505245631823,6.153268133972475],[-67.69508724635502,6.267318020040647],[-67.34143958196557,6.095468044454023],[-67.52153194850275,5.556870428891969],[-67.74469662135522,5.221128648291668],[-67.82301225449355,4.503937282728899],[-67.62183590358127,3.839481716319994],[-67.33756384954368,3.542342230641722],[-67.30317318385345,3.31845408773718],[-67.8099381171237,2.820655015469569],[-67.44709204778631,2.600280869960869],[-67.18129431829307,2.250638129074062],[-66.87632585312258,1.253360500489336],[-67.0650481838525,1.130112209473225],[-67.25999752467358,1.719998684084956],[-67.53781002467468,2.03716278727633],[-67.86856502955884,1.692455145673392],[-69.81697323269162,1.714805202639624],[-69.80459672715773,1.089081122233466],[-69.21863766140018,0.985676581217433],[-69.25243404811906,0.602650865070075],[-69.45239600287246,0.706158758950693],[-70.0155657619893,0.541414292804205],[-70.02065589057005,-0.185156345219539],[-69.5770653957766,-0.549991957200163],[-69.42048580593223,-1.122618503426409],[-69.44410193548961,-1.556287123219818],[-69.89363521999663,-4.298186944194327],[-70.39404395209499,-3.766591485207825],[-70.69268205430971,-3.742872002785859],[-70.04770850287485,-2.725156345229699],[-70.81347571479196,-2.256864515800743],[-71.41364579942979,-2.342802422702128],[-71.7747607082854,-2.169789727388938],[-72.32578650581365,-2.434218031426454],[-73.07039221870724,-2.308954359550953],[-73.6595035468346,-1.260491224781134],[-74.12239518908906,-1.002832533373848],[-74.44160051135597,-0.530820000819887],[-75.10662451852008,-0.05720549886486],[-75.37322323271385,-0.15203175212045]]]}},{"type":"Feature","properties":{"abbrev":"Ecu.","name":"Ecuador","name_long":"Ecuador","iso_a2":"EC","iso_a3":"ECU","iso_n3":"218"},"geometry":{"type":"Polygon","coordinates":[[[-80.30256059438722,-3.404856459164713],[-79.77029334178093,-2.65751189535964],[-79.98655921092241,-2.220794366061014],[-80.36878394236925,-2.685158786635788],[-80.96776546906436,-2.246942640800704],[-80.76480628123804,-1.965047702648533],[-80.9336590237517,-1.057454522306358],[-80.58337032746127,-0.906662692878683],[-80.39932471385376,-0.283703301600141],[-80.02089820018037,0.360340074053468],[-80.09060970734211,0.768428859862397],[-79.54276201039978,0.982937730305963],[-78.85525875518871,1.380923773601822],[-77.85506140817952,0.809925034992773],[-77.66861284047044,0.825893052570961],[-77.4249843004304,0.395686753741117],[-76.57637976754938,0.256935533037435],[-76.29231441924097,0.416047268064119],[-75.80146582711659,0.084801337073202],[-75.37322323271385,-0.15203175212045],[-75.23372270374193,-0.911416924649529],[-75.54499569365204,-1.56160979574588],[-76.63539425322672,-2.608677666843818],[-77.83790483265861,-3.003020521663103],[-78.45068396677564,-3.873096612161376],[-78.63989722361234,-4.547784112164074],[-79.20528906931771,-4.959128513207389],[-79.62497921417618,-4.454198093283494],[-80.02890804718561,-4.346090996928893],[-80.44224199087216,-4.425724379090674],[-80.46929460317695,-4.059286797708999],[-80.18401485870967,-3.821161797708044],[-80.30256059438722,-3.404856459164713]]]}},{"type":"Feature","properties":{"abbrev":"Flk. Is.","name":"Falkland Is.","name_long":"Falkland Islands","iso_a2":"FK","iso_a3":"FLK","iso_n3":"238"},"geometry":{"type":"Polygon","coordinates":[[[-61.2,-51.85],[-60,-51.25],[-59.15,-51.5],[-58.55,-51.1],[-57.75,-51.55],[-58.05,-51.9],[-59.4,-52.2],[-59.85,-51.85],[-60.7,-52.3],[-61.2,-51.85]]]}},{"type":"Feature","properties":{"abbrev":"Guy.","name":"Guyana","name_long":"Guyana","iso_a2":"GY","iso_a3":"GUY","iso_n3":"328"},"geometry":{"type":"Polygon","coordinates":[[[-59.758284878159195,8.367034816924047],[-59.101684129458654,7.999201971870492],[-58.482962205628056,7.347691351750697],[-58.45487606467743,6.832787380394463],[-58.07810319683737,6.809093736188643],[-57.542218593970645,6.321268215353356],[-57.14743648947688,5.973149929219161],[-57.307245856339506,5.073566595882227],[-57.91428890647214,4.812626451024414],[-57.86020952007869,4.57680105226045],[-58.04469438336068,4.060863552258382],[-57.60156897645786,3.334654649260685],[-57.2814334784097,3.333491929534119],[-57.150097825739905,2.768926906745406],[-56.539385748914555,1.899522609866921],[-56.78270423036083,1.863710842288654],[-57.335822923396904,1.94853770589576],[-57.66097103537737,1.682584947105639],[-58.11344987652502,1.507195135907025],[-58.42947709820596,1.463941962078721],[-58.5400129868783,1.268088283692521],[-59.03086157900265,1.317697658692722],[-59.64604366722126,1.786893825686789],[-59.71854570172674,2.24963043864436],[-59.97452490908456,2.755232652188056],[-59.81541317405786,3.606498521332085],[-59.53803992373123,3.958802598481938],[-59.767405768458715,4.423502915866607],[-60.11100236676737,4.574966538914083],[-59.98095862490488,5.014061184098139],[-60.21368343773133,5.244486395687602],[-60.73357418480372,5.200277207861901],[-61.410302903881956,5.959068101419618],[-61.13941504580795,6.234296779806144],[-61.15933631045648,6.696077378766319],[-60.54399919294098,6.856584377464883],[-60.29566809756239,7.043911444522919],[-60.637972785063766,7.414999904810855],[-60.55058793805819,7.779602972846178],[-59.758284878159195,8.367034816924047]]]}},{"type":"Feature","properties":{"abbrev":"Para.","name":"Paraguay","name_long":"Paraguay","iso_a2":"PY","iso_a3":"PRY","iso_n3":"600"},"geometry":{"type":"Polygon","coordinates":[[[-62.685057135657885,-22.249029229422387],[-62.29117936872922,-21.05163461678739],[-62.26596126977079,-20.513734633061276],[-61.786326463453776,-19.633736667562964],[-60.04356462262649,-19.342746677327426],[-59.115042487206104,-19.356906019775398],[-58.183471442280506,-19.868399346600363],[-58.166392381408045,-20.176700941653678],[-57.87067399761779,-20.73268767668195],[-57.937155727761294,-22.090175876557172],[-56.8815095689029,-22.28215382252148],[-56.47331743022939,-22.086300144135283],[-55.79795813660691,-22.356929620047822],[-55.610682745981144,-22.655619398694842],[-55.517639329639636,-23.571997572526634],[-55.40074723979542,-23.956935316668805],[-55.02790178080954,-24.001273695575225],[-54.652834235235126,-23.83957813893396],[-54.29295956075451,-24.02101409271073],[-54.29347632507745,-24.570799655863965],[-54.42894609233059,-25.162184747012166],[-54.625290696823576,-25.73925546641551],[-54.78879492859505,-26.621785577096134],[-55.69584550639816,-27.38783700939086],[-56.48670162619299,-27.548499037386293],[-57.60975969097615,-27.395898532828387],[-58.61817359071974,-27.123718763947096],[-57.633660040911124,-25.60365650808164],[-57.77721716981794,-25.16233977630904],[-58.80712846539498,-24.77145924245331],[-60.02896603050402,-24.032796319273274],[-60.84656470400991,-23.880712579038292],[-62.685057135657885,-22.249029229422387]]]}},{"type":"Feature","properties":{"abbrev":"Sur.","name":"Suriname","name_long":"Suriname","iso_a2":"SR","iso_a3":"SUR","iso_n3":"740"},"geometry":{"type":"Polygon","coordinates":[[[-57.14743648947688,5.973149929219161],[-55.9493184067898,5.772877915872002],[-55.841779751190415,5.953125311706059],[-55.033250291551774,6.025291449401664],[-53.958044603070896,5.756548163267765],[-54.47863298197923,4.896755682795586],[-54.399542202356514,4.212611395683466],[-54.00693050801901,3.620037746592558],[-54.181726040246275,3.189779771330421],[-54.2697051662232,2.732391669115046],[-54.52475419779971,2.311848863123785],[-55.09758744975514,2.523748073736613],[-55.569755011606,2.421506252447131],[-55.973322109589375,2.510363877773017],[-56.0733418442903,2.220794989425499],[-55.905600145070885,2.02199575439866],[-55.99569800477175,1.817667141116601],[-56.539385748914555,1.899522609866921],[-57.150097825739905,2.768926906745406],[-57.2814334784097,3.333491929534119],[-57.60156897645786,3.334654649260685],[-58.04469438336068,4.060863552258382],[-57.86020952007869,4.57680105226045],[-57.91428890647214,4.812626451024414],[-57.307245856339506,5.073566595882227],[-57.14743648947688,5.973149929219161]]]}},{"type":"Feature","properties":{"abbrev":"Ury.","name":"Uruguay","name_long":"Uruguay","iso_a2":"UY","iso_a3":"URY","iso_n3":"858"},"geometry":{"type":"Polygon","coordinates":[[[-57.62513342958296,-30.216294854454258],[-56.97602576356473,-30.109686374636127],[-55.97324459494093,-30.883075860316303],[-55.601510179249345,-30.853878676071393],[-54.57245154480512,-31.494511407193748],[-53.787951626182185,-32.047242526987624],[-53.209588995971544,-32.727666110974724],[-53.6505439927181,-33.20200408298183],[-53.373661668498244,-33.768377780900764],[-53.806425950726535,-34.396814874002224],[-54.93586605489773,-34.952646579733624],[-55.67408972840329,-34.75265878676407],[-56.21529700379607,-34.85983570733742],[-57.139685024633096,-34.430456231424245],[-57.8178606838155,-34.4625472958775],[-58.42707414410439,-33.90945444105757],[-58.34961117209887,-33.26318897881541],[-58.13264767112144,-33.040566908502015],[-58.14244035504076,-32.044503676076154],[-57.87493730328188,-31.016556084926208],[-57.62513342958296,-30.216294854454258]]]}},{"type":"Feature","properties":{"abbrev":"Peru","name":"Peru","name_long":"Peru","iso_a2":"PE","iso_a3":"PER","iso_n3":"604"},"geometry":{"type":"Polygon","coordinates":[[[-69.59042375352405,-17.580011895419332],[-69.85844356960587,-18.092693780187012],[-70.37257239447771,-18.34797535570887],[-71.37525021023691,-17.773798516513857],[-71.46204077827112,-17.363487644116383],[-73.44452958850042,-16.359362888252996],[-75.23788265654144,-15.265682875227782],[-76.00920508492995,-14.649286390850321],[-76.42346920439775,-13.82318694423243],[-76.25924150257416,-13.535039157772943],[-77.10619238962184,-12.22271615972082],[-78.09215287953464,-10.377712497604065],[-79.03695309112695,-8.386567884965892],[-79.44592037628485,-7.93083342858386],[-79.76057817251004,-7.194340915560083],[-80.53748165558608,-6.541667575713717],[-81.24999630402642,-6.136834405139183],[-80.92634680858244,-5.690556735866565],[-81.41094255239946,-4.736764825055459],[-81.09966956248937,-4.036394138203697],[-80.30256059438722,-3.404856459164713],[-80.18401485870967,-3.821161797708044],[-80.46929460317695,-4.059286797708999],[-80.44224199087216,-4.425724379090674],[-80.02890804718561,-4.346090996928893],[-79.62497921417618,-4.454198093283494],[-79.20528906931771,-4.959128513207389],[-78.63989722361234,-4.547784112164074],[-78.45068396677564,-3.873096612161376],[-77.83790483265861,-3.003020521663103],[-76.63539425322672,-2.608677666843818],[-75.54499569365204,-1.56160979574588],[-75.23372270374193,-0.911416924649529],[-75.37322323271385,-0.15203175212045],[-75.10662451852008,-0.05720549886486],[-74.44160051135597,-0.530820000819887],[-74.12239518908906,-1.002832533373848],[-73.6595035468346,-1.260491224781134],[-73.07039221870724,-2.308954359550953],[-72.32578650581365,-2.434218031426454],[-71.7747607082854,-2.169789727388938],[-71.41364579942979,-2.342802422702128],[-70.81347571479196,-2.256864515800743],[-70.04770850287485,-2.725156345229699],[-70.69268205430971,-3.742872002785859],[-70.39404395209499,-3.766591485207825],[-69.89363521999663,-4.298186944194327],[-70.7947688463023,-4.251264743673303],[-70.92884334988358,-4.401591485210368],[-71.74840572781655,-4.593982842633011],[-72.89192765978726,-5.274561455916981],[-72.96450720894119,-5.741251315944893],[-73.21971126981461,-6.089188734566078],[-73.1200274319236,-6.629930922068239],[-73.72448666044164,-6.91859547285064],[-73.7234014553635,-7.340998630404414],[-73.98723548042966,-7.523829847853064],[-73.57105933296707,-8.424446709835834],[-73.01538265653254,-9.03283334720806],[-73.22671342639016,-9.462212823121234],[-72.56303300646564,-9.520193780152717],[-72.18489071316984,-10.053597914269432],[-71.30241227892154,-10.079436130415374],[-70.48189388699117,-9.490118096558845],[-70.54868567572841,-11.009146823778465],[-70.0937522040469,-11.123971856331012],[-69.52967810736496,-10.951734307502194],[-68.66507971868961,-12.561300144097173],[-68.88007951523997,-12.899729099176653],[-68.92922380234954,-13.602683607643007],[-68.9488866848366,-14.453639418193283],[-69.33953467474701,-14.953195489158832],[-69.16034664577495,-15.323973890853019],[-69.38976416693471,-15.660129082911654],[-68.9596353827533,-16.50069793057127],[-69.59042375352405,-17.580011895419332]]]}},{"type":"Feature","properties":{"abbrev":"Ven.","name":"Venezuela","name_long":"Venezuela","iso_a2":"VE","iso_a3":"VEN","iso_n3":"862"},"geometry":{"type":"Polygon","coordinates":[[[-71.3315836249503,11.776284084515808],[-71.36000566271082,11.53999359786121],[-71.94704993354651,11.423282375530022],[-71.62086829292019,10.969459947142795],[-71.63306393094108,10.446494452349027],[-72.07417395698451,9.865651353388373],[-71.69564409044654,9.072263088411248],[-71.26455929226773,9.137194525585983],[-71.03999935574339,9.859992784052407],[-71.35008378771079,10.211935126176215],[-71.40062333849224,10.968969021036015],[-70.1552988349065,11.37548167566004],[-70.29384334988103,11.846822414594214],[-69.94324459499683,12.162307033736099],[-69.58430009629747,11.459610907431212],[-68.88299923366445,11.443384507691563],[-68.23327145045873,10.885744126829946],[-68.19412655299763,10.554653225135922],[-67.29624854192633,10.54586823164631],[-66.227864142508,10.648626817258688],[-65.65523759628175,10.200798855017323],[-64.89045223657817,10.0772146671913],[-64.32947872583374,10.38959870039568],[-64.31800655786495,10.64141795495398],[-63.07932247582874,10.7017243514386],[-61.880946010980196,10.715625311725104],[-62.73011898461641,10.420268662960906],[-62.388511928950976,9.94820445397464],[-61.58876746280193,9.873066921422264],[-60.83059668643172,9.38133982994894],[-60.67125240745973,8.580174261911878],[-60.15009558779618,8.602756862823426],[-59.758284878159195,8.367034816924047],[-60.55058793805819,7.779602972846178],[-60.637972785063766,7.414999904810855],[-60.29566809756239,7.043911444522919],[-60.54399919294098,6.856584377464883],[-61.15933631045648,6.696077378766319],[-61.13941504580795,6.234296779806144],[-61.410302903881956,5.959068101419618],[-60.73357418480372,5.200277207861901],[-60.60117916527194,4.91809804933213],[-60.96689327660153,4.536467596856639],[-62.08542965355914,4.162123521334308],[-62.804533047116706,4.006965033377952],[-63.0931975978991,3.770571193858785],[-63.88834286157416,4.020530096854571],[-64.62865943058755,4.14848094320925],[-64.81606401229402,4.056445217297423],[-64.36849443221409,3.797210394705246],[-64.40882788761792,3.126786200366624],[-64.26999915226578,2.497005520025567],[-63.42286739770512,2.411067613124174],[-63.36878801131166,2.200899562993129],[-64.08308549666609,1.91636912679408],[-64.19930579289051,1.49285492594602],[-64.61101192895985,1.328730576987042],[-65.35471330428837,1.0952822941085],[-65.54826738143757,0.78925446207603],[-66.32576514348496,0.724452215982012],[-66.87632585312258,1.253360500489336],[-67.18129431829307,2.250638129074062],[-67.44709204778631,2.600280869960869],[-67.8099381171237,2.820655015469569],[-67.30317318385345,3.31845408773718],[-67.33756384954368,3.542342230641722],[-67.62183590358127,3.839481716319994],[-67.82301225449355,4.503937282728899],[-67.74469662135522,5.221128648291668],[-67.52153194850275,5.556870428891969],[-67.34143958196557,6.095468044454023],[-67.69508724635502,6.267318020040647],[-68.26505245631823,6.153268133972475],[-68.98531856960236,6.206804917826858],[-69.38947994655712,6.099860541198836],[-70.09331295437242,6.96037649172311],[-70.67423356798152,7.087784735538719],[-71.96017574734864,6.991614895043538],[-72.19835242378188,7.340430813013682],[-72.44448727078807,7.423784898300481],[-72.47967892117885,7.632506008327354],[-72.36090064155596,8.002638454617895],[-72.43986223009796,8.405275376820029],[-72.6604947577681,8.625287787302682],[-72.7887298245004,9.085027167187334],[-73.30495154488005,9.151999823437606],[-73.02760413276957,9.736770331252444],[-72.9052860175347,10.450344346554772],[-72.61465776232521,10.821975409381778],[-72.22757544624294,11.10870209395324],[-71.97392167833829,11.60867157637712],[-71.3315836249503,11.776284084515808]]]}},{"type":"Feature","properties":{"abbrev":"Afg.","name":"Afghanistan","name_long":"Afghanistan","iso_a2":"AF","iso_a3":"AFG","iso_n3":"004"},"geometry":{"type":"Polygon","coordinates":[[[61.21081709172574,35.650072333309225],[62.230651483005886,35.270663967422294],[62.9846623065766,35.40404083916762],[63.19353844590035,35.857165635718914],[63.9828959491587,36.0079574651466],[64.5464791197339,36.31207326918427],[64.7461051776774,37.111817735333304],[65.58894778835784,37.30521678318564],[65.74563073106681,37.66116404881207],[66.21738488145932,37.39379018813392],[66.51860680528867,37.36278432875879],[67.07578209825962,37.35614390720929],[67.82999962755952,37.14499400486468],[68.13556237170138,37.0231151393043],[68.85944583524594,37.344335842430596],[69.19627282092438,37.15114350030743],[69.51878543485796,37.60899669041341],[70.11657840361033,37.58822276463209],[70.27057417184014,37.735164699854025],[70.3763041523093,38.13839590102752],[70.80682050973289,38.486281643216415],[71.34813113799026,38.258905341132156],[71.23940392444817,37.95326508234188],[71.54191775908478,37.905774441065645],[71.44869347523024,37.06564484308051],[71.8446382994506,36.73817129164692],[72.1930408059624,36.948287665345674],[72.63688968291729,37.047558091778356],[73.26005577992501,37.495256862939],[73.9486959166465,37.4215662704908],[74.98000247589542,37.419990139305895],[75.15802778514092,37.13303091078912],[74.57589277537298,37.02084137628346],[74.06755171091783,36.83617564548845],[72.92002485544447,36.72000702569632],[71.84629194528392,36.50994232842986],[71.26234826038575,36.074387518857804],[71.49876793812109,35.650563259416],[71.6130762063507,35.153203436822864],[71.11501875192162,34.733125718722235],[71.15677330921346,34.34891144463215],[70.8818030129884,33.98885590263851],[69.9305432473596,34.02012014417511],[70.3235941913716,33.35853261975839],[69.68714725126485,33.105498969041236],[69.26252200712256,32.5019440780883],[69.31776411324255,31.90141225842444],[68.92667687365767,31.620189113892064],[68.55693200060932,31.713310044882018],[67.79268924344478,31.58293040620963],[67.68339358914747,31.30315420178142],[66.93889122911847,31.304911200479353],[66.38145755398602,30.73889923758645],[66.34647260932442,29.887943427036177],[65.0468620136161,29.472180691031905],[64.35041873561852,29.560030625928093],[64.14800215033125,29.340819200145972],[63.55026085801117,29.468330796826162],[62.54985680527278,29.31857249604431],[60.874248488208785,29.829238999952604],[61.781221551363444,30.735850328081234],[61.699314406180825,31.37950613049267],[60.94194461451113,31.548074652628753],[60.863654819588966,32.18291962333443],[60.536077915290775,32.98126882581157],[60.963700392506006,33.52883230237625],[60.52842980331158,33.676446031218006],[60.80319339380745,34.40410187431986],[61.21081709172574,35.650072333309225]]]}},{"type":"Feature","properties":{"abbrev":"U.A.E.","name":"United Arab Emirates","name_long":"United Arab Emirates","iso_a2":"AE","iso_a3":"ARE","iso_n3":"784"},"geometry":{"type":"Polygon","coordinates":[[[51.57951867046327,24.245497137951105],[51.757440626844186,24.29407298430547],[51.794389275932865,24.019826158132506],[52.57708051942561,24.177439276622707],[53.404006788960146,24.15131684009917],[54.00800092958758,24.121757920828212],[54.69302371604863,24.79789236093509],[55.43902469261414,25.43914520924494],[56.07082075381456,26.055464178973978],[56.261041701080956,25.71460643157677],[56.396847365144005,24.924732163995486],[55.88623253766801,24.920830593357444],[55.804118686756226,24.269604193615265],[55.981213820220454,24.130542914317825],[55.52863162620823,23.933604030853502],[55.525841098864475,23.524869289640932],[55.234489373602884,23.11099274341532],[55.20834109886319,22.708329982997046],[55.0068030129249,22.496947536707136],[52.000733270074335,23.00115448657894],[51.61770755392698,24.014219265228828],[51.57951867046327,24.245497137951105]]]}},{"type":"Feature","properties":{"abbrev":"Arm.","name":"Armenia","name_long":"Armenia","iso_a2":"AM","iso_a3":"ARM","iso_n3":"051"},"geometry":{"type":"Polygon","coordinates":[[[43.582745802592726,41.09214325618257],[44.97248009621808,41.248128567055595],[45.17949588397934,40.98535390885141],[45.56035118997045,40.812289537105926],[45.35917483905817,40.56150381119346],[45.89190717955509,40.21847565364],[45.61001224140293,39.89999380142518],[46.034534132680676,39.628020738273065],[46.48349897643246,39.464154771475535],[46.50571984231797,38.770605373686294],[46.14362308124881,38.74120148371222],[45.73537926614301,39.31971914321974],[45.73997846861698,39.47399913182713],[45.298144972521456,39.471751207022436],[45.00198733905674,39.740003567049555],[44.79398969908195,39.71300263117705],[44.4000085792887,40.00500031184228],[43.65643639504094,40.253563951166186],[43.75265791196841,40.74020091405876],[43.582745802592726,41.09214325618257]]]}},{"type":"Feature","properties":{"abbrev":"Aze.","name":"Azerbaijan","name_long":"Azerbaijan","iso_a2":"AZ","iso_a3":"AZE","iso_n3":"031"},"geometry":{"type":"MultiPolygon","coordinates":[[[[45.0019873390568,39.7400035670496],[45.29814497252144,39.471751207022436],[45.739978468617004,39.473999131827156],[45.73537926614309,39.3197191432198],[46.14362308124881,38.74120148371222],[45.457721795438744,38.874139105783115],[44.95268802265028,39.33576467544643],[44.793989699082005,39.713002631177034],[45.0019873390568,39.7400035670496]]],[[[47.373315464066216,41.219732367511256],[47.81566572448472,41.151416124021345],[47.98728315612604,41.40581920019423],[48.58435265482629,41.808869533854676],[49.11026370626067,41.282286688800525],[49.6189148293096,40.57292430272997],[50.0848295428531,40.52615713150578],[50.39282107931271,40.256561184239104],[49.5692021014448,40.17610097916071],[49.39525923035043,39.39948171646225],[49.223228387250714,39.04921885838792],[48.85653242370759,38.81548635513178],[48.88324913920255,38.32024526626264],[48.634375441284845,38.27037750910094],[48.010744256386516,38.794014797514535],[48.355529412637935,39.28876496027689],[48.06009524922527,39.582235419262446],[47.685079380083124,39.50836395930119],[46.50571984231797,38.770605373686266],[46.48349897643246,39.464154771475535],[46.034534132680704,39.62802073827305],[45.61001224140293,39.89999380142518],[45.89190717955515,40.218475653639985],[45.35917483905817,40.56150381119349],[45.560351189970476,40.81228953710595],[45.1794958839794,40.98535390885143],[44.972480096218156,41.24812856705562],[45.21742638528164,41.41145193131405],[45.962600538930445,41.1238725856098],[46.501637404166985,41.06444468847411],[46.637908156120574,41.181672675128226],[46.14543175637899,41.72280243587264],[46.404950799348825,41.86067515722735],[46.68607059101666,41.827137152669906],[47.373315464066216,41.219732367511256]]]]}},{"type":"Feature","properties":{"abbrev":"Brunei","name":"Brunei","name_long":"Brunei Darussalam","iso_a2":"BN","iso_a3":"BRN","iso_n3":"096"},"geometry":{"type":"Polygon","coordinates":[[[114.20401655482837,4.525873928236805],[114.59996137904872,4.900011298029966],[115.45071048386981,5.447729803891534],[115.4057003113436,4.955227565933839],[115.34746097215067,4.316636053887009],[114.8695573263154,4.348313706881925],[114.65959598191353,4.007636826997754],[114.20401655482837,4.525873928236805]]]}},{"type":"Feature","properties":{"abbrev":"Bang.","name":"Bangladesh","name_long":"Bangladesh","iso_a2":"BD","iso_a3":"BGD","iso_n3":"050"},"geometry":{"type":"Polygon","coordinates":[[[92.67272098182556,22.041238918541254],[92.65225711463799,21.324047552978485],[92.30323449093868,21.47548533780982],[92.36855350135562,20.670883287025347],[92.08288618364612,21.19219513598577],[92.02521528520839,21.701569729086767],[91.83489098507744,22.18293569588556],[91.41708702999766,22.76501902922122],[90.49600630082728,22.80501658781513],[90.58695682166098,22.392793687422866],[90.27297081905554,21.83636770272011],[89.84746707556428,22.039146023033425],[89.70204959509493,21.857115790285306],[89.41886274613549,21.9661789006373],[89.03196129756623,22.055708319582976],[88.87631188350309,22.879146429937826],[88.52976972855377,23.631141872649163],[88.69994022009092,24.23371491138856],[88.08442223506242,24.501657212821925],[88.30637251175602,24.866079413344206],[88.93155398962308,25.238692328384776],[88.2097892598025,25.76806570078271],[88.56304935094977,26.44652558034272],[89.35509402868729,26.014407253518073],[89.83248091019962,25.96508209889548],[89.92069258012185,25.26974986419218],[90.8722107279121,25.132600612889547],[91.79959598182207,25.147431748957317],[92.37620161333481,24.976692816664965],[91.91509280799443,24.13041372323711],[91.46772993364367,24.072639471934792],[91.15896325069971,23.50352692310439],[91.70647505083211,22.985263983649183],[91.86992760617132,23.624346421802784],[92.14603478390681,23.627498684172593],[92.67272098182556,22.041238918541254]]]}},{"type":"Feature","properties":{"abbrev":"China","name":"China","name_long":"China","iso_a2":"CN","iso_a3":"CHN","iso_n3":"156"},"geometry":{"type":"MultiPolygon","coordinates":[[[[110.33918786015154,18.678395087147607],[109.4752095886637,18.197700913968614],[108.65520796105616,18.5076819930714],[108.62621748254045,19.367887885001977],[109.11905561730802,19.821038519769385],[110.21159874882285,20.101253973872076],[110.78655073450223,20.07753449145008],[111.01005130416465,19.695929877190736],[110.57064660038682,19.255879218009312],[110.33918786015154,18.678395087147607]]],[[[127.6574072612624,49.76027049417294],[129.39781782442046,49.44060008401544],[130.5822933289824,48.72968740497612],[130.98728152885386,47.790132351261406],[132.50667199109952,47.78896963153488],[133.37359581922803,48.18344167743493],[135.02631147678673,48.47822988544391],[134.50081383681064,47.57843984637785],[134.11236209527263,47.21246735288673],[133.7696439963129,46.11692698829907],[133.09712690646646,45.14406647397217],[131.8834542176596,45.32116160743644],[131.0252120301561,44.96795319272157],[131.28855512911557,44.111519680348266],[131.14468794161488,42.92998973242695],[130.6338664084098,42.90301463477056],[130.64001590385246,42.39500946712528],[129.99426720593326,42.98538686784379],[129.5966687358795,42.42498179785459],[128.05221520397234,41.99428457291799],[128.20843305879075,41.46677155208254],[127.34378299368305,41.50315176041596],[126.86908328664988,41.81656932226616],[126.18204511932946,41.10733612727637],[125.07994184784062,40.569823716792456],[124.26562462778534,39.92849335383414],[122.86757042856104,39.63778758397626],[122.13138797413094,39.17045176854464],[121.05455447803288,38.89747101496291],[121.5859949077225,39.36085358332414],[121.37675703337267,39.750261338859524],[122.16859500538104,40.422442531896046],[121.64035851449356,40.94638987890332],[120.76862877816197,40.5933881699176],[119.63960208544907,39.89805593521421],[119.02346398323304,39.2523330755111],[118.04274865119793,39.20427399347969],[117.53270226447708,38.7376358098841],[118.0596985209897,38.06147553156105],[118.87814985562838,37.8973253443859],[118.91163618375353,37.44846385349874],[119.70280236214207,37.15638865818508],[120.82345747282366,37.87042776137798],[121.71125857959797,37.48112335870718],[122.35793745329848,37.45448415786069],[122.51999474496584,36.930614325501836],[121.10416385303303,36.65132904718044],[120.6370089051146,36.111439520811125],[119.6645618022461,35.609790554337735],[119.1512081238586,34.909859117160465],[120.22752485563375,34.36033193616862],[120.6203690939166,33.37672272392513],[121.22901411345023,32.46031871187719],[121.90814578663006,31.69217438407469],[121.89191938689035,30.949351508095102],[121.26425744027331,30.67626740164872],[121.50351932178475,30.142914943964257],[122.09211388558911,29.832520453403163],[121.93842817595308,29.018022365834806],[121.68443851123847,28.225512600206685],[121.12566124886645,28.135673122667185],[120.39547326058234,27.053206895449392],[119.58549686083958,25.740780544532612],[118.65687137255453,24.547390855400238],[117.28160647997086,23.624501451099718],[115.89073530483515,22.782873236578098],[114.76382734584624,22.66807404224167],[114.15254682826568,22.223760077396207],[113.80677981980075,22.54833974862143],[113.24107791550162,22.05136749927047],[111.84359215703248,21.550493679281512],[110.78546552942414,21.397143866455334],[110.44403934127169,20.341032619706397],[109.88986128137357,20.282457383703445],[109.62765506392466,21.008227037026728],[109.86448815311834,21.395050970947523],[108.52281294152444,21.71521230721183],[108.050180291783,21.552379869060104],[107.04342003787266,21.811898912029903],[106.56727339073537,22.218204860924743],[106.7254032735485,22.79426788989838],[105.81124718630521,22.976892401617903],[105.32920942588666,23.352063300056983],[104.4768583516645,22.81915009204692],[103.50451460166053,22.70375661873922],[102.70699222210018,22.708795070887703],[102.17043582561355,22.464753119389343],[101.65201785686158,22.31819875740956],[101.80311974488292,21.174366766845054],[101.27002566936002,21.20165192309517],[101.18000532430759,21.43657298429406],[101.15003299357826,21.84998444262902],[100.41653771362738,21.558839423096657],[99.98348921102158,21.74293671313646],[99.24089887898722,22.118314317304566],[99.53199222208744,22.949038804612595],[98.89874922078283,23.142722072842588],[98.6602624857558,24.063286037690006],[97.60471967976203,23.897404690033056],[97.72460900267916,25.083637193293043],[98.67183800658924,25.918702500913497],[98.71209394734458,26.74353587494025],[98.68269005737054,27.50881216075066],[98.24623091023338,27.74722138112918],[97.91198774616944,28.335945136014374],[97.32711388549004,28.26158274994634],[96.24883344928784,28.411030992134467],[96.58659061074755,28.83097951915437],[96.11767866413103,29.452802028922516],[95.40480228066465,29.031716620392164],[94.56599043170294,29.277438055939964],[93.41334760943268,28.640629380807237],[92.50311893104364,27.89687632904645],[91.6966565286967,27.771741848251622],[91.25885379431989,28.04061432546635],[90.73051395056783,28.064953925075738],[90.01582889197121,28.296438503527185],[89.47581017452116,28.042758897406372],[88.8142484883206,27.299315904239393],[88.73032596227856,28.08686473236756],[88.12044070836994,27.876541652939576],[86.95451704300065,27.97426178640353],[85.82331994013154,28.20357595469875],[85.01163821812307,28.642773952747376],[84.23457970575018,28.839893703724698],[83.89899295444675,29.32022614187764],[83.33711510613719,29.463731594352193],[82.32751264845089,30.115268052688208],[81.5258044778748,30.422716986608663],[81.11125613802928,30.18348094331341],[79.72136681510712,30.882714748654735],[78.73889448437401,31.51590607352705],[78.45844648632604,32.61816437431273],[79.17612877799556,32.483779812137755],[79.20889163606856,32.99439463961374],[78.81108646028574,33.506198025032404],[78.91226891471322,34.32193634697577],[77.83745079947462,35.49400950778781],[76.19284834178572,35.89840342868786],[75.89689741405019,36.66680613865188],[75.158027785141,37.13303091078916],[74.98000247589542,37.419990139305895],[74.82998579295216,37.99000702570146],[74.8648157083168,38.3788463404816],[74.2575142760227,38.60650686294349],[73.9288521666464,38.50581533462272],[73.67537926625485,39.43123688410557],[73.96001305531846,39.660008449861714],[73.82224368682833,39.89397349706314],[74.77686242055606,40.36642527929163],[75.46782799673073,40.56207225194868],[76.52636803579745,40.42794607193513],[76.90448449087712,41.06648590754966],[78.18719689322606,41.185315863604814],[78.54366092317528,41.58224254003871],[80.11943037305142,42.123940741538235],[80.25999026888533,42.34999929459909],[80.18015018099439,42.92006785742686],[80.86620649610123,43.180362046881015],[79.96610639844144,44.91751699480462],[81.9470707539181,45.31702749285316],[82.45892581576905,45.539649563166506],[83.18048383986054,47.33003123635075],[85.16429039911324,47.00095571551611],[85.7204838398707,47.45296946877309],[85.76823286330838,48.4557506373969],[86.59877648310336,48.54918162698061],[87.35997033076269,49.21498078062916],[87.75126427607668,49.29719798440547],[88.0138322285517,48.5994627956006],[88.85429772334678,48.069081732773014],[90.28082563676392,47.693549099307916],[90.97080936072499,46.888146063822944],[90.58576826371834,45.7197160914875],[90.94553958533433,45.28607330991025],[92.13389082231825,45.115075995456436],[93.48073367714133,44.975472113620015],[94.68892866412537,44.35233185482846],[95.30687544147153,44.24133087826547],[95.7624548685567,43.31944916439462],[96.34939578652782,42.72563528092866],[97.451757440178,42.74888967546008],[99.51581749878002,42.524691473961695],[100.8458655131083,42.663804429691425],[101.83304039917995,42.51487295182628],[103.31227827353482,41.90746816666763],[104.52228193564903,41.90834666601663],[104.96499393109346,41.59740957291635],[106.12931562706169,42.1343277044289],[107.744772576938,42.481515814781915],[109.24359581913146,42.51944631608416],[110.4121033061153,42.87123362891103],[111.12968224492023,43.40683401140018],[111.8295878438814,43.74311839453949],[111.66773725794323,44.07317576758771],[111.34837690637946,44.45744171811006],[111.87330610560028,45.10207937273512],[112.43606245325887,45.01164561622426],[113.46390669154422,44.80889313412711],[114.46033165899607,45.33981679949389],[115.98509647020013,45.72723501238602],[116.71786828009888,46.388202419615254],[117.42170128791425,46.67273285581421],[118.87432579963873,46.80541209572365],[119.66326989143877,46.69267995867895],[119.77282392789756,47.04805878355015],[118.86657433479498,47.74706004494621],[118.06414269416675,48.06673045510374],[117.29550744025747,47.6977090521074],[116.30895267137325,47.853410142602826],[115.74283735561575,47.72654450132629],[115.48528201707305,48.135382595403456],[116.19180219936761,49.13459809019906],[116.67880089728621,49.888531399121405],[117.87924441942639,49.51098338479696],[119.28846072802585,50.14288279886205],[119.27936567594239,50.582907619827296],[120.18204959521695,51.64356639261803],[120.738191359542,51.964115302124554],[120.725789015792,52.516226304730814],[120.1770886577169,52.75388621684121],[121.00308475147024,53.25140106873124],[122.24574791879289,53.43172597921369],[123.57150678924087,53.45880442973464],[125.06821129771045,53.161044826868846],[125.94634891164618,52.79279857035695],[126.56439904185699,51.7842554795327],[126.93915652883769,51.3538941514059],[127.28745568248493,50.73979726826545],[127.6574072612624,49.76027049417294]]]]}},{"type":"Feature","properties":{"abbrev":"Bhutan","name":"Bhutan","name_long":"Bhutan","iso_a2":"BT","iso_a3":"BTN","iso_n3":"064"},"geometry":{"type":"Polygon","coordinates":[[[91.69665652869668,27.77174184825166],[92.10371178585973,27.452614040633208],[92.03348351437509,26.83831045176356],[91.21751264848643,26.808648179628022],[90.37327477413407,26.87572418874288],[89.74452762243884,26.719402981059957],[88.83564253128938,27.098966376243762],[88.81424848832054,27.29931590423936],[89.47581017452111,28.042758897406397],[90.01582889197118,28.296438503527217],[90.7305139505678,28.064953925075756],[91.25885379431992,28.040614325466294],[91.69665652869668,27.77174184825166]]]}},{"type":"Feature","properties":{"abbrev":"N. Cy.","name":"N. Cyprus","name_long":"Northern Cyprus","iso_a2":null,"iso_a3":null,"iso_n3":null},"geometry":{"type":"Polygon","coordinates":[[[32.73178022637745,35.14002594658844],[32.80247358575275,35.14550364841138],[32.946960890440806,35.3867033961337],[33.667227003724946,35.37321584730551],[34.57647382990046,35.67159556735879],[33.900804477684204,35.245755927057616],[33.97361657078346,35.058506374648],[33.86643965021011,35.09359467217419],[33.675391880027064,35.01786286065045],[33.5256852556775,35.03868846286407],[33.475817498515845,35.000344550103506],[33.45592207208347,35.10142365166641],[33.3838334490363,35.16271190036457],[33.19097700372305,35.17312470147138],[32.919572381326134,35.08783274997364],[32.73178022637745,35.14002594658844]]]}},{"type":"Feature","properties":{"abbrev":"Cyp.","name":"Cyprus","name_long":"Cyprus","iso_a2":"CY","iso_a3":"CYP","iso_n3":"196"},"geometry":{"type":"Polygon","coordinates":[[[33.97361657078346,35.058506374648],[34.00488081232004,34.97809784600186],[32.97982710137845,34.57186941175544],[32.49029625827753,34.701654771456475],[32.25666710788596,35.10323232679663],[32.73178022637745,35.14002594658844],[32.919572381326134,35.08783274997364],[33.19097700372305,35.17312470147138],[33.3838334490363,35.16271190036457],[33.45592207208347,35.10142365166641],[33.475817498515845,35.000344550103506],[33.5256852556775,35.03868846286407],[33.675391880027064,35.01786286065045],[33.86643965021011,35.09359467217419],[33.97361657078346,35.058506374648]]]}},{"type":"Feature","properties":{"abbrev":"Geo.","name":"Georgia","name_long":"Georgia","iso_a2":"GE","iso_a3":"GEO","iso_n3":"268"},"geometry":{"type":"Polygon","coordinates":[[[41.55408410011065,41.53565623632757],[41.70317060727271,41.96294281673292],[41.45347008643839,42.64512339941794],[40.87546919125379,43.013628038091284],[40.32139448422032,43.128633938156845],[39.955008579270924,43.43499766699922],[40.07696495947977,43.55310415300231],[40.922184686045625,43.38215851498079],[42.39439456560882,43.22030792904263],[43.75601688006739,42.74082815202249],[43.931199985536836,42.55497386328477],[44.537622918481986,42.71199270280363],[45.47027916848572,42.50278066666998],[45.77641035338277,42.09244395605636],[46.404950799348825,41.860675157227305],[46.14543175637902,41.72280243587258],[46.63790815612058,41.181672675128226],[46.50163740416693,41.06444468847411],[45.96260053893039,41.123872585609774],[45.217426385281584,41.41145193131405],[44.97248009621808,41.248128567055595],[43.582745802592726,41.09214325618257],[42.61954878110449,41.58317271581994],[41.55408410011065,41.53565623632757]]]}},{"type":"Feature","properties":{"abbrev":"Indo.","name":"Indonesia","name_long":"Indonesia","iso_a2":"ID","iso_a3":"IDN","iso_n3":"360"},"geometry":{"type":"MultiPolygon","coordinates":[[[[120.71560875863044,-10.239581394087864],[120.2950142762069,-10.258649997603525],[118.96780846565471,-9.557969252158031],[119.90030968636161,-9.361340427287516],[120.42575564990543,-9.665921319215798],[120.77550174365675,-9.969675388227456],[120.71560875863044,-10.239581394087864]]],[[[124.43595014861941,-10.140000909061442],[123.57998172413673,-10.359987481327963],[123.45998904835503,-10.239994805546175],[123.55000939340746,-9.90001555749798],[123.98000898650811,-9.290026950724695],[124.96868248911622,-8.892790215697048],[125.07001997284064,-9.089987481322837],[125.08852013560109,-9.393173109579322],[124.43595014861941,-10.140000909061442]]],[[[117.90001834520777,-8.095681247594925],[118.2606164897405,-8.362383314653329],[118.87845991422215,-8.28068287519983],[119.12650678922309,-8.705824883665073],[117.9704016459893,-8.906639499551261],[117.27773074754903,-9.040894870645559],[116.74014082241663,-9.03293670007264],[117.08373742072533,-8.457157891476541],[117.63202436734215,-8.449303073768192],[117.90001834520777,-8.095681247594925]]],[[[122.90353722543611,-8.094234307490737],[122.75698286345632,-8.64980763106064],[121.25449059457013,-8.933666273639943],[119.9243909038096,-8.810417982623875],[119.92092858284613,-8.444858900591072],[120.71509199430757,-8.236964613480865],[121.34166873584658,-8.536739597206022],[122.00736453663043,-8.460620212440162],[122.90353722543611,-8.094234307490737]]],[[[108.62347863162894,-6.777673841990676],[110.53922732955331,-6.877357679881683],[110.75957563684594,-6.465186455921752],[112.61481123255638,-6.946035658397591],[112.97876834518812,-7.59421314863458],[114.47893517462117,-7.776527601760279],[115.70552697150109,-8.370806573116866],[114.56451134649652,-8.751816908404834],[113.4647335144609,-8.348947442257426],[112.55967247930103,-8.376180922075164],[111.52206139531248,-8.302128594600957],[110.58614953007432,-8.122604668819022],[109.4276672709552,-7.740664157749761],[108.69365522668133,-7.641600437046221],[108.27776329959632,-7.766657403192581],[106.45410200401615,-7.354899590690947],[106.28062422081231,-6.924899997590202],[105.36548628135554,-6.85141611087117],[106.05164594932707,-5.8959188777945],[107.2650085795402,-5.954985039904059],[108.0720910990747,-6.345762220895239],[108.48684614464926,-6.421984958525768],[108.62347863162894,-6.777673841990676]]],[[[134.72462446506668,-6.214400730009287],[134.21013390516893,-6.895237725454706],[134.112775506731,-6.142467136259014],[134.2903357280858,-5.783057549669039],[134.49962527886788,-5.445042006047899],[134.72700158095213,-5.73758228925216],[134.72462446506668,-6.214400730009287]]],[[[127.24921512258892,-3.45906503663889],[126.87492272349888,-3.79098276124958],[126.18380211802733,-3.607376397316556],[125.98903364471929,-3.177273451351325],[127.00065148326499,-3.12931772218441],[127.24921512258892,-3.45906503663889]]],[[[130.4713440288518,-3.09376433676762],[130.8348360535928,-3.858472181822762],[129.99054650280814,-3.446300957862817],[129.15524865124243,-3.362636813982249],[128.59068362845366,-3.428679294451257],[127.89889122936236,-3.393435967628193],[128.1358793478528,-2.843650404474914],[129.37099775606092,-2.802154229344552],[130.4713440288518,-3.09376433676762]]],[[[134.1433679546478,-1.151867364103595],[134.42262739475305,-2.769184665542383],[135.4576029806947,-3.367752780779114],[136.2933142437188,-2.30704233155609],[137.44073774632753,-1.703513278819372],[138.3297274110448,-1.70268645590265],[139.18492068904297,-2.051295668143638],[139.92668419816042,-2.409051608900284],[141.00021040259188,-2.600151055515624],[141.01705691951904,-5.859021905138022],[141.0338517600139,-9.117892754760419],[140.14341515519257,-8.297167657100957],[139.12776655492812,-8.096042982620942],[138.88147667862498,-8.380935153846096],[137.61447391169284,-8.411682631059762],[138.0390991558352,-7.597882175327356],[138.6686214540148,-7.320224704623072],[138.40791385310237,-6.232849216337484],[137.92783979711086,-5.393365573756],[135.98925011611348,-4.546543877789048],[135.16459760959972,-4.462931410340772],[133.6628804871979,-3.538853448097527],[133.3677047059468,-4.024818617370315],[132.98395551974735,-4.112978610860281],[132.756940952689,-3.74628264731713],[132.75378869031923,-3.311787204607072],[131.9898043153162,-2.820551039240456],[133.0668445171435,-2.460417982598443],[133.78003095920351,-2.47984832114021],[133.69621178602614,-2.214541517753688],[132.23237348849423,-2.212526136894326],[131.8362219585447,-1.617161960459597],[130.94283979708283,-1.432522067880797],[130.51955814018007,-0.937720228686075],[131.86753787651364,-0.695461114101818],[132.3801164084168,-0.369537855636977],[133.98554813042844,-0.780210463060442],[134.1433679546478,-1.151867364103595]]],[[[125.24050052297159,1.419836127117605],[124.43703535369737,0.427881171058971],[123.68550499887672,0.235593166500877],[122.72308312387288,0.431136786293337],[121.0567248881891,0.381217352699451],[120.18308312386276,0.23724681233422],[120.04086958219548,-0.519657891444851],[120.93590538949073,-1.408905938323372],[121.4758207540762,-0.955962009285116],[123.34056481332848,-0.615672702643081],[123.2583992859845,-1.076213067228338],[122.82271528533161,-0.930950616055881],[122.38852990121539,-1.516858005381124],[121.50827355355548,-1.904482924002423],[122.4545723816843,-3.186058444840882],[122.27189619353257,-3.529500013852697],[123.17096276254657,-4.683693129091708],[123.16233279835379,-5.340603936385961],[122.62851525277871,-5.634591159694494],[122.23639448454806,-5.282933037948283],[122.71956912647707,-4.46417164471579],[121.73823367725439,-4.8513314754465],[121.48946333220127,-4.574552504091216],[121.61917117725388,-4.188477878438674],[120.89818159391771,-3.602105401222829],[120.97238895068877,-2.62764291749491],[120.30545291552991,-2.931603692235726],[120.39004723519176,-4.097579034037224],[120.43071658740539,-5.528241062037779],[119.79654341031952,-5.673400160345651],[119.36690555224496,-5.379878024927805],[119.65360639860013,-4.459417412944958],[119.49883548388597,-3.49441171632651],[119.078344354327,-3.487021986508765],[118.7677689962529,-2.801999200047689],[119.18097374885869,-2.147103773612798],[119.32339399625508,-1.353147067880471],[119.82599897672586,0.154254462073496],[120.03570193896637,0.566477362465804],[120.8857792501677,1.309222723796836],[121.666816847827,1.013943589681077],[122.92756676645185,0.875192368977466],[124.07752241424285,0.917101955566139],[125.06598921112183,1.643259182131558],[125.24050052297159,1.419836127117605]]],[[[128.68824873262074,1.132385972494106],[128.63595218314137,0.258485826006179],[128.12016971243617,0.356412665199286],[127.96803429576887,-0.252077325037533],[128.37999881399972,-0.780003757331286],[128.10001590384232,-0.899996433112975],[127.69647464407504,-0.266598402511505],[127.39949018769377,1.011721503092573],[127.60051150930907,1.810690822757181],[127.93237755748751,2.174596258956555],[128.00415612194084,1.628531398928331],[128.59455936087548,1.540810655112864],[128.68824873262074,1.132385972494106]]],[[[117.87562706916603,1.827640692548911],[118.99674726773819,0.902219143066048],[117.81185835171779,0.784241848143722],[117.47833865770608,0.102474676917026],[117.52164350796662,-0.803723239753211],[116.56004845587952,-1.487660821136231],[116.53379682827519,-2.483517347832901],[116.14808393764864,-4.012726332214015],[116.0008577820491,-3.657037448749008],[114.86480309454454,-4.106984144714417],[114.46865156459509,-3.495703627133821],[113.75567182826413,-3.43916961020652],[113.25699425664757,-3.118775729996855],[112.06812625534067,-3.478392022316072],[111.70329064336002,-2.994442233902632],[111.04824018762824,-3.049425957861189],[110.223846063276,-2.934032484553484],[110.07093550012436,-1.592874037282414],[109.57194786991406,-1.314906507984489],[109.09187381392253,-0.459506524257051],[108.95265750532816,0.415375474444346],[109.06913618371404,1.341933905437642],[109.66326012577375,2.006466986494985],[109.83022667850886,1.338135687664192],[110.51406090702713,0.773131415200993],[111.15913781132659,0.976478176269509],[111.79754845586044,0.904441229654651],[112.38025190638368,1.410120957846758],[112.8598091980522,1.497790025229946],[113.80584964401956,1.217548732911041],[114.6213554220175,1.430688177898887],[115.13403730678523,2.821481838386219],[115.51907840379201,3.169238389494396],[115.86551720587677,4.306559149590157],[117.01521447150637,4.306094061699469],[117.88203494677019,4.137551377779488],[117.31323245653354,3.234428208830579],[118.04832970588538,2.287690131027361],[117.87562706916603,1.827640692548911]]],[[[105.81765506390936,-5.852355645372413],[104.71038414919151,-5.873284600450646],[103.86821333213074,-5.037314955264975],[102.58426069540693,-4.220258884298204],[102.15617313030103,-3.614146009946765],[101.39911339722508,-2.799777113459172],[100.90250288290017,-2.05026213949786],[100.14198082886062,-0.650347588710957],[99.26373986206025,0.183141587724663],[98.97001102091333,1.042882391764536],[98.60135135294311,1.823506577965617],[97.6995976094499,2.453183905442117],[97.1769421732499,3.30879059489861],[96.42401655475734,3.868859768077911],[95.38087609251347,4.970782172053673],[95.29302615761733,5.479820868344817],[95.93686282754176,5.439513251157109],[97.4848820332771,5.246320909034011],[98.36916914265569,4.268370266126368],[99.14255862833582,3.590349636240916],[99.69399783732243,3.174328518075157],[100.64143354696168,2.099381211755798],[101.65801232300734,2.083697414555189],[102.49827111207324,1.398700466310217],[103.07684044801303,0.561361395668854],[103.83839603069835,0.104541734208667],[103.43764529827497,-0.711945896002845],[104.01078860882402,-1.059211521004229],[104.3699914896849,-1.084843031421016],[104.53949018760218,-1.782371514496716],[104.88789269411402,-2.340425306816655],[105.622111444117,-2.42884368246807],[106.10859337771271,-3.06177662517895],[105.85744591677414,-4.305524997579724],[105.81765506390936,-5.852355645372413]]]]}},{"type":"Feature","properties":{"abbrev":"India","name":"India","name_long":"India","iso_a2":"IN","iso_a3":"IND","iso_n3":"356"},"geometry":{"type":"Polygon","coordinates":[[[77.83745079947457,35.494009507787766],[78.91226891471322,34.32193634697579],[78.81108646028574,33.50619802503242],[79.20889163606857,32.994394639613716],[79.17612877799553,32.48377981213771],[78.45844648632601,32.61816437431273],[78.73889448437401,31.515906073527063],[79.7213668151071,30.882714748654728],[81.11125613802932,30.183480943313402],[80.4767212259174,29.72986522065534],[80.08842451367627,28.79447011974014],[81.05720258985203,28.416095282499043],[81.99998742058497,27.925479234319994],[83.30424889519955,27.36450572357556],[84.6750179381738,27.234901231387536],[85.25177859898338,26.72619843190634],[86.02439293817918,26.63098460540857],[87.22747195836628,26.397898057556077],[88.06023766474982,26.41461538340249],[88.17480431514092,26.81040517832595],[88.04313276566123,27.445818589786825],[88.12044070836987,27.876541652939594],[88.73032596227856,28.086864732367516],[88.81424848832054,27.29931590423936],[88.83564253128938,27.098966376243762],[89.74452762243884,26.719402981059957],[90.37327477413407,26.87572418874288],[91.21751264848643,26.808648179628022],[92.03348351437509,26.83831045176356],[92.10371178585973,27.452614040633208],[91.69665652869668,27.77174184825166],[92.50311893104364,27.89687632904645],[93.41334760943268,28.640629380807226],[94.56599043170294,29.277438055939985],[95.40480228066464,29.03171662039213],[96.11767866413103,29.452802028922466],[96.58659061074749,28.830979519154344],[96.24883344928779,28.41103099213444],[97.32711388549004,28.26158274994634],[97.40256147663612,27.88253611908544],[97.0519885599681,27.69905894623315],[97.1339990580153,27.083773505149964],[96.41936567585097,27.264589341739224],[95.12476769407496,26.5735720891323],[95.1551534362626,26.001307277932085],[94.60324913938538,25.162495428970402],[94.55265791217164,24.675238348890332],[94.10674197792505,23.85074087167348],[93.3251876159428,24.078556423432204],[93.28632693885928,23.043658352139005],[93.06029422401463,22.70311066333557],[93.16612755734836,22.278459580977103],[92.67272098182556,22.041238918541254],[92.14603478390681,23.627498684172593],[91.86992760617132,23.624346421802784],[91.70647505083211,22.985263983649183],[91.15896325069971,23.50352692310439],[91.46772993364367,24.072639471934792],[91.91509280799443,24.13041372323711],[92.37620161333481,24.976692816664965],[91.79959598182207,25.147431748957317],[90.8722107279121,25.132600612889547],[89.92069258012185,25.26974986419218],[89.83248091019962,25.96508209889548],[89.35509402868729,26.014407253518073],[88.56304935094977,26.44652558034272],[88.2097892598025,25.76806570078271],[88.93155398962308,25.238692328384776],[88.30637251175602,24.866079413344206],[88.08442223506242,24.501657212821925],[88.69994022009092,24.23371491138856],[88.52976972855377,23.631141872649163],[88.87631188350309,22.879146429937826],[89.03196129756623,22.055708319582976],[88.88876590368542,21.690588487224748],[88.20849734899521,21.703171698487807],[86.97570438024027,21.49556163175521],[87.03316857294887,20.743307806882413],[86.49935102737378,20.151638495356607],[85.0602657409097,19.4785788029711],[83.94100589390001,18.302009792549725],[83.18921715691785,17.67122142177898],[82.19279218946592,17.016636053937813],[82.19124189649719,16.556664130107848],[81.69271935417748,16.310219224507904],[80.79199913933014,15.951972357644491],[80.32489586784388,15.899184882058348],[80.02506920768644,15.136414903214147],[80.2332735533904,13.835770778859981],[80.28629357292186,13.006260687710833],[79.8625468281285,12.056215318240888],[79.85799930208682,10.35727509199711],[79.340511509116,10.30885427493962],[78.88534549348918,9.546135972527722],[79.18971967968828,9.216543687370148],[78.2779407083305,8.933046779816934],[77.94116539908435,8.252959092639742],[77.53989790233794,7.965534776232333],[76.59297895702167,8.89927623131419],[76.13006147655108,10.299630031775521],[75.74646731964849,11.308250637248307],[75.39610110870957,11.781245022015824],[74.86481570831681,12.741935736537897],[74.61671715688354,13.99258291264968],[74.44385949086723,14.617221787977696],[73.5341992532334,15.99065216721496],[73.11990929554943,17.928570054592498],[72.82090945830865,19.208233547436166],[72.8244751321368,20.419503282141534],[72.6305334817454,21.356009426351008],[71.17527347197395,20.757441311114235],[70.4704586119451,20.877330634031384],[69.16413008003883,22.0892980005727],[69.64492760608239,22.450774644454338],[69.34959679553435,22.84317963306269],[68.1766451353734,23.69196503345671],[68.84259931831878,24.35913361256094],[71.04324018746823,24.3565239527302],[70.84469933460284,25.21510203704352],[70.28287316272558,25.72222870533983],[70.16892662952202,26.491871649678842],[69.51439293811312,26.940965684511372],[70.61649620960193,27.989196275335868],[71.77766564320032,27.913180243434525],[72.8237516620847,28.961591701772054],[73.45063846221743,29.97641347911987],[74.42138024282026,30.979814764931177],[74.40592898956501,31.69263947196528],[75.25864179881322,32.2711054550405],[74.45155927927871,32.7648996038055],[74.10429365427734,33.44147329358685],[73.74994835805195,34.31769887952785],[74.24020267120497,34.74888703057125],[75.75706098826834,34.50492259372132],[76.87172163280403,34.65354401299274],[77.83745079947457,35.494009507787766]]]}},{"type":"Feature","properties":{"abbrev":"Iran","name":"Iran","name_long":"Iran","iso_a2":"IR","iso_a3":"IRN","iso_n3":"364"},"geometry":{"type":"Polygon","coordinates":[[[53.92159793479556,37.19891836196126],[54.800303989486565,37.392420762678185],[55.51157840355191,37.96411713312317],[56.18037479027333,37.93512665460742],[56.61936608259282,38.121394354803485],[57.33043379092898,38.02922943781094],[58.4361544126782,37.522309475243794],[59.23476199731681,37.412987982730336],[60.37763797388387,36.52738312432837],[61.123070509694145,36.49159719496624],[61.21081709172574,35.650072333309225],[60.80319339380745,34.40410187431986],[60.52842980331158,33.676446031218006],[60.963700392506006,33.52883230237625],[60.536077915290775,32.98126882581157],[60.863654819588966,32.18291962333443],[60.94194461451113,31.548074652628753],[61.699314406180825,31.37950613049267],[61.781221551363444,30.735850328081234],[60.874248488208785,29.829238999952604],[61.36930870956494,29.303276272085924],[61.77186811711863,28.699333807890795],[62.72783043808598,28.25964488373539],[62.755425652929866,27.378923448184985],[63.233897739520295,27.21704702403071],[63.31663170761959,26.756532497661667],[61.87418745305655,26.239974880472104],[61.49736290878419,25.0782370061185],[59.61613406763084,25.380156561783778],[58.5257613462723,25.60996165618573],[57.397251417882394,25.73990204518364],[56.970765822177555,26.96610626882136],[56.492138706290206,27.143304755150197],[55.72371015811006,26.96463349050104],[54.71508955263727,26.480657863871514],[53.49309695823135,26.81236888275305],[52.48359785340961,27.580849107365495],[51.52076256694741,27.865689602158298],[50.85294803243954,28.814520575469384],[50.115008579311585,30.147772528599717],[49.576850213423995,29.985715236932407],[48.94133344909855,30.317090359004037],[48.567971225789755,29.926778265903522],[48.0145683123761,30.452456773392598],[48.004698113808324,30.985137437457244],[47.68528608581227,30.98485321707963],[47.8492037290421,31.70917593029867],[47.3346614927119,32.469155381799105],[46.10936160663932,33.017287299119005],[45.41669070819904,33.967797756479584],[45.64845950702809,34.748137722303014],[46.15178795755093,35.09325877536429],[46.0763403664048,35.67738332777549],[45.4206181170532,35.97754588474282],[44.77267,37.17045],[44.22575564960053,37.97158437758935],[44.421402622257546,38.28128123631454],[44.10922529478234,39.4281362981681],[44.79398969908195,39.71300263117705],[44.95268802265031,39.33576467544637],[45.45772179543877,38.87413910578306],[46.14362308124881,38.74120148371222],[46.50571984231797,38.770605373686294],[47.685079380083096,39.508363959301214],[48.06009524922524,39.58223541926246],[48.35552941263788,39.28876496027691],[48.01074425638648,38.79401479751452],[48.63437544128481,38.27037750910097],[48.88324913920249,38.32024526626262],[49.19961225769334,37.58287425388988],[50.14777143738462,37.37456655532134],[50.84235436381971,36.8728142359834],[52.264024692601424,36.7004216578577],[53.82578982932642,36.965030829408235],[53.92159793479556,37.19891836196126]]]}},{"type":"Feature","properties":{"abbrev":"Jord.","name":"Jordan","name_long":"Jordan","iso_a2":"JO","iso_a3":"JOR","iso_n3":"400"},"geometry":{"type":"Polygon","coordinates":[[[35.54566531753454,32.393992011030576],[35.71991824722275,32.709192409794866],[36.834062127435544,32.312937526980775],[38.792340529136084,33.378686428352225],[39.19546837744497,32.16100881604267],[39.00488569515255,32.01021698661498],[37.00216556168101,31.508412990844743],[37.998848911294374,30.50849986421313],[37.66811974462638,30.3386652694859],[37.503581984209035,30.003776150018403],[36.74052778498725,29.86528331147619],[36.50121422704358,29.5052536076987],[36.06894087092206,29.197494615184457],[34.95603722508426,29.35655467377884],[34.92260257339142,29.501326198844524],[35.420918409981965,31.100065822874356],[35.397560662586045,31.48908600516758],[35.5452519060762,31.78250478772084],[35.54566531753454,32.393992011030576]]]}},{"type":"Feature","properties":{"abbrev":"Isr.","name":"Israel","name_long":"Israel","iso_a2":"IL","iso_a3":"ISR","iso_n3":"376"},"geometry":{"type":"Polygon","coordinates":[[[35.71991824722275,32.709192409794866],[35.54566531753454,32.393992011030576],[35.183930291491436,32.53251068778894],[34.97464074070933,31.86658234305972],[35.22589155451242,31.754341132121766],[34.970506626125996,31.616778469360806],[34.92740848159457,31.353435370401414],[35.397560662586045,31.48908600516758],[35.420918409981965,31.100065822874356],[34.92260257339142,29.501326198844524],[34.26543338393568,31.219360866820153],[34.55637169773891,31.548823960896996],[34.48810713068136,31.60553884533732],[34.752587111151165,32.07292633720117],[34.95541710789677,32.82737641044638],[35.098457472480675,33.080539252244265],[35.126052687324545,33.09090037691878],[35.460709262846706,33.08904002535628],[35.55279666519081,33.26427480725802],[35.82110070165024,33.2774264592763],[35.836396925608625,32.86812327730851],[35.700797967274745,32.71601369885738],[35.71991824722275,32.709192409794866]]]}},{"type":"Feature","properties":{"abbrev":"Japan","name":"Japan","name_long":"Japan","iso_a2":"JP","iso_a3":"JPN","iso_n3":"392"},"geometry":{"type":"MultiPolygon","coordinates":[[[[134.63842817600388,34.14923371025642],[134.7663790223585,33.80633474378368],[134.20341596897086,33.20117788342964],[133.7929500672765,33.5219851750976],[133.28026818250888,33.28957042086495],[133.01485802625788,32.70456736910478],[132.3631148621927,32.98938202568137],[132.37117638563018,33.46364248304007],[132.9243725933148,34.06029857028204],[133.49296837782222,33.9446208765967],[133.90410607313638,34.36493113864262],[134.63842817600388,34.14923371025642]]],[[[140.9763875673053,37.14207428644016],[140.59976972876214,36.343983466124534],[140.77407433488264,35.84287710219024],[140.25327925024513,35.13811391859365],[138.97552778539622,34.66760000257611],[137.21759891169123,34.60628591566186],[135.7929830262689,33.46480520276663],[135.12098270074543,33.84907115328906],[135.07943484918272,34.59654490817482],[133.340316196832,34.37593821872076],[132.15677086805132,33.90493337659652],[130.98614464734348,33.88576142021628],[132.00003624891005,33.149992377244615],[131.33279015515737,31.450354519164843],[130.68631798718596,31.029579169228242],[130.20241987520498,31.418237616495418],[130.44767622286216,32.319474595665724],[129.8146916037189,32.61030955660439],[129.40846316947258,33.29605581311759],[130.35393517468466,33.6041507024417],[130.87845096244715,34.232742824840045],[131.88422936414392,34.74971385348791],[132.61767296766251,35.43339305270942],[134.6083008159778,35.73161774346582],[135.67753787652893,35.527134100886826],[136.72383060114245,37.30498423924038],[137.3906116070045,36.827390651998826],[138.85760216690628,37.82748464614346],[139.4264046571429,38.21596222589764],[140.0547900738121,39.438807481436385],[139.88337934789988,40.563312486323696],[140.30578250545372,41.19500519465956],[141.3689734234267,41.37855988216029],[141.91426313697048,39.99161611587868],[141.884600864835,39.180864569651504],[140.9594893739458,38.17400096287658],[140.9763875673053,37.14207428644016]]],[[[143.9101619813795,44.17409983985373],[144.61342654843963,43.960882880217525],[145.3208252300831,44.38473297787544],[145.54313724180278,43.262088324550604],[144.0596618999999,42.98835826270056],[143.18384972551732,41.9952147486992],[141.61149092017249,42.67879059505608],[141.06728641170665,41.58459381770799],[139.95510623592108,41.569555975911044],[139.81754357315995,42.5637588567744],[140.31208703019323,43.33327261003265],[141.38054894426003,43.388824774746496],[141.67195234595394,44.77212535255148],[141.967644891528,45.55148346616135],[143.14287031470982,44.510358384776964],[143.9101619813795,44.17409983985373]]]]}},{"type":"Feature","properties":{"abbrev":"Iraq","name":"Iraq","name_long":"Iraq","iso_a2":"IQ","iso_a3":"IRQ","iso_n3":"368"},"geometry":{"type":"Polygon","coordinates":[[[45.4206181170532,35.97754588474282],[46.0763403664048,35.67738332777549],[46.15178795755093,35.09325877536429],[45.64845950702809,34.748137722303014],[45.41669070819904,33.967797756479584],[46.10936160663932,33.017287299119005],[47.3346614927119,32.469155381799105],[47.8492037290421,31.70917593029867],[47.68528608581227,30.98485321707963],[48.004698113808324,30.985137437457244],[48.0145683123761,30.452456773392598],[48.567971225789755,29.926778265903522],[47.974519077349896,29.9758192001485],[47.30262210469096,30.05906993257072],[46.568713413281756,29.09902517345229],[44.70949873228474,29.178891099559383],[41.889980910007836,31.190008653278365],[40.399994337736246,31.889991766887935],[39.19546837744497,32.16100881604267],[38.792340529136084,33.378686428352225],[41.006158888519934,34.41937226006212],[41.383965285005814,35.628316555314356],[41.289707472505455,36.35881460219227],[41.83706424334096,36.605853786763575],[42.34959109881177,37.2298725449041],[42.77912560402182,37.385263576805755],[43.9422587420473,37.25622752537295],[44.29345177590286,37.0015143906063],[44.772699008977696,37.170444647768434],[45.4206181170532,35.97754588474282]]]}},{"type":"Feature","properties":{"abbrev":"Kaz.","name":"Kazakhstan","name_long":"Kazakhstan","iso_a2":"KZ","iso_a3":"KAZ","iso_n3":"398"},"geometry":{"type":"Polygon","coordinates":[[[70.96231489449929,42.26615428320554],[70.3889648782208,42.081307684897524],[69.07002729683524,41.38424428971234],[68.63248294462005,40.66868073176687],[68.25989586779565,40.6623245305949],[67.98585574735182,41.135990708982206],[66.7140470722166,41.168443508461564],[66.51064863471572,41.987644151368556],[66.02339155463562,41.99464630794404],[66.0980123228652,42.99766002051308],[64.90082441595933,43.728080552742654],[63.185786981056594,43.650074978198006],[62.01330040878628,43.50447663021566],[61.0583199400325,44.40581696225058],[60.23997195825847,44.784036770194746],[58.6899890480958,45.50001373959873],[58.50312706892844,45.586804307632974],[55.92891727074118,44.99585846615918],[55.968191359283026,41.30864166926938],[55.45525109235381,41.25985911718584],[54.75534549339267,42.04397146256662],[54.07941775901497,42.32410940202084],[52.94429324729174,42.11603424739758],[52.50245975119628,41.78331553808647],[52.44633914572722,42.027150783855575],[52.692112257707265,42.44389537207337],[52.50142622255032,42.7922978785852],[51.342427199108215,43.132974758469345],[50.89129194520024,44.03103363705378],[50.339129266161365,44.284015611338475],[50.305642938036264,44.609835516938915],[51.278503452363225,44.51485423438646],[51.316899041556034,45.2459982366679],[52.16738976421573,45.40839142514511],[53.0408764992452,45.25904653582177],[53.220865512917726,46.234645901059935],[53.042736850807785,46.853006089864486],[52.04202273947561,46.80463694923924],[51.191945428274266,47.048704738953916],[50.03408328634248,46.60898997658222],[49.10116000000011,46.399330000000134],[48.593241001180495,46.56103424741547],[48.694733514201744,47.07562816017793],[48.05725304544927,47.74375275327952],[47.31523115417024,47.715847479841955],[46.46644575377627,48.39415233010493],[47.043671502476506,49.152038886097614],[46.75159630716274,49.35600576435377],[47.5494804217493,50.454698391311126],[48.57784142435752,49.87475962991567],[48.70238162618102,50.60512848571284],[50.76664839051215,51.6927623561599],[52.32872358583097,51.718652248738124],[54.532878452376224,51.02623973245932],[55.716940545479815,50.62171662047853],[56.777961053296565,51.04355133727705],[58.36329064314674,51.06365346943858],[59.6422823423706,50.545442206415714],[59.93280724471549,50.842194118851864],[61.337424350840934,50.79907013610426],[61.58800337102417,51.272658799843214],[59.96753380721554,51.9604204372157],[60.92726850774027,52.44754832621504],[60.73999311711459,52.71998647725775],[61.6999861998006,52.97999644633427],[60.97806644068316,53.66499339457914],[61.436591424409066,54.00626455343479],[65.17853356309593,54.35422781027211],[65.666875848254,54.60126699484345],[68.16910037625883,54.97039175070432],[69.06816694527288,55.38525014914353],[70.86526655465514,55.169733588270105],[71.18013105660941,54.133285224008254],[72.22415001820218,54.376655381886735],[73.5085160663844,54.035616766976595],[73.42567874542043,53.489810289109755],[74.38484500519007,53.54686107036008],[76.89110029491343,54.49052440044193],[76.52517947785473,54.177003485727134],[77.80091556184425,53.404414984747575],[80.03555952344169,50.86475088154725],[80.56844689323549,51.38833649352847],[81.94598554883993,50.81219594990637],[83.38300377801238,51.069182847693924],[83.93511478061885,50.88924551045358],[84.41637739455308,50.311399644565824],[85.11555952346203,50.11730296487763],[85.54126997268247,49.69285858824816],[86.82935672398963,49.82667470966817],[87.35997033076268,49.21498078062916],[86.59877648310339,48.54918162698061],[85.7682328633083,48.45575063739698],[85.72048383987072,47.45296946877312],[85.16429039911338,47.00095571551611],[83.18048383986047,47.330031236350855],[82.45892581576913,45.539649563166506],[81.94707075391813,45.31702749285324],[79.96610639844141,44.91751699480466],[80.86620649610137,43.18036204688104],[80.1801501809943,42.92006785742694],[80.25999026888536,42.349999294599115],[79.64364546094015,42.496682847659656],[79.1421773619798,42.856092434249604],[77.6583919615832,42.960685533208334],[76.00035363149857,42.98802236589063],[75.6369649596221,42.87789988867678],[74.21286583852259,43.29833934180351],[73.64530358266092,43.09127187760987],[73.48975752146237,42.50089447689129],[71.84463829945065,42.845395412765185],[71.18628055205227,42.70429291439223],[70.96231489449929,42.26615428320554]]]}},{"type":"Feature","properties":{"abbrev":"Kgz.","name":"Kyrgyzstan","name_long":"Kyrgyzstan","iso_a2":"KG","iso_a3":"KGZ","iso_n3":"417"},"geometry":{"type":"Polygon","coordinates":[[[70.96231489449914,42.26615428320549],[71.18628055205212,42.70429291439214],[71.8446382994506,42.84539541276509],[73.48975752146237,42.50089447689132],[73.64530358266092,43.09127187760982],[74.21286583852256,43.29833934180337],[75.636964959622,42.87789988867668],[76.00035363149846,42.98802236589067],[77.6583919615832,42.96068553320826],[79.14217736197978,42.85609243424952],[79.64364546094012,42.49668284765953],[80.2599902688853,42.34999929459906],[80.11943037305139,42.12394074153825],[78.54366092317531,41.58224254003869],[78.18719689322597,41.18531586360481],[76.90448449087708,41.06648590754964],[76.52636803579745,40.42794607193512],[75.4678279967307,40.56207225194867],[74.77686242055606,40.36642527929163],[73.8222436868283,39.893973497063186],[73.96001305531843,39.660008449861735],[73.6753792662548,39.4312368841056],[71.784693637992,39.27946320246437],[70.54916181832562,39.6041979029865],[69.46488691597753,39.5266832545487],[69.55960981636852,40.10321137141298],[70.64801883329997,39.93575389257117],[71.01419803252017,40.24436554621823],[71.77487511585656,40.14584442805378],[73.05541710804917,40.866033026689465],[71.87011478057047,41.392900092121266],[71.1578585142916,41.14358714452912],[70.42002241402821,41.51999827734314],[71.25924767444822,42.16771067968946],[70.96231489449914,42.26615428320549]]]}},{"type":"Feature","properties":{"abbrev":"S.K.","name":"Korea","name_long":"Republic of Korea","iso_a2":"KR","iso_a3":"KOR","iso_n3":"410"},"geometry":{"type":"Polygon","coordinates":[[[128.34971642467661,38.61224294692785],[129.21291954968007,37.43239248305595],[129.46044966035817,36.78418915460282],[129.4683044780665,35.63214061130395],[129.0913765809296,35.082484239231434],[128.1858504578791,34.89037710218639],[127.38651940318839,34.47567373304412],[126.48574751190874,34.39004588473648],[126.37391971242913,34.934560451795946],[126.5592313986278,35.6845405136479],[126.11739790253229,36.72548472751926],[126.86014326386339,36.893924058574626],[126.17475874237624,37.74968577732804],[126.23733890188176,37.84037791600028],[126.68371992401892,37.80477285415118],[127.07330854706737,38.2561148137884],[127.780035435091,38.30453563084589],[128.20574588431145,38.37039724380189],[128.34971642467661,38.61224294692785]]]}},{"type":"Feature","properties":{"abbrev":"Camb.","name":"Cambodia","name_long":"Cambodia","iso_a2":"KH","iso_a3":"KHM","iso_n3":"116"},"geometry":{"type":"Polygon","coordinates":[[[103.4972799011397,10.632555446815928],[103.09068973186724,11.153660590047165],[102.5849324890267,12.186594956913282],[102.348099399833,13.394247341358223],[102.98842207236163,14.225721136934467],[104.28141808473661,14.416743068901367],[105.21877689007887,14.273211778210694],[106.04394616091552,13.881091009979954],[106.49637332563087,14.570583807834282],[107.38272749230109,14.202440904186972],[107.61454796756243,13.535530707244206],[107.49140302941089,12.337205918827946],[105.81052371625313,11.567614650921227],[106.24967003786946,10.961811835163587],[105.19991499229235,10.889309800658097],[104.33433475140347,10.48654368737523],[103.4972799011397,10.632555446815928]]]}},{"type":"Feature","properties":{"abbrev":"Kwt.","name":"Kuwait","name_long":"Kuwait","iso_a2":"KW","iso_a3":"KWT","iso_n3":"414"},"geometry":{"type":"Polygon","coordinates":[[[47.974519077349896,29.9758192001485],[48.18318851094448,29.534476630159766],[48.09394331237642,29.306299343375002],[48.416094191283946,28.55200429942667],[47.708850538937384,28.526062730416143],[47.45982181172283,29.002519436147224],[46.568713413281756,29.09902517345229],[47.30262210469096,30.05906993257072],[47.974519077349896,29.9758192001485]]]}},{"type":"Feature","properties":{"abbrev":"Laos","name":"Lao PDR","name_long":"Lao PDR","iso_a2":"LA","iso_a3":"LAO","iso_n3":"418"},"geometry":{"type":"Polygon","coordinates":[[[105.21877689007887,14.273211778210694],[105.54433841351769,14.723933620660416],[105.58903852745016,15.570316066952858],[104.7793205098688,16.44186493577145],[104.7169470560925,17.42885895433008],[103.95647667848529,18.24095408779688],[103.20019209189373,18.309632066312773],[102.9987056823877,17.9616946476916],[102.41300499879162,17.932781683824288],[102.11359175009248,18.109101670804165],[101.05954756063517,17.51249725999449],[101.03593143107777,18.408928330961615],[101.2820146016517,19.462584947176765],[100.60629357300316,19.508344427971224],[100.54888105672688,20.109237982661128],[100.11598758341783,20.417849636308187],[100.32910119018952,20.786121731036232],[101.18000532430754,21.436572984294024],[101.27002566935997,21.201651923095184],[101.80311974488292,21.17436676684507],[101.65201785686152,22.318198757409547],[102.17043582561358,22.464753119389304],[102.75489627483466,21.675137233969465],[103.20386111858645,20.766562201413745],[104.43500044150805,20.75873322192153],[104.8225736836971,19.886641750563882],[104.18338789267894,19.62466807706022],[103.8965320170267,19.265180975821806],[105.09459842328152,18.66697459561108],[105.92576216026403,17.48531545660896],[106.55600792849569,16.604283962464805],[107.3127059265456,15.90853831630318],[107.5645251811039,15.202173163305558],[107.38272749230109,14.202440904186972],[106.49637332563087,14.570583807834282],[106.04394616091552,13.881091009979954],[105.21877689007887,14.273211778210694]]]}},{"type":"Feature","properties":{"abbrev":"Leb.","name":"Lebanon","name_long":"Lebanon","iso_a2":"LB","iso_a3":"LBN","iso_n3":"422"},"geometry":{"type":"Polygon","coordinates":[[[35.82110070165024,33.2774264592763],[35.55279666519081,33.26427480725802],[35.460709262846706,33.08904002535628],[35.126052687324545,33.09090037691878],[35.48220665868013,33.90545014091944],[35.9795923194894,34.61005829521913],[35.99840254084364,34.644914048800004],[36.4481942075121,34.59393524834407],[36.61175011571589,34.201788641897174],[36.066460402172055,33.82491242119255],[35.82110070165024,33.2774264592763]]]}},{"type":"Feature","properties":{"abbrev":"Sri L.","name":"Sri Lanka","name_long":"Sri Lanka","iso_a2":"LK","iso_a3":"LKA","iso_n3":"144"},"geometry":{"type":"Polygon","coordinates":[[[81.7879590188914,7.523055324733164],[81.63732221876059,6.481775214051921],[81.21801964714433,6.197141424988288],[80.34835696810441,5.968369859232155],[79.87246870312853,6.76346344647493],[79.69516686393513,8.200843410673386],[80.14780073437964,9.824077663609557],[80.83881798698656,9.268426825391188],[81.30431928907177,8.56420624433369],[81.7879590188914,7.523055324733164]]]}},{"type":"Feature","properties":{"abbrev":"Myan.","name":"Myanmar","name_long":"Myanmar","iso_a2":"MM","iso_a3":"MMR","iso_n3":"104"},"geometry":{"type":"Polygon","coordinates":[[[99.54330936075931,20.186597601802063],[98.95967573445488,19.752980658440947],[98.25372399291561,19.708203029860044],[97.7977828308044,18.627080389881755],[97.37589643757354,18.445437730375815],[97.85912275593486,17.567946071843664],[98.49376102091135,16.83783559820793],[98.90334842325676,16.177824204976115],[98.53737592976572,15.308497422746084],[98.1920740091914,15.12370250087035],[98.43081912637987,14.622027696180835],[99.09775516153876,13.827502549693278],[99.21201175333609,13.269293728076464],[99.19635379435167,12.80474843998867],[99.58728600463972,11.892762762901697],[99.03812055867398,10.960545762572437],[98.55355065307305,9.932959906448545],[98.45717410684871,10.67526601810515],[98.76454552612077,11.441291612183749],[98.42833865762985,12.032986761925683],[98.50957400919268,13.122377631070677],[98.1036039571077,13.640459703012851],[97.77773237507517,14.837285874892642],[97.59707156778276,16.10056793869977],[97.1645398294998,16.928734442609336],[96.505768670643,16.42724050543285],[95.3693522481124,15.7143899601826],[94.80840457558412,15.80345429123764],[94.18880415240454,16.037936102762018],[94.53348595579135,17.277240301985728],[94.32481652219674,18.2135139022499],[93.54098839719364,19.36649262133002],[93.66325483599621,19.726961574781996],[93.07827762245219,19.855144965081976],[92.36855350135562,20.670883287025347],[92.30323449093868,21.47548533780982],[92.65225711463799,21.324047552978485],[92.67272098182556,22.041238918541254],[93.16612755734836,22.278459580977103],[93.06029422401463,22.70311066333557],[93.28632693885928,23.043658352139005],[93.3251876159428,24.078556423432204],[94.10674197792505,23.85074087167348],[94.55265791217164,24.675238348890332],[94.60324913938538,25.162495428970402],[95.1551534362626,26.001307277932085],[95.12476769407496,26.5735720891323],[96.41936567585097,27.264589341739224],[97.1339990580153,27.083773505149964],[97.0519885599681,27.69905894623315],[97.40256147663612,27.88253611908544],[97.32711388549004,28.26158274994634],[97.91198774616944,28.335945136014345],[98.2462309102333,27.74722138112918],[98.68269005737046,27.50881216075062],[98.71209394734451,26.743535874940264],[98.67183800658916,25.918702500913525],[97.72460900267914,25.083637193293],[97.60471967976198,23.897404690033042],[98.66026248575577,24.063286037689966],[98.89874922078276,23.14272207284253],[99.5319922220874,22.94903880461258],[99.24089887898725,22.11831431730458],[99.98348921102149,21.7429367131364],[100.41653771362738,21.558839423096614],[101.15003299357825,21.84998444262902],[101.18000532430754,21.436572984294024],[100.32910119018952,20.786121731036232],[100.11598758341783,20.417849636308187],[99.54330936075931,20.186597601802063]]]}},{"type":"Feature","properties":{"abbrev":"Mong.","name":"Mongolia","name_long":"Mongolia","iso_a2":"MN","iso_a3":"MNG","iso_n3":"496"},"geometry":{"type":"Polygon","coordinates":[[[87.7512642760767,49.29719798440548],[88.80556684769552,49.47052073831242],[90.71366743364067,50.33181183532109],[92.23471154171968,50.80217072204172],[93.10421919146269,50.49529022887643],[94.14756635943561,50.48053660745709],[94.81594933469873,50.01343333597085],[95.81402794798399,49.977466539095715],[97.25972781778141,49.72606069599574],[98.23176150919156,50.422400621128745],[97.8257397806743,51.01099518493318],[98.86149051310034,52.047366034546684],[99.98173221232354,51.63400625264399],[100.88948042196262,51.51685578063832],[102.06522260946733,51.259920559283124],[102.25590864462431,50.51056061461868],[103.67654544476022,50.089966132195116],[104.6215523620817,50.275329494826074],[105.88659142458675,50.406019192092224],[106.88880415245534,50.27429596618023],[107.86817589725094,49.793705145865815],[108.47516727095127,49.28254771585074],[109.40244917199666,49.29296051695755],[110.66201053267876,49.13012807880587],[111.58123091028662,49.37796824807769],[112.89773969935439,49.54356537535699],[114.36245649623527,50.24830272073741],[114.96210981655018,50.140247300815126],[115.48569542853141,49.805177313834605],[116.67880089728618,49.88853139912139],[116.19180219936757,49.134598090199106],[115.48528201707305,48.13538259540344],[115.74283735561578,47.72654450132629],[116.30895267137323,47.85341014260284],[117.29550744025741,47.69770905210743],[118.06414269416672,48.06673045510368],[118.86657433479495,47.74706004494617],[119.7728239278975,47.048058783550125],[119.66326989143874,46.69267995867892],[118.87432579963873,46.80541209572365],[117.42170128791419,46.67273285581426],[116.71786828009886,46.38820241961521],[115.98509647020008,45.727235012386004],[114.46033165899607,45.339816799493825],[113.46390669154417,44.80889313412711],[112.43606245325881,45.01164561622429],[111.87330610560029,45.10207937273506],[111.34837690637946,44.45744171811009],[111.66773725794323,44.07317576758771],[111.82958784388137,43.743118394539515],[111.12968224492022,43.40683401140015],[110.41210330611528,42.87123362891103],[109.24359581913146,42.5194463160841],[107.74477257693795,42.48151581478187],[106.12931562706169,42.13432770442891],[104.96499393109347,41.59740957291635],[104.52228193564899,41.908346666016556],[103.31227827353482,41.9074681666676],[101.83304039917994,42.51487295182628],[100.84586551310827,42.66380442969145],[99.51581749878004,42.52469147396172],[97.45175744017801,42.74888967546002],[96.34939578652781,42.725635280928685],[95.76245486855669,43.319449164394605],[95.30687544147153,44.24133087826547],[94.68892866412533,44.352331854828414],[93.4807336771413,44.975472113619965],[92.13389082231822,45.11507599545646],[90.9455395853343,45.28607330991028],[90.58576826371828,45.71971609148753],[90.97080936072501,46.88814606382293],[90.28082563676392,47.69354909930793],[88.85429772334676,48.06908173277296],[88.01383222855173,48.599462795600616],[87.7512642760767,49.29719798440548]]]}},{"type":"Feature","properties":{"abbrev":"Malay.","name":"Malaysia","name_long":"Malaysia","iso_a2":"MY","iso_a3":"MYS","iso_n3":"458"},"geometry":{"type":"MultiPolygon","coordinates":[[[[101.07551557821333,6.204867051615892],[101.15421878459384,5.691384182147715],[101.81428185425804,5.810808417174228],[102.14118696493645,6.221636053894656],[102.37114708863524,6.12820506431096],[102.9617053568667,5.524495144061078],[103.38121463421217,4.855001125503748],[103.4385754740562,4.181605536308382],[103.33212202353488,3.726697902842971],[103.42942874554055,3.38286876058902],[103.50244754436889,2.791018581550205],[103.85467410687036,2.515454006353763],[104.24793175661151,1.631141058759056],[104.22881147666354,1.293048000489534],[103.51970747275443,1.226333726400682],[102.57361535035479,1.967115383304744],[101.39063846232918,2.760813706875624],[101.27353966675585,3.270291652841181],[100.6954354187067,3.93913971599487],[100.55740766805509,4.76728038168828],[100.19670617065773,5.31249258058368],[100.30626020711652,6.040561835143876],[100.08575687052709,6.46448944745029],[100.25959638875692,6.642824815289572],[101.07551557821333,6.204867051615892]]],[[[118.61832075406485,4.478202419447541],[117.88203494677019,4.137551377779488],[117.01521447150637,4.306094061699469],[115.86551720587677,4.306559149590157],[115.51907840379201,3.169238389494396],[115.13403730678523,2.821481838386219],[114.6213554220175,1.430688177898887],[113.80584964401956,1.217548732911041],[112.8598091980522,1.497790025229946],[112.38025190638368,1.410120957846758],[111.79754845586044,0.904441229654651],[111.15913781132659,0.976478176269509],[110.51406090702713,0.773131415200993],[109.83022667850886,1.338135687664192],[109.66326012577375,2.006466986494985],[110.39613528853707,1.663774725751395],[111.1688529805975,1.850636704918784],[111.3700810079421,2.697303371588873],[111.79692833867287,2.885896511238073],[112.99561486211527,3.102394924324869],[113.71293541875873,3.893509426281128],[114.20401655482843,4.52587392823682],[114.65959598191355,4.00763682699781],[114.8695573263154,4.348313706881952],[115.34746097215069,4.316636053887009],[115.40570031134362,4.955227565933825],[115.45071048386981,5.447729803891561],[116.22074100145099,6.143191229675621],[116.72510298061978,6.924771429873998],[117.12962609260049,6.928052883324567],[117.64339318244633,6.422166449403306],[117.68907514859237,5.987490139180181],[118.3476912781522,5.708695786965464],[119.18190392463994,5.407835598162251],[119.11069380094172,5.016128241389865],[118.43972700406411,4.96651886638962],[118.61832075406485,4.478202419447541]]]]}},{"type":"Feature","properties":{"abbrev":"Nepal","name":"Nepal","name_long":"Nepal","iso_a2":"NP","iso_a3":"NPL","iso_n3":"524"},"geometry":{"type":"Polygon","coordinates":[[[88.12044070836987,27.876541652939594],[88.04313276566123,27.445818589786825],[88.17480431514092,26.81040517832595],[88.06023766474982,26.41461538340249],[87.22747195836628,26.397898057556077],[86.02439293817918,26.63098460540857],[85.25177859898338,26.72619843190634],[84.6750179381738,27.234901231387536],[83.30424889519955,27.36450572357556],[81.99998742058497,27.925479234319994],[81.05720258985203,28.416095282499043],[80.08842451367627,28.79447011974014],[80.4767212259174,29.72986522065534],[81.11125613802932,30.183480943313402],[81.52580447787474,30.42271698660863],[82.32751264845088,30.115268052688133],[83.33711510613719,29.463731594352193],[83.89899295444673,29.320226141877658],[84.23457970575015,28.839893703724698],[85.01163821812304,28.642773952747344],[85.82331994013151,28.203575954698703],[86.9545170430006,27.974261786403517],[88.12044070836987,27.876541652939594]]]}},{"type":"Feature","properties":{"abbrev":"Oman","name":"Oman","name_long":"Oman","iso_a2":"OM","iso_a3":"OMN","iso_n3":"512"},"geometry":{"type":"MultiPolygon","coordinates":[[[[58.86114139184659,21.114034532144302],[58.48798587426696,20.42898590746711],[58.034318475176605,20.48143748624335],[57.82637251163411,20.24300242764863],[57.665762160070955,19.736004950433113],[57.788700392493375,19.06757029873765],[57.69439090356068,18.944709580963803],[57.234263950433814,18.947991034414258],[56.609650913321985,18.57426707607948],[56.512189162019496,18.087113348863937],[56.28352094912801,17.87606679938395],[55.6614917336307,17.88412832282154],[55.2699394061552,17.632309068263197],[55.274900343655105,17.228354397037663],[54.79100223167413,16.950696926333364],[54.239252964093765,17.044980577049984],[53.570508253804604,16.707662665264678],[53.10857262554751,16.65105113368898],[52.78218427919207,17.349742336491232],[52.00000980002224,19.000003363516072],[54.99998172386242,19.99999400479612],[55.66665937685988,22.00000112557231],[55.2083410988632,22.70832998299701],[55.234489373602884,23.11099274341535],[55.5258410988645,23.524869289640918],[55.52863162620829,23.933604030853502],[55.98121382022052,24.130542914317854],[55.80411868675625,24.269604193615294],[55.886232537668064,24.920830593357493],[56.396847365144,24.924732163995515],[56.84514041527606,24.241673081961494],[57.40345258975744,23.87859446867884],[58.13694786970834,23.74793060962884],[58.72921146020544,23.565667832935418],[59.18050174341036,22.99239533130546],[59.45009769067703,22.6602709009656],[59.80806033716286,22.533611965418203],[59.8061483091681,22.31052480721419],[59.44219119653641,21.714540513592084],[59.282407667889885,21.433885809814882],[58.86114139184659,21.114034532144302]]],[[[56.39142133975341,25.89599070892126],[56.26104170108093,25.71460643157675],[56.07082075381456,26.05546417897395],[56.36201744977936,26.395934353128947],[56.48567915225382,26.309117946878672],[56.39142133975341,25.89599070892126]]]]}},{"type":"Feature","properties":{"abbrev":"Pak.","name":"Pakistan","name_long":"Pakistan","iso_a2":"PK","iso_a3":"PAK","iso_n3":"586"},"geometry":{"type":"Polygon","coordinates":[[[75.15802778514092,37.13303091078912],[75.89689741405013,36.666806138651836],[76.19284834178569,35.89840342868782],[77.83745079947457,35.494009507787766],[76.87172163280403,34.65354401299274],[75.75706098826834,34.50492259372132],[74.24020267120497,34.74888703057125],[73.74994835805195,34.31769887952785],[74.10429365427734,33.44147329358685],[74.45155927927871,32.7648996038055],[75.25864179881322,32.2711054550405],[74.40592898956501,31.69263947196528],[74.42138024282026,30.979814764931177],[73.45063846221743,29.97641347911987],[72.8237516620847,28.961591701772054],[71.77766564320032,27.913180243434525],[70.61649620960193,27.989196275335868],[69.51439293811312,26.940965684511372],[70.16892662952202,26.491871649678842],[70.28287316272558,25.72222870533983],[70.84469933460284,25.21510203704352],[71.04324018746823,24.3565239527302],[68.84259931831878,24.35913361256094],[68.1766451353734,23.69196503345671],[67.44366661974547,23.94484365487699],[67.14544192898907,24.663611151624647],[66.37282758979326,25.425140896093847],[64.53040774929113,25.23703868255143],[62.9057007180346,25.21840932871021],[61.49736290878419,25.0782370061185],[61.87418745305655,26.239974880472104],[63.31663170761959,26.756532497661667],[63.233897739520295,27.21704702403071],[62.755425652929866,27.378923448184985],[62.72783043808598,28.25964488373539],[61.77186811711863,28.699333807890795],[61.36930870956494,29.303276272085924],[60.874248488208785,29.829238999952604],[62.54985680527278,29.31857249604431],[63.55026085801117,29.468330796826162],[64.14800215033125,29.340819200145972],[64.35041873561852,29.560030625928093],[65.0468620136161,29.472180691031905],[66.34647260932442,29.887943427036177],[66.38145755398602,30.73889923758645],[66.93889122911847,31.304911200479353],[67.68339358914747,31.30315420178142],[67.79268924344478,31.58293040620963],[68.55693200060932,31.713310044882018],[68.92667687365767,31.620189113892064],[69.31776411324255,31.90141225842444],[69.26252200712256,32.5019440780883],[69.68714725126485,33.105498969041236],[70.3235941913716,33.35853261975839],[69.9305432473596,34.02012014417511],[70.8818030129884,33.98885590263851],[71.15677330921346,34.34891144463215],[71.11501875192162,34.733125718722235],[71.6130762063507,35.153203436822864],[71.49876793812109,35.650563259416],[71.26234826038575,36.074387518857804],[71.84629194528392,36.50994232842986],[72.92002485544447,36.72000702569632],[74.06755171091783,36.83617564548845],[74.57589277537298,37.02084137628346],[75.15802778514092,37.13303091078912]]]}},{"type":"Feature","properties":{"abbrev":"Phil.","name":"Philippines","name_long":"Philippines","iso_a2":"PH","iso_a3":"PHL","iso_n3":"608"},"geometry":{"type":"MultiPolygon","coordinates":[[[[126.37681359263748,8.414706325713354],[126.4785128113879,7.750354112168978],[126.53742394420063,7.189380601424574],[126.19677290253256,6.27429433840004],[125.83142052622911,7.293715318221857],[125.3638521668523,6.786485297060992],[125.68316084198372,6.049656887227258],[125.39651167206064,5.58100332277229],[124.21978763234236,6.161355495626182],[123.93871951710695,6.885135606306122],[124.24366214406135,7.360610459823661],[123.61021243702757,7.833527329942754],[123.2960714051252,7.418875637232787],[122.82550581267542,7.457374579290217],[122.08549930225577,6.899424139834849],[121.91992801319263,7.192119452336072],[122.31235884001714,8.034962063016508],[122.94239790251966,8.316236883981174],[123.48768761606352,8.693009751821194],[123.84115441293984,8.240324204944386],[124.60146976125023,8.514157619659017],[124.76461225799564,8.96040945071546],[125.47139082245157,8.986996975129642],[125.41211795461278,9.760334784377548],[126.22271447154318,9.28607432701885],[126.3066369975851,8.782487494334575],[126.37681359263748,8.414706325713354]]],[[[123.98243777882583,10.278778591345812],[123.62318322153278,9.950090643753299],[123.30992068897936,9.318268744336676],[122.99588300994164,9.0221886255204],[122.38005496631948,9.713360907424203],[122.5860889018671,9.981044826696104],[122.83708133350873,10.261156927934238],[122.94741051645192,10.881868394408029],[123.49884972543848,10.940624497923949],[123.33777428598475,10.267383938025446],[124.07793582570125,11.23272553145371],[123.98243777882583,10.278778591345812]]],[[[118.50458092659035,9.31638255455809],[117.1742745301007,8.367499904814665],[117.66447716682138,9.066888739452935],[118.38691369026175,9.684499619989225],[118.98734215706108,10.376292019080509],[119.51149620979756,11.369668077027214],[119.68967654833992,10.554291490109875],[119.029458449379,10.003653265823871],[118.50458092659035,9.31638255455809]]],[[[121.88354780485913,11.89175507247198],[122.48382124236147,11.582187404827508],[123.12021650603597,11.58366018314787],[123.10083784392647,11.16593374271649],[122.6377136577267,10.741308498574227],[122.00261030485957,10.441016750526087],[121.96736697803655,10.905691229694623],[122.03837039600555,11.41584096928004],[121.88354780485913,11.89175507247198]]],[[[125.50255171112352,12.162694606978349],[125.78346479706218,11.046121934447768],[125.01188398651229,11.31145457605038],[125.03276126515814,10.975816148314706],[125.27744917206027,10.358722032101312],[124.80181928924573,10.134678859899893],[124.76016808481849,10.837995103392302],[124.45910119028606,10.889929917845635],[124.30252160044172,11.495370998577227],[124.8910128113816,11.415582587118593],[124.87799035044398,11.79418996830499],[124.26676150929572,12.557760931849685],[125.22711632700785,12.535720933477194],[125.50255171112352,12.162694606978349]]],[[[121.52739383350351,13.06959015548452],[121.26219038298157,12.205560207564403],[120.83389611214656,12.70449616134242],[120.3234363139675,13.46641347905387],[121.18012820850217,13.429697373910443],[121.52739383350351,13.06959015548452]]],[[[121.32130822152358,18.504064642811016],[121.9376013530364,18.218552354398383],[122.24600630095429,18.478949896717097],[122.336956821788,18.224882717354177],[122.1742794129332,17.810282701076375],[122.51565392465336,17.093504746971973],[122.2523108256939,16.262444362854126],[121.66278608610828,15.931017564350128],[121.5050696147534,15.124813544164622],[121.72882856657728,14.328376369682246],[122.25892540902734,14.218202216035976],[122.70127566944566,14.33654124598442],[123.95029503794026,13.78213064214107],[123.85510704965863,13.237771104378467],[124.1812886902849,12.997527370653472],[124.07741906137825,12.536676947474575],[123.29803510955227,13.027525539598981],[122.92865197152993,13.552919826710408],[122.67135501514869,13.185836289925135],[122.03464969288055,13.784481919810347],[121.1263847189186,13.63668732345556],[120.62863732308331,13.857655747935652],[120.67938357959385,14.271015529838323],[120.99181928923055,14.525392767795083],[120.69333621631272,14.756670640517285],[120.564145135583,14.396279201713822],[120.0704285014664,14.970869452367097],[119.92092858284613,15.406346747290739],[119.88377322802826,16.363704331929966],[120.28648766487882,16.03462881109533],[120.39004723519176,17.59908112229951],[120.71586714079191,18.50522736253754],[121.32130822152358,18.504064642811016]]]]}},{"type":"Feature","properties":{"abbrev":"N.K.","name":"Dem. Rep. Korea","name_long":"Dem. Rep. Korea","iso_a2":"KP","iso_a3":"PRK","iso_n3":"408"},"geometry":{"type":"Polygon","coordinates":[[[130.6400159038524,42.39500946712528],[130.78000735893113,42.22000722916885],[130.40003055228902,42.28000356705971],[129.96594852103726,41.94136790625105],[129.66736209525482,41.60110443782523],[129.70518924369247,40.88282786718433],[129.18811486218,40.66180776627199],[129.01039961152821,40.485436102859815],[128.63336836152672,40.18984691015031],[127.96741417858135,40.02541250259756],[127.53343550019417,39.7568500839767],[127.5021195822253,39.32393077245153],[127.38543419811029,39.213472398427655],[127.78334272675772,39.05089834243742],[128.34971642467661,38.61224294692785],[128.20574588431145,38.37039724380189],[127.780035435091,38.30453563084589],[127.07330854706737,38.2561148137884],[126.68371992401892,37.80477285415118],[126.23733890188176,37.84037791600028],[126.17475874237624,37.74968577732804],[125.6891036316972,37.940010077459014],[125.56843916229569,37.75208873142962],[125.2753304383362,37.669070542952724],[125.24008711151315,37.85722443292744],[124.98103315643398,37.94882090916478],[124.71216067921938,38.10834605564979],[124.98599409393398,38.54847422947968],[125.2219486837787,38.66585724543067],[125.13285851450752,38.84855927179859],[125.3865897970606,39.387957872061165],[125.3211157573468,39.5513845891842],[124.7374821310424,39.66034434667162],[124.26562462778531,39.928493353834156],[125.07994184784063,40.56982371679245],[126.18204511932943,41.10733612727637],[126.86908328664985,41.81656932226619],[127.34378299368302,41.50315176041597],[128.20843305879066,41.46677155208249],[128.0522152039723,41.99428457291795],[129.59666873587952,42.42498179785456],[129.99426720593323,42.985386867843786],[130.6400159038524,42.39500946712528]]]}},{"type":"Feature","properties":{"abbrev":"Pal.","name":"Palestine","name_long":"Palestine","iso_a2":"PS","iso_a3":"PSE","iso_n3":"275"},"geometry":{"type":"Polygon","coordinates":[[[35.54566531753454,32.393992011030576],[35.5452519060762,31.78250478772084],[35.397560662586045,31.48908600516758],[34.92740848159457,31.353435370401414],[34.970506626125996,31.616778469360806],[35.22589155451242,31.754341132121766],[34.97464074070933,31.86658234305972],[35.183930291491436,32.53251068778894],[35.54566531753454,32.393992011030576]]]}},{"type":"Feature","properties":{"abbrev":"Qatar","name":"Qatar","name_long":"Qatar","iso_a2":"QA","iso_a3":"QAT","iso_n3":"634"},"geometry":{"type":"Polygon","coordinates":[[[50.81010827006958,24.754742539971378],[50.74391076030369,25.482424221289396],[51.01335167827349,26.00699168548419],[51.28646162293606,26.11458201751587],[51.58907881043726,25.80111277923338],[51.60670047384881,25.21567047779874],[51.38960778179063,24.62738597258806],[51.11241539897702,24.556330878186724],[50.81010827006958,24.754742539971378]]]}},{"type":"Feature","properties":{"abbrev":"Syria","name":"Syria","name_long":"Syria","iso_a2":"SY","iso_a3":"SYR","iso_n3":"760"},"geometry":{"type":"Polygon","coordinates":[[[38.792340529136084,33.378686428352225],[36.834062127435544,32.312937526980775],[35.71991824722275,32.709192409794866],[35.700797967274745,32.71601369885738],[35.836396925608625,32.86812327730851],[35.82110070165024,33.2774264592763],[36.066460402172055,33.82491242119255],[36.61175011571589,34.201788641897174],[36.4481942075121,34.59393524834407],[35.99840254084364,34.644914048800004],[35.905023227692226,35.410009467097325],[36.149762811026534,35.82153473565367],[36.417550083163036,36.04061697035506],[36.6853890317318,36.25969920505646],[36.7394942563414,36.81752045343109],[37.06676110204583,36.62303620050062],[38.1677274920242,36.90121043552777],[38.6998913917659,36.71292735447234],[39.52258019385255,36.71605377862599],[40.67325931169569,37.09127635349729],[41.21208947120305,37.074352321921694],[42.34959109881177,37.2298725449041],[41.83706424334096,36.605853786763575],[41.289707472505455,36.35881460219227],[41.383965285005814,35.628316555314356],[41.006158888519934,34.41937226006212],[38.792340529136084,33.378686428352225]]]}},{"type":"Feature","properties":{"abbrev":"Saud.","name":"Saudi Arabia","name_long":"Saudi Arabia","iso_a2":"SA","iso_a3":"SAU","iso_n3":"682"},"geometry":{"type":"Polygon","coordinates":[[[42.77933230975097,16.347891343648683],[42.649572788266084,16.774635321514964],[42.347989129410706,17.075805568912003],[42.270887892431226,17.474721787989125],[41.75438195167396,17.833046169500975],[41.22139122901558,18.671599636301206],[40.93934126156654,19.486485297111756],[40.247652215339826,20.17463450772649],[39.80168460466095,20.338862209550054],[39.139399448408284,21.29190481209293],[39.023695916506796,21.986875311770195],[39.06632897314759,22.57965566659027],[38.49277225114008,23.688451036060854],[38.02386030452362,24.07868561451293],[37.483634881344386,24.285494696545015],[37.154817742671185,24.85848297779731],[37.209491408036,25.084541530858104],[36.93162723160259,25.602959499610176],[36.63960371272122,25.82622752532722],[36.249136590323815,26.57013560638488],[35.64018151219639,27.37652049408342],[35.13018680190788,28.06335195567472],[34.63233605320798,28.058546047471566],[34.787778761541944,28.6074272730597],[34.832220493312946,28.957483425404845],[34.95603722508426,29.35655467377884],[36.06894087092206,29.197494615184457],[36.50121422704358,29.5052536076987],[36.74052778498725,29.86528331147619],[37.503581984209035,30.003776150018403],[37.66811974462638,30.3386652694859],[37.998848911294374,30.50849986421313],[37.00216556168101,31.508412990844743],[39.00488569515255,32.01021698661498],[39.19546837744497,32.16100881604267],[40.399994337736246,31.889991766887935],[41.889980910007836,31.190008653278365],[44.70949873228474,29.178891099559383],[46.568713413281756,29.09902517345229],[47.45982181172283,29.002519436147224],[47.708850538937384,28.526062730416143],[48.416094191283946,28.55200429942667],[48.80759484232718,27.689627997339883],[49.29955447774582,27.46121816660981],[49.470913527225655,27.10999929453808],[50.15242231629088,26.689663194275997],[50.212935418504685,26.277026882425375],[50.11330325704594,25.943972276304248],[50.239858839728754,25.608049628190926],[50.52738650900073,25.3278083358721],[50.66055667501689,24.99989553476402],[50.81010827006958,24.754742539971378],[51.11241539897702,24.556330878186724],[51.38960778179063,24.62738597258806],[51.57951867046327,24.245497137951105],[51.61770755392698,24.014219265228828],[52.000733270074335,23.00115448657894],[55.0068030129249,22.496947536707136],[55.20834109886319,22.708329982997046],[55.666659376859826,22.00000112557234],[54.99998172386236,19.999994004796108],[52.00000980002224,19.000003363516058],[49.11667158386487,18.616667588774945],[48.18334354024134,18.166669216377315],[47.46669477721763,17.116681626854884],[47.000004917189756,16.949999294497445],[46.74999433776165,17.283338120996177],[46.366658563020536,17.233315334537636],[45.39999922056875,17.333335069238558],[45.21665123879718,17.43332896572333],[44.06261315285508,17.410358791569593],[43.79151858905192,17.31997671149111],[43.380794305196105,17.57998668056767],[43.11579756040335,17.088440456607373],[43.21837527850275,16.66688996018641],[42.77933230975097,16.347891343648683]]]}},{"type":"Feature","properties":{"abbrev":"Thai.","name":"Thailand","name_long":"Thailand","iso_a2":"TH","iso_a3":"THA","iso_n3":"764"},"geometry":{"type":"Polygon","coordinates":[[[102.5849324890267,12.186594956913282],[101.68715783081996,12.645740057826572],[100.83180952352487,12.627084865769206],[100.9784672383692,13.412721665902566],[100.0977974792511,13.406856390837433],[100.01873253784456,12.307001044153354],[99.47892052612363,10.846366685423547],[99.15377241414316,9.963061428258554],[99.22239871622676,9.239255479362427],[99.87383182169813,9.20786204674512],[100.27964684448622,8.295152899606052],[100.45927412313276,7.429572658717177],[101.01732791545273,6.856868597842478],[101.62307905477806,6.74062246340192],[102.14118696493638,6.221636053894628],[101.81428185425798,5.810808417174242],[101.15421878459387,5.691384182147715],[101.07551557821336,6.204867051615921],[100.25959638875696,6.642824815289543],[100.0857568705271,6.46448944745029],[99.69069054565574,6.848212795433597],[99.51964155476963,7.34345388430276],[98.9882528015123,7.907993068875327],[98.503786248776,8.382305202666288],[98.339661899817,7.794511623562386],[98.15000939330581,8.350007432483878],[98.25915001830624,8.973922837759801],[98.55355065307305,9.932959906448545],[99.03812055867398,10.960545762572437],[99.58728600463972,11.892762762901697],[99.19635379435167,12.80474843998867],[99.21201175333609,13.269293728076464],[99.09775516153876,13.827502549693278],[98.43081912637987,14.622027696180835],[98.1920740091914,15.12370250087035],[98.53737592976572,15.308497422746084],[98.90334842325676,16.177824204976115],[98.49376102091135,16.83783559820793],[97.85912275593486,17.567946071843664],[97.37589643757354,18.445437730375815],[97.7977828308044,18.627080389881755],[98.25372399291561,19.708203029860044],[98.95967573445488,19.752980658440947],[99.54330936075931,20.186597601802063],[100.11598758341783,20.417849636308187],[100.54888105672688,20.109237982661128],[100.60629357300316,19.508344427971224],[101.2820146016517,19.462584947176765],[101.03593143107777,18.408928330961615],[101.05954756063517,17.51249725999449],[102.11359175009248,18.109101670804165],[102.41300499879162,17.932781683824288],[102.9987056823877,17.9616946476916],[103.20019209189373,18.309632066312773],[103.95647667848529,18.24095408779688],[104.7169470560925,17.42885895433008],[104.7793205098688,16.44186493577145],[105.58903852745016,15.570316066952858],[105.54433841351769,14.723933620660416],[105.21877689007887,14.273211778210694],[104.28141808473661,14.416743068901367],[102.98842207236163,14.225721136934467],[102.348099399833,13.394247341358223],[102.5849324890267,12.186594956913282]]]}},{"type":"Feature","properties":{"abbrev":"Tjk.","name":"Tajikistan","name_long":"Tajikistan","iso_a2":"TJ","iso_a3":"TJK","iso_n3":"762"},"geometry":{"type":"Polygon","coordinates":[[[71.01419803252017,40.24436554621823],[70.64801883329997,39.93575389257117],[69.55960981636852,40.10321137141298],[69.46488691597753,39.5266832545487],[70.54916181832562,39.6041979029865],[71.784693637992,39.27946320246437],[73.6753792662548,39.4312368841056],[73.92885216664644,38.50581533462274],[74.25751427602273,38.60650686294345],[74.86481570831681,38.3788463404816],[74.8299857929521,37.9900070257014],[74.98000247589542,37.419990139305895],[73.9486959166465,37.4215662704908],[73.26005577992501,37.495256862939],[72.63688968291729,37.047558091778356],[72.1930408059624,36.948287665345674],[71.8446382994506,36.73817129164692],[71.44869347523024,37.06564484308051],[71.54191775908478,37.905774441065645],[71.23940392444817,37.95326508234188],[71.34813113799026,38.258905341132156],[70.80682050973289,38.486281643216415],[70.3763041523093,38.13839590102752],[70.27057417184014,37.735164699854025],[70.11657840361033,37.58822276463209],[69.51878543485796,37.60899669041341],[69.19627282092438,37.15114350030743],[68.85944583524594,37.344335842430596],[68.13556237170138,37.0231151393043],[67.82999962755952,37.14499400486468],[68.39203250516596,38.157025254868735],[68.17602501818592,38.901553453113905],[67.44221967964131,39.140143541005486],[67.70142866401736,39.58047842056453],[68.53641645698941,39.53345286717894],[69.0116329283455,40.08615814875666],[69.32949466337283,40.72782440852485],[70.66662234892505,40.96021332454141],[70.45815962105962,40.49649485937029],[70.60140669137269,40.21852733007229],[71.01419803252017,40.24436554621823]]]}},{"type":"Feature","properties":{"abbrev":"Turkm.","name":"Turkmenistan","name_long":"Turkmenistan","iso_a2":"TM","iso_a3":"TKM","iso_n3":"795"},"geometry":{"type":"Polygon","coordinates":[[[61.21081709172574,35.650072333309225],[61.123070509694145,36.49159719496624],[60.37763797388387,36.52738312432837],[59.23476199731681,37.412987982730336],[58.4361544126782,37.522309475243794],[57.33043379092898,38.02922943781094],[56.61936608259282,38.121394354803485],[56.18037479027333,37.93512665460742],[55.51157840355191,37.96411713312317],[54.800303989486565,37.392420762678185],[53.92159793479556,37.19891836196126],[53.73551110211252,37.90613617609169],[53.880928582581845,38.95209300389536],[53.101027866432894,39.29057363540713],[53.35780805849123,39.97528636327445],[52.69397260926982,40.03362905533197],[52.915251092343624,40.87652334244473],[53.858139275941134,40.63103445084218],[54.73684533063215,40.95101491959346],[54.008310988181314,41.55121084244742],[53.72171349469059,42.12319143327003],[52.916749708880076,41.86811656347733],[52.81468875510361,41.13537059179471],[52.50245975119615,41.78331553808637],[52.944293247291654,42.11603424739759],[54.07941775901495,42.32410940202083],[54.75534549339263,42.043971462566574],[55.45525109235377,41.25985911718584],[55.96819135928291,41.30864166926936],[57.0963912290791,41.32231008561057],[56.932215203687804,41.826026109375604],[57.78652998233708,42.17055288346552],[58.62901085799146,42.75155101172305],[59.97642215356978,42.22308197689021],[60.08334069198167,41.425146185871405],[60.46595299667069,41.22032664648255],[61.54717898951356,41.266370347654615],[61.88271406438469,41.084856879229406],[62.374260288345,40.05388621679039],[63.51801476426103,39.36325653742564],[64.17022301621677,38.892406724598246],[65.2159989765074,38.40269501398429],[66.54615034370022,37.97468496352687],[66.51860680528867,37.36278432875879],[66.21738488145932,37.39379018813392],[65.74563073106681,37.66116404881207],[65.58894778835784,37.30521678318564],[64.7461051776774,37.111817735333304],[64.5464791197339,36.31207326918427],[63.9828959491587,36.0079574651466],[63.19353844590035,35.857165635718914],[62.9846623065766,35.40404083916762],[62.230651483005886,35.270663967422294],[61.21081709172574,35.650072333309225]]]}},{"type":"Feature","properties":{"abbrev":"T.L.","name":"Timor-Leste","name_long":"Timor-Leste","iso_a2":"TL","iso_a3":"TLS","iso_n3":"626"},"geometry":{"type":"Polygon","coordinates":[[[124.96868248911622,-8.892790215697083],[125.08624637258026,-8.65688730228468],[125.94707238169826,-8.432094821815035],[126.64470421763855,-8.398246758663852],[126.95724328013982,-8.273344821814398],[127.33592817597464,-8.397316582882603],[126.96799197805655,-8.668256117388893],[125.9258850444586,-9.106007175333351],[125.08852013560109,-9.393173109579294],[125.07001997284061,-9.089987481322872],[124.96868248911622,-8.892790215697083]]]}},{"type":"Feature","properties":{"abbrev":"Tur.","name":"Turkey","name_long":"Turkey","iso_a2":"TR","iso_a3":"TUR","iso_n3":"792"},"geometry":{"type":"MultiPolygon","coordinates":[[[[36.91312706884215,41.335358384764305],[38.34766482926452,40.94858612727572],[39.51260664242025,41.102762763018575],[40.373432651538245,41.01367259374734],[41.554084100110714,41.53565623632761],[42.619548781104555,41.58317271581993],[43.58274580259271,41.09214325618257],[43.7526579119685,40.74020091405882],[43.65643639504096,40.25356395116617],[44.400008579288766,40.00500031184231],[44.793989699082005,39.713002631177034],[44.109225294782355,39.428136298168056],[44.4214026222576,38.28128123631453],[44.22575564960053,37.97158437758935],[44.77269900897775,37.17044464776845],[44.29345177590286,37.00151439060635],[43.94225874204736,37.256227525372935],[42.77912560402186,37.38526357680581],[42.34959109881177,37.22987254490411],[41.21208947120303,37.07435232192173],[40.673259311695716,37.09127635349736],[39.52258019385252,36.71605377862602],[38.69989139176593,36.71292735447233],[38.16772749202416,36.90121043552779],[37.06676110204583,36.62303620050062],[36.739494256341374,36.817520453431115],[36.68538903173183,36.259699205056506],[36.41755008316309,36.0406169703551],[36.14976281102659,35.82153473565367],[35.782084995269855,36.274995429014915],[36.160821567537056,36.650605577128374],[35.55093631362834,36.56544281671134],[34.714553256984374,36.795532131490916],[34.02689497247647,36.21996002862397],[32.5091581560641,36.1075637883892],[31.699595167779567,36.64427521417261],[30.62162479017107,36.677864895162315],[30.39109622571712,36.26298065850698],[29.699975620245567,36.144357408181],[28.73290286633539,36.67683136651644],[27.64118655773737,36.658822129862756],[27.048767937943296,37.65336090753601],[26.318218214633045,38.208133246405396],[26.804700148228733,38.98576019953356],[26.17078535330438,39.463612168936464],[27.280019972449395,40.42001373957831],[28.819977654747216,40.46001129817221],[29.24000369641558,41.21999074967269],[31.145933872204434,41.08762156835706],[32.34797936374579,41.73626414648464],[33.51328291192752,42.018960069337304],[35.16770389175187,42.04022492122544],[36.91312706884215,41.335358384764305]]],[[[27.192376743282406,40.690565700842455],[26.35800906749779,40.15199392349649],[26.04335127127254,40.61775360774317],[26.056942172965336,40.82412344010075],[26.29460208507569,40.93626129817417],[26.604195590936282,41.56211456966102],[26.117041863720825,41.82690460872456],[27.135739373490505,42.14148489030131],[27.996720411905414,42.00735871028777],[28.115524529744444,41.622886054036286],[28.988442824018787,41.29993419042819],[28.80643842948675,41.05496206314854],[27.61901736828412,40.99982330989312],[27.192376743282406,40.690565700842455]]]]}},{"type":"Feature","properties":{"abbrev":"Taiwan","name":"Taiwan","name_long":"Taiwan","iso_a2":"TW","iso_a3":"TWN","iso_n3":"158"},"geometry":{"type":"Polygon","coordinates":[[[121.77781782438993,24.3942735865194],[121.17563235889274,22.790857245367167],[120.74707970589621,21.970571397382113],[120.22008344938367,22.81486094816674],[120.1061885926124,23.556262722258236],[120.69467980355225,24.538450832613737],[121.49504438688876,25.295458889257386],[121.95124393116144,24.997595933527034],[121.77781782438993,24.3942735865194]]]}},{"type":"Feature","properties":{"abbrev":"Viet.","name":"Vietnam","name_long":"Vietnam","iso_a2":"VN","iso_a3":"VNM","iso_n3":"704"},"geometry":{"type":"Polygon","coordinates":[[[108.05018029178294,21.55237986906012],[106.7150679870901,20.69685069425202],[105.88168216351903,19.752050482659698],[105.66200564984631,19.05816518806057],[106.426816847766,18.004120998603227],[107.36195356651974,16.69745656988705],[108.26949507042963,16.07974233648615],[108.87710656131748,15.27669057867044],[109.33526981001721,13.426028347217722],[109.20013593957398,11.666859239137764],[108.36612999881545,11.008320624226272],[107.22092858279524,10.364483954301832],[106.40511274620343,9.53083974856932],[105.15826378786511,8.599759629750494],[104.79518517458237,9.241038316276502],[105.0762016133856,9.918490505406808],[104.33433475140347,10.48654368737523],[105.19991499229235,10.889309800658097],[106.24967003786946,10.961811835163587],[105.81052371625313,11.567614650921227],[107.49140302941089,12.337205918827946],[107.61454796756243,13.535530707244206],[107.38272749230109,14.202440904186972],[107.5645251811039,15.202173163305558],[107.3127059265456,15.90853831630318],[106.55600792849569,16.604283962464805],[105.92576216026403,17.48531545660896],[105.09459842328152,18.66697459561108],[103.8965320170267,19.265180975821806],[104.18338789267894,19.62466807706022],[104.8225736836971,19.886641750563882],[104.43500044150805,20.75873322192153],[103.20386111858645,20.766562201413745],[102.75489627483466,21.675137233969465],[102.17043582561358,22.464753119389304],[102.7069922221001,22.708795070887675],[103.50451460166056,22.70375661873921],[104.47685835166448,22.819150092046968],[105.32920942588663,23.352063300056912],[105.81124718630521,22.976892401617903],[106.72540327354845,22.79426788989842],[106.56727339073532,22.21820486092477],[107.04342003787262,21.811898912029914],[108.05018029178294,21.55237986906012]]]}},{"type":"Feature","properties":{"abbrev":"Uzb.","name":"Uzbekistan","name_long":"Uzbekistan","iso_a2":"UZ","iso_a3":"UZB","iso_n3":"860"},"geometry":{"type":"Polygon","coordinates":[[[66.51860680528867,37.36278432875879],[66.54615034370022,37.97468496352687],[65.2159989765074,38.40269501398429],[64.17022301621677,38.892406724598246],[63.51801476426103,39.36325653742564],[62.374260288345,40.05388621679039],[61.88271406438469,41.084856879229406],[61.54717898951356,41.266370347654615],[60.46595299667069,41.22032664648255],[60.08334069198167,41.425146185871405],[59.97642215356978,42.22308197689021],[58.62901085799146,42.75155101172305],[57.78652998233708,42.17055288346552],[56.932215203687804,41.826026109375604],[57.0963912290791,41.32231008561057],[55.96819135928291,41.30864166926936],[55.928917270741096,44.99585846615911],[58.50312706892847,45.586804307632825],[58.689989048095896,45.50001373959862],[60.23997195825833,44.78403677019473],[61.05831994003245,44.40581696225051],[62.01330040878625,43.50447663021565],[63.18578698105657,43.650074978198006],[64.90082441595928,43.72808055274258],[66.09801232286509,42.99766002051309],[66.02339155463562,41.99464630794398],[66.51064863471572,41.987644151368436],[66.7140470722165,41.1684435084615],[67.98585574735182,41.13599070898222],[68.25989586779562,40.6623245305949],[68.63248294462001,40.66868073176681],[69.07002729683532,41.38424428971237],[70.3889648782208,42.08130768489745],[70.96231489449914,42.26615428320549],[71.25924767444822,42.16771067968946],[70.42002241402821,41.51999827734314],[71.1578585142916,41.14358714452912],[71.87011478057047,41.392900092121266],[73.05541710804917,40.866033026689465],[71.77487511585656,40.14584442805378],[71.01419803252017,40.24436554621823],[70.60140669137269,40.21852733007229],[70.45815962105962,40.49649485937029],[70.66662234892505,40.96021332454141],[69.32949466337283,40.72782440852485],[69.0116329283455,40.08615814875666],[68.53641645698941,39.53345286717894],[67.70142866401736,39.58047842056453],[67.44221967964131,39.140143541005486],[68.17602501818592,38.901553453113905],[68.39203250516596,38.157025254868735],[67.82999962755952,37.14499400486468],[67.07578209825962,37.35614390720929],[66.51860680528867,37.36278432875879]]]}},{"type":"Feature","properties":{"abbrev":"Yem.","name":"Yemen","name_long":"Yemen","iso_a2":"YE","iso_a3":"YEM","iso_n3":"887"},"geometry":{"type":"Polygon","coordinates":[[[53.10857262554751,16.65105113368895],[52.38520592632588,16.382411200419654],[52.19172936382509,15.93843313238402],[52.1681649107,15.597420355689948],[51.172515089732485,15.175249742081492],[49.57457645040315,14.70876658778275],[48.67923058451416,14.00320241948566],[48.23894738138742,13.948089504446372],[47.938914015500785,14.007233181204427],[47.354453566279716,13.592219753468383],[46.717076450391744,13.39969920496502],[45.87759280781027,13.347764390511685],[45.62505008319987,13.290946153206763],[45.406458774605255,13.026905422411433],[45.14435591002086,12.95393830001531],[44.98953331887441,12.699586900274708],[44.49457645038285,12.721652736863346],[44.175112745954486,12.585950425664876],[43.48295861183713,12.636800035040084],[43.22287112811213,13.220950425667425],[43.25144819516953,13.767583726450852],[43.08794396339806,14.06263031662131],[42.89224531430872,14.802249253798749],[42.60487267433362,15.213335272680595],[42.80501549660005,15.261962795467255],[42.70243777850066,15.718885809791999],[42.823670688657415,15.911742255105265],[42.77933230975097,16.347891343648683],[43.21837527850275,16.66688996018641],[43.11579756040335,17.088440456607373],[43.380794305196105,17.57998668056767],[43.79151858905192,17.31997671149111],[44.06261315285508,17.410358791569593],[45.21665123879718,17.43332896572333],[45.39999922056875,17.333335069238558],[46.366658563020536,17.233315334537636],[46.74999433776165,17.283338120996177],[47.000004917189756,16.949999294497445],[47.46669477721763,17.116681626854884],[48.18334354024134,18.166669216377315],[49.11667158386487,18.616667588774945],[52.00000980002224,19.000003363516058],[52.78218427919205,17.349742336491232],[53.10857262554751,16.65105113368895]]]}},{"type":"Feature","properties":{"abbrev":"Ang.","name":"Angola","name_long":"Angola","iso_a2":"AO","iso_a3":"AGO","iso_n3":"024"},"geometry":{"type":"MultiPolygon","coordinates":[[[[16.326528354567046,-5.877470391466218],[16.57317996589614,-6.622644545115094],[16.86019087084523,-7.222297865429979],[17.08999596524717,-7.545688978712476],[17.472970004962292,-8.068551120641656],[18.13422163256905,-7.987677504104866],[18.464175652752687,-7.847014255406477],[19.01675174324967,-7.98824594486014],[19.166613396896082,-7.738183688999725],[19.417502475673217,-7.155428562044278],[20.037723016040218,-7.11636117923166],[20.09162153492062,-6.943090101756951],[20.601822950938327,-6.939317722199689],[20.51474816252653,-7.299605808138665],[21.728110792739756,-7.290872491081316],[21.746455926203367,-7.920084730667114],[21.94913089365204,-8.305900974158305],[21.801801385187957,-8.908706556842986],[21.875181919042404,-9.523707777548566],[22.208753289486424,-9.89479623783653],[22.155268182064333,-11.084801120653779],[22.402798292742432,-10.99307545333569],[22.83734541188477,-11.017621758674338],[23.456790805767465,-10.867863457892483],[23.912215203555746,-10.926826267137542],[24.017893507592614,-11.237298272347118],[23.90415368011824,-11.722281589406336],[24.079905226342902,-12.191296888887308],[23.930922072045377,-12.565847670138822],[24.016136508894704,-12.911046237848552],[21.933886346125945,-12.898437188369357],[21.887842644953878,-16.080310153876894],[22.56247846852429,-16.898451429921835],[23.215048455506093,-17.523116143465952],[21.377176141045595,-17.93063648851971],[18.95618696460363,-17.789094740472237],[18.26330936043422,-17.309950860262006],[14.209706658595051,-17.353100681225712],[14.058501417709039,-17.423380629142656],[13.462362094789967,-16.97121184658874],[12.814081251688407,-16.941342868724078],[12.215461460019384,-17.111668389558062],[11.734198846085148,-17.3018893368245],[11.64009606288161,-16.67314218512921],[11.778537224991567,-15.79381601325069],[12.123580763404448,-14.878316338767931],[12.175618930722266,-14.449143568583892],[12.500095249083017,-13.547699883684402],[12.738478631245442,-13.137905775609935],[13.312913852601838,-12.483630466362513],[13.633721144269828,-12.038644707897191],[13.738727654686926,-11.297863050993143],[13.686379428775297,-10.731075941615842],[13.38732791510216,-10.373578383020728],[13.120987583069875,-9.766897067914115],[12.875369500386569,-9.166933689005488],[12.929061313537801,-8.959091078327575],[13.236432732809874,-8.562629489784342],[12.933040398824316,-7.596538588087753],[12.72829837408392,-6.927122084178805],[12.227347039446443,-6.294447523629372],[12.322431674863566,-6.100092461779653],[12.735171339578699,-5.965682061388478],[13.02486941900699,-5.984388929878108],[13.375597364971895,-5.864241224799557],[16.326528354567046,-5.877470391466218]]],[[[12.436688266660923,-5.684303887559224],[12.18233686692028,-5.789930515163803],[11.914963006242116,-5.037986748884734],[12.318607618873926,-4.606230157086158],[12.62075971848455,-4.438023369976121],[12.995517205465205,-4.781103203961919],[12.631611769265845,-4.991271254092936],[12.468004184629763,-5.248361504744992],[12.436688266660923,-5.684303887559224]]]]}},{"type":"Feature","properties":{"abbrev":"Bur.","name":"Burundi","name_long":"Burundi","iso_a2":"BI","iso_a3":"BDI","iso_n3":"108"},"geometry":{"type":"Polygon","coordinates":[[[29.339997592900346,-4.499983412294092],[29.276383904749053,-3.293907159034063],[29.024926385216787,-2.839257907730158],[29.632176141078588,-2.917857761246097],[29.938359002407942,-2.348486830254238],[30.469696079232985,-2.413857517103458],[30.527677036264464,-2.807631931167535],[30.7430127296247,-3.034284763199686],[30.75226281100495,-3.35932952231557],[30.505559523243566,-3.568567396665365],[30.116332635221173,-4.090137627787243],[29.753512404099922,-4.452389418153281],[29.339997592900346,-4.499983412294092]]]}},{"type":"Feature","properties":{"abbrev":"B.F.","name":"Burkina Faso","name_long":"Burkina Faso","iso_a2":"BF","iso_a3":"BFA","iso_n3":"854"},"geometry":{"type":"Polygon","coordinates":[[[-2.827496303712707,9.642460842319778],[-3.511898972986273,9.90032623945622],[-3.980449184576685,9.8623440617217],[-4.330246954760383,9.61083486575714],[-4.779883592131966,9.821984768101743],[-4.954653286143099,10.152713934769736],[-5.404341599946974,10.370736802609146],[-5.470564947929006,10.951269842976048],[-5.197842576508648,11.37514577885014],[-5.220941941743121,11.713858954307227],[-4.427166103523803,12.542645575404295],[-4.28040503581488,13.228443508349741],[-4.006390753587226,13.472485459848116],[-3.522802700199861,13.337661647998615],[-3.10370683431276,13.541266791228594],[-2.967694464520577,13.79815033615151],[-2.191824510090385,14.246417548067356],[-2.001035122068771,14.559008287000891],[-1.066363491205664,14.973815009007765],[-0.515854458000348,15.116157741755726],[-0.26625729003058,14.924308986872148],[0.374892205414682,14.928908189346132],[0.295646396495101,14.444234930880654],[0.429927605805517,13.988733018443924],[0.993045688490071,13.335749620003824],[1.024103224297477,12.851825669806574],[2.177107781593776,12.625017808477534],[2.154473504249921,11.940150051313337],[1.935985548519881,11.641150214072553],[1.447178175471066,11.547719224488858],[1.243469679376489,11.110510769083461],[0.899563022474069,10.99733938236426],[0.023802524423701,11.018681748900804],[-0.438701544588582,11.09834096927872],[-0.761575893548183,10.936929633015055],[-1.203357713211431,11.009819240762738],[-2.940409308270461,10.962690334512558],[-2.963896246747112,10.395334784380083],[-2.827496303712707,9.642460842319778]]]}},{"type":"Feature","properties":{"abbrev":"Bwa.","name":"Botswana","name_long":"Botswana","iso_a2":"BW","iso_a3":"BWA","iso_n3":"072"},"geometry":{"type":"Polygon","coordinates":[[[25.649163445750162,-18.53602589281899],[25.85039147309473,-18.714412937090536],[26.164790887158485,-19.29308562589494],[27.296504754350508,-20.391519870691],[27.724747348753255,-20.499058526290387],[27.72722781750326,-20.851801853114715],[28.021370070108617,-21.485975030200585],[28.794656202924212,-21.63945403410745],[29.43218834810904,-22.091312758067588],[28.01723595552525,-22.827753594659075],[27.119409620886245,-23.574323011979775],[26.786406691197413,-24.240690606383485],[26.4857532081233,-24.616326592713104],[25.94165205252216,-24.69637338633322],[25.76584882986521,-25.174845472923675],[25.66466637543772,-25.486816094669713],[25.025170525825786,-25.7196700985769],[24.211266717228792,-25.670215752873574],[23.73356977712271,-25.390129489851613],[23.312096795350186,-25.26868987396572],[22.8242712745149,-25.500458672794768],[22.57953169118059,-25.979447523708146],[22.105968865657868,-26.280256036079138],[21.60589603036939,-26.726533705351756],[20.88960900237174,-26.828542982695915],[20.66647016773544,-26.477453301704923],[20.758609246511835,-25.86813648855145],[20.165725538827186,-24.917961928000768],[19.895767856534434,-24.767790215760588],[19.89545779794068,-21.84915699634787],[20.881134067475866,-21.814327080983148],[20.910641310314535,-18.252218926672022],[21.655040317478978,-18.219146010005225],[23.1968583513393,-17.869038181227786],[23.579005568137717,-18.28126108162006],[24.217364536239213,-17.88934701911849],[24.520705193792537,-17.887124932529936],[25.08444339366457,-17.661815687737374],[25.264225701608012,-17.736539808831417],[25.649163445750162,-18.53602589281899]]]}},{"type":"Feature","properties":{"abbrev":"Benin","name":"Benin","name_long":"Benin","iso_a2":"BJ","iso_a3":"BEN","iso_n3":"204"},"geometry":{"type":"Polygon","coordinates":[[[2.691701694356254,6.258817246928629],[1.865240512712319,6.142157701029731],[1.618950636409238,6.832038072126237],[1.664477573258381,9.12859039960938],[1.46304284018467,9.334624335157088],[1.425060662450136,9.825395412633],[1.077795037448738,10.175606594275024],[0.772335646171484,10.470808213742359],[0.899563022474069,10.99733938236426],[1.243469679376489,11.110510769083461],[1.447178175471066,11.547719224488858],[1.935985548519881,11.641150214072553],[2.154473504249921,11.940150051313337],[2.49016360841793,12.233052069543675],[2.848643019226671,12.235635891158267],[3.611180454125559,11.660167141155966],[3.572216424177469,11.327939357951518],[3.797112257511714,10.734745591673105],[3.600070021182801,10.332186184119408],[3.705438266625919,10.063210354040208],[3.220351596702101,9.4441525333997],[2.912308383810256,9.13760793704432],[2.723792758809509,8.50684540448971],[2.74906253420022,7.870734361192888],[2.691701694356254,6.258817246928629]]]}},{"type":"Feature","properties":{"abbrev":"C.A.R.","name":"Central African Rep.","name_long":"Central African Republic","iso_a2":"CF","iso_a3":"CAF","iso_n3":"140"},"geometry":{"type":"Polygon","coordinates":[[[15.279460483469109,7.421924546737969],[16.10623172370677,7.497087917506505],[16.290561557691888,7.754307359239306],[16.456184523187346,7.734773667832968],[16.705988396886255,7.508327541529979],[17.964929640380888,7.890914008002866],[18.38955488452322,8.281303615751824],[18.911021762780507,8.630894680206353],[18.81200971850927,8.982914536978598],[19.09400800952602,9.07484691002584],[20.05968549976427,9.012706000194854],[21.000868361096167,9.475985215691509],[21.723821648859452,10.567055568885976],[22.231129184668788,10.97188873946051],[22.864165480244225,11.142395127807546],[22.97754357269261,10.71446259199854],[23.554304233502194,10.089255275915308],[23.557249790142826,9.681218166538684],[23.394779087017184,9.265067857292223],[23.459012892355986,8.954285793488893],[23.805813429466752,8.666318874542426],[24.567369012152085,8.229187933785468],[25.11493248871679,7.825104071479174],[25.124130893664727,7.500085150579436],[25.79664798351118,6.979315904158071],[26.213418409945117,6.546603298362072],[26.46590945812323,5.94671743410187],[27.21340905122517,5.550953477394557],[27.37422610851749,5.233944403500061],[27.04406538260471,5.127852688004836],[26.402760857862543,5.150874538590871],[25.650455356557472,5.256087754737123],[25.278798455514302,5.170408229997192],[25.12883344900328,4.927244777847789],[24.805028924262416,4.89724660890235],[24.410531040146253,5.108784084489129],[23.29721398285014,4.609693101414223],[22.841479526468106,4.710126247573484],[22.70412356943629,4.633050848810157],[22.405123732195538,4.029160061047321],[21.659122755630023,4.22434194581372],[20.927591180106276,4.322785549329737],[20.290679152108936,4.691677761245288],[19.467783644293146,5.03152781821278],[18.93231245288476,4.709506130385975],[18.54298221199778,4.201785183118318],[18.45306521980993,3.504385891123349],[17.809900343505262,3.56019643799857],[17.133042433346304,3.728196519379452],[16.537058139724135,3.198254706226279],[16.012852410555354,2.267639675298085],[15.907380812247652,2.557389431158612],[15.86273237474748,3.013537298998983],[15.405395948964383,3.33530060466434],[15.036219516671252,3.851367295747124],[14.950953403389661,4.210389309094921],[14.478372430080467,4.732605495620447],[14.558935988023505,5.03059764243153],[14.459407179429348,5.4517605656103],[14.536560092841112,6.22695872642069],[14.776545444404576,6.408498033062045],[15.279460483469109,7.421924546737969]]]}},{"type":"Feature","properties":{"abbrev":"I.C.","name":"Côte d'Ivoire","name_long":"Côte d'Ivoire","iso_a2":"CI","iso_a3":"CIV","iso_n3":"384"},"geometry":{"type":"Polygon","coordinates":[[[-2.856125047202397,4.994475816259509],[-3.311084357100071,4.984295559098015],[-4.008819545904942,5.179813340674315],[-4.649917364917911,5.168263658057086],[-5.834496222344526,4.993700669775137],[-6.528769090185847,4.705087795425015],[-7.518941209330436,4.338288479017308],[-7.71215938966975,4.364565944837722],[-7.63536821128403,5.188159084489456],[-7.539715135111762,5.313345241716519],[-7.570152553731688,5.707352199725904],[-7.993692592795881,6.126189683451543],[-8.311347622094019,6.193033148621083],[-8.60288021486862,6.46756419517166],[-8.385451626000574,6.911800645368742],[-8.48544552248535,7.39520783124307],[-8.439298468448698,7.686042792181738],[-8.280703497744938,7.687179673692156],[-8.221792364932199,8.123328762235573],[-8.299048631208564,8.316443589710303],[-8.20349890790088,8.455453192575447],[-7.832100389019188,8.575704250518626],[-8.079113735374348,9.376223863152035],[-8.30961646161225,9.789531968622441],[-8.229337124046822,10.1290202905639],[-8.029943610048619,10.206534939001713],[-7.899589809592372,10.297382106970828],[-7.622759161804809,10.147236232946796],[-6.850506557635057,10.138993841996239],[-6.666460944027548,10.430810655148447],[-6.493965013037267,10.411302801958271],[-6.205222947606431,10.524060777219134],[-6.050452032892267,10.096360785355444],[-5.816926235365287,10.222554633012194],[-5.404341599946974,10.370736802609146],[-4.954653286143099,10.152713934769736],[-4.779883592131966,9.821984768101743],[-4.330246954760383,9.61083486575714],[-3.980449184576685,9.8623440617217],[-3.511898972986273,9.90032623945622],[-2.827496303712707,9.642460842319778],[-2.562189500326241,8.219627793811483],[-2.983584967450327,7.379704901555512],[-3.244370083011262,6.250471503113502],[-2.81070146321784,5.38905121502411],[-2.856125047202397,4.994475816259509]]]}},{"type":"Feature","properties":{"abbrev":"Cam.","name":"Cameroon","name_long":"Cameroon","iso_a2":"CM","iso_a3":"CMR","iso_n3":"120"},"geometry":{"type":"Polygon","coordinates":[[[13.075822381246752,2.267097072759015],[12.951333855855609,2.32161570882694],[12.359380323952221,2.19281220133945],[11.75166548019979,2.326757513839993],[11.276449008843713,2.261050930180872],[9.649158155972628,2.283866075037736],[9.795195753629457,3.073404445809117],[9.404366896206,3.734526882335202],[8.948115675501072,3.904128933117136],[8.744923943729418,4.35221527751996],[8.488815545290889,4.495617377129918],[8.500287713259695,4.771982937026849],[8.757532993208628,5.479665839047911],[9.233162876023044,6.444490668153334],[9.522705926154401,6.453482367372117],[10.118276808318257,7.038769639509879],[10.497375115611417,7.055357774275564],[11.05878787603035,6.644426784690594],[11.74577436691851,6.981382961449753],[11.839308709366803,7.397042344589436],[12.063946160539558,7.799808457872302],[12.218872104550599,8.305824082874324],[12.753671502339214,8.717762762888995],[12.955467970438974,9.417771714714704],[13.167599724997103,9.640626328973411],[13.308676385153918,10.160362046748928],[13.572949659894562,10.798565985553566],[14.415378859116686,11.572368882692075],[14.468192172918975,11.904751695193411],[14.577177768622533,12.085360826053503],[14.181336297266792,12.483656927943116],[14.213530714584634,12.802035427293347],[14.495787387762844,12.85939626713733],[14.893385857816526,12.219047756392584],[14.9601518083376,11.555574042197224],[14.923564894274959,10.891325181517473],[15.467872755605269,9.98233673750343],[14.909353875394716,9.99212942142273],[14.62720055508106,9.920919297724538],[14.171466098699028,10.021378282099931],[13.954218377344006,9.549494940626685],[14.544466586981768,8.965861314322268],[14.97999555833769,8.796104234243472],[15.120865512765334,8.382150173369423],[15.436091749745769,7.692812404811973],[15.279460483469109,7.421924546737969],[14.776545444404576,6.408498033062045],[14.536560092841112,6.22695872642069],[14.459407179429348,5.4517605656103],[14.558935988023505,5.03059764243153],[14.478372430080467,4.732605495620447],[14.950953403389661,4.210389309094921],[15.036219516671252,3.851367295747124],[15.405395948964383,3.33530060466434],[15.86273237474748,3.013537298998983],[15.907380812247652,2.557389431158612],[16.012852410555354,2.267639675298085],[15.940918816805064,1.727672634280295],[15.146341993885244,1.964014797367184],[14.33781253424658,2.227874660649491],[13.075822381246752,2.267097072759015]]]}},{"type":"Feature","properties":{"abbrev":"D.R.C.","name":"Dem. Rep. Congo","name_long":"Democratic Republic of the Congo","iso_a2":"CD","iso_a3":"COD","iso_n3":"180"},"geometry":{"type":"Polygon","coordinates":[[[30.833859897593808,3.509165961110341],[30.773346795380043,2.339883327642127],[31.174149204235814,2.204465236821264],[30.852670118948055,1.849396470543809],[30.468507521290295,1.58380544677972],[30.086153598762703,1.062312730306289],[29.875778842902495,0.597379868976304],[29.819503208136638,-0.205310153813372],[29.58783776217217,-0.587405694179481],[29.579466180140884,-1.341313164885626],[29.29188683443661,-1.620055840667987],[29.25483483248334,-2.215109958508911],[29.117478875451553,-2.292211195488385],[29.024926385216787,-2.839257907730158],[29.276383904749053,-3.293907159034063],[29.339997592900346,-4.499983412294092],[29.519986606572925,-5.419978936386314],[29.419992710088167,-5.939998874539433],[29.62003217949001,-6.520015150583426],[30.199996779101696,-7.079980970898163],[30.740015496551788,-8.340007419470915],[30.346086053190813,-8.238256524288218],[29.002912225060467,-8.407031752153472],[28.7348665707625,-8.526559340044578],[28.449871046672826,-9.164918308146085],[28.67368167492893,-9.605924981324932],[28.49606977714177,-10.789883721564044],[28.372253045370428,-11.793646742401393],[28.642417433392353,-11.971568698782315],[29.34154788586909,-12.360743910372413],[29.61600141777123,-12.178894545137311],[29.69961388521949,-13.257226657771831],[28.934285922976837,-13.248958428605135],[28.523561639121027,-12.698604424696683],[28.155108676879987,-12.272480564017897],[27.38879886242378,-12.132747491100666],[27.164419793412463,-11.608748467661075],[26.553087599399618,-11.924439792532127],[25.752309604604733,-11.784965101776358],[25.418118116973204,-11.330935967659961],[24.78316979340295,-11.238693536018964],[24.31451622894795,-11.26282642989927],[24.25715538910399,-10.951992689663657],[23.912215203555718,-10.926826267137514],[23.45679080576744,-10.867863457892483],[22.83734541188474,-11.01762175867433],[22.402798292742375,-10.99307545333569],[22.155268182064308,-11.084801120653772],[22.208753289486395,-9.894796237836509],[21.875181919042348,-9.523707777548566],[21.8018013851879,-8.908706556842978],[21.949130893652043,-8.305900974158277],[21.74645592620331,-7.920084730667149],[21.7281107927397,-7.290872491081302],[20.514748162526498,-7.299605808138629],[20.6018229509383,-6.939317722199682],[20.091621534920648,-6.943090101756993],[20.037723016040218,-7.116361179231646],[19.417502475673157,-7.155428562044298],[19.16661339689611,-7.738183688999754],[19.01675174324967,-7.988245944860132],[18.464175652752687,-7.847014255406444],[18.13422163256905,-7.987677504104922],[17.472970004962235,-8.0685511206417],[17.08999596524717,-7.545688978712526],[16.8601908708452,-7.222297865429986],[16.57317996589614,-6.622644545115087],[16.326528354567046,-5.877470391466267],[13.375597364971895,-5.864241224799549],[13.02486941900696,-5.984388929878157],[12.735171339578699,-5.965682061388499],[12.32243167486351,-6.10009246177966],[12.182336866920252,-5.789930515163839],[12.436688266660868,-5.684303887559246],[12.468004184629736,-5.248361504745005],[12.63161176926579,-4.991271254092936],[12.995517205465177,-4.781103203961884],[13.258240187237048,-4.882957452009165],[13.600234816144678,-4.50013844159097],[14.144956088933299,-4.510008640158715],[14.209034864975223,-4.793092136253598],[14.58260379401318,-4.97023894615014],[15.170991652088444,-4.343507175314301],[15.75354007331475,-3.855164890156096],[16.0062895036543,-3.535132744972529],[15.972803175529151,-2.712392266453612],[16.407091912510054,-1.740927015798682],[16.865306837642123,-1.225816338713287],[17.523716261472856,-0.743830254726987],[17.638644646889986,-0.424831638189247],[17.66355268725468,-0.058083998213817],[17.826540154703252,0.288923244626105],[17.774191928791566,0.855658677571085],[17.898835483479587,1.741831976728278],[18.094275750407434,2.365721543788055],[18.39379235197114,2.90044342692822],[18.45306521980993,3.504385891123349],[18.54298221199778,4.201785183118318],[18.93231245288476,4.709506130385975],[19.467783644293146,5.03152781821278],[20.290679152108936,4.691677761245288],[20.927591180106276,4.322785549329737],[21.659122755630023,4.22434194581372],[22.405123732195538,4.029160061047321],[22.70412356943629,4.633050848810157],[22.841479526468106,4.710126247573484],[23.29721398285014,4.609693101414223],[24.410531040146253,5.108784084489129],[24.805028924262416,4.89724660890235],[25.12883344900328,4.927244777847789],[25.278798455514302,5.170408229997192],[25.650455356557472,5.256087754737123],[26.402760857862543,5.150874538590871],[27.04406538260471,5.127852688004836],[27.37422610851749,5.233944403500061],[27.979977247842807,4.408413397637375],[28.428993768026913,4.287154649264494],[28.696677687298802,4.455077215996937],[29.1590784034465,4.389267279473231],[29.71599531425602,4.600804755060025],[29.953500197069474,4.173699042167683],[30.833859897593808,3.509165961110341]]]}},{"type":"Feature","properties":{"abbrev":"Rep. Congo","name":"Congo","name_long":"Republic of Congo","iso_a2":"CG","iso_a3":"COG","iso_n3":"178"},"geometry":{"type":"Polygon","coordinates":[[[12.995517205465177,-4.781103203961884],[12.620759718484491,-4.438023369976136],[12.318607618873926,-4.606230157086188],[11.91496300624209,-5.037986748884791],[11.093772820691925,-3.978826592630547],[11.855121697648114,-3.426870619321051],[11.478038771214303,-2.765618991714241],[11.820963575903193,-2.514161472181982],[12.495702752338161,-2.391688327650243],[12.575284458067642,-1.948511244315135],[13.109618767965628,-2.428740329603514],[13.99240726080771,-2.4708049454891],[14.299210239324564,-1.998275648612214],[14.425455763413593,-1.333406670744971],[14.316418491277743,-0.552627455247048],[13.843320753645655,0.038757635901149],[14.276265903386957,1.196929836426619],[14.026668735417218,1.395677395021153],[13.282631463278818,1.31418366129688],[13.003113641012078,1.83089630778332],[13.075822381246752,2.267097072759015],[14.33781253424658,2.227874660649491],[15.146341993885244,1.964014797367184],[15.940918816805064,1.727672634280295],[16.012852410555354,2.267639675298085],[16.537058139724135,3.198254706226279],[17.133042433346304,3.728196519379452],[17.809900343505262,3.56019643799857],[18.45306521980993,3.504385891123349],[18.39379235197114,2.90044342692822],[18.094275750407434,2.365721543788055],[17.898835483479587,1.741831976728278],[17.774191928791566,0.855658677571085],[17.826540154703252,0.288923244626105],[17.66355268725468,-0.058083998213817],[17.638644646889986,-0.424831638189247],[17.523716261472856,-0.743830254726987],[16.865306837642123,-1.225816338713287],[16.407091912510054,-1.740927015798682],[15.972803175529151,-2.712392266453612],[16.0062895036543,-3.535132744972529],[15.75354007331475,-3.855164890156096],[15.170991652088444,-4.343507175314301],[14.58260379401318,-4.97023894615014],[14.209034864975223,-4.793092136253598],[14.144956088933299,-4.510008640158715],[13.600234816144678,-4.50013844159097],[13.258240187237048,-4.882957452009165],[12.995517205465177,-4.781103203961884]]]}},{"type":"Feature","properties":{"abbrev":"Dji.","name":"Djibouti","name_long":"Djibouti","iso_a2":"DJ","iso_a3":"DJI","iso_n3":"262"},"geometry":{"type":"Polygon","coordinates":[[[43.08122602720015,12.699638576707116],[43.31785241066467,12.390148423711025],[43.286381463398925,11.974928290245884],[42.715873650896526,11.735640570518342],[43.14530480324214,11.462039699748857],[42.77685184100096,10.92687856693442],[42.55493000000013,11.105110000000195],[42.31414000000012,11.0342],[41.755570000000205,11.050910000000101],[41.73959000000019,11.355110000000138],[41.66176000000013,11.6312],[42.000000000000114,12.100000000000136],[42.35156000000012,12.542230000000131],[42.77964236834475,12.455415757695675],[43.08122602720015,12.699638576707116]]]}},{"type":"Feature","properties":{"abbrev":"Alg.","name":"Algeria","name_long":"Algeria","iso_a2":"DZ","iso_a3":"DZA","iso_n3":"012"},"geometry":{"type":"Polygon","coordinates":[[[11.999505649471613,23.47166840259645],[8.572893100629784,21.565660712159143],[5.677565952180686,19.601206976799716],[4.267419467800039,19.155265204337],[3.158133172222705,19.057364203360038],[3.1466610042539,19.69357859952144],[2.683588494486429,19.856230170160114],[2.06099083823392,20.142233384679486],[1.823227573259032,20.610809434486043],[-1.550054897457613,22.792665920497384],[-4.92333736817423,24.974574082941],[-8.68439978680905,27.395744126896005],[-8.665124477564191,27.589479071558227],[-8.665589565454809,27.656425889592356],[-8.674116176782974,28.84128896739658],[-7.059227667661928,29.57922842052453],[-6.060632290053774,29.731699734001694],[-5.242129278982787,30.000443020135588],[-4.859646165374471,30.501187649043842],[-3.690441046554696,30.896951605751152],[-3.647497931320146,31.63729401298067],[-3.068980271812648,31.724497992473214],[-2.616604783529567,32.09434621838615],[-1.30789913573787,32.2628889023061],[-1.124551153966308,32.65152151135713],[-1.388049282222568,32.86401500094131],[-1.733454555661467,33.919712836231994],[-1.792985805661687,34.527918606091205],[-2.169913702798624,35.16839630791668],[-1.208602871089056,35.7148487411871],[-0.127454392894606,35.888662421200806],[0.503876580415209,36.30127289483528],[1.466918572606545,36.605647081034405],[3.161698846050825,36.78390493422522],[4.81575809084913,36.86503693292346],[5.320120070017793,36.71651886651662],[6.261819695672613,37.11065501560674],[7.33038496260397,37.118380642234364],[7.737078484741004,36.885707505840216],[8.420964389691676,36.94642731378316],[8.217824334352315,36.433176988260286],[8.376367628623768,35.47987600355594],[8.140981479534304,34.65514598239379],[7.524481642292244,34.09737641045146],[7.612641635782182,33.34411489514896],[8.430472853233368,32.74833730725595],[8.439102817426118,32.50628489840082],[9.055602654668148,32.10269196220129],[9.482139926805274,30.307556057246188],[9.805634392952411,29.42463837332339],[9.859997999723447,28.959989732371014],[9.683884718472767,28.1441738957792],[9.756128370816782,27.68825857188415],[9.629056023811074,27.14095347748092],[9.716285841519749,26.512206325785698],[9.319410841518163,26.094324856057455],[9.910692579801776,25.36545461679674],[9.94826134607797,24.936953640232517],[10.303846876678362,24.379313259370917],[10.771363559622927,24.56253205006175],[11.560669386449005,24.097909247325518],[11.999505649471613,23.47166840259645]]]}},{"type":"Feature","properties":{"abbrev":"Egypt","name":"Egypt","name_long":"Egypt","iso_a2":"EG","iso_a3":"EGY","iso_n3":"818"},"geometry":{"type":"Polygon","coordinates":[[[34.9226,29.50133],[34.64174,29.09942],[34.42655,28.34399],[34.15451,27.8233],[33.92136,27.6487],[33.58811,27.97136],[33.13676,28.41765],[32.42323,29.85108],[32.32046,29.76043],[32.73482,28.70523],[33.34876,27.69989],[34.10455,26.14227],[34.47387,25.59856],[34.79507,25.03375],[35.69241,23.92671],[35.49372,23.75237],[35.52598,23.10244],[36.69069,22.20485],[36.86623,22],[32.9,22],[29.02,22],[25,22],[25,25.682499996361],[25,29.23865452953346],[24.70007,30.04419],[24.95762,30.6616],[24.80287,31.08929],[25.16482,31.56915],[26.49533,31.58568],[27.45762,31.32126],[28.45048,31.02577],[28.91353,30.87005],[29.68342,31.18686],[30.09503,31.4734],[30.97693,31.55586],[31.68796,31.4296],[31.96041,30.9336],[32.19247,31.26034],[32.99392,31.02407],[33.7734,30.96746],[34.26544,31.21936],[34.9226,29.50133]]]}},{"type":"Feature","properties":{"abbrev":"Gabon","name":"Gabon","name_long":"Gabon","iso_a2":"GA","iso_a3":"GAB","iso_n3":"266"},"geometry":{"type":"Polygon","coordinates":[[[11.093772820691925,-3.978826592630547],[10.06613528813574,-2.969482517105681],[9.40524539555497,-2.144313246269043],[8.79799563969317,-1.111301364754496],[8.830086704146423,-0.779073581550037],[9.048419630579588,-0.459351494960217],[9.29135053878369,0.268666083167687],[9.492888624721985,1.010119533691494],[9.830284051155644,1.067893784993799],[11.285078973036462,1.057661851400013],[11.276449008843713,2.261050930180872],[11.75166548019979,2.326757513839993],[12.359380323952221,2.19281220133945],[12.951333855855609,2.32161570882694],[13.075822381246752,2.267097072759015],[13.003113641012078,1.83089630778332],[13.282631463278818,1.31418366129688],[14.026668735417218,1.395677395021153],[14.276265903386957,1.196929836426619],[13.843320753645655,0.038757635901149],[14.316418491277743,-0.552627455247048],[14.425455763413593,-1.333406670744971],[14.299210239324564,-1.998275648612214],[13.99240726080771,-2.4708049454891],[13.109618767965628,-2.428740329603514],[12.575284458067642,-1.948511244315135],[12.495702752338161,-2.391688327650243],[11.820963575903193,-2.514161472181982],[11.478038771214303,-2.765618991714241],[11.855121697648114,-3.426870619321051],[11.093772820691925,-3.978826592630547]]]}},{"type":"Feature","properties":{"abbrev":"Erit.","name":"Eritrea","name_long":"Eritrea","iso_a2":"ER","iso_a3":"ERI","iso_n3":"232"},"geometry":{"type":"Polygon","coordinates":[[[42.35156000000012,12.542230000000131],[42.00975,12.86582],[41.59856,13.452090000000112],[41.15519371924984,13.773319810435224],[40.8966,14.118640000000141],[40.026218702969175,14.519579169162284],[39.34061,14.53155],[39.0994,14.74064],[38.51295,14.50547],[37.90607000000011,14.959430000000168],[37.59377,14.2131],[36.42951,14.42211],[36.32318891779812,14.82248057704106],[36.75386030451858,16.29187409104429],[36.852530000000115,16.95655],[37.16747,17.263140000000135],[37.90400000000011,17.42754],[38.410089959473225,17.99830739997031],[38.990622999840014,16.84062612555169],[39.26611006038803,15.922723496967249],[39.814293654140215,15.435647284400318],[41.17927493669765,14.491079616753211],[41.73495161313235,13.921036892141558],[42.27683068214486,13.343992010954423],[42.58957645037526,13.000421250861905],[43.08122602720015,12.699638576707116],[42.77964236834475,12.455415757695675],[42.35156000000012,12.542230000000131]]]}},{"type":"Feature","properties":{"abbrev":"Eth.","name":"Ethiopia","name_long":"Ethiopia","iso_a2":"ET","iso_a3":"ETH","iso_n3":"231"},"geometry":{"type":"Polygon","coordinates":[[[37.90607000000011,14.959430000000168],[38.51295,14.50547],[39.0994,14.74064],[39.34061,14.53155],[40.02625000000012,14.51959],[40.8966,14.118640000000141],[41.1552,13.77333],[41.59856,13.452090000000112],[42.00975,12.86582],[42.35156000000012,12.542230000000131],[42.000000000000114,12.100000000000136],[41.66176000000013,11.6312],[41.73959000000019,11.355110000000138],[41.755570000000205,11.050910000000101],[42.31414000000012,11.0342],[42.55493000000013,11.105110000000195],[42.77685184100096,10.92687856693442],[42.55876,10.57258000000013],[42.92812,10.021940000000143],[43.29699000000011,9.540480000000173],[43.67875,9.18358000000012],[46.94834,7.99688],[47.78942,8.003],[44.9636,5.001620000000116],[43.66087,4.95755],[42.76967000000013,4.252590000000225],[42.12861,4.234130000000164],[41.85508309264412,3.918911920483765],[41.17180000000013,3.91909],[40.76848000000012,4.257020000000125],[39.85494000000011,3.838790000000131],[39.55938425876593,3.422060000000215],[38.89251,3.50074],[38.67114,3.61607],[38.436970000000144,3.58851],[38.12091500000014,3.598605],[36.85509323800824,4.447864127672858],[36.15907863285565,4.447864127672858],[35.81744766235362,4.776965663462022],[35.81744766235362,5.338232082790853],[35.298007118233095,5.506],[34.70702,6.59422000000012],[34.25032,6.82607],[34.07510000000019,7.22595],[33.568290000000104,7.71334],[32.954180000000235,7.784970000000102],[33.29480000000012,8.35458],[33.82550000000015,8.37916],[33.97498,8.684560000000147],[33.96162,9.58358],[34.25745,10.63009],[34.73115000000013,10.910170000000107],[34.83163000000013,11.318960000000118],[35.26049,12.08286],[35.863630000000164,12.57828],[36.27022,13.563330000000121],[36.42951,14.42211],[37.59377,14.2131],[37.90607000000011,14.959430000000168]]]}},{"type":"Feature","properties":{"abbrev":"Ghana","name":"Ghana","name_long":"Ghana","iso_a2":"GH","iso_a3":"GHA","iso_n3":"288"},"geometry":{"type":"Polygon","coordinates":[[[1.060121697604927,5.928837388528876],[-0.507637905265938,5.343472601742675],[-1.063624640294194,5.000547797053812],[-1.964706590167594,4.710462144383371],[-2.856125047202397,4.994475816259509],[-2.81070146321784,5.38905121502411],[-3.244370083011262,6.250471503113502],[-2.983584967450327,7.379704901555512],[-2.562189500326241,8.219627793811483],[-2.827496303712707,9.642460842319778],[-2.963896246747112,10.395334784380083],[-2.940409308270461,10.962690334512558],[-1.203357713211431,11.009819240762738],[-0.761575893548183,10.936929633015055],[-0.438701544588582,11.09834096927872],[0.023802524423701,11.018681748900804],[-0.049784715159944,10.706917832883931],[0.367579990245389,10.19121287682718],[0.365900506195885,9.465003973829482],[0.461191847342121,8.677222601756014],[0.712029249686878,8.31246450442383],[0.490957472342245,7.411744289576475],[0.570384148774849,6.914358628767189],[0.836931186536333,6.279978745952149],[1.060121697604927,5.928837388528876]]]}},{"type":"Feature","properties":{"abbrev":"Gin.","name":"Guinea","name_long":"Guinea","iso_a2":"GN","iso_a3":"GIN","iso_n3":"324"},"geometry":{"type":"Polygon","coordinates":[[[-8.439298468448698,7.686042792181738],[-8.722123582382123,7.71167430259851],[-8.926064622422004,7.309037380396375],[-9.208786383490844,7.313920803247953],[-9.40334815106975,7.526905218938907],[-9.337279832384581,7.928534450711353],[-9.755342169625834,8.541055202666925],[-10.016566534861255,8.42850393313523],[-10.23009355309128,8.406205552601293],[-10.505477260774668,8.348896389189605],[-10.494315151399633,8.715540676300435],[-10.654770473665891,8.977178452994194],[-10.622395188835041,9.267910061068278],[-10.8391519840833,9.688246161330369],[-11.117481248407328,10.045872911006285],[-11.917277390988659,10.046983954300558],[-12.150338100625005,9.858571682164381],[-12.425928514037565,9.835834051955956],[-12.59671912276221,9.62018830000197],[-12.71195756677308,9.342711696810767],[-13.246550258832515,8.903048610871508],[-13.685153977909792,9.49474376061346],[-14.074044969122282,9.886166897008252],[-14.33007585291237,10.015719712763966],[-14.579698859098258,10.214467271358515],[-14.693231980843505,10.656300767454042],[-14.839553798877944,10.876571560098139],[-15.130311245168171,11.040411688679526],[-14.685687221728898,11.527823798056488],[-14.382191534878729,11.509271958863692],[-14.121406419317779,11.677117010947697],[-13.900799729863776,11.678718980348748],[-13.743160773157411,11.811269029177412],[-13.828271857142125,12.142644151249044],[-13.718743658899513,12.24718557377551],[-13.700476040084325,12.586182969610194],[-13.217818162478238,12.575873521367967],[-12.499050665730564,12.332089952031057],[-12.278599005573438,12.354440008997285],[-12.203564825885634,12.465647691289405],[-11.65830095055793,12.386582749882834],[-11.51394283695059,12.442987575729418],[-11.456168585648271,12.076834214725338],[-11.29757361494451,12.077971096235771],[-11.036555955438258,12.211244615116515],[-10.870829637078215,12.17788747807211],[-10.593223842806282,11.92397532800598],[-10.165213792348837,11.844083563682744],[-9.890992804392013,12.060478623904972],[-9.567911749703214,12.194243068892476],[-9.327616339546012,12.334286200403454],[-9.127473517279583,12.308060411015331],[-8.90526485842453,12.088358059126437],[-8.786099005559464,11.812560939984706],[-8.376304897484914,11.393645941610629],[-8.581305304386774,11.136245632364805],[-8.620321010767128,10.810890814655183],[-8.407310756860028,10.909256903522762],[-8.282357143578281,10.792597357623846],[-8.33537716310974,10.494811916541934],[-8.029943610048619,10.206534939001713],[-8.229337124046822,10.1290202905639],[-8.30961646161225,9.789531968622441],[-8.079113735374348,9.376223863152035],[-7.832100389019188,8.575704250518626],[-8.20349890790088,8.455453192575447],[-8.299048631208564,8.316443589710303],[-8.221792364932199,8.123328762235573],[-8.280703497744938,7.687179673692156],[-8.439298468448698,7.686042792181738]]]}},{"type":"Feature","properties":{"abbrev":"Gambia","name":"Gambia","name_long":"The Gambia","iso_a2":"GM","iso_a3":"GMB","iso_n3":"270"},"geometry":{"type":"Polygon","coordinates":[[[-16.841524624081273,13.15139394780256],[-16.713728807023468,13.594958604379853],[-15.62459632003994,13.62358734786956],[-15.39877031092446,13.86036876063092],[-15.08173539881382,13.876491807505984],[-14.687030808968487,13.630356960499784],[-14.376713833055788,13.625680243377372],[-14.046992356817482,13.79406789800045],[-13.844963344772408,13.505041612192002],[-14.277701788784553,13.280585028532242],[-14.712197231494626,13.298206691943777],[-15.141163295949466,13.509511623585238],[-15.511812506562935,13.278569647672867],[-15.691000535534995,13.270353094938455],[-15.931295945692211,13.130284125211332],[-16.841524624081273,13.15139394780256]]]}},{"type":"Feature","properties":{"abbrev":"GnB.","name":"Guinea-Bissau","name_long":"Guinea-Bissau","iso_a2":"GW","iso_a3":"GNB","iso_n3":"624"},"geometry":{"type":"Polygon","coordinates":[[[-15.130311245168171,11.040411688679526],[-15.664180467175527,11.458474025920795],[-16.085214199273565,11.52459402103824],[-16.314786749730203,11.806514797406548],[-16.30894731288123,11.95870189050612],[-16.613838263403277,12.170911159712702],[-16.677451951554573,12.384851589401052],[-16.147716844130585,12.547761542201187],[-15.816574266004254,12.515567124883345],[-15.548476935274008,12.628170070847347],[-13.700476040084325,12.586182969610194],[-13.718743658899513,12.24718557377551],[-13.828271857142125,12.142644151249044],[-13.743160773157411,11.811269029177412],[-13.900799729863776,11.678718980348748],[-14.121406419317779,11.677117010947697],[-14.382191534878729,11.509271958863692],[-14.685687221728898,11.527823798056488],[-15.130311245168171,11.040411688679526]]]}},{"type":"Feature","properties":{"abbrev":"Ken.","name":"Kenya","name_long":"Kenya","iso_a2":"KE","iso_a3":"KEN","iso_n3":"404"},"geometry":{"type":"Polygon","coordinates":[[[40.993,-0.85829],[41.58513,-1.68325],[40.88477,-2.08255],[40.63785,-2.49979],[40.26304,-2.57309],[40.12119,-3.27768],[39.80006,-3.68116],[39.60489,-4.34653],[39.20222,-4.67677],[37.7669,-3.67712],[37.69869,-3.09699],[34.07262,-1.05982],[33.90371119710453,-0.95],[33.89356896966694,0.109813537861896],[34.18,0.515],[34.6721,1.17694],[35.03599,1.90584],[34.59607,3.05374],[34.47913,3.5556],[34.005,4.249884947362048],[34.62019626785388,4.847122742081988],[35.298007118232974,5.506],[35.817447662353516,5.338232082790797],[35.817447662353516,4.77696566346189],[36.159078632855646,4.447864127672769],[36.85509323800812,4.447864127672769],[38.120915,3.598605],[38.43697,3.58851],[38.67114,3.61607],[38.89251,3.50074],[39.55938425876585,3.42206],[39.85494,3.83879],[40.76848,4.25702],[41.1718,3.91909],[41.85508309264397,3.918911920483727],[40.98105,2.78452],[40.993,-0.85829]]]}},{"type":"Feature","properties":{"abbrev":"Eq. G.","name":"Eq. Guinea","name_long":"Equatorial Guinea","iso_a2":"GQ","iso_a3":"GNQ","iso_n3":"226"},"geometry":{"type":"Polygon","coordinates":[[[9.492888624721985,1.010119533691494],[9.305613234096256,1.160911363119183],[9.649158155972628,2.283866075037736],[11.276449008843713,2.261050930180872],[11.285078973036462,1.057661851400013],[9.830284051155644,1.067893784993799],[9.492888624721985,1.010119533691494]]]}},{"type":"Feature","properties":{"abbrev":"Liberia","name":"Liberia","name_long":"Liberia","iso_a2":"LR","iso_a3":"LBR","iso_n3":"430"},"geometry":{"type":"Polygon","coordinates":[[[-7.71215938966975,4.364565944837722],[-7.974107224957251,4.355755113131963],[-9.004793667018674,4.8324185245922],[-9.913420376006684,5.593560695819207],[-10.765383876986643,6.140710760925558],[-11.438779466182055,6.785916856305747],[-11.19980180504828,7.105845648624737],[-11.146704270868383,7.396706447779536],[-10.69559485517648,7.939464016141087],[-10.23009355309128,8.406205552601293],[-10.016566534861255,8.42850393313523],[-9.755342169625834,8.541055202666925],[-9.337279832384581,7.928534450711353],[-9.40334815106975,7.526905218938907],[-9.208786383490844,7.313920803247953],[-8.926064622422004,7.309037380396375],[-8.722123582382123,7.71167430259851],[-8.439298468448698,7.686042792181738],[-8.48544552248535,7.39520783124307],[-8.385451626000574,6.911800645368742],[-8.60288021486862,6.46756419517166],[-8.311347622094019,6.193033148621083],[-7.993692592795881,6.126189683451543],[-7.570152553731688,5.707352199725904],[-7.539715135111762,5.313345241716519],[-7.63536821128403,5.188159084489456],[-7.71215938966975,4.364565944837722]]]}},{"type":"Feature","properties":{"abbrev":"Libya","name":"Libya","name_long":"Libya","iso_a2":"LY","iso_a3":"LBY","iso_n3":"434"},"geometry":{"type":"Polygon","coordinates":[[[14.8513,22.862950000000126],[14.143870883855243,22.49128896737113],[13.581424594790462,23.04050608976928],[11.9995056494717,23.471668402596432],[11.560669386449035,24.097909247325617],[10.771363559622955,24.562532050061748],[10.303846876678449,24.379313259370974],[9.948261346078027,24.936953640232616],[9.910692579801776,25.365454616796796],[9.31941084151822,26.094324856057483],[9.716285841519664,26.51220632578565],[9.629056023811074,27.140953477481048],[9.756128370816782,27.688258571884205],[9.683884718472882,28.144173895779314],[9.859997999723475,28.95998973237107],[9.805634392952356,29.424638373323376],[9.482139926805417,30.307556057246188],[9.970017124072967,30.539324856075382],[10.056575148161699,30.961831366493524],[9.950225050505196,31.376069647745283],[10.636901482799487,31.761420803345683],[10.944789666394513,32.081814683555365],[11.432253452203781,32.36890310315283],[11.48878746913101,33.13699575452324],[12.66331,32.79278],[13.08326,32.87882],[13.91868,32.71196],[15.24563,32.26508],[15.71394,31.37626],[16.61162,31.18218],[18.02109,30.76357],[19.08641,30.26639],[19.57404,30.52582],[20.05335,30.98576],[19.82033,31.75179000000014],[20.13397,32.2382],[20.85452,32.7068],[21.54298,32.8432],[22.89576,32.63858],[23.2368,32.19149],[23.609130000000107,32.18726],[23.9275,32.01667],[24.92114,31.89936],[25.16482,31.56915],[24.80287,31.08929],[24.95762,30.6616],[24.70007,30.04419],[25.00000000000011,29.23865452953356],[25.00000000000011,25.682499996361003],[25.00000000000011,22],[25.00000000000011,20.00304],[23.850000000000136,20],[23.837660000000138,19.580470000000105],[19.84926,21.49509],[15.86085,23.40972],[14.8513,22.862950000000126]]]}},{"type":"Feature","properties":{"abbrev":"Mor.","name":"Morocco","name_long":"Morocco","iso_a2":"MA","iso_a3":"MAR","iso_n3":"504"},"geometry":{"type":"Polygon","coordinates":[[[-5.193863491222032,35.75518219659085],[-4.591006232105143,35.33071198174565],[-3.640056525070008,35.39985504815198],[-2.604305792644112,35.17909332940112],[-2.169913702798624,35.16839630791671],[-1.792985805661658,34.527918606091305],[-1.73345455566141,33.91971283623212],[-1.388049282222596,32.86401500094137],[-1.124551153966195,32.6515215113572],[-1.30789913573787,32.26288890230603],[-2.616604783529567,32.094346218386164],[-3.068980271812649,31.72449799247329],[-3.647497931320146,31.63729401298082],[-3.690441046554667,30.896951605751152],[-4.859646165374443,30.50118764904388],[-5.242129278982787,30.000443020135574],[-6.060632290053746,29.731699734001808],[-7.059227667661901,29.579228420524657],[-8.674116176782832,28.84128896739665],[-8.665589565454836,27.65642588959247],[-8.817809007940525,27.65642588959247],[-8.817828334986643,27.65642588959247],[-8.794883999049034,27.12069631602256],[-9.413037482124508,27.088476060488546],[-9.735343390328751,26.860944729107416],[-10.189424200877452,26.860944729107416],[-10.55126257978526,26.990807603456886],[-11.392554897496948,26.883423977154393],[-11.718219773800342,26.104091701760808],[-12.030758836301658,26.03086619720312],[-12.50096269372537,24.770116278578143],[-13.891110398809047,23.691009019459386],[-14.221167771857154,22.310163072188345],[-14.630832688850946,21.860939846274874],[-14.750954555713404,21.500600083903805],[-17.00296179856107,21.420734157796687],[-17.020428432675768,21.422310288981635],[-16.973247849993186,21.885744533774954],[-16.58913692876763,22.15823436125009],[-16.261921759495664,22.679339504481277],[-16.3264139469959,23.017768459560898],[-15.982610642958063,23.723358466074103],[-15.426003790742186,24.35913361256104],[-15.089331834360733,24.52026072844697],[-14.824645148161691,25.103532619725314],[-14.800925665739667,25.63626496022229],[-14.439939947964831,26.254418443297652],[-13.773804897506464,26.618892320252286],[-13.139941779014292,27.640147813420494],[-13.121613369914712,27.654147671719812],[-12.618836635783111,28.038185533148663],[-11.688919236690765,28.148643907172584],[-10.900956997104402,28.83214223888092],[-10.399592251008642,29.098585923777787],[-9.564811163765626,29.933573716749862],[-9.814718390329174,31.17773550060906],[-9.434793260119363,32.038096421836485],[-9.300692918321829,32.564679266890636],[-8.65747636558504,33.2402452662424],[-7.654178432638218,33.69706492770251],[-6.91254411460136,34.11047638603745],[-6.244342006851411,35.145865383437524],[-5.929994269219833,35.75998810479399],[-5.193863491222032,35.75518219659085]]]}},{"type":"Feature","properties":{"abbrev":"Les.","name":"Lesotho","name_long":"Lesotho","iso_a2":"LS","iso_a3":"LSO","iso_n3":"426"},"geometry":{"type":"Polygon","coordinates":[[[28.97826256685724,-28.955596612261715],[29.325166456832587,-29.257386976846252],[29.018415154748023,-29.74376555757737],[28.84839969250774,-30.070050551068253],[28.29106937023991,-30.2262167294543],[28.107204624145425,-30.54573211031495],[27.749397006956485,-30.64510588961222],[26.999261915807637,-29.875953871379984],[27.532511020627478,-29.24271087007536],[28.07433841320778,-28.851468601193588],[28.541700066855498,-28.64750172293757],[28.97826256685724,-28.955596612261715]]]}},{"type":"Feature","properties":{"abbrev":"Mad.","name":"Madagascar","name_long":"Madagascar","iso_a2":"MG","iso_a3":"MDG","iso_n3":"450"},"geometry":{"type":"Polygon","coordinates":[[[49.54351891459575,-12.469832858940554],[49.80898074727909,-12.895284925999555],[50.056510857957164,-13.555761407121985],[50.21743126811407,-14.758788750876795],[50.47653689962553,-15.226512139550541],[50.377111443895956,-15.706069431219126],[50.20027469259318,-16.000263360256767],[49.86060550313868,-15.414252618066916],[49.67260664246086,-15.710203545802479],[49.863344354050156,-16.451036879138776],[49.77456424337271,-16.875042006093597],[49.49861209493412,-17.106035658438273],[49.435618523970305,-17.953064060134366],[49.041792433473944,-19.118781019774445],[48.54854088724801,-20.496888116134127],[47.93074913919867,-22.391501153251085],[47.54772342305131,-23.781958916928517],[47.095761346226595,-24.941629733990453],[46.282477654817086,-25.178462823184105],[45.409507684110444,-25.60143442149309],[44.83357384621755,-25.34610116953894],[44.03972049334976,-24.988345228782308],[43.76376834491117,-24.460677178649988],[43.697777540874455,-23.574116306250602],[43.345654331237625,-22.776903985283873],[43.254187046081,-22.057413018484123],[43.43329756040464,-21.336475111580185],[43.893682895692926,-21.163307386970125],[43.896370070172104,-20.830459486578174],[44.37432539243966,-20.07236622485639],[44.46439741392439,-19.435454196859048],[44.23242190936617,-18.961994724200906],[44.04297610858415,-18.33138722094317],[43.96308434426091,-17.409944756746782],[44.31246870298628,-16.850495700754955],[44.4465173683514,-16.216219170804507],[44.94493655780653,-16.1793738745804],[45.50273196796499,-15.97437346767854],[45.87299360533626,-15.793454278224685],[46.31224327981721,-15.780018405828798],[46.882182651564285,-15.210182386946313],[47.70512983581235,-14.594302666891764],[48.005214878131255,-14.091232598530375],[47.869047479042166,-13.663868503476586],[48.29382775248138,-13.784067884987486],[48.84506025573878,-13.089174899958664],[48.86350874206698,-12.48786793381042],[49.194651320193316,-12.04055673589197],[49.54351891459575,-12.469832858940554]]]}},{"type":"Feature","properties":{"abbrev":"Mali","name":"Mali","name_long":"Mali","iso_a2":"ML","iso_a3":"MLI","iso_n3":"466"},"geometry":{"type":"Polygon","coordinates":[[[-12.170750291380301,14.616834214735505],[-11.834207526079467,14.79909699142894],[-11.666078253617854,15.388208319556298],[-11.349095017939504,15.411256008358478],[-10.650791388379417,15.132745876521426],[-10.086846482778212,15.330485744686273],[-9.700255092802706,15.264107367407362],[-9.55023840985939,15.486496893775437],[-5.537744309908447,15.501689764869257],[-5.315277268891933,16.20185374599184],[-5.488522508150438,16.325102037007966],[-5.971128709324248,20.64083344164763],[-6.453786586930335,24.956590684503425],[-4.92333736817423,24.974574082941],[-1.550054897457613,22.792665920497384],[1.823227573259032,20.610809434486043],[2.06099083823392,20.142233384679486],[2.683588494486429,19.856230170160114],[3.1466610042539,19.69357859952144],[3.158133172222705,19.057364203360038],[4.267419467800039,19.155265204337],[4.270209995143801,16.852227484601215],[3.723421665063483,16.184283759012615],[3.638258904646477,15.568119818580454],[2.749992709981484,15.409524847876696],[1.385528191746858,15.323561102759172],[1.01578331869851,14.968182277887948],[0.374892205414682,14.928908189346132],[-0.26625729003058,14.924308986872148],[-0.515854458000348,15.116157741755726],[-1.066363491205664,14.973815009007765],[-2.001035122068771,14.559008287000891],[-2.191824510090385,14.246417548067356],[-2.967694464520577,13.79815033615151],[-3.10370683431276,13.541266791228594],[-3.522802700199861,13.337661647998615],[-4.006390753587226,13.472485459848116],[-4.28040503581488,13.228443508349741],[-4.427166103523803,12.542645575404295],[-5.220941941743121,11.713858954307227],[-5.197842576508648,11.37514577885014],[-5.470564947929006,10.951269842976048],[-5.404341599946974,10.370736802609146],[-5.816926235365287,10.222554633012194],[-6.050452032892267,10.096360785355444],[-6.205222947606431,10.524060777219134],[-6.493965013037267,10.411302801958271],[-6.666460944027548,10.430810655148447],[-6.850506557635057,10.138993841996239],[-7.622759161804809,10.147236232946796],[-7.899589809592372,10.297382106970828],[-8.029943610048619,10.206534939001713],[-8.33537716310974,10.494811916541934],[-8.282357143578281,10.792597357623846],[-8.407310756860028,10.909256903522762],[-8.620321010767128,10.810890814655183],[-8.581305304386774,11.136245632364805],[-8.376304897484914,11.393645941610629],[-8.786099005559464,11.812560939984706],[-8.90526485842453,12.088358059126437],[-9.127473517279583,12.308060411015331],[-9.327616339546012,12.334286200403454],[-9.567911749703214,12.194243068892476],[-9.890992804392013,12.060478623904972],[-10.165213792348837,11.844083563682744],[-10.593223842806282,11.92397532800598],[-10.870829637078215,12.17788747807211],[-11.036555955438258,12.211244615116515],[-11.29757361494451,12.077971096235771],[-11.456168585648271,12.076834214725338],[-11.51394283695059,12.442987575729418],[-11.467899135778524,12.754518947800975],[-11.55339779300543,13.141213690641067],[-11.927716030311615,13.422075100147394],[-12.12488745772126,13.994727484589788],[-12.170750291380301,14.616834214735505]]]}},{"type":"Feature","properties":{"abbrev":"Moz.","name":"Mozambique","name_long":"Mozambique","iso_a2":"MZ","iso_a3":"MOZ","iso_n3":"508"},"geometry":{"type":"Polygon","coordinates":[[[34.55998904799935,-11.520020033415925],[35.31239790216904,-11.439146416879147],[36.51408165868426,-11.720938002166733],[36.775150994622805,-11.594537448780805],[37.47128421402661,-11.56875090906716],[37.82764489111139,-11.268769219612835],[38.42755659358775,-11.285202325081656],[39.521029900883775,-10.896853936408226],[40.31658857601719,-10.317096042525698],[40.47838748552303,-10.765440769089993],[40.437253045418686,-11.761710707245015],[40.56081139502857,-12.639176527561027],[40.59962039567975,-14.201975192931862],[40.775475294768995,-14.691764418194241],[40.4772506040126,-15.406294447493972],[40.08926395036522,-16.10077402106446],[39.45255862809705,-16.72089120856694],[38.53835086442152,-17.101023044505958],[37.41113284683888,-17.586368096591237],[36.28127933120936,-18.65968759529345],[35.89649661636406,-18.842260430580634],[35.198399692533144,-19.552811374593894],[34.78638349787005,-19.784011732667736],[34.70189253107284,-20.49704314543101],[35.176127150215365,-21.25436126066841],[35.37342776870574,-21.840837090748877],[35.385848253705404,-22.14],[35.562545536369086,-22.09],[35.533934767404304,-23.070787855727758],[35.37177412287238,-23.5353589820317],[35.60747033055563,-23.706563002214683],[35.45874555841962,-24.12260995859655],[35.04073489761066,-24.478350518493805],[34.21582400893547,-24.81631438568266],[33.01321007663901,-25.357573337507738],[32.574632195777866,-25.72731821055609],[32.66036339695009,-26.148584486599443],[32.91595503106569,-26.215867201443466],[32.830120477028885,-26.742191664336197],[32.07166548028107,-26.73382008230491],[31.98577924981197,-26.291779880480227],[31.837777947728064,-25.84333180105135],[31.75240848158188,-25.484283949487413],[31.93058882012425,-24.369416599222536],[31.670397983534652,-23.658969008073864],[31.191409132621285,-22.2515096981724],[32.244988234188014,-21.116488539313693],[32.50869306817344,-20.395292250248307],[32.65974327976258,-20.304290052982317],[32.772707960752626,-19.715592136313298],[32.61199425632489,-19.419382826416275],[32.65488569512715,-18.672089939043495],[32.84986087416439,-17.97905730557718],[32.847638787575846,-16.713398125884616],[32.32823896661022,-16.392074069893752],[31.8520406430406,-16.319417006091378],[31.636498243951195,-16.071990248277885],[31.173063999157677,-15.860943698797872],[30.338954705534544,-15.880839125230244],[30.274255812305107,-15.507786960515212],[30.17948123548183,-14.796099134991527],[33.214024692525214,-13.971860039936153],[33.789700148256685,-14.451830743063072],[34.064825473778626,-14.359950046448121],[34.45963341648854,-14.613009535381424],[34.51766604995231,-15.013708591372612],[34.307291294092096,-15.478641452702595],[34.38129194513405,-16.183559665596043],[35.033810255683534,-16.801299737213093],[35.33906294123164,-16.10744028083011],[35.77190473810836,-15.896858819240725],[35.68684533055594,-14.611045830954332],[35.26795617039801,-13.887834161029566],[34.907151320136165,-13.565424899960568],[34.55998904799935,-13.579997653866876],[34.28000613784198,-12.280025323132504],[34.55998904799935,-11.520020033415925]]]}},{"type":"Feature","properties":{"abbrev":"Nam.","name":"Namibia","name_long":"Namibia","iso_a2":"NA","iso_a3":"NAM","iso_n3":"516"},"geometry":{"type":"Polygon","coordinates":[[[16.344976840895242,-28.576705010697697],[15.601818068105814,-27.8212472470228],[15.21047244635946,-27.090955905874047],[14.989710727608552,-26.117371921495156],[14.743214145576331,-25.39292001719538],[14.408144158595833,-23.853014011329847],[14.385716586981149,-22.65665292734069],[14.257714064194175,-22.111208184499954],[13.86864220546866,-21.699036960539978],[13.35249799973744,-20.872834161057504],[12.826845330464492,-19.673165785401665],[12.608564080463621,-19.0453488094877],[11.794918654028066,-18.069129327061916],[11.734198846085121,-17.301889336824473],[12.215461460019355,-17.111668389558083],[12.814081251688407,-16.94134286872407],[13.462362094789967,-16.971211846588773],[14.05850141770901,-17.423380629142663],[14.209706658595024,-17.35310068122572],[18.26330936043416,-17.309950860262006],[18.956186964603603,-17.789094740472258],[21.377176141045567,-17.930636488519696],[23.215048455506064,-17.52311614346598],[24.033861525170778,-17.295843194246324],[24.682349074001507,-17.353410739819473],[25.07695031098226,-17.57882333747662],[25.08444339366457,-17.661815687737374],[24.520705193792537,-17.887124932529936],[24.217364536239213,-17.88934701911849],[23.579005568137717,-18.28126108162006],[23.1968583513393,-17.869038181227786],[21.655040317478978,-18.219146010005225],[20.910641310314535,-18.252218926672022],[20.881134067475866,-21.814327080983148],[19.89545779794068,-21.84915699634787],[19.895767856534434,-24.767790215760588],[19.894734327888614,-28.461104831660776],[19.002127312911085,-28.972443129188864],[18.464899122804752,-29.04546192801728],[17.83615197110953,-28.85637786226132],[17.387497185951503,-28.78351409272978],[17.218928663815404,-28.35594329194681],[16.824017368240902,-28.082161553664466],[16.344976840895242,-28.576705010697697]]]}},{"type":"Feature","properties":{"abbrev":"Niger","name":"Niger","name_long":"Niger","iso_a2":"NE","iso_a3":"NER","iso_n3":"562"},"geometry":{"type":"Polygon","coordinates":[[[2.15447350424995,11.940150051313424],[2.177107781593918,12.625017808477537],[1.024103224297619,12.851825669806601],[0.993045688490156,13.335749620003865],[0.429927605805517,13.988733018443893],[0.295646396495215,14.444234930880667],[0.374892205414767,14.928908189346147],[1.015783318698482,14.968182277887989],[1.385528191746971,15.32356110275924],[2.749992709981541,15.409524847876753],[3.638258904646591,15.568119818580442],[3.723421665063597,16.184283759012658],[4.270209995143887,16.852227484601315],[4.267419467800096,19.155265204337127],[5.677565952180714,19.6012069767998],[8.57289310062987,21.565660712159225],[11.9995056494717,23.471668402596432],[13.581424594790462,23.04050608976928],[14.143870883855243,22.49128896737113],[14.8513,22.862950000000126],[15.096887648181848,21.30851878507491],[15.471076694407316,21.048457139565983],[15.487148064850146,20.730414537025638],[15.903246697664313,20.387618923417506],[15.685740594147774,19.957180080642384],[15.30044111497972,17.927949937405003],[15.247731154041846,16.627305813050782],[13.972201775781684,15.684365953021143],[13.540393507550789,14.367133693901222],[13.956698846094127,13.996691189016929],[13.95447675950561,13.353448798063766],[14.595781284247607,13.330426947477859],[14.495787387762903,12.859396267137356],[14.21353071458475,12.802035427293333],[14.18133629726691,12.483656927943171],[13.995352817448293,12.461565253138303],[13.318701613018561,13.556356309457954],[13.083987257548813,13.596147162322495],[12.30207116054055,13.037189032437539],[11.527803175511508,13.32898000737356],[10.989593133191532,13.387322699431195],[10.701031935273818,13.246917832894042],[10.114814487354748,13.277251898649467],[9.52492801274309,12.851102199754564],[9.014933302454438,12.826659247280418],[7.804671258178871,13.343526923063735],[7.330746697630047,13.098038031461215],[6.820441928747812,13.115091254117601],[6.445426059605722,13.492768459522722],[5.443058302440135,13.865923977102225],[4.368343540066007,13.747481594289411],[4.107945997747379,13.531215725147945],[3.967282749048934,12.956108710171577],[3.680633579125925,12.55290334721417],[3.611180454125587,11.660167141155966],[2.848643019226586,12.23563589115821],[2.490163608418015,12.233052069543588],[2.15447350424995,11.940150051313424]]]}},{"type":"Feature","properties":{"abbrev":"Mal.","name":"Malawi","name_long":"Malawi","iso_a2":"MW","iso_a3":"MWI","iso_n3":"454"},"geometry":{"type":"Polygon","coordinates":[[[34.55998904799935,-11.520020033415925],[34.28000613784198,-12.280025323132504],[34.55998904799935,-13.579997653866876],[34.907151320136165,-13.565424899960568],[35.26795617039801,-13.887834161029566],[35.68684533055594,-14.611045830954332],[35.77190473810836,-15.896858819240725],[35.33906294123164,-16.10744028083011],[35.033810255683534,-16.801299737213093],[34.38129194513405,-16.183559665596043],[34.307291294092096,-15.478641452702595],[34.51766604995231,-15.013708591372612],[34.45963341648854,-14.613009535381424],[34.064825473778626,-14.359950046448121],[33.789700148256685,-14.451830743063072],[33.214024692525214,-13.971860039936153],[32.68816531752313,-13.712857761289275],[32.991764357237884,-12.783870537978272],[33.306422153463075,-12.435778090060218],[33.11428917820191,-11.607198174692314],[33.315310499817286,-10.796549981329697],[33.48568769708359,-10.525558770391115],[33.2313879737753,-9.6767216935648],[32.75937544122132,-9.230599053589058],[33.73972903823045,-9.417150974162723],[33.94083772409653,-9.693673841980294],[34.28000613784198,-10.159999688358404],[34.55998904799935,-11.520020033415925]]]}},{"type":"Feature","properties":{"abbrev":"Mrt.","name":"Mauritania","name_long":"Mauritania","iso_a2":"MR","iso_a3":"MRT","iso_n3":"478"},"geometry":{"type":"Polygon","coordinates":[[[-12.170750291380301,14.616834214735505],[-12.830658331747516,15.303691514542946],[-13.43573767745306,16.03938304286619],[-14.099521450242179,16.304302273010492],[-14.577347581428981,16.59826365810281],[-15.135737270558817,16.587282416240782],[-15.62366614425869,16.369337063049812],[-16.12069007004193,16.455662543193384],[-16.463098110407884,16.13503611903846],[-16.549707810929064,16.67389211676196],[-16.270551723688357,17.166962795474873],[-16.14634741867485,18.108481553616656],[-16.256883307347167,19.096715806550307],[-16.37765112961327,19.593817246981985],[-16.277838100641517,20.0925206568147],[-16.536323614965468,20.567866319251493],[-17.063423224342568,20.999752102130827],[-16.845193650773993,21.33332347257488],[-12.929101935263532,21.32707062426756],[-13.118754441774712,22.771220201096256],[-12.874221564169575,23.284832261645178],[-11.937224493853321,23.374594224536168],[-11.96941891117116,25.933352769468268],[-8.6872936670174,25.881056219988906],[-8.68439978680905,27.395744126896005],[-4.92333736817423,24.974574082941],[-6.453786586930335,24.956590684503425],[-5.971128709324248,20.64083344164763],[-5.488522508150438,16.325102037007966],[-5.315277268891933,16.20185374599184],[-5.537744309908447,15.501689764869257],[-9.55023840985939,15.486496893775437],[-9.700255092802706,15.264107367407362],[-10.086846482778212,15.330485744686273],[-10.650791388379417,15.132745876521426],[-11.349095017939504,15.411256008358478],[-11.666078253617854,15.388208319556298],[-11.834207526079467,14.79909699142894],[-12.170750291380301,14.616834214735505]]]}},{"type":"Feature","properties":{"abbrev":"Nigeria","name":"Nigeria","name_long":"Nigeria","iso_a2":"NG","iso_a3":"NGA","iso_n3":"566"},"geometry":{"type":"Polygon","coordinates":[[[8.500287713259695,4.771982937026849],[7.46210818851594,4.412108262546241],[7.082596469764439,4.464689032403228],[6.6980721370806,4.240594183769517],[5.898172641634687,4.262453314628985],[5.362804803090881,4.887970689305959],[5.033574252959368,5.611802476418234],[4.325607130560683,6.270651149923467],[3.574180128604553,6.258300482605719],[2.691701694356254,6.258817246928629],[2.74906253420022,7.870734361192888],[2.723792758809509,8.50684540448971],[2.912308383810256,9.13760793704432],[3.220351596702101,9.4441525333997],[3.705438266625919,10.063210354040208],[3.600070021182801,10.332186184119408],[3.797112257511714,10.734745591673105],[3.572216424177469,11.327939357951518],[3.611180454125559,11.660167141155966],[3.680633579125811,12.552903347214226],[3.967282749048849,12.956108710171575],[4.107945997747322,13.531215725147831],[4.368343540066064,13.747481594289324],[5.443058302440164,13.865923977102298],[6.445426059605637,13.492768459522678],[6.820441928747754,13.115091254117518],[7.330746697630018,13.0980380314612],[7.804671258178786,13.343526923063745],[9.014933302454466,12.82665924728043],[9.524928012742945,12.851102199754479],[10.114814487354693,13.27725189864941],[10.701031935273704,13.246917832894084],[10.989593133191535,13.38732269943111],[11.527803175511394,13.328980007373588],[12.302071160540523,13.037189032437524],[13.08398725754887,13.596147162322566],[13.318701613018561,13.556356309457826],[13.99535281744835,12.461565253138346],[14.181336297266792,12.483656927943116],[14.577177768622533,12.085360826053503],[14.468192172918975,11.904751695193411],[14.415378859116686,11.572368882692075],[13.572949659894562,10.798565985553566],[13.308676385153918,10.160362046748928],[13.167599724997103,9.640626328973411],[12.955467970438974,9.417771714714704],[12.753671502339214,8.717762762888995],[12.218872104550599,8.305824082874324],[12.063946160539558,7.799808457872302],[11.839308709366803,7.397042344589436],[11.74577436691851,6.981382961449753],[11.05878787603035,6.644426784690594],[10.497375115611417,7.055357774275564],[10.118276808318257,7.038769639509879],[9.522705926154401,6.453482367372117],[9.233162876023044,6.444490668153334],[8.757532993208628,5.479665839047911],[8.500287713259695,4.771982937026849]]]}},{"type":"Feature","properties":{"abbrev":"Rwa.","name":"Rwanda","name_long":"Rwanda","iso_a2":"RW","iso_a3":"RWA","iso_n3":"646"},"geometry":{"type":"Polygon","coordinates":[[[30.41910485201924,-1.134659112150416],[30.81613488131771,-1.698914076345389],[30.75830895358311,-2.287250257988369],[30.469696079232985,-2.413857517103458],[29.938359002407942,-2.348486830254238],[29.632176141078588,-2.917857761246097],[29.024926385216787,-2.839257907730158],[29.117478875451553,-2.292211195488385],[29.25483483248334,-2.215109958508911],[29.29188683443661,-1.620055840667987],[29.579466180140884,-1.341313164885626],[29.82151858899601,-1.443322442229785],[30.41910485201924,-1.134659112150416]]]}},{"type":"Feature","properties":{"abbrev":"W. Sah.","name":"W. Sahara","name_long":"Western Sahara","iso_a2":"EH","iso_a3":"ESH","iso_n3":"732"},"geometry":{"type":"Polygon","coordinates":[[[-8.794883999049077,27.120696316022503],[-8.817828334986672,27.656425889592356],[-8.665589565454809,27.656425889592356],[-8.665124477564191,27.589479071558227],[-8.68439978680905,27.395744126896005],[-8.6872936670174,25.881056219988906],[-11.96941891117116,25.933352769468268],[-11.937224493853321,23.374594224536168],[-12.874221564169575,23.284832261645178],[-13.118754441774712,22.771220201096256],[-12.929101935263532,21.32707062426756],[-16.845193650773993,21.33332347257488],[-17.063423224342568,20.999752102130827],[-17.020428432675743,21.42231028898148],[-17.00296179856109,21.420734157796577],[-14.750954555713534,21.500600083903663],[-14.630832688851072,21.8609398462749],[-14.221167771857251,22.31016307218816],[-13.891110398809047,23.691009019459305],[-12.50096269372537,24.7701162785782],[-12.030758836301615,26.030866197203043],[-11.718219773800357,26.104091701760623],[-11.392554897496979,26.883423977154365],[-10.551262579785273,26.990807603456886],[-10.189424200877582,26.860944729107405],[-9.735343390328879,26.860944729107405],[-9.413037482124466,27.088476060488517],[-8.794883999049077,27.120696316022503]]]}},{"type":"Feature","properties":{"abbrev":"S. Sud.","name":"S. Sudan","name_long":"South Sudan","iso_a2":"SS","iso_a3":"SSD","iso_n3":"728"},"geometry":{"type":"Polygon","coordinates":[[[33.963392794971185,9.464285229420625],[33.97498,8.68456],[33.82550000000015,8.37916],[33.29480000000012,8.35458],[32.95418,7.784970000000102],[33.568290000000104,7.71334],[34.0751,7.22595],[34.25032,6.82607],[34.70702,6.59422000000012],[35.298007118233095,5.506],[34.62019626785394,4.847122742082036],[34.005,4.249884947362147],[33.3900000000001,3.79],[32.68642,3.79232],[31.881450000000143,3.55827],[31.24556,3.7819],[30.83385,3.50917],[29.95349,4.1737],[29.71599531425602,4.600804755060153],[29.159078403446642,4.389267279473245],[28.696677687298802,4.455077215996994],[28.428993768027,4.287154649264608],[27.979977247842953,4.408413397637388],[27.374226108517632,5.233944403500175],[27.213409051225256,5.550953477394614],[26.465909458123292,5.946717434101856],[26.21341840994512,6.546603298362129],[25.796647983511264,6.97931590415817],[25.124130893664812,7.500085150579424],[25.114932488716875,7.825104071479245],[24.5673690121522,8.229187933785454],[23.886979580860665,8.619729712933065],[24.19406772118765,8.728696472403897],[24.53741516360202,8.91753756573172],[24.794925745412684,9.810240916008695],[25.069603699343986,10.273759963267992],[25.790633328413946,10.411098940233728],[25.962307049621018,10.136420986302424],[26.477328213242515,9.552730334198088],[26.752006167173818,9.466893473594496],[27.112520981708883,9.638567194801624],[27.833550610778783,9.60423245056029],[27.970889587744352,9.398223985111654],[28.966597170745782,9.398223985111654],[29.000931914987174,9.60423245056029],[29.515953078608614,9.793073543888056],[29.61895731133285,10.084918869940225],[29.99663949798855,10.290927335388687],[30.83784073190338,9.70723668328452],[31.35286189552488,9.810240916008695],[31.850715687025517,10.531270545078826],[32.400071594888345,11.080626452941488],[32.31423473428475,11.68148447716652],[32.073891524594785,11.973329803218519],[32.67474954881965,12.02483191958072],[32.743419037302544,12.248007757149992],[33.20693808456178,12.179338268667093],[33.086766479716744,11.441141267476496],[33.20693808456178,10.720111638406593],[33.72195924818311,10.325262079630193],[33.842130853028145,9.981914637215993],[33.82496348090751,9.484060845715362],[33.963392794971185,9.464285229420625]]]}},{"type":"Feature","properties":{"abbrev":"S.L.","name":"Sierra Leone","name_long":"Sierra Leone","iso_a2":"SL","iso_a3":"SLE","iso_n3":"694"},"geometry":{"type":"Polygon","coordinates":[[[-11.438779466182055,6.785916856305747],[-11.70819454593574,6.860098374860726],[-12.428098924193819,7.26294200279203],[-12.949049038128194,7.798645738145738],[-13.124025437868482,8.163946438016978],[-13.246550258832515,8.903048610871508],[-12.71195756677308,9.342711696810767],[-12.59671912276221,9.62018830000197],[-12.425928514037565,9.835834051955956],[-12.150338100625005,9.858571682164381],[-11.917277390988659,10.046983954300558],[-11.117481248407328,10.045872911006285],[-10.8391519840833,9.688246161330369],[-10.622395188835041,9.267910061068278],[-10.654770473665891,8.977178452994194],[-10.494315151399633,8.715540676300435],[-10.505477260774668,8.348896389189605],[-10.23009355309128,8.406205552601293],[-10.69559485517648,7.939464016141087],[-11.146704270868383,7.396706447779536],[-11.19980180504828,7.105845648624737],[-11.438779466182055,6.785916856305747]]]}},{"type":"Feature","properties":{"abbrev":"Sen.","name":"Senegal","name_long":"Senegal","iso_a2":"SN","iso_a3":"SEN","iso_n3":"686"},"geometry":{"type":"Polygon","coordinates":[[[-16.713728807023468,13.594958604379853],[-17.126106736712615,14.373515733289224],[-17.62504269049066,14.729540513564071],[-17.18517289882223,14.919477240452863],[-16.700706346085923,15.621527411354108],[-16.463098110407884,16.13503611903846],[-16.12069007004193,16.455662543193384],[-15.62366614425869,16.369337063049812],[-15.135737270558817,16.587282416240782],[-14.577347581428981,16.59826365810281],[-14.099521450242179,16.304302273010492],[-13.43573767745306,16.03938304286619],[-12.830658331747516,15.303691514542946],[-12.170750291380301,14.616834214735505],[-12.12488745772126,13.994727484589788],[-11.927716030311615,13.422075100147394],[-11.55339779300543,13.141213690641067],[-11.467899135778524,12.754518947800975],[-11.51394283695059,12.442987575729418],[-11.65830095055793,12.386582749882834],[-12.203564825885634,12.465647691289405],[-12.278599005573438,12.354440008997285],[-12.499050665730564,12.332089952031057],[-13.217818162478238,12.575873521367967],[-13.700476040084325,12.586182969610194],[-15.548476935274008,12.628170070847347],[-15.816574266004254,12.515567124883345],[-16.147716844130585,12.547761542201187],[-16.677451951554573,12.384851589401052],[-16.841524624081273,13.15139394780256],[-15.931295945692211,13.130284125211332],[-15.691000535534995,13.270353094938455],[-15.511812506562935,13.278569647672867],[-15.141163295949466,13.509511623585238],[-14.712197231494626,13.298206691943777],[-14.277701788784553,13.280585028532242],[-13.844963344772408,13.505041612192002],[-14.046992356817482,13.79406789800045],[-14.376713833055788,13.625680243377372],[-14.687030808968487,13.630356960499784],[-15.08173539881382,13.876491807505984],[-15.39877031092446,13.86036876063092],[-15.62459632003994,13.62358734786956],[-16.713728807023468,13.594958604379853]]]}},{"type":"Feature","properties":{"abbrev":"Solnd.","name":"Somaliland","name_long":"Somaliland","iso_a2":null,"iso_a3":null,"iso_n3":null},"geometry":{"type":"Polygon","coordinates":[[[48.938129510296505,9.451748968946674],[48.48673587422701,8.83762624758998],[47.78942,8.003],[46.94832848489796,7.996876532417388],[43.67875,9.18358000000012],[43.29697513201876,9.540477403191744],[42.92812,10.021940000000143],[42.55876,10.57258000000013],[42.77685184100096,10.92687856693442],[43.14530480324214,11.462039699748857],[43.470659620951665,11.27770986576388],[43.66666832863484,10.864169216348158],[44.11780358254282,10.445538438351605],[44.614259067570856,10.442205308468942],[45.55694054543915,10.698029486529776],[46.645401238803004,10.816549383991173],[47.525657586462785,11.12722809492999],[48.02159630716778,11.193063869669743],[48.37878380716927,11.375481675660126],[48.94820641459347,11.41062164961852],[48.94200524271844,11.394266058798166],[48.93849124532261,10.982327378783452],[48.93823286316109,9.973500067581483],[48.938129510296505,9.451748968946674]]]}},{"type":"Feature","properties":{"abbrev":"Sudan","name":"Sudan","name_long":"Sudan","iso_a2":"SD","iso_a3":"SDN","iso_n3":"729"},"geometry":{"type":"Polygon","coordinates":[[[33.963392794971185,9.464285229420625],[33.82496348090751,9.484060845715362],[33.842130853028145,9.981914637215993],[33.72195924818311,10.325262079630193],[33.20693808456178,10.720111638406593],[33.086766479716744,11.441141267476496],[33.20693808456178,12.179338268667093],[32.743419037302544,12.248007757149992],[32.67474954881965,12.02483191958072],[32.073891524594785,11.973329803218519],[32.31423473428475,11.68148447716652],[32.400071594888345,11.080626452941488],[31.850715687025517,10.531270545078826],[31.35286189552488,9.810240916008695],[30.83784073190338,9.70723668328452],[29.99663949798855,10.290927335388687],[29.61895731133285,10.084918869940225],[29.515953078608614,9.793073543888056],[29.000931914987174,9.60423245056029],[28.966597170745782,9.398223985111654],[27.970889587744352,9.398223985111654],[27.833550610778783,9.60423245056029],[27.112520981708883,9.638567194801624],[26.752006167173818,9.466893473594496],[26.477328213242515,9.552730334198088],[25.962307049621018,10.136420986302424],[25.790633328413946,10.411098940233728],[25.069603699343986,10.273759963267992],[24.794925745412684,9.810240916008695],[24.53741516360202,8.91753756573172],[24.19406772118765,8.728696472403897],[23.886979580860665,8.619729712933065],[23.805813429466752,8.666318874542526],[23.459012892355986,8.95428579348902],[23.394779087017298,9.26506785729225],[23.55724979014292,9.68121816653877],[23.554304233502194,10.08925527591532],[22.97754357269275,10.71446259199854],[22.864165480244253,11.142395127807617],[22.87622,11.384610000000123],[22.50869,11.67936],[22.49762,12.26024],[22.28801,12.64605],[21.93681,12.588180000000136],[22.03759,12.95546],[22.29658,13.37232],[22.18329,13.78648],[22.51202,14.09318],[22.30351,14.32682],[22.56795000000011,14.944290000000137],[23.024590000000103,15.68072],[23.886890000000108,15.61084],[23.837660000000138,19.580470000000105],[23.850000000000136,20],[25.00000000000011,20.00304],[25.00000000000011,22],[29.02,22],[32.9,22],[36.86623,22],[37.1887200000001,21.01885],[36.96941,20.83744000000013],[37.11470000000014,19.80796],[37.4817900000001,18.61409],[37.86276,18.36786],[38.410089959473225,17.99830739997031],[37.90400000000011,17.42754],[37.16747,17.263140000000135],[36.852530000000115,16.95655],[36.75389,16.29186],[36.32322,14.82249],[36.42951,14.42211],[36.27022,13.563330000000121],[35.86363,12.57828],[35.26049,12.08286],[34.83163000000013,11.318960000000118],[34.73115000000013,10.910170000000107],[34.25745,10.63009],[33.96162,9.58358],[33.963392794971185,9.464285229420625]]]}},{"type":"Feature","properties":{"abbrev":"Som.","name":"Somalia","name_long":"Somalia","iso_a2":"SO","iso_a3":"SOM","iso_n3":"706"},"geometry":{"type":"Polygon","coordinates":[[[49.72862,11.5789],[50.25878,11.67957],[50.73202,12.0219],[51.1112,12.02464],[51.13387,11.74815],[51.04153,11.16651],[51.04531,10.6409],[50.83418,10.27972],[50.55239,9.19874],[50.07092,8.08173],[49.4527,6.80466],[48.59455,5.33911],[47.74079,4.2194],[46.56476,2.85529],[45.56399,2.04576],[44.06815,1.05283],[43.13597,0.2922],[42.04157,-0.91916],[41.81095,-1.44647],[41.58513,-1.68325],[40.993,-0.85829],[40.98105,2.78452],[41.85508309264397,3.918911920483727],[42.12861,4.23413],[42.76967,4.25259],[43.66087,4.95755],[44.9636,5.00162],[47.78942,8.003],[48.48673587422695,8.837626247589995],[48.93812951029645,9.451748968946617],[48.93823286316103,9.973500067581512],[48.938491245322496,10.982327378783467],[48.94200524271835,11.394266058798138],[48.94820475850974,11.410617281697963],[49.26776,11.43033],[49.72862,11.5789]]]}},{"type":"Feature","properties":{"abbrev":"Swz.","name":"Swaziland","name_long":"Swaziland","iso_a2":"SZ","iso_a3":"SWZ","iso_n3":"748"},"geometry":{"type":"Polygon","coordinates":[[[32.07166548028107,-26.73382008230491],[31.868060337051077,-27.177927341421277],[31.282773064913325,-27.285879408478998],[30.68596194837448,-26.74384531016953],[30.676608514129637,-26.398078301704608],[30.949666782359913,-26.022649021104147],[31.04407962415715,-25.731452325139443],[31.333157586397906,-25.66019052500895],[31.837777947728064,-25.84333180105135],[31.98577924981197,-26.291779880480227],[32.07166548028107,-26.73382008230491]]]}},{"type":"Feature","properties":{"abbrev":"Chad","name":"Chad","name_long":"Chad","iso_a2":"TD","iso_a3":"TCD","iso_n3":"148"},"geometry":{"type":"Polygon","coordinates":[[[14.495787387762903,12.859396267137356],[14.595781284247607,13.330426947477859],[13.95447675950561,13.353448798063766],[13.956698846094127,13.996691189016929],[13.540393507550789,14.367133693901222],[13.97217,15.68437],[15.247731154041846,16.627305813050782],[15.30044111497972,17.927949937405003],[15.685740594147774,19.957180080642384],[15.903246697664313,20.387618923417506],[15.487148064850146,20.730414537025638],[15.47106,21.04845],[15.096887648181848,21.30851878507491],[14.8513,22.862950000000126],[15.86085,23.40972],[19.84926,21.49509],[23.837660000000138,19.580470000000105],[23.886890000000108,15.61084],[23.024590000000103,15.68072],[22.56795000000011,14.944290000000137],[22.30351,14.32682],[22.51202,14.09318],[22.18329,13.78648],[22.29658,13.37232],[22.03759,12.95546],[21.93681,12.588180000000136],[22.28801,12.64605],[22.49762,12.26024],[22.50869,11.67936],[22.87622,11.384610000000123],[22.864165480244253,11.142395127807617],[22.23112918466876,10.97188873946061],[21.72382164885954,10.567055568885962],[21.00086836109631,9.47598521569148],[20.05968549976427,9.01270600019484],[19.09400800952608,9.07484691002577],[18.81200971850927,8.982914536978626],[18.911021762780592,8.630894680206438],[18.389554884523303,8.281303615751881],[17.964929640380888,7.890914008002994],[16.70598839688637,7.508327541529979],[16.456184523187403,7.734773667832939],[16.290561557691888,7.754307359239418],[16.106231723706742,7.497087917506462],[15.279460483469164,7.421924546738012],[15.43609174974574,7.692812404811889],[15.120865512765306,8.382150173369437],[14.97999555833769,8.796104234243444],[14.544466586981855,8.96586131432224],[13.954218377344091,9.549494940626685],[14.171466098699113,10.021378282100045],[14.62720055508106,9.920919297724595],[14.9093538753948,9.99212942142276],[15.467872755605244,9.982336737503543],[14.923564894275046,10.891325181517516],[14.960151808337683,11.555574042197236],[14.89336,12.21905],[14.495787387762903,12.859396267137356]]]}},{"type":"Feature","properties":{"abbrev":"Togo","name":"Togo","name_long":"Togo","iso_a2":"TG","iso_a3":"TGO","iso_n3":"768"},"geometry":{"type":"Polygon","coordinates":[[[1.865240512712319,6.142157701029731],[1.060121697604927,5.928837388528876],[0.836931186536333,6.279978745952149],[0.570384148774849,6.914358628767189],[0.490957472342245,7.411744289576475],[0.712029249686878,8.31246450442383],[0.461191847342121,8.677222601756014],[0.365900506195885,9.465003973829482],[0.367579990245389,10.19121287682718],[-0.049784715159944,10.706917832883931],[0.023802524423701,11.018681748900804],[0.899563022474069,10.99733938236426],[0.772335646171484,10.470808213742359],[1.077795037448738,10.175606594275024],[1.425060662450136,9.825395412633],[1.46304284018467,9.334624335157088],[1.664477573258381,9.12859039960938],[1.618950636409238,6.832038072126237],[1.865240512712319,6.142157701029731]]]}},{"type":"Feature","properties":{"abbrev":"Tun.","name":"Tunisia","name_long":"Tunisia","iso_a2":"TN","iso_a3":"TUN","iso_n3":"788"},"geometry":{"type":"Polygon","coordinates":[[[9.482139926805274,30.307556057246188],[9.055602654668148,32.10269196220129],[8.439102817426118,32.50628489840082],[8.430472853233368,32.74833730725595],[7.612641635782182,33.34411489514896],[7.524481642292244,34.09737641045146],[8.140981479534304,34.65514598239379],[8.376367628623768,35.47987600355594],[8.217824334352315,36.433176988260286],[8.420964389691676,36.94642731378316],[9.509993523810607,37.349994411766545],[10.210002475636317,37.230001735984814],[10.18065026209453,36.724037787415085],[11.028867221733348,37.09210317641396],[11.100025668999251,36.899996039368915],[10.600004510143094,36.410000108377375],[10.593286573945136,35.94744436293281],[10.939518670300687,35.698984076473494],[10.807847120821009,34.83350718844919],[10.149592726287125,34.3307730168977],[10.339658644256616,33.78574168551532],[10.856836378633687,33.76874013929128],[11.108500603895122,33.293342800422195],[11.48878746913101,33.13699575452314],[11.432253452203696,32.368903103152874],[10.944789666394456,32.081814683555365],[10.636901482799487,31.761420803345754],[9.950225050505082,31.376069647745254],[10.056575148161755,30.9618313664936],[9.970017124072854,30.539324856075243],[9.482139926805274,30.307556057246188]]]}},{"type":"Feature","properties":{"abbrev":"Tanz.","name":"Tanzania","name_long":"Tanzania","iso_a2":"TZ","iso_a3":"TZA","iso_n3":"834"},"geometry":{"type":"Polygon","coordinates":[[[33.9037111971046,-0.95],[34.07262,-1.05982],[37.69869,-3.09699],[37.7669,-3.67712],[39.20222,-4.67677],[38.74054,-5.90895],[38.79977,-6.47566],[39.44,-6.839999999999861],[39.470000000000134,-7.1],[39.19469,-7.7039],[39.25203,-8.00781],[39.18652,-8.48551],[39.53574,-9.112369999999883],[39.9496,-10.0984],[40.31659,-10.317099999999868],[39.521,-10.89688],[38.42755659358778,-11.285202325081627],[37.82764,-11.26879],[37.47129,-11.56876],[36.77515099462289,-11.594537448780784],[36.514081658684404,-11.720938002166747],[35.31239790216915,-11.439146416879169],[34.559989047999466,-11.520020033415847],[34.28,-10.16],[33.940837724096525,-9.693673841980285],[33.73972,-9.41715],[32.75937544122138,-9.230599053589003],[32.19186486179194,-8.930358981973257],[31.556348097466635,-8.762048841998647],[31.15775133695007,-8.594578747317314],[30.74,-8.34],[30.2,-7.08],[29.62,-6.52],[29.419992710088305,-5.939998874539299],[29.51998660657307,-5.419978936386258],[29.33999759290037,-4.499983412294114],[29.753512404099865,-4.452389418153302],[30.11632,-4.09012],[30.50554,-3.56858],[30.75224,-3.35931],[30.74301,-3.03431],[30.52766,-2.80762],[30.46967,-2.41383],[30.758308953583136,-2.287250257988376],[30.81613488131785,-1.698914076345375],[30.4191048520193,-1.134659112150416],[30.769860000000108,-1.01455],[31.86617,-1.02736],[33.9037111971046,-0.95]]]}},{"type":"Feature","properties":{"abbrev":"Uga.","name":"Uganda","name_long":"Uganda","iso_a2":"UG","iso_a3":"UGA","iso_n3":"800"},"geometry":{"type":"Polygon","coordinates":[[[31.86617,-1.02736],[30.769860000000108,-1.01455],[30.4191048520193,-1.134659112150416],[29.821518588996124,-1.443322442229771],[29.579466180141022,-1.341313164885605],[29.58783776217217,-0.587405694179381],[29.8195,-0.2053],[29.875778842902434,0.597379868976361],[30.08615359876279,1.062312730306417],[30.46850752129029,1.583805446779706],[30.852670118948136,1.849396470543752],[31.17414920423596,2.204465236821306],[30.77332,2.339890000000139],[30.83385,3.50917],[31.24556,3.7819],[31.88145,3.55827],[32.68642,3.79232],[33.3900000000001,3.79],[34.005,4.249884947362147],[34.47913,3.5556],[34.59607,3.053740000000118],[35.03599,1.90584],[34.6721,1.17694],[34.18,0.515],[33.893568969666994,0.109813537861839],[33.9037111971046,-0.95],[31.86617,-1.02736]]]}},{"type":"Feature","properties":{"abbrev":"S.Af.","name":"South Africa","name_long":"South Africa","iso_a2":"ZA","iso_a3":"ZAF","iso_n3":"710"},"geometry":{"type":"Polygon","coordinates":[[[31.521001417778876,-29.257386976846252],[31.325561150851,-29.401977634398914],[30.901762729625343,-29.90995696382804],[30.622813348113823,-30.42377573010613],[30.05571618014278,-31.140269463832958],[28.925552605919535,-32.17204111097249],[28.2197558936771,-32.771952813448856],[27.464608188595975,-33.2269637997788],[26.419452345492825,-33.61495045342619],[25.90966434093349,-33.6670402971764],[25.780628289500697,-33.944646091448334],[25.172861769315972,-33.796851495093584],[24.677853224392123,-33.98717579522455],[23.594043409934642,-33.794474379208154],[22.988188917744733,-33.91643075941698],[22.574157342222236,-33.864082533505304],[21.542799106541025,-34.258838799782936],[20.689052768647002,-34.417175388325234],[20.071261020597632,-34.79513681410799],[19.61640506356457,-34.81916635512371],[19.193278435958717,-34.46259897230979],[18.85531456876987,-34.444305515278465],[18.42464318204938,-33.99787281670896],[18.377410922934615,-34.13652068454807],[18.244499139079917,-33.86775156019802],[18.250080193767445,-33.28143075941444],[17.92519046394844,-32.61129078545343],[18.247909783611192,-32.42913136162456],[18.22176150887148,-31.66163298922567],[17.56691775886887,-30.725721123987547],[17.064416131262703,-29.87864104585916],[17.062917514726223,-29.875953871379984],[16.344976840895242,-28.576705010697697],[16.824017368240902,-28.082161553664466],[17.218928663815404,-28.35594329194681],[17.387497185951503,-28.78351409272978],[17.83615197110953,-28.85637786226132],[18.464899122804752,-29.04546192801728],[19.002127312911085,-28.972443129188864],[19.894734327888614,-28.461104831660776],[19.895767856534434,-24.767790215760588],[20.165725538827186,-24.917961928000768],[20.758609246511835,-25.86813648855145],[20.66647016773544,-26.477453301704923],[20.88960900237174,-26.828542982695915],[21.60589603036939,-26.726533705351756],[22.105968865657868,-26.280256036079138],[22.57953169118059,-25.979447523708146],[22.8242712745149,-25.500458672794768],[23.312096795350186,-25.26868987396572],[23.73356977712271,-25.390129489851613],[24.211266717228792,-25.670215752873574],[25.025170525825786,-25.7196700985769],[25.66466637543772,-25.486816094669713],[25.76584882986521,-25.174845472923675],[25.94165205252216,-24.69637338633322],[26.4857532081233,-24.616326592713104],[26.786406691197413,-24.240690606383485],[27.119409620886245,-23.574323011979775],[28.01723595552525,-22.827753594659075],[29.43218834810904,-22.091312758067588],[29.839036899542972,-22.102216485281176],[30.322883335091774,-22.27161183033393],[30.65986535006709,-22.151567478119915],[31.191409132621285,-22.2515096981724],[31.670397983534652,-23.658969008073864],[31.93058882012425,-24.369416599222536],[31.75240848158188,-25.484283949487413],[31.837777947728064,-25.84333180105135],[31.333157586397906,-25.66019052500895],[31.04407962415715,-25.731452325139443],[30.949666782359913,-26.022649021104147],[30.676608514129637,-26.398078301704608],[30.68596194837448,-26.74384531016953],[31.282773064913325,-27.285879408478998],[31.868060337051077,-27.177927341421277],[32.07166548028107,-26.73382008230491],[32.830120477028885,-26.742191664336197],[32.580264926897684,-27.470157566031816],[32.46213260267845,-28.301011244420557],[32.20338870619304,-28.752404880490072],[31.521001417778876,-29.257386976846252]],[[28.97826256685724,-28.955596612261715],[28.541700066855498,-28.64750172293757],[28.07433841320778,-28.851468601193588],[27.532511020627478,-29.24271087007536],[26.999261915807637,-29.875953871379984],[27.749397006956485,-30.64510588961222],[28.107204624145425,-30.54573211031495],[28.29106937023991,-30.2262167294543],[28.84839969250774,-30.070050551068253],[29.018415154748023,-29.74376555757737],[29.325166456832587,-29.257386976846252],[28.97826256685724,-28.955596612261715]]]}},{"type":"Feature","properties":{"abbrev":"Zambia","name":"Zambia","name_long":"Zambia","iso_a2":"ZM","iso_a3":"ZMB","iso_n3":"894"},"geometry":{"type":"Polygon","coordinates":[[[32.75937544122132,-9.230599053589058],[33.2313879737753,-9.6767216935648],[33.48568769708359,-10.525558770391115],[33.315310499817286,-10.796549981329697],[33.11428917820191,-11.607198174692314],[33.306422153463075,-12.435778090060218],[32.991764357237884,-12.783870537978272],[32.68816531752313,-13.712857761289275],[33.214024692525214,-13.971860039936153],[30.17948123548183,-14.796099134991527],[30.274255812305107,-15.507786960515212],[29.516834344203147,-15.644677829656388],[28.947463413211263,-16.04305144619444],[28.825868768028496,-16.389748630440614],[28.467906121542683,-16.468400160388846],[27.598243442502756,-17.290830580314008],[27.04442711763073,-17.938026218337434],[26.70677330903564,-17.961228936436484],[26.381935255648926,-17.8460421688579],[25.264225701608012,-17.736539808831417],[25.08444339366457,-17.661815687737374],[25.07695031098226,-17.57882333747662],[24.682349074001507,-17.353410739819473],[24.033861525170778,-17.295843194246324],[23.215048455506064,-17.52311614346598],[22.56247846852426,-16.898451429921813],[21.887842644953874,-16.08031015387688],[21.933886346125917,-12.898437188369359],[24.016136508894675,-12.911046237848574],[23.930922072045377,-12.565847670138854],[24.079905226342845,-12.191296888887365],[23.904153680118185,-11.722281589406322],[24.017893507592586,-11.23729827234709],[23.912215203555718,-10.926826267137514],[24.25715538910399,-10.951992689663657],[24.31451622894795,-11.26282642989927],[24.78316979340295,-11.238693536018964],[25.418118116973204,-11.330935967659961],[25.752309604604733,-11.784965101776358],[26.553087599399618,-11.924439792532127],[27.164419793412463,-11.608748467661075],[27.38879886242378,-12.132747491100666],[28.155108676879987,-12.272480564017897],[28.523561639121027,-12.698604424696683],[28.934285922976837,-13.248958428605135],[29.69961388521949,-13.257226657771831],[29.61600141777123,-12.178894545137311],[29.34154788586909,-12.360743910372413],[28.642417433392353,-11.971568698782315],[28.372253045370428,-11.793646742401393],[28.49606977714177,-10.789883721564044],[28.67368167492893,-9.605924981324932],[28.449871046672826,-9.164918308146085],[28.7348665707625,-8.526559340044578],[29.002912225060467,-8.407031752153472],[30.346086053190813,-8.238256524288218],[30.740015496551788,-8.340007419470915],[31.15775133695005,-8.594578747317366],[31.556348097466497,-8.762048841998642],[32.19186486179197,-8.930358981973278],[32.75937544122132,-9.230599053589058]]]}},{"type":"Feature","properties":{"abbrev":"Zimb.","name":"Zimbabwe","name_long":"Zimbabwe","iso_a2":"ZW","iso_a3":"ZWE","iso_n3":"716"},"geometry":{"type":"Polygon","coordinates":[[[31.191409132621285,-22.2515096981724],[30.65986535006709,-22.151567478119915],[30.322883335091774,-22.27161183033393],[29.839036899542972,-22.102216485281176],[29.43218834810904,-22.091312758067588],[28.794656202924212,-21.63945403410745],[28.021370070108617,-21.485975030200585],[27.72722781750326,-20.851801853114715],[27.724747348753255,-20.499058526290387],[27.296504754350508,-20.391519870691],[26.164790887158485,-19.29308562589494],[25.85039147309473,-18.714412937090536],[25.649163445750162,-18.53602589281899],[25.264225701608012,-17.736539808831417],[26.381935255648926,-17.8460421688579],[26.70677330903564,-17.961228936436484],[27.04442711763073,-17.938026218337434],[27.598243442502756,-17.290830580314008],[28.467906121542683,-16.468400160388846],[28.825868768028496,-16.389748630440614],[28.947463413211263,-16.04305144619444],[29.516834344203147,-15.644677829656388],[30.274255812305107,-15.507786960515212],[30.338954705534544,-15.880839125230244],[31.173063999157677,-15.860943698797872],[31.636498243951195,-16.071990248277885],[31.8520406430406,-16.319417006091378],[32.32823896661022,-16.392074069893752],[32.847638787575846,-16.713398125884616],[32.84986087416439,-17.97905730557718],[32.65488569512715,-18.672089939043495],[32.61199425632489,-19.419382826416275],[32.772707960752626,-19.715592136313298],[32.65974327976258,-20.304290052982317],[32.50869306817344,-20.395292250248307],[32.244988234188014,-21.116488539313693],[31.191409132621285,-22.2515096981724]]]}},{"type":"Feature","properties":{"abbrev":"Alb.","name":"Albania","name_long":"Albania","iso_a2":"AL","iso_a3":"ALB","iso_n3":"008"},"geometry":{"type":"Polygon","coordinates":[[[20.590247430104906,41.855404161133606],[20.463175083099202,41.51508901627533],[20.605181919037364,41.08622630468522],[21.0200403174764,40.84272695572588],[20.999989861747224,40.58000397395397],[20.674996779063633,40.43499990494303],[20.615000441172754,40.11000682225938],[20.15001590341052,39.62499766698397],[19.980000441170144,39.69499339452341],[19.960001661873207,39.91500580500605],[19.406081984136733,40.250773423822466],[19.319058872157143,40.72723012955356],[19.40354983895429,41.40956574153546],[19.540027296637106,41.71998607031276],[19.37176883309496,41.877547512370654],[19.304486118250793,42.19574514420782],[19.738051385179627,42.688247382165564],[19.801613396898688,42.50009349219084],[20.0707,42.58863],[20.283754510181893,42.32025950781508],[20.52295,42.21787],[20.590247430104906,41.855404161133606]]]}},{"type":"Feature","properties":{"abbrev":"Aust.","name":"Austria","name_long":"Austria","iso_a2":"AT","iso_a3":"AUT","iso_n3":"040"},"geometry":{"type":"Polygon","coordinates":[[[16.979666782304037,48.123497015976305],[16.90375410326726,47.71486562762833],[16.340584344150415,47.71290192320123],[16.534267612380376,47.49617096616912],[16.202298211337364,46.85238597267696],[16.011663852612656,46.6836107448117],[15.137091912504985,46.65870270444703],[14.63247155117483,46.43181732846955],[13.806475457421527,46.509306138691215],[12.376485223040817,46.76755910906985],[12.153088006243054,47.11539317482645],[11.16482791509327,46.94157949481273],[11.048555942436536,46.75135854754634],[10.44270145024663,46.89354625099743],[9.932448357796659,46.92072805438296],[9.479969516649021,47.10280996356337],[9.632931756232978,47.34760122332999],[9.59422610844635,47.52505809182027],[9.896068149463188,47.580196845075704],[10.402083774465211,47.30248769793916],[10.544504021861627,47.56639923765377],[11.426414015354737,47.523766181012974],[12.141357456112788,47.703083401065776],[12.620759718484491,47.67238760028441],[12.932626987365948,47.467645575544],[13.02585127122049,47.637583523135824],[12.884102817443903,48.28914581968792],[13.243357374737,48.416114813829054],[13.595945672264437,48.87717194273715],[14.33889773932472,48.5553052842072],[14.901447381254057,48.964401760445824],[15.253415561593982,49.039074205107575],[16.02964725105022,48.73389903420793],[16.49928266771877,48.78580801044511],[16.960288120194576,48.5969823268506],[16.879982944413,48.47001333270947],[16.979666782304037,48.123497015976305]]]}},{"type":"Feature","properties":{"abbrev":"Belg.","name":"Belgium","name_long":"Belgium","iso_a2":"BE","iso_a3":"BEL","iso_n3":"056"},"geometry":{"type":"Polygon","coordinates":[[[3.314971144228537,51.345780951536085],[4.047071160507527,51.26725861266857],[4.973991326526914,51.475023708698124],[5.606975945670001,51.037298488969775],[6.156658155958779,50.80372101501058],[6.043073357781111,50.128051662794235],[5.782417433300906,50.09032786722122],[5.674051954784829,49.529483547557504],[4.799221632515809,49.985373033236385],[4.286022983425084,49.907496649772554],[3.588184441755686,50.37899241800358],[3.123251580425801,50.780363267614575],[2.658422071960274,50.79684804951574],[2.513573032246143,51.14850617126183],[3.314971144228537,51.345780951536085]]]}},{"type":"Feature","properties":{"abbrev":"Bulg.","name":"Bulgaria","name_long":"Bulgaria","iso_a2":"BG","iso_a3":"BGR","iso_n3":"100"},"geometry":{"type":"Polygon","coordinates":[[[22.65714969248299,44.23492300066128],[22.944832391051847,43.82378530534713],[23.33230228037632,43.89701080990471],[24.100679152124172,43.74105133724785],[25.569271681426926,43.68844472917472],[26.065158725699746,43.94349376075126],[27.242399529740908,44.175986029632405],[27.970107049275075,43.81246816667521],[28.558081495891997,43.70746165625813],[28.03909508638472,43.293171698574184],[27.67389773937805,42.577892361006214],[27.99672041190539,42.00735871028779],[27.135739373490477,42.14148489030134],[26.117041863720797,41.82690460872456],[26.106138136507212,41.32889883072778],[25.197201368925445,41.23448598893053],[24.49264489105803,41.583896185872035],[23.692073601992348,41.30908091894385],[22.952377150166452,41.33799388281115],[22.88137373219743,41.99929718685026],[22.380525750424592,42.32025950781509],[22.54501183440962,42.46136200618804],[22.43659467946128,42.580321153323936],[22.60480146657133,42.898518785161144],[22.986018507588483,43.211161200526966],[22.50015669118028,43.64281443946099],[22.410446404721597,44.00806346289995],[22.65714969248299,44.23492300066128]]]}},{"type":"Feature","properties":{"abbrev":"Bela.","name":"Belarus","name_long":"Belarus","iso_a2":"BY","iso_a3":"BLR","iso_n3":"112"},"geometry":{"type":"Polygon","coordinates":[[[23.48412763844985,53.91249766704114],[24.450683628037037,53.905702216194754],[25.536353794056993,54.28242340760253],[25.7684326514798,54.84696259217509],[26.58827924979039,55.16717560487167],[26.494331495883753,55.615106919977634],[27.10245975109453,55.783313707087686],[28.176709425577993,56.16912995057881],[29.229513380660308,55.918344224666356],[29.371571893030673,55.670090643936184],[29.896294386522356,55.78946320253041],[30.873909132620007,55.55097646750341],[30.971835971813135,55.08154775656404],[30.757533807098717,54.81177094178432],[31.38447228366374,54.157056382862436],[31.79142418796224,53.97463857687212],[31.731272820774507,53.79402944601202],[32.405598585751164,53.618045355842035],[32.69364301934604,53.35142080343212],[32.304519484188226,53.1327261419729],[31.49764367038293,53.1674268662569],[31.305200636528014,53.07399587667321],[31.54001834486226,52.74205231384636],[31.785998162571587,52.101677964885454],[30.927549269338982,52.04235342061438],[30.619454380014844,51.822806098022376],[30.555117221811457,51.31950348571566],[30.157363722460897,51.41613841410147],[29.254938185347925,51.368234361366895],[28.99283532076353,51.602044379271476],[28.61761274589225,51.42771393493484],[28.24161502453657,51.57222707783907],[27.454066196408434,51.59230337178447],[26.337958611768556,51.83228872334793],[25.327787713327005,51.91065603291855],[24.553106316839518,51.888461005249184],[24.00507775238421,51.61744395609446],[23.52707075368437,51.57845408793023],[23.508002150168693,52.02364655212473],[23.199493849386187,52.486977444053664],[23.799198846133375,52.69109935160657],[23.80493493011778,53.089731350306074],[23.527535841575002,53.470121568406555],[23.48412763844985,53.91249766704114]]]}},{"type":"Feature","properties":{"abbrev":"Switz.","name":"Switzerland","name_long":"Switzerland","iso_a2":"CH","iso_a3":"CHE","iso_n3":"756"},"geometry":{"type":"Polygon","coordinates":[[[9.59422610844635,47.52505809182027],[9.632931756232978,47.34760122332999],[9.479969516649021,47.10280996356337],[9.932448357796659,46.92072805438296],[10.44270145024663,46.89354625099743],[10.363378126678612,46.48357127540986],[9.92283654139038,46.31489940040919],[9.182881707403055,46.44021474871698],[8.966305779667806,46.036931871111186],[8.489952426801324,46.005150865251686],[8.31662967289438,46.16364248309086],[7.755992058959833,45.82449005795931],[7.273850945676656,45.776947740250776],[6.843592970414504,45.99114655210061],[6.500099724970425,46.42967275652944],[6.022609490593537,46.27298981382047],[6.037388950229001,46.725778713561866],[6.768713820023606,47.2877082383037],[6.736571079138059,47.541801255882845],[7.192202182655507,47.44976552997102],[7.46675906742223,47.62058197691181],[8.317301466514152,47.61357982033626],[8.522611932009765,47.830827541691285],[9.59422610844635,47.52505809182027]]]}},{"type":"Feature","properties":{"abbrev":"B.H.","name":"Bosnia and Herz.","name_long":"Bosnia and Herzegovina","iso_a2":"BA","iso_a3":"BIH","iso_n3":"070"},"geometry":{"type":"Polygon","coordinates":[[[19.00548628101012,44.86023366960916],[19.36803,44.863],[19.11761,44.42307000000011],[19.59976,44.03847],[19.454,43.56810000000013],[19.21852,43.52384],[19.03165,43.43253],[18.70648,43.20011],[18.56,42.65],[17.674921502358984,43.02856252702361],[17.297373488034452,43.44634064388736],[16.91615644701733,43.66772247982567],[16.456442905348865,44.04123973243128],[16.23966027188453,44.35114329688571],[15.750026075918981,44.81871165626256],[15.959367303133376,45.233776760430935],[16.318156772535872,45.00412669532591],[16.534939406000206,45.21160757097772],[17.002146030351014,45.233776760430935],[17.861783481526402,45.067740383477144],[18.553214145591653,45.08158966733145],[19.00548628101012,44.86023366960916]]]}},{"type":"Feature","properties":{"abbrev":"Cz. Rep.","name":"Czech Rep.","name_long":"Czech Republic","iso_a2":"CZ","iso_a3":"CZE","iso_n3":"203"},"geometry":{"type":"Polygon","coordinates":[[[16.960288120194576,48.5969823268506],[16.49928266771877,48.78580801044511],[16.02964725105022,48.73389903420793],[15.253415561593982,49.039074205107575],[14.901447381254057,48.964401760445824],[14.33889773932472,48.5553052842072],[13.595945672264437,48.87717194273715],[13.031328973043431,49.30706818297324],[12.521024204161192,49.547415269562734],[12.415190870827445,49.96912079528057],[12.240111118222558,50.266337795607285],[12.966836785543194,50.484076443069085],[13.338131951560285,50.73323436136435],[14.056227654688172,50.92691762959429],[14.307013380600637,51.117267767941414],[14.570718214586066,51.002339382524276],[15.01699588385867,51.10667409932158],[15.490972120839727,50.78472992614321],[16.23862674323857,50.69773265237984],[16.176253289462267,50.42260732685791],[16.719475945714436,50.21574656839354],[16.868769158605655,50.47397370055603],[17.55456709155112,50.36214590107641],[17.64944502123899,50.049038397819956],[18.392913852622172,49.98862864847075],[18.853144158613617,49.49622976337764],[18.554971144289482,49.49501536721878],[18.399993523846177,49.31500051533004],[18.170498488037964,49.271514797556435],[18.104972771891852,49.04398346617531],[17.913511590250465,48.996492824899086],[17.88648481616181,48.90347524677371],[17.545006951577108,48.80001902932537],[17.101984897538898,48.81696889911711],[16.960288120194576,48.5969823268506]]]}},{"type":"Feature","properties":{"abbrev":"Ger.","name":"Germany","name_long":"Germany","iso_a2":"DE","iso_a3":"DEU","iso_n3":"276"},"geometry":{"type":"Polygon","coordinates":[[[9.921906365609232,54.983104153048025],[9.9395797054529,54.596641954153256],[10.950112338920519,54.363607082733154],[10.939466993868448,54.00869334575258],[11.956252475643282,54.19648550070116],[12.518440382546714,54.47037059184799],[13.647467075259499,54.0755109727059],[14.119686313542559,53.75702912049103],[14.353315463934168,53.248171291713106],[14.074521111719434,52.98126251892535],[14.4375997250022,52.624850165408304],[14.685026482815713,52.089947414755216],[14.607098422919648,51.745188096719964],[15.016995883858781,51.10667409932171],[14.570718214586122,51.00233938252438],[14.307013380600665,51.11726776794137],[14.056227654688314,50.92691762959435],[13.338131951560397,50.73323436136428],[12.96683678554325,50.48407644306917],[12.240111118222671,50.26633779560723],[12.415190870827473,49.96912079528062],[12.521024204161336,49.54741526956275],[13.031328973043514,49.30706818297324],[13.595945672264577,48.877171942737164],[13.243357374737116,48.41611481382903],[12.884102817443873,48.28914581968786],[13.025851271220517,47.63758352313595],[12.932626987366064,47.467645575544],[12.620759718484521,47.672387600284424],[12.141357456112871,47.70308340106578],[11.426414015354851,47.52376618101306],[10.544504021861597,47.5663992376538],[10.402083774465325,47.30248769793916],[9.896068149463188,47.580196845075704],[9.594226108446376,47.5250580918202],[8.522611932009795,47.83082754169135],[8.317301466514095,47.61357982033627],[7.466759067422288,47.62058197691192],[7.593676385131062,48.33301911070373],[8.099278598674855,49.01778351500343],[6.658229607783709,49.20195831969164],[6.186320428094177,49.463802802114515],[6.242751092156993,49.90222565367873],[6.043073357781111,50.128051662794235],[6.156658155958779,50.80372101501058],[5.988658074577813,51.851615709025054],[6.589396599970826,51.852029120483394],[6.842869500362383,52.22844025329755],[7.092053256873896,53.14404328064489],[6.905139601274129,53.48216217713064],[7.100424838905268,53.69393219666267],[7.936239454793962,53.74829580343379],[8.121706170289485,53.52779246684429],[8.800734490604668,54.020785630908904],[8.572117954145368,54.39564647075405],[8.526229282270208,54.96274363872516],[9.282048780971136,54.83086538351631],[9.921906365609232,54.983104153048025]]]}},{"type":"Feature","properties":{"abbrev":"Den.","name":"Denmark","name_long":"Denmark","iso_a2":"DK","iso_a3":"DNK","iso_n3":"208"},"geometry":{"type":"MultiPolygon","coordinates":[[[[12.69000613775563,55.609990953180784],[12.089991082414741,54.80001455343793],[11.043543328504228,55.364863796604254],[10.903913608451631,55.77995473898875],[12.370904168353292,56.111407375708836],[12.69000613775563,55.609990953180784]]],[[[10.912181837618363,56.458621324277914],[10.667803989309988,56.08138336854722],[10.369992710011985,56.19000722922473],[9.649984978889307,55.469999498102055],[9.921906365609175,54.98310415304806],[9.282048780971136,54.83086538351616],[8.526229282270236,54.96274363872499],[8.120310906617588,55.517722683323626],[8.08997684086225,56.540011705137594],[8.256581658571264,56.8099693874303],[8.543437534223386,57.110002753316905],[9.42446902836761,57.17206614849948],[9.775558709358563,57.447940782289656],[10.580005730846153,57.73001658795485],[10.546105991262692,57.215732733786155],[10.250000034230226,56.89001618105047],[10.369992710011985,56.609981594460834],[10.912181837618363,56.458621324277914]]]]}},{"type":"Feature","properties":{"abbrev":"Sp.","name":"Spain","name_long":"Spain","iso_a2":"ES","iso_a3":"ESP","iso_n3":"724"},"geometry":{"type":"Polygon","coordinates":[[[-9.034817674180246,41.88057058365967],[-8.984433152695672,42.59277517350627],[-9.392883673530648,43.0266246608127],[-7.978189663108309,43.748337714200986],[-6.754491746436756,43.567909450853925],[-5.411886359061596,43.574239813809676],[-4.347842779955783,43.40344920508504],[-3.51753170410609,43.4559007838613],[-1.901351284177764,43.42280202897834],[-1.502770961910528,43.03401439063043],[0.338046909190581,42.57954600683954],[0.701590610363894,42.7957343613326],[1.826793247087153,42.34338471126569],[2.985998976258458,42.47301504166986],[3.039484083680549,41.892120266276905],[2.091841668312185,41.22608856868309],[0.810524529635188,41.01473196060934],[0.721331007499401,40.678318386389236],[0.106691521819869,40.12393362076202],[-0.278711310212941,39.30997813573272],[0.111290724293838,38.73851430923303],[-0.467123582349103,38.29236583104115],[-0.683389451490598,37.642353827457825],[-1.438382127274849,37.443063666324214],[-2.146452602538119,36.67414419203728],[-3.415780808923387,36.65889964451118],[-4.368900926114719,36.677839056946155],[-4.995219285492211,36.32470815687964],[-5.377159796561457,35.946850083961465],[-5.866432257500904,36.02981659600606],[-6.236693894872175,36.367677110330334],[-6.520190802425404,36.94291331638732],[-7.453725551778092,37.09778758396607],[-7.537105475281024,37.42890432387623],[-7.166507941099865,37.803894354802225],[-7.029281175148796,38.07576406508977],[-7.374092169616318,38.37305858006492],[-7.098036668313128,39.03007274022378],[-7.498632371439725,39.62957103124181],[-7.066591559263529,39.71189158788277],[-7.026413133156595,40.184524237624245],[-6.864019944679385,40.33087189387483],[-6.851126674822552,41.11108266861753],[-6.389087693700915,41.381815497394655],[-6.668605515967656,41.883386949219584],[-7.251308966490824,41.91834605566505],[-7.422512986673795,41.79207469335983],[-8.013174607769912,41.790886135417125],[-8.263856980817792,42.28046865495034],[-8.67194576662672,42.13468943945496],[-9.034817674180246,41.88057058365967]]]}},{"type":"Feature","properties":{"abbrev":"Est.","name":"Estonia","name_long":"Estonia","iso_a2":"EE","iso_a3":"EST","iso_n3":"233"},"geometry":{"type":"Polygon","coordinates":[[[24.312862583114622,57.79342357037698],[24.42892785004216,58.38341339785328],[24.061198357853186,58.25737457949341],[23.42656009287668,58.612753404364625],[23.339795363058645,59.18724030215338],[24.604214308376182,59.46585378685502],[25.86418908051664,59.61109039981134],[26.949135776484525,59.445803331125774],[27.981114129353244,59.47538808861287],[28.13169925305175,59.30082510033092],[27.42016645682494,58.72458120384424],[27.71668582531572,57.79189911562437],[27.28818484875151,57.47452830670383],[26.463532342237787,57.47638865826633],[25.602809685984365,57.84752879498657],[25.16459354014927,57.97015696881519],[24.312862583114622,57.79342357037698]]]}},{"type":"Feature","properties":{"abbrev":"Fin.","name":"Finland","name_long":"Finland","iso_a2":"FI","iso_a3":"FIN","iso_n3":"246"},"geometry":{"type":"Polygon","coordinates":[[[28.591929559043194,69.06477692328666],[28.445943637818658,68.36461294216404],[29.977426385220607,67.69829702419266],[29.054588657352326,66.94428620062193],[30.21765,65.80598],[29.544429559046986,64.94867157659048],[30.44468468600371,64.20445343693909],[30.035872430142714,63.55281362573855],[31.51609215671112,62.86768748641288],[31.139991082490894,62.35769277612441],[30.211107212044446,61.78002777774969],[28.069997592895277,60.503516547275844],[26.25517296723697,60.4239606797625],[24.496623976344523,60.05731639265165],[22.869694858499457,59.846373196036225],[22.290763787533592,60.39192129174154],[21.322244093519316,60.72016998965952],[21.544866163832694,61.7053294948718],[21.05921105315369,62.60739329695874],[21.536029493910803,63.18973501245587],[22.442744174903993,63.81781037053129],[24.730511508897536,64.90234365504082],[25.398067661243942,65.11142650009373],[25.294043003040404,65.53434642197045],[23.903378533633802,66.00692739527962],[23.565879754335583,66.39605093043743],[23.53947309743444,67.93600861273525],[21.978534783626117,68.6168456081807],[20.645592889089528,69.10624726020087],[21.244936150810673,69.37044302029307],[22.356237827247412,68.84174144151491],[23.66204959483076,68.89124746365054],[24.735679152126725,68.64955678982146],[25.68921268077636,69.09211375596904],[26.17962202322624,69.82529897732614],[27.732292107867863,70.16419302029625],[29.01557295097197,69.76649119737799],[28.591929559043194,69.06477692328666]]]}},{"type":"Feature","properties":{"abbrev":"Fr.","name":"France","name_long":"France","iso_a2":"FR","iso_a3":"FRA","iso_n3":"250"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-52.55642473001839,2.504705308437053],[-52.93965715189498,2.124857692875622],[-53.418465135295264,2.053389187016037],[-53.554839240113495,2.334896551925965],[-53.77852067728889,2.376702785650053],[-54.08806250671728,2.105556545414629],[-54.52475419779975,2.311848863123785],[-54.27122962097578,2.738747870286943],[-54.18428402364474,3.194172268075235],[-54.01150387227682,3.622569891774858],[-54.399542202356514,4.212611395683481],[-54.47863298197922,4.896755682795643],[-53.95804460307093,5.756548163267809],[-53.618452928264844,5.646529038918402],[-52.88214128275408,5.409850979021599],[-51.82334286152593,4.565768133966145],[-51.65779741067888,4.156232408053029],[-52.24933753112398,3.241094468596287],[-52.55642473001839,2.504705308437053]]],[[[9.560016310269134,42.15249197037957],[9.229752231491773,41.38000682226445],[8.77572309737536,41.58361196549444],[8.54421268070783,42.25651662858308],[8.746009148807588,42.62812185319396],[9.390000848028905,43.00998484961474],[9.560016310269134,42.15249197037957]]],[[[3.588184441755715,50.37899241800358],[4.28602298342514,49.907496649772554],[4.799221632515753,49.98537303323633],[5.674051954784885,49.52948354755745],[5.897759230176376,49.44266714130717],[6.186320428094206,49.46380280211446],[6.658229607783539,49.20195831969155],[8.099278598674772,49.01778351500337],[7.593676385131062,48.33301911070373],[7.46675906742223,47.620581976911865],[7.192202182655535,47.44976552997099],[6.736571079138088,47.54180125588289],[6.768713820023634,47.28770823830368],[6.037388950228972,46.72577871356191],[6.022609490593567,46.272989813820516],[6.500099724970454,46.42967275652944],[6.843592970414562,45.99114655210067],[6.802355177445662,45.70857982032867],[7.096652459347837,45.333098863295874],[6.749955275101711,45.02851797136759],[7.007562290076663,44.25476675066139],[7.549596388386163,44.12790110938482],[7.435184767291843,43.69384491634918],[6.529245232783068,43.12889232031836],[4.556962517931396,43.39965098731158],[3.10041059735272,43.075200507167125],[2.985998976258486,42.47301504166989],[1.826793247087181,42.34338471126566],[0.701590610363922,42.79573436133265],[0.338046909190581,42.579546006839564],[-1.502770961910471,43.03401439063049],[-1.901351284177735,43.42280202897834],[-1.384225226232957,44.02261037859017],[-1.193797573237362,46.014917710954876],[-2.225724249673789,47.06436269793821],[-2.963276129559574,47.570326646507965],[-4.491554938159481,47.95495433205642],[-4.592349819344747,48.68416046812695],[-3.295813971357745,48.901692409859635],[-1.616510789384932,48.644421291694584],[-1.933494025063254,49.776341864615766],[-0.98946895995536,49.347375800160876],[1.338761020522753,50.12717316344526],[1.6390010921385,50.946606350297515],[2.513573032246171,51.14850617126185],[2.658422071960331,50.79684804951566],[3.123251580425716,50.78036326761452],[3.588184441755715,50.37899241800358]]]]}},{"type":"Feature","properties":{"abbrev":"U.K.","name":"United Kingdom","name_long":"United Kingdom","iso_a2":"GB","iso_a3":"GBR","iso_n3":"826"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-5.661948614921897,54.55460317648385],[-6.197884894220977,53.86756500916334],[-6.953730231137996,54.073702297575636],[-7.572167934591079,54.05995636658599],[-7.366030646178785,54.595840969452695],[-7.572167934591079,55.1316222194549],[-6.733847011736145,55.1728600124238],[-5.661948614921897,54.55460317648385]]],[[[-3.005004848635281,58.63500010846633],[-4.073828497728016,57.55302480735525],[-3.055001796877661,57.69001902936095],[-1.959280564776918,57.68479970969951],[-2.219988165689301,56.87001740175353],[-3.119003058271118,55.973793036515474],[-2.085009324543023,55.90999848085127],[-2.005675679673857,55.80490285035023],[-1.11499101399221,54.62498647726539],[-0.4304849918542,54.46437612570216],[0.184981316742039,53.32501414653103],[0.469976840831777,52.92999949809197],[1.681530795914739,52.739520168664],[1.559987827164377,52.09999848083601],[1.050561557630914,51.806760565795685],[1.449865349950301,51.28942780212196],[0.550333693045502,50.765738837275876],[-0.78751746255864,50.77498891865622],[-2.489997524414377,50.50001862243124],[-2.956273972984036,50.696879991247016],[-3.617448085942328,50.22835561787272],[-4.542507900399244,50.34183706318566],[-5.245023159191135,49.95999990498108],[-5.776566941745301,50.15967763935682],[-4.309989793301838,51.21000112568916],[-3.414850633142123,51.42600861266925],[-3.422719467108323,51.42684816740609],[-4.984367234710874,51.593466091510976],[-5.267295701508885,51.99140045837458],[-4.222346564134853,52.301355699261364],[-4.770013393564113,52.840004991255626],[-4.579999152026915,53.49500377055517],[-3.093830673788659,53.404547400669685],[-3.092079637047106,53.404440822963544],[-2.945008510744344,53.984999701546684],[-3.614700825433034,54.600936773292574],[-3.63000545898933,54.615012925833014],[-4.844169073903004,54.790971177786844],[-5.082526617849226,55.06160065369937],[-4.719112107756644,55.50847260194348],[-5.047980922862109,55.78398550070752],[-5.586397670911139,55.31114614523682],[-5.644998745130181,56.275014960344805],[-6.149980841486354,56.78500967063354],[-5.786824713555291,57.81884837506465],[-5.009998745127575,58.63001333275005],[-4.211494513353557,58.55084503847917],[-3.005004848635281,58.63500010846633]]]]}},{"type":"Feature","properties":{"abbrev":"Cro.","name":"Croatia","name_long":"Croatia","iso_a2":"HR","iso_a3":"HRV","iso_n3":"191"},"geometry":{"type":"Polygon","coordinates":[[[18.829838087650046,45.908877671891844],[19.072768995854176,45.52151113543209],[19.39047570158459,45.236515611342384],[19.00548628101012,44.86023366960916],[18.553214145591653,45.08158966733145],[17.861783481526402,45.067740383477144],[17.002146030351014,45.233776760430935],[16.534939406000206,45.21160757097772],[16.318156772535872,45.00412669532591],[15.959367303133376,45.233776760430935],[15.750026075918981,44.81871165626256],[16.23966027188453,44.35114329688571],[16.456442905348865,44.04123973243128],[16.91615644701733,43.66772247982567],[17.297373488034452,43.44634064388736],[17.674921502358984,43.02856252702361],[18.56,42.65],[18.450016310304818,42.47999136002932],[17.509970330483327,42.849994615239154],[16.930005730871642,43.20999848080038],[16.015384555737683,43.50721548112722],[15.174453973052096,44.243191229827914],[15.376250441151795,44.31791535092208],[14.920309279040508,44.73848399512946],[14.901602410550877,45.07606028907611],[14.258747592839995,45.233776760430935],[13.952254672917034,44.80212352149687],[13.656975538801191,45.13693512631596],[13.67940311041582,45.48414907488501],[13.715059848697251,45.500323798192426],[14.4119682145855,45.46616567644742],[14.595109490627918,45.63494090431282],[14.935243767972963,45.471695054702764],[15.327674594797427,45.452316392593325],[15.323953891672431,45.731782538427694],[15.671529575267641,45.8341535507979],[15.768732944408612,46.23810822202353],[16.564808383864943,46.50375092221981],[16.882515089595415,46.38063182228444],[17.630066359129557,45.9517691106941],[18.45606245288286,45.75948110613615],[18.829838087650046,45.908877671891844]]]}},{"type":"Feature","properties":{"abbrev":"Ire.","name":"Ireland","name_long":"Ireland","iso_a2":"IE","iso_a3":"IRL","iso_n3":"372"},"geometry":{"type":"Polygon","coordinates":[[[-6.197884894220991,53.86756500916336],[-6.03298539877761,53.15316417094435],[-6.788856573910849,52.260117906292336],[-8.56161658368356,51.669301255899356],[-9.977085740590269,51.82045482035307],[-9.16628251793078,52.86462881124268],[-9.688524542672454,53.8813626165853],[-8.327987433292009,54.66451894796863],[-7.572167934591064,55.13162221945487],[-7.366030646178785,54.59584096945272],[-7.572167934591064,54.059956366586],[-6.953730231138067,54.073702297575636],[-6.197884894220991,53.86756500916336]]]}},{"type":"Feature","properties":{"abbrev":"Greece","name":"Greece","name_long":"Greece","iso_a2":"GR","iso_a3":"GRC","iso_n3":"300"},"geometry":{"type":"MultiPolygon","coordinates":[[[[23.699980096133004,35.70500438083553],[24.24666507334868,35.368022365860156],[25.02501549652888,35.42499563246198],[25.769207797964185,35.35401805270908],[25.745023227651586,35.179997666966216],[26.290002882601723,35.29999034274792],[26.16499759288766,35.004995429009796],[24.724982130642303,34.91998769788961],[24.735007358506945,35.08499054619759],[23.51497846852811,35.27999156345098],[23.699980096133004,35.70500438083553]]],[[[26.604195590936282,41.562114569661105],[26.29460208507578,40.93626129817426],[26.056942172965506,40.824123440100834],[25.447677036244187,40.85254547786147],[24.92584842296094,40.94706167252323],[23.714811232200816,40.687129218095116],[24.407998894964066,40.1249929876241],[23.899967889102584,39.96200552017558],[23.3429993018608,39.96099782974579],[22.81398766448896,40.476005153966554],[22.62629886240478,40.25656118423919],[22.849747755634805,39.65931081802577],[23.3500272966526,39.19001129816726],[22.973099399515547,38.97090322524966],[23.530016310324953,38.51000112563847],[24.025024855248944,38.21999298761645],[24.040011020613605,37.655014553369426],[23.115002882589152,37.92001129816222],[23.409971958111072,37.409990749657396],[22.774971958108633,37.30501007745656],[23.15422529469862,36.422505804992056],[22.490028110451107,36.41000010837746],[21.670026482843696,36.8449864771942],[21.295010613701574,37.644989325504696],[21.120034213961333,38.31032339126273],[20.730032179454582,38.769985256498785],[20.217712029712857,39.340234686839636],[20.15001590341052,39.62499766698403],[20.615000441172782,40.11000682225943],[20.674996779063633,40.434999904943055],[20.99998986174728,40.58000397395397],[21.02004031747643,40.84272695572588],[21.674160597426976,40.93127452245798],[22.05537763844427,41.14986583105269],[22.597308383889015,41.130487168943205],[22.76177,41.3048],[22.952377150166566,41.33799388281122],[23.692073601992462,41.30908091894386],[24.49264489105803,41.58389618587205],[25.197201368925533,41.23448598893066],[26.106138136507184,41.32889883072784],[26.117041863720914,41.82690460872473],[26.604195590936282,41.562114569661105]]]]}},{"type":"Feature","properties":{"abbrev":"Iceland","name":"Iceland","name_long":"Iceland","iso_a2":"IS","iso_a3":"ISL","iso_n3":"352"},"geometry":{"type":"Polygon","coordinates":[[[-14.508695441129236,66.45589223903141],[-14.739637417041605,65.8087482774403],[-13.60973222497981,65.12667104761987],[-14.909833746794902,64.36408193628868],[-17.794438035543422,63.67874909123385],[-18.656245896874992,63.49638296167582],[-19.97275468594276,63.64363495549153],[-22.762971971110158,63.960178941495386],[-21.778484259517683,64.40211579045551],[-23.95504391121911,64.89112986923348],[-22.184402635170358,65.0849681667603],[-22.227423265053332,65.37859365504272],[-24.326184047939336,65.61118927678847],[-23.65051469572309,66.26251902939522],[-22.134922451250883,66.41046865504687],[-20.57628373867955,65.73211212835143],[-19.05684160000159,66.27660085719477],[-17.79862382655905,65.99385325790978],[-16.167818976292125,66.52679230413587],[-14.508695441129236,66.45589223903141]]]}},{"type":"Feature","properties":{"abbrev":"Hun.","name":"Hungary","name_long":"Hungary","iso_a2":"HU","iso_a3":"HUN","iso_n3":"348"},"geometry":{"type":"Polygon","coordinates":[[[16.202298211337364,46.85238597267696],[16.534267612380376,47.49617096616912],[16.340584344150415,47.71290192320123],[16.90375410326726,47.71486562762833],[16.979666782304037,48.123497015976305],[17.48847293464982,47.86746613218621],[17.857132602620027,47.758428860050365],[18.696512892336926,47.880953681014404],[18.77702477384767,48.081768296900634],[19.17436486173989,48.11137889260387],[19.661363559658497,48.26661489520866],[19.769470656013112,48.202691148463614],[20.239054396249347,48.32756724709692],[20.473562045989866,48.56285004332181],[20.801293979584926,48.623854071642384],[21.872236362401736,48.31997081155002],[22.08560835133485,48.42226430927179],[22.640819939878753,48.15023956968735],[22.710531447040495,47.88219391538941],[22.099767693782834,47.6724392767167],[21.62651492685387,46.99423777931816],[21.02195234547125,46.3160879583519],[20.220192498462836,46.127468980486555],[19.596044549241583,46.17172984474454],[18.82983808764996,45.90887767189193],[18.45606245288286,45.759481106136136],[17.630066359129557,45.95176911069419],[16.8825150895953,46.38063182228444],[16.564808383864857,46.50375092221983],[16.370504998447416,46.8413272161665],[16.202298211337364,46.85238597267696]]]}},{"type":"Feature","properties":{"abbrev":"Italy","name":"Italy","name_long":"Italy","iso_a2":"IT","iso_a3":"ITA","iso_n3":"380"},"geometry":{"type":"MultiPolygon","coordinates":[[[[15.520376010813834,38.23115509699147],[15.160242954171736,37.44404551853782],[15.309897902089006,37.1342194687318],[15.099988234119449,36.6199872909954],[14.335228712632016,36.996630967754754],[13.826732618879928,37.10453135838019],[12.431003859108813,37.61294993748381],[12.570943637755136,38.12638113051968],[13.741156447004585,38.03496552179536],[14.76124922044616,38.143873602850505],[15.520376010813834,38.23115509699147]]],[[[9.210011834356266,41.20999136002422],[9.809975213264977,40.5000088567661],[9.669518670295673,39.177376410471794],[9.21481774255949,39.240473334300134],[8.80693566247973,38.90661774347847],[8.428302443077115,39.17184703221662],[8.38825320805094,40.378310858718805],[8.15999840661766,40.95000722916379],[8.709990675500109,40.89998444270523],[9.210011834356266,41.20999136002422]]],[[[12.376485223040843,46.76755910906987],[13.806475457421556,46.50930613869119],[13.698109978905478,46.016778062517375],[13.937630242578335,45.591015936864665],[13.141606479554298,45.73669179949541],[12.328581170306306,45.38177806251485],[12.383874952858605,44.88537425391908],[12.261453484759159,44.600482082694015],[12.589237094786483,44.091365871754476],[13.526905958722494,43.5877273626379],[14.029820997787027,42.76100779883248],[15.142569614327956,41.955139675456905],[15.926191033601896,41.96131500911574],[16.169897088290412,41.74029490820342],[15.889345737377797,41.5410822617182],[16.785001661860576,41.179605617836586],[17.519168735431208,40.87714345963224],[18.376687452882575,40.35562490494266],[18.4802470231954,40.168866278639825],[18.293385044028096,39.81077444107325],[17.738380161213286,40.2776710068303],[16.869595981522338,40.44223460546385],[16.448743116937322,39.79540070246648],[17.1714896989715,39.42469981542072],[17.05284061042934,38.9028712021373],[16.635088331781844,38.8435724960824],[16.100960727613057,37.98589874933418],[15.684086948314501,37.90884918878703],[15.687962680736321,38.214592800441864],[15.891981235424707,38.750942491199226],[16.109332309644312,38.96454702407769],[15.718813510814641,39.544072374014945],[15.413612501698822,40.04835683853517],[14.998495721098237,40.17294871679093],[14.70326826341477,40.604550279292624],[14.060671827865264,40.78634796809544],[13.627985060285397,41.188287258461656],[12.88808190273042,41.25308950455562],[12.10668257004491,41.70453481705741],[11.191906365614187,42.35542531998967],[10.511947869517797,42.931462510747224],[10.200028924204048,43.920006822274615],[9.702488234097814,44.03627879493132],[8.88894616052687,44.36633616797954],[8.428560825238577,44.23122813575242],[7.850766635783201,43.76714793555524],[7.435184767291843,43.69384491634918],[7.549596388386163,44.12790110938482],[7.007562290076663,44.25476675066139],[6.749955275101711,45.02851797136759],[7.096652459347837,45.333098863295874],[6.802355177445662,45.70857982032867],[6.843592970414562,45.99114655210067],[7.273850945676685,45.77694774025076],[7.755992058959833,45.82449005795928],[8.31662967289438,46.163642483090854],[8.489952426801295,46.00515086525175],[8.966305779667834,46.036931871111165],[9.182881707403112,46.44021474871698],[9.922836541390353,46.31489940040919],[10.363378126678668,46.483571275409844],[10.442701450246602,46.893546250997446],[11.048555942436508,46.7513585475464],[11.164827915093326,46.94157949481274],[12.153088006243081,47.11539317482644],[12.376485223040843,46.76755910906987]]]]}},{"type":"Feature","properties":{"abbrev":"Kos.","name":"Kosovo","name_long":"Kosovo","iso_a2":null,"iso_a3":null,"iso_n3":null},"geometry":{"type":"Polygon","coordinates":[[[20.76216,42.05186],[20.71731000000011,41.84711],[20.59023,41.85541],[20.52295,42.21787],[20.28374,42.3202500000001],[20.0707,42.58863],[20.25758,42.81275000000011],[20.49679,42.88469],[20.63508,43.21671],[20.81448,43.27205],[20.95651,43.13094],[21.143395,43.06868500000012],[21.27421,42.90959],[21.43866,42.86255],[21.63302,42.67717],[21.77505,42.6827],[21.66292,42.43922],[21.54332,42.3202500000001],[21.57663598940212,42.24522439706186],[21.35270000000014,42.2068],[20.76216,42.05186]]]}},{"type":"Feature","properties":{"abbrev":"Lith.","name":"Lithuania","name_long":"Lithuania","iso_a2":"LT","iso_a3":"LTU","iso_n3":"440"},"geometry":{"type":"Polygon","coordinates":[[[22.731098667092652,54.327536932993326],[22.65105187347254,54.582740993866736],[22.75776370615526,54.85657440858138],[22.315723504330577,55.015298570365864],[21.268448927503467,55.190481675835315],[21.055800408622414,56.03107636171106],[22.201156853939494,56.33780182557948],[23.878263787539964,56.273671373105266],[24.860684441840757,56.37252838807963],[25.000934279080894,56.16453074810484],[25.533046502390334,56.10029694276603],[26.494331495883753,55.615106919977634],[26.58827924979039,55.16717560487167],[25.7684326514798,54.84696259217509],[25.536353794056993,54.28242340760253],[24.450683628037037,53.905702216194754],[23.48412763844985,53.91249766704114],[23.24398725758951,54.22056671814914],[22.731098667092652,54.327536932993326]]]}},{"type":"Feature","properties":{"abbrev":"Lat.","name":"Latvia","name_long":"Latvia","iso_a2":"LV","iso_a3":"LVA","iso_n3":"428"},"geometry":{"type":"Polygon","coordinates":[[[21.055800408622414,56.03107636171106],[21.09042361825797,56.78387278912293],[21.581866489353672,57.41187063254993],[22.524341261492875,57.75337433535076],[23.318452996522097,57.00623647727487],[24.12072960785343,57.02569265403277],[24.312862583114622,57.79342357037698],[25.16459354014927,57.97015696881519],[25.602809685984365,57.84752879498657],[26.463532342237787,57.47638865826633],[27.28818484875151,57.47452830670383],[27.77001590344093,57.24425812441123],[27.855282016722526,56.75932648378429],[28.176709425577993,56.16912995057881],[27.10245975109453,55.783313707087686],[26.494331495883753,55.615106919977634],[25.533046502390334,56.10029694276603],[25.000934279080894,56.16453074810484],[24.860684441840757,56.37252838807963],[23.878263787539964,56.273671373105266],[22.201156853939494,56.33780182557948],[21.055800408622414,56.03107636171106]]]}},{"type":"Feature","properties":{"abbrev":"Lux.","name":"Luxembourg","name_long":"Luxembourg","iso_a2":"LU","iso_a3":"LUX","iso_n3":"442"},"geometry":{"type":"Polygon","coordinates":[[[6.043073357781111,50.128051662794235],[6.242751092156993,49.90222565367873],[6.186320428094177,49.463802802114515],[5.897759230176405,49.44266714130703],[5.674051954784829,49.529483547557504],[5.782417433300906,50.09032786722122],[6.043073357781111,50.128051662794235]]]}},{"type":"Feature","properties":{"abbrev":"Mkd.","name":"Macedonia","name_long":"Macedonia","iso_a2":"MK","iso_a3":"MKD","iso_n3":"807"},"geometry":{"type":"Polygon","coordinates":[[[20.59023,41.85541],[20.71731000000011,41.84711],[20.76216,42.05186],[21.35270000000014,42.2068],[21.57663598940212,42.24522439706186],[21.917080000000112,42.30364],[22.38052575042468,42.32025950781508],[22.881373732197346,41.999297186850356],[22.952377150166512,41.33799388281119],[22.76177,41.3048],[22.597308383889015,41.130487168943205],[22.05537763844427,41.14986583105269],[21.674160597426976,40.93127452245795],[21.0200403174764,40.84272695572588],[20.60518,41.08622],[20.46315,41.5150900000001],[20.59023,41.85541]]]}},{"type":"Feature","properties":{"abbrev":"Mda.","name":"Moldova","name_long":"Moldova","iso_a2":"MD","iso_a3":"MDA","iso_n3":"498"},"geometry":{"type":"Polygon","coordinates":[[[26.619336785597795,48.22072622333347],[26.857823520624805,48.368210761094495],[27.522537469195154,48.467119452501116],[28.259546746541844,48.15556224221342],[28.670891147585163,48.1181485052341],[29.12269819511303,47.84909516050646],[29.05086795422733,47.51022695575249],[29.41513512545274,47.34664520933257],[29.559674106573112,46.928582872091326],[29.908851759569302,46.67436066343146],[29.838210076626297,46.52532583270169],[30.02465864433537,46.42393667254503],[29.75997195813639,46.34998769793536],[29.170653924279886,46.3792623968287],[29.072106967899295,46.517677720722496],[28.862972446414062,46.43788930926383],[28.93371748222162,46.2588304713725],[28.659987420371575,45.93998688413164],[28.485269402792767,45.5969070501459],[28.233553501099042,45.48828318946837],[28.0544429867754,45.944586086605625],[28.160017937947714,46.37156260841722],[28.128030226359044,46.810476386088254],[27.551166212684848,47.40511709247083],[27.233872918412743,47.82677094175638],[26.924176059687568,48.123264472030996],[26.619336785597795,48.22072622333347]]]}},{"type":"Feature","properties":{"abbrev":"Mont.","name":"Montenegro","name_long":"Montenegro","iso_a2":"ME","iso_a3":"MNE","iso_n3":"499"},"geometry":{"type":"Polygon","coordinates":[[[19.801613396898688,42.50009349219084],[19.738051385179627,42.688247382165564],[19.3044900000001,42.19574],[19.37177000000014,41.87755],[19.16246,41.95502],[18.88214,42.28151],[18.45,42.48],[18.56,42.65],[18.70648,43.20011],[19.03165,43.43253],[19.21852,43.52384],[19.48389,43.35229],[19.63,43.21377997027054],[19.95857,43.10604],[20.3398,42.89852],[20.25758,42.81275000000011],[20.0707,42.58863],[19.801613396898688,42.50009349219084]]]}},{"type":"Feature","properties":{"abbrev":"Nor.","name":"Norway","name_long":"Norway","iso_a2":"NO","iso_a3":"NOR","iso_n3":"578"},"geometry":{"type":"MultiPolygon","coordinates":[[[[28.165547316202915,71.18547435168051],[31.29341840996548,70.45378774685992],[30.005435011522792,70.1862588568849],[31.10107872897512,69.55808014594486],[29.399580519332886,69.15691600206307],[28.591929559043194,69.0647769232867],[29.01557295097197,69.76649119737797],[27.73229210786789,70.16419302029628],[26.1796220232263,69.82529897732616],[25.68921268077639,69.09211375596902],[24.73567915212672,68.64955678982145],[23.662049594830762,68.89124746365053],[22.356237827247412,68.84174144151494],[21.24493615081073,69.37044302029312],[20.64559288908958,69.10624726020085],[20.025268995857914,69.06513865831272],[19.878559604581255,68.40719432237262],[17.99386844246439,68.56739126247734],[17.729181756265348,68.01055186631623],[16.76887861498554,68.01393667263139],[16.108712192456835,67.3024555528369],[15.108411492583059,66.19386688909543],[13.55568973150909,64.78702769638147],[13.919905226302205,64.44542064071611],[13.57191613124877,64.04911408146967],[12.57993533697393,64.06621898055835],[11.93056928879423,63.128317572676984],[11.992064243221535,61.800362453856565],[12.631146681375242,61.29357168237009],[12.3003658382749,60.11793284773006],[11.468271925511175,59.432393296946],[11.027368605196926,58.856149400459394],[10.356556837616097,59.46980703392538],[8.382000359743643,58.31328847923328],[7.048748406613299,58.07888418235728],[5.665835402050419,58.58815542259367],[5.308234490590735,59.66323191999382],[4.992078077829007,61.970998033284275],[5.912900424837885,62.614472968182696],[8.553411085655766,63.45400828719647],[10.527709181366788,64.48603831649748],[12.358346795306375,65.87972585719316],[14.761145867581604,67.81064158799515],[16.43592736172897,68.56320547146169],[19.184028354578516,69.81744415961782],[21.378416375420613,70.25516937934606],[23.023742303161583,70.20207184516626],[24.546543409938522,71.03049673123724],[26.370049676221807,70.98626170519537],[28.165547316202915,71.18547435168051]]],[[[24.72412,77.85385],[22.49032,77.44493],[20.72601,77.67704],[21.41611,77.93504],[20.8119,78.25463],[22.88426,78.45494],[23.28134,78.07954],[24.72412,77.85385]]],[[[18.25183,79.70175],[21.54383,78.95611],[19.02737,78.5626],[18.47172,77.82669],[17.59441,77.63796],[17.1182,76.80941],[15.91315,76.77045],[13.76259,77.38035],[14.66956,77.73565],[13.1706,78.02493],[11.22231,78.8693],[10.44453,79.65239],[13.17077,80.01046],[13.71852,79.66039],[15.14282,79.67431],[15.52255,80.01608],[16.99085,80.05086],[18.25183,79.70175]]],[[[25.447625359811894,80.40734039989451],[27.4075057309135,80.05640574820046],[25.92465050629818,79.51783397085455],[23.02446577321362,79.4000117052291],[20.075188429451885,79.56682322866726],[19.897266473070914,79.84236196564751],[18.462263624757924,79.85988027619442],[17.368015170977458,80.31889618602702],[20.455992059010697,80.59815562613224],[21.9079447771154,80.35767934846209],[22.919252557067438,80.65714427359349],[25.447625359811894,80.40734039989451]]]]}},{"type":"Feature","properties":{"abbrev":"Neth.","name":"Netherlands","name_long":"Netherlands","iso_a2":"NL","iso_a3":"NLD","iso_n3":"528"},"geometry":{"type":"Polygon","coordinates":[[[6.074182570020923,53.510403347378144],[6.905139601274129,53.48216217713064],[7.092053256873896,53.14404328064489],[6.842869500362383,52.22844025329755],[6.589396599970826,51.852029120483394],[5.988658074577813,51.851615709025054],[6.156658155958779,50.80372101501058],[5.606975945670001,51.037298488969775],[4.973991326526914,51.475023708698124],[4.047071160507527,51.26725861266857],[3.314971144228537,51.34575511331991],[3.830288527043137,51.62054454203195],[4.705997348661185,53.09179840759776],[6.074182570020923,53.510403347378144]]]}},{"type":"Feature","properties":{"abbrev":"Pol.","name":"Poland","name_long":"Poland","iso_a2":"PL","iso_a3":"POL","iso_n3":"616"},"geometry":{"type":"Polygon","coordinates":[[[15.01699588385867,51.10667409932158],[14.607098422919535,51.745188096719964],[14.685026482815688,52.0899474147552],[14.4375997250022,52.62485016540838],[14.074521111719491,52.98126251892543],[14.353315463934138,53.24817129171297],[14.119686313542587,53.75702912049103],[14.802900424873458,54.05070628520575],[16.36347700365573,54.513158677785725],[17.622831658608675,54.85153595643291],[18.62085859546164,54.68260569927078],[18.696254510175464,54.43871877706929],[19.660640089606403,54.42608388937393],[20.892244500418624,54.31252492941253],[22.731098667092652,54.327536932993326],[23.24398725758951,54.22056671814914],[23.48412763844985,53.91249766704114],[23.527535841575002,53.470121568406555],[23.80493493011778,53.089731350306074],[23.799198846133375,52.69109935160657],[23.199493849386187,52.486977444053664],[23.508002150168693,52.02364655212473],[23.52707075368437,51.57845408793023],[24.029985792748903,50.70540660257518],[23.922757195743262,50.42488108987875],[23.426508416444392,50.30850576435745],[22.518450148211603,49.47677358661974],[22.776418898212626,49.02739533140962],[22.558137648211755,49.085738023467144],[21.607808058364213,49.47010732685409],[20.887955356538413,49.32877228453583],[20.41583947111985,49.43145335549977],[19.825022820726872,49.21712535256923],[19.320712517990472,49.571574001659194],[18.909574822676316,49.435845852244576],[18.853144158613617,49.49622976337764],[18.392913852622172,49.98862864847075],[17.64944502123899,50.049038397819956],[17.55456709155112,50.36214590107641],[16.868769158605655,50.47397370055603],[16.719475945714436,50.21574656839354],[16.176253289462267,50.42260732685791],[16.23862674323857,50.69773265237984],[15.490972120839727,50.78472992614321],[15.01699588385867,51.10667409932158]]]}},{"type":"Feature","properties":{"abbrev":"Port.","name":"Portugal","name_long":"Portugal","iso_a2":"PT","iso_a3":"PRT","iso_n3":"620"},"geometry":{"type":"Polygon","coordinates":[[[-9.034817674180246,41.88057058365967],[-8.67194576662672,42.13468943945496],[-8.263856980817792,42.28046865495034],[-8.013174607769912,41.790886135417125],[-7.422512986673795,41.79207469335983],[-7.251308966490824,41.91834605566505],[-6.668605515967656,41.883386949219584],[-6.389087693700915,41.381815497394655],[-6.851126674822552,41.11108266861753],[-6.864019944679385,40.33087189387483],[-7.026413133156595,40.184524237624245],[-7.066591559263529,39.71189158788277],[-7.498632371439725,39.62957103124181],[-7.098036668313128,39.03007274022378],[-7.374092169616318,38.37305858006492],[-7.029281175148796,38.07576406508977],[-7.166507941099865,37.803894354802225],[-7.537105475281024,37.42890432387623],[-7.453725551778092,37.09778758396607],[-7.855613165711985,36.83826854099627],[-8.382816127953689,36.97888011326246],[-8.898856980820327,36.86880931248078],[-8.746101446965554,37.65134552667661],[-8.839997524439879,38.26624339451761],[-9.287463751655224,38.3584858261586],[-9.526570603869715,38.73742910415491],[-9.446988898140232,39.39206614842837],[-9.048305223008427,39.75509308527877],[-8.977353481471681,40.15930613866581],[-8.768684047877102,40.76063894303019],[-8.79085323733031,41.18433401139126],[-8.99078935386757,41.54345937760364],[-9.034817674180246,41.88057058365967]]]}},{"type":"Feature","properties":{"abbrev":"Rom.","name":"Romania","name_long":"Romania","iso_a2":"RO","iso_a3":"ROU","iso_n3":"642"},"geometry":{"type":"Polygon","coordinates":[[[22.710531447040495,47.88219391538941],[23.142236362406802,48.09634105080695],[23.76095828623741,47.985598456405455],[24.40205610525038,47.98187775328042],[24.866317172960578,47.73752574318831],[25.20774336111299,47.89105642352747],[25.9459411964024,47.987148749374214],[26.19745039236693,48.22088125263035],[26.619336785597795,48.22072622333347],[26.924176059687568,48.123264472030996],[27.233872918412743,47.82677094175638],[27.551166212684848,47.40511709247083],[28.128030226359044,46.810476386088254],[28.160017937947714,46.37156260841722],[28.0544429867754,45.944586086605625],[28.233553501099042,45.48828318946837],[28.679779493939378,45.304030870131704],[29.149724969201653,45.46492544207245],[29.603289015427432,45.293308010431126],[29.626543409958767,45.03539093686239],[29.141611769331835,44.82021027279904],[28.837857700320203,44.913873806328056],[28.558081495891997,43.70746165625813],[27.970107049275075,43.81246816667521],[27.242399529740908,44.175986029632405],[26.065158725699746,43.94349376075126],[25.569271681426926,43.68844472917472],[24.100679152124172,43.74105133724785],[23.33230228037632,43.89701080990471],[22.944832391051847,43.82378530534713],[22.65714969248299,44.23492300066128],[22.4740084164406,44.40922760678177],[22.705725538837356,44.57800283464702],[22.459022251075936,44.7025171982543],[22.14508792490281,44.47842234962059],[21.562022739353605,44.7689472519655],[21.483526238702233,45.18117015235778],[20.874312778413355,45.416375433934235],[20.762174920339987,45.734573065771436],[20.220192498462836,46.127468980486555],[21.02195234547125,46.3160879583519],[21.62651492685387,46.99423777931816],[22.099767693782834,47.6724392767167],[22.710531447040495,47.88219391538941]]]}},{"type":"Feature","properties":{"abbrev":"Rus.","name":"Russia","name_long":"Russian Federation","iso_a2":"RU","iso_a3":"RUS","iso_n3":"643"},"geometry":{"type":"MultiPolygon","coordinates":[[[[143.64800744036287,50.74760040954151],[144.65414757708564,48.976390692737596],[143.17392785051723,49.30655141865037],[142.5586682476501,47.861575018904915],[143.53349246640406,46.83672801369249],[143.5052771343726,46.13790761980948],[142.74770063697392,46.74076487892657],[142.0920300640545,45.96675527605879],[141.90692508358504,46.80592886004655],[142.0184428244709,47.780132961612935],[141.90444461483506,48.85918854429956],[142.13580000220568,49.61516307229746],[142.1799833518153,50.95234243428192],[141.59407596249002,51.93543488220254],[141.68254601457366,53.30196645772878],[142.60693403541075,53.762145087287905],[142.2097489768154,54.22547597921687],[142.654786411713,54.36588084575388],[142.91461551327657,53.704577541714734],[143.26084760963207,52.74076040303905],[143.23526777564766,51.75666026468875],[143.64800744036287,50.74760040954151]]],[[[22.731098667092652,54.327536932993326],[20.892244500418652,54.312524929412575],[19.660640089606403,54.426083889373984],[19.888481479581344,54.8661603867715],[21.2684489275035,55.19048167583528],[22.315723504330606,55.0152985703659],[22.757763706155288,54.85657440858142],[22.651051873472568,54.58274099386671],[22.731098667092652,54.327536932993326]]],[[[-175.01425,66.58435],[-174.33983,66.33556],[-174.57182,67.06219],[-171.85731,66.91308],[-169.89958,65.97724],[-170.89107,65.54139],[-172.53025,65.43791],[-172.555,64.46079],[-172.95533,64.25269],[-173.89184,64.2826],[-174.65392,64.63125],[-175.98353,64.92288],[-176.20716,65.35667],[-177.22266,65.52024],[-178.35993,65.39052],[-178.90332,65.74044],[-178.68611,66.11211],[-179.88377,65.87456],[-179.43268,65.40411],[-180,64.97970870219837],[-180,68.96363636363635],[-177.55,68.2],[-174.92825,67.20589],[-175.01425,66.58435]]],[[[180.00000000000014,70.83219920854668],[178.9034250000001,70.78114],[178.7253,71.0988],[180.00000000000014,71.51571433642826],[180.00000000000014,70.83219920854668]]],[[[-178.69378,70.89302],[-180,70.83219920854668],[-180,71.51571433642826],[-179.871875,71.55762],[-179.02433,71.55553],[-177.577945,71.26948],[-177.663575,71.13277],[-178.69378,70.89302]]],[[[143.60385,73.21244],[142.08763,73.20544],[140.038155,73.31692],[139.86312,73.36983],[140.81171,73.76506],[142.06207,73.85758],[143.48283,73.47525],[143.60385,73.21244]]],[[[150.73167,75.08406],[149.575925,74.68892],[147.977465,74.778355],[146.11919,75.17298],[146.358485,75.49682],[148.22223,75.345845],[150.73167,75.08406]]],[[[145.086285,75.562625],[144.3,74.82],[140.61381,74.84768],[138.95544,74.61148],[136.97439,75.26167],[137.51176,75.94917],[138.831075,76.13676],[141.471615,76.09289],[145.086285,75.562625]]],[[[57.5356925799924,70.72046397570216],[56.94497928246395,70.63274323188668],[53.6773751157842,70.76265778266847],[53.41201663596539,71.2066616889202],[51.60189456564572,71.47475901965049],[51.45575361512422,72.01488108996514],[52.47827518088357,72.22944163684096],[52.444168735570855,72.77473135038485],[54.42761355979766,73.62754751249759],[53.50828982932515,73.74981395130015],[55.90245893740766,74.62748647734533],[55.631932814359715,75.08141225859717],[57.86864383324885,75.60939036732321],[61.170044386647504,76.25188345000814],[64.49836836127022,76.43905548776928],[66.2109770038551,76.80978221303124],[68.15705976753483,76.93969676381292],[68.85221113472512,76.54481130645462],[68.18057254422766,76.23364166940911],[64.637326287703,75.73775462513623],[61.58350752141476,75.2608845079468],[58.47708214705338,74.30905630156283],[56.98678551618801,73.33304352486624],[55.419335971910954,72.37126760526598],[55.622837762276305,71.54059479439033],[57.5356925799924,70.72046397570216]]],[[[106.97013000000013,76.97419],[107.24000000000015,76.48],[108.1538,76.72335000000015],[111.07726000000017,76.71],[113.33151,76.22224],[114.13417,75.84764],[113.88539,75.32779000000014],[112.77918,75.03186],[110.1512500000002,74.47673],[109.4,74.18],[110.64,74.04],[112.11919,73.78774000000011],[113.01954000000026,73.97693000000015],[113.52958000000032,73.33505000000011],[113.96881,73.59488],[115.56782,73.75285],[118.77633000000023,73.58772],[119.02,73.12],[123.20066000000011,72.97122],[123.25777000000018,73.73503000000011],[125.38000000000018,73.56],[126.97644,73.56549],[128.59126,73.03871],[129.05157,72.39872],[128.46000000000012,71.98],[129.7159900000002,71.19304],[131.28858000000028,70.78699000000012],[132.25350000000017,71.83630000000011],[133.85766000000032,71.38642000000016],[135.56193,71.65525000000014],[137.49755,71.34763],[138.23409000000018,71.62803],[139.86983000000012,71.48783000000014],[139.14791,72.4161900000001],[140.46817,72.84941000000013],[149.5,72.2],[150.3511800000002,71.60643],[152.96890000000022,70.84222],[157.00688,71.03141],[158.99779,70.86672],[159.83031000000025,70.45324],[159.70866,69.72198],[160.94053000000034,69.4372800000001],[162.27907000000013,69.64204],[164.05248000000014,69.66823],[165.94037000000023,69.47199],[167.83567,69.58269],[169.5776300000002,68.6938],[170.81688000000028,69.01363],[170.0082000000002,69.65276],[170.4534500000003,70.09703],[173.64391000000026,69.81743],[175.72403000000023,69.87725000000023],[178.6,69.4],[180.00000000000014,68.96363636363657],[180.00000000000014,64.97970870219848],[179.99281,64.97433],[178.70720000000026,64.53493],[177.41128000000018,64.60821],[178.31300000000024,64.07593],[178.9082500000002,63.251970000000135],[179.37034,62.982620000000104],[179.48636,62.56894],[179.22825000000014,62.30410000000015],[177.3643,62.5219],[174.56929000000022,61.76915],[173.68013,61.65261],[172.15,60.95],[170.6985000000001,60.33618],[170.3308500000003,59.88177],[168.90046,60.57355],[166.29498000000032,59.788550000000214],[165.84000000000023,60.16],[164.87674,59.7316],[163.53929000000014,59.86871],[163.21711000000025,59.21101],[162.0173300000001,58.24328],[162.05297,57.83912],[163.19191,57.61503000000011],[163.05794000000017,56.159240000000125],[162.12958000000023,56.12219],[161.70146,55.285680000000156],[162.11749000000017,54.85514],[160.36877000000032,54.34433],[160.02173000000022,53.20257],[158.5309400000002,52.958680000000236],[158.23118,51.94269],[156.7897900000003,51.01105],[156.42000000000016,51.7],[155.99182,53.15895],[155.43366000000012,55.38103000000012],[155.91442000000032,56.767920000000146],[156.75815,57.3647],[156.8103500000001,57.83204],[158.3643300000002,58.05575],[160.15064000000012,59.31477000000012],[161.87204,60.34300000000013],[163.66969,61.1409],[164.47355000000013,62.55061],[163.2584200000002,62.46627],[162.65791,61.6425],[160.1214800000001,60.54423],[159.30232,61.77396],[156.7206800000001,61.43442],[154.21806000000035,59.75818000000013],[155.04375,59.14495],[152.81185,58.88385],[151.26573000000025,58.78089],[151.33815000000013,59.50396],[149.78371,59.65573000000014],[148.54481,59.16448],[145.48722,59.33637],[142.19782000000018,59.03998],[138.95848000000032,57.08805],[135.12619,54.72959],[136.70171,54.603550000000126],[137.19342,53.97732],[138.1647,53.755010000000254],[138.80463,54.25455000000011],[139.90151,54.18968000000018],[141.34531,53.08957000000012],[141.37923,52.23877],[140.5974200000002,51.2396700000001],[140.51308,50.04553000000013],[140.06193000000022,48.44671000000017],[138.5547200000002,46.99965],[138.21971,46.30795],[136.86232,45.14350000000019],[135.5153500000002,43.989],[134.86939000000027,43.39821],[133.53687000000028,42.81147],[132.90627000000015,42.79849],[132.27807000000027,43.28456000000011],[130.93587000000014,42.55274],[130.78,42.22000000000019],[130.64000000000019,42.395],[130.6338664084098,42.90301463477056],[131.144687941615,42.92998973242695],[131.28855512911562,44.111519680348266],[131.02519000000026,44.96796],[131.8834542176596,45.32116160743652],[133.09712000000022,45.14409],[133.7696439963132,46.116926988299156],[134.1123500000002,47.21248000000014],[134.50081,47.578450000000146],[135.0263114767868,48.47822988544391],[133.37359581922803,48.18344167743484],[132.50669000000013,47.78896],[130.98726000000013,47.79013],[130.58229332898267,48.729687404976204],[129.3978178244205,49.440600084015614],[127.65740000000038,49.76027],[127.28745568248493,50.73979726826545],[126.93915652883786,51.3538941514059],[126.56439904185699,51.7842554795327],[125.94634891164647,52.79279857035695],[125.06821129771045,53.161044826868924],[123.57147,53.4588],[122.24574791879307,53.43172597921369],[121.00308475147037,53.25140106873124],[120.1770886577169,52.75388621684121],[120.725789015792,52.51622630473091],[120.7382,51.96411],[120.18208000000018,51.64355],[119.27939,50.58292],[119.28846072802585,50.14288279886196],[117.8792444194265,49.51098338479704],[116.67880089728621,49.888531399121405],[115.48569542853144,49.80517731383475],[114.96210981655038,50.14024730081513],[114.36245649623534,50.248302720737485],[112.89773969935439,49.54356537535699],[111.58123091028668,49.37796824807767],[110.66201053267886,49.13012807880585],[109.40244917199672,49.29296051695769],[108.47516727095127,49.28254771585071],[107.86817589725112,49.79370514586588],[106.88880415245532,50.27429596618029],[105.8865914245869,50.406019192092174],[104.62158,50.275320000000164],[103.67654544476036,50.089966132195144],[102.25589000000011,50.51056000000011],[102.06521,51.25991],[100.88948042196265,51.51685578063842],[99.98173221232356,51.63400625264395],[98.8614905131005,52.04736603454671],[97.82573978067452,51.01099518493325],[98.23176150919173,50.42240062112873],[97.25976000000023,49.72605],[95.81402000000017,49.977460000000114],[94.81594933469879,50.01343333597088],[94.14756635943561,50.48053660745716],[93.10421,50.49529],[92.23471154171969,50.80217072204175],[90.71366743364078,50.331811835321105],[88.80556684769559,49.47052073831247],[87.75126427607685,49.29719798440556],[87.35997033076269,49.21498078062916],[86.82935672398966,49.82667470966813],[85.5412699726825,49.69285858824816],[85.11555952346211,50.11730296487763],[84.41637739455304,50.311399644565824],[83.93511478061893,50.88924551045358],[83.38300377801247,51.069182847693895],[81.94598554883994,50.81219594990633],[80.56844689323546,51.38833649352844],[80.03555952344172,50.864750881547224],[77.80091556184433,53.40441498474754],[76.52517947785478,54.177003485727134],[76.89110029491346,54.49052440044193],[74.38482000000013,53.54685000000011],[73.42567874542053,53.489810289109755],[73.50851606638437,54.035616766976595],[72.22415001820221,54.37665538188679],[71.1801310566095,54.133285224008254],[70.86526655465516,55.169733588270105],[69.06816694527289,55.3852501491435],[68.1691003762589,54.97039175070438],[65.6668700000001,54.601250000000164],[65.17853356309595,54.35422781027208],[61.43660000000013,54.00625],[60.97806644068325,53.66499339457914],[61.699986199800634,52.97999644633427],[60.739993117114544,52.71998647725775],[60.92726850774025,52.447548326215006],[59.96753380721557,51.960420437215674],[61.58800337102414,51.272658799843185],[61.33742435084101,50.79907013610426],[59.93280724471557,50.842194118851836],[59.64228234237057,50.545442206415714],[58.36332000000013,51.06364],[56.77798,51.04355],[55.71694000000011,50.62171000000015],[54.532878452376195,51.02623973245937],[52.32872358583106,51.718652248738096],[50.76664839051219,51.69276235615987],[48.702381626181044,50.60512848571284],[48.577841424357615,49.874759629915644],[47.549480421749394,50.454698391311126],[46.75159630716277,49.35600576435374],[47.0436715024766,49.152038886097586],[46.46644575377629,48.39415233010493],[47.31524000000016,47.71585],[48.05725,47.74377],[48.694733514201886,47.0756281601779],[48.593250000000154,46.561040000000105],[49.101160000000135,46.39933],[48.64541000000011,45.80629],[47.67591,45.64149000000012],[46.68201,44.6092000000001],[47.59094,43.66016000000013],[47.49252,42.98658],[48.58437000000018,41.80888],[47.98728315612604,41.4058192001944],[47.81566572448466,41.151416124021345],[47.373315464066394,41.21973236751114],[46.686070591016716,41.827137152669906],[46.40495079934894,41.860675157227426],[45.7764,42.09244000000024],[45.470279168485916,42.50278066667005],[44.53762291848207,42.711992702803684],[43.93121000000011,42.5549600000001],[43.755990000000196,42.74083],[42.39440000000016,43.2203],[40.92219000000014,43.38215000000014],[40.07696495947985,43.553104153002494],[39.955008579271095,43.434997666999294],[38.68,44.28],[37.53912000000011,44.65721],[36.67546000000013,45.24469],[37.40317,45.4045100000001],[38.23295,46.24087],[37.67372,46.63657],[39.14767,47.04475000000013],[39.12120000000013,47.26336],[38.22353803889948,47.10218984637598],[38.25511233902981,47.54640045835697],[38.77057,47.82562000000024],[39.738277622238996,47.89893707945208],[39.89562000000015,48.23241],[39.67465,48.783820000000134],[40.08078901546949,49.30742991799937],[40.069040000000115,49.60105],[38.59498823421356,49.92646190042373],[38.010631137857075,49.91566152607473],[37.39345950699524,50.38395335550368],[36.626167840325394,50.225590928745135],[35.35611616388812,50.57719737405915],[35.37791,50.77394],[35.02218305841794,51.2075723333715],[34.2248157081544,51.255993150428935],[34.14197838719061,51.566413479206204],[34.39173058445723,51.768881740925906],[33.75269982273588,52.33507457133166],[32.71576053236716,52.23846548116216],[32.41205813978777,52.28869497334977],[32.15944000000022,52.061250000000115],[31.78597,52.10168],[31.54001834486226,52.74205231384644],[31.30520063652798,53.0739958766733],[31.49764,53.16743000000014],[32.304519484188376,53.132726141972846],[32.693643019346126,53.35142080343214],[32.405598585751164,53.618045355842014],[31.731272820774592,53.79402944601202],[31.791424187962406,53.974638576872195],[31.384472283663822,54.15705638286238],[30.75753380709878,54.811770941784395],[30.971835971813245,55.081547756564134],[30.87390913262007,55.55097646750351],[29.89629438652244,55.7894632025305],[29.37157189303079,55.67009064393628],[29.22951338066039,55.91834422466641],[28.17670942557794,56.16912995057879],[27.855282016722526,56.75932648378438],[27.770015903440992,57.244258124411196],[27.288184848751655,57.47452830670392],[27.71668582531578,57.79189911562445],[27.420150000000202,58.72457000000014],[28.131699253051863,59.300825100331],[27.98112,59.47537],[29.1177,60.02805000000012],[28.07,60.50352000000015],[30.211107212044652,61.78002777774969],[31.139991082491036,62.357692776124445],[31.51609215671127,62.867687486412905],[30.035872430142803,63.552813625738565],[30.444684686003736,64.20445343693908],[29.544429559047018,64.94867157659056],[30.21765,65.80598],[29.054588657352383,66.94428620062203],[29.977426385220696,67.69829702419275],[28.44594363781877,68.36461294216399],[28.591929559043365,69.0647769232867],[29.39955,69.15692000000018],[31.10108000000011,69.55811],[32.13272000000026,69.90595000000025],[33.77547,69.30142000000012],[36.51396,69.06342],[40.292340000000166,67.9324],[41.059870000000124,67.4571300000001],[41.12595000000019,66.79158000000012],[40.01583,66.26618000000013],[38.38295,65.9995300000001],[33.918710000000175,66.75961],[33.18444,66.63253],[34.81477,65.90015000000014],[34.87857425307877,65.4362128770482],[34.94391000000015,64.41437000000016],[36.23129,64.10945],[37.01273000000012,63.84983000000011],[37.14197000000016,64.33471],[36.539579035089815,64.76446],[37.17604000000014,65.14322000000013],[39.59345,64.52079000000018],[40.43560000000011,64.76446],[39.76260000000016,65.49682],[42.0930900000001,66.47623],[43.01604000000012,66.41858],[43.94975000000014,66.06908],[44.53226,66.75634000000014],[43.69839,67.35245],[44.18795000000014,67.95051],[43.45282,68.57079],[46.25000000000014,68.25],[46.82134000000016,67.68997],[45.55517,67.56652],[45.5620200000001,67.01005000000019],[46.34915000000015,66.6676700000001],[47.894160000000255,66.88455000000016],[48.13876,67.52238],[50.22766000000016,67.99867000000013],[53.71743000000018,68.85738000000012],[54.47171,68.80815],[53.48582000000013,68.20131],[54.72628,68.09702],[55.44268000000014,68.43866],[57.317020000000156,68.46628],[58.80200000000021,68.88082],[59.94142000000019,68.2784400000001],[61.07784000000018,68.94069],[60.03,69.52],[60.55,69.85],[63.50400000000016,69.54739],[64.888115,69.23483500000013],[68.51216000000014,68.09233000000017],[69.18068,68.61563000000012],[68.16444,69.14436],[68.13522,69.35649],[66.93008000000012,69.45461000000012],[67.25976,69.92873],[66.72492000000014,70.70889000000014],[66.69466,71.02897000000024],[68.54006000000011,71.93450000000024],[69.19636000000011,72.84336000000016],[69.94,73.04000000000013],[72.58754,72.7762900000001],[72.79603,72.22006],[71.8481100000001,71.40898],[72.47011,71.09019],[72.79188,70.39114],[72.56470000000022,69.02085],[73.66787,68.4079],[73.2387,67.7404],[71.28000000000011,66.32000000000016],[72.42301000000018,66.17267000000018],[72.82077,66.53267],[73.92099000000016,66.78946000000013],[74.1865100000002,67.28429],[75.052,67.76047000000017],[74.46926000000016,68.32899],[74.93584000000013,68.98918],[73.84236,69.07146],[73.60187000000022,69.62763],[74.3998,70.63175],[73.1011,71.44717000000026],[74.89082000000022,72.12119],[74.65926,72.83227],[75.15801000000019,72.85497000000011],[75.68351,72.30056000000013],[75.28898000000012,71.33556],[76.35911,71.15287000000015],[75.90313000000017,71.87401],[77.57665000000011,72.26717],[79.65202000000014,72.32011],[81.5,71.75],[80.61071000000013,72.58285000000012],[80.51109,73.6482],[82.25,73.85000000000011],[84.65526,73.80591000000018],[86.82230000000024,73.93688],[86.00956,74.45967000000014],[87.16682000000017,75.11643],[88.31571000000011,75.14393],[90.26,75.64],[92.90058,75.77333],[93.23421000000016,76.0472],[95.86000000000016,76.14],[96.67821,75.91548],[98.92254000000023,76.44689],[100.75967000000023,76.43028],[101.03532,76.86189],[101.99084000000013,77.2875400000002],[104.3516000000001,77.69792],[106.06664000000013,77.37389],[104.70500000000024,77.1274],[106.97013000000013,76.97419]]],[[[105.07547,78.30689],[99.43814,77.921],[101.2649,79.23399],[102.08635,79.34641],[102.837815,79.28129],[105.37243,78.71334],[105.07547,78.30689]]],[[[51.13618655783128,80.54728017854093],[49.79368452332071,80.4154277615482],[48.89441124857754,80.3395667589437],[48.754936557821765,80.17546824820084],[47.586119012244154,80.01018117951533],[46.502825962109654,80.24724681265437],[47.07245527526291,80.55942414012945],[44.846958042181114,80.58980988231718],[46.79913862487123,80.77191762971364],[48.318477410684665,80.78400991486996],[48.522806023966695,80.51456899690015],[49.09718956889091,80.75398590770843],[50.03976769389462,80.91888540315182],[51.52293297710369,80.6997256538019],[51.13618655783128,80.54728017854093]]],[[[99.93976,78.88094],[97.75794,78.7562],[94.97259,79.044745],[93.31288,79.4265],[92.5454,80.14379],[91.18107,80.34146],[93.77766,81.0246],[95.940895,81.2504],[97.88385,80.746975],[100.186655,79.780135],[99.93976,78.88094]]]]}},{"type":"Feature","properties":{"abbrev":"Serb.","name":"Serbia","name_long":"Serbia","iso_a2":"RS","iso_a3":"SRB","iso_n3":"688"},"geometry":{"type":"Polygon","coordinates":[[[20.87431277841341,45.41637543393432],[21.48352623870221,45.18117015235788],[21.562022739353722,44.76894725196564],[22.145087924902896,44.47842234962059],[22.459022251075965,44.70251719825444],[22.70572553883744,44.57800283464701],[22.474008416440654,44.40922760678177],[22.657149692483074,44.234923000661354],[22.410446404721597,44.008063462900054],[22.500156691180223,43.642814439461006],[22.986018507588483,43.2111612005271],[22.60480146657136,42.898518785161116],[22.43659467946139,42.58032115332394],[22.54501183440965,42.46136200618804],[22.38052575042468,42.32025950781508],[21.917080000000112,42.30364],[21.57663598940212,42.24522439706186],[21.54332,42.3202500000001],[21.66292,42.43922],[21.77505,42.6827],[21.63302,42.67717],[21.43866,42.86255],[21.27421,42.90959],[21.143395,43.06868500000012],[20.95651,43.13094],[20.81448,43.27205],[20.63508,43.21671],[20.49679,42.88469],[20.25758,42.81275000000011],[20.3398,42.89852],[19.95857,43.10604],[19.63,43.21377997027054],[19.48389,43.35229],[19.21852,43.52384],[19.454,43.56810000000013],[19.59976,44.03847],[19.11761,44.42307000000011],[19.36803,44.863],[19.00548,44.86023],[19.39047570158459,45.236515611342384],[19.072768995854176,45.52151113543209],[18.82982,45.90888],[19.59604454924164,46.171729844744554],[20.220192498462893,46.12746898048658],[20.762174920339987,45.734573065771485],[20.87431277841341,45.41637543393432]]]}},{"type":"Feature","properties":{"abbrev":"Slo.","name":"Slovenia","name_long":"Slovenia","iso_a2":"SI","iso_a3":"SVN","iso_n3":"705"},"geometry":{"type":"Polygon","coordinates":[[[13.806475457421527,46.509306138691215],[14.63247155117483,46.43181732846955],[15.137091912504985,46.65870270444703],[16.011663852612656,46.6836107448117],[16.202298211337364,46.85238597267696],[16.370504998447416,46.8413272161665],[16.564808383864857,46.50375092221983],[15.768732944408551,46.23810822202345],[15.671529575267556,45.83415355079788],[15.323953891672403,45.73178253842768],[15.327674594797427,45.45231639259323],[14.935243767972935,45.471695054702685],[14.595109490627804,45.634940904312714],[14.411968214585414,45.46616567644746],[13.715059848697221,45.50032379819237],[13.937630242578306,45.59101593686462],[13.698109978905478,46.01677806251735],[13.806475457421527,46.509306138691215]]]}},{"type":"Feature","properties":{"abbrev":"Svk.","name":"Slovakia","name_long":"Slovakia","iso_a2":"SK","iso_a3":"SVK","iso_n3":"703"},"geometry":{"type":"Polygon","coordinates":[[[18.853144158613617,49.49622976337764],[18.909574822676316,49.435845852244576],[19.320712517990472,49.571574001659194],[19.825022820726872,49.21712535256923],[20.41583947111985,49.43145335549977],[20.887955356538413,49.32877228453583],[21.607808058364213,49.47010732685409],[22.558137648211755,49.085738023467144],[22.28084191253356,48.82539215758067],[22.08560835133485,48.42226430927179],[21.872236362401736,48.31997081155002],[20.801293979584926,48.623854071642384],[20.473562045989866,48.56285004332181],[20.239054396249347,48.32756724709692],[19.769470656013112,48.202691148463614],[19.661363559658497,48.26661489520866],[19.17436486173989,48.11137889260387],[18.77702477384767,48.081768296900634],[18.696512892336926,47.880953681014404],[17.857132602620027,47.758428860050365],[17.48847293464982,47.86746613218621],[16.979666782304037,48.123497015976305],[16.879982944413,48.47001333270947],[16.960288120194576,48.5969823268506],[17.101984897538898,48.81696889911711],[17.545006951577108,48.80001902932537],[17.88648481616181,48.90347524677371],[17.913511590250465,48.996492824899086],[18.104972771891852,49.04398346617531],[18.170498488037964,49.271514797556435],[18.399993523846177,49.31500051533004],[18.554971144289482,49.49501536721878],[18.853144158613617,49.49622976337764]]]}},{"type":"Feature","properties":{"abbrev":"Ukr.","name":"Ukraine","name_long":"Ukraine","iso_a2":"UA","iso_a3":"UKR","iso_n3":"804"},"geometry":{"type":"Polygon","coordinates":[[[31.785998162571587,52.101677964885454],[32.15941206231267,52.06126699483322],[32.41205813978763,52.28869497334975],[32.71576053236697,52.23846548116205],[33.7526998227357,52.335074571331695],[34.39173058445701,51.76888174092579],[34.14197838719039,51.56641347920623],[34.22481570815427,51.25599315042895],[35.02218305841788,51.20757233337145],[35.37792361831512,50.77395539001034],[35.35611616388795,50.577197374059054],[36.62616784032534,50.225590928745135],[37.39345950699507,50.38395335550359],[38.010631137856905,49.91566152607463],[38.59498823421342,49.92646190042363],[40.06905846533911,49.6010554062817],[40.08078901546935,49.307429917999286],[39.67466393408753,48.78381846780187],[39.89563235856758,48.23240509703143],[39.738277622238826,47.89893707945198],[38.7705847511412,47.825608222029814],[38.25511233902975,47.546400458356814],[38.22353803889942,47.10218984637588],[37.42513715998999,47.022220567404204],[36.75985477066439,46.698700263040934],[35.82368452326483,46.64596446388707],[34.96234174982388,46.27319651954964],[35.020787794745985,45.65121898048466],[35.51000857925317,45.40999339454619],[36.52999799983016,45.46998973243706],[36.33471276219916,45.113215643893966],[35.23999922052812,44.939996242851606],[33.882511020652885,44.36147858334407],[33.326420932760044,44.56487702084489],[33.54692426934946,45.03477081967489],[32.4541744321055,45.32746613217608],[32.630804477679135,45.519185695978905],[33.58816206231839,45.85156850848024],[33.29856733575471,46.080598456397844],[31.74414025241518,46.333347886737386],[31.675307244602408,46.70624502215554],[30.748748813609097,46.583100084004],[30.377608676888883,46.03241018328567],[29.603289015427432,45.293308010431126],[29.149724969201653,45.46492544207245],[28.679779493939378,45.304030870131704],[28.233553501099042,45.48828318946837],[28.485269402792767,45.5969070501459],[28.659987420371575,45.93998688413164],[28.93371748222162,46.2588304713725],[28.862972446414062,46.43788930926383],[29.072106967899295,46.517677720722496],[29.170653924279886,46.3792623968287],[29.75997195813639,46.34998769793536],[30.02465864433537,46.42393667254503],[29.838210076626297,46.52532583270169],[29.908851759569302,46.67436066343146],[29.559674106573112,46.928582872091326],[29.41513512545274,47.34664520933257],[29.05086795422733,47.51022695575249],[29.12269819511303,47.84909516050646],[28.670891147585163,48.1181485052341],[28.259546746541844,48.15556224221342],[27.522537469195154,48.467119452501116],[26.857823520624805,48.368210761094495],[26.619336785597795,48.22072622333347],[26.19745039236693,48.22088125263035],[25.9459411964024,47.987148749374214],[25.20774336111299,47.89105642352747],[24.866317172960578,47.73752574318831],[24.40205610525038,47.98187775328042],[23.76095828623741,47.985598456405455],[23.142236362406802,48.09634105080695],[22.710531447040495,47.88219391538941],[22.640819939878753,48.15023956968735],[22.08560835133485,48.42226430927179],[22.28084191253356,48.82539215758067],[22.558137648211755,49.085738023467144],[22.776418898212626,49.02739533140962],[22.518450148211603,49.47677358661974],[23.426508416444392,50.30850576435745],[23.922757195743262,50.42488108987875],[24.029985792748903,50.70540660257518],[23.52707075368437,51.57845408793023],[24.00507775238421,51.61744395609446],[24.553106316839518,51.888461005249184],[25.327787713327005,51.91065603291855],[26.337958611768556,51.83228872334793],[27.454066196408434,51.59230337178447],[28.24161502453657,51.57222707783907],[28.61761274589225,51.42771393493484],[28.99283532076353,51.602044379271476],[29.254938185347925,51.368234361366895],[30.157363722460897,51.41613841410147],[30.555117221811457,51.31950348571566],[30.619454380014844,51.822806098022376],[30.927549269338982,52.04235342061438],[31.785998162571587,52.101677964885454]]]}},{"type":"Feature","properties":{"abbrev":"Swe.","name":"Sweden","name_long":"Sweden","iso_a2":"SE","iso_a3":"SWE","iso_n3":"752"},"geometry":{"type":"Polygon","coordinates":[[[22.183173455501926,65.72374054632017],[21.21351687997722,65.02600535751527],[21.369631381930958,64.41358795842429],[19.77887576669022,63.60955434839504],[17.84777916837521,62.74940013289681],[17.119554884518124,61.34116567651097],[17.83134606290639,60.63658336042741],[18.78772179533209,60.081914374422595],[17.86922488777634,58.9537661810587],[16.829185011470088,58.71982697207339],[16.447709588291474,57.041118069071885],[15.879785597403783,56.10430186626866],[14.666681349352075,56.200885118222175],[14.100721062891465,55.40778107362265],[12.942910597392057,55.36173737245058],[12.625100538797028,56.30708018658197],[11.787942335668674,57.44181712506307],[11.027368605196866,58.85614940045936],[11.468271925511146,59.43239329694604],[12.3003658382749,60.11793284773003],[12.631146681375183,61.293571682370136],[11.992064243221563,61.80036245385656],[11.93056928879423,63.12831757267698],[12.579935336973932,64.06621898055833],[13.571916131248711,64.04911408146971],[13.919905226302204,64.44542064071608],[13.55568973150909,64.78702769638151],[15.108411492583002,66.19386688909547],[16.108712192456778,67.30245555283689],[16.768878614985482,68.01393667263139],[17.729181756265348,68.01055186631628],[17.993868442464333,68.56739126247736],[19.878559604581255,68.40719432237258],[20.025268995857886,69.0651386583127],[20.645592889089528,69.10624726020087],[21.978534783626117,68.6168456081807],[23.53947309743444,67.93600861273525],[23.565879754335583,66.39605093043743],[23.903378533633802,66.00692739527962],[22.183173455501926,65.72374054632017]]]}},{"type":"Feature","properties":{"abbrev":"Auz.","name":"Australia","name_long":"Australia","iso_a2":"AU","iso_a3":"AUS","iso_n3":"036"},"geometry":{"type":"MultiPolygon","coordinates":[[[[145.39797814349484,-40.79254851660589],[146.36412072162372,-41.13769540788334],[146.90858361225085,-41.00054615658068],[147.68925947488415,-40.80825815202269],[148.28906782449602,-40.87543751400213],[148.35986453673584,-42.06244516374644],[148.0173014670731,-42.407023614268624],[147.9140519553538,-43.211522312188485],[147.564564243764,-42.93768889747386],[146.87034305235494,-43.634597263362096],[146.66332726459368,-43.58085377377856],[146.04837772032042,-43.54974456153889],[145.43192955951056,-42.69377613705627],[145.2950903668017,-42.03360971452756],[144.71807132383063,-41.162551771815714],[144.74375451067968,-40.70397511165771],[145.39797814349484,-40.79254851660589]]],[[[143.56181115129996,-13.763655694232213],[143.92209923723894,-14.548310642152003],[144.56371382057486,-14.171176039285882],[144.89490807513354,-14.594457696188625],[145.37472374896348,-14.984976495018286],[145.27199100156727,-15.428205254785695],[145.48525963763578,-16.285672295804773],[145.63703331927695,-16.784918308176614],[145.88890425026767,-16.90692636481765],[146.1603088726645,-17.761654554925244],[146.0636739442787,-18.28007252367732],[146.3874784690196,-18.95827402107591],[147.47108157774792,-19.48072275154668],[148.1776017600425,-19.95593922290277],[148.84841352762322,-20.39120981209726],[148.7174654481956,-20.633468926681516],[149.28942020080206,-21.260510756111103],[149.67833703023067,-22.342511895438392],[150.07738244038862,-22.12278370533332],[150.48293908101516,-22.556142266533012],[150.72726525289121,-22.40240488046466],[150.89955447815228,-23.462236830338682],[151.60917524638424,-24.076256198830762],[152.07353966695908,-24.457886651306197],[152.85519738180594,-25.267501316023015],[153.13616214417678,-26.07117319102619],[153.16194868389042,-26.641319268502443],[153.0929089703486,-27.26029957449451],[153.5694690289442,-28.1100668271021],[153.51210818910022,-28.995077406532758],[153.33909549378706,-29.458201592732447],[153.06924116435889,-30.350240166954816],[153.0896016786818,-30.923641859665448],[152.8915775901394,-31.640445651985956],[152.45000247620536,-32.550002536755244],[151.70911746643682,-33.041342054986345],[151.34397179586242,-33.81602345147385],[151.01055545471516,-34.310360202777886],[150.71413943908905,-35.17345997491681],[150.32821984273326,-35.67187916437193],[150.07521203023228,-36.42020558039051],[149.94612430236717,-37.10905242284123],[149.99728397033616,-37.42526051203514],[149.42388227762555,-37.77268116633346],[148.30462243061592,-37.80906137466688],[147.3817330263153,-38.21921721776755],[146.92212283751135,-38.60653207779512],[146.3179219911548,-39.03575652441144],[145.48965213438058,-38.59376799901905],[144.87697635312816,-38.41744801203912],[145.03221235573298,-37.896187839510986],[144.48568240781404,-38.08532358169927],[143.6099735861961,-38.80946542740533],[142.745426873953,-38.538267510737526],[142.178329705982,-38.38003427505984],[141.6065816591047,-38.30851409276788],[140.63857872941324,-38.019332777662555],[139.99215823787435,-37.40293629328511],[139.80658816951407,-36.64360279718828],[139.57414757706525,-36.13836231867067],[139.0828080588341,-35.73275400161178],[138.12074791885632,-35.612296237939404],[138.44946170466503,-35.127261244447894],[138.2075643251067,-34.38472258884593],[137.71917036351616,-35.07682504653103],[136.82940555231474,-35.26053476332862],[137.3523710471085,-34.70733855564409],[137.50388634658836,-34.130267836240776],[137.89011600153768,-33.640478610978334],[137.81032759007914,-32.90000701266811],[136.99683719294038,-33.752771498348636],[136.37206912653167,-34.09476612725619],[135.98904341038437,-34.89011809666049],[135.20821251845413,-34.47867034275261],[135.23921837782916,-33.94795338311498],[134.6134167827746,-33.22277800876314],[134.08590376193914,-32.848072198214766],[134.27390262261704,-32.61723357516696],[132.99077680880984,-32.011224053680195],[132.2880806825049,-31.98264698662277],[131.32633060112093,-31.495803318001048],[129.5357938986397,-31.590422865527483],[128.24093753470223,-31.948488864877856],[127.10286746633831,-32.28226694105105],[126.14871382050116,-32.21596607842061],[125.08862348846561,-32.728751316052836],[124.22164798390494,-32.95948658623607],[124.02894656788854,-33.483847344701715],[123.65966678273072,-33.89017913181273],[122.81103641163364,-33.91446705498984],[122.18306440642286,-34.003402194964224],[121.2991907085026,-33.82103606540613],[120.58026818245814,-33.930176690406626],[119.89369510302824,-33.976065362281815],[119.2988993673488,-34.50936614353397],[119.007340936358,-34.464149265278536],[118.5057178081008,-34.7468193499151],[118.02497195848953,-35.064732761374714],[117.29550744025747,-35.02545867283287],[116.62510908413495,-35.02509693780683],[115.56434695847972,-34.386427911111554],[115.02680870977954,-34.196517022438925],[115.04861616420679,-33.62342538832203],[115.5451233256671,-33.48725798923296],[115.71467370001668,-33.25957162855495],[115.6793786967614,-32.90036874769413],[115.80164513556397,-32.20506235120703],[115.68961063035513,-31.61243702568379],[115.16090905157697,-30.60159433362246],[114.99704308477945,-30.030724786094165],[115.04003787644628,-29.461095472940798],[114.64197431850201,-28.810230808224713],[114.61649783738217,-28.516398614213042],[114.17357913620847,-28.11807667410733],[114.04888390508816,-27.334765313427127],[113.4774975932369,-26.543134047147902],[113.3389530782625,-26.116545098578484],[113.77835778204026,-26.54902516042918],[113.44096235560662,-25.621278171493156],[113.93690107631167,-25.911234633082884],[114.23285200404732,-26.298446140245872],[114.21616051641703,-25.786281019801105],[113.72125532435771,-24.998938897402127],[113.62534386602405,-24.683971042583153],[113.39352339076267,-24.38476449961327],[113.50204389857564,-23.806350192970257],[113.70699262904517,-23.560215345964068],[113.8434184102957,-23.059987481378737],[113.7365515483161,-22.47547535572538],[114.1497563009219,-21.755881036061012],[114.22530724493268,-22.517488295178634],[114.64776207891869,-21.829519952076904],[115.46016727097933,-21.495173435148544],[115.94737267462702,-21.06868783944371],[116.71161543179156,-20.70168181730682],[117.16631635952771,-20.623598728113805],[117.44154503791427,-20.746898695562162],[118.22955895393298,-20.374208265873236],[118.83608523974273,-20.26331064217483],[118.98780724495177,-20.044202569257322],[119.25249393115065,-19.95294198982984],[119.80522505094457,-19.976506442954985],[120.85622033089666,-19.68370777758919],[121.39985639860723,-19.239755547769732],[121.65513797412909,-18.705317885007133],[122.24166548064177,-18.19764861417177],[122.28662397673567,-17.798603204013915],[122.31277225147544,-17.25496713630345],[123.01257449757193,-16.405199883695857],[123.43378909718304,-17.268558037996225],[123.85934451710662,-17.069035332917252],[123.50324222218326,-16.596506036040367],[123.81707319549193,-16.111316013251994],[124.25828657439988,-16.327943617419564],[124.37972619028582,-15.567059828353976],[124.92615278534005,-15.075100192935324],[125.16727501841389,-14.680395603090004],[125.67008670461385,-14.510070082256021],[125.6857963400305,-14.230655612853838],[126.12514936737611,-14.347340996968953],[126.14282270721989,-14.095986830301213],[126.58258914602376,-13.95279143642041],[127.06586714081735,-13.817967624570926],[127.80463341686195,-14.276906019755046],[128.35968997610897,-14.869169610252257],[128.98554324759593,-14.875990899314742],[129.62147342337963,-14.969783623924556],[129.409600050983,-14.420669854391035],[129.88864057832862,-13.618703301653483],[130.33946577364296,-13.357375583553477],[130.183506300986,-13.107520033422304],[130.617795037967,-12.536392103732467],[131.22349450086003,-12.183648776908115],[131.73509118054952,-12.302452894747162],[132.57529829318312,-12.114040622611014],[132.55721154188106,-11.603012383676685],[131.82469811414367,-11.273781833545101],[132.35722374891142,-11.128519382372644],[133.01956058159644,-11.376411228076847],[133.55084598198906,-11.786515394745138],[134.393068475482,-12.042365411022175],[134.67863244032705,-11.9411829565947],[135.29849124566803,-12.248606052299051],[135.88269331272764,-11.962266940969798],[136.25838097548947,-12.04934172938161],[136.49247521377166,-11.857208754120393],[136.95162031468502,-12.351958916882737],[136.68512495335577,-12.887223402562057],[136.30540652887512,-13.291229750219898],[135.96175825413414,-13.324509372615893],[136.07761681533256,-13.724278252825783],[135.78383629775325,-14.223989353088214],[135.42866417861123,-14.7154322241839],[135.50018436090318,-14.99774057379443],[136.29517459528137,-15.550264987859123],[137.0653601421595,-15.870762220933356],[137.58047081924482,-16.215082289294084],[138.303217401279,-16.807604261952658],[138.5851640158634,-16.806622409739177],[139.1085429221155,-17.06267913174537],[139.26057498591823,-17.371600843986187],[140.2152453960783,-17.710804945550066],[140.87546349503927,-17.369068698803943],[141.0711104676963,-16.832047214426723],[141.27409549373883,-16.388870131091608],[141.3982222841038,-15.840531508042588],[141.70218305884467,-15.04492115647693],[141.5633801617087,-14.56133310308951],[141.63552046118812,-14.270394789286284],[141.51986860571898,-13.698078301653808],[141.650920038011,-12.944687595270565],[141.84269127824624,-12.74154753993119],[141.6869901877508,-12.407614434461138],[141.92862918514757,-11.87746591557878],[142.118488397388,-11.32804208745162],[142.14370649634637,-11.042736504768143],[142.51526004452498,-10.668185723516643],[142.79731001197408,-11.157354831591519],[142.8667631369743,-11.784706719614931],[143.1159468934857,-11.905629571177911],[143.1586316265588,-12.325655612846191],[143.5221236512999,-12.834358412327433],[143.5971578309877,-13.400422051652598],[143.56181115129996,-13.763655694232213]]]]}},{"type":"Feature","properties":{"abbrev":"Fiji","name":"Fiji","name_long":"Fiji","iso_a2":"FJ","iso_a3":"FJI","iso_n3":"242"},"geometry":{"type":"MultiPolygon","coordinates":[[[[178.3736,-17.33992],[178.71806,-17.62846],[178.55271,-18.15059],[177.93266,-18.28799],[177.38146,-18.16432],[177.28504,-17.72465],[177.67087,-17.38114],[178.12557,-17.50481],[178.3736,-17.33992]]],[[[179.36414266196428,-16.80135407694685],[178.7250593629971,-17.01204167436802],[178.59683859511708,-16.63915],[179.09660936299716,-16.43398427754742],[179.41350936299713,-16.379054277547397],[180.00000000000014,-16.06713266364244],[180.00000000000014,-16.55521656663916],[179.36414266196428,-16.80135407694685]]],[[[-179.91736938476524,-16.50178313564936],[-180,-16.55521656663916],[-180,-16.06713266364244],[-179.79332010904858,-16.02088225674123],[-179.91736938476524,-16.50178313564936]]]]}},{"type":"Feature","properties":{"abbrev":"New C.","name":"New Caledonia","name_long":"New Caledonia","iso_a2":"NC","iso_a3":"NCL","iso_n3":"540"},"geometry":{"type":"Polygon","coordinates":[[[165.77998986232637,-21.08000497811563],[166.59999148993384,-21.700018812753523],[167.1200114280869,-22.159990736583488],[166.74003462144478,-22.39997608814695],[166.18973229396866,-22.12970834726045],[165.47437544175222,-21.679606621998232],[164.82981530177568,-21.14981983814195],[164.16799523341365,-20.444746595951628],[164.029605747736,-20.105645847252354],[164.45996707586272,-20.1200118954295],[165.02003624904205,-20.45999114347773],[165.46000939357512,-20.80002206795826],[165.77998986232637,-21.08000497811563]]]}},{"type":"Feature","properties":{"abbrev":"N.Z.","name":"New Zealand","name_long":"New Zealand","iso_a2":"NZ","iso_a3":"NZL","iso_n3":"554"},"geometry":{"type":"MultiPolygon","coordinates":[[[[173.02037479074076,-40.919052422856424],[173.24723432850206,-41.331998793300784],[173.95840538970288,-40.92670053483562],[174.24758670480813,-41.34915536882167],[174.2485168805895,-41.770008233406756],[173.8764465680879,-42.233184096038826],[173.22273969959568,-42.970038344088564],[172.71124637277077,-43.372287693048506],[173.0801127464702,-43.85334360125358],[172.30858361235252,-43.865694268571346],[171.45292524646365,-44.24251881284372],[171.18513797432726,-44.89710418068489],[170.61669721911662,-45.90892872495971],[169.8314221540093,-46.3557748349876],[169.33233117093428,-46.641235446967855],[168.41135379462858,-46.61994475686359],[167.76374474514685,-46.29019744240921],[166.67688602118423,-46.21991749449224],[166.5091443219647,-45.85270476662622],[167.04642418850327,-45.11094125750867],[168.3037634625969,-44.12397307716613],[168.94940880765157,-43.93581918719142],[169.66781456937318,-43.55532561622634],[170.52491987536618,-43.03168832781283],[171.125089960004,-42.51275359473778],[171.56971398344322,-41.767424411792135],[171.94870893787194,-41.51441659929115],[172.09722700427878,-40.95610442480968],[172.798579543344,-40.493962090823466],[173.02037479074076,-40.919052422856424]]],[[[174.61200890533055,-36.156397393540544],[175.3366158389272,-37.20909799575826],[175.35759647043753,-36.52619394302113],[175.8088867536425,-36.79894215265769],[175.9584900251275,-37.55538176854606],[176.76319542877658,-37.8812533505787],[177.4388131045605,-37.961248467766495],[178.0103544457087,-37.57982472102013],[178.51709354076283,-37.6953732236248],[178.27473107331386,-38.58281259537309],[177.97046023997936,-39.166342868812976],[177.20699262929915,-39.145775648760846],[176.93998050364704,-39.44973642350158],[177.0329464053401,-39.87994272233148],[176.88582360260526,-40.065977878582174],[176.50801720611938,-40.60480803808959],[176.0124402204403,-41.28962411882151],[175.239567499083,-41.68830779395324],[175.0678983910094,-41.42589487077508],[174.65097293527847,-41.28182097754545],[175.22763024322367,-40.459235528323404],[174.90015669179,-39.90893320084723],[173.82404666574402,-39.50885426204351],[173.85226199777534,-39.14660247167746],[174.5748018740804,-38.797683200842755],[174.74347374908106,-38.027807712558385],[174.69701663645063,-37.38112883885796],[174.29202843657922,-36.71109221776144],[174.31900353423555,-36.53482390721389],[173.84099653553582,-36.121980889634116],[173.0541711774596,-35.23712533950034],[172.63600548735374,-34.52910654066939],[173.00704227120949,-34.45066171645034],[173.55129845610747,-35.006183363587965],[174.3293904971263,-35.26549570082862],[174.61200890533055,-36.156397393540544]]]]}},{"type":"Feature","properties":{"abbrev":"P.N.G.","name":"Papua New Guinea","name_long":"Papua New Guinea","iso_a2":"PG","iso_a3":"PNG","iso_n3":"598"},"geometry":{"type":"MultiPolygon","coordinates":[[[[155.88002566957843,-6.81999684003776],[155.5999910829888,-6.919990736522493],[155.16699425681512,-6.535931491729301],[154.72919152243836,-5.900828138862209],[154.51411421123967,-5.139117526880014],[154.65250369691736,-5.042430922061839],[154.7599906760844,-5.339983819198494],[155.06291792217937,-5.566791680527487],[155.54774620994172,-6.200654799019659],[156.01996544822478,-6.540013929880388],[155.88002566957843,-6.81999684003776]]],[[[151.9827958518545,-5.478063246282346],[151.45910688700866,-5.56028045005874],[151.3013904156539,-5.840728448106702],[150.7544470562767,-6.083762709175389],[150.24119673075384,-6.317753594592986],[149.70996300679332,-6.316513360218053],[148.89006473205046,-6.026040134305433],[148.31893680236075,-5.74714242922613],[148.4018257997569,-5.437755629094724],[149.29841190002082,-5.583741550319217],[149.84556196512725,-5.505503431829339],[149.9962504416903,-5.026101169457675],[150.13975589416495,-5.001348158389789],[150.23690758687349,-5.532220147324281],[150.8074670758081,-5.455842380396888],[151.089672072554,-5.113692722192368],[151.64788089417087,-4.757073662946169],[151.53786176982155,-4.16780730552189],[152.13679162008438,-4.14879037843852],[152.33874311748102,-4.312966403829762],[152.31869266175178,-4.86766122805075],[151.9827958518545,-5.478063246282346]]],[[[147.19187381407494,-7.38802418378998],[148.0846358583494,-8.044108168167611],[148.7341052593936,-9.104663588093757],[149.30683515848446,-9.07143564213007],[149.26663089416135,-9.514406019736027],[150.03872846903434,-9.684318129111702],[149.73879845601226,-9.872937106977005],[150.80162763895916,-10.293686618697421],[150.69057498596388,-10.582712904505868],[150.02839318257585,-10.652476088099931],[149.782310012002,-10.393267103723943],[148.92313764871722,-10.280922539921363],[147.91301842670802,-10.130440769087471],[147.13544315001226,-9.492443536012019],[146.56788089415062,-8.942554619994155],[146.04848107318494,-8.06741423913131],[144.74416792213802,-7.630128269077473],[143.8970878440097,-7.915330498896281],[143.2863757671843,-8.245491224809056],[143.4139132020807,-8.983068942910947],[142.62843143124422,-9.326820570516503],[142.06825890520022,-9.159595635620036],[141.0338517600139,-9.117892754760419],[141.01705691951904,-5.859021905138022],[141.00021040259188,-2.600151055515624],[142.7352466167915,-3.289152927263217],[144.58397098203326,-3.861417738463401],[145.27317955951,-4.373737888205028],[145.82978641172568,-4.876497897972683],[145.98192182839298,-5.465609226100014],[147.6480733583476,-6.083659356310804],[147.8911076194162,-6.614014580922315],[146.9709053895949,-6.721656589386257],[147.19187381407494,-7.38802418378998]]],[[[153.14003787659877,-4.499983412294114],[152.8272921083683,-4.766427097190999],[152.638673130503,-4.176127211120928],[152.40602583232496,-3.789742526874562],[151.95323693258356,-3.462062269711822],[151.38427941305005,-3.035421644710112],[150.66204959533886,-2.741486097833956],[150.93996544820456,-2.500002129734028],[151.4799841656545,-2.779985039891386],[151.82001509013512,-2.999971612157907],[152.2399894553711,-3.240008640153661],[152.64001671774253,-3.659983005389648],[153.01999352438466,-3.980015150573294],[153.14003787659877,-4.499983412294114]]]]}},{"type":"Feature","properties":{"abbrev":"S. Is.","name":"Solomon Is.","name_long":"Solomon Islands","iso_a2":"SB","iso_a3":"SLB","iso_n3":"090"},"geometry":{"type":"MultiPolygon","coordinates":[[[[162.11902469304087,-10.482719008021135],[162.39864586817222,-10.82636728276212],[161.70003218001838,-10.820011081590224],[161.31979699121476,-10.204751478723125],[161.917383254238,-10.446700534713656],[162.11902469304087,-10.482719008021135]]],[[[160.85222863183796,-9.872937106977005],[160.46258833235729,-9.895209649294841],[159.8494474632142,-9.794027194867368],[159.64000288313517,-9.63997975020527],[159.70294477766666,-9.242949720906779],[160.36295617089846,-9.400304457235533],[160.6885176943372,-9.610162448772812],[160.85222863183796,-9.872937106977005]]],[[[161.67998172428915,-9.599982191611375],[161.52939660059053,-9.784312025596435],[160.78825320866056,-8.91754322676492],[160.57999718652437,-8.320008640173967],[160.92002811100494,-8.320008640173967],[161.28000613835,-9.120011488484451],[161.67998172428915,-9.599982191611375]]],[[[159.8750272971986,-8.337320244991716],[159.917401971678,-8.538289890174866],[159.1336771995394,-8.114181410355398],[158.58611372297472,-7.754823500197715],[158.21114953026486,-7.421872246941149],[158.35997765526545,-7.320017998893917],[158.82000125552773,-7.560003350457392],[159.64000288313517,-8.020026950719569],[159.8750272971986,-8.337320244991716]]],[[[157.5384257346893,-7.34781991946693],[157.33941979393327,-7.404767347852555],[156.9020304710148,-7.176874281445392],[156.49135786359133,-6.765943291860395],[156.54282759015396,-6.59933847415148],[157.1400004417189,-7.021638278840655],[157.5384257346893,-7.34781991946693]]]]}},{"type":"Feature","properties":{"abbrev":"Van.","name":"Vanuatu","name_long":"Vanuatu","iso_a2":"VU","iso_a3":"VUT","iso_n3":"548"},"geometry":{"type":"MultiPolygon","coordinates":[[[[167.8448767438451,-16.466333103097156],[167.5151811058229,-16.597849623279966],[167.18000776597782,-16.15999521247096],[167.21680138576963,-15.891846205308452],[167.8448767438451,-16.466333103097156]]],[[[167.10771243720149,-14.933920179913954],[167.27002811103026,-15.740020847234874],[167.00120731024796,-15.614602146062495],[166.79315799384088,-15.668810723536723],[166.64985924709558,-15.392703545801195],[166.62913699774649,-14.626497084209603],[167.10771243720149,-14.933920179913954]]]]}}]} +{"type":"FeatureCollection","features":[{"type":"Feature","properties":{"abbrev":"Belize","name":"Belize","name_long":"Belize","iso_a2":"BZ","iso_a3":"BLZ","iso_n3":"084"},"geometry":{"type":"Polygon","coordinates":[[[-89.14308041050332,17.80831899664932],[-89.15090938999553,17.95546763760042],[-89.02985734735182,18.001511338772488],[-88.84834387892661,17.883198147040233],[-88.49012285027935,18.486830552641603],[-88.3000310940937,18.4999822046599],[-88.29633622918482,18.35327281338327],[-88.10681291375437,18.348673610909287],[-88.1234785631685,18.07667470954101],[-88.2853549873228,17.644142971258034],[-88.19786678745265,17.489475409408456],[-88.30264075392444,17.131693630435663],[-88.23951799187991,17.036066392479555],[-88.35542822951057,16.530774237529627],[-88.55182451043585,16.265467434143147],[-88.73243364129594,16.233634751851355],[-88.93061275913527,15.887273464415074],[-89.22912167026928,15.88693756760517],[-89.15080603713095,17.015576687075836],[-89.14308041050332,17.80831899664932]]]}},{"type":"Feature","properties":{"abbrev":"Can.","name":"Canada","name_long":"Canada","iso_a2":"CA","iso_a3":"CAN","iso_n3":"124"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-63.6645,46.55001],[-62.9393,46.41587],[-62.01208,46.44314],[-62.50391,46.03339],[-62.87433,45.96818],[-64.1428,46.39265],[-64.39261,46.72747],[-64.01486,47.03601],[-63.6645,46.55001]]],[[[-61.806305,49.10506],[-62.29318,49.08717],[-63.58926,49.40069],[-64.51912,49.87304],[-64.17322,49.95718],[-62.85829,49.70641],[-61.835585,49.28855],[-61.806305,49.10506]]],[[[-123.51000158755114,48.51001089130344],[-124.0128907883995,48.370846259141416],[-125.65501277733837,48.8250045843385],[-125.95499446679275,49.179995835967645],[-126.85000443587187,49.53000031188043],[-127.0299934495444,49.81499583597008],[-128.05933630436624,49.9949590114266],[-128.44458410710217,50.539137681676124],[-128.35841365625544,50.770648098343685],[-127.3085810960299,50.55257355407195],[-126.69500097721232,50.400903225295394],[-125.75500667382319,50.29501821552938],[-125.4150015875588,49.95000051533261],[-124.92076818911934,49.475274970083404],[-123.92250870832102,49.06248362893581],[-123.51000158755114,48.51001089130344]]],[[[-56.13403581401712,50.6870097926793],[-56.795881720595276,49.81230866149096],[-56.1431050278843,50.150117499382844],[-55.471492275602934,49.93581533466846],[-55.82240108908093,49.58712860777911],[-54.935142584845664,49.31301097268684],[-54.47377539734378,49.55669118915918],[-53.476549445191324,49.24913890237405],[-53.78601375997124,48.51678050393363],[-53.086133999226256,48.687803656603535],[-52.958648240762244,48.157164211614486],[-52.64809872090419,47.5355484075755],[-53.069158291218336,46.65549876564495],[-53.52145626485304,46.61829173439483],[-54.17893551290254,46.80706574155701],[-53.961868659060485,47.62520701760192],[-54.24048214376214,47.75227936460763],[-55.4007730780115,46.884993801453135],[-55.99748084168584,46.9197203639533],[-55.29121904155278,47.389562486351],[-56.25079871278052,47.63254507098739],[-57.3252292547771,47.572807115258],[-59.26601518414677,47.603347886742505],[-59.419494188053704,47.899453843774864],[-58.796586473207405,48.25152537697949],[-59.231624518456535,48.52318838153781],[-58.39180497906523,49.12558055276418],[-57.35868974468604,50.718274034215845],[-56.73865007183201,51.28743825947853],[-55.870976935435294,51.632094224649194],[-55.406974249886616,51.58827261006573],[-55.60021826844209,51.31707469339793],[-56.13403581401712,50.6870097926793]]],[[[-133.1800040417117,54.16997549093531],[-132.71000788443132,54.040009315423525],[-131.74998958400326,54.12000438090922],[-132.049480347351,52.984621487024526],[-131.1790425218266,52.180432847698285],[-131.57782954982292,52.18237071390925],[-132.18042842677855,52.639707139692405],[-132.54999243231387,53.100014960332146],[-133.05461117875552,53.41146881775537],[-133.2396644827927,53.8510802272624],[-133.1800040417117,54.16997549093531]]],[[[-79.26582,62.158675],[-79.65752,61.63308],[-80.09956,61.7181],[-80.36215,62.01649],[-80.315395,62.085565],[-79.92939,62.3856],[-79.52002,62.36371],[-79.26582,62.158675]]],[[[-81.89825,62.7108],[-83.06857,62.15922],[-83.77462,62.18231],[-83.99367,62.4528],[-83.25048,62.91409],[-81.87699,62.90458],[-81.89825,62.7108]]],[[[-85.16130794954985,65.65728465439281],[-84.97576371940596,65.217518215589],[-84.4640120104195,65.37177236598018],[-83.88262630891975,65.10961782496355],[-82.78757687043877,64.76669302027469],[-81.64201371939254,64.45513580998696],[-81.55344031444425,63.979609280037145],[-80.81736121287886,64.05748566350101],[-80.10345130076661,63.725981350348604],[-80.99101986359568,63.41124603947497],[-82.54717810741701,63.65172231714524],[-83.10879757356506,64.10187571883972],[-84.10041663281388,63.56971181909802],[-85.52340471061902,63.05237905542409],[-85.86676876498237,63.637252916103556],[-87.22198320183674,63.541238104905226],[-86.35275977247127,64.03583323837071],[-86.22488644076513,64.82291697860826],[-85.88384782585487,65.73877838811705],[-85.16130794954985,65.65728465439281]]],[[[-75.86588,67.14886],[-76.98687,67.09873],[-77.2364,67.58809],[-76.81166,68.14856],[-75.89521,68.28721],[-75.1145,68.01036],[-75.10333,67.58202],[-75.21597,67.44425],[-75.86588,67.14886]]],[[[-95.64768120380052,69.10769035832178],[-96.2695212038006,68.75704035832175],[-97.61740120380057,69.0600303583218],[-98.43180120380052,68.9507003583218],[-99.79740120380053,69.4000303583218],[-98.91740120380055,69.7100303583218],[-98.2182612038005,70.14354035832176],[-97.15740120380056,69.86003035832181],[-96.55740120380054,69.68003035832176],[-96.25740120380053,69.49003035832177],[-95.64768120380052,69.10769035832178]]],[[[-90.5471,69.49766],[-90.55151,68.47499],[-89.21515,69.25873],[-88.01966,68.61508],[-88.31749,67.87338],[-87.35017,67.19872],[-86.30607,67.92146],[-85.57664,68.78456],[-85.52197,69.88211],[-84.10081,69.80539],[-82.62258,69.65826],[-81.28043,69.16202],[-81.2202,68.66567],[-81.96436,68.13253],[-81.25928,67.59716],[-81.38653,67.11078],[-83.34456,66.41154],[-84.73542,66.2573],[-85.76943,66.55833],[-86.0676,66.05625],[-87.03143,65.21297],[-87.32324,64.77563],[-88.48296,64.09897],[-89.91444,64.03273],[-90.70398,63.61017],[-90.77004,62.96021],[-91.93342,62.83508],[-93.15698,62.02469],[-94.24153,60.89865],[-94.62931,60.11021],[-94.6846,58.94882],[-93.21502,58.78212],[-92.76462,57.84571],[-92.29703,57.08709],[-90.89769,57.28468],[-89.03953,56.85172],[-88.03978,56.47162],[-87.32421,55.99914],[-86.07121,55.72383],[-85.01181,55.3026],[-83.36055,55.24489],[-82.27285,55.14832],[-82.4362,54.28227],[-82.12502,53.27703],[-81.40075,52.15788],[-79.91289,51.20842],[-79.14301,51.53393],[-78.60191,52.56208],[-79.12421,54.14145],[-79.82958,54.66772],[-78.22874,55.13645],[-77.0956,55.83741],[-76.54137,56.53423],[-76.62319,57.20263],[-77.30226,58.05209],[-78.51688,58.80458],[-77.33676,59.85261],[-77.77272,60.75788],[-78.10687,62.31964],[-77.41067,62.55053],[-75.69621,62.2784],[-74.6682,62.18111],[-73.83988,62.4438],[-72.90853,62.10507],[-71.67708,61.52535],[-71.37369,61.13717],[-69.59042,61.06141],[-69.62033,60.22125],[-69.2879,58.95736],[-68.37455,58.80106],[-67.64976,58.21206],[-66.20178,58.76731],[-65.24517,59.87071],[-64.58352,60.33558],[-63.80475,59.4426],[-62.50236,58.16708],[-61.39655,56.96745],[-61.79866,56.33945],[-60.46853,55.77548],[-59.56962,55.20407],[-57.97508,54.94549],[-57.3332,54.6265],[-56.93689,53.78032],[-56.15811,53.64749],[-55.75632,53.27036],[-55.68338,52.14664],[-56.40916,51.7707],[-57.12691,51.41972],[-58.77482,51.0643],[-60.03309,50.24277],[-61.72366,50.08046],[-63.86251,50.29099],[-65.36331,50.2982],[-66.39905,50.22897],[-67.23631,49.51156],[-68.51114,49.06836],[-69.95362,47.74488],[-71.10458,46.82171],[-70.25522,46.98606],[-68.65,48.3],[-66.55243,49.1331],[-65.05626,49.23278],[-64.17099,48.74248],[-65.11545,48.07085],[-64.79854,46.99297],[-64.47219,46.23849],[-63.17329,45.73902],[-61.52072,45.88377],[-60.51815,47.00793],[-60.4486,46.28264],[-59.80287,45.9204],[-61.03988,45.26525],[-63.25471,44.67014],[-64.24656,44.26553],[-65.36406,43.54523],[-66.1234,43.61867],[-66.16173,44.46512],[-64.42549,45.29204],[-66.02605,45.25931],[-67.13741,45.13753],[-67.79134,45.70281],[-67.79046,47.06636],[-68.23444,47.35486],[-68.905,47.185],[-69.237216,47.447781],[-69.99997,46.69307],[-70.305,45.915],[-70.66,45.46],[-71.08482,45.30524],[-71.405,45.255],[-71.50506,45.0082],[-73.34783,45.00738],[-74.867,45.00048],[-75.31821,44.81645],[-76.375,44.09631],[-76.5,44.01845889375872],[-76.82003414580558,43.628784288093755],[-77.7378850979577,43.629055589363304],[-78.72027991404238,43.625089423184875],[-79.17167355011188,43.46633942318422],[-79.01,43.27],[-78.92,42.965],[-78.9393621487437,42.86361135514804],[-80.24744767934794,42.36619985612259],[-81.27774654816716,42.20902598730686],[-82.43927771679162,41.675105088867156],[-82.69008928092018,41.675105088867156],[-83.02981014680694,41.83279572200584],[-83.14199968131256,41.975681057292825],[-83.12,42.08],[-82.9,42.43],[-82.43,42.98],[-82.1376423815039,43.571087551439916],[-82.33776312543108,44.44],[-82.55092464875818,45.347516587905375],[-83.59285071484308,45.81689362241237],[-83.46955074739463,45.99468638771259],[-83.61613094759059,46.11692698829907],[-83.89076534700575,46.11692698829907],[-84.09185126416148,46.275418606138174],[-84.14211951367338,46.51222585711574],[-84.3367,46.40877],[-84.6049,46.4396],[-84.54374874544587,46.538684190449146],[-84.77923824739992,46.637101955749046],[-84.87607988151485,46.90008331968238],[-85.65236324740343,47.22021881773051],[-86.46199083122826,47.55333801939204],[-87.43979262330024,47.94],[-88.37811418328673,48.302917588893735],[-89.27291744663668,48.019808254582664],[-89.6,48.01],[-90.83,48.27],[-91.64,48.14],[-92.61,48.45],[-93.63087,48.60926],[-94.32914,48.67074],[-94.64,48.84],[-94.81758,49.38905],[-95.15609,49.38425],[-95.15906950917204,49],[-97.22872000000481,49.0007],[-100.65,49],[-104.04826,48.99986],[-107.05,49],[-110.05,49],[-113,49],[-116.04818,49],[-117.03121,49],[-120,49],[-122.84,49],[-122.97421,49.0025377777778],[-124.91024,49.98456],[-125.62461,50.41656],[-127.43561,50.83061],[-127.99276,51.71583],[-127.85032,52.32961],[-129.12979,52.75538],[-129.30523,53.56159],[-130.51497,54.28757],[-130.53611,54.80278],[-129.98,55.285],[-130.00778,55.91583],[-131.70781,56.55212],[-132.73042,57.69289],[-133.35556,58.41028],[-134.27111,58.86111],[-134.945,59.27056],[-135.47583,59.78778],[-136.47972,59.46389],[-137.4525,58.905],[-138.34089,59.56211],[-139.039,60],[-140.013,60.27682],[-140.99778,60.30639],[-140.9925,66.00003],[-140.986,69.712],[-139.12052,69.47102],[-137.54636,68.99002],[-136.50358,68.89804],[-135.62576,69.31512],[-134.41464,69.62743],[-132.92925,69.50534],[-131.43136,69.94451],[-129.79471,70.19369],[-129.10773,69.77927],[-128.36156,70.01286],[-128.13817,70.48384],[-127.44712,70.37721],[-125.75632,69.48058],[-124.42483,70.1584],[-124.28968,69.39969],[-123.06108,69.56372],[-122.6835,69.85553],[-121.47226,69.79778],[-119.94288,69.37786],[-117.60268,69.01128],[-116.22643,68.84151],[-115.2469,68.90591],[-113.89794,68.3989],[-115.30489,67.90261],[-113.49727,67.68815],[-110.798,67.80612],[-109.94619,67.98104],[-108.8802,67.38144],[-107.79239,67.88736],[-108.81299,68.31164],[-108.16721,68.65392],[-106.95,68.7],[-106.15,68.8],[-105.34282,68.56122],[-104.33791,68.018],[-103.22115,68.09775],[-101.45433,67.64689],[-99.90195,67.80566],[-98.4432,67.78165],[-98.5586,68.40394],[-97.66948,68.57864],[-96.11991,68.23939],[-96.12588,67.29338],[-95.48943,68.0907],[-94.685,68.06383],[-94.23282,69.06903],[-95.30408,69.68571],[-96.47131,70.08976],[-96.39115,71.19482],[-95.2088,71.92053],[-93.88997,71.76015],[-92.87818,71.31869],[-91.51964,70.19129],[-92.40692,69.69997],[-90.5471,69.49766]]],[[[-114.1671699999999,73.12145],[-114.66634,72.65277],[-112.44101999999988,72.95540000000011],[-111.05039,72.4504],[-109.92034999999989,72.96113],[-109.00654,72.63335],[-108.18835,71.65089],[-107.68599,72.06548],[-108.39639,73.08953000000011],[-107.51645,73.23598],[-106.52259,73.07601],[-105.40246,72.67259],[-104.77484,71.6984],[-104.46475999999984,70.99297],[-102.78537,70.49776],[-100.9807799999999,70.02432],[-101.08929,69.58447000000012],[-102.73116,69.50402],[-102.09329,69.11962000000011],[-102.43024,68.75282],[-104.24,68.91],[-105.96,69.18000000000015],[-107.12254,69.11922],[-109,68.78],[-111.53414887520013,68.63005915681794],[-113.3132,68.53554],[-113.85495999999983,69.00744000000012],[-115.22,69.28],[-116.10794,69.16821],[-117.34,69.96000000000012],[-116.67472999999988,70.06655],[-115.13112,70.2373],[-113.72141,70.19237],[-112.4161,70.36638],[-114.35,70.6],[-116.48684,70.52045],[-117.9048,70.54056000000014],[-118.43238,70.9092],[-116.11311,71.30918],[-117.65568,71.2952],[-119.40199,71.55859],[-118.56267,72.30785],[-117.86642,72.70594],[-115.18909,73.31459000000012],[-114.1671699999999,73.12145]]],[[[-104.5,73.42],[-105.38,72.76],[-106.94,73.46],[-106.6,73.6],[-105.26,73.64],[-104.5,73.42]]],[[[-76.34,73.10268498995302],[-76.25140380859375,72.82638549804688],[-77.31443786621091,72.85554504394527],[-78.39167022705081,72.87665557861328],[-79.48625183105466,72.74220275878909],[-79.77583312988284,72.80290222167974],[-80.87609863281253,73.3331832885742],[-80.83388519287105,73.69318389892578],[-80.35305786132812,73.75971984863278],[-78.06443786621094,73.65193176269534],[-76.34,73.10268498995302]]],[[[-86.56217851433414,73.15744700793846],[-85.77437130404454,72.53412588163383],[-84.85011247428824,73.34027822538712],[-82.31559017610098,73.75095083281059],[-80.60008765330764,72.71654368762421],[-80.7489416165244,72.06190664335077],[-78.77063859731078,72.35217316353416],[-77.82462398955958,72.74961660429105],[-75.60584469267573,72.24367849393741],[-74.22861609566499,71.7671442735579],[-74.09914079455771,71.33084015571765],[-72.24222571479766,71.5569245469945],[-71.20001542833519,70.92001251899723],[-68.7860542466849,70.52502370877426],[-67.91497046575694,70.12194753689761],[-66.96903337265417,69.18608734809189],[-68.80512285020055,68.72019847276442],[-66.44986609563387,68.06716339789202],[-64.86231441919522,67.84753856065163],[-63.42493445499676,66.92847321234066],[-61.85198137068058,66.86212067327784],[-62.1631768459423,66.16025136988961],[-63.918444383384184,64.99866852483284],[-65.14886023625363,65.42603261988668],[-66.72121904159854,66.3880410834322],[-68.01501603867396,66.26272573512439],[-68.14128740097917,65.68978913030438],[-67.08964616562339,65.108455105237],[-65.73208045109976,64.64840566675863],[-65.32016760930128,64.38273712834606],[-64.66940629744968,63.39292674422748],[-65.01380388045891,62.67418508569599],[-66.27504472519047,62.945098781986076],[-68.78318620469273,63.74567007105181],[-67.36968075221304,62.883965562584876],[-66.3282972886672,62.280074774822054],[-66.16556820338016,61.93089712182589],[-68.87736650254465,62.33014923771282],[-71.02343705919384,62.91070811629584],[-72.235378587519,63.39783600529517],[-71.8862784491713,63.67998932560885],[-73.37830624051838,64.19396312118383],[-74.8344189114226,64.67907562932379],[-74.81850257027673,64.38909332951798],[-77.70997982452005,64.22954234481679],[-78.55594885935417,64.57290639918014],[-77.89728105336192,65.30919220647479],[-76.0182742987972,65.32696889918316],[-73.95979529488272,65.45476471624089],[-74.29388342964964,65.8117713487294],[-73.94491248238265,66.31057811142672],[-72.65116716173941,67.28457550726387],[-72.92605994331609,67.72692576768239],[-73.31161780464575,68.06943716091291],[-74.84330725777681,68.55462718370129],[-76.86910091826674,68.89473562283027],[-76.22864905465735,69.14776927354742],[-77.28736996123712,69.76954010688328],[-78.1686339993266,69.82648753526891],[-78.95724219431673,70.16688019477542],[-79.49245500356366,69.87180776638891],[-81.30547095409176,69.74318512641435],[-84.94470618359847,69.9666340196444],[-87.06000342481789,70.26000112576537],[-88.6817132230015,70.41074127876081],[-89.51341956252304,70.76203766548099],[-88.46772111688075,71.21818553332133],[-89.8881512112875,71.22255219184996],[-90.20516028518202,72.2350743679608],[-89.43657670770494,73.12946421985237],[-88.40824154331281,73.53788890247121],[-85.82615108920092,73.80381582304521],[-86.56217851433414,73.15744700793846]]],[[[-100.35642,73.84389],[-99.16387,73.63339],[-97.38,73.76],[-97.12,73.47],[-98.05359,72.99052],[-96.54,72.56],[-96.72,71.66],[-98.35966,71.27285],[-99.32286,71.35639],[-100.01482,71.73827],[-102.5,72.51],[-102.48,72.83],[-100.43836,72.70588],[-101.54,73.36],[-100.35642,73.84389]]],[[[-93.19629553910022,72.77199249947336],[-94.26904659704726,72.02459625923598],[-95.40985551632266,72.06188080513459],[-96.03374508338246,72.94027680123182],[-96.01826799191099,73.4374299180958],[-95.49579342322403,73.86241689726418],[-94.50365759965234,74.1349067247392],[-92.42001217321177,74.10002513294219],[-90.50979285354259,73.85673248971203],[-92.0039652168299,72.9662442084585],[-93.19629553910022,72.77199249947336]]],[[[-120.46,71.38360179308759],[-123.09219,70.90164],[-123.62,71.34],[-125.92894873747335,71.86868846301141],[-125.5,72.29226081179502],[-124.80729,73.02256],[-123.9399999999999,73.68000000000015],[-124.91775,74.29275000000013],[-121.53788,74.44893],[-120.10978,74.24135],[-117.55563999999987,74.18577],[-116.58442,73.89607],[-115.51081,73.47519],[-116.76793999999988,73.22292],[-119.22,72.52],[-120.46,71.82],[-120.46,71.38360179308759]]],[[[-93.61275590694049,74.97999726022445],[-94.15690873897384,74.59234650338686],[-95.60868058956561,74.66686391875177],[-96.82093217648458,74.92762319609658],[-96.2885874092298,75.37782827422335],[-94.85081987178913,75.6472175157609],[-93.97774654821794,75.29648956979597],[-93.61275590694049,74.97999726022445]]],[[[-98.5,76.72],[-97.735585,76.25656],[-97.704415,75.74344],[-98.16,75],[-99.80874,74.89744],[-100.88366,75.05736],[-100.86292,75.64075],[-102.50209,75.5638],[-102.56552,76.3366],[-101.48973,76.30537],[-99.98349,76.64634],[-98.57699,76.58859],[-98.5,76.72]]],[[[-108.21141,76.20168],[-107.81943,75.84552],[-106.92893,76.01282],[-105.881,75.9694],[-105.70498,75.47951],[-106.31347,75.00527],[-109.7,74.85],[-112.22307,74.41696],[-113.74381,74.39427],[-113.87135,74.72029],[-111.79421,75.1625],[-116.31221,75.04343],[-117.7104,75.2222],[-116.34602,76.19903],[-115.40487,76.47887],[-112.59056,76.14134],[-110.81422,75.54919],[-109.0671,75.47321],[-110.49726,76.42982],[-109.5811,76.79417],[-108.54859,76.67832],[-108.21141,76.20168]]],[[[-94.68408586299947,77.09787832305838],[-93.57392106807313,76.77629588490609],[-91.60502315953661,76.77851797149461],[-90.74184587274922,76.44959747995681],[-90.96966142450799,76.07401317005946],[-89.82223792189927,75.84777374948563],[-89.18708289259979,75.61016551380763],[-87.83827633334963,75.56618886992723],[-86.37919226758868,75.48242137318218],[-84.78962521029061,75.69920400664651],[-82.75344458691006,75.78431509063125],[-81.12853084992437,75.71398346628203],[-80.05751095245915,75.33684886341588],[-79.83393286814832,74.92312734648719],[-80.45777075877584,74.65730377877779],[-81.94884253612554,74.44245901152433],[-83.22889360221143,74.56402781849096],[-86.0974523587333,74.41003205026115],[-88.15035030796022,74.39230703398499],[-89.76472205275837,74.51555532500115],[-92.42244096552943,74.837757880341],[-92.7682854886428,75.38681997344216],[-92.88990597204173,75.88265534128266],[-93.893824022176,76.31924367950054],[-95.96245744503582,76.44138092722247],[-97.12137895382949,76.75107778594761],[-96.74512285031236,77.16138865834515],[-94.68408586299947,77.09787832305838]]],[[[-116.19858659550734,77.64528677032621],[-116.33581336145838,76.87696157501055],[-117.10605058476878,76.53003184681913],[-118.04041215703813,76.4811717800871],[-119.89931758688569,76.05321340606199],[-121.4999950771265,75.9000186225328],[-122.85492448615896,76.11654287383568],[-122.8549252936032,76.11654287383568],[-121.15753536032825,76.86450755482835],[-119.10393897182104,77.51221995717464],[-117.57013078496597,77.4983189968881],[-116.19858659550734,77.64528677032621]]],[[[-93.84000301794399,77.5199972602345],[-94.29560828324526,77.4913426785287],[-96.16965410031008,77.5551113959769],[-96.43630449093612,77.83462921824362],[-94.42257727738638,77.82000478790499],[-93.72065629756588,77.63433136668033],[-93.84000301794399,77.5199972602345]]],[[[-110.18693803591297,77.6970148790503],[-112.05119116905848,77.40922882761686],[-113.53427893761906,77.73220652944116],[-112.72458675825384,78.05105011668195],[-111.26444332563085,78.15295604116156],[-109.8544518705471,77.99632477488484],[-110.18693803591297,77.6970148790503]]],[[[-109.66314571820259,78.60197256134569],[-110.88131425661886,78.40691986766001],[-112.54209143761517,78.4079017198735],[-112.5258908760916,78.55055451121522],[-111.5000103422334,78.84999359813057],[-110.96366065147602,78.80444082306522],[-109.66314571820259,78.60197256134569]]],[[[-95.83029496944934,78.05694122996326],[-97.30984290239799,77.85059723582178],[-98.12428931353396,78.08285696075758],[-98.55286780474664,78.4581053738451],[-98.63198442258552,78.87193024363839],[-97.33723141151262,78.83198436147677],[-96.75439876990879,78.765812689927],[-95.55927792029458,78.41831452098029],[-95.83029496944934,78.05694122996326]]],[[[-100.06019182005214,78.3247543403159],[-99.67093909381362,77.9075446642074],[-101.30394019245301,78.01898489044481],[-102.94980872273305,78.34322866486022],[-105.17613277873154,78.38033234324574],[-104.21042945027716,78.6774201524918],[-105.41958045125854,78.91833567983645],[-105.49228919149316,79.30159393992919],[-103.52928239623793,79.16534902619165],[-100.82515804726881,78.80046173777869],[-100.06019182005214,78.3247543403159]]],[[[-87.02,79.66],[-85.81435,79.3369],[-87.18756,79.0393],[-89.03535,78.28723],[-90.80436,78.21533],[-92.87669,78.34333],[-93.95116,78.75099],[-93.93574,79.11373],[-93.14524,79.3801],[-94.974,79.37248],[-96.07614,79.70502],[-96.70972,80.15777],[-96.01644,80.60233],[-95.32345,80.90729],[-94.29843,80.97727],[-94.73542,81.20646],[-92.40984,81.25739],[-91.13289,80.72345],[-89.45,80.50932203389829],[-87.81,80.32],[-87.02,79.66]]],[[[-68.5,83.10632151676575],[-65.82735,83.02801],[-63.68,82.9],[-61.85,82.6286],[-61.89388,82.36165],[-64.334,81.92775],[-66.75342,81.72527],[-67.65755,81.50141],[-65.48031,81.50657],[-67.84,80.9],[-69.4697,80.61683],[-71.18,79.8],[-73.2428,79.63415],[-73.88,79.43016220480207],[-76.90773,79.32309],[-75.52924,79.19766],[-76.22046,79.01907],[-75.39345,78.52581],[-76.34354,78.18296],[-77.88851,77.89991],[-78.36269,77.50859],[-79.75951,77.20968],[-79.61965,76.98336],[-77.91089,77.022045],[-77.88911,76.777955],[-80.56125,76.17812],[-83.17439,76.45403],[-86.11184,76.29901],[-87.6,76.42],[-89.49068,76.47239],[-89.6161,76.95213],[-87.76739,77.17833],[-88.26,77.9],[-87.65,77.97022222222222],[-84.97634,77.53873],[-86.34,78.18],[-87.96192,78.37181],[-87.15198,78.75867],[-85.37868,78.9969],[-85.09495,79.34543],[-86.50734,79.73624],[-86.93179,80.25145],[-84.19844,80.20836],[-83.40869565217383,80.1],[-81.84823,80.46442],[-84.1,80.58],[-87.59895,80.51627],[-89.36663,80.85569],[-90.2,81.26],[-91.36786,81.5531],[-91.58702,81.89429],[-90.1,82.085],[-88.93227,82.11751],[-86.97024,82.27961],[-85.5,82.65227345805704],[-84.260005,82.6],[-83.18,82.32],[-82.42,82.86],[-81.1,83.02],[-79.30664,83.13056],[-76.25,83.1720588235294],[-75.71878,83.06404],[-72.83153,83.23324],[-70.665765,83.16978075838284],[-68.5,83.10632151676575]]]]}},{"type":"Feature","properties":{"abbrev":"Bhs.","name":"Bahamas","name_long":"Bahamas","iso_a2":"BS","iso_a3":"BHS","iso_n3":"044"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-77.53466,23.75975],[-77.78,23.71],[-78.03405,24.28615],[-78.40848,24.57564],[-78.19087,25.2103],[-77.89,25.17],[-77.54,24.34],[-77.53466,23.75975]]],[[[-77.82,26.58],[-78.91,26.42],[-78.98,26.79],[-78.51,26.87],[-77.85,26.84],[-77.82,26.58]]],[[[-77,26.59],[-77.17255,25.87918],[-77.35641,26.00735],[-77.34,26.53],[-77.78802,26.92516],[-77.79,27.04],[-77,26.59]]]]}},{"type":"Feature","properties":{"abbrev":"C.R.","name":"Costa Rica","name_long":"Costa Rica","iso_a2":"CR","iso_a3":"CRI","iso_n3":"188"},"geometry":{"type":"Polygon","coordinates":[[[-82.96578304719736,8.225027980985985],[-83.50843726269431,8.446926581247283],[-83.71147396516908,8.656836249216866],[-83.59631303580665,8.830443223501419],[-83.63264156770784,9.051385809765321],[-83.90988562695372,9.29080272057358],[-84.30340165885636,9.487354030795714],[-84.64764421256866,9.615537421095707],[-84.71335079622777,9.908051866083852],[-84.97566036654133,10.086723130733006],[-84.91137488477024,9.795991522658923],[-85.11092342806532,9.55703969974131],[-85.33948828809227,9.83454214114866],[-85.66078650586698,9.933347479690724],[-85.79744483106285,10.134885565629034],[-85.79170874707843,10.439337266476613],[-85.65931372754666,10.75433095951172],[-85.94172543002176,10.895278428587801],[-85.7125404528073,11.088444932494824],[-85.56185197624418,11.217119248901597],[-84.90300330273895,10.952303371621896],[-84.67306901725627,11.082657172078143],[-84.35593075228104,10.999225572142905],[-84.19017859570485,10.793450018756674],[-83.89505449088595,10.726839097532446],[-83.65561174186158,10.938764146361422],[-83.40231970898296,10.395438137244652],[-83.01567664257517,9.992982082555555],[-82.54619625520348,9.566134751824677],[-82.93289099804358,9.476812038608173],[-82.92715491405916,9.074330145702916],[-82.71918311230053,8.925708726431495],[-82.86865719270477,8.807266343618522],[-82.82977067740516,8.62629547773237],[-82.91317643912421,8.42351715741907],[-82.96578304719736,8.225027980985985]]]}},{"type":"Feature","properties":{"abbrev":"Grlnd.","name":"Greenland","name_long":"Greenland","iso_a2":"GL","iso_a3":"GRL","iso_n3":"304"},"geometry":{"type":"Polygon","coordinates":[[[-46.76379,82.62796],[-43.40644,83.22516],[-39.89753,83.18018],[-38.62214,83.54905],[-35.08787,83.64513],[-27.10046,83.51966],[-20.84539,82.72669],[-22.69182,82.34165],[-26.51753,82.29765],[-31.9,82.2],[-31.39646,82.02154],[-27.85666,82.13178],[-24.84448,81.78697],[-22.90328,82.09317],[-22.07175,81.73449],[-23.16961,81.15271],[-20.62363,81.52462],[-15.76818,81.91245],[-12.77018,81.71885],[-12.20855,81.29154],[-16.28533,80.58004],[-16.85,80.35],[-20.04624,80.17708],[-17.73035,80.12912],[-18.9,79.4],[-19.70499,78.75128],[-19.67353,77.63859],[-18.47285,76.98565],[-20.03503,76.94434],[-21.67944,76.62795],[-19.83407,76.09808],[-19.59896,75.24838],[-20.66818,75.15585],[-19.37281,74.29561],[-21.59422,74.22382],[-20.43454,73.81713],[-20.76234,73.46436],[-22.17221,73.30955],[-23.56593,73.30663],[-22.31311,72.62928],[-22.29954,72.18409],[-24.27834,72.59788],[-24.79296,72.3302],[-23.44296,72.08016],[-22.13281,71.46898],[-21.75356,70.66369],[-23.53603,70.471],[-24.30702,70.85649],[-25.54341,71.43094],[-25.20135,70.75226],[-26.36276,70.22646],[-23.72742,70.18401],[-22.34902,70.12946],[-25.02927,69.2588],[-27.74737,68.47046],[-30.67371,68.12503],[-31.77665,68.12078],[-32.81105,67.73547],[-34.20196,66.67974],[-36.35284,65.9789],[-37.04378,65.93768],[-38.37505,65.69213],[-39.81222,65.45848],[-40.66899,64.83997],[-40.68281,64.13902],[-41.1887,63.48246],[-42.81938,62.68233],[-42.41666,61.90093],[-42.86619,61.07404],[-43.3784,60.09772],[-44.7875,60.03676],[-46.26364,60.85328],[-48.26294,60.85843],[-49.23308,61.40681],[-49.90039,62.38336],[-51.63325,63.62691],[-52.14014,64.27842],[-52.27659,65.1767],[-53.66166,66.09957],[-53.30161,66.8365],[-53.96911,67.18899],[-52.9804,68.35759],[-51.47536,68.72958],[-51.08041,69.14781],[-50.87122,69.9291],[-52.013585,69.574925],[-52.55792,69.42616],[-53.45629,69.283625],[-54.68336,69.61003],[-54.75001,70.28932],[-54.35884,70.821315],[-53.431315,70.835755],[-51.39014,70.56978],[-53.10937,71.20485],[-54.00422,71.54719],[-55,71.40653696727257],[-55.83468,71.65444],[-54.71819,72.58625],[-55.32634,72.95861],[-56.12003,73.64977],[-57.32363,74.71026],[-58.59679,75.09861],[-58.58516,75.51727],[-61.26861,76.10238],[-63.39165,76.1752],[-66.06427,76.13486],[-68.50438,76.06141],[-69.66485,76.37975],[-71.40257,77.00857],[-68.77671,77.32312],[-66.76397,77.37595],[-71.04293,77.63595],[-73.297,78.04419],[-73.15938,78.43271],[-69.37345,78.91388],[-65.7107,79.39436],[-65.3239,79.75814],[-68.02298,80.11721],[-67.15129,80.51582],[-63.68925,81.21396],[-62.23444,81.3211],[-62.65116,81.77042],[-60.28249,82.03363],[-57.20744,82.19074],[-54.13442,82.19962],[-53.04328,81.88833],[-50.39061,82.43883],[-48.00386,82.06481],[-46.59984,81.985945],[-44.523,81.6607],[-46.9007,82.19979],[-46.76379,82.62796]]]}},{"type":"Feature","properties":{"abbrev":"Dom. Rep.","name":"Dominican Rep.","name_long":"Dominican Republic","iso_a2":"DO","iso_a3":"DOM","iso_n3":"214"},"geometry":{"type":"Polygon","coordinates":[[[-71.71236141629296,19.714455878167357],[-71.58730445014663,19.8849105900821],[-70.80670610216174,19.880285549391985],[-70.21436499701613,19.62288524014616],[-69.95081519232758,19.647999986240006],[-69.76925004747008,19.293267116772437],[-69.22212582057988,19.313214219637103],[-69.25434607611385,19.015196234609874],[-68.80941199408083,18.979074408437853],[-68.31794328476897,18.612197577381693],[-68.68931596543452,18.205142320218613],[-69.16494584824892,18.42264842373511],[-69.62398759629764,18.380712998930246],[-69.95293392605154,18.42830699307106],[-70.1332329983179,18.245915025296895],[-70.51713721381422,18.184290879788833],[-70.66929846869763,18.426885891183034],[-70.99995012071719,18.283328762276213],[-71.4002099270339,17.5985643579766],[-71.65766191271202,17.7575727401387],[-71.70830481635805,18.04499705654609],[-71.68773759630587,18.31666006110447],[-71.94511206733556,18.61690013272026],[-71.70130265978248,18.78541697842405],[-71.62487321642283,19.169837958243306],[-71.71236141629296,19.714455878167357]]]}},{"type":"Feature","properties":{"abbrev":"Cuba","name":"Cuba","name_long":"Cuba","iso_a2":"CU","iso_a3":"CUB","iso_n3":"192"},"geometry":{"type":"Polygon","coordinates":[[[-82.26815121125706,23.188610744717703],[-81.40445716014683,23.11727142993878],[-80.6187686835812,23.105980129483],[-79.67952368846025,22.76530324959883],[-79.28148596873207,22.399201565027056],[-78.34743445505649,22.512166246017088],[-77.99329586456028,22.277193508385935],[-77.14642249216105,21.657851467367834],[-76.52382483590856,21.206819566324373],[-76.19462012399319,21.220565497314013],[-75.59822241891267,21.016624457274133],[-75.67106035022806,20.735091254148],[-74.9338960435845,20.693905137611385],[-74.17802486845126,20.28462779385974],[-74.29664811877724,20.05037852628068],[-74.96159461129294,19.92343537035569],[-75.63468014189459,19.873774318923196],[-76.323656175426,19.95289093676206],[-77.75548092315306,19.855480861891873],[-77.08510840524674,20.413353786698792],[-77.49265458851661,20.67310537361389],[-78.13729224314159,20.73994883878343],[-78.48282670766119,21.02861338956585],[-78.71986650258401,21.598113511638434],[-79.28499996612794,21.5591753199065],[-80.21747534861865,21.827324327069036],[-80.51753455272141,22.03707896574176],[-81.82094336620318,22.19205658618507],[-82.16999182811864,22.38710927987075],[-81.79500179719267,22.636964830001958],[-82.77589799674084,22.688150336187064],[-83.49445878775936,22.16851797127613],[-83.90880042187563,22.154565334557333],[-84.05215084505326,21.910575059491254],[-84.54703019889638,21.801227728761642],[-84.97491105827311,21.89602814380109],[-84.44706214062776,22.204949856041907],[-84.23035702181178,22.565754706303764],[-83.7782399156902,22.788118394455694],[-83.26754757356575,22.983041897060644],[-82.51043616405751,23.078746649665188],[-82.26815121125706,23.188610744717703]]]}},{"type":"Feature","properties":{"abbrev":"Hond.","name":"Honduras","name_long":"Honduras","iso_a2":"HN","iso_a3":"HND","iso_n3":"340"},"geometry":{"type":"Polygon","coordinates":[[[-87.31665442579549,12.984685777229004],[-87.48940873894713,13.297534898323931],[-87.79311113152653,13.384480495655168],[-87.72350297722932,13.785050360565606],[-87.85951534702161,13.893312486217097],[-88.06534257684012,13.96462596277979],[-88.50399797234962,13.845485948130943],[-88.54123084181595,13.980154730683523],[-88.84307288283276,14.140506700085211],[-89.05851192905766,14.340029405164215],[-89.35332597528281,14.424132798719086],[-89.14553504103719,14.678019110569153],[-89.22522009963124,14.874286200413678],[-89.15481096063353,15.066419175674866],[-88.6806796943556,15.34624705653539],[-88.22502275262195,15.72772247971403],[-88.12115312371537,15.688655096901359],[-87.90181250685241,15.864458319558196],[-87.61568010125234,15.8787985295192],[-87.52292090528846,15.797278957578783],[-87.36776241733213,15.84694000901129],[-86.90319129102818,15.756712958229569],[-86.44094560417739,15.78283539475319],[-86.11923397494434,15.893448798073962],[-86.00195431185784,16.00540578863439],[-85.68331743034628,15.953651841693953],[-85.44400387240256,15.885749009662446],[-85.18244361035721,15.90915843349063],[-84.98372188997882,15.995923163308701],[-84.52697974316715,15.857223619037427],[-84.36825558138258,15.835157782448732],[-84.06305457226682,15.648244126849136],[-83.77397661002612,15.42407176356687],[-83.41038123242036,15.270902818253774],[-83.14721900097413,14.99582916916421],[-83.48998877636602,15.016267198135663],[-83.62858496777288,14.880073960830371],[-83.97572140169359,14.749435939996486],[-84.22834164095241,14.74876414637663],[-84.4493359036486,14.621614284722511],[-84.64958207877963,14.666805324761867],[-84.8200367906943,14.81958669683263],[-84.92450069857233,14.790492865452336],[-85.05278744173688,14.551541042534723],[-85.14875057650288,14.560196844943619],[-85.16536454948482,14.35436961512505],[-85.51441301140028,14.079011745657908],[-85.69866533073696,13.960078436738002],[-85.8012947252685,13.836054999237604],[-86.09626380079061,14.038187364147234],[-86.31214209668985,13.771356106008225],[-86.52070817741992,13.778487453664468],[-86.75508663607962,13.75484548589094],[-86.73382178419149,13.263092556201398],[-86.88055701368438,13.254204209847217],[-87.00576900912743,13.025794379117258],[-87.31665442579549,12.984685777229004]]]}},{"type":"Feature","properties":{"abbrev":"Guat.","name":"Guatemala","name_long":"Guatemala","iso_a2":"GT","iso_a3":"GTM","iso_n3":"320"},"geometry":{"type":"Polygon","coordinates":[[[-90.09555457229098,13.735337632700734],[-90.60862403030085,13.909771429901951],[-91.23241024449605,13.927832342987957],[-91.68974667027912,14.126218166556455],[-92.22775000686983,14.538828640190928],[-92.20322953974731,14.830102850804069],[-92.08721594925207,15.06458466232844],[-92.22924862340628,15.25144664149586],[-91.74796017125591,16.066564846251723],[-90.46447262242265,16.069562079324655],[-90.43886695022204,16.410109768128095],[-90.60084672724092,16.47077789963876],[-90.71182186558772,16.687483018454728],[-91.08167009150065,16.918476670799404],[-91.45392127151516,17.252177232324172],[-91.0022692532842,17.25465770107418],[-91.00151994501596,17.81759491624571],[-90.06793351923098,17.819326076727474],[-89.14308041050332,17.80831899664932],[-89.15080603713095,17.015576687075836],[-89.22912167026928,15.88693756760517],[-88.93061275913527,15.887273464415074],[-88.60458614780583,15.70638011317736],[-88.51836402052686,15.855389105690975],[-88.22502275262202,15.727722479713902],[-88.68067969435563,15.346247056535304],[-89.15481096063357,15.06641917567481],[-89.22522009963127,14.874286200413621],[-89.14553504103718,14.678019110569084],[-89.35332597528279,14.424132798719116],[-89.58734269891654,14.362586167859488],[-89.53421932652051,14.244815578666305],[-89.72193396682073,14.134228013561694],[-90.0646779039966,13.881969509328924],[-90.09555457229098,13.735337632700734]]]}},{"type":"Feature","properties":{"abbrev":"Haiti","name":"Haiti","name_long":"Haiti","iso_a2":"HT","iso_a3":"HTI","iso_n3":"332"},"geometry":{"type":"Polygon","coordinates":[[[-73.18979061551762,19.915683905511912],[-72.57967281766362,19.871500555902358],[-71.71236141629296,19.714455878167357],[-71.62487321642283,19.169837958243306],[-71.70130265978248,18.78541697842405],[-71.94511206733556,18.61690013272026],[-71.68773759630587,18.31666006110447],[-71.70830481635805,18.04499705654609],[-72.37247616238935,18.21496084235406],[-72.84441118029488,18.14561107021836],[-73.45455481636503,18.217906398994696],[-73.92243323433566,18.030992743395004],[-74.45803361682478,18.342549953682706],[-74.36992529976713,18.66490753831941],[-73.44954220243272,18.526052964751145],[-72.69493709989064,18.445799465401862],[-72.334881557897,18.668421535715254],[-72.79164954292489,19.10162506761803],[-72.78410478381028,19.48359141690341],[-73.41502234566175,19.639550889560283],[-73.18979061551762,19.915683905511912]]]}},{"type":"Feature","properties":{"abbrev":"Mex.","name":"Mexico","name_long":"Mexico","iso_a2":"MX","iso_a3":"MEX","iso_n3":"484"},"geometry":{"type":"Polygon","coordinates":[[[-97.14000830767071,25.869997463478395],[-97.52807247596655,24.992144069920297],[-97.70294552284223,24.272343044526735],[-97.77604183631905,22.932579860927657],[-97.87236670611111,22.44421173755336],[-97.69904395220419,21.898689480064263],[-97.38895952023677,21.411018988525825],[-97.18933346229329,20.635433254473128],[-96.52557552772032,19.890930894444068],[-96.29212724484177,19.320371405509547],[-95.90088497595995,18.82802419684873],[-94.83906348344271,18.562717393462208],[-94.4257295397562,18.144370835843347],[-93.5486512926824,18.423836981677937],[-92.7861138577835,18.52483856859226],[-92.0373481920904,18.704569200103432],[-91.40790340855926,18.87608327888023],[-90.77186987991087,19.28412038825678],[-90.53358985061305,19.8674181177513],[-90.45147599970124,20.707521877520435],[-90.27861833368489,20.99985545499555],[-89.60132117385149,21.26172577563449],[-88.54386633986284,21.49367544197662],[-87.65841651075772,21.458845526611977],[-87.05189022494807,21.543543199138295],[-86.81198238803296,21.331514797444754],[-86.84590796583262,20.849864610268355],[-87.38329118523586,20.25540477139873],[-87.62105445021075,19.64655304613592],[-87.43675045444176,19.47240346931227],[-87.58656043165593,19.04013011319074],[-87.83719112827151,18.25981598558343],[-88.09066402866318,18.51664785407405],[-88.30003109409364,18.49998220466],[-88.4901228502793,18.48683055264172],[-88.84834387892658,17.883198147040332],[-89.02985734735176,18.00151133877256],[-89.15090938999549,17.955467637600407],[-89.14308041050333,17.808318996649405],[-90.0679335192309,17.81932607672752],[-91.00151994501596,17.817594916245696],[-91.00226925328417,17.25465770107428],[-91.45392127151511,17.252177232324186],[-91.0816700915006,16.91847667079952],[-90.71182186558764,16.687483018454767],[-90.60084672724093,16.47077789963879],[-90.438866950222,16.41010976812811],[-90.46447262242265,16.069562079324726],[-91.74796017125595,16.066564846251765],[-92.2292486234063,15.251446641495873],[-92.08721594925203,15.064584662328512],[-92.20322953974727,14.83010285080411],[-92.22775000686983,14.538828640190957],[-93.35946387406176,15.615429592343672],[-93.87516883011851,15.940164292865914],[-94.69165646033014,16.200975246642884],[-95.25022701697304,16.128318182840644],[-96.05338212765331,15.752087917539596],[-96.55743404822829,15.65351512294279],[-97.26359249549665,15.917064927631316],[-98.01302995480961,16.107311713113912],[-98.94767574745651,16.566043402568763],[-99.69739742714705,16.70616404872817],[-100.82949886758131,17.17107107184205],[-101.66608862995446,17.649026394109626],[-101.91852800170022,17.916090196193977],[-102.47813208698891,17.975750637275098],[-103.50098954955808,18.29229462327885],[-103.91752743204682,18.74857168220001],[-104.9920096504755,19.316133938061682],[-105.49303849976144,19.946767279535436],[-105.73139604370766,20.434101874264115],[-105.39777299683135,20.531718654863425],[-105.50066077352443,20.81689504646613],[-105.27075232625793,21.07628489835514],[-105.26581722697402,21.42210358325235],[-105.6031609769754,21.871145941652568],[-105.69341386597313,22.269080308516152],[-106.02871639689897,22.773752346278627],[-106.90998043498837,23.767774359628902],[-107.91544877809139,24.54891531015295],[-108.40190487347098,25.17231395110593],[-109.26019873740665,25.58060944264406],[-109.44408932171734,25.824883938087677],[-109.29164384645627,26.442934068298428],[-109.80145768923182,26.676175645447927],[-110.3917317370857,27.16211497650454],[-110.64101884646163,27.859876003525528],[-111.17891883018785,27.941240546169066],[-111.75960689985163,28.46795258230395],[-112.2282346260904,28.95440867768349],[-112.27182369672869,29.266844387320074],[-112.80959448937398,30.021113593052345],[-113.16381059451868,30.78688080496943],[-113.14866939985717,31.17096588797892],[-113.87188106978186,31.567608344035193],[-114.2057366606035,31.52404511161313],[-114.77645117883503,31.799532172161147],[-114.93669979537212,31.3934846054276],[-114.77123185917351,30.913617255165267],[-114.67389929895177,30.162681179315992],[-114.33097449426292,29.75043244070741],[-113.58887508833544,29.061611436473015],[-113.42405310754054,28.82617361095123],[-113.27196936730553,28.7547826197399],[-113.14003943566439,28.411289374295958],[-112.9622983467965,28.42519033458251],[-112.76158708377488,27.780216783147523],[-112.45791052941166,27.52581370697476],[-112.2449519519368,27.17172679291076],[-111.6164890206192,26.662817287700477],[-111.28467464887302,25.732589830014433],[-110.98781938357239,25.294606228124564],[-110.71000688357134,24.82600434010186],[-110.65504899782887,24.298594672131117],[-110.17285620811343,24.265547593680424],[-109.77184709352855,23.811182562754198],[-109.4091043770557,23.36467234953625],[-109.43339230023292,23.1855876734287],[-109.85421932660171,22.818271592698068],[-110.03139197471444,22.823077500901206],[-110.29507097048366,23.43097321216669],[-110.94950130902805,24.00096426034599],[-111.67056840701268,24.484423122652515],[-112.18203589562147,24.738412787367167],[-112.14898881717085,25.47012523040405],[-112.3007108223797,26.012004299416613],[-112.77729671919155,26.32195954030317],[-113.46467078332194,26.768185533143424],[-113.59672990604383,26.639459540304472],[-113.84893673384424,26.90006378835244],[-114.46574662968003,27.142090358991368],[-115.055142178185,27.72272675222291],[-114.98225257043741,27.798200181585116],[-114.57036556685495,27.74148529714489],[-114.19932878299925,28.115002549750553],[-114.16201839888463,28.566111965442303],[-114.93184221073663,29.279479275015486],[-115.518653937627,29.556361599235398],[-115.88736528202958,30.180793768834178],[-116.25835038945293,30.83646434175358],[-116.72152625208498,31.635743720012044],[-117.12775999999985,32.53534],[-115.99135,32.61239000000012],[-114.72139,32.72083],[-114.815,32.52528],[-113.30498,32.03914],[-111.02361,31.33472],[-109.035,31.341940000000136],[-108.24194,31.34222],[-108.24,31.75485371816637],[-106.50759,31.75452],[-106.1429,31.39995],[-105.63159,31.08383],[-105.03737,30.64402],[-104.70575,30.12173],[-104.4569699999999,29.57196],[-103.94,29.27],[-103.11,28.97],[-102.48,29.76],[-101.6624,29.7793],[-100.9576,29.380710000000132],[-100.45584,28.696120000000118],[-100.11,28.110000000000127],[-99.52,27.54],[-99.3,26.84],[-99.02,26.37],[-98.24,26.06],[-97.53,25.84],[-97.14000830767071,25.869997463478395]]]}},{"type":"Feature","properties":{"abbrev":"Jam.","name":"Jamaica","name_long":"Jamaica","iso_a2":"JM","iso_a3":"JAM","iso_n3":"388"},"geometry":{"type":"Polygon","coordinates":[[[-77.56960079619921,18.490525417550487],[-76.89661861846211,18.400866807524082],[-76.36535905628554,18.160700588447597],[-76.19965857614164,17.886867173732966],[-76.9025614081757,17.868237819891746],[-77.20634131540348,17.70111623785982],[-77.76602291534061,17.86159739834224],[-78.33771928578561,18.225967922432233],[-78.21772661000388,18.454532782459193],[-77.79736467152563,18.524218451404778],[-77.56960079619921,18.490525417550487]]]}},{"type":"Feature","properties":{"abbrev":"P.R.","name":"Puerto Rico","name_long":"Puerto Rico","iso_a2":"PR","iso_a3":"PRI","iso_n3":"630"},"geometry":{"type":"Polygon","coordinates":[[[-66.28243445500821,18.514761664295364],[-65.7713028632093,18.426679185453878],[-65.59100379094295,18.228034979723915],[-65.84716386581377,17.97590566657186],[-66.59993445500949,17.981822618069273],[-67.18416236028527,17.946553453030077],[-67.24242753769435,18.374460150622937],[-67.10067908391774,18.52060110114435],[-66.28243445500821,18.514761664295364]]]}},{"type":"Feature","properties":{"abbrev":"Pan.","name":"Panama","name_long":"Panama","iso_a2":"PA","iso_a3":"PAN","iso_n3":"591"},"geometry":{"type":"Polygon","coordinates":[[[-77.88157141794525,7.223771267114785],[-78.21493608266012,7.512254950384161],[-78.42916073272607,8.052041123888927],[-78.18209570993864,8.319182440621773],[-78.4354652574657,8.38770538984079],[-78.62212053090394,8.718124497915028],[-79.12030717641375,8.996092027213022],[-79.55787736684519,8.932374986197146],[-79.76057817251004,8.5845150822244],[-80.16448116730334,8.333315944853595],[-80.38265906443961,8.298408514840432],[-80.4806892564973,8.09030752200107],[-80.00368994822716,7.547524115423371],[-80.276670701809,7.419754136581715],[-80.42115800649708,7.271571966984764],[-80.8864009264208,7.220541490096537],[-81.05954281281473,7.817921047390596],[-81.18971574575795,7.647905585150339],[-81.51951473664468,7.706610012233909],[-81.72131120474445,8.108962714058435],[-82.13144120962892,8.175392767769635],[-82.39093441438257,8.29236237226229],[-82.82008134635042,8.290863755725823],[-82.85095801464482,8.073822740099956],[-82.96578304719736,8.225027980985985],[-82.91317643912421,8.42351715741907],[-82.82977067740516,8.62629547773237],[-82.86865719270477,8.807266343618522],[-82.71918311230053,8.925708726431495],[-82.92715491405916,9.074330145702916],[-82.93289099804358,9.476812038608173],[-82.54619625520348,9.566134751824677],[-82.18712256542341,9.20744863528678],[-82.20758643261095,8.9955752628901],[-81.80856686066929,8.950616766796173],[-81.71415401887204,9.031955471223583],[-81.43928707551154,8.786234035675719],[-80.94730160187676,8.858503526235905],[-80.52190121125008,9.111072089062432],[-79.91459977895599,9.31276520429762],[-79.57330278188431,9.611610012241526],[-79.02119177927793,9.552931423374105],[-79.05845048696037,9.454565334506526],[-78.50088762074719,9.420458889193881],[-78.05592770049802,9.2477304142583],[-77.72951351592641,8.946844387238869],[-77.35336076527385,8.67050466555807],[-77.47472286651133,8.524286200388218],[-77.24256649444008,7.935278225125444],[-77.43110795765699,7.638061224798735],[-77.75341386586139,7.709839789252142],[-77.88157141794525,7.223771267114785]]]}},{"type":"Feature","properties":{"abbrev":"Nic.","name":"Nicaragua","name_long":"Nicaragua","iso_a2":"NI","iso_a3":"NIC","iso_n3":"558"},"geometry":{"type":"Polygon","coordinates":[[[-85.7125404528073,11.088444932494824],[-86.05848832878526,11.403438625529944],[-86.52584998243296,11.806876532432597],[-86.74599158399633,12.143961900272487],[-87.16751624220116,12.458257961471656],[-87.66849341505471,12.909909979702633],[-87.5574666002756,13.064551703336065],[-87.39238623731923,12.914018256069838],[-87.31665442579549,12.984685777228975],[-87.00576900912756,13.025794379117157],[-86.88055701368437,13.254204209847245],[-86.7338217841916,13.263092556201443],[-86.7550866360797,13.754845485890913],[-86.5207081774199,13.77848745366444],[-86.31214209668993,13.77135610600817],[-86.0962638007906,14.038187364147248],[-85.80129472526859,13.83605499923759],[-85.69866533073693,13.960078436738087],[-85.51441301140025,14.079011745657837],[-85.1653645494848,14.354369615125078],[-85.14875057650296,14.560196844943619],[-85.05278744173692,14.551541042534723],[-84.9245006985724,14.790492865452352],[-84.82003679069435,14.819586696832669],[-84.64958207877962,14.666805324761754],[-84.4493359036486,14.621614284722495],[-84.22834164095241,14.748764146376658],[-83.97572140169359,14.749435939996461],[-83.62858496777292,14.880073960830302],[-83.48998877636612,15.016267198135536],[-83.14721900097413,14.99582916916411],[-83.23323442252394,14.899866034398102],[-83.2841615465476,14.6766238468972],[-83.18212643098728,14.31070302983845],[-83.41249996614445,13.970077826386557],[-83.51983191601468,13.567699286345883],[-83.55220720084554,13.127054348193086],[-83.49851538769427,12.869292303921227],[-83.47332312695198,12.419087225794428],[-83.62610449902292,12.320850328007566],[-83.71961300325506,11.893124497927726],[-83.65085751009072,11.629032090700118],[-83.8554703437504,11.373311265503787],[-83.80893571647155,11.103043524617274],[-83.65561174186158,10.938764146361422],[-83.89505449088595,10.726839097532446],[-84.19017859570485,10.793450018756674],[-84.35593075228104,10.999225572142905],[-84.67306901725627,11.082657172078143],[-84.90300330273895,10.952303371621896],[-85.56185197624418,11.217119248901597],[-85.7125404528073,11.088444932494824]]]}},{"type":"Feature","properties":{"abbrev":"El. S.","name":"El Salvador","name_long":"El Salvador","iso_a2":"SV","iso_a3":"SLV","iso_n3":"222"},"geometry":{"type":"Polygon","coordinates":[[[-87.79311113152657,13.384480495655055],[-87.90411210808952,13.149016831917137],[-88.48330156121682,13.163951320849492],[-88.8432279121297,13.259733588102478],[-89.2567427233293,13.458532823129303],[-89.81239356154767,13.520622056527998],[-90.09555457229098,13.735337632700734],[-90.0646779039966,13.881969509328924],[-89.72193396682073,14.134228013561694],[-89.53421932652051,14.244815578666305],[-89.58734269891654,14.362586167859488],[-89.35332597528279,14.424132798719116],[-89.05851192905766,14.340029405164085],[-88.84307288283284,14.140506700085169],[-88.541230841816,13.980154730683479],[-88.50399797234971,13.845485948130857],[-88.06534257684012,13.964625962779778],[-87.8595153470216,13.893312486216983],[-87.72350297722939,13.785050360565506],[-87.79311113152657,13.384480495655055]]]}},{"type":"Feature","properties":{"abbrev":"Tr.T.","name":"Trinidad and Tobago","name_long":"Trinidad and Tobago","iso_a2":"TT","iso_a3":"TTO","iso_n3":"780"},"geometry":{"type":"Polygon","coordinates":[[[-61.68,10.76],[-61.105,10.89],[-60.895,10.855],[-60.935,10.11],[-61.77,10],[-61.95,10.09],[-61.66,10.365],[-61.68,10.76]]]}},{"type":"Feature","properties":{"abbrev":"U.S.A.","name":"United States","name_long":"United States","iso_a2":"US","iso_a3":"USA","iso_n3":"840"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-155.54211,19.08348],[-155.68817,18.91619],[-155.93665,19.05939],[-155.90806,19.33888],[-156.07347,19.70294],[-156.02368,19.81422],[-155.85008,19.97729],[-155.91907,20.17395],[-155.86108,20.26721],[-155.78505,20.2487],[-155.40214,20.07975],[-155.22452,19.99302],[-155.06226,19.8591],[-154.80741,19.50871],[-154.83147,19.45328],[-155.22217,19.23972],[-155.54211,19.08348]]],[[[-156.07926,20.64397],[-156.41445,20.57241],[-156.58673,20.783],[-156.70167,20.8643],[-156.71055,20.92676],[-156.61258,21.01249],[-156.25711,20.91745],[-155.99566,20.76404],[-156.07926,20.64397]]],[[[-156.75824,21.17684],[-156.78933,21.06873],[-157.32521,21.09777],[-157.25027,21.21958],[-156.75824,21.17684]]],[[[-157.65283,21.32217],[-157.70703,21.26442],[-157.7786,21.27729],[-158.12667,21.31244],[-158.2538,21.53919],[-158.29265,21.57912],[-158.0252,21.71696],[-157.94161,21.65272],[-157.65283,21.32217]]],[[[-159.34512,21.982],[-159.46372,21.88299],[-159.80051,22.06533],[-159.74877,22.1382],[-159.5962,22.23618],[-159.36569,22.21494],[-159.34512,21.982]]],[[[-94.81758,49.38905],[-94.63999999999987,48.84000000000012],[-94.32914,48.67074000000011],[-93.63087,48.60926],[-92.61,48.45],[-91.64,48.14],[-90.82999999999986,48.27],[-89.6,48.010000000000105],[-89.27291744663668,48.01980825458284],[-88.37811418328653,48.30291758889382],[-87.43979262330024,47.94],[-86.46199083122815,47.55333801939204],[-85.65236324740323,47.22021881773051],[-84.87607988151485,46.90008331968238],[-84.77923824739983,46.63710195574913],[-84.54374874544567,46.53868419044923],[-84.6049,46.4396],[-84.3367,46.40877000000011],[-84.1421195136733,46.51222585711574],[-84.09185126416148,46.27541860613826],[-83.89076534700567,46.116926988299156],[-83.6161309475905,46.116926988299156],[-83.46955074739463,45.99468638771259],[-83.59285071484308,45.81689362241255],[-82.55092464875818,45.34751658790545],[-82.33776312543108,44.44],[-82.13764238150397,43.57108755144],[-82.43,42.9800000000001],[-82.89999999999989,42.43000000000015],[-83.11999999999989,42.08],[-83.14199968131256,41.975681057293],[-83.02981014680694,41.83279572200601],[-82.69008928092018,41.675105088867326],[-82.43927771679162,41.675105088867326],[-81.27774654816707,42.20902598730686],[-80.24744767934784,42.36619985612267],[-78.9393621487437,42.86361135514812],[-78.92,42.965],[-79.00999999999988,43.27],[-79.17167355011188,43.46633942318431],[-78.72027991404238,43.62508942318496],[-77.73788509795762,43.62905558936339],[-76.82003414580558,43.628784288093755],[-76.5,44.018458893758606],[-76.375,44.09631],[-75.31821,44.816450000000174],[-74.867,45.000480000000124],[-73.34783,45.00738],[-71.50505999999987,45.0082000000001],[-71.405,45.25500000000014],[-71.08482,45.30524000000017],[-70.6599999999998,45.46],[-70.305,45.915],[-69.99997,46.69307],[-69.237216,47.447781],[-68.905,47.185],[-68.23444,47.35486],[-67.79046,47.06636],[-67.79134,45.70281000000014],[-67.13741,45.13753],[-66.96466,44.80970000000016],[-68.03252,44.3252],[-69.05999999999989,43.98],[-70.11617,43.684050000000155],[-70.645475633411,43.09023834896405],[-70.81489,42.8653],[-70.825,42.335],[-70.495,41.805],[-70.08,41.78],[-70.185,42.145],[-69.88497,41.92283000000012],[-69.96503,41.63717000000017],[-70.64,41.475],[-71.12039,41.49445000000017],[-71.85999999999984,41.32],[-72.295,41.27],[-72.87643,41.22065],[-73.71,40.93110235165449],[-72.24126,41.11948000000015],[-71.94499999999982,40.93],[-73.345,40.63],[-73.982,40.628],[-73.952325,40.75075],[-74.25671,40.47351],[-73.96244,40.42763],[-74.17838,39.70926],[-74.90604,38.93954],[-74.98041,39.1964],[-75.20002,39.248450000000105],[-75.52805,39.4985],[-75.32,38.96],[-75.0718347647898,38.78203223017928],[-75.05673,38.40412000000012],[-75.37747,38.01551],[-75.94023,37.21689],[-76.03127,37.2566],[-75.72204999999978,37.93705000000011],[-76.23287,38.319215],[-76.35,39.15],[-76.542725,38.71761500000011],[-76.32933,38.08326],[-76.98999793161354,38.23999176691339],[-76.30162,37.917945],[-76.25874,36.96640000000011],[-75.9718,36.89726],[-75.86803999999984,36.55125],[-75.72749,35.55074000000013],[-76.36318,34.80854000000013],[-77.39763499999988,34.51201],[-78.05496,33.92547],[-78.55434999999983,33.86133000000012],[-79.06067,33.49395],[-79.20357,33.15839],[-80.301325,32.509355],[-80.86498,32.0333],[-81.33629,31.44049],[-81.49042,30.72999000000013],[-81.31371,30.035520000000105],[-80.98,29.180000000000117],[-80.53558499999988,28.47213],[-80.5299999999998,28.040000000000106],[-80.05653928497756,26.880000000000138],[-80.088015,26.205765],[-80.13155999999987,25.816775],[-80.38103,25.20616],[-80.67999999999988,25.08],[-81.17213,25.201260000000133],[-81.33,25.64],[-81.70999999999981,25.87],[-82.24,26.730000000000132],[-82.70515,27.49504],[-82.85526,27.88624],[-82.65,28.550000000000153],[-82.92999999999988,29.100000000000136],[-83.70959,29.93656],[-84.1,30.090000000000117],[-85.10882,29.63615],[-85.28784,29.68612000000013],[-85.7731,30.152610000000124],[-86.39999999999988,30.40000000000012],[-87.53036,30.27433],[-88.41782,30.3849],[-89.18048999999984,30.31598],[-89.59383117841978,30.15999400483685],[-89.413735,29.89419],[-89.43,29.48864],[-89.21767,29.29108],[-89.40823,29.15961],[-89.77928,29.307140000000143],[-90.15463,29.11743],[-90.880225,29.148535000000123],[-91.62678499999987,29.67700000000013],[-92.49906,29.5523],[-93.22637,29.78375],[-93.84842,29.71363],[-94.69,29.480000000000132],[-95.60026,28.73863],[-96.59404,28.30748],[-97.13999999999982,27.83],[-97.37,27.38],[-97.37999999999987,26.69],[-97.33,26.21000000000012],[-97.13999999999982,25.87],[-97.52999999999989,25.84],[-98.24,26.060000000000116],[-99.01999999999988,26.37],[-99.3,26.84],[-99.51999999999987,27.54],[-100.11,28.110000000000127],[-100.45584,28.696120000000118],[-100.9576,29.380710000000132],[-101.6624,29.779300000000116],[-102.48,29.76],[-103.11,28.97],[-103.94,29.27],[-104.45696999999984,29.57196],[-104.70575,30.12173],[-105.03737,30.64402],[-105.63159,31.08383000000012],[-106.1429,31.39995],[-106.50758999999982,31.75452],[-108.24,31.7548537181664],[-108.24194,31.34222],[-109.035,31.34194000000016],[-111.02361,31.33472],[-113.30498,32.03914],[-114.815,32.52528],[-114.72138999999986,32.72083],[-115.9913499999999,32.61239000000014],[-117.12775999999978,32.53534],[-117.29593769127388,33.04622461520389],[-117.944,33.621236431201396],[-118.41060227589749,33.740909223124504],[-118.51989482279971,34.02778157757575],[-119.081,34.078],[-119.43884064201669,34.3484771782843],[-120.36778,34.44711],[-120.62286,34.60855],[-120.74433,35.15686000000011],[-121.71456999999988,36.16153],[-122.54747,37.551760000000115],[-122.51201,37.78339000000013],[-122.95319,38.11371000000011],[-123.7272,38.95166000000012],[-123.86517,39.76699000000013],[-124.39807,40.3132],[-124.17886,41.142020000000116],[-124.2137,41.99964000000014],[-124.53284,42.7659900000001],[-124.14214,43.70838],[-124.020535,44.615895],[-123.89893,45.52341],[-124.079635,46.86475],[-124.39567,47.72017000000011],[-124.68721008300783,48.18443298339855],[-124.56610107421876,48.3797149658204],[-123.12,48.04],[-122.58736,47.096],[-122.34,47.36],[-122.5,48.18],[-122.84,49.000000000000114],[-120,49.000000000000114],[-117.03121,49.000000000000114],[-116.04818,49.000000000000114],[-113,49.000000000000114],[-110.04999999999983,49.000000000000114],[-107.05,49.000000000000114],[-104.04826,48.99986],[-100.65,49.000000000000114],[-97.22872000000471,49.00070000000011],[-95.15906950917196,49.000000000000114],[-95.15609,49.38425],[-94.81758,49.38905]]],[[[-153.0063140533369,57.11584219016589],[-154.0050902984581,56.73467682558106],[-154.5164027577701,56.9927489284467],[-154.67099280497115,57.46119578717249],[-153.76277950744148,57.81657461204377],[-153.2287294179211,57.968968410872435],[-152.56479061583514,57.901427313866975],[-152.1411472239063,57.59105866152199],[-153.0063140533369,57.11584219016589]]],[[[-165.57916419173358,59.90998688418755],[-166.19277014876727,59.754440822988975],[-166.848337368822,59.94140615502096],[-167.45527706609008,60.21306915957938],[-166.46779212142462,60.38416982689778],[-165.67442969466367,60.293606879306246],[-165.57916419173358,59.90998688418755]]],[[[-171.7316568675394,63.78251536727592],[-171.1144335602452,63.592191067144995],[-170.4911124339407,63.69497549097352],[-169.68250545965358,63.431115627691156],[-168.6894394603007,63.2975062120006],[-168.7719408844546,63.18859813094545],[-169.52943986720504,62.9769314642779],[-170.29055620021597,63.194437567794466],[-170.67138566799088,63.37582184513897],[-171.55306311753867,63.317789211675084],[-171.7911106028912,63.405845852300494],[-171.7316568675394,63.78251536727592]]],[[[-155.06779029032424,71.1477763943237],[-154.34416520894123,70.6964085964702],[-153.90000627339262,70.8899885118357],[-152.2100060699353,70.82999217394485],[-152.27000240782615,70.60000621202985],[-150.73999243874454,70.43001658800571],[-149.72000301816752,70.53001048449045],[-147.61336157935708,70.2140349392418],[-145.6899898002253,70.12000967068676],[-144.92001095907642,69.9899917670405],[-143.5894461804252,70.15251414659832],[-142.07251034871342,69.85193817817265],[-140.98598752156073,69.71199839952638],[-140.9859883290049,69.71199839952638],[-140.9924987520294,66.00002859156868],[-140.99776974812312,60.30639679629861],[-140.0129978161531,60.27683787702759],[-139.03900042031586,60.000007229240026],[-138.34089,59.56211000000016],[-137.4525,58.905000000000115],[-136.4797200000001,59.46389],[-135.47583,59.78778],[-134.945,59.27056000000013],[-134.27111,58.86111],[-133.35554888220722,58.410285142645165],[-132.73042,57.69289000000011],[-131.70780999999988,56.55212],[-130.00778,55.91583],[-129.9799942633583,55.28499787049722],[-130.53611018946725,54.8027534043494],[-131.08581823797215,55.17890615500204],[-131.9672114671423,55.49777558045906],[-132.25001074285947,56.36999624289746],[-133.53918108435641,57.17888743756214],[-134.07806292029605,58.1230675319669],[-135.03821103227907,58.18771474876393],[-136.62806230995466,58.21220937767046],[-137.80000627968604,58.49999542910379],[-139.867787041413,59.53776154238915],[-140.82527381713305,59.727517401765084],[-142.57444353556446,60.08444651960499],[-143.9588809948799,59.9991804063234],[-145.92555681682785,60.45860972761429],[-147.11437394914668,60.88465607364463],[-148.22430620012767,60.672989406977166],[-148.01806555885076,59.97832896589363],[-148.5708225168609,59.914172675203304],[-149.72785783587585,59.70565827090556],[-150.60824337461645,59.36821116803949],[-151.71639278868332,59.15582103131999],[-151.85943315326716,59.744984035879604],[-151.4097190012472,60.72580272077939],[-150.34694149473253,61.03358755150986],[-150.62111080625698,61.284424953854455],[-151.89583919981686,60.72719798445129],[-152.5783298410956,60.06165721296429],[-154.01917212625762,59.35027944603428],[-153.28751135965317,58.8647276882198],[-154.2324924387585,58.14637360293054],[-155.30749142151024,57.72779450136633],[-156.3083347239231,57.42277435976365],[-156.55609737854633,56.979984849670636],[-158.11721655986776,56.46360809999419],[-158.43332129619716,55.99415355083855],[-159.60332739971744,55.56668610292012],[-160.2897196116342,55.643580634170576],[-161.2230476552578,55.364734605523495],[-162.23776607974108,55.02418691672011],[-163.06944658104638,54.68973704692717],[-164.7855692210272,54.40417308208217],[-164.94222632552004,54.57222483989534],[-163.84833960676568,55.03943146424612],[-162.87000139061593,55.348043117893205],[-161.80417497459604,55.89498647727043],[-160.56360470278116,56.00805451112504],[-160.0705598622845,56.41805532492876],[-158.68444291891944,57.01667511659787],[-158.46109737855394,57.21692129172888],[-157.7227703521839,57.57000051536306],[-157.55027442119356,58.32832632103023],[-157.041674974577,58.91888458926172],[-158.19473120830548,58.61580231386984],[-158.5172179840231,58.78778148053732],[-159.05860612692874,58.424186102931685],[-159.71166704001735,58.93139028587634],[-159.9812888255002,58.57254914004164],[-160.35527116599653,59.07112335879364],[-161.35500342511506,58.670837714260756],[-161.96889360252635,58.67166453717738],[-162.05498653872468,59.26692536074745],[-161.87417070213536,59.6336213242906],[-162.5180590484921,59.98972361921391],[-163.81834143782015,59.79805573184339],[-164.66221757714646,60.26748444278265],[-165.34638770247483,60.50749563256241],[-165.35083187565186,61.07389516869751],[-166.12137915755596,61.500019029376226],[-165.73445187077053,62.074996853271806],[-164.91917863671785,62.63307648380793],[-164.56250790103934,63.14637848576305],[-163.75333248599702,63.21944896102377],[-163.0672244944579,63.05945872664802],[-162.26055538638172,63.54193573674117],[-161.5344498362486,63.455816962326764],[-160.77250668032113,63.766108100023274],[-160.95833513084256,64.22279857040277],[-161.5180684072122,64.40278758407531],[-160.77777767641476,64.78860382756642],[-161.39192623598763,64.77723501246234],[-162.45305009666885,64.55944468856822],[-162.7577860178941,64.33860545516882],[-163.5463942128843,64.5591604681905],[-164.96082984114517,64.44694509546885],[-166.42528825586447,64.68667206487072],[-166.84500423893905,65.08889557561453],[-168.11056006576717,65.66999705673675],[-166.70527116602196,66.0883177761394],[-164.4747096425755,66.5766600612975],[-163.65251176659564,66.5766600612975],[-163.78860165103617,66.07720734319668],[-161.67777442121016,66.11611969671242],[-162.48971452538,66.73556509059512],[-163.71971696679108,67.1163945583701],[-164.4309913808565,67.6163382025778],[-165.39028683170676,68.04277212185025],[-166.76444068099602,68.35887685817968],[-166.20470740462662,68.88303091091618],[-164.4308105133435,68.91553538682774],[-163.16861365461452,69.3711148139129],[-162.93056616926202,69.85806183539927],[-161.90889726463553,70.33332998318764],[-160.9347965159337,70.44768992784958],[-159.03917578838715,70.89164215766894],[-158.11972286683397,70.82472117785105],[-156.58082455139805,71.35776357694175],[-155.06779029032424,71.1477763943237]]]]}},{"type":"Feature","properties":{"abbrev":"Arg.","name":"Argentina","name_long":"Argentina","iso_a2":"AR","iso_a3":"ARG","iso_n3":"032"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-65.5,-55.2],[-66.45,-55.25],[-66.95992,-54.89681],[-67.56244,-54.87001],[-68.63335,-54.8695],[-68.63401022758316,-52.63637045887445],[-68.25,-53.1],[-67.75,-53.85],[-66.45,-54.45],[-65.05,-54.7],[-65.5,-55.2]]],[[[-64.96489213729458,-22.075861504812348],[-64.37702104354227,-22.798091322523547],[-63.98683814152247,-21.993644301035957],[-62.846468471921554,-22.034985446869456],[-62.6850571356579,-22.249029229422405],[-60.84656470400994,-23.8807125790383],[-60.02896603050399,-24.032796319273245],[-58.80712846539495,-24.771459242453275],[-57.77721716981796,-25.16233977630904],[-57.63366004091114,-25.60365650808167],[-58.61817359071972,-27.12371876394712],[-57.60975969097615,-27.395898532828426],[-56.48670162619299,-27.54849903738625],[-55.6958455063982,-27.38783700939082],[-54.78879492859505,-26.621785577096087],[-54.625290696823555,-25.739255466415486],[-54.13004960795441,-25.54763925547725],[-53.62834896504873,-26.124865004177437],[-53.648735317587885,-26.92347258881611],[-54.49072526713553,-27.474756768505767],[-55.1622863429846,-27.88191537853342],[-56.2908996242391,-28.852760512000852],[-57.62513342958291,-30.216294854454244],[-57.87493730328191,-31.016556084926165],[-58.14244035504075,-32.04450367607619],[-58.13264767112142,-33.040566908502015],[-58.34961117209883,-33.263188978815435],[-58.42707414410438,-33.90945444105755],[-58.49544206402654,-34.43148976007011],[-57.225829637263644,-35.28802662530789],[-57.362358771378744,-35.977390232081504],[-56.73748735210546,-36.41312590916658],[-56.78828528504834,-36.901571547189334],[-57.74915686708343,-38.183870538079915],[-59.231857062401865,-38.720220228837206],[-61.23744523786561,-38.928424574541154],[-62.33595699731015,-38.82770720800437],[-62.12576310896293,-39.424104913084875],[-62.330530971919444,-40.17258635840032],[-62.14599443220524,-40.67689666113674],[-62.745802781816984,-41.02876148861209],[-63.77049475773253,-41.166789239263665],[-64.73208980981971,-40.802677097335135],[-65.11803524439159,-41.06431487402888],[-64.97856055363584,-42.05800099056932],[-64.30340796574248,-42.359016208669495],[-63.75594784204235,-42.04368661882451],[-63.45805904809589,-42.563138116222355],[-64.3788038804563,-42.87355844499964],[-65.1818039618397,-43.495380954767796],[-65.32882341171013,-44.501366062193696],[-65.5652689276616,-45.03678557716979],[-66.50996578638936,-45.03962778094584],[-67.29379391139244,-45.5518962542552],[-67.58054643418009,-46.30177296324254],[-66.59706641301726,-47.03392465595381],[-65.64102657740145,-47.236134535511894],[-65.98508826360074,-48.13328907653114],[-67.16617896184766,-48.697337334996945],[-67.81608761256646,-49.86966887797042],[-68.72874508327317,-50.26421843851887],[-69.1385391913478,-50.7325102679478],[-68.81556148952353,-51.771104011594105],[-68.14999487982041,-52.3499834061277],[-68.57154537624135,-52.29944385534626],[-69.49836218939609,-52.14276091263725],[-71.91480383979635,-52.009022305865926],[-72.32940385607404,-51.42595631287241],[-72.30997351753237,-50.677009779666356],[-72.97574683296463,-50.74145029073431],[-73.32805091011448,-50.37878508890987],[-73.41543575712004,-49.31843637471296],[-72.64824744331494,-48.87861825947679],[-72.33116085477195,-48.244238376661826],[-72.44735531278027,-47.73853281025353],[-71.91725847033021,-46.8848381487918],[-71.55200944689125,-45.56073292417713],[-71.65931555854533,-44.97368865334144],[-71.22277889675973,-44.784242852559416],[-71.32980078803621,-44.40752166115169],[-71.79362260607195,-44.20717213315611],[-71.46405615913051,-43.78761117937833],[-71.91542395698391,-43.40856454851742],[-72.14889807807853,-42.25488819760139],[-71.74680375841547,-42.051386407235995],[-71.91573401557756,-40.83233936947073],[-71.68076127794646,-39.80816415787807],[-71.41351660834904,-38.916022230791114],[-70.81466427273472,-38.55299529394074],[-71.11862504747543,-37.5768274879472],[-71.1218806627098,-36.65812387466234],[-70.36476925320167,-36.005088799789945],[-70.38804948594908,-35.16968759535944],[-69.81730912950147,-34.193571465798286],[-69.81477698431921,-33.27388600029985],[-70.07439938015364,-33.09120981214803],[-70.53506893581945,-31.365010267870286],[-69.91900834825192,-30.336339206668313],[-70.01355038112987,-29.36792286551855],[-69.65613033718314,-28.459141127233693],[-69.00123491074828,-27.52121388113613],[-68.2955415513704,-26.89933969493579],[-68.59479977077268,-26.506908868111267],[-68.38600114609736,-26.185016371365233],[-68.41765296087613,-24.518554782816878],[-67.32844295924414,-24.02530323659091],[-66.98523393417764,-22.98634856536283],[-67.10667355006362,-22.7359245744764],[-66.27333940292485,-21.832310479420684],[-64.96489213729458,-22.075861504812348]]]]}},{"type":"Feature","properties":{"abbrev":"Bolivia","name":"Bolivia","name_long":"Bolivia","iso_a2":"BO","iso_a3":"BOL","iso_n3":"068"},"geometry":{"type":"Polygon","coordinates":[[[-62.846468471921554,-22.03498544686945],[-63.98683814152247,-21.99364430103595],[-64.37702104354226,-22.79809132252354],[-64.9648921372946,-22.075861504812327],[-66.27333940292485,-21.83231047942072],[-67.1066735500636,-22.735924574476414],[-67.82817989772273,-22.872918796482175],[-68.21991309271128,-21.494346612231865],[-68.75716712103375,-20.372657972904463],[-68.44222510443092,-19.40506845467143],[-68.96681840684187,-18.981683444904107],[-69.10024695501949,-18.260125420812674],[-69.59042375352405,-17.580011895419332],[-68.9596353827533,-16.50069793057127],[-69.38976416693471,-15.660129082911654],[-69.16034664577495,-15.323973890853019],[-69.33953467474701,-14.953195489158832],[-68.9488866848366,-14.453639418193283],[-68.92922380234954,-13.602683607643007],[-68.88007951523997,-12.899729099176653],[-68.66507971868961,-12.561300144097173],[-69.52967810736496,-10.951734307502194],[-68.78615759954948,-11.03638030359628],[-68.27125362819326,-11.01452117273682],[-68.04819230820539,-10.712059014532485],[-67.17380123561074,-10.30681243249961],[-66.64690833196279,-9.931331475466862],[-65.33843522811642,-9.76198780684639],[-65.44483700220539,-10.511451104375432],[-65.32189876978302,-10.895872084194679],[-65.40228146021303,-11.566270440317153],[-64.3163529120316,-12.461978041232191],[-63.19649878605057,-12.627032565972433],[-62.80306026879638,-13.000653171442686],[-62.127080857986385,-13.198780612849724],[-61.71320431176078,-13.489202162330052],[-61.08412126325565,-13.479383640194598],[-60.503304002511136,-13.775954685117659],[-60.45919816755003,-14.354007256734555],[-60.26432634137736,-14.64597909918364],[-60.251148851142936,-15.077218926659322],[-60.542965664295146,-15.093910414289596],[-60.158389655179036,-16.258283786690082],[-58.24121985536669,-16.299573256091293],[-58.38805843772404,-16.877109063385276],[-58.28080400250226,-17.271710300366017],[-57.734558274961,-17.55246835700777],[-57.498371141170985,-18.174187513911292],[-57.67600887717431,-18.961839694904025],[-57.949997321185826,-19.40000416430682],[-57.85380164247451,-19.969995212486186],[-58.166392381408045,-20.176700941653678],[-58.183471442280506,-19.868399346600363],[-59.115042487206104,-19.356906019775398],[-60.04356462262649,-19.342746677327426],[-61.786326463453776,-19.633736667562964],[-62.26596126977079,-20.513734633061276],[-62.29117936872922,-21.05163461678739],[-62.685057135657885,-22.249029229422387],[-62.846468471921554,-22.03498544686945]]]}},{"type":"Feature","properties":{"abbrev":"Brazil","name":"Brazil","name_long":"Brazil","iso_a2":"BR","iso_a3":"BRA","iso_n3":"076"},"geometry":{"type":"Polygon","coordinates":[[[-57.62513342958296,-30.216294854454258],[-56.29089962423908,-28.85276051200089],[-55.16228634298457,-27.881915378533463],[-54.490725267135524,-27.47475676850579],[-53.648735317587885,-26.923472588816086],[-53.62834896504874,-26.124865004177472],[-54.13004960795439,-25.547639255477254],[-54.625290696823576,-25.73925546641551],[-54.42894609233059,-25.162184747012166],[-54.29347632507745,-24.570799655863965],[-54.29295956075451,-24.02101409271073],[-54.652834235235126,-23.83957813893396],[-55.02790178080954,-24.001273695575225],[-55.40074723979542,-23.956935316668805],[-55.517639329639636,-23.571997572526634],[-55.610682745981144,-22.655619398694842],[-55.79795813660691,-22.356929620047822],[-56.47331743022939,-22.086300144135283],[-56.8815095689029,-22.28215382252148],[-57.937155727761294,-22.090175876557172],[-57.87067399761779,-20.73268767668195],[-58.166392381408045,-20.176700941653678],[-57.85380164247451,-19.969995212486186],[-57.949997321185826,-19.40000416430682],[-57.67600887717431,-18.961839694904025],[-57.498371141170985,-18.174187513911292],[-57.734558274961,-17.55246835700777],[-58.28080400250226,-17.271710300366017],[-58.38805843772404,-16.877109063385276],[-58.24121985536669,-16.299573256091293],[-60.158389655179036,-16.258283786690082],[-60.542965664295146,-15.093910414289596],[-60.251148851142936,-15.077218926659322],[-60.26432634137736,-14.64597909918364],[-60.45919816755003,-14.354007256734555],[-60.503304002511136,-13.775954685117659],[-61.08412126325565,-13.479383640194598],[-61.71320431176078,-13.489202162330052],[-62.127080857986385,-13.198780612849724],[-62.80306026879638,-13.000653171442686],[-63.19649878605057,-12.627032565972433],[-64.3163529120316,-12.461978041232191],[-65.40228146021303,-11.566270440317153],[-65.32189876978302,-10.895872084194679],[-65.44483700220539,-10.511451104375432],[-65.33843522811642,-9.76198780684639],[-66.64690833196279,-9.931331475466862],[-67.17380123561074,-10.30681243249961],[-68.04819230820539,-10.712059014532485],[-68.27125362819326,-11.01452117273682],[-68.78615759954948,-11.03638030359628],[-69.52967810736496,-10.951734307502194],[-70.0937522040469,-11.123971856331012],[-70.54868567572841,-11.009146823778465],[-70.48189388699117,-9.490118096558845],[-71.30241227892154,-10.079436130415374],[-72.18489071316984,-10.053597914269432],[-72.56303300646564,-9.520193780152717],[-73.22671342639016,-9.462212823121234],[-73.01538265653254,-9.03283334720806],[-73.57105933296707,-8.424446709835834],[-73.98723548042966,-7.523829847853064],[-73.7234014553635,-7.340998630404414],[-73.72448666044164,-6.91859547285064],[-73.1200274319236,-6.629930922068239],[-73.21971126981461,-6.089188734566078],[-72.96450720894119,-5.741251315944893],[-72.89192765978726,-5.274561455916981],[-71.74840572781655,-4.593982842633011],[-70.92884334988358,-4.401591485210368],[-70.7947688463023,-4.251264743673303],[-69.89363521999663,-4.298186944194327],[-69.44410193548961,-1.556287123219818],[-69.42048580593223,-1.122618503426409],[-69.5770653957766,-0.549991957200163],[-70.02065589057005,-0.185156345219539],[-70.0155657619893,0.541414292804205],[-69.45239600287246,0.706158758950693],[-69.25243404811906,0.602650865070075],[-69.21863766140018,0.985676581217433],[-69.80459672715773,1.089081122233466],[-69.81697323269162,1.714805202639624],[-67.86856502955884,1.692455145673392],[-67.53781002467468,2.03716278727633],[-67.25999752467358,1.719998684084956],[-67.0650481838525,1.130112209473225],[-66.87632585312258,1.253360500489336],[-66.32576514348496,0.724452215982012],[-65.54826738143757,0.78925446207603],[-65.35471330428837,1.0952822941085],[-64.61101192895985,1.328730576987042],[-64.19930579289051,1.49285492594602],[-64.08308549666609,1.91636912679408],[-63.36878801131166,2.200899562993129],[-63.42286739770512,2.411067613124174],[-64.26999915226578,2.497005520025567],[-64.40882788761792,3.126786200366624],[-64.36849443221409,3.797210394705246],[-64.81606401229402,4.056445217297423],[-64.62865943058755,4.14848094320925],[-63.88834286157416,4.020530096854571],[-63.0931975978991,3.770571193858785],[-62.804533047116706,4.006965033377952],[-62.08542965355914,4.162123521334308],[-60.96689327660153,4.536467596856639],[-60.60117916527194,4.91809804933213],[-60.73357418480372,5.200277207861901],[-60.21368343773133,5.244486395687602],[-59.98095862490488,5.014061184098139],[-60.11100236676737,4.574966538914083],[-59.767405768458715,4.423502915866607],[-59.53803992373123,3.958802598481938],[-59.81541317405786,3.606498521332085],[-59.97452490908456,2.755232652188056],[-59.71854570172674,2.24963043864436],[-59.64604366722126,1.786893825686789],[-59.03086157900265,1.317697658692722],[-58.5400129868783,1.268088283692521],[-58.42947709820596,1.463941962078721],[-58.11344987652502,1.507195135907025],[-57.66097103537737,1.682584947105639],[-57.335822923396904,1.94853770589576],[-56.78270423036083,1.863710842288654],[-56.539385748914555,1.899522609866921],[-55.99569800477175,1.817667141116601],[-55.905600145070885,2.02199575439866],[-56.0733418442903,2.220794989425499],[-55.973322109589375,2.510363877773017],[-55.569755011606,2.421506252447131],[-55.09758744975514,2.523748073736613],[-54.52475419779971,2.311848863123785],[-54.08806250671724,2.105556545414629],[-53.77852067728892,2.376702785650082],[-53.55483924011354,2.334896551925951],[-53.4184651352953,2.053389187015981],[-52.939657151894956,2.124857692875636],[-52.55642473001842,2.504705308437053],[-52.249337531123956,3.241094468596245],[-51.65779741067888,4.156232408053029],[-51.31714636901086,4.203490505383954],[-51.069771287629656,3.650397650564031],[-50.508875291533656,1.901563828942457],[-49.97407589374506,1.736483465986069],[-49.947100796088705,1.046189683431223],[-50.699251268096916,0.222984117021682],[-50.38821082213214,-0.078444512536819],[-48.62056677915631,-0.235489190271821],[-48.58449662941659,-1.237805271005001],[-47.824956427590635,-0.5816179337628],[-46.566583624851226,-0.941027520352776],[-44.905703090990414,-1.551739597178134],[-44.417619187993665,-2.137750339367976],[-44.58158850765578,-2.691308282078524],[-43.418791266440195,-2.383110039889793],[-41.47265682632825,-2.912018324397116],[-39.97866533055404,-2.873054294449041],[-38.50038347019657,-3.700652357603395],[-37.2232521225352,-4.820945733258917],[-36.45293738457639,-5.109403578312153],[-35.59779578301047,-5.149504489770648],[-35.23538896334756,-5.464937432480247],[-34.89602983248683,-6.738193047719711],[-34.729993455533034,-7.343220716992966],[-35.12821204277422,-8.996401462442286],[-35.636966518687714,-9.649281508017815],[-37.046518724097,-11.040721123908801],[-37.68361161960736,-12.171194756725823],[-38.42387651218844,-13.038118584854288],[-38.673887091616514,-13.057652276260619],[-38.953275722802545,-13.793369642800023],[-38.88229814304965,-15.667053724838768],[-39.16109249526431,-17.208406670808472],[-39.2673392400564,-17.867746270420483],[-39.58352149103423,-18.262295830968938],[-39.76082333022764,-19.59911345792741],[-40.77474077001034,-20.904511814052423],[-40.94475623225061,-21.937316989837807],[-41.754164191238225,-22.370675551037458],[-41.98828426773655,-22.970070489190892],[-43.07470374202475,-22.96769337330547],[-44.64781185563781,-23.351959323827842],[-45.35213578955991,-23.796841729428582],[-46.47209326840554,-24.08896860117454],[-47.64897233742066,-24.885199069927722],[-48.4954581365777,-25.877024834905654],[-48.64100480812774,-26.623697605090932],[-48.47473588722865,-27.17591196056189],[-48.661520351747626,-28.186134535435716],[-48.88845740415739,-28.674115085567884],[-49.587329474472675,-29.224469089476337],[-50.696874152211485,-30.984465020472957],[-51.576226162306156,-31.77769825615321],[-52.256081305538046,-32.24536996839466],[-52.712099982297694,-33.19657805759118],[-53.373661668498244,-33.768377780900764],[-53.6505439927181,-33.20200408298183],[-53.209588995971544,-32.727666110974724],[-53.787951626182185,-32.047242526987624],[-54.57245154480512,-31.494511407193748],[-55.601510179249345,-30.853878676071393],[-55.97324459494093,-30.883075860316303],[-56.97602576356473,-30.109686374636127],[-57.62513342958296,-30.216294854454258]]]}},{"type":"Feature","properties":{"abbrev":"Chile","name":"Chile","name_long":"Chile","iso_a2":"CL","iso_a3":"CHL","iso_n3":"152"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-68.63401022758316,-52.63637045887437],[-68.6333499999999,-54.8695],[-67.56244,-54.87001],[-66.95992,-54.89681],[-67.29102999999989,-55.30124],[-68.14862999999986,-55.61183],[-68.63999081081181,-55.58001799908689],[-69.2321,-55.49906],[-69.95809,-55.19843],[-71.00568,-55.05383],[-72.2639,-54.49514],[-73.2852,-53.95751999999989],[-74.66253,-52.83749],[-73.8381,-53.04743],[-72.43418,-53.7154],[-71.10773,-54.07433],[-70.59177999999979,-53.61583],[-70.26748,-52.93123],[-69.34564999999989,-52.5183],[-68.63401022758316,-52.63637045887437]]],[[[-68.21991309271124,-21.494346612231837],[-67.82817989772266,-22.87291879648218],[-67.10667355006362,-22.7359245744764],[-66.98523393417764,-22.98634856536283],[-67.32844295924414,-24.02530323659091],[-68.41765296087613,-24.518554782816878],[-68.38600114609736,-26.185016371365233],[-68.59479977077268,-26.506908868111267],[-68.2955415513704,-26.89933969493579],[-69.00123491074828,-27.52121388113613],[-69.65613033718314,-28.459141127233693],[-70.01355038112987,-29.36792286551855],[-69.91900834825192,-30.336339206668313],[-70.53506893581945,-31.365010267870286],[-70.07439938015364,-33.09120981214803],[-69.81477698431921,-33.27388600029985],[-69.81730912950147,-34.193571465798286],[-70.38804948594908,-35.16968759535944],[-70.36476925320167,-36.005088799789945],[-71.1218806627098,-36.65812387466234],[-71.11862504747543,-37.5768274879472],[-70.81466427273472,-38.55299529394074],[-71.41351660834904,-38.916022230791114],[-71.68076127794646,-39.80816415787807],[-71.91573401557756,-40.83233936947073],[-71.74680375841547,-42.051386407235995],[-72.14889807807853,-42.25488819760139],[-71.91542395698391,-43.40856454851742],[-71.46405615913051,-43.78761117937833],[-71.79362260607195,-44.20717213315611],[-71.32980078803621,-44.40752166115169],[-71.22277889675973,-44.784242852559416],[-71.65931555854533,-44.97368865334144],[-71.55200944689125,-45.56073292417713],[-71.91725847033021,-46.8848381487918],[-72.44735531278027,-47.73853281025353],[-72.33116085477195,-48.244238376661826],[-72.64824744331494,-48.87861825947679],[-73.41543575712004,-49.31843637471296],[-73.32805091011448,-50.37878508890987],[-72.97574683296463,-50.74145029073431],[-72.30997351753237,-50.677009779666356],[-72.32940385607404,-51.42595631287241],[-71.91480383979635,-52.009022305865926],[-69.49836218939609,-52.14276091263725],[-68.57154537624135,-52.29944385534626],[-69.46128434922664,-52.29195077266393],[-69.94277950710614,-52.53793059037325],[-70.84510169135453,-52.899200528525725],[-71.00633216010525,-53.83325204220135],[-71.42979468452094,-53.85645476030039],[-72.55794287788486,-53.531410001184454],[-73.70275672066288,-52.83506926860725],[-73.70275672066288,-52.8350700760515],[-74.94676347522515,-52.26275358841903],[-75.2600260077785,-51.629354750373224],[-74.9766324530898,-51.04339568461569],[-75.4797541978835,-50.37837167745156],[-75.60801510283196,-48.6737728818718],[-75.18276974150213,-47.71191944762316],[-74.1265809801047,-46.9392534319951],[-75.64439531116545,-46.64764332457203],[-74.69215369332306,-45.76397633238098],[-74.35170935738427,-44.103044122087894],[-73.2403560045152,-44.454960625995625],[-72.71780392117978,-42.383355808278985],[-73.38889990913825,-42.11753224056957],[-73.70133561877486,-43.365776462579745],[-74.33194312203258,-43.22495818458441],[-74.01795711942717,-41.794812920906836],[-73.67709937202997,-39.942212823243125],[-73.21759253609068,-39.258688653318515],[-73.50555945503706,-38.28288258235107],[-73.58806087919109,-37.156284681956016],[-73.1667170884993,-37.12378020604435],[-72.55313696968173,-35.508840020491036],[-71.86173214383257,-33.90909270603153],[-71.43845048692992,-32.41889942803083],[-71.66872066922244,-30.92064462659252],[-71.37008256700773,-30.095682061485004],[-71.48989437527646,-28.861442152625912],[-70.90512386746158,-27.6403797340012],[-70.72495398627598,-25.70592416758721],[-70.40396582709505,-23.628996677344542],[-70.09124589708067,-21.393319187101223],[-70.16441972520599,-19.756468194256186],[-70.37257239447774,-18.347975355708883],[-69.85844356960581,-18.092693780187034],[-69.590423753524,-17.58001189541929],[-69.10024695501943,-18.260125420812656],[-68.96681840684184,-18.981683444904093],[-68.44222510443095,-19.405068454671422],[-68.75716712103372,-20.372657972904477],[-68.21991309271124,-21.494346612231837]]]]}},{"type":"Feature","properties":{"abbrev":"Col.","name":"Colombia","name_long":"Colombia","iso_a2":"CO","iso_a3":"COL","iso_n3":"170"},"geometry":{"type":"Polygon","coordinates":[[[-75.37322323271385,-0.15203175212045],[-75.80146582711659,0.084801337073202],[-76.29231441924097,0.416047268064119],[-76.57637976754938,0.256935533037435],[-77.4249843004304,0.395686753741117],[-77.66861284047044,0.825893052570961],[-77.85506140817952,0.809925034992773],[-78.85525875518871,1.380923773601822],[-78.99093522817103,1.691369940595251],[-78.61783138702371,1.766404120283056],[-78.66211808949785,2.267355454920477],[-78.42761043975732,2.629555568854215],[-77.93154252797149,2.696605739752926],[-77.51043128122501,3.325016994638247],[-77.12768978545526,3.849636135265357],[-77.49627193877703,4.087606105969428],[-77.3076012844794,4.667984117039452],[-77.53322058786573,5.582811997902496],[-77.31881507028675,5.84535411216136],[-77.47666073272228,6.691116441266303],[-77.88157141794525,7.223771267114785],[-77.75341386586139,7.709839789252142],[-77.43110795765699,7.638061224798735],[-77.24256649444008,7.935278225125444],[-77.47472286651133,8.524286200388218],[-77.35336076527385,8.67050466555807],[-76.83667395700357,8.638749497914716],[-76.08638383655786,9.336820583529487],[-75.67460018584005,9.443248195834599],[-75.66470414905618,9.774003200718738],[-75.48042599150335,10.618990383339309],[-74.90689510771197,11.083044745320322],[-74.27675269234489,11.102035834187587],[-74.1972226630477,11.310472723836865],[-73.41476396350029,11.22701528568548],[-72.62783525255963,11.731971543825523],[-72.23819495307892,11.955549628136326],[-71.75409013536864,12.437303168177309],[-71.3998223537917,12.376040757695293],[-71.13746110704588,12.112981879113505],[-71.3315836249503,11.776284084515808],[-71.97392167833829,11.60867157637712],[-72.22757544624294,11.10870209395324],[-72.61465776232521,10.821975409381778],[-72.9052860175347,10.450344346554772],[-73.02760413276957,9.736770331252444],[-73.30495154488005,9.151999823437606],[-72.7887298245004,9.085027167187334],[-72.6604947577681,8.625287787302682],[-72.43986223009796,8.405275376820029],[-72.36090064155596,8.002638454617895],[-72.47967892117885,7.632506008327354],[-72.44448727078807,7.423784898300481],[-72.19835242378188,7.340430813013682],[-71.96017574734864,6.991614895043538],[-70.67423356798152,7.087784735538719],[-70.09331295437242,6.96037649172311],[-69.38947994655712,6.099860541198836],[-68.98531856960236,6.206804917826858],[-68.26505245631823,6.153268133972475],[-67.69508724635502,6.267318020040647],[-67.34143958196557,6.095468044454023],[-67.52153194850275,5.556870428891969],[-67.74469662135522,5.221128648291668],[-67.82301225449355,4.503937282728899],[-67.62183590358127,3.839481716319994],[-67.33756384954368,3.542342230641722],[-67.30317318385345,3.31845408773718],[-67.8099381171237,2.820655015469569],[-67.44709204778631,2.600280869960869],[-67.18129431829307,2.250638129074062],[-66.87632585312258,1.253360500489336],[-67.0650481838525,1.130112209473225],[-67.25999752467358,1.719998684084956],[-67.53781002467468,2.03716278727633],[-67.86856502955884,1.692455145673392],[-69.81697323269162,1.714805202639624],[-69.80459672715773,1.089081122233466],[-69.21863766140018,0.985676581217433],[-69.25243404811906,0.602650865070075],[-69.45239600287246,0.706158758950693],[-70.0155657619893,0.541414292804205],[-70.02065589057005,-0.185156345219539],[-69.5770653957766,-0.549991957200163],[-69.42048580593223,-1.122618503426409],[-69.44410193548961,-1.556287123219818],[-69.89363521999663,-4.298186944194327],[-70.39404395209499,-3.766591485207825],[-70.69268205430971,-3.742872002785859],[-70.04770850287485,-2.725156345229699],[-70.81347571479196,-2.256864515800743],[-71.41364579942979,-2.342802422702128],[-71.7747607082854,-2.169789727388938],[-72.32578650581365,-2.434218031426454],[-73.07039221870724,-2.308954359550953],[-73.6595035468346,-1.260491224781134],[-74.12239518908906,-1.002832533373848],[-74.44160051135597,-0.530820000819887],[-75.10662451852008,-0.05720549886486],[-75.37322323271385,-0.15203175212045]]]}},{"type":"Feature","properties":{"abbrev":"Ecu.","name":"Ecuador","name_long":"Ecuador","iso_a2":"EC","iso_a3":"ECU","iso_n3":"218"},"geometry":{"type":"Polygon","coordinates":[[[-80.30256059438722,-3.404856459164713],[-79.77029334178093,-2.65751189535964],[-79.98655921092241,-2.220794366061014],[-80.36878394236925,-2.685158786635788],[-80.96776546906436,-2.246942640800704],[-80.76480628123804,-1.965047702648533],[-80.9336590237517,-1.057454522306358],[-80.58337032746127,-0.906662692878683],[-80.39932471385376,-0.283703301600141],[-80.02089820018037,0.360340074053468],[-80.09060970734211,0.768428859862397],[-79.54276201039978,0.982937730305963],[-78.85525875518871,1.380923773601822],[-77.85506140817952,0.809925034992773],[-77.66861284047044,0.825893052570961],[-77.4249843004304,0.395686753741117],[-76.57637976754938,0.256935533037435],[-76.29231441924097,0.416047268064119],[-75.80146582711659,0.084801337073202],[-75.37322323271385,-0.15203175212045],[-75.23372270374193,-0.911416924649529],[-75.54499569365204,-1.56160979574588],[-76.63539425322672,-2.608677666843818],[-77.83790483265861,-3.003020521663103],[-78.45068396677564,-3.873096612161376],[-78.63989722361234,-4.547784112164074],[-79.20528906931771,-4.959128513207389],[-79.62497921417618,-4.454198093283494],[-80.02890804718561,-4.346090996928893],[-80.44224199087216,-4.425724379090674],[-80.46929460317695,-4.059286797708999],[-80.18401485870967,-3.821161797708044],[-80.30256059438722,-3.404856459164713]]]}},{"type":"Feature","properties":{"abbrev":"Flk. Is.","name":"Falkland Is.","name_long":"Falkland Islands","iso_a2":"FK","iso_a3":"FLK","iso_n3":"238"},"geometry":{"type":"Polygon","coordinates":[[[-61.2,-51.85],[-60,-51.25],[-59.15,-51.5],[-58.55,-51.1],[-57.75,-51.55],[-58.05,-51.9],[-59.4,-52.2],[-59.85,-51.85],[-60.7,-52.3],[-61.2,-51.85]]]}},{"type":"Feature","properties":{"abbrev":"Guy.","name":"Guyana","name_long":"Guyana","iso_a2":"GY","iso_a3":"GUY","iso_n3":"328"},"geometry":{"type":"Polygon","coordinates":[[[-59.758284878159195,8.367034816924047],[-59.101684129458654,7.999201971870492],[-58.482962205628056,7.347691351750697],[-58.45487606467743,6.832787380394463],[-58.07810319683737,6.809093736188643],[-57.542218593970645,6.321268215353356],[-57.14743648947688,5.973149929219161],[-57.307245856339506,5.073566595882227],[-57.91428890647214,4.812626451024414],[-57.86020952007869,4.57680105226045],[-58.04469438336068,4.060863552258382],[-57.60156897645786,3.334654649260685],[-57.2814334784097,3.333491929534119],[-57.150097825739905,2.768926906745406],[-56.539385748914555,1.899522609866921],[-56.78270423036083,1.863710842288654],[-57.335822923396904,1.94853770589576],[-57.66097103537737,1.682584947105639],[-58.11344987652502,1.507195135907025],[-58.42947709820596,1.463941962078721],[-58.5400129868783,1.268088283692521],[-59.03086157900265,1.317697658692722],[-59.64604366722126,1.786893825686789],[-59.71854570172674,2.24963043864436],[-59.97452490908456,2.755232652188056],[-59.81541317405786,3.606498521332085],[-59.53803992373123,3.958802598481938],[-59.767405768458715,4.423502915866607],[-60.11100236676737,4.574966538914083],[-59.98095862490488,5.014061184098139],[-60.21368343773133,5.244486395687602],[-60.73357418480372,5.200277207861901],[-61.410302903881956,5.959068101419618],[-61.13941504580795,6.234296779806144],[-61.15933631045648,6.696077378766319],[-60.54399919294098,6.856584377464883],[-60.29566809756239,7.043911444522919],[-60.637972785063766,7.414999904810855],[-60.55058793805819,7.779602972846178],[-59.758284878159195,8.367034816924047]]]}},{"type":"Feature","properties":{"abbrev":"Para.","name":"Paraguay","name_long":"Paraguay","iso_a2":"PY","iso_a3":"PRY","iso_n3":"600"},"geometry":{"type":"Polygon","coordinates":[[[-62.685057135657885,-22.249029229422387],[-62.29117936872922,-21.05163461678739],[-62.26596126977079,-20.513734633061276],[-61.786326463453776,-19.633736667562964],[-60.04356462262649,-19.342746677327426],[-59.115042487206104,-19.356906019775398],[-58.183471442280506,-19.868399346600363],[-58.166392381408045,-20.176700941653678],[-57.87067399761779,-20.73268767668195],[-57.937155727761294,-22.090175876557172],[-56.8815095689029,-22.28215382252148],[-56.47331743022939,-22.086300144135283],[-55.79795813660691,-22.356929620047822],[-55.610682745981144,-22.655619398694842],[-55.517639329639636,-23.571997572526634],[-55.40074723979542,-23.956935316668805],[-55.02790178080954,-24.001273695575225],[-54.652834235235126,-23.83957813893396],[-54.29295956075451,-24.02101409271073],[-54.29347632507745,-24.570799655863965],[-54.42894609233059,-25.162184747012166],[-54.625290696823576,-25.73925546641551],[-54.78879492859505,-26.621785577096134],[-55.69584550639816,-27.38783700939086],[-56.48670162619299,-27.548499037386293],[-57.60975969097615,-27.395898532828387],[-58.61817359071974,-27.123718763947096],[-57.633660040911124,-25.60365650808164],[-57.77721716981794,-25.16233977630904],[-58.80712846539498,-24.77145924245331],[-60.02896603050402,-24.032796319273274],[-60.84656470400991,-23.880712579038292],[-62.685057135657885,-22.249029229422387]]]}},{"type":"Feature","properties":{"abbrev":"Sur.","name":"Suriname","name_long":"Suriname","iso_a2":"SR","iso_a3":"SUR","iso_n3":"740"},"geometry":{"type":"Polygon","coordinates":[[[-57.14743648947688,5.973149929219161],[-55.9493184067898,5.772877915872002],[-55.841779751190415,5.953125311706059],[-55.033250291551774,6.025291449401664],[-53.958044603070896,5.756548163267765],[-54.47863298197923,4.896755682795586],[-54.399542202356514,4.212611395683466],[-54.00693050801901,3.620037746592558],[-54.181726040246275,3.189779771330421],[-54.2697051662232,2.732391669115046],[-54.52475419779971,2.311848863123785],[-55.09758744975514,2.523748073736613],[-55.569755011606,2.421506252447131],[-55.973322109589375,2.510363877773017],[-56.0733418442903,2.220794989425499],[-55.905600145070885,2.02199575439866],[-55.99569800477175,1.817667141116601],[-56.539385748914555,1.899522609866921],[-57.150097825739905,2.768926906745406],[-57.2814334784097,3.333491929534119],[-57.60156897645786,3.334654649260685],[-58.04469438336068,4.060863552258382],[-57.86020952007869,4.57680105226045],[-57.91428890647214,4.812626451024414],[-57.307245856339506,5.073566595882227],[-57.14743648947688,5.973149929219161]]]}},{"type":"Feature","properties":{"abbrev":"Ury.","name":"Uruguay","name_long":"Uruguay","iso_a2":"UY","iso_a3":"URY","iso_n3":"858"},"geometry":{"type":"Polygon","coordinates":[[[-57.62513342958296,-30.216294854454258],[-56.97602576356473,-30.109686374636127],[-55.97324459494093,-30.883075860316303],[-55.601510179249345,-30.853878676071393],[-54.57245154480512,-31.494511407193748],[-53.787951626182185,-32.047242526987624],[-53.209588995971544,-32.727666110974724],[-53.6505439927181,-33.20200408298183],[-53.373661668498244,-33.768377780900764],[-53.806425950726535,-34.396814874002224],[-54.93586605489773,-34.952646579733624],[-55.67408972840329,-34.75265878676407],[-56.21529700379607,-34.85983570733742],[-57.139685024633096,-34.430456231424245],[-57.8178606838155,-34.4625472958775],[-58.42707414410439,-33.90945444105757],[-58.34961117209887,-33.26318897881541],[-58.13264767112144,-33.040566908502015],[-58.14244035504076,-32.044503676076154],[-57.87493730328188,-31.016556084926208],[-57.62513342958296,-30.216294854454258]]]}},{"type":"Feature","properties":{"abbrev":"Peru","name":"Peru","name_long":"Peru","iso_a2":"PE","iso_a3":"PER","iso_n3":"604"},"geometry":{"type":"Polygon","coordinates":[[[-69.59042375352405,-17.580011895419332],[-69.85844356960587,-18.092693780187012],[-70.37257239447771,-18.34797535570887],[-71.37525021023691,-17.773798516513857],[-71.46204077827112,-17.363487644116383],[-73.44452958850042,-16.359362888252996],[-75.23788265654144,-15.265682875227782],[-76.00920508492995,-14.649286390850321],[-76.42346920439775,-13.82318694423243],[-76.25924150257416,-13.535039157772943],[-77.10619238962184,-12.22271615972082],[-78.09215287953464,-10.377712497604065],[-79.03695309112695,-8.386567884965892],[-79.44592037628485,-7.93083342858386],[-79.76057817251004,-7.194340915560083],[-80.53748165558608,-6.541667575713717],[-81.24999630402642,-6.136834405139183],[-80.92634680858244,-5.690556735866565],[-81.41094255239946,-4.736764825055459],[-81.09966956248937,-4.036394138203697],[-80.30256059438722,-3.404856459164713],[-80.18401485870967,-3.821161797708044],[-80.46929460317695,-4.059286797708999],[-80.44224199087216,-4.425724379090674],[-80.02890804718561,-4.346090996928893],[-79.62497921417618,-4.454198093283494],[-79.20528906931771,-4.959128513207389],[-78.63989722361234,-4.547784112164074],[-78.45068396677564,-3.873096612161376],[-77.83790483265861,-3.003020521663103],[-76.63539425322672,-2.608677666843818],[-75.54499569365204,-1.56160979574588],[-75.23372270374193,-0.911416924649529],[-75.37322323271385,-0.15203175212045],[-75.10662451852008,-0.05720549886486],[-74.44160051135597,-0.530820000819887],[-74.12239518908906,-1.002832533373848],[-73.6595035468346,-1.260491224781134],[-73.07039221870724,-2.308954359550953],[-72.32578650581365,-2.434218031426454],[-71.7747607082854,-2.169789727388938],[-71.41364579942979,-2.342802422702128],[-70.81347571479196,-2.256864515800743],[-70.04770850287485,-2.725156345229699],[-70.69268205430971,-3.742872002785859],[-70.39404395209499,-3.766591485207825],[-69.89363521999663,-4.298186944194327],[-70.7947688463023,-4.251264743673303],[-70.92884334988358,-4.401591485210368],[-71.74840572781655,-4.593982842633011],[-72.89192765978726,-5.274561455916981],[-72.96450720894119,-5.741251315944893],[-73.21971126981461,-6.089188734566078],[-73.1200274319236,-6.629930922068239],[-73.72448666044164,-6.91859547285064],[-73.7234014553635,-7.340998630404414],[-73.98723548042966,-7.523829847853064],[-73.57105933296707,-8.424446709835834],[-73.01538265653254,-9.03283334720806],[-73.22671342639016,-9.462212823121234],[-72.56303300646564,-9.520193780152717],[-72.18489071316984,-10.053597914269432],[-71.30241227892154,-10.079436130415374],[-70.48189388699117,-9.490118096558845],[-70.54868567572841,-11.009146823778465],[-70.0937522040469,-11.123971856331012],[-69.52967810736496,-10.951734307502194],[-68.66507971868961,-12.561300144097173],[-68.88007951523997,-12.899729099176653],[-68.92922380234954,-13.602683607643007],[-68.9488866848366,-14.453639418193283],[-69.33953467474701,-14.953195489158832],[-69.16034664577495,-15.323973890853019],[-69.38976416693471,-15.660129082911654],[-68.9596353827533,-16.50069793057127],[-69.59042375352405,-17.580011895419332]]]}},{"type":"Feature","properties":{"abbrev":"Ven.","name":"Venezuela","name_long":"Venezuela","iso_a2":"VE","iso_a3":"VEN","iso_n3":"862"},"geometry":{"type":"Polygon","coordinates":[[[-71.3315836249503,11.776284084515808],[-71.36000566271082,11.53999359786121],[-71.94704993354651,11.423282375530022],[-71.62086829292019,10.969459947142795],[-71.63306393094108,10.446494452349027],[-72.07417395698451,9.865651353388373],[-71.69564409044654,9.072263088411248],[-71.26455929226773,9.137194525585983],[-71.03999935574339,9.859992784052407],[-71.35008378771079,10.211935126176215],[-71.40062333849224,10.968969021036015],[-70.1552988349065,11.37548167566004],[-70.29384334988103,11.846822414594214],[-69.94324459499683,12.162307033736099],[-69.58430009629747,11.459610907431212],[-68.88299923366445,11.443384507691563],[-68.23327145045873,10.885744126829946],[-68.19412655299763,10.554653225135922],[-67.29624854192633,10.54586823164631],[-66.227864142508,10.648626817258688],[-65.65523759628175,10.200798855017323],[-64.89045223657817,10.0772146671913],[-64.32947872583374,10.38959870039568],[-64.31800655786495,10.64141795495398],[-63.07932247582874,10.7017243514386],[-61.880946010980196,10.715625311725104],[-62.73011898461641,10.420268662960906],[-62.388511928950976,9.94820445397464],[-61.58876746280193,9.873066921422264],[-60.83059668643172,9.38133982994894],[-60.67125240745973,8.580174261911878],[-60.15009558779618,8.602756862823426],[-59.758284878159195,8.367034816924047],[-60.55058793805819,7.779602972846178],[-60.637972785063766,7.414999904810855],[-60.29566809756239,7.043911444522919],[-60.54399919294098,6.856584377464883],[-61.15933631045648,6.696077378766319],[-61.13941504580795,6.234296779806144],[-61.410302903881956,5.959068101419618],[-60.73357418480372,5.200277207861901],[-60.60117916527194,4.91809804933213],[-60.96689327660153,4.536467596856639],[-62.08542965355914,4.162123521334308],[-62.804533047116706,4.006965033377952],[-63.0931975978991,3.770571193858785],[-63.88834286157416,4.020530096854571],[-64.62865943058755,4.14848094320925],[-64.81606401229402,4.056445217297423],[-64.36849443221409,3.797210394705246],[-64.40882788761792,3.126786200366624],[-64.26999915226578,2.497005520025567],[-63.42286739770512,2.411067613124174],[-63.36878801131166,2.200899562993129],[-64.08308549666609,1.91636912679408],[-64.19930579289051,1.49285492594602],[-64.61101192895985,1.328730576987042],[-65.35471330428837,1.0952822941085],[-65.54826738143757,0.78925446207603],[-66.32576514348496,0.724452215982012],[-66.87632585312258,1.253360500489336],[-67.18129431829307,2.250638129074062],[-67.44709204778631,2.600280869960869],[-67.8099381171237,2.820655015469569],[-67.30317318385345,3.31845408773718],[-67.33756384954368,3.542342230641722],[-67.62183590358127,3.839481716319994],[-67.82301225449355,4.503937282728899],[-67.74469662135522,5.221128648291668],[-67.52153194850275,5.556870428891969],[-67.34143958196557,6.095468044454023],[-67.69508724635502,6.267318020040647],[-68.26505245631823,6.153268133972475],[-68.98531856960236,6.206804917826858],[-69.38947994655712,6.099860541198836],[-70.09331295437242,6.96037649172311],[-70.67423356798152,7.087784735538719],[-71.96017574734864,6.991614895043538],[-72.19835242378188,7.340430813013682],[-72.44448727078807,7.423784898300481],[-72.47967892117885,7.632506008327354],[-72.36090064155596,8.002638454617895],[-72.43986223009796,8.405275376820029],[-72.6604947577681,8.625287787302682],[-72.7887298245004,9.085027167187334],[-73.30495154488005,9.151999823437606],[-73.02760413276957,9.736770331252444],[-72.9052860175347,10.450344346554772],[-72.61465776232521,10.821975409381778],[-72.22757544624294,11.10870209395324],[-71.97392167833829,11.60867157637712],[-71.3315836249503,11.776284084515808]]]}},{"type":"Feature","properties":{"abbrev":"Afg.","name":"Afghanistan","name_long":"Afghanistan","iso_a2":"AF","iso_a3":"AFG","iso_n3":"004"},"geometry":{"type":"Polygon","coordinates":[[[61.21081709172574,35.650072333309225],[62.230651483005886,35.270663967422294],[62.9846623065766,35.40404083916762],[63.19353844590035,35.857165635718914],[63.9828959491587,36.0079574651466],[64.5464791197339,36.31207326918427],[64.7461051776774,37.111817735333304],[65.58894778835784,37.30521678318564],[65.74563073106681,37.66116404881207],[66.21738488145932,37.39379018813392],[66.51860680528867,37.36278432875879],[67.07578209825962,37.35614390720929],[67.82999962755952,37.14499400486468],[68.13556237170138,37.0231151393043],[68.85944583524594,37.344335842430596],[69.19627282092438,37.15114350030743],[69.51878543485796,37.60899669041341],[70.11657840361033,37.58822276463209],[70.27057417184014,37.735164699854025],[70.3763041523093,38.13839590102752],[70.80682050973289,38.486281643216415],[71.34813113799026,38.258905341132156],[71.23940392444817,37.95326508234188],[71.54191775908478,37.905774441065645],[71.44869347523024,37.06564484308051],[71.8446382994506,36.73817129164692],[72.1930408059624,36.948287665345674],[72.63688968291729,37.047558091778356],[73.26005577992501,37.495256862939],[73.9486959166465,37.4215662704908],[74.98000247589542,37.419990139305895],[75.15802778514092,37.13303091078912],[74.57589277537298,37.02084137628346],[74.06755171091783,36.83617564548845],[72.92002485544447,36.72000702569632],[71.84629194528392,36.50994232842986],[71.26234826038575,36.074387518857804],[71.49876793812109,35.650563259416],[71.6130762063507,35.153203436822864],[71.11501875192162,34.733125718722235],[71.15677330921346,34.34891144463215],[70.8818030129884,33.98885590263851],[69.9305432473596,34.02012014417511],[70.3235941913716,33.35853261975839],[69.68714725126485,33.105498969041236],[69.26252200712256,32.5019440780883],[69.31776411324255,31.90141225842444],[68.92667687365767,31.620189113892064],[68.55693200060932,31.713310044882018],[67.79268924344478,31.58293040620963],[67.68339358914747,31.30315420178142],[66.93889122911847,31.304911200479353],[66.38145755398602,30.73889923758645],[66.34647260932442,29.887943427036177],[65.0468620136161,29.472180691031905],[64.35041873561852,29.560030625928093],[64.14800215033125,29.340819200145972],[63.55026085801117,29.468330796826162],[62.54985680527278,29.31857249604431],[60.874248488208785,29.829238999952604],[61.781221551363444,30.735850328081234],[61.699314406180825,31.37950613049267],[60.94194461451113,31.548074652628753],[60.863654819588966,32.18291962333443],[60.536077915290775,32.98126882581157],[60.963700392506006,33.52883230237625],[60.52842980331158,33.676446031218006],[60.80319339380745,34.40410187431986],[61.21081709172574,35.650072333309225]]]}},{"type":"Feature","properties":{"abbrev":"U.A.E.","name":"United Arab Emirates","name_long":"United Arab Emirates","iso_a2":"AE","iso_a3":"ARE","iso_n3":"784"},"geometry":{"type":"Polygon","coordinates":[[[51.57951867046327,24.245497137951105],[51.757440626844186,24.29407298430547],[51.794389275932865,24.019826158132506],[52.57708051942561,24.177439276622707],[53.404006788960146,24.15131684009917],[54.00800092958758,24.121757920828212],[54.69302371604863,24.79789236093509],[55.43902469261414,25.43914520924494],[56.07082075381456,26.055464178973978],[56.261041701080956,25.71460643157677],[56.396847365144005,24.924732163995486],[55.88623253766801,24.920830593357444],[55.804118686756226,24.269604193615265],[55.981213820220454,24.130542914317825],[55.52863162620823,23.933604030853502],[55.525841098864475,23.524869289640932],[55.234489373602884,23.11099274341532],[55.20834109886319,22.708329982997046],[55.0068030129249,22.496947536707136],[52.000733270074335,23.00115448657894],[51.61770755392698,24.014219265228828],[51.57951867046327,24.245497137951105]]]}},{"type":"Feature","properties":{"abbrev":"Arm.","name":"Armenia","name_long":"Armenia","iso_a2":"AM","iso_a3":"ARM","iso_n3":"051"},"geometry":{"type":"Polygon","coordinates":[[[43.582745802592726,41.09214325618257],[44.97248009621808,41.248128567055595],[45.17949588397934,40.98535390885141],[45.56035118997045,40.812289537105926],[45.35917483905817,40.56150381119346],[45.89190717955509,40.21847565364],[45.61001224140293,39.89999380142518],[46.034534132680676,39.628020738273065],[46.48349897643246,39.464154771475535],[46.50571984231797,38.770605373686294],[46.14362308124881,38.74120148371222],[45.73537926614301,39.31971914321974],[45.73997846861698,39.47399913182713],[45.298144972521456,39.471751207022436],[45.00198733905674,39.740003567049555],[44.79398969908195,39.71300263117705],[44.4000085792887,40.00500031184228],[43.65643639504094,40.253563951166186],[43.75265791196841,40.74020091405876],[43.582745802592726,41.09214325618257]]]}},{"type":"Feature","properties":{"abbrev":"Aze.","name":"Azerbaijan","name_long":"Azerbaijan","iso_a2":"AZ","iso_a3":"AZE","iso_n3":"031"},"geometry":{"type":"MultiPolygon","coordinates":[[[[45.0019873390568,39.7400035670496],[45.29814497252144,39.471751207022436],[45.739978468617004,39.473999131827156],[45.73537926614309,39.3197191432198],[46.14362308124881,38.74120148371222],[45.457721795438744,38.874139105783115],[44.95268802265028,39.33576467544643],[44.793989699082005,39.713002631177034],[45.0019873390568,39.7400035670496]]],[[[47.373315464066216,41.219732367511256],[47.81566572448472,41.151416124021345],[47.98728315612604,41.40581920019423],[48.58435265482629,41.808869533854676],[49.11026370626067,41.282286688800525],[49.6189148293096,40.57292430272997],[50.0848295428531,40.52615713150578],[50.39282107931271,40.256561184239104],[49.5692021014448,40.17610097916071],[49.39525923035043,39.39948171646225],[49.223228387250714,39.04921885838792],[48.85653242370759,38.81548635513178],[48.88324913920255,38.32024526626264],[48.634375441284845,38.27037750910094],[48.010744256386516,38.794014797514535],[48.355529412637935,39.28876496027689],[48.06009524922527,39.582235419262446],[47.685079380083124,39.50836395930119],[46.50571984231797,38.770605373686266],[46.48349897643246,39.464154771475535],[46.034534132680704,39.62802073827305],[45.61001224140293,39.89999380142518],[45.89190717955515,40.218475653639985],[45.35917483905817,40.56150381119349],[45.560351189970476,40.81228953710595],[45.1794958839794,40.98535390885143],[44.972480096218156,41.24812856705562],[45.21742638528164,41.41145193131405],[45.962600538930445,41.1238725856098],[46.501637404166985,41.06444468847411],[46.637908156120574,41.181672675128226],[46.14543175637899,41.72280243587264],[46.404950799348825,41.86067515722735],[46.68607059101666,41.827137152669906],[47.373315464066216,41.219732367511256]]]]}},{"type":"Feature","properties":{"abbrev":"Brunei","name":"Brunei","name_long":"Brunei Darussalam","iso_a2":"BN","iso_a3":"BRN","iso_n3":"096"},"geometry":{"type":"Polygon","coordinates":[[[114.20401655482837,4.525873928236805],[114.59996137904872,4.900011298029966],[115.45071048386981,5.447729803891534],[115.4057003113436,4.955227565933839],[115.34746097215067,4.316636053887009],[114.8695573263154,4.348313706881925],[114.65959598191353,4.007636826997754],[114.20401655482837,4.525873928236805]]]}},{"type":"Feature","properties":{"abbrev":"Bang.","name":"Bangladesh","name_long":"Bangladesh","iso_a2":"BD","iso_a3":"BGD","iso_n3":"050"},"geometry":{"type":"Polygon","coordinates":[[[92.67272098182556,22.041238918541254],[92.65225711463799,21.324047552978485],[92.30323449093868,21.47548533780982],[92.36855350135562,20.670883287025347],[92.08288618364612,21.19219513598577],[92.02521528520839,21.701569729086767],[91.83489098507744,22.18293569588556],[91.41708702999766,22.76501902922122],[90.49600630082728,22.80501658781513],[90.58695682166098,22.392793687422866],[90.27297081905554,21.83636770272011],[89.84746707556428,22.039146023033425],[89.70204959509493,21.857115790285306],[89.41886274613549,21.9661789006373],[89.03196129756623,22.055708319582976],[88.87631188350309,22.879146429937826],[88.52976972855377,23.631141872649163],[88.69994022009092,24.23371491138856],[88.08442223506242,24.501657212821925],[88.30637251175602,24.866079413344206],[88.93155398962308,25.238692328384776],[88.2097892598025,25.76806570078271],[88.56304935094977,26.44652558034272],[89.35509402868729,26.014407253518073],[89.83248091019962,25.96508209889548],[89.92069258012185,25.26974986419218],[90.8722107279121,25.132600612889547],[91.79959598182207,25.147431748957317],[92.37620161333481,24.976692816664965],[91.91509280799443,24.13041372323711],[91.46772993364367,24.072639471934792],[91.15896325069971,23.50352692310439],[91.70647505083211,22.985263983649183],[91.86992760617132,23.624346421802784],[92.14603478390681,23.627498684172593],[92.67272098182556,22.041238918541254]]]}},{"type":"Feature","properties":{"abbrev":"China","name":"China","name_long":"China","iso_a2":"CN","iso_a3":"CHN","iso_n3":"156"},"geometry":{"type":"MultiPolygon","coordinates":[[[[110.33918786015154,18.678395087147607],[109.4752095886637,18.197700913968614],[108.65520796105616,18.5076819930714],[108.62621748254045,19.367887885001977],[109.11905561730802,19.821038519769385],[110.21159874882285,20.101253973872076],[110.78655073450223,20.07753449145008],[111.01005130416465,19.695929877190736],[110.57064660038682,19.255879218009312],[110.33918786015154,18.678395087147607]]],[[[127.6574072612624,49.76027049417294],[129.39781782442046,49.44060008401544],[130.5822933289824,48.72968740497612],[130.98728152885386,47.790132351261406],[132.50667199109952,47.78896963153488],[133.37359581922803,48.18344167743493],[135.02631147678673,48.47822988544391],[134.50081383681064,47.57843984637785],[134.11236209527263,47.21246735288673],[133.7696439963129,46.11692698829907],[133.09712690646646,45.14406647397217],[131.8834542176596,45.32116160743644],[131.0252120301561,44.96795319272157],[131.28855512911557,44.111519680348266],[131.14468794161488,42.92998973242695],[130.6338664084098,42.90301463477056],[130.64001590385246,42.39500946712528],[129.99426720593326,42.98538686784379],[129.5966687358795,42.42498179785459],[128.05221520397234,41.99428457291799],[128.20843305879075,41.46677155208254],[127.34378299368305,41.50315176041596],[126.86908328664988,41.81656932226616],[126.18204511932946,41.10733612727637],[125.07994184784062,40.569823716792456],[124.26562462778534,39.92849335383414],[122.86757042856104,39.63778758397626],[122.13138797413094,39.17045176854464],[121.05455447803288,38.89747101496291],[121.5859949077225,39.36085358332414],[121.37675703337267,39.750261338859524],[122.16859500538104,40.422442531896046],[121.64035851449356,40.94638987890332],[120.76862877816197,40.5933881699176],[119.63960208544907,39.89805593521421],[119.02346398323304,39.2523330755111],[118.04274865119793,39.20427399347969],[117.53270226447708,38.7376358098841],[118.0596985209897,38.06147553156105],[118.87814985562838,37.8973253443859],[118.91163618375353,37.44846385349874],[119.70280236214207,37.15638865818508],[120.82345747282366,37.87042776137798],[121.71125857959797,37.48112335870718],[122.35793745329848,37.45448415786069],[122.51999474496584,36.930614325501836],[121.10416385303303,36.65132904718044],[120.6370089051146,36.111439520811125],[119.6645618022461,35.609790554337735],[119.1512081238586,34.909859117160465],[120.22752485563375,34.36033193616862],[120.6203690939166,33.37672272392513],[121.22901411345023,32.46031871187719],[121.90814578663006,31.69217438407469],[121.89191938689035,30.949351508095102],[121.26425744027331,30.67626740164872],[121.50351932178475,30.142914943964257],[122.09211388558911,29.832520453403163],[121.93842817595308,29.018022365834806],[121.68443851123847,28.225512600206685],[121.12566124886645,28.135673122667185],[120.39547326058234,27.053206895449392],[119.58549686083958,25.740780544532612],[118.65687137255453,24.547390855400238],[117.28160647997086,23.624501451099718],[115.89073530483515,22.782873236578098],[114.76382734584624,22.66807404224167],[114.15254682826568,22.223760077396207],[113.80677981980075,22.54833974862143],[113.24107791550162,22.05136749927047],[111.84359215703248,21.550493679281512],[110.78546552942414,21.397143866455334],[110.44403934127169,20.341032619706397],[109.88986128137357,20.282457383703445],[109.62765506392466,21.008227037026728],[109.86448815311834,21.395050970947523],[108.52281294152444,21.71521230721183],[108.050180291783,21.552379869060104],[107.04342003787266,21.811898912029903],[106.56727339073537,22.218204860924743],[106.7254032735485,22.79426788989838],[105.81124718630521,22.976892401617903],[105.32920942588666,23.352063300056983],[104.4768583516645,22.81915009204692],[103.50451460166053,22.70375661873922],[102.70699222210018,22.708795070887703],[102.17043582561355,22.464753119389343],[101.65201785686158,22.31819875740956],[101.80311974488292,21.174366766845054],[101.27002566936002,21.20165192309517],[101.18000532430759,21.43657298429406],[101.15003299357826,21.84998444262902],[100.41653771362738,21.558839423096657],[99.98348921102158,21.74293671313646],[99.24089887898722,22.118314317304566],[99.53199222208744,22.949038804612595],[98.89874922078283,23.142722072842588],[98.6602624857558,24.063286037690006],[97.60471967976203,23.897404690033056],[97.72460900267916,25.083637193293043],[98.67183800658924,25.918702500913497],[98.71209394734458,26.74353587494025],[98.68269005737054,27.50881216075066],[98.24623091023338,27.74722138112918],[97.91198774616944,28.335945136014374],[97.32711388549004,28.26158274994634],[96.24883344928784,28.411030992134467],[96.58659061074755,28.83097951915437],[96.11767866413103,29.452802028922516],[95.40480228066465,29.031716620392164],[94.56599043170294,29.277438055939964],[93.41334760943268,28.640629380807237],[92.50311893104364,27.89687632904645],[91.6966565286967,27.771741848251622],[91.25885379431989,28.04061432546635],[90.73051395056783,28.064953925075738],[90.01582889197121,28.296438503527185],[89.47581017452116,28.042758897406372],[88.8142484883206,27.299315904239393],[88.73032596227856,28.08686473236756],[88.12044070836994,27.876541652939576],[86.95451704300065,27.97426178640353],[85.82331994013154,28.20357595469875],[85.01163821812307,28.642773952747376],[84.23457970575018,28.839893703724698],[83.89899295444675,29.32022614187764],[83.33711510613719,29.463731594352193],[82.32751264845089,30.115268052688208],[81.5258044778748,30.422716986608663],[81.11125613802928,30.18348094331341],[79.72136681510712,30.882714748654735],[78.73889448437401,31.51590607352705],[78.45844648632604,32.61816437431273],[79.17612877799556,32.483779812137755],[79.20889163606856,32.99439463961374],[78.81108646028574,33.506198025032404],[78.91226891471322,34.32193634697577],[77.83745079947462,35.49400950778781],[76.19284834178572,35.89840342868786],[75.89689741405019,36.66680613865188],[75.158027785141,37.13303091078916],[74.98000247589542,37.419990139305895],[74.82998579295216,37.99000702570146],[74.8648157083168,38.3788463404816],[74.2575142760227,38.60650686294349],[73.9288521666464,38.50581533462272],[73.67537926625485,39.43123688410557],[73.96001305531846,39.660008449861714],[73.82224368682833,39.89397349706314],[74.77686242055606,40.36642527929163],[75.46782799673073,40.56207225194868],[76.52636803579745,40.42794607193513],[76.90448449087712,41.06648590754966],[78.18719689322606,41.185315863604814],[78.54366092317528,41.58224254003871],[80.11943037305142,42.123940741538235],[80.25999026888533,42.34999929459909],[80.18015018099439,42.92006785742686],[80.86620649610123,43.180362046881015],[79.96610639844144,44.91751699480462],[81.9470707539181,45.31702749285316],[82.45892581576905,45.539649563166506],[83.18048383986054,47.33003123635075],[85.16429039911324,47.00095571551611],[85.7204838398707,47.45296946877309],[85.76823286330838,48.4557506373969],[86.59877648310336,48.54918162698061],[87.35997033076269,49.21498078062916],[87.75126427607668,49.29719798440547],[88.0138322285517,48.5994627956006],[88.85429772334678,48.069081732773014],[90.28082563676392,47.693549099307916],[90.97080936072499,46.888146063822944],[90.58576826371834,45.7197160914875],[90.94553958533433,45.28607330991025],[92.13389082231825,45.115075995456436],[93.48073367714133,44.975472113620015],[94.68892866412537,44.35233185482846],[95.30687544147153,44.24133087826547],[95.7624548685567,43.31944916439462],[96.34939578652782,42.72563528092866],[97.451757440178,42.74888967546008],[99.51581749878002,42.524691473961695],[100.8458655131083,42.663804429691425],[101.83304039917995,42.51487295182628],[103.31227827353482,41.90746816666763],[104.52228193564903,41.90834666601663],[104.96499393109346,41.59740957291635],[106.12931562706169,42.1343277044289],[107.744772576938,42.481515814781915],[109.24359581913146,42.51944631608416],[110.4121033061153,42.87123362891103],[111.12968224492023,43.40683401140018],[111.8295878438814,43.74311839453949],[111.66773725794323,44.07317576758771],[111.34837690637946,44.45744171811006],[111.87330610560028,45.10207937273512],[112.43606245325887,45.01164561622426],[113.46390669154422,44.80889313412711],[114.46033165899607,45.33981679949389],[115.98509647020013,45.72723501238602],[116.71786828009888,46.388202419615254],[117.42170128791425,46.67273285581421],[118.87432579963873,46.80541209572365],[119.66326989143877,46.69267995867895],[119.77282392789756,47.04805878355015],[118.86657433479498,47.74706004494621],[118.06414269416675,48.06673045510374],[117.29550744025747,47.6977090521074],[116.30895267137325,47.853410142602826],[115.74283735561575,47.72654450132629],[115.48528201707305,48.135382595403456],[116.19180219936761,49.13459809019906],[116.67880089728621,49.888531399121405],[117.87924441942639,49.51098338479696],[119.28846072802585,50.14288279886205],[119.27936567594239,50.582907619827296],[120.18204959521695,51.64356639261803],[120.738191359542,51.964115302124554],[120.725789015792,52.516226304730814],[120.1770886577169,52.75388621684121],[121.00308475147024,53.25140106873124],[122.24574791879289,53.43172597921369],[123.57150678924087,53.45880442973464],[125.06821129771045,53.161044826868846],[125.94634891164618,52.79279857035695],[126.56439904185699,51.7842554795327],[126.93915652883769,51.3538941514059],[127.28745568248493,50.73979726826545],[127.6574072612624,49.76027049417294]]]]}},{"type":"Feature","properties":{"abbrev":"Bhutan","name":"Bhutan","name_long":"Bhutan","iso_a2":"BT","iso_a3":"BTN","iso_n3":"064"},"geometry":{"type":"Polygon","coordinates":[[[91.69665652869668,27.77174184825166],[92.10371178585973,27.452614040633208],[92.03348351437509,26.83831045176356],[91.21751264848643,26.808648179628022],[90.37327477413407,26.87572418874288],[89.74452762243884,26.719402981059957],[88.83564253128938,27.098966376243762],[88.81424848832054,27.29931590423936],[89.47581017452111,28.042758897406397],[90.01582889197118,28.296438503527217],[90.7305139505678,28.064953925075756],[91.25885379431992,28.040614325466294],[91.69665652869668,27.77174184825166]]]}},{"type":"Feature","properties":{"abbrev":"N. Cy.","name":"N. Cyprus","name_long":"Northern Cyprus","iso_a2":null,"iso_a3":null,"iso_n3":null},"geometry":{"type":"Polygon","coordinates":[[[32.73178022637745,35.14002594658844],[32.80247358575275,35.14550364841138],[32.946960890440806,35.3867033961337],[33.667227003724946,35.37321584730551],[34.57647382990046,35.67159556735879],[33.900804477684204,35.245755927057616],[33.97361657078346,35.058506374648],[33.86643965021011,35.09359467217419],[33.675391880027064,35.01786286065045],[33.5256852556775,35.03868846286407],[33.475817498515845,35.000344550103506],[33.45592207208347,35.10142365166641],[33.3838334490363,35.16271190036457],[33.19097700372305,35.17312470147138],[32.919572381326134,35.08783274997364],[32.73178022637745,35.14002594658844]]]}},{"type":"Feature","properties":{"abbrev":"Cyp.","name":"Cyprus","name_long":"Cyprus","iso_a2":"CY","iso_a3":"CYP","iso_n3":"196"},"geometry":{"type":"Polygon","coordinates":[[[33.97361657078346,35.058506374648],[34.00488081232004,34.97809784600186],[32.97982710137845,34.57186941175544],[32.49029625827753,34.701654771456475],[32.25666710788596,35.10323232679663],[32.73178022637745,35.14002594658844],[32.919572381326134,35.08783274997364],[33.19097700372305,35.17312470147138],[33.3838334490363,35.16271190036457],[33.45592207208347,35.10142365166641],[33.475817498515845,35.000344550103506],[33.5256852556775,35.03868846286407],[33.675391880027064,35.01786286065045],[33.86643965021011,35.09359467217419],[33.97361657078346,35.058506374648]]]}},{"type":"Feature","properties":{"abbrev":"Geo.","name":"Georgia","name_long":"Georgia","iso_a2":"GE","iso_a3":"GEO","iso_n3":"268"},"geometry":{"type":"Polygon","coordinates":[[[41.55408410011065,41.53565623632757],[41.70317060727271,41.96294281673292],[41.45347008643839,42.64512339941794],[40.87546919125379,43.013628038091284],[40.32139448422032,43.128633938156845],[39.955008579270924,43.43499766699922],[40.07696495947977,43.55310415300231],[40.922184686045625,43.38215851498079],[42.39439456560882,43.22030792904263],[43.75601688006739,42.74082815202249],[43.931199985536836,42.55497386328477],[44.537622918481986,42.71199270280363],[45.47027916848572,42.50278066666998],[45.77641035338277,42.09244395605636],[46.404950799348825,41.860675157227305],[46.14543175637902,41.72280243587258],[46.63790815612058,41.181672675128226],[46.50163740416693,41.06444468847411],[45.96260053893039,41.123872585609774],[45.217426385281584,41.41145193131405],[44.97248009621808,41.248128567055595],[43.582745802592726,41.09214325618257],[42.61954878110449,41.58317271581994],[41.55408410011065,41.53565623632757]]]}},{"type":"Feature","properties":{"abbrev":"Indo.","name":"Indonesia","name_long":"Indonesia","iso_a2":"ID","iso_a3":"IDN","iso_n3":"360"},"geometry":{"type":"MultiPolygon","coordinates":[[[[120.71560875863044,-10.239581394087864],[120.2950142762069,-10.258649997603525],[118.96780846565471,-9.557969252158031],[119.90030968636161,-9.361340427287516],[120.42575564990543,-9.665921319215798],[120.77550174365675,-9.969675388227456],[120.71560875863044,-10.239581394087864]]],[[[124.43595014861941,-10.140000909061442],[123.57998172413673,-10.359987481327963],[123.45998904835503,-10.239994805546175],[123.55000939340746,-9.90001555749798],[123.98000898650811,-9.290026950724695],[124.96868248911622,-8.892790215697048],[125.07001997284064,-9.089987481322837],[125.08852013560109,-9.393173109579322],[124.43595014861941,-10.140000909061442]]],[[[117.90001834520777,-8.095681247594925],[118.2606164897405,-8.362383314653329],[118.87845991422215,-8.28068287519983],[119.12650678922309,-8.705824883665073],[117.9704016459893,-8.906639499551261],[117.27773074754903,-9.040894870645559],[116.74014082241663,-9.03293670007264],[117.08373742072533,-8.457157891476541],[117.63202436734215,-8.449303073768192],[117.90001834520777,-8.095681247594925]]],[[[122.90353722543611,-8.094234307490737],[122.75698286345632,-8.64980763106064],[121.25449059457013,-8.933666273639943],[119.9243909038096,-8.810417982623875],[119.92092858284613,-8.444858900591072],[120.71509199430757,-8.236964613480865],[121.34166873584658,-8.536739597206022],[122.00736453663043,-8.460620212440162],[122.90353722543611,-8.094234307490737]]],[[[108.62347863162894,-6.777673841990676],[110.53922732955331,-6.877357679881683],[110.75957563684594,-6.465186455921752],[112.61481123255638,-6.946035658397591],[112.97876834518812,-7.59421314863458],[114.47893517462117,-7.776527601760279],[115.70552697150109,-8.370806573116866],[114.56451134649652,-8.751816908404834],[113.4647335144609,-8.348947442257426],[112.55967247930103,-8.376180922075164],[111.52206139531248,-8.302128594600957],[110.58614953007432,-8.122604668819022],[109.4276672709552,-7.740664157749761],[108.69365522668133,-7.641600437046221],[108.27776329959632,-7.766657403192581],[106.45410200401615,-7.354899590690947],[106.28062422081231,-6.924899997590202],[105.36548628135554,-6.85141611087117],[106.05164594932707,-5.8959188777945],[107.2650085795402,-5.954985039904059],[108.0720910990747,-6.345762220895239],[108.48684614464926,-6.421984958525768],[108.62347863162894,-6.777673841990676]]],[[[134.72462446506668,-6.214400730009287],[134.21013390516893,-6.895237725454706],[134.112775506731,-6.142467136259014],[134.2903357280858,-5.783057549669039],[134.49962527886788,-5.445042006047899],[134.72700158095213,-5.73758228925216],[134.72462446506668,-6.214400730009287]]],[[[127.24921512258892,-3.45906503663889],[126.87492272349888,-3.79098276124958],[126.18380211802733,-3.607376397316556],[125.98903364471929,-3.177273451351325],[127.00065148326499,-3.12931772218441],[127.24921512258892,-3.45906503663889]]],[[[130.4713440288518,-3.09376433676762],[130.8348360535928,-3.858472181822762],[129.99054650280814,-3.446300957862817],[129.15524865124243,-3.362636813982249],[128.59068362845366,-3.428679294451257],[127.89889122936236,-3.393435967628193],[128.1358793478528,-2.843650404474914],[129.37099775606092,-2.802154229344552],[130.4713440288518,-3.09376433676762]]],[[[134.1433679546478,-1.151867364103595],[134.42262739475305,-2.769184665542383],[135.4576029806947,-3.367752780779114],[136.2933142437188,-2.30704233155609],[137.44073774632753,-1.703513278819372],[138.3297274110448,-1.70268645590265],[139.18492068904297,-2.051295668143638],[139.92668419816042,-2.409051608900284],[141.00021040259188,-2.600151055515624],[141.01705691951904,-5.859021905138022],[141.0338517600139,-9.117892754760419],[140.14341515519257,-8.297167657100957],[139.12776655492812,-8.096042982620942],[138.88147667862498,-8.380935153846096],[137.61447391169284,-8.411682631059762],[138.0390991558352,-7.597882175327356],[138.6686214540148,-7.320224704623072],[138.40791385310237,-6.232849216337484],[137.92783979711086,-5.393365573756],[135.98925011611348,-4.546543877789048],[135.16459760959972,-4.462931410340772],[133.6628804871979,-3.538853448097527],[133.3677047059468,-4.024818617370315],[132.98395551974735,-4.112978610860281],[132.756940952689,-3.74628264731713],[132.75378869031923,-3.311787204607072],[131.9898043153162,-2.820551039240456],[133.0668445171435,-2.460417982598443],[133.78003095920351,-2.47984832114021],[133.69621178602614,-2.214541517753688],[132.23237348849423,-2.212526136894326],[131.8362219585447,-1.617161960459597],[130.94283979708283,-1.432522067880797],[130.51955814018007,-0.937720228686075],[131.86753787651364,-0.695461114101818],[132.3801164084168,-0.369537855636977],[133.98554813042844,-0.780210463060442],[134.1433679546478,-1.151867364103595]]],[[[125.24050052297159,1.419836127117605],[124.43703535369737,0.427881171058971],[123.68550499887672,0.235593166500877],[122.72308312387288,0.431136786293337],[121.0567248881891,0.381217352699451],[120.18308312386276,0.23724681233422],[120.04086958219548,-0.519657891444851],[120.93590538949073,-1.408905938323372],[121.4758207540762,-0.955962009285116],[123.34056481332848,-0.615672702643081],[123.2583992859845,-1.076213067228338],[122.82271528533161,-0.930950616055881],[122.38852990121539,-1.516858005381124],[121.50827355355548,-1.904482924002423],[122.4545723816843,-3.186058444840882],[122.27189619353257,-3.529500013852697],[123.17096276254657,-4.683693129091708],[123.16233279835379,-5.340603936385961],[122.62851525277871,-5.634591159694494],[122.23639448454806,-5.282933037948283],[122.71956912647707,-4.46417164471579],[121.73823367725439,-4.8513314754465],[121.48946333220127,-4.574552504091216],[121.61917117725388,-4.188477878438674],[120.89818159391771,-3.602105401222829],[120.97238895068877,-2.62764291749491],[120.30545291552991,-2.931603692235726],[120.39004723519176,-4.097579034037224],[120.43071658740539,-5.528241062037779],[119.79654341031952,-5.673400160345651],[119.36690555224496,-5.379878024927805],[119.65360639860013,-4.459417412944958],[119.49883548388597,-3.49441171632651],[119.078344354327,-3.487021986508765],[118.7677689962529,-2.801999200047689],[119.18097374885869,-2.147103773612798],[119.32339399625508,-1.353147067880471],[119.82599897672586,0.154254462073496],[120.03570193896637,0.566477362465804],[120.8857792501677,1.309222723796836],[121.666816847827,1.013943589681077],[122.92756676645185,0.875192368977466],[124.07752241424285,0.917101955566139],[125.06598921112183,1.643259182131558],[125.24050052297159,1.419836127117605]]],[[[128.68824873262074,1.132385972494106],[128.63595218314137,0.258485826006179],[128.12016971243617,0.356412665199286],[127.96803429576887,-0.252077325037533],[128.37999881399972,-0.780003757331286],[128.10001590384232,-0.899996433112975],[127.69647464407504,-0.266598402511505],[127.39949018769377,1.011721503092573],[127.60051150930907,1.810690822757181],[127.93237755748751,2.174596258956555],[128.00415612194084,1.628531398928331],[128.59455936087548,1.540810655112864],[128.68824873262074,1.132385972494106]]],[[[117.87562706916603,1.827640692548911],[118.99674726773819,0.902219143066048],[117.81185835171779,0.784241848143722],[117.47833865770608,0.102474676917026],[117.52164350796662,-0.803723239753211],[116.56004845587952,-1.487660821136231],[116.53379682827519,-2.483517347832901],[116.14808393764864,-4.012726332214015],[116.0008577820491,-3.657037448749008],[114.86480309454454,-4.106984144714417],[114.46865156459509,-3.495703627133821],[113.75567182826413,-3.43916961020652],[113.25699425664757,-3.118775729996855],[112.06812625534067,-3.478392022316072],[111.70329064336002,-2.994442233902632],[111.04824018762824,-3.049425957861189],[110.223846063276,-2.934032484553484],[110.07093550012436,-1.592874037282414],[109.57194786991406,-1.314906507984489],[109.09187381392253,-0.459506524257051],[108.95265750532816,0.415375474444346],[109.06913618371404,1.341933905437642],[109.66326012577375,2.006466986494985],[109.83022667850886,1.338135687664192],[110.51406090702713,0.773131415200993],[111.15913781132659,0.976478176269509],[111.79754845586044,0.904441229654651],[112.38025190638368,1.410120957846758],[112.8598091980522,1.497790025229946],[113.80584964401956,1.217548732911041],[114.6213554220175,1.430688177898887],[115.13403730678523,2.821481838386219],[115.51907840379201,3.169238389494396],[115.86551720587677,4.306559149590157],[117.01521447150637,4.306094061699469],[117.88203494677019,4.137551377779488],[117.31323245653354,3.234428208830579],[118.04832970588538,2.287690131027361],[117.87562706916603,1.827640692548911]]],[[[105.81765506390936,-5.852355645372413],[104.71038414919151,-5.873284600450646],[103.86821333213074,-5.037314955264975],[102.58426069540693,-4.220258884298204],[102.15617313030103,-3.614146009946765],[101.39911339722508,-2.799777113459172],[100.90250288290017,-2.05026213949786],[100.14198082886062,-0.650347588710957],[99.26373986206025,0.183141587724663],[98.97001102091333,1.042882391764536],[98.60135135294311,1.823506577965617],[97.6995976094499,2.453183905442117],[97.1769421732499,3.30879059489861],[96.42401655475734,3.868859768077911],[95.38087609251347,4.970782172053673],[95.29302615761733,5.479820868344817],[95.93686282754176,5.439513251157109],[97.4848820332771,5.246320909034011],[98.36916914265569,4.268370266126368],[99.14255862833582,3.590349636240916],[99.69399783732243,3.174328518075157],[100.64143354696168,2.099381211755798],[101.65801232300734,2.083697414555189],[102.49827111207324,1.398700466310217],[103.07684044801303,0.561361395668854],[103.83839603069835,0.104541734208667],[103.43764529827497,-0.711945896002845],[104.01078860882402,-1.059211521004229],[104.3699914896849,-1.084843031421016],[104.53949018760218,-1.782371514496716],[104.88789269411402,-2.340425306816655],[105.622111444117,-2.42884368246807],[106.10859337771271,-3.06177662517895],[105.85744591677414,-4.305524997579724],[105.81765506390936,-5.852355645372413]]]]}},{"type":"Feature","properties":{"abbrev":"India","name":"India","name_long":"India","iso_a2":"IN","iso_a3":"IND","iso_n3":"356"},"geometry":{"type":"Polygon","coordinates":[[[77.83745079947457,35.494009507787766],[78.91226891471322,34.32193634697579],[78.81108646028574,33.50619802503242],[79.20889163606857,32.994394639613716],[79.17612877799553,32.48377981213771],[78.45844648632601,32.61816437431273],[78.73889448437401,31.515906073527063],[79.7213668151071,30.882714748654728],[81.11125613802932,30.183480943313402],[80.4767212259174,29.72986522065534],[80.08842451367627,28.79447011974014],[81.05720258985203,28.416095282499043],[81.99998742058497,27.925479234319994],[83.30424889519955,27.36450572357556],[84.6750179381738,27.234901231387536],[85.25177859898338,26.72619843190634],[86.02439293817918,26.63098460540857],[87.22747195836628,26.397898057556077],[88.06023766474982,26.41461538340249],[88.17480431514092,26.81040517832595],[88.04313276566123,27.445818589786825],[88.12044070836987,27.876541652939594],[88.73032596227856,28.086864732367516],[88.81424848832054,27.29931590423936],[88.83564253128938,27.098966376243762],[89.74452762243884,26.719402981059957],[90.37327477413407,26.87572418874288],[91.21751264848643,26.808648179628022],[92.03348351437509,26.83831045176356],[92.10371178585973,27.452614040633208],[91.69665652869668,27.77174184825166],[92.50311893104364,27.89687632904645],[93.41334760943268,28.640629380807226],[94.56599043170294,29.277438055939985],[95.40480228066464,29.03171662039213],[96.11767866413103,29.452802028922466],[96.58659061074749,28.830979519154344],[96.24883344928779,28.41103099213444],[97.32711388549004,28.26158274994634],[97.40256147663612,27.88253611908544],[97.0519885599681,27.69905894623315],[97.1339990580153,27.083773505149964],[96.41936567585097,27.264589341739224],[95.12476769407496,26.5735720891323],[95.1551534362626,26.001307277932085],[94.60324913938538,25.162495428970402],[94.55265791217164,24.675238348890332],[94.10674197792505,23.85074087167348],[93.3251876159428,24.078556423432204],[93.28632693885928,23.043658352139005],[93.06029422401463,22.70311066333557],[93.16612755734836,22.278459580977103],[92.67272098182556,22.041238918541254],[92.14603478390681,23.627498684172593],[91.86992760617132,23.624346421802784],[91.70647505083211,22.985263983649183],[91.15896325069971,23.50352692310439],[91.46772993364367,24.072639471934792],[91.91509280799443,24.13041372323711],[92.37620161333481,24.976692816664965],[91.79959598182207,25.147431748957317],[90.8722107279121,25.132600612889547],[89.92069258012185,25.26974986419218],[89.83248091019962,25.96508209889548],[89.35509402868729,26.014407253518073],[88.56304935094977,26.44652558034272],[88.2097892598025,25.76806570078271],[88.93155398962308,25.238692328384776],[88.30637251175602,24.866079413344206],[88.08442223506242,24.501657212821925],[88.69994022009092,24.23371491138856],[88.52976972855377,23.631141872649163],[88.87631188350309,22.879146429937826],[89.03196129756623,22.055708319582976],[88.88876590368542,21.690588487224748],[88.20849734899521,21.703171698487807],[86.97570438024027,21.49556163175521],[87.03316857294887,20.743307806882413],[86.49935102737378,20.151638495356607],[85.0602657409097,19.4785788029711],[83.94100589390001,18.302009792549725],[83.18921715691785,17.67122142177898],[82.19279218946592,17.016636053937813],[82.19124189649719,16.556664130107848],[81.69271935417748,16.310219224507904],[80.79199913933014,15.951972357644491],[80.32489586784388,15.899184882058348],[80.02506920768644,15.136414903214147],[80.2332735533904,13.835770778859981],[80.28629357292186,13.006260687710833],[79.8625468281285,12.056215318240888],[79.85799930208682,10.35727509199711],[79.340511509116,10.30885427493962],[78.88534549348918,9.546135972527722],[79.18971967968828,9.216543687370148],[78.2779407083305,8.933046779816934],[77.94116539908435,8.252959092639742],[77.53989790233794,7.965534776232333],[76.59297895702167,8.89927623131419],[76.13006147655108,10.299630031775521],[75.74646731964849,11.308250637248307],[75.39610110870957,11.781245022015824],[74.86481570831681,12.741935736537897],[74.61671715688354,13.99258291264968],[74.44385949086723,14.617221787977696],[73.5341992532334,15.99065216721496],[73.11990929554943,17.928570054592498],[72.82090945830865,19.208233547436166],[72.8244751321368,20.419503282141534],[72.6305334817454,21.356009426351008],[71.17527347197395,20.757441311114235],[70.4704586119451,20.877330634031384],[69.16413008003883,22.0892980005727],[69.64492760608239,22.450774644454338],[69.34959679553435,22.84317963306269],[68.1766451353734,23.69196503345671],[68.84259931831878,24.35913361256094],[71.04324018746823,24.3565239527302],[70.84469933460284,25.21510203704352],[70.28287316272558,25.72222870533983],[70.16892662952202,26.491871649678842],[69.51439293811312,26.940965684511372],[70.61649620960193,27.989196275335868],[71.77766564320032,27.913180243434525],[72.8237516620847,28.961591701772054],[73.45063846221743,29.97641347911987],[74.42138024282026,30.979814764931177],[74.40592898956501,31.69263947196528],[75.25864179881322,32.2711054550405],[74.45155927927871,32.7648996038055],[74.10429365427734,33.44147329358685],[73.74994835805195,34.31769887952785],[74.24020267120497,34.74888703057125],[75.75706098826834,34.50492259372132],[76.87172163280403,34.65354401299274],[77.83745079947457,35.494009507787766]]]}},{"type":"Feature","properties":{"abbrev":"Iran","name":"Iran","name_long":"Iran","iso_a2":"IR","iso_a3":"IRN","iso_n3":"364"},"geometry":{"type":"Polygon","coordinates":[[[53.92159793479556,37.19891836196126],[54.800303989486565,37.392420762678185],[55.51157840355191,37.96411713312317],[56.18037479027333,37.93512665460742],[56.61936608259282,38.121394354803485],[57.33043379092898,38.02922943781094],[58.4361544126782,37.522309475243794],[59.23476199731681,37.412987982730336],[60.37763797388387,36.52738312432837],[61.123070509694145,36.49159719496624],[61.21081709172574,35.650072333309225],[60.80319339380745,34.40410187431986],[60.52842980331158,33.676446031218006],[60.963700392506006,33.52883230237625],[60.536077915290775,32.98126882581157],[60.863654819588966,32.18291962333443],[60.94194461451113,31.548074652628753],[61.699314406180825,31.37950613049267],[61.781221551363444,30.735850328081234],[60.874248488208785,29.829238999952604],[61.36930870956494,29.303276272085924],[61.77186811711863,28.699333807890795],[62.72783043808598,28.25964488373539],[62.755425652929866,27.378923448184985],[63.233897739520295,27.21704702403071],[63.31663170761959,26.756532497661667],[61.87418745305655,26.239974880472104],[61.49736290878419,25.0782370061185],[59.61613406763084,25.380156561783778],[58.5257613462723,25.60996165618573],[57.397251417882394,25.73990204518364],[56.970765822177555,26.96610626882136],[56.492138706290206,27.143304755150197],[55.72371015811006,26.96463349050104],[54.71508955263727,26.480657863871514],[53.49309695823135,26.81236888275305],[52.48359785340961,27.580849107365495],[51.52076256694741,27.865689602158298],[50.85294803243954,28.814520575469384],[50.115008579311585,30.147772528599717],[49.576850213423995,29.985715236932407],[48.94133344909855,30.317090359004037],[48.567971225789755,29.926778265903522],[48.0145683123761,30.452456773392598],[48.004698113808324,30.985137437457244],[47.68528608581227,30.98485321707963],[47.8492037290421,31.70917593029867],[47.3346614927119,32.469155381799105],[46.10936160663932,33.017287299119005],[45.41669070819904,33.967797756479584],[45.64845950702809,34.748137722303014],[46.15178795755093,35.09325877536429],[46.0763403664048,35.67738332777549],[45.4206181170532,35.97754588474282],[44.77267,37.17045],[44.22575564960053,37.97158437758935],[44.421402622257546,38.28128123631454],[44.10922529478234,39.4281362981681],[44.79398969908195,39.71300263117705],[44.95268802265031,39.33576467544637],[45.45772179543877,38.87413910578306],[46.14362308124881,38.74120148371222],[46.50571984231797,38.770605373686294],[47.685079380083096,39.508363959301214],[48.06009524922524,39.58223541926246],[48.35552941263788,39.28876496027691],[48.01074425638648,38.79401479751452],[48.63437544128481,38.27037750910097],[48.88324913920249,38.32024526626262],[49.19961225769334,37.58287425388988],[50.14777143738462,37.37456655532134],[50.84235436381971,36.8728142359834],[52.264024692601424,36.7004216578577],[53.82578982932642,36.965030829408235],[53.92159793479556,37.19891836196126]]]}},{"type":"Feature","properties":{"abbrev":"Jord.","name":"Jordan","name_long":"Jordan","iso_a2":"JO","iso_a3":"JOR","iso_n3":"400"},"geometry":{"type":"Polygon","coordinates":[[[35.54566531753454,32.393992011030576],[35.71991824722275,32.709192409794866],[36.834062127435544,32.312937526980775],[38.792340529136084,33.378686428352225],[39.19546837744497,32.16100881604267],[39.00488569515255,32.01021698661498],[37.00216556168101,31.508412990844743],[37.998848911294374,30.50849986421313],[37.66811974462638,30.3386652694859],[37.503581984209035,30.003776150018403],[36.74052778498725,29.86528331147619],[36.50121422704358,29.5052536076987],[36.06894087092206,29.197494615184457],[34.95603722508426,29.35655467377884],[34.92260257339142,29.501326198844524],[35.420918409981965,31.100065822874356],[35.397560662586045,31.48908600516758],[35.5452519060762,31.78250478772084],[35.54566531753454,32.393992011030576]]]}},{"type":"Feature","properties":{"abbrev":"Isr.","name":"Israel","name_long":"Israel","iso_a2":"IL","iso_a3":"ISR","iso_n3":"376"},"geometry":{"type":"Polygon","coordinates":[[[35.71991824722275,32.709192409794866],[35.54566531753454,32.393992011030576],[35.183930291491436,32.53251068778894],[34.97464074070933,31.86658234305972],[35.22589155451242,31.754341132121766],[34.970506626125996,31.616778469360806],[34.92740848159457,31.353435370401414],[35.397560662586045,31.48908600516758],[35.420918409981965,31.100065822874356],[34.92260257339142,29.501326198844524],[34.26543338393568,31.219360866820153],[34.55637169773891,31.548823960896996],[34.48810713068136,31.60553884533732],[34.752587111151165,32.07292633720117],[34.95541710789677,32.82737641044638],[35.098457472480675,33.080539252244265],[35.126052687324545,33.09090037691878],[35.460709262846706,33.08904002535628],[35.55279666519081,33.26427480725802],[35.82110070165024,33.2774264592763],[35.836396925608625,32.86812327730851],[35.700797967274745,32.71601369885738],[35.71991824722275,32.709192409794866]]]}},{"type":"Feature","properties":{"abbrev":"Japan","name":"Japan","name_long":"Japan","iso_a2":"JP","iso_a3":"JPN","iso_n3":"392"},"geometry":{"type":"MultiPolygon","coordinates":[[[[134.63842817600388,34.14923371025642],[134.7663790223585,33.80633474378368],[134.20341596897086,33.20117788342964],[133.7929500672765,33.5219851750976],[133.28026818250888,33.28957042086495],[133.01485802625788,32.70456736910478],[132.3631148621927,32.98938202568137],[132.37117638563018,33.46364248304007],[132.9243725933148,34.06029857028204],[133.49296837782222,33.9446208765967],[133.90410607313638,34.36493113864262],[134.63842817600388,34.14923371025642]]],[[[140.9763875673053,37.14207428644016],[140.59976972876214,36.343983466124534],[140.77407433488264,35.84287710219024],[140.25327925024513,35.13811391859365],[138.97552778539622,34.66760000257611],[137.21759891169123,34.60628591566186],[135.7929830262689,33.46480520276663],[135.12098270074543,33.84907115328906],[135.07943484918272,34.59654490817482],[133.340316196832,34.37593821872076],[132.15677086805132,33.90493337659652],[130.98614464734348,33.88576142021628],[132.00003624891005,33.149992377244615],[131.33279015515737,31.450354519164843],[130.68631798718596,31.029579169228242],[130.20241987520498,31.418237616495418],[130.44767622286216,32.319474595665724],[129.8146916037189,32.61030955660439],[129.40846316947258,33.29605581311759],[130.35393517468466,33.6041507024417],[130.87845096244715,34.232742824840045],[131.88422936414392,34.74971385348791],[132.61767296766251,35.43339305270942],[134.6083008159778,35.73161774346582],[135.67753787652893,35.527134100886826],[136.72383060114245,37.30498423924038],[137.3906116070045,36.827390651998826],[138.85760216690628,37.82748464614346],[139.4264046571429,38.21596222589764],[140.0547900738121,39.438807481436385],[139.88337934789988,40.563312486323696],[140.30578250545372,41.19500519465956],[141.3689734234267,41.37855988216029],[141.91426313697048,39.99161611587868],[141.884600864835,39.180864569651504],[140.9594893739458,38.17400096287658],[140.9763875673053,37.14207428644016]]],[[[143.9101619813795,44.17409983985373],[144.61342654843963,43.960882880217525],[145.3208252300831,44.38473297787544],[145.54313724180278,43.262088324550604],[144.0596618999999,42.98835826270056],[143.18384972551732,41.9952147486992],[141.61149092017249,42.67879059505608],[141.06728641170665,41.58459381770799],[139.95510623592108,41.569555975911044],[139.81754357315995,42.5637588567744],[140.31208703019323,43.33327261003265],[141.38054894426003,43.388824774746496],[141.67195234595394,44.77212535255148],[141.967644891528,45.55148346616135],[143.14287031470982,44.510358384776964],[143.9101619813795,44.17409983985373]]]]}},{"type":"Feature","properties":{"abbrev":"Iraq","name":"Iraq","name_long":"Iraq","iso_a2":"IQ","iso_a3":"IRQ","iso_n3":"368"},"geometry":{"type":"Polygon","coordinates":[[[45.4206181170532,35.97754588474282],[46.0763403664048,35.67738332777549],[46.15178795755093,35.09325877536429],[45.64845950702809,34.748137722303014],[45.41669070819904,33.967797756479584],[46.10936160663932,33.017287299119005],[47.3346614927119,32.469155381799105],[47.8492037290421,31.70917593029867],[47.68528608581227,30.98485321707963],[48.004698113808324,30.985137437457244],[48.0145683123761,30.452456773392598],[48.567971225789755,29.926778265903522],[47.974519077349896,29.9758192001485],[47.30262210469096,30.05906993257072],[46.568713413281756,29.09902517345229],[44.70949873228474,29.178891099559383],[41.889980910007836,31.190008653278365],[40.399994337736246,31.889991766887935],[39.19546837744497,32.16100881604267],[38.792340529136084,33.378686428352225],[41.006158888519934,34.41937226006212],[41.383965285005814,35.628316555314356],[41.289707472505455,36.35881460219227],[41.83706424334096,36.605853786763575],[42.34959109881177,37.2298725449041],[42.77912560402182,37.385263576805755],[43.9422587420473,37.25622752537295],[44.29345177590286,37.0015143906063],[44.772699008977696,37.170444647768434],[45.4206181170532,35.97754588474282]]]}},{"type":"Feature","properties":{"abbrev":"Kaz.","name":"Kazakhstan","name_long":"Kazakhstan","iso_a2":"KZ","iso_a3":"KAZ","iso_n3":"398"},"geometry":{"type":"Polygon","coordinates":[[[70.96231489449929,42.26615428320554],[70.3889648782208,42.081307684897524],[69.07002729683524,41.38424428971234],[68.63248294462005,40.66868073176687],[68.25989586779565,40.6623245305949],[67.98585574735182,41.135990708982206],[66.7140470722166,41.168443508461564],[66.51064863471572,41.987644151368556],[66.02339155463562,41.99464630794404],[66.0980123228652,42.99766002051308],[64.90082441595933,43.728080552742654],[63.185786981056594,43.650074978198006],[62.01330040878628,43.50447663021566],[61.0583199400325,44.40581696225058],[60.23997195825847,44.784036770194746],[58.6899890480958,45.50001373959873],[58.50312706892844,45.586804307632974],[55.92891727074118,44.99585846615918],[55.968191359283026,41.30864166926938],[55.45525109235381,41.25985911718584],[54.75534549339267,42.04397146256662],[54.07941775901497,42.32410940202084],[52.94429324729174,42.11603424739758],[52.50245975119628,41.78331553808647],[52.44633914572722,42.027150783855575],[52.692112257707265,42.44389537207337],[52.50142622255032,42.7922978785852],[51.342427199108215,43.132974758469345],[50.89129194520024,44.03103363705378],[50.339129266161365,44.284015611338475],[50.305642938036264,44.609835516938915],[51.278503452363225,44.51485423438646],[51.316899041556034,45.2459982366679],[52.16738976421573,45.40839142514511],[53.0408764992452,45.25904653582177],[53.220865512917726,46.234645901059935],[53.042736850807785,46.853006089864486],[52.04202273947561,46.80463694923924],[51.191945428274266,47.048704738953916],[50.03408328634248,46.60898997658222],[49.10116000000011,46.399330000000134],[48.593241001180495,46.56103424741547],[48.694733514201744,47.07562816017793],[48.05725304544927,47.74375275327952],[47.31523115417024,47.715847479841955],[46.46644575377627,48.39415233010493],[47.043671502476506,49.152038886097614],[46.75159630716274,49.35600576435377],[47.5494804217493,50.454698391311126],[48.57784142435752,49.87475962991567],[48.70238162618102,50.60512848571284],[50.76664839051215,51.6927623561599],[52.32872358583097,51.718652248738124],[54.532878452376224,51.02623973245932],[55.716940545479815,50.62171662047853],[56.777961053296565,51.04355133727705],[58.36329064314674,51.06365346943858],[59.6422823423706,50.545442206415714],[59.93280724471549,50.842194118851864],[61.337424350840934,50.79907013610426],[61.58800337102417,51.272658799843214],[59.96753380721554,51.9604204372157],[60.92726850774027,52.44754832621504],[60.73999311711459,52.71998647725775],[61.6999861998006,52.97999644633427],[60.97806644068316,53.66499339457914],[61.436591424409066,54.00626455343479],[65.17853356309593,54.35422781027211],[65.666875848254,54.60126699484345],[68.16910037625883,54.97039175070432],[69.06816694527288,55.38525014914353],[70.86526655465514,55.169733588270105],[71.18013105660941,54.133285224008254],[72.22415001820218,54.376655381886735],[73.5085160663844,54.035616766976595],[73.42567874542043,53.489810289109755],[74.38484500519007,53.54686107036008],[76.89110029491343,54.49052440044193],[76.52517947785473,54.177003485727134],[77.80091556184425,53.404414984747575],[80.03555952344169,50.86475088154725],[80.56844689323549,51.38833649352847],[81.94598554883993,50.81219594990637],[83.38300377801238,51.069182847693924],[83.93511478061885,50.88924551045358],[84.41637739455308,50.311399644565824],[85.11555952346203,50.11730296487763],[85.54126997268247,49.69285858824816],[86.82935672398963,49.82667470966817],[87.35997033076268,49.21498078062916],[86.59877648310339,48.54918162698061],[85.7682328633083,48.45575063739698],[85.72048383987072,47.45296946877312],[85.16429039911338,47.00095571551611],[83.18048383986047,47.330031236350855],[82.45892581576913,45.539649563166506],[81.94707075391813,45.31702749285324],[79.96610639844141,44.91751699480466],[80.86620649610137,43.18036204688104],[80.1801501809943,42.92006785742694],[80.25999026888536,42.349999294599115],[79.64364546094015,42.496682847659656],[79.1421773619798,42.856092434249604],[77.6583919615832,42.960685533208334],[76.00035363149857,42.98802236589063],[75.6369649596221,42.87789988867678],[74.21286583852259,43.29833934180351],[73.64530358266092,43.09127187760987],[73.48975752146237,42.50089447689129],[71.84463829945065,42.845395412765185],[71.18628055205227,42.70429291439223],[70.96231489449929,42.26615428320554]]]}},{"type":"Feature","properties":{"abbrev":"Kgz.","name":"Kyrgyzstan","name_long":"Kyrgyzstan","iso_a2":"KG","iso_a3":"KGZ","iso_n3":"417"},"geometry":{"type":"Polygon","coordinates":[[[70.96231489449914,42.26615428320549],[71.18628055205212,42.70429291439214],[71.8446382994506,42.84539541276509],[73.48975752146237,42.50089447689132],[73.64530358266092,43.09127187760982],[74.21286583852256,43.29833934180337],[75.636964959622,42.87789988867668],[76.00035363149846,42.98802236589067],[77.6583919615832,42.96068553320826],[79.14217736197978,42.85609243424952],[79.64364546094012,42.49668284765953],[80.2599902688853,42.34999929459906],[80.11943037305139,42.12394074153825],[78.54366092317531,41.58224254003869],[78.18719689322597,41.18531586360481],[76.90448449087708,41.06648590754964],[76.52636803579745,40.42794607193512],[75.4678279967307,40.56207225194867],[74.77686242055606,40.36642527929163],[73.8222436868283,39.893973497063186],[73.96001305531843,39.660008449861735],[73.6753792662548,39.4312368841056],[71.784693637992,39.27946320246437],[70.54916181832562,39.6041979029865],[69.46488691597753,39.5266832545487],[69.55960981636852,40.10321137141298],[70.64801883329997,39.93575389257117],[71.01419803252017,40.24436554621823],[71.77487511585656,40.14584442805378],[73.05541710804917,40.866033026689465],[71.87011478057047,41.392900092121266],[71.1578585142916,41.14358714452912],[70.42002241402821,41.51999827734314],[71.25924767444822,42.16771067968946],[70.96231489449914,42.26615428320549]]]}},{"type":"Feature","properties":{"abbrev":"S.K.","name":"Korea","name_long":"Republic of Korea","iso_a2":"KR","iso_a3":"KOR","iso_n3":"410"},"geometry":{"type":"Polygon","coordinates":[[[128.34971642467661,38.61224294692785],[129.21291954968007,37.43239248305595],[129.46044966035817,36.78418915460282],[129.4683044780665,35.63214061130395],[129.0913765809296,35.082484239231434],[128.1858504578791,34.89037710218639],[127.38651940318839,34.47567373304412],[126.48574751190874,34.39004588473648],[126.37391971242913,34.934560451795946],[126.5592313986278,35.6845405136479],[126.11739790253229,36.72548472751926],[126.86014326386339,36.893924058574626],[126.17475874237624,37.74968577732804],[126.23733890188176,37.84037791600028],[126.68371992401892,37.80477285415118],[127.07330854706737,38.2561148137884],[127.780035435091,38.30453563084589],[128.20574588431145,38.37039724380189],[128.34971642467661,38.61224294692785]]]}},{"type":"Feature","properties":{"abbrev":"Camb.","name":"Cambodia","name_long":"Cambodia","iso_a2":"KH","iso_a3":"KHM","iso_n3":"116"},"geometry":{"type":"Polygon","coordinates":[[[103.4972799011397,10.632555446815928],[103.09068973186724,11.153660590047165],[102.5849324890267,12.186594956913282],[102.348099399833,13.394247341358223],[102.98842207236163,14.225721136934467],[104.28141808473661,14.416743068901367],[105.21877689007887,14.273211778210694],[106.04394616091552,13.881091009979954],[106.49637332563087,14.570583807834282],[107.38272749230109,14.202440904186972],[107.61454796756243,13.535530707244206],[107.49140302941089,12.337205918827946],[105.81052371625313,11.567614650921227],[106.24967003786946,10.961811835163587],[105.19991499229235,10.889309800658097],[104.33433475140347,10.48654368737523],[103.4972799011397,10.632555446815928]]]}},{"type":"Feature","properties":{"abbrev":"Kwt.","name":"Kuwait","name_long":"Kuwait","iso_a2":"KW","iso_a3":"KWT","iso_n3":"414"},"geometry":{"type":"Polygon","coordinates":[[[47.974519077349896,29.9758192001485],[48.18318851094448,29.534476630159766],[48.09394331237642,29.306299343375002],[48.416094191283946,28.55200429942667],[47.708850538937384,28.526062730416143],[47.45982181172283,29.002519436147224],[46.568713413281756,29.09902517345229],[47.30262210469096,30.05906993257072],[47.974519077349896,29.9758192001485]]]}},{"type":"Feature","properties":{"abbrev":"Laos","name":"Lao PDR","name_long":"Lao PDR","iso_a2":"LA","iso_a3":"LAO","iso_n3":"418"},"geometry":{"type":"Polygon","coordinates":[[[105.21877689007887,14.273211778210694],[105.54433841351769,14.723933620660416],[105.58903852745016,15.570316066952858],[104.7793205098688,16.44186493577145],[104.7169470560925,17.42885895433008],[103.95647667848529,18.24095408779688],[103.20019209189373,18.309632066312773],[102.9987056823877,17.9616946476916],[102.41300499879162,17.932781683824288],[102.11359175009248,18.109101670804165],[101.05954756063517,17.51249725999449],[101.03593143107777,18.408928330961615],[101.2820146016517,19.462584947176765],[100.60629357300316,19.508344427971224],[100.54888105672688,20.109237982661128],[100.11598758341783,20.417849636308187],[100.32910119018952,20.786121731036232],[101.18000532430754,21.436572984294024],[101.27002566935997,21.201651923095184],[101.80311974488292,21.17436676684507],[101.65201785686152,22.318198757409547],[102.17043582561358,22.464753119389304],[102.75489627483466,21.675137233969465],[103.20386111858645,20.766562201413745],[104.43500044150805,20.75873322192153],[104.8225736836971,19.886641750563882],[104.18338789267894,19.62466807706022],[103.8965320170267,19.265180975821806],[105.09459842328152,18.66697459561108],[105.92576216026403,17.48531545660896],[106.55600792849569,16.604283962464805],[107.3127059265456,15.90853831630318],[107.5645251811039,15.202173163305558],[107.38272749230109,14.202440904186972],[106.49637332563087,14.570583807834282],[106.04394616091552,13.881091009979954],[105.21877689007887,14.273211778210694]]]}},{"type":"Feature","properties":{"abbrev":"Leb.","name":"Lebanon","name_long":"Lebanon","iso_a2":"LB","iso_a3":"LBN","iso_n3":"422"},"geometry":{"type":"Polygon","coordinates":[[[35.82110070165024,33.2774264592763],[35.55279666519081,33.26427480725802],[35.460709262846706,33.08904002535628],[35.126052687324545,33.09090037691878],[35.48220665868013,33.90545014091944],[35.9795923194894,34.61005829521913],[35.99840254084364,34.644914048800004],[36.4481942075121,34.59393524834407],[36.61175011571589,34.201788641897174],[36.066460402172055,33.82491242119255],[35.82110070165024,33.2774264592763]]]}},{"type":"Feature","properties":{"abbrev":"Sri L.","name":"Sri Lanka","name_long":"Sri Lanka","iso_a2":"LK","iso_a3":"LKA","iso_n3":"144"},"geometry":{"type":"Polygon","coordinates":[[[81.7879590188914,7.523055324733164],[81.63732221876059,6.481775214051921],[81.21801964714433,6.197141424988288],[80.34835696810441,5.968369859232155],[79.87246870312853,6.76346344647493],[79.69516686393513,8.200843410673386],[80.14780073437964,9.824077663609557],[80.83881798698656,9.268426825391188],[81.30431928907177,8.56420624433369],[81.7879590188914,7.523055324733164]]]}},{"type":"Feature","properties":{"abbrev":"Myan.","name":"Myanmar","name_long":"Myanmar","iso_a2":"MM","iso_a3":"MMR","iso_n3":"104"},"geometry":{"type":"Polygon","coordinates":[[[99.54330936075931,20.186597601802063],[98.95967573445488,19.752980658440947],[98.25372399291561,19.708203029860044],[97.7977828308044,18.627080389881755],[97.37589643757354,18.445437730375815],[97.85912275593486,17.567946071843664],[98.49376102091135,16.83783559820793],[98.90334842325676,16.177824204976115],[98.53737592976572,15.308497422746084],[98.1920740091914,15.12370250087035],[98.43081912637987,14.622027696180835],[99.09775516153876,13.827502549693278],[99.21201175333609,13.269293728076464],[99.19635379435167,12.80474843998867],[99.58728600463972,11.892762762901697],[99.03812055867398,10.960545762572437],[98.55355065307305,9.932959906448545],[98.45717410684871,10.67526601810515],[98.76454552612077,11.441291612183749],[98.42833865762985,12.032986761925683],[98.50957400919268,13.122377631070677],[98.1036039571077,13.640459703012851],[97.77773237507517,14.837285874892642],[97.59707156778276,16.10056793869977],[97.1645398294998,16.928734442609336],[96.505768670643,16.42724050543285],[95.3693522481124,15.7143899601826],[94.80840457558412,15.80345429123764],[94.18880415240454,16.037936102762018],[94.53348595579135,17.277240301985728],[94.32481652219674,18.2135139022499],[93.54098839719364,19.36649262133002],[93.66325483599621,19.726961574781996],[93.07827762245219,19.855144965081976],[92.36855350135562,20.670883287025347],[92.30323449093868,21.47548533780982],[92.65225711463799,21.324047552978485],[92.67272098182556,22.041238918541254],[93.16612755734836,22.278459580977103],[93.06029422401463,22.70311066333557],[93.28632693885928,23.043658352139005],[93.3251876159428,24.078556423432204],[94.10674197792505,23.85074087167348],[94.55265791217164,24.675238348890332],[94.60324913938538,25.162495428970402],[95.1551534362626,26.001307277932085],[95.12476769407496,26.5735720891323],[96.41936567585097,27.264589341739224],[97.1339990580153,27.083773505149964],[97.0519885599681,27.69905894623315],[97.40256147663612,27.88253611908544],[97.32711388549004,28.26158274994634],[97.91198774616944,28.335945136014345],[98.2462309102333,27.74722138112918],[98.68269005737046,27.50881216075062],[98.71209394734451,26.743535874940264],[98.67183800658916,25.918702500913525],[97.72460900267914,25.083637193293],[97.60471967976198,23.897404690033042],[98.66026248575577,24.063286037689966],[98.89874922078276,23.14272207284253],[99.5319922220874,22.94903880461258],[99.24089887898725,22.11831431730458],[99.98348921102149,21.7429367131364],[100.41653771362738,21.558839423096614],[101.15003299357825,21.84998444262902],[101.18000532430754,21.436572984294024],[100.32910119018952,20.786121731036232],[100.11598758341783,20.417849636308187],[99.54330936075931,20.186597601802063]]]}},{"type":"Feature","properties":{"abbrev":"Mong.","name":"Mongolia","name_long":"Mongolia","iso_a2":"MN","iso_a3":"MNG","iso_n3":"496"},"geometry":{"type":"Polygon","coordinates":[[[87.7512642760767,49.29719798440548],[88.80556684769552,49.47052073831242],[90.71366743364067,50.33181183532109],[92.23471154171968,50.80217072204172],[93.10421919146269,50.49529022887643],[94.14756635943561,50.48053660745709],[94.81594933469873,50.01343333597085],[95.81402794798399,49.977466539095715],[97.25972781778141,49.72606069599574],[98.23176150919156,50.422400621128745],[97.8257397806743,51.01099518493318],[98.86149051310034,52.047366034546684],[99.98173221232354,51.63400625264399],[100.88948042196262,51.51685578063832],[102.06522260946733,51.259920559283124],[102.25590864462431,50.51056061461868],[103.67654544476022,50.089966132195116],[104.6215523620817,50.275329494826074],[105.88659142458675,50.406019192092224],[106.88880415245534,50.27429596618023],[107.86817589725094,49.793705145865815],[108.47516727095127,49.28254771585074],[109.40244917199666,49.29296051695755],[110.66201053267876,49.13012807880587],[111.58123091028662,49.37796824807769],[112.89773969935439,49.54356537535699],[114.36245649623527,50.24830272073741],[114.96210981655018,50.140247300815126],[115.48569542853141,49.805177313834605],[116.67880089728618,49.88853139912139],[116.19180219936757,49.134598090199106],[115.48528201707305,48.13538259540344],[115.74283735561578,47.72654450132629],[116.30895267137323,47.85341014260284],[117.29550744025741,47.69770905210743],[118.06414269416672,48.06673045510368],[118.86657433479495,47.74706004494617],[119.7728239278975,47.048058783550125],[119.66326989143874,46.69267995867892],[118.87432579963873,46.80541209572365],[117.42170128791419,46.67273285581426],[116.71786828009886,46.38820241961521],[115.98509647020008,45.727235012386004],[114.46033165899607,45.339816799493825],[113.46390669154417,44.80889313412711],[112.43606245325881,45.01164561622429],[111.87330610560029,45.10207937273506],[111.34837690637946,44.45744171811009],[111.66773725794323,44.07317576758771],[111.82958784388137,43.743118394539515],[111.12968224492022,43.40683401140015],[110.41210330611528,42.87123362891103],[109.24359581913146,42.5194463160841],[107.74477257693795,42.48151581478187],[106.12931562706169,42.13432770442891],[104.96499393109347,41.59740957291635],[104.52228193564899,41.908346666016556],[103.31227827353482,41.9074681666676],[101.83304039917994,42.51487295182628],[100.84586551310827,42.66380442969145],[99.51581749878004,42.52469147396172],[97.45175744017801,42.74888967546002],[96.34939578652781,42.725635280928685],[95.76245486855669,43.319449164394605],[95.30687544147153,44.24133087826547],[94.68892866412533,44.352331854828414],[93.4807336771413,44.975472113619965],[92.13389082231822,45.11507599545646],[90.9455395853343,45.28607330991028],[90.58576826371828,45.71971609148753],[90.97080936072501,46.88814606382293],[90.28082563676392,47.69354909930793],[88.85429772334676,48.06908173277296],[88.01383222855173,48.599462795600616],[87.7512642760767,49.29719798440548]]]}},{"type":"Feature","properties":{"abbrev":"Malay.","name":"Malaysia","name_long":"Malaysia","iso_a2":"MY","iso_a3":"MYS","iso_n3":"458"},"geometry":{"type":"MultiPolygon","coordinates":[[[[101.07551557821333,6.204867051615892],[101.15421878459384,5.691384182147715],[101.81428185425804,5.810808417174228],[102.14118696493645,6.221636053894656],[102.37114708863524,6.12820506431096],[102.9617053568667,5.524495144061078],[103.38121463421217,4.855001125503748],[103.4385754740562,4.181605536308382],[103.33212202353488,3.726697902842971],[103.42942874554055,3.38286876058902],[103.50244754436889,2.791018581550205],[103.85467410687036,2.515454006353763],[104.24793175661151,1.631141058759056],[104.22881147666354,1.293048000489534],[103.51970747275443,1.226333726400682],[102.57361535035479,1.967115383304744],[101.39063846232918,2.760813706875624],[101.27353966675585,3.270291652841181],[100.6954354187067,3.93913971599487],[100.55740766805509,4.76728038168828],[100.19670617065773,5.31249258058368],[100.30626020711652,6.040561835143876],[100.08575687052709,6.46448944745029],[100.25959638875692,6.642824815289572],[101.07551557821333,6.204867051615892]]],[[[118.61832075406485,4.478202419447541],[117.88203494677019,4.137551377779488],[117.01521447150637,4.306094061699469],[115.86551720587677,4.306559149590157],[115.51907840379201,3.169238389494396],[115.13403730678523,2.821481838386219],[114.6213554220175,1.430688177898887],[113.80584964401956,1.217548732911041],[112.8598091980522,1.497790025229946],[112.38025190638368,1.410120957846758],[111.79754845586044,0.904441229654651],[111.15913781132659,0.976478176269509],[110.51406090702713,0.773131415200993],[109.83022667850886,1.338135687664192],[109.66326012577375,2.006466986494985],[110.39613528853707,1.663774725751395],[111.1688529805975,1.850636704918784],[111.3700810079421,2.697303371588873],[111.79692833867287,2.885896511238073],[112.99561486211527,3.102394924324869],[113.71293541875873,3.893509426281128],[114.20401655482843,4.52587392823682],[114.65959598191355,4.00763682699781],[114.8695573263154,4.348313706881952],[115.34746097215069,4.316636053887009],[115.40570031134362,4.955227565933825],[115.45071048386981,5.447729803891561],[116.22074100145099,6.143191229675621],[116.72510298061978,6.924771429873998],[117.12962609260049,6.928052883324567],[117.64339318244633,6.422166449403306],[117.68907514859237,5.987490139180181],[118.3476912781522,5.708695786965464],[119.18190392463994,5.407835598162251],[119.11069380094172,5.016128241389865],[118.43972700406411,4.96651886638962],[118.61832075406485,4.478202419447541]]]]}},{"type":"Feature","properties":{"abbrev":"Nepal","name":"Nepal","name_long":"Nepal","iso_a2":"NP","iso_a3":"NPL","iso_n3":"524"},"geometry":{"type":"Polygon","coordinates":[[[88.12044070836987,27.876541652939594],[88.04313276566123,27.445818589786825],[88.17480431514092,26.81040517832595],[88.06023766474982,26.41461538340249],[87.22747195836628,26.397898057556077],[86.02439293817918,26.63098460540857],[85.25177859898338,26.72619843190634],[84.6750179381738,27.234901231387536],[83.30424889519955,27.36450572357556],[81.99998742058497,27.925479234319994],[81.05720258985203,28.416095282499043],[80.08842451367627,28.79447011974014],[80.4767212259174,29.72986522065534],[81.11125613802932,30.183480943313402],[81.52580447787474,30.42271698660863],[82.32751264845088,30.115268052688133],[83.33711510613719,29.463731594352193],[83.89899295444673,29.320226141877658],[84.23457970575015,28.839893703724698],[85.01163821812304,28.642773952747344],[85.82331994013151,28.203575954698703],[86.9545170430006,27.974261786403517],[88.12044070836987,27.876541652939594]]]}},{"type":"Feature","properties":{"abbrev":"Oman","name":"Oman","name_long":"Oman","iso_a2":"OM","iso_a3":"OMN","iso_n3":"512"},"geometry":{"type":"MultiPolygon","coordinates":[[[[58.86114139184659,21.114034532144302],[58.48798587426696,20.42898590746711],[58.034318475176605,20.48143748624335],[57.82637251163411,20.24300242764863],[57.665762160070955,19.736004950433113],[57.788700392493375,19.06757029873765],[57.69439090356068,18.944709580963803],[57.234263950433814,18.947991034414258],[56.609650913321985,18.57426707607948],[56.512189162019496,18.087113348863937],[56.28352094912801,17.87606679938395],[55.6614917336307,17.88412832282154],[55.2699394061552,17.632309068263197],[55.274900343655105,17.228354397037663],[54.79100223167413,16.950696926333364],[54.239252964093765,17.044980577049984],[53.570508253804604,16.707662665264678],[53.10857262554751,16.65105113368898],[52.78218427919207,17.349742336491232],[52.00000980002224,19.000003363516072],[54.99998172386242,19.99999400479612],[55.66665937685988,22.00000112557231],[55.2083410988632,22.70832998299701],[55.234489373602884,23.11099274341535],[55.5258410988645,23.524869289640918],[55.52863162620829,23.933604030853502],[55.98121382022052,24.130542914317854],[55.80411868675625,24.269604193615294],[55.886232537668064,24.920830593357493],[56.396847365144,24.924732163995515],[56.84514041527606,24.241673081961494],[57.40345258975744,23.87859446867884],[58.13694786970834,23.74793060962884],[58.72921146020544,23.565667832935418],[59.18050174341036,22.99239533130546],[59.45009769067703,22.6602709009656],[59.80806033716286,22.533611965418203],[59.8061483091681,22.31052480721419],[59.44219119653641,21.714540513592084],[59.282407667889885,21.433885809814882],[58.86114139184659,21.114034532144302]]],[[[56.39142133975341,25.89599070892126],[56.26104170108093,25.71460643157675],[56.07082075381456,26.05546417897395],[56.36201744977936,26.395934353128947],[56.48567915225382,26.309117946878672],[56.39142133975341,25.89599070892126]]]]}},{"type":"Feature","properties":{"abbrev":"Pak.","name":"Pakistan","name_long":"Pakistan","iso_a2":"PK","iso_a3":"PAK","iso_n3":"586"},"geometry":{"type":"Polygon","coordinates":[[[75.15802778514092,37.13303091078912],[75.89689741405013,36.666806138651836],[76.19284834178569,35.89840342868782],[77.83745079947457,35.494009507787766],[76.87172163280403,34.65354401299274],[75.75706098826834,34.50492259372132],[74.24020267120497,34.74888703057125],[73.74994835805195,34.31769887952785],[74.10429365427734,33.44147329358685],[74.45155927927871,32.7648996038055],[75.25864179881322,32.2711054550405],[74.40592898956501,31.69263947196528],[74.42138024282026,30.979814764931177],[73.45063846221743,29.97641347911987],[72.8237516620847,28.961591701772054],[71.77766564320032,27.913180243434525],[70.61649620960193,27.989196275335868],[69.51439293811312,26.940965684511372],[70.16892662952202,26.491871649678842],[70.28287316272558,25.72222870533983],[70.84469933460284,25.21510203704352],[71.04324018746823,24.3565239527302],[68.84259931831878,24.35913361256094],[68.1766451353734,23.69196503345671],[67.44366661974547,23.94484365487699],[67.14544192898907,24.663611151624647],[66.37282758979326,25.425140896093847],[64.53040774929113,25.23703868255143],[62.9057007180346,25.21840932871021],[61.49736290878419,25.0782370061185],[61.87418745305655,26.239974880472104],[63.31663170761959,26.756532497661667],[63.233897739520295,27.21704702403071],[62.755425652929866,27.378923448184985],[62.72783043808598,28.25964488373539],[61.77186811711863,28.699333807890795],[61.36930870956494,29.303276272085924],[60.874248488208785,29.829238999952604],[62.54985680527278,29.31857249604431],[63.55026085801117,29.468330796826162],[64.14800215033125,29.340819200145972],[64.35041873561852,29.560030625928093],[65.0468620136161,29.472180691031905],[66.34647260932442,29.887943427036177],[66.38145755398602,30.73889923758645],[66.93889122911847,31.304911200479353],[67.68339358914747,31.30315420178142],[67.79268924344478,31.58293040620963],[68.55693200060932,31.713310044882018],[68.92667687365767,31.620189113892064],[69.31776411324255,31.90141225842444],[69.26252200712256,32.5019440780883],[69.68714725126485,33.105498969041236],[70.3235941913716,33.35853261975839],[69.9305432473596,34.02012014417511],[70.8818030129884,33.98885590263851],[71.15677330921346,34.34891144463215],[71.11501875192162,34.733125718722235],[71.6130762063507,35.153203436822864],[71.49876793812109,35.650563259416],[71.26234826038575,36.074387518857804],[71.84629194528392,36.50994232842986],[72.92002485544447,36.72000702569632],[74.06755171091783,36.83617564548845],[74.57589277537298,37.02084137628346],[75.15802778514092,37.13303091078912]]]}},{"type":"Feature","properties":{"abbrev":"Phil.","name":"Philippines","name_long":"Philippines","iso_a2":"PH","iso_a3":"PHL","iso_n3":"608"},"geometry":{"type":"MultiPolygon","coordinates":[[[[126.37681359263748,8.414706325713354],[126.4785128113879,7.750354112168978],[126.53742394420063,7.189380601424574],[126.19677290253256,6.27429433840004],[125.83142052622911,7.293715318221857],[125.3638521668523,6.786485297060992],[125.68316084198372,6.049656887227258],[125.39651167206064,5.58100332277229],[124.21978763234236,6.161355495626182],[123.93871951710695,6.885135606306122],[124.24366214406135,7.360610459823661],[123.61021243702757,7.833527329942754],[123.2960714051252,7.418875637232787],[122.82550581267542,7.457374579290217],[122.08549930225577,6.899424139834849],[121.91992801319263,7.192119452336072],[122.31235884001714,8.034962063016508],[122.94239790251966,8.316236883981174],[123.48768761606352,8.693009751821194],[123.84115441293984,8.240324204944386],[124.60146976125023,8.514157619659017],[124.76461225799564,8.96040945071546],[125.47139082245157,8.986996975129642],[125.41211795461278,9.760334784377548],[126.22271447154318,9.28607432701885],[126.3066369975851,8.782487494334575],[126.37681359263748,8.414706325713354]]],[[[123.98243777882583,10.278778591345812],[123.62318322153278,9.950090643753299],[123.30992068897936,9.318268744336676],[122.99588300994164,9.0221886255204],[122.38005496631948,9.713360907424203],[122.5860889018671,9.981044826696104],[122.83708133350873,10.261156927934238],[122.94741051645192,10.881868394408029],[123.49884972543848,10.940624497923949],[123.33777428598475,10.267383938025446],[124.07793582570125,11.23272553145371],[123.98243777882583,10.278778591345812]]],[[[118.50458092659035,9.31638255455809],[117.1742745301007,8.367499904814665],[117.66447716682138,9.066888739452935],[118.38691369026175,9.684499619989225],[118.98734215706108,10.376292019080509],[119.51149620979756,11.369668077027214],[119.68967654833992,10.554291490109875],[119.029458449379,10.003653265823871],[118.50458092659035,9.31638255455809]]],[[[121.88354780485913,11.89175507247198],[122.48382124236147,11.582187404827508],[123.12021650603597,11.58366018314787],[123.10083784392647,11.16593374271649],[122.6377136577267,10.741308498574227],[122.00261030485957,10.441016750526087],[121.96736697803655,10.905691229694623],[122.03837039600555,11.41584096928004],[121.88354780485913,11.89175507247198]]],[[[125.50255171112352,12.162694606978349],[125.78346479706218,11.046121934447768],[125.01188398651229,11.31145457605038],[125.03276126515814,10.975816148314706],[125.27744917206027,10.358722032101312],[124.80181928924573,10.134678859899893],[124.76016808481849,10.837995103392302],[124.45910119028606,10.889929917845635],[124.30252160044172,11.495370998577227],[124.8910128113816,11.415582587118593],[124.87799035044398,11.79418996830499],[124.26676150929572,12.557760931849685],[125.22711632700785,12.535720933477194],[125.50255171112352,12.162694606978349]]],[[[121.52739383350351,13.06959015548452],[121.26219038298157,12.205560207564403],[120.83389611214656,12.70449616134242],[120.3234363139675,13.46641347905387],[121.18012820850217,13.429697373910443],[121.52739383350351,13.06959015548452]]],[[[121.32130822152358,18.504064642811016],[121.9376013530364,18.218552354398383],[122.24600630095429,18.478949896717097],[122.336956821788,18.224882717354177],[122.1742794129332,17.810282701076375],[122.51565392465336,17.093504746971973],[122.2523108256939,16.262444362854126],[121.66278608610828,15.931017564350128],[121.5050696147534,15.124813544164622],[121.72882856657728,14.328376369682246],[122.25892540902734,14.218202216035976],[122.70127566944566,14.33654124598442],[123.95029503794026,13.78213064214107],[123.85510704965863,13.237771104378467],[124.1812886902849,12.997527370653472],[124.07741906137825,12.536676947474575],[123.29803510955227,13.027525539598981],[122.92865197152993,13.552919826710408],[122.67135501514869,13.185836289925135],[122.03464969288055,13.784481919810347],[121.1263847189186,13.63668732345556],[120.62863732308331,13.857655747935652],[120.67938357959385,14.271015529838323],[120.99181928923055,14.525392767795083],[120.69333621631272,14.756670640517285],[120.564145135583,14.396279201713822],[120.0704285014664,14.970869452367097],[119.92092858284613,15.406346747290739],[119.88377322802826,16.363704331929966],[120.28648766487882,16.03462881109533],[120.39004723519176,17.59908112229951],[120.71586714079191,18.50522736253754],[121.32130822152358,18.504064642811016]]]]}},{"type":"Feature","properties":{"abbrev":"N.K.","name":"Dem. Rep. Korea","name_long":"Dem. Rep. Korea","iso_a2":"KP","iso_a3":"PRK","iso_n3":"408"},"geometry":{"type":"Polygon","coordinates":[[[130.6400159038524,42.39500946712528],[130.78000735893113,42.22000722916885],[130.40003055228902,42.28000356705971],[129.96594852103726,41.94136790625105],[129.66736209525482,41.60110443782523],[129.70518924369247,40.88282786718433],[129.18811486218,40.66180776627199],[129.01039961152821,40.485436102859815],[128.63336836152672,40.18984691015031],[127.96741417858135,40.02541250259756],[127.53343550019417,39.7568500839767],[127.5021195822253,39.32393077245153],[127.38543419811029,39.213472398427655],[127.78334272675772,39.05089834243742],[128.34971642467661,38.61224294692785],[128.20574588431145,38.37039724380189],[127.780035435091,38.30453563084589],[127.07330854706737,38.2561148137884],[126.68371992401892,37.80477285415118],[126.23733890188176,37.84037791600028],[126.17475874237624,37.74968577732804],[125.6891036316972,37.940010077459014],[125.56843916229569,37.75208873142962],[125.2753304383362,37.669070542952724],[125.24008711151315,37.85722443292744],[124.98103315643398,37.94882090916478],[124.71216067921938,38.10834605564979],[124.98599409393398,38.54847422947968],[125.2219486837787,38.66585724543067],[125.13285851450752,38.84855927179859],[125.3865897970606,39.387957872061165],[125.3211157573468,39.5513845891842],[124.7374821310424,39.66034434667162],[124.26562462778531,39.928493353834156],[125.07994184784063,40.56982371679245],[126.18204511932943,41.10733612727637],[126.86908328664985,41.81656932226619],[127.34378299368302,41.50315176041597],[128.20843305879066,41.46677155208249],[128.0522152039723,41.99428457291795],[129.59666873587952,42.42498179785456],[129.99426720593323,42.985386867843786],[130.6400159038524,42.39500946712528]]]}},{"type":"Feature","properties":{"abbrev":"Pal.","name":"Palestine","name_long":"Palestine","iso_a2":"PS","iso_a3":"PSE","iso_n3":"275"},"geometry":{"type":"Polygon","coordinates":[[[35.54566531753454,32.393992011030576],[35.5452519060762,31.78250478772084],[35.397560662586045,31.48908600516758],[34.92740848159457,31.353435370401414],[34.970506626125996,31.616778469360806],[35.22589155451242,31.754341132121766],[34.97464074070933,31.86658234305972],[35.183930291491436,32.53251068778894],[35.54566531753454,32.393992011030576]]]}},{"type":"Feature","properties":{"abbrev":"Qatar","name":"Qatar","name_long":"Qatar","iso_a2":"QA","iso_a3":"QAT","iso_n3":"634"},"geometry":{"type":"Polygon","coordinates":[[[50.81010827006958,24.754742539971378],[50.74391076030369,25.482424221289396],[51.01335167827349,26.00699168548419],[51.28646162293606,26.11458201751587],[51.58907881043726,25.80111277923338],[51.60670047384881,25.21567047779874],[51.38960778179063,24.62738597258806],[51.11241539897702,24.556330878186724],[50.81010827006958,24.754742539971378]]]}},{"type":"Feature","properties":{"abbrev":"Syria","name":"Syria","name_long":"Syria","iso_a2":"SY","iso_a3":"SYR","iso_n3":"760"},"geometry":{"type":"Polygon","coordinates":[[[38.792340529136084,33.378686428352225],[36.834062127435544,32.312937526980775],[35.71991824722275,32.709192409794866],[35.700797967274745,32.71601369885738],[35.836396925608625,32.86812327730851],[35.82110070165024,33.2774264592763],[36.066460402172055,33.82491242119255],[36.61175011571589,34.201788641897174],[36.4481942075121,34.59393524834407],[35.99840254084364,34.644914048800004],[35.905023227692226,35.410009467097325],[36.149762811026534,35.82153473565367],[36.417550083163036,36.04061697035506],[36.6853890317318,36.25969920505646],[36.7394942563414,36.81752045343109],[37.06676110204583,36.62303620050062],[38.1677274920242,36.90121043552777],[38.6998913917659,36.71292735447234],[39.52258019385255,36.71605377862599],[40.67325931169569,37.09127635349729],[41.21208947120305,37.074352321921694],[42.34959109881177,37.2298725449041],[41.83706424334096,36.605853786763575],[41.289707472505455,36.35881460219227],[41.383965285005814,35.628316555314356],[41.006158888519934,34.41937226006212],[38.792340529136084,33.378686428352225]]]}},{"type":"Feature","properties":{"abbrev":"Saud.","name":"Saudi Arabia","name_long":"Saudi Arabia","iso_a2":"SA","iso_a3":"SAU","iso_n3":"682"},"geometry":{"type":"Polygon","coordinates":[[[42.77933230975097,16.347891343648683],[42.649572788266084,16.774635321514964],[42.347989129410706,17.075805568912003],[42.270887892431226,17.474721787989125],[41.75438195167396,17.833046169500975],[41.22139122901558,18.671599636301206],[40.93934126156654,19.486485297111756],[40.247652215339826,20.17463450772649],[39.80168460466095,20.338862209550054],[39.139399448408284,21.29190481209293],[39.023695916506796,21.986875311770195],[39.06632897314759,22.57965566659027],[38.49277225114008,23.688451036060854],[38.02386030452362,24.07868561451293],[37.483634881344386,24.285494696545015],[37.154817742671185,24.85848297779731],[37.209491408036,25.084541530858104],[36.93162723160259,25.602959499610176],[36.63960371272122,25.82622752532722],[36.249136590323815,26.57013560638488],[35.64018151219639,27.37652049408342],[35.13018680190788,28.06335195567472],[34.63233605320798,28.058546047471566],[34.787778761541944,28.6074272730597],[34.832220493312946,28.957483425404845],[34.95603722508426,29.35655467377884],[36.06894087092206,29.197494615184457],[36.50121422704358,29.5052536076987],[36.74052778498725,29.86528331147619],[37.503581984209035,30.003776150018403],[37.66811974462638,30.3386652694859],[37.998848911294374,30.50849986421313],[37.00216556168101,31.508412990844743],[39.00488569515255,32.01021698661498],[39.19546837744497,32.16100881604267],[40.399994337736246,31.889991766887935],[41.889980910007836,31.190008653278365],[44.70949873228474,29.178891099559383],[46.568713413281756,29.09902517345229],[47.45982181172283,29.002519436147224],[47.708850538937384,28.526062730416143],[48.416094191283946,28.55200429942667],[48.80759484232718,27.689627997339883],[49.29955447774582,27.46121816660981],[49.470913527225655,27.10999929453808],[50.15242231629088,26.689663194275997],[50.212935418504685,26.277026882425375],[50.11330325704594,25.943972276304248],[50.239858839728754,25.608049628190926],[50.52738650900073,25.3278083358721],[50.66055667501689,24.99989553476402],[50.81010827006958,24.754742539971378],[51.11241539897702,24.556330878186724],[51.38960778179063,24.62738597258806],[51.57951867046327,24.245497137951105],[51.61770755392698,24.014219265228828],[52.000733270074335,23.00115448657894],[55.0068030129249,22.496947536707136],[55.20834109886319,22.708329982997046],[55.666659376859826,22.00000112557234],[54.99998172386236,19.999994004796108],[52.00000980002224,19.000003363516058],[49.11667158386487,18.616667588774945],[48.18334354024134,18.166669216377315],[47.46669477721763,17.116681626854884],[47.000004917189756,16.949999294497445],[46.74999433776165,17.283338120996177],[46.366658563020536,17.233315334537636],[45.39999922056875,17.333335069238558],[45.21665123879718,17.43332896572333],[44.06261315285508,17.410358791569593],[43.79151858905192,17.31997671149111],[43.380794305196105,17.57998668056767],[43.11579756040335,17.088440456607373],[43.21837527850275,16.66688996018641],[42.77933230975097,16.347891343648683]]]}},{"type":"Feature","properties":{"abbrev":"B.H","name":"Bahrain","name_long":"Kingdom of Bahrain","iso_a2":"BH","iso_a3":"BHR","iso_n3":"48"},"geometry":{"type":"Polygon","coordinates":[[[50.441498315672,26.079486759594],[50.444990826448,26.155368387131],[50.494398435257,26.240297244012],[50.565645056344,26.252673936522],[50.58600454793,26.247660903832],[50.628002395199,25.943018578555],[50.610418895937,25.857704991003],[50.5840692813,25.815491188858],[50.508839915777,25.868375997347],[50.459210656002,25.954651764437],[50.441498315672,26.079486759594]]]}},{"type":"Feature","properties":{"abbrev":"Thai.","name":"Thailand","name_long":"Thailand","iso_a2":"TH","iso_a3":"THA","iso_n3":"764"},"geometry":{"type":"Polygon","coordinates":[[[102.5849324890267,12.186594956913282],[101.68715783081996,12.645740057826572],[100.83180952352487,12.627084865769206],[100.9784672383692,13.412721665902566],[100.0977974792511,13.406856390837433],[100.01873253784456,12.307001044153354],[99.47892052612363,10.846366685423547],[99.15377241414316,9.963061428258554],[99.22239871622676,9.239255479362427],[99.87383182169813,9.20786204674512],[100.27964684448622,8.295152899606052],[100.45927412313276,7.429572658717177],[101.01732791545273,6.856868597842478],[101.62307905477806,6.74062246340192],[102.14118696493638,6.221636053894628],[101.81428185425798,5.810808417174242],[101.15421878459387,5.691384182147715],[101.07551557821336,6.204867051615921],[100.25959638875696,6.642824815289543],[100.0857568705271,6.46448944745029],[99.69069054565574,6.848212795433597],[99.51964155476963,7.34345388430276],[98.9882528015123,7.907993068875327],[98.503786248776,8.382305202666288],[98.339661899817,7.794511623562386],[98.15000939330581,8.350007432483878],[98.25915001830624,8.973922837759801],[98.55355065307305,9.932959906448545],[99.03812055867398,10.960545762572437],[99.58728600463972,11.892762762901697],[99.19635379435167,12.80474843998867],[99.21201175333609,13.269293728076464],[99.09775516153876,13.827502549693278],[98.43081912637987,14.622027696180835],[98.1920740091914,15.12370250087035],[98.53737592976572,15.308497422746084],[98.90334842325676,16.177824204976115],[98.49376102091135,16.83783559820793],[97.85912275593486,17.567946071843664],[97.37589643757354,18.445437730375815],[97.7977828308044,18.627080389881755],[98.25372399291561,19.708203029860044],[98.95967573445488,19.752980658440947],[99.54330936075931,20.186597601802063],[100.11598758341783,20.417849636308187],[100.54888105672688,20.109237982661128],[100.60629357300316,19.508344427971224],[101.2820146016517,19.462584947176765],[101.03593143107777,18.408928330961615],[101.05954756063517,17.51249725999449],[102.11359175009248,18.109101670804165],[102.41300499879162,17.932781683824288],[102.9987056823877,17.9616946476916],[103.20019209189373,18.309632066312773],[103.95647667848529,18.24095408779688],[104.7169470560925,17.42885895433008],[104.7793205098688,16.44186493577145],[105.58903852745016,15.570316066952858],[105.54433841351769,14.723933620660416],[105.21877689007887,14.273211778210694],[104.28141808473661,14.416743068901367],[102.98842207236163,14.225721136934467],[102.348099399833,13.394247341358223],[102.5849324890267,12.186594956913282]]]}},{"type":"Feature","properties":{"abbrev":"Tjk.","name":"Tajikistan","name_long":"Tajikistan","iso_a2":"TJ","iso_a3":"TJK","iso_n3":"762"},"geometry":{"type":"Polygon","coordinates":[[[71.01419803252017,40.24436554621823],[70.64801883329997,39.93575389257117],[69.55960981636852,40.10321137141298],[69.46488691597753,39.5266832545487],[70.54916181832562,39.6041979029865],[71.784693637992,39.27946320246437],[73.6753792662548,39.4312368841056],[73.92885216664644,38.50581533462274],[74.25751427602273,38.60650686294345],[74.86481570831681,38.3788463404816],[74.8299857929521,37.9900070257014],[74.98000247589542,37.419990139305895],[73.9486959166465,37.4215662704908],[73.26005577992501,37.495256862939],[72.63688968291729,37.047558091778356],[72.1930408059624,36.948287665345674],[71.8446382994506,36.73817129164692],[71.44869347523024,37.06564484308051],[71.54191775908478,37.905774441065645],[71.23940392444817,37.95326508234188],[71.34813113799026,38.258905341132156],[70.80682050973289,38.486281643216415],[70.3763041523093,38.13839590102752],[70.27057417184014,37.735164699854025],[70.11657840361033,37.58822276463209],[69.51878543485796,37.60899669041341],[69.19627282092438,37.15114350030743],[68.85944583524594,37.344335842430596],[68.13556237170138,37.0231151393043],[67.82999962755952,37.14499400486468],[68.39203250516596,38.157025254868735],[68.17602501818592,38.901553453113905],[67.44221967964131,39.140143541005486],[67.70142866401736,39.58047842056453],[68.53641645698941,39.53345286717894],[69.0116329283455,40.08615814875666],[69.32949466337283,40.72782440852485],[70.66662234892505,40.96021332454141],[70.45815962105962,40.49649485937029],[70.60140669137269,40.21852733007229],[71.01419803252017,40.24436554621823]]]}},{"type":"Feature","properties":{"abbrev":"Turkm.","name":"Turkmenistan","name_long":"Turkmenistan","iso_a2":"TM","iso_a3":"TKM","iso_n3":"795"},"geometry":{"type":"Polygon","coordinates":[[[61.21081709172574,35.650072333309225],[61.123070509694145,36.49159719496624],[60.37763797388387,36.52738312432837],[59.23476199731681,37.412987982730336],[58.4361544126782,37.522309475243794],[57.33043379092898,38.02922943781094],[56.61936608259282,38.121394354803485],[56.18037479027333,37.93512665460742],[55.51157840355191,37.96411713312317],[54.800303989486565,37.392420762678185],[53.92159793479556,37.19891836196126],[53.73551110211252,37.90613617609169],[53.880928582581845,38.95209300389536],[53.101027866432894,39.29057363540713],[53.35780805849123,39.97528636327445],[52.69397260926982,40.03362905533197],[52.915251092343624,40.87652334244473],[53.858139275941134,40.63103445084218],[54.73684533063215,40.95101491959346],[54.008310988181314,41.55121084244742],[53.72171349469059,42.12319143327003],[52.916749708880076,41.86811656347733],[52.81468875510361,41.13537059179471],[52.50245975119615,41.78331553808637],[52.944293247291654,42.11603424739759],[54.07941775901495,42.32410940202083],[54.75534549339263,42.043971462566574],[55.45525109235377,41.25985911718584],[55.96819135928291,41.30864166926936],[57.0963912290791,41.32231008561057],[56.932215203687804,41.826026109375604],[57.78652998233708,42.17055288346552],[58.62901085799146,42.75155101172305],[59.97642215356978,42.22308197689021],[60.08334069198167,41.425146185871405],[60.46595299667069,41.22032664648255],[61.54717898951356,41.266370347654615],[61.88271406438469,41.084856879229406],[62.374260288345,40.05388621679039],[63.51801476426103,39.36325653742564],[64.17022301621677,38.892406724598246],[65.2159989765074,38.40269501398429],[66.54615034370022,37.97468496352687],[66.51860680528867,37.36278432875879],[66.21738488145932,37.39379018813392],[65.74563073106681,37.66116404881207],[65.58894778835784,37.30521678318564],[64.7461051776774,37.111817735333304],[64.5464791197339,36.31207326918427],[63.9828959491587,36.0079574651466],[63.19353844590035,35.857165635718914],[62.9846623065766,35.40404083916762],[62.230651483005886,35.270663967422294],[61.21081709172574,35.650072333309225]]]}},{"type":"Feature","properties":{"abbrev":"T.L.","name":"Timor-Leste","name_long":"Timor-Leste","iso_a2":"TL","iso_a3":"TLS","iso_n3":"626"},"geometry":{"type":"Polygon","coordinates":[[[124.96868248911622,-8.892790215697083],[125.08624637258026,-8.65688730228468],[125.94707238169826,-8.432094821815035],[126.64470421763855,-8.398246758663852],[126.95724328013982,-8.273344821814398],[127.33592817597464,-8.397316582882603],[126.96799197805655,-8.668256117388893],[125.9258850444586,-9.106007175333351],[125.08852013560109,-9.393173109579294],[125.07001997284061,-9.089987481322872],[124.96868248911622,-8.892790215697083]]]}},{"type":"Feature","properties":{"abbrev":"Tur.","name":"Turkey","name_long":"Turkey","iso_a2":"TR","iso_a3":"TUR","iso_n3":"792"},"geometry":{"type":"MultiPolygon","coordinates":[[[[36.91312706884215,41.335358384764305],[38.34766482926452,40.94858612727572],[39.51260664242025,41.102762763018575],[40.373432651538245,41.01367259374734],[41.554084100110714,41.53565623632761],[42.619548781104555,41.58317271581993],[43.58274580259271,41.09214325618257],[43.7526579119685,40.74020091405882],[43.65643639504096,40.25356395116617],[44.400008579288766,40.00500031184231],[44.793989699082005,39.713002631177034],[44.109225294782355,39.428136298168056],[44.4214026222576,38.28128123631453],[44.22575564960053,37.97158437758935],[44.77269900897775,37.17044464776845],[44.29345177590286,37.00151439060635],[43.94225874204736,37.256227525372935],[42.77912560402186,37.38526357680581],[42.34959109881177,37.22987254490411],[41.21208947120303,37.07435232192173],[40.673259311695716,37.09127635349736],[39.52258019385252,36.71605377862602],[38.69989139176593,36.71292735447233],[38.16772749202416,36.90121043552779],[37.06676110204583,36.62303620050062],[36.739494256341374,36.817520453431115],[36.68538903173183,36.259699205056506],[36.41755008316309,36.0406169703551],[36.14976281102659,35.82153473565367],[35.782084995269855,36.274995429014915],[36.160821567537056,36.650605577128374],[35.55093631362834,36.56544281671134],[34.714553256984374,36.795532131490916],[34.02689497247647,36.21996002862397],[32.5091581560641,36.1075637883892],[31.699595167779567,36.64427521417261],[30.62162479017107,36.677864895162315],[30.39109622571712,36.26298065850698],[29.699975620245567,36.144357408181],[28.73290286633539,36.67683136651644],[27.64118655773737,36.658822129862756],[27.048767937943296,37.65336090753601],[26.318218214633045,38.208133246405396],[26.804700148228733,38.98576019953356],[26.17078535330438,39.463612168936464],[27.280019972449395,40.42001373957831],[28.819977654747216,40.46001129817221],[29.24000369641558,41.21999074967269],[31.145933872204434,41.08762156835706],[32.34797936374579,41.73626414648464],[33.51328291192752,42.018960069337304],[35.16770389175187,42.04022492122544],[36.91312706884215,41.335358384764305]]],[[[27.192376743282406,40.690565700842455],[26.35800906749779,40.15199392349649],[26.04335127127254,40.61775360774317],[26.056942172965336,40.82412344010075],[26.29460208507569,40.93626129817417],[26.604195590936282,41.56211456966102],[26.117041863720825,41.82690460872456],[27.135739373490505,42.14148489030131],[27.996720411905414,42.00735871028777],[28.115524529744444,41.622886054036286],[28.988442824018787,41.29993419042819],[28.80643842948675,41.05496206314854],[27.61901736828412,40.99982330989312],[27.192376743282406,40.690565700842455]]]]}},{"type":"Feature","properties":{"abbrev":"Taiwan","name":"Taiwan","name_long":"Taiwan","iso_a2":"TW","iso_a3":"TWN","iso_n3":"158"},"geometry":{"type":"Polygon","coordinates":[[[121.77781782438993,24.3942735865194],[121.17563235889274,22.790857245367167],[120.74707970589621,21.970571397382113],[120.22008344938367,22.81486094816674],[120.1061885926124,23.556262722258236],[120.69467980355225,24.538450832613737],[121.49504438688876,25.295458889257386],[121.95124393116144,24.997595933527034],[121.77781782438993,24.3942735865194]]]}},{"type":"Feature","properties":{"abbrev":"Viet.","name":"Vietnam","name_long":"Vietnam","iso_a2":"VN","iso_a3":"VNM","iso_n3":"704"},"geometry":{"type":"Polygon","coordinates":[[[108.05018029178294,21.55237986906012],[106.7150679870901,20.69685069425202],[105.88168216351903,19.752050482659698],[105.66200564984631,19.05816518806057],[106.426816847766,18.004120998603227],[107.36195356651974,16.69745656988705],[108.26949507042963,16.07974233648615],[108.87710656131748,15.27669057867044],[109.33526981001721,13.426028347217722],[109.20013593957398,11.666859239137764],[108.36612999881545,11.008320624226272],[107.22092858279524,10.364483954301832],[106.40511274620343,9.53083974856932],[105.15826378786511,8.599759629750494],[104.79518517458237,9.241038316276502],[105.0762016133856,9.918490505406808],[104.33433475140347,10.48654368737523],[105.19991499229235,10.889309800658097],[106.24967003786946,10.961811835163587],[105.81052371625313,11.567614650921227],[107.49140302941089,12.337205918827946],[107.61454796756243,13.535530707244206],[107.38272749230109,14.202440904186972],[107.5645251811039,15.202173163305558],[107.3127059265456,15.90853831630318],[106.55600792849569,16.604283962464805],[105.92576216026403,17.48531545660896],[105.09459842328152,18.66697459561108],[103.8965320170267,19.265180975821806],[104.18338789267894,19.62466807706022],[104.8225736836971,19.886641750563882],[104.43500044150805,20.75873322192153],[103.20386111858645,20.766562201413745],[102.75489627483466,21.675137233969465],[102.17043582561358,22.464753119389304],[102.7069922221001,22.708795070887675],[103.50451460166056,22.70375661873921],[104.47685835166448,22.819150092046968],[105.32920942588663,23.352063300056912],[105.81124718630521,22.976892401617903],[106.72540327354845,22.79426788989842],[106.56727339073532,22.21820486092477],[107.04342003787262,21.811898912029914],[108.05018029178294,21.55237986906012]]]}},{"type":"Feature","properties":{"abbrev":"Uzb.","name":"Uzbekistan","name_long":"Uzbekistan","iso_a2":"UZ","iso_a3":"UZB","iso_n3":"860"},"geometry":{"type":"Polygon","coordinates":[[[66.51860680528867,37.36278432875879],[66.54615034370022,37.97468496352687],[65.2159989765074,38.40269501398429],[64.17022301621677,38.892406724598246],[63.51801476426103,39.36325653742564],[62.374260288345,40.05388621679039],[61.88271406438469,41.084856879229406],[61.54717898951356,41.266370347654615],[60.46595299667069,41.22032664648255],[60.08334069198167,41.425146185871405],[59.97642215356978,42.22308197689021],[58.62901085799146,42.75155101172305],[57.78652998233708,42.17055288346552],[56.932215203687804,41.826026109375604],[57.0963912290791,41.32231008561057],[55.96819135928291,41.30864166926936],[55.928917270741096,44.99585846615911],[58.50312706892847,45.586804307632825],[58.689989048095896,45.50001373959862],[60.23997195825833,44.78403677019473],[61.05831994003245,44.40581696225051],[62.01330040878625,43.50447663021565],[63.18578698105657,43.650074978198006],[64.90082441595928,43.72808055274258],[66.09801232286509,42.99766002051309],[66.02339155463562,41.99464630794398],[66.51064863471572,41.987644151368436],[66.7140470722165,41.1684435084615],[67.98585574735182,41.13599070898222],[68.25989586779562,40.6623245305949],[68.63248294462001,40.66868073176681],[69.07002729683532,41.38424428971237],[70.3889648782208,42.08130768489745],[70.96231489449914,42.26615428320549],[71.25924767444822,42.16771067968946],[70.42002241402821,41.51999827734314],[71.1578585142916,41.14358714452912],[71.87011478057047,41.392900092121266],[73.05541710804917,40.866033026689465],[71.77487511585656,40.14584442805378],[71.01419803252017,40.24436554621823],[70.60140669137269,40.21852733007229],[70.45815962105962,40.49649485937029],[70.66662234892505,40.96021332454141],[69.32949466337283,40.72782440852485],[69.0116329283455,40.08615814875666],[68.53641645698941,39.53345286717894],[67.70142866401736,39.58047842056453],[67.44221967964131,39.140143541005486],[68.17602501818592,38.901553453113905],[68.39203250516596,38.157025254868735],[67.82999962755952,37.14499400486468],[67.07578209825962,37.35614390720929],[66.51860680528867,37.36278432875879]]]}},{"type":"Feature","properties":{"abbrev":"Yem.","name":"Yemen","name_long":"Yemen","iso_a2":"YE","iso_a3":"YEM","iso_n3":"887"},"geometry":{"type":"Polygon","coordinates":[[[53.10857262554751,16.65105113368895],[52.38520592632588,16.382411200419654],[52.19172936382509,15.93843313238402],[52.1681649107,15.597420355689948],[51.172515089732485,15.175249742081492],[49.57457645040315,14.70876658778275],[48.67923058451416,14.00320241948566],[48.23894738138742,13.948089504446372],[47.938914015500785,14.007233181204427],[47.354453566279716,13.592219753468383],[46.717076450391744,13.39969920496502],[45.87759280781027,13.347764390511685],[45.62505008319987,13.290946153206763],[45.406458774605255,13.026905422411433],[45.14435591002086,12.95393830001531],[44.98953331887441,12.699586900274708],[44.49457645038285,12.721652736863346],[44.175112745954486,12.585950425664876],[43.48295861183713,12.636800035040084],[43.22287112811213,13.220950425667425],[43.25144819516953,13.767583726450852],[43.08794396339806,14.06263031662131],[42.89224531430872,14.802249253798749],[42.60487267433362,15.213335272680595],[42.80501549660005,15.261962795467255],[42.70243777850066,15.718885809791999],[42.823670688657415,15.911742255105265],[42.77933230975097,16.347891343648683],[43.21837527850275,16.66688996018641],[43.11579756040335,17.088440456607373],[43.380794305196105,17.57998668056767],[43.79151858905192,17.31997671149111],[44.06261315285508,17.410358791569593],[45.21665123879718,17.43332896572333],[45.39999922056875,17.333335069238558],[46.366658563020536,17.233315334537636],[46.74999433776165,17.283338120996177],[47.000004917189756,16.949999294497445],[47.46669477721763,17.116681626854884],[48.18334354024134,18.166669216377315],[49.11667158386487,18.616667588774945],[52.00000980002224,19.000003363516058],[52.78218427919205,17.349742336491232],[53.10857262554751,16.65105113368895]]]}},{"type":"Feature","properties":{"abbrev":"Ang.","name":"Angola","name_long":"Angola","iso_a2":"AO","iso_a3":"AGO","iso_n3":"024"},"geometry":{"type":"MultiPolygon","coordinates":[[[[16.326528354567046,-5.877470391466218],[16.57317996589614,-6.622644545115094],[16.86019087084523,-7.222297865429979],[17.08999596524717,-7.545688978712476],[17.472970004962292,-8.068551120641656],[18.13422163256905,-7.987677504104866],[18.464175652752687,-7.847014255406477],[19.01675174324967,-7.98824594486014],[19.166613396896082,-7.738183688999725],[19.417502475673217,-7.155428562044278],[20.037723016040218,-7.11636117923166],[20.09162153492062,-6.943090101756951],[20.601822950938327,-6.939317722199689],[20.51474816252653,-7.299605808138665],[21.728110792739756,-7.290872491081316],[21.746455926203367,-7.920084730667114],[21.94913089365204,-8.305900974158305],[21.801801385187957,-8.908706556842986],[21.875181919042404,-9.523707777548566],[22.208753289486424,-9.89479623783653],[22.155268182064333,-11.084801120653779],[22.402798292742432,-10.99307545333569],[22.83734541188477,-11.017621758674338],[23.456790805767465,-10.867863457892483],[23.912215203555746,-10.926826267137542],[24.017893507592614,-11.237298272347118],[23.90415368011824,-11.722281589406336],[24.079905226342902,-12.191296888887308],[23.930922072045377,-12.565847670138822],[24.016136508894704,-12.911046237848552],[21.933886346125945,-12.898437188369357],[21.887842644953878,-16.080310153876894],[22.56247846852429,-16.898451429921835],[23.215048455506093,-17.523116143465952],[21.377176141045595,-17.93063648851971],[18.95618696460363,-17.789094740472237],[18.26330936043422,-17.309950860262006],[14.209706658595051,-17.353100681225712],[14.058501417709039,-17.423380629142656],[13.462362094789967,-16.97121184658874],[12.814081251688407,-16.941342868724078],[12.215461460019384,-17.111668389558062],[11.734198846085148,-17.3018893368245],[11.64009606288161,-16.67314218512921],[11.778537224991567,-15.79381601325069],[12.123580763404448,-14.878316338767931],[12.175618930722266,-14.449143568583892],[12.500095249083017,-13.547699883684402],[12.738478631245442,-13.137905775609935],[13.312913852601838,-12.483630466362513],[13.633721144269828,-12.038644707897191],[13.738727654686926,-11.297863050993143],[13.686379428775297,-10.731075941615842],[13.38732791510216,-10.373578383020728],[13.120987583069875,-9.766897067914115],[12.875369500386569,-9.166933689005488],[12.929061313537801,-8.959091078327575],[13.236432732809874,-8.562629489784342],[12.933040398824316,-7.596538588087753],[12.72829837408392,-6.927122084178805],[12.227347039446443,-6.294447523629372],[12.322431674863566,-6.100092461779653],[12.735171339578699,-5.965682061388478],[13.02486941900699,-5.984388929878108],[13.375597364971895,-5.864241224799557],[16.326528354567046,-5.877470391466218]]],[[[12.436688266660923,-5.684303887559224],[12.18233686692028,-5.789930515163803],[11.914963006242116,-5.037986748884734],[12.318607618873926,-4.606230157086158],[12.62075971848455,-4.438023369976121],[12.995517205465205,-4.781103203961919],[12.631611769265845,-4.991271254092936],[12.468004184629763,-5.248361504744992],[12.436688266660923,-5.684303887559224]]]]}},{"type":"Feature","properties":{"abbrev":"Bur.","name":"Burundi","name_long":"Burundi","iso_a2":"BI","iso_a3":"BDI","iso_n3":"108"},"geometry":{"type":"Polygon","coordinates":[[[29.339997592900346,-4.499983412294092],[29.276383904749053,-3.293907159034063],[29.024926385216787,-2.839257907730158],[29.632176141078588,-2.917857761246097],[29.938359002407942,-2.348486830254238],[30.469696079232985,-2.413857517103458],[30.527677036264464,-2.807631931167535],[30.7430127296247,-3.034284763199686],[30.75226281100495,-3.35932952231557],[30.505559523243566,-3.568567396665365],[30.116332635221173,-4.090137627787243],[29.753512404099922,-4.452389418153281],[29.339997592900346,-4.499983412294092]]]}},{"type":"Feature","properties":{"abbrev":"B.F.","name":"Burkina Faso","name_long":"Burkina Faso","iso_a2":"BF","iso_a3":"BFA","iso_n3":"854"},"geometry":{"type":"Polygon","coordinates":[[[-2.827496303712707,9.642460842319778],[-3.511898972986273,9.90032623945622],[-3.980449184576685,9.8623440617217],[-4.330246954760383,9.61083486575714],[-4.779883592131966,9.821984768101743],[-4.954653286143099,10.152713934769736],[-5.404341599946974,10.370736802609146],[-5.470564947929006,10.951269842976048],[-5.197842576508648,11.37514577885014],[-5.220941941743121,11.713858954307227],[-4.427166103523803,12.542645575404295],[-4.28040503581488,13.228443508349741],[-4.006390753587226,13.472485459848116],[-3.522802700199861,13.337661647998615],[-3.10370683431276,13.541266791228594],[-2.967694464520577,13.79815033615151],[-2.191824510090385,14.246417548067356],[-2.001035122068771,14.559008287000891],[-1.066363491205664,14.973815009007765],[-0.515854458000348,15.116157741755726],[-0.26625729003058,14.924308986872148],[0.374892205414682,14.928908189346132],[0.295646396495101,14.444234930880654],[0.429927605805517,13.988733018443924],[0.993045688490071,13.335749620003824],[1.024103224297477,12.851825669806574],[2.177107781593776,12.625017808477534],[2.154473504249921,11.940150051313337],[1.935985548519881,11.641150214072553],[1.447178175471066,11.547719224488858],[1.243469679376489,11.110510769083461],[0.899563022474069,10.99733938236426],[0.023802524423701,11.018681748900804],[-0.438701544588582,11.09834096927872],[-0.761575893548183,10.936929633015055],[-1.203357713211431,11.009819240762738],[-2.940409308270461,10.962690334512558],[-2.963896246747112,10.395334784380083],[-2.827496303712707,9.642460842319778]]]}},{"type":"Feature","properties":{"abbrev":"Bwa.","name":"Botswana","name_long":"Botswana","iso_a2":"BW","iso_a3":"BWA","iso_n3":"072"},"geometry":{"type":"Polygon","coordinates":[[[25.649163445750162,-18.53602589281899],[25.85039147309473,-18.714412937090536],[26.164790887158485,-19.29308562589494],[27.296504754350508,-20.391519870691],[27.724747348753255,-20.499058526290387],[27.72722781750326,-20.851801853114715],[28.021370070108617,-21.485975030200585],[28.794656202924212,-21.63945403410745],[29.43218834810904,-22.091312758067588],[28.01723595552525,-22.827753594659075],[27.119409620886245,-23.574323011979775],[26.786406691197413,-24.240690606383485],[26.4857532081233,-24.616326592713104],[25.94165205252216,-24.69637338633322],[25.76584882986521,-25.174845472923675],[25.66466637543772,-25.486816094669713],[25.025170525825786,-25.7196700985769],[24.211266717228792,-25.670215752873574],[23.73356977712271,-25.390129489851613],[23.312096795350186,-25.26868987396572],[22.8242712745149,-25.500458672794768],[22.57953169118059,-25.979447523708146],[22.105968865657868,-26.280256036079138],[21.60589603036939,-26.726533705351756],[20.88960900237174,-26.828542982695915],[20.66647016773544,-26.477453301704923],[20.758609246511835,-25.86813648855145],[20.165725538827186,-24.917961928000768],[19.895767856534434,-24.767790215760588],[19.89545779794068,-21.84915699634787],[20.881134067475866,-21.814327080983148],[20.910641310314535,-18.252218926672022],[21.655040317478978,-18.219146010005225],[23.1968583513393,-17.869038181227786],[23.579005568137717,-18.28126108162006],[24.217364536239213,-17.88934701911849],[24.520705193792537,-17.887124932529936],[25.08444339366457,-17.661815687737374],[25.264225701608012,-17.736539808831417],[25.649163445750162,-18.53602589281899]]]}},{"type":"Feature","properties":{"abbrev":"Benin","name":"Benin","name_long":"Benin","iso_a2":"BJ","iso_a3":"BEN","iso_n3":"204"},"geometry":{"type":"Polygon","coordinates":[[[2.691701694356254,6.258817246928629],[1.865240512712319,6.142157701029731],[1.618950636409238,6.832038072126237],[1.664477573258381,9.12859039960938],[1.46304284018467,9.334624335157088],[1.425060662450136,9.825395412633],[1.077795037448738,10.175606594275024],[0.772335646171484,10.470808213742359],[0.899563022474069,10.99733938236426],[1.243469679376489,11.110510769083461],[1.447178175471066,11.547719224488858],[1.935985548519881,11.641150214072553],[2.154473504249921,11.940150051313337],[2.49016360841793,12.233052069543675],[2.848643019226671,12.235635891158267],[3.611180454125559,11.660167141155966],[3.572216424177469,11.327939357951518],[3.797112257511714,10.734745591673105],[3.600070021182801,10.332186184119408],[3.705438266625919,10.063210354040208],[3.220351596702101,9.4441525333997],[2.912308383810256,9.13760793704432],[2.723792758809509,8.50684540448971],[2.74906253420022,7.870734361192888],[2.691701694356254,6.258817246928629]]]}},{"type":"Feature","properties":{"abbrev":"C.A.R.","name":"Central African Rep.","name_long":"Central African Republic","iso_a2":"CF","iso_a3":"CAF","iso_n3":"140"},"geometry":{"type":"Polygon","coordinates":[[[15.279460483469109,7.421924546737969],[16.10623172370677,7.497087917506505],[16.290561557691888,7.754307359239306],[16.456184523187346,7.734773667832968],[16.705988396886255,7.508327541529979],[17.964929640380888,7.890914008002866],[18.38955488452322,8.281303615751824],[18.911021762780507,8.630894680206353],[18.81200971850927,8.982914536978598],[19.09400800952602,9.07484691002584],[20.05968549976427,9.012706000194854],[21.000868361096167,9.475985215691509],[21.723821648859452,10.567055568885976],[22.231129184668788,10.97188873946051],[22.864165480244225,11.142395127807546],[22.97754357269261,10.71446259199854],[23.554304233502194,10.089255275915308],[23.557249790142826,9.681218166538684],[23.394779087017184,9.265067857292223],[23.459012892355986,8.954285793488893],[23.805813429466752,8.666318874542426],[24.567369012152085,8.229187933785468],[25.11493248871679,7.825104071479174],[25.124130893664727,7.500085150579436],[25.79664798351118,6.979315904158071],[26.213418409945117,6.546603298362072],[26.46590945812323,5.94671743410187],[27.21340905122517,5.550953477394557],[27.37422610851749,5.233944403500061],[27.04406538260471,5.127852688004836],[26.402760857862543,5.150874538590871],[25.650455356557472,5.256087754737123],[25.278798455514302,5.170408229997192],[25.12883344900328,4.927244777847789],[24.805028924262416,4.89724660890235],[24.410531040146253,5.108784084489129],[23.29721398285014,4.609693101414223],[22.841479526468106,4.710126247573484],[22.70412356943629,4.633050848810157],[22.405123732195538,4.029160061047321],[21.659122755630023,4.22434194581372],[20.927591180106276,4.322785549329737],[20.290679152108936,4.691677761245288],[19.467783644293146,5.03152781821278],[18.93231245288476,4.709506130385975],[18.54298221199778,4.201785183118318],[18.45306521980993,3.504385891123349],[17.809900343505262,3.56019643799857],[17.133042433346304,3.728196519379452],[16.537058139724135,3.198254706226279],[16.012852410555354,2.267639675298085],[15.907380812247652,2.557389431158612],[15.86273237474748,3.013537298998983],[15.405395948964383,3.33530060466434],[15.036219516671252,3.851367295747124],[14.950953403389661,4.210389309094921],[14.478372430080467,4.732605495620447],[14.558935988023505,5.03059764243153],[14.459407179429348,5.4517605656103],[14.536560092841112,6.22695872642069],[14.776545444404576,6.408498033062045],[15.279460483469109,7.421924546737969]]]}},{"type":"Feature","properties":{"abbrev":"I.C.","name":"Côte d'Ivoire","name_long":"Côte d'Ivoire","iso_a2":"CI","iso_a3":"CIV","iso_n3":"384"},"geometry":{"type":"Polygon","coordinates":[[[-2.856125047202397,4.994475816259509],[-3.311084357100071,4.984295559098015],[-4.008819545904942,5.179813340674315],[-4.649917364917911,5.168263658057086],[-5.834496222344526,4.993700669775137],[-6.528769090185847,4.705087795425015],[-7.518941209330436,4.338288479017308],[-7.71215938966975,4.364565944837722],[-7.63536821128403,5.188159084489456],[-7.539715135111762,5.313345241716519],[-7.570152553731688,5.707352199725904],[-7.993692592795881,6.126189683451543],[-8.311347622094019,6.193033148621083],[-8.60288021486862,6.46756419517166],[-8.385451626000574,6.911800645368742],[-8.48544552248535,7.39520783124307],[-8.439298468448698,7.686042792181738],[-8.280703497744938,7.687179673692156],[-8.221792364932199,8.123328762235573],[-8.299048631208564,8.316443589710303],[-8.20349890790088,8.455453192575447],[-7.832100389019188,8.575704250518626],[-8.079113735374348,9.376223863152035],[-8.30961646161225,9.789531968622441],[-8.229337124046822,10.1290202905639],[-8.029943610048619,10.206534939001713],[-7.899589809592372,10.297382106970828],[-7.622759161804809,10.147236232946796],[-6.850506557635057,10.138993841996239],[-6.666460944027548,10.430810655148447],[-6.493965013037267,10.411302801958271],[-6.205222947606431,10.524060777219134],[-6.050452032892267,10.096360785355444],[-5.816926235365287,10.222554633012194],[-5.404341599946974,10.370736802609146],[-4.954653286143099,10.152713934769736],[-4.779883592131966,9.821984768101743],[-4.330246954760383,9.61083486575714],[-3.980449184576685,9.8623440617217],[-3.511898972986273,9.90032623945622],[-2.827496303712707,9.642460842319778],[-2.562189500326241,8.219627793811483],[-2.983584967450327,7.379704901555512],[-3.244370083011262,6.250471503113502],[-2.81070146321784,5.38905121502411],[-2.856125047202397,4.994475816259509]]]}},{"type":"Feature","properties":{"abbrev":"Cam.","name":"Cameroon","name_long":"Cameroon","iso_a2":"CM","iso_a3":"CMR","iso_n3":"120"},"geometry":{"type":"Polygon","coordinates":[[[13.075822381246752,2.267097072759015],[12.951333855855609,2.32161570882694],[12.359380323952221,2.19281220133945],[11.75166548019979,2.326757513839993],[11.276449008843713,2.261050930180872],[9.649158155972628,2.283866075037736],[9.795195753629457,3.073404445809117],[9.404366896206,3.734526882335202],[8.948115675501072,3.904128933117136],[8.744923943729418,4.35221527751996],[8.488815545290889,4.495617377129918],[8.500287713259695,4.771982937026849],[8.757532993208628,5.479665839047911],[9.233162876023044,6.444490668153334],[9.522705926154401,6.453482367372117],[10.118276808318257,7.038769639509879],[10.497375115611417,7.055357774275564],[11.05878787603035,6.644426784690594],[11.74577436691851,6.981382961449753],[11.839308709366803,7.397042344589436],[12.063946160539558,7.799808457872302],[12.218872104550599,8.305824082874324],[12.753671502339214,8.717762762888995],[12.955467970438974,9.417771714714704],[13.167599724997103,9.640626328973411],[13.308676385153918,10.160362046748928],[13.572949659894562,10.798565985553566],[14.415378859116686,11.572368882692075],[14.468192172918975,11.904751695193411],[14.577177768622533,12.085360826053503],[14.181336297266792,12.483656927943116],[14.213530714584634,12.802035427293347],[14.495787387762844,12.85939626713733],[14.893385857816526,12.219047756392584],[14.9601518083376,11.555574042197224],[14.923564894274959,10.891325181517473],[15.467872755605269,9.98233673750343],[14.909353875394716,9.99212942142273],[14.62720055508106,9.920919297724538],[14.171466098699028,10.021378282099931],[13.954218377344006,9.549494940626685],[14.544466586981768,8.965861314322268],[14.97999555833769,8.796104234243472],[15.120865512765334,8.382150173369423],[15.436091749745769,7.692812404811973],[15.279460483469109,7.421924546737969],[14.776545444404576,6.408498033062045],[14.536560092841112,6.22695872642069],[14.459407179429348,5.4517605656103],[14.558935988023505,5.03059764243153],[14.478372430080467,4.732605495620447],[14.950953403389661,4.210389309094921],[15.036219516671252,3.851367295747124],[15.405395948964383,3.33530060466434],[15.86273237474748,3.013537298998983],[15.907380812247652,2.557389431158612],[16.012852410555354,2.267639675298085],[15.940918816805064,1.727672634280295],[15.146341993885244,1.964014797367184],[14.33781253424658,2.227874660649491],[13.075822381246752,2.267097072759015]]]}},{"type":"Feature","properties":{"abbrev":"D.R.C.","name":"Dem. Rep. Congo","name_long":"Democratic Republic of the Congo","iso_a2":"CD","iso_a3":"COD","iso_n3":"180"},"geometry":{"type":"Polygon","coordinates":[[[30.833859897593808,3.509165961110341],[30.773346795380043,2.339883327642127],[31.174149204235814,2.204465236821264],[30.852670118948055,1.849396470543809],[30.468507521290295,1.58380544677972],[30.086153598762703,1.062312730306289],[29.875778842902495,0.597379868976304],[29.819503208136638,-0.205310153813372],[29.58783776217217,-0.587405694179481],[29.579466180140884,-1.341313164885626],[29.29188683443661,-1.620055840667987],[29.25483483248334,-2.215109958508911],[29.117478875451553,-2.292211195488385],[29.024926385216787,-2.839257907730158],[29.276383904749053,-3.293907159034063],[29.339997592900346,-4.499983412294092],[29.519986606572925,-5.419978936386314],[29.419992710088167,-5.939998874539433],[29.62003217949001,-6.520015150583426],[30.199996779101696,-7.079980970898163],[30.740015496551788,-8.340007419470915],[30.346086053190813,-8.238256524288218],[29.002912225060467,-8.407031752153472],[28.7348665707625,-8.526559340044578],[28.449871046672826,-9.164918308146085],[28.67368167492893,-9.605924981324932],[28.49606977714177,-10.789883721564044],[28.372253045370428,-11.793646742401393],[28.642417433392353,-11.971568698782315],[29.34154788586909,-12.360743910372413],[29.61600141777123,-12.178894545137311],[29.69961388521949,-13.257226657771831],[28.934285922976837,-13.248958428605135],[28.523561639121027,-12.698604424696683],[28.155108676879987,-12.272480564017897],[27.38879886242378,-12.132747491100666],[27.164419793412463,-11.608748467661075],[26.553087599399618,-11.924439792532127],[25.752309604604733,-11.784965101776358],[25.418118116973204,-11.330935967659961],[24.78316979340295,-11.238693536018964],[24.31451622894795,-11.26282642989927],[24.25715538910399,-10.951992689663657],[23.912215203555718,-10.926826267137514],[23.45679080576744,-10.867863457892483],[22.83734541188474,-11.01762175867433],[22.402798292742375,-10.99307545333569],[22.155268182064308,-11.084801120653772],[22.208753289486395,-9.894796237836509],[21.875181919042348,-9.523707777548566],[21.8018013851879,-8.908706556842978],[21.949130893652043,-8.305900974158277],[21.74645592620331,-7.920084730667149],[21.7281107927397,-7.290872491081302],[20.514748162526498,-7.299605808138629],[20.6018229509383,-6.939317722199682],[20.091621534920648,-6.943090101756993],[20.037723016040218,-7.116361179231646],[19.417502475673157,-7.155428562044298],[19.16661339689611,-7.738183688999754],[19.01675174324967,-7.988245944860132],[18.464175652752687,-7.847014255406444],[18.13422163256905,-7.987677504104922],[17.472970004962235,-8.0685511206417],[17.08999596524717,-7.545688978712526],[16.8601908708452,-7.222297865429986],[16.57317996589614,-6.622644545115087],[16.326528354567046,-5.877470391466267],[13.375597364971895,-5.864241224799549],[13.02486941900696,-5.984388929878157],[12.735171339578699,-5.965682061388499],[12.32243167486351,-6.10009246177966],[12.182336866920252,-5.789930515163839],[12.436688266660868,-5.684303887559246],[12.468004184629736,-5.248361504745005],[12.63161176926579,-4.991271254092936],[12.995517205465177,-4.781103203961884],[13.258240187237048,-4.882957452009165],[13.600234816144678,-4.50013844159097],[14.144956088933299,-4.510008640158715],[14.209034864975223,-4.793092136253598],[14.58260379401318,-4.97023894615014],[15.170991652088444,-4.343507175314301],[15.75354007331475,-3.855164890156096],[16.0062895036543,-3.535132744972529],[15.972803175529151,-2.712392266453612],[16.407091912510054,-1.740927015798682],[16.865306837642123,-1.225816338713287],[17.523716261472856,-0.743830254726987],[17.638644646889986,-0.424831638189247],[17.66355268725468,-0.058083998213817],[17.826540154703252,0.288923244626105],[17.774191928791566,0.855658677571085],[17.898835483479587,1.741831976728278],[18.094275750407434,2.365721543788055],[18.39379235197114,2.90044342692822],[18.45306521980993,3.504385891123349],[18.54298221199778,4.201785183118318],[18.93231245288476,4.709506130385975],[19.467783644293146,5.03152781821278],[20.290679152108936,4.691677761245288],[20.927591180106276,4.322785549329737],[21.659122755630023,4.22434194581372],[22.405123732195538,4.029160061047321],[22.70412356943629,4.633050848810157],[22.841479526468106,4.710126247573484],[23.29721398285014,4.609693101414223],[24.410531040146253,5.108784084489129],[24.805028924262416,4.89724660890235],[25.12883344900328,4.927244777847789],[25.278798455514302,5.170408229997192],[25.650455356557472,5.256087754737123],[26.402760857862543,5.150874538590871],[27.04406538260471,5.127852688004836],[27.37422610851749,5.233944403500061],[27.979977247842807,4.408413397637375],[28.428993768026913,4.287154649264494],[28.696677687298802,4.455077215996937],[29.1590784034465,4.389267279473231],[29.71599531425602,4.600804755060025],[29.953500197069474,4.173699042167683],[30.833859897593808,3.509165961110341]]]}},{"type":"Feature","properties":{"abbrev":"Rep. Congo","name":"Congo","name_long":"Republic of Congo","iso_a2":"CG","iso_a3":"COG","iso_n3":"178"},"geometry":{"type":"Polygon","coordinates":[[[12.995517205465177,-4.781103203961884],[12.620759718484491,-4.438023369976136],[12.318607618873926,-4.606230157086188],[11.91496300624209,-5.037986748884791],[11.093772820691925,-3.978826592630547],[11.855121697648114,-3.426870619321051],[11.478038771214303,-2.765618991714241],[11.820963575903193,-2.514161472181982],[12.495702752338161,-2.391688327650243],[12.575284458067642,-1.948511244315135],[13.109618767965628,-2.428740329603514],[13.99240726080771,-2.4708049454891],[14.299210239324564,-1.998275648612214],[14.425455763413593,-1.333406670744971],[14.316418491277743,-0.552627455247048],[13.843320753645655,0.038757635901149],[14.276265903386957,1.196929836426619],[14.026668735417218,1.395677395021153],[13.282631463278818,1.31418366129688],[13.003113641012078,1.83089630778332],[13.075822381246752,2.267097072759015],[14.33781253424658,2.227874660649491],[15.146341993885244,1.964014797367184],[15.940918816805064,1.727672634280295],[16.012852410555354,2.267639675298085],[16.537058139724135,3.198254706226279],[17.133042433346304,3.728196519379452],[17.809900343505262,3.56019643799857],[18.45306521980993,3.504385891123349],[18.39379235197114,2.90044342692822],[18.094275750407434,2.365721543788055],[17.898835483479587,1.741831976728278],[17.774191928791566,0.855658677571085],[17.826540154703252,0.288923244626105],[17.66355268725468,-0.058083998213817],[17.638644646889986,-0.424831638189247],[17.523716261472856,-0.743830254726987],[16.865306837642123,-1.225816338713287],[16.407091912510054,-1.740927015798682],[15.972803175529151,-2.712392266453612],[16.0062895036543,-3.535132744972529],[15.75354007331475,-3.855164890156096],[15.170991652088444,-4.343507175314301],[14.58260379401318,-4.97023894615014],[14.209034864975223,-4.793092136253598],[14.144956088933299,-4.510008640158715],[13.600234816144678,-4.50013844159097],[13.258240187237048,-4.882957452009165],[12.995517205465177,-4.781103203961884]]]}},{"type":"Feature","properties":{"abbrev":"Dji.","name":"Djibouti","name_long":"Djibouti","iso_a2":"DJ","iso_a3":"DJI","iso_n3":"262"},"geometry":{"type":"Polygon","coordinates":[[[43.08122602720015,12.699638576707116],[43.31785241066467,12.390148423711025],[43.286381463398925,11.974928290245884],[42.715873650896526,11.735640570518342],[43.14530480324214,11.462039699748857],[42.77685184100096,10.92687856693442],[42.55493000000013,11.105110000000195],[42.31414000000012,11.0342],[41.755570000000205,11.050910000000101],[41.73959000000019,11.355110000000138],[41.66176000000013,11.6312],[42.000000000000114,12.100000000000136],[42.35156000000012,12.542230000000131],[42.77964236834475,12.455415757695675],[43.08122602720015,12.699638576707116]]]}},{"type":"Feature","properties":{"abbrev":"Alg.","name":"Algeria","name_long":"Algeria","iso_a2":"DZ","iso_a3":"DZA","iso_n3":"012"},"geometry":{"type":"Polygon","coordinates":[[[11.999505649471613,23.47166840259645],[8.572893100629784,21.565660712159143],[5.677565952180686,19.601206976799716],[4.267419467800039,19.155265204337],[3.158133172222705,19.057364203360038],[3.1466610042539,19.69357859952144],[2.683588494486429,19.856230170160114],[2.06099083823392,20.142233384679486],[1.823227573259032,20.610809434486043],[-1.550054897457613,22.792665920497384],[-4.92333736817423,24.974574082941],[-8.68439978680905,27.395744126896005],[-8.665124477564191,27.589479071558227],[-8.665589565454809,27.656425889592356],[-8.674116176782974,28.84128896739658],[-7.059227667661928,29.57922842052453],[-6.060632290053774,29.731699734001694],[-5.242129278982787,30.000443020135588],[-4.859646165374471,30.501187649043842],[-3.690441046554696,30.896951605751152],[-3.647497931320146,31.63729401298067],[-3.068980271812648,31.724497992473214],[-2.616604783529567,32.09434621838615],[-1.30789913573787,32.2628889023061],[-1.124551153966308,32.65152151135713],[-1.388049282222568,32.86401500094131],[-1.733454555661467,33.919712836231994],[-1.792985805661687,34.527918606091205],[-2.169913702798624,35.16839630791668],[-1.208602871089056,35.7148487411871],[-0.127454392894606,35.888662421200806],[0.503876580415209,36.30127289483528],[1.466918572606545,36.605647081034405],[3.161698846050825,36.78390493422522],[4.81575809084913,36.86503693292346],[5.320120070017793,36.71651886651662],[6.261819695672613,37.11065501560674],[7.33038496260397,37.118380642234364],[7.737078484741004,36.885707505840216],[8.420964389691676,36.94642731378316],[8.217824334352315,36.433176988260286],[8.376367628623768,35.47987600355594],[8.140981479534304,34.65514598239379],[7.524481642292244,34.09737641045146],[7.612641635782182,33.34411489514896],[8.430472853233368,32.74833730725595],[8.439102817426118,32.50628489840082],[9.055602654668148,32.10269196220129],[9.482139926805274,30.307556057246188],[9.805634392952411,29.42463837332339],[9.859997999723447,28.959989732371014],[9.683884718472767,28.1441738957792],[9.756128370816782,27.68825857188415],[9.629056023811074,27.14095347748092],[9.716285841519749,26.512206325785698],[9.319410841518163,26.094324856057455],[9.910692579801776,25.36545461679674],[9.94826134607797,24.936953640232517],[10.303846876678362,24.379313259370917],[10.771363559622927,24.56253205006175],[11.560669386449005,24.097909247325518],[11.999505649471613,23.47166840259645]]]}},{"type":"Feature","properties":{"abbrev":"Egypt","name":"Egypt","name_long":"Egypt","iso_a2":"EG","iso_a3":"EGY","iso_n3":"818"},"geometry":{"type":"Polygon","coordinates":[[[34.9226,29.50133],[34.64174,29.09942],[34.42655,28.34399],[34.15451,27.8233],[33.92136,27.6487],[33.58811,27.97136],[33.13676,28.41765],[32.42323,29.85108],[32.32046,29.76043],[32.73482,28.70523],[33.34876,27.69989],[34.10455,26.14227],[34.47387,25.59856],[34.79507,25.03375],[35.69241,23.92671],[35.49372,23.75237],[35.52598,23.10244],[36.69069,22.20485],[36.86623,22],[32.9,22],[29.02,22],[25,22],[25,25.682499996361],[25,29.23865452953346],[24.70007,30.04419],[24.95762,30.6616],[24.80287,31.08929],[25.16482,31.56915],[26.49533,31.58568],[27.45762,31.32126],[28.45048,31.02577],[28.91353,30.87005],[29.68342,31.18686],[30.09503,31.4734],[30.97693,31.55586],[31.68796,31.4296],[31.96041,30.9336],[32.19247,31.26034],[32.99392,31.02407],[33.7734,30.96746],[34.26544,31.21936],[34.9226,29.50133]]]}},{"type":"Feature","properties":{"abbrev":"Gabon","name":"Gabon","name_long":"Gabon","iso_a2":"GA","iso_a3":"GAB","iso_n3":"266"},"geometry":{"type":"Polygon","coordinates":[[[11.093772820691925,-3.978826592630547],[10.06613528813574,-2.969482517105681],[9.40524539555497,-2.144313246269043],[8.79799563969317,-1.111301364754496],[8.830086704146423,-0.779073581550037],[9.048419630579588,-0.459351494960217],[9.29135053878369,0.268666083167687],[9.492888624721985,1.010119533691494],[9.830284051155644,1.067893784993799],[11.285078973036462,1.057661851400013],[11.276449008843713,2.261050930180872],[11.75166548019979,2.326757513839993],[12.359380323952221,2.19281220133945],[12.951333855855609,2.32161570882694],[13.075822381246752,2.267097072759015],[13.003113641012078,1.83089630778332],[13.282631463278818,1.31418366129688],[14.026668735417218,1.395677395021153],[14.276265903386957,1.196929836426619],[13.843320753645655,0.038757635901149],[14.316418491277743,-0.552627455247048],[14.425455763413593,-1.333406670744971],[14.299210239324564,-1.998275648612214],[13.99240726080771,-2.4708049454891],[13.109618767965628,-2.428740329603514],[12.575284458067642,-1.948511244315135],[12.495702752338161,-2.391688327650243],[11.820963575903193,-2.514161472181982],[11.478038771214303,-2.765618991714241],[11.855121697648114,-3.426870619321051],[11.093772820691925,-3.978826592630547]]]}},{"type":"Feature","properties":{"abbrev":"Erit.","name":"Eritrea","name_long":"Eritrea","iso_a2":"ER","iso_a3":"ERI","iso_n3":"232"},"geometry":{"type":"Polygon","coordinates":[[[42.35156000000012,12.542230000000131],[42.00975,12.86582],[41.59856,13.452090000000112],[41.15519371924984,13.773319810435224],[40.8966,14.118640000000141],[40.026218702969175,14.519579169162284],[39.34061,14.53155],[39.0994,14.74064],[38.51295,14.50547],[37.90607000000011,14.959430000000168],[37.59377,14.2131],[36.42951,14.42211],[36.32318891779812,14.82248057704106],[36.75386030451858,16.29187409104429],[36.852530000000115,16.95655],[37.16747,17.263140000000135],[37.90400000000011,17.42754],[38.410089959473225,17.99830739997031],[38.990622999840014,16.84062612555169],[39.26611006038803,15.922723496967249],[39.814293654140215,15.435647284400318],[41.17927493669765,14.491079616753211],[41.73495161313235,13.921036892141558],[42.27683068214486,13.343992010954423],[42.58957645037526,13.000421250861905],[43.08122602720015,12.699638576707116],[42.77964236834475,12.455415757695675],[42.35156000000012,12.542230000000131]]]}},{"type":"Feature","properties":{"abbrev":"Eth.","name":"Ethiopia","name_long":"Ethiopia","iso_a2":"ET","iso_a3":"ETH","iso_n3":"231"},"geometry":{"type":"Polygon","coordinates":[[[37.90607000000011,14.959430000000168],[38.51295,14.50547],[39.0994,14.74064],[39.34061,14.53155],[40.02625000000012,14.51959],[40.8966,14.118640000000141],[41.1552,13.77333],[41.59856,13.452090000000112],[42.00975,12.86582],[42.35156000000012,12.542230000000131],[42.000000000000114,12.100000000000136],[41.66176000000013,11.6312],[41.73959000000019,11.355110000000138],[41.755570000000205,11.050910000000101],[42.31414000000012,11.0342],[42.55493000000013,11.105110000000195],[42.77685184100096,10.92687856693442],[42.55876,10.57258000000013],[42.92812,10.021940000000143],[43.29699000000011,9.540480000000173],[43.67875,9.18358000000012],[46.94834,7.99688],[47.78942,8.003],[44.9636,5.001620000000116],[43.66087,4.95755],[42.76967000000013,4.252590000000225],[42.12861,4.234130000000164],[41.85508309264412,3.918911920483765],[41.17180000000013,3.91909],[40.76848000000012,4.257020000000125],[39.85494000000011,3.838790000000131],[39.55938425876593,3.422060000000215],[38.89251,3.50074],[38.67114,3.61607],[38.436970000000144,3.58851],[38.12091500000014,3.598605],[36.85509323800824,4.447864127672858],[36.15907863285565,4.447864127672858],[35.81744766235362,4.776965663462022],[35.81744766235362,5.338232082790853],[35.298007118233095,5.506],[34.70702,6.59422000000012],[34.25032,6.82607],[34.07510000000019,7.22595],[33.568290000000104,7.71334],[32.954180000000235,7.784970000000102],[33.29480000000012,8.35458],[33.82550000000015,8.37916],[33.97498,8.684560000000147],[33.96162,9.58358],[34.25745,10.63009],[34.73115000000013,10.910170000000107],[34.83163000000013,11.318960000000118],[35.26049,12.08286],[35.863630000000164,12.57828],[36.27022,13.563330000000121],[36.42951,14.42211],[37.59377,14.2131],[37.90607000000011,14.959430000000168]]]}},{"type":"Feature","properties":{"abbrev":"Ghana","name":"Ghana","name_long":"Ghana","iso_a2":"GH","iso_a3":"GHA","iso_n3":"288"},"geometry":{"type":"Polygon","coordinates":[[[1.060121697604927,5.928837388528876],[-0.507637905265938,5.343472601742675],[-1.063624640294194,5.000547797053812],[-1.964706590167594,4.710462144383371],[-2.856125047202397,4.994475816259509],[-2.81070146321784,5.38905121502411],[-3.244370083011262,6.250471503113502],[-2.983584967450327,7.379704901555512],[-2.562189500326241,8.219627793811483],[-2.827496303712707,9.642460842319778],[-2.963896246747112,10.395334784380083],[-2.940409308270461,10.962690334512558],[-1.203357713211431,11.009819240762738],[-0.761575893548183,10.936929633015055],[-0.438701544588582,11.09834096927872],[0.023802524423701,11.018681748900804],[-0.049784715159944,10.706917832883931],[0.367579990245389,10.19121287682718],[0.365900506195885,9.465003973829482],[0.461191847342121,8.677222601756014],[0.712029249686878,8.31246450442383],[0.490957472342245,7.411744289576475],[0.570384148774849,6.914358628767189],[0.836931186536333,6.279978745952149],[1.060121697604927,5.928837388528876]]]}},{"type":"Feature","properties":{"abbrev":"Gin.","name":"Guinea","name_long":"Guinea","iso_a2":"GN","iso_a3":"GIN","iso_n3":"324"},"geometry":{"type":"Polygon","coordinates":[[[-8.439298468448698,7.686042792181738],[-8.722123582382123,7.71167430259851],[-8.926064622422004,7.309037380396375],[-9.208786383490844,7.313920803247953],[-9.40334815106975,7.526905218938907],[-9.337279832384581,7.928534450711353],[-9.755342169625834,8.541055202666925],[-10.016566534861255,8.42850393313523],[-10.23009355309128,8.406205552601293],[-10.505477260774668,8.348896389189605],[-10.494315151399633,8.715540676300435],[-10.654770473665891,8.977178452994194],[-10.622395188835041,9.267910061068278],[-10.8391519840833,9.688246161330369],[-11.117481248407328,10.045872911006285],[-11.917277390988659,10.046983954300558],[-12.150338100625005,9.858571682164381],[-12.425928514037565,9.835834051955956],[-12.59671912276221,9.62018830000197],[-12.71195756677308,9.342711696810767],[-13.246550258832515,8.903048610871508],[-13.685153977909792,9.49474376061346],[-14.074044969122282,9.886166897008252],[-14.33007585291237,10.015719712763966],[-14.579698859098258,10.214467271358515],[-14.693231980843505,10.656300767454042],[-14.839553798877944,10.876571560098139],[-15.130311245168171,11.040411688679526],[-14.685687221728898,11.527823798056488],[-14.382191534878729,11.509271958863692],[-14.121406419317779,11.677117010947697],[-13.900799729863776,11.678718980348748],[-13.743160773157411,11.811269029177412],[-13.828271857142125,12.142644151249044],[-13.718743658899513,12.24718557377551],[-13.700476040084325,12.586182969610194],[-13.217818162478238,12.575873521367967],[-12.499050665730564,12.332089952031057],[-12.278599005573438,12.354440008997285],[-12.203564825885634,12.465647691289405],[-11.65830095055793,12.386582749882834],[-11.51394283695059,12.442987575729418],[-11.456168585648271,12.076834214725338],[-11.29757361494451,12.077971096235771],[-11.036555955438258,12.211244615116515],[-10.870829637078215,12.17788747807211],[-10.593223842806282,11.92397532800598],[-10.165213792348837,11.844083563682744],[-9.890992804392013,12.060478623904972],[-9.567911749703214,12.194243068892476],[-9.327616339546012,12.334286200403454],[-9.127473517279583,12.308060411015331],[-8.90526485842453,12.088358059126437],[-8.786099005559464,11.812560939984706],[-8.376304897484914,11.393645941610629],[-8.581305304386774,11.136245632364805],[-8.620321010767128,10.810890814655183],[-8.407310756860028,10.909256903522762],[-8.282357143578281,10.792597357623846],[-8.33537716310974,10.494811916541934],[-8.029943610048619,10.206534939001713],[-8.229337124046822,10.1290202905639],[-8.30961646161225,9.789531968622441],[-8.079113735374348,9.376223863152035],[-7.832100389019188,8.575704250518626],[-8.20349890790088,8.455453192575447],[-8.299048631208564,8.316443589710303],[-8.221792364932199,8.123328762235573],[-8.280703497744938,7.687179673692156],[-8.439298468448698,7.686042792181738]]]}},{"type":"Feature","properties":{"abbrev":"Gambia","name":"Gambia","name_long":"The Gambia","iso_a2":"GM","iso_a3":"GMB","iso_n3":"270"},"geometry":{"type":"Polygon","coordinates":[[[-16.841524624081273,13.15139394780256],[-16.713728807023468,13.594958604379853],[-15.62459632003994,13.62358734786956],[-15.39877031092446,13.86036876063092],[-15.08173539881382,13.876491807505984],[-14.687030808968487,13.630356960499784],[-14.376713833055788,13.625680243377372],[-14.046992356817482,13.79406789800045],[-13.844963344772408,13.505041612192002],[-14.277701788784553,13.280585028532242],[-14.712197231494626,13.298206691943777],[-15.141163295949466,13.509511623585238],[-15.511812506562935,13.278569647672867],[-15.691000535534995,13.270353094938455],[-15.931295945692211,13.130284125211332],[-16.841524624081273,13.15139394780256]]]}},{"type":"Feature","properties":{"abbrev":"GnB.","name":"Guinea-Bissau","name_long":"Guinea-Bissau","iso_a2":"GW","iso_a3":"GNB","iso_n3":"624"},"geometry":{"type":"Polygon","coordinates":[[[-15.130311245168171,11.040411688679526],[-15.664180467175527,11.458474025920795],[-16.085214199273565,11.52459402103824],[-16.314786749730203,11.806514797406548],[-16.30894731288123,11.95870189050612],[-16.613838263403277,12.170911159712702],[-16.677451951554573,12.384851589401052],[-16.147716844130585,12.547761542201187],[-15.816574266004254,12.515567124883345],[-15.548476935274008,12.628170070847347],[-13.700476040084325,12.586182969610194],[-13.718743658899513,12.24718557377551],[-13.828271857142125,12.142644151249044],[-13.743160773157411,11.811269029177412],[-13.900799729863776,11.678718980348748],[-14.121406419317779,11.677117010947697],[-14.382191534878729,11.509271958863692],[-14.685687221728898,11.527823798056488],[-15.130311245168171,11.040411688679526]]]}},{"type":"Feature","properties":{"abbrev":"Ken.","name":"Kenya","name_long":"Kenya","iso_a2":"KE","iso_a3":"KEN","iso_n3":"404"},"geometry":{"type":"Polygon","coordinates":[[[40.993,-0.85829],[41.58513,-1.68325],[40.88477,-2.08255],[40.63785,-2.49979],[40.26304,-2.57309],[40.12119,-3.27768],[39.80006,-3.68116],[39.60489,-4.34653],[39.20222,-4.67677],[37.7669,-3.67712],[37.69869,-3.09699],[34.07262,-1.05982],[33.90371119710453,-0.95],[33.89356896966694,0.109813537861896],[34.18,0.515],[34.6721,1.17694],[35.03599,1.90584],[34.59607,3.05374],[34.47913,3.5556],[34.005,4.249884947362048],[34.62019626785388,4.847122742081988],[35.298007118232974,5.506],[35.817447662353516,5.338232082790797],[35.817447662353516,4.77696566346189],[36.159078632855646,4.447864127672769],[36.85509323800812,4.447864127672769],[38.120915,3.598605],[38.43697,3.58851],[38.67114,3.61607],[38.89251,3.50074],[39.55938425876585,3.42206],[39.85494,3.83879],[40.76848,4.25702],[41.1718,3.91909],[41.85508309264397,3.918911920483727],[40.98105,2.78452],[40.993,-0.85829]]]}},{"type":"Feature","properties":{"abbrev":"Eq. G.","name":"Eq. Guinea","name_long":"Equatorial Guinea","iso_a2":"GQ","iso_a3":"GNQ","iso_n3":"226"},"geometry":{"type":"Polygon","coordinates":[[[9.492888624721985,1.010119533691494],[9.305613234096256,1.160911363119183],[9.649158155972628,2.283866075037736],[11.276449008843713,2.261050930180872],[11.285078973036462,1.057661851400013],[9.830284051155644,1.067893784993799],[9.492888624721985,1.010119533691494]]]}},{"type":"Feature","properties":{"abbrev":"Liberia","name":"Liberia","name_long":"Liberia","iso_a2":"LR","iso_a3":"LBR","iso_n3":"430"},"geometry":{"type":"Polygon","coordinates":[[[-7.71215938966975,4.364565944837722],[-7.974107224957251,4.355755113131963],[-9.004793667018674,4.8324185245922],[-9.913420376006684,5.593560695819207],[-10.765383876986643,6.140710760925558],[-11.438779466182055,6.785916856305747],[-11.19980180504828,7.105845648624737],[-11.146704270868383,7.396706447779536],[-10.69559485517648,7.939464016141087],[-10.23009355309128,8.406205552601293],[-10.016566534861255,8.42850393313523],[-9.755342169625834,8.541055202666925],[-9.337279832384581,7.928534450711353],[-9.40334815106975,7.526905218938907],[-9.208786383490844,7.313920803247953],[-8.926064622422004,7.309037380396375],[-8.722123582382123,7.71167430259851],[-8.439298468448698,7.686042792181738],[-8.48544552248535,7.39520783124307],[-8.385451626000574,6.911800645368742],[-8.60288021486862,6.46756419517166],[-8.311347622094019,6.193033148621083],[-7.993692592795881,6.126189683451543],[-7.570152553731688,5.707352199725904],[-7.539715135111762,5.313345241716519],[-7.63536821128403,5.188159084489456],[-7.71215938966975,4.364565944837722]]]}},{"type":"Feature","properties":{"abbrev":"Libya","name":"Libya","name_long":"Libya","iso_a2":"LY","iso_a3":"LBY","iso_n3":"434"},"geometry":{"type":"Polygon","coordinates":[[[14.8513,22.862950000000126],[14.143870883855243,22.49128896737113],[13.581424594790462,23.04050608976928],[11.9995056494717,23.471668402596432],[11.560669386449035,24.097909247325617],[10.771363559622955,24.562532050061748],[10.303846876678449,24.379313259370974],[9.948261346078027,24.936953640232616],[9.910692579801776,25.365454616796796],[9.31941084151822,26.094324856057483],[9.716285841519664,26.51220632578565],[9.629056023811074,27.140953477481048],[9.756128370816782,27.688258571884205],[9.683884718472882,28.144173895779314],[9.859997999723475,28.95998973237107],[9.805634392952356,29.424638373323376],[9.482139926805417,30.307556057246188],[9.970017124072967,30.539324856075382],[10.056575148161699,30.961831366493524],[9.950225050505196,31.376069647745283],[10.636901482799487,31.761420803345683],[10.944789666394513,32.081814683555365],[11.432253452203781,32.36890310315283],[11.48878746913101,33.13699575452324],[12.66331,32.79278],[13.08326,32.87882],[13.91868,32.71196],[15.24563,32.26508],[15.71394,31.37626],[16.61162,31.18218],[18.02109,30.76357],[19.08641,30.26639],[19.57404,30.52582],[20.05335,30.98576],[19.82033,31.75179000000014],[20.13397,32.2382],[20.85452,32.7068],[21.54298,32.8432],[22.89576,32.63858],[23.2368,32.19149],[23.609130000000107,32.18726],[23.9275,32.01667],[24.92114,31.89936],[25.16482,31.56915],[24.80287,31.08929],[24.95762,30.6616],[24.70007,30.04419],[25.00000000000011,29.23865452953356],[25.00000000000011,25.682499996361003],[25.00000000000011,22],[25.00000000000011,20.00304],[23.850000000000136,20],[23.837660000000138,19.580470000000105],[19.84926,21.49509],[15.86085,23.40972],[14.8513,22.862950000000126]]]}},{"type":"Feature","properties":{"abbrev":"Mor.","name":"Morocco","name_long":"Morocco","iso_a2":"MA","iso_a3":"MAR","iso_n3":"504"},"geometry":{"type":"Polygon","coordinates":[[[-5.193863491222032,35.75518219659085],[-4.591006232105143,35.33071198174565],[-3.640056525070008,35.39985504815198],[-2.604305792644112,35.17909332940112],[-2.169913702798624,35.16839630791671],[-1.792985805661658,34.527918606091305],[-1.73345455566141,33.91971283623212],[-1.388049282222596,32.86401500094137],[-1.124551153966195,32.6515215113572],[-1.30789913573787,32.26288890230603],[-2.616604783529567,32.094346218386164],[-3.068980271812649,31.72449799247329],[-3.647497931320146,31.63729401298082],[-3.690441046554667,30.896951605751152],[-4.859646165374443,30.50118764904388],[-5.242129278982787,30.000443020135574],[-6.060632290053746,29.731699734001808],[-7.059227667661901,29.579228420524657],[-8.674116176782832,28.84128896739665],[-8.665589565454836,27.65642588959247],[-8.817809007940525,27.65642588959247],[-8.817828334986643,27.65642588959247],[-8.794883999049034,27.12069631602256],[-9.413037482124508,27.088476060488546],[-9.735343390328751,26.860944729107416],[-10.189424200877452,26.860944729107416],[-10.55126257978526,26.990807603456886],[-11.392554897496948,26.883423977154393],[-11.718219773800342,26.104091701760808],[-12.030758836301658,26.03086619720312],[-12.50096269372537,24.770116278578143],[-13.891110398809047,23.691009019459386],[-14.221167771857154,22.310163072188345],[-14.630832688850946,21.860939846274874],[-14.750954555713404,21.500600083903805],[-17.00296179856107,21.420734157796687],[-17.020428432675768,21.422310288981635],[-16.973247849993186,21.885744533774954],[-16.58913692876763,22.15823436125009],[-16.261921759495664,22.679339504481277],[-16.3264139469959,23.017768459560898],[-15.982610642958063,23.723358466074103],[-15.426003790742186,24.35913361256104],[-15.089331834360733,24.52026072844697],[-14.824645148161691,25.103532619725314],[-14.800925665739667,25.63626496022229],[-14.439939947964831,26.254418443297652],[-13.773804897506464,26.618892320252286],[-13.139941779014292,27.640147813420494],[-13.121613369914712,27.654147671719812],[-12.618836635783111,28.038185533148663],[-11.688919236690765,28.148643907172584],[-10.900956997104402,28.83214223888092],[-10.399592251008642,29.098585923777787],[-9.564811163765626,29.933573716749862],[-9.814718390329174,31.17773550060906],[-9.434793260119363,32.038096421836485],[-9.300692918321829,32.564679266890636],[-8.65747636558504,33.2402452662424],[-7.654178432638218,33.69706492770251],[-6.91254411460136,34.11047638603745],[-6.244342006851411,35.145865383437524],[-5.929994269219833,35.75998810479399],[-5.193863491222032,35.75518219659085]]]}},{"type":"Feature","properties":{"abbrev":"Les.","name":"Lesotho","name_long":"Lesotho","iso_a2":"LS","iso_a3":"LSO","iso_n3":"426"},"geometry":{"type":"Polygon","coordinates":[[[28.97826256685724,-28.955596612261715],[29.325166456832587,-29.257386976846252],[29.018415154748023,-29.74376555757737],[28.84839969250774,-30.070050551068253],[28.29106937023991,-30.2262167294543],[28.107204624145425,-30.54573211031495],[27.749397006956485,-30.64510588961222],[26.999261915807637,-29.875953871379984],[27.532511020627478,-29.24271087007536],[28.07433841320778,-28.851468601193588],[28.541700066855498,-28.64750172293757],[28.97826256685724,-28.955596612261715]]]}},{"type":"Feature","properties":{"abbrev":"Mad.","name":"Madagascar","name_long":"Madagascar","iso_a2":"MG","iso_a3":"MDG","iso_n3":"450"},"geometry":{"type":"Polygon","coordinates":[[[49.54351891459575,-12.469832858940554],[49.80898074727909,-12.895284925999555],[50.056510857957164,-13.555761407121985],[50.21743126811407,-14.758788750876795],[50.47653689962553,-15.226512139550541],[50.377111443895956,-15.706069431219126],[50.20027469259318,-16.000263360256767],[49.86060550313868,-15.414252618066916],[49.67260664246086,-15.710203545802479],[49.863344354050156,-16.451036879138776],[49.77456424337271,-16.875042006093597],[49.49861209493412,-17.106035658438273],[49.435618523970305,-17.953064060134366],[49.041792433473944,-19.118781019774445],[48.54854088724801,-20.496888116134127],[47.93074913919867,-22.391501153251085],[47.54772342305131,-23.781958916928517],[47.095761346226595,-24.941629733990453],[46.282477654817086,-25.178462823184105],[45.409507684110444,-25.60143442149309],[44.83357384621755,-25.34610116953894],[44.03972049334976,-24.988345228782308],[43.76376834491117,-24.460677178649988],[43.697777540874455,-23.574116306250602],[43.345654331237625,-22.776903985283873],[43.254187046081,-22.057413018484123],[43.43329756040464,-21.336475111580185],[43.893682895692926,-21.163307386970125],[43.896370070172104,-20.830459486578174],[44.37432539243966,-20.07236622485639],[44.46439741392439,-19.435454196859048],[44.23242190936617,-18.961994724200906],[44.04297610858415,-18.33138722094317],[43.96308434426091,-17.409944756746782],[44.31246870298628,-16.850495700754955],[44.4465173683514,-16.216219170804507],[44.94493655780653,-16.1793738745804],[45.50273196796499,-15.97437346767854],[45.87299360533626,-15.793454278224685],[46.31224327981721,-15.780018405828798],[46.882182651564285,-15.210182386946313],[47.70512983581235,-14.594302666891764],[48.005214878131255,-14.091232598530375],[47.869047479042166,-13.663868503476586],[48.29382775248138,-13.784067884987486],[48.84506025573878,-13.089174899958664],[48.86350874206698,-12.48786793381042],[49.194651320193316,-12.04055673589197],[49.54351891459575,-12.469832858940554]]]}},{"type":"Feature","properties":{"abbrev":"Mali","name":"Mali","name_long":"Mali","iso_a2":"ML","iso_a3":"MLI","iso_n3":"466"},"geometry":{"type":"Polygon","coordinates":[[[-12.170750291380301,14.616834214735505],[-11.834207526079467,14.79909699142894],[-11.666078253617854,15.388208319556298],[-11.349095017939504,15.411256008358478],[-10.650791388379417,15.132745876521426],[-10.086846482778212,15.330485744686273],[-9.700255092802706,15.264107367407362],[-9.55023840985939,15.486496893775437],[-5.537744309908447,15.501689764869257],[-5.315277268891933,16.20185374599184],[-5.488522508150438,16.325102037007966],[-5.971128709324248,20.64083344164763],[-6.453786586930335,24.956590684503425],[-4.92333736817423,24.974574082941],[-1.550054897457613,22.792665920497384],[1.823227573259032,20.610809434486043],[2.06099083823392,20.142233384679486],[2.683588494486429,19.856230170160114],[3.1466610042539,19.69357859952144],[3.158133172222705,19.057364203360038],[4.267419467800039,19.155265204337],[4.270209995143801,16.852227484601215],[3.723421665063483,16.184283759012615],[3.638258904646477,15.568119818580454],[2.749992709981484,15.409524847876696],[1.385528191746858,15.323561102759172],[1.01578331869851,14.968182277887948],[0.374892205414682,14.928908189346132],[-0.26625729003058,14.924308986872148],[-0.515854458000348,15.116157741755726],[-1.066363491205664,14.973815009007765],[-2.001035122068771,14.559008287000891],[-2.191824510090385,14.246417548067356],[-2.967694464520577,13.79815033615151],[-3.10370683431276,13.541266791228594],[-3.522802700199861,13.337661647998615],[-4.006390753587226,13.472485459848116],[-4.28040503581488,13.228443508349741],[-4.427166103523803,12.542645575404295],[-5.220941941743121,11.713858954307227],[-5.197842576508648,11.37514577885014],[-5.470564947929006,10.951269842976048],[-5.404341599946974,10.370736802609146],[-5.816926235365287,10.222554633012194],[-6.050452032892267,10.096360785355444],[-6.205222947606431,10.524060777219134],[-6.493965013037267,10.411302801958271],[-6.666460944027548,10.430810655148447],[-6.850506557635057,10.138993841996239],[-7.622759161804809,10.147236232946796],[-7.899589809592372,10.297382106970828],[-8.029943610048619,10.206534939001713],[-8.33537716310974,10.494811916541934],[-8.282357143578281,10.792597357623846],[-8.407310756860028,10.909256903522762],[-8.620321010767128,10.810890814655183],[-8.581305304386774,11.136245632364805],[-8.376304897484914,11.393645941610629],[-8.786099005559464,11.812560939984706],[-8.90526485842453,12.088358059126437],[-9.127473517279583,12.308060411015331],[-9.327616339546012,12.334286200403454],[-9.567911749703214,12.194243068892476],[-9.890992804392013,12.060478623904972],[-10.165213792348837,11.844083563682744],[-10.593223842806282,11.92397532800598],[-10.870829637078215,12.17788747807211],[-11.036555955438258,12.211244615116515],[-11.29757361494451,12.077971096235771],[-11.456168585648271,12.076834214725338],[-11.51394283695059,12.442987575729418],[-11.467899135778524,12.754518947800975],[-11.55339779300543,13.141213690641067],[-11.927716030311615,13.422075100147394],[-12.12488745772126,13.994727484589788],[-12.170750291380301,14.616834214735505]]]}},{"type":"Feature","properties":{"abbrev":"Moz.","name":"Mozambique","name_long":"Mozambique","iso_a2":"MZ","iso_a3":"MOZ","iso_n3":"508"},"geometry":{"type":"Polygon","coordinates":[[[34.55998904799935,-11.520020033415925],[35.31239790216904,-11.439146416879147],[36.51408165868426,-11.720938002166733],[36.775150994622805,-11.594537448780805],[37.47128421402661,-11.56875090906716],[37.82764489111139,-11.268769219612835],[38.42755659358775,-11.285202325081656],[39.521029900883775,-10.896853936408226],[40.31658857601719,-10.317096042525698],[40.47838748552303,-10.765440769089993],[40.437253045418686,-11.761710707245015],[40.56081139502857,-12.639176527561027],[40.59962039567975,-14.201975192931862],[40.775475294768995,-14.691764418194241],[40.4772506040126,-15.406294447493972],[40.08926395036522,-16.10077402106446],[39.45255862809705,-16.72089120856694],[38.53835086442152,-17.101023044505958],[37.41113284683888,-17.586368096591237],[36.28127933120936,-18.65968759529345],[35.89649661636406,-18.842260430580634],[35.198399692533144,-19.552811374593894],[34.78638349787005,-19.784011732667736],[34.70189253107284,-20.49704314543101],[35.176127150215365,-21.25436126066841],[35.37342776870574,-21.840837090748877],[35.385848253705404,-22.14],[35.562545536369086,-22.09],[35.533934767404304,-23.070787855727758],[35.37177412287238,-23.5353589820317],[35.60747033055563,-23.706563002214683],[35.45874555841962,-24.12260995859655],[35.04073489761066,-24.478350518493805],[34.21582400893547,-24.81631438568266],[33.01321007663901,-25.357573337507738],[32.574632195777866,-25.72731821055609],[32.66036339695009,-26.148584486599443],[32.91595503106569,-26.215867201443466],[32.830120477028885,-26.742191664336197],[32.07166548028107,-26.73382008230491],[31.98577924981197,-26.291779880480227],[31.837777947728064,-25.84333180105135],[31.75240848158188,-25.484283949487413],[31.93058882012425,-24.369416599222536],[31.670397983534652,-23.658969008073864],[31.191409132621285,-22.2515096981724],[32.244988234188014,-21.116488539313693],[32.50869306817344,-20.395292250248307],[32.65974327976258,-20.304290052982317],[32.772707960752626,-19.715592136313298],[32.61199425632489,-19.419382826416275],[32.65488569512715,-18.672089939043495],[32.84986087416439,-17.97905730557718],[32.847638787575846,-16.713398125884616],[32.32823896661022,-16.392074069893752],[31.8520406430406,-16.319417006091378],[31.636498243951195,-16.071990248277885],[31.173063999157677,-15.860943698797872],[30.338954705534544,-15.880839125230244],[30.274255812305107,-15.507786960515212],[30.17948123548183,-14.796099134991527],[33.214024692525214,-13.971860039936153],[33.789700148256685,-14.451830743063072],[34.064825473778626,-14.359950046448121],[34.45963341648854,-14.613009535381424],[34.51766604995231,-15.013708591372612],[34.307291294092096,-15.478641452702595],[34.38129194513405,-16.183559665596043],[35.033810255683534,-16.801299737213093],[35.33906294123164,-16.10744028083011],[35.77190473810836,-15.896858819240725],[35.68684533055594,-14.611045830954332],[35.26795617039801,-13.887834161029566],[34.907151320136165,-13.565424899960568],[34.55998904799935,-13.579997653866876],[34.28000613784198,-12.280025323132504],[34.55998904799935,-11.520020033415925]]]}},{"type":"Feature","properties":{"abbrev":"Nam.","name":"Namibia","name_long":"Namibia","iso_a2":"NA","iso_a3":"NAM","iso_n3":"516"},"geometry":{"type":"Polygon","coordinates":[[[16.344976840895242,-28.576705010697697],[15.601818068105814,-27.8212472470228],[15.21047244635946,-27.090955905874047],[14.989710727608552,-26.117371921495156],[14.743214145576331,-25.39292001719538],[14.408144158595833,-23.853014011329847],[14.385716586981149,-22.65665292734069],[14.257714064194175,-22.111208184499954],[13.86864220546866,-21.699036960539978],[13.35249799973744,-20.872834161057504],[12.826845330464492,-19.673165785401665],[12.608564080463621,-19.0453488094877],[11.794918654028066,-18.069129327061916],[11.734198846085121,-17.301889336824473],[12.215461460019355,-17.111668389558083],[12.814081251688407,-16.94134286872407],[13.462362094789967,-16.971211846588773],[14.05850141770901,-17.423380629142663],[14.209706658595024,-17.35310068122572],[18.26330936043416,-17.309950860262006],[18.956186964603603,-17.789094740472258],[21.377176141045567,-17.930636488519696],[23.215048455506064,-17.52311614346598],[24.033861525170778,-17.295843194246324],[24.682349074001507,-17.353410739819473],[25.07695031098226,-17.57882333747662],[25.08444339366457,-17.661815687737374],[24.520705193792537,-17.887124932529936],[24.217364536239213,-17.88934701911849],[23.579005568137717,-18.28126108162006],[23.1968583513393,-17.869038181227786],[21.655040317478978,-18.219146010005225],[20.910641310314535,-18.252218926672022],[20.881134067475866,-21.814327080983148],[19.89545779794068,-21.84915699634787],[19.895767856534434,-24.767790215760588],[19.894734327888614,-28.461104831660776],[19.002127312911085,-28.972443129188864],[18.464899122804752,-29.04546192801728],[17.83615197110953,-28.85637786226132],[17.387497185951503,-28.78351409272978],[17.218928663815404,-28.35594329194681],[16.824017368240902,-28.082161553664466],[16.344976840895242,-28.576705010697697]]]}},{"type":"Feature","properties":{"abbrev":"Niger","name":"Niger","name_long":"Niger","iso_a2":"NE","iso_a3":"NER","iso_n3":"562"},"geometry":{"type":"Polygon","coordinates":[[[2.15447350424995,11.940150051313424],[2.177107781593918,12.625017808477537],[1.024103224297619,12.851825669806601],[0.993045688490156,13.335749620003865],[0.429927605805517,13.988733018443893],[0.295646396495215,14.444234930880667],[0.374892205414767,14.928908189346147],[1.015783318698482,14.968182277887989],[1.385528191746971,15.32356110275924],[2.749992709981541,15.409524847876753],[3.638258904646591,15.568119818580442],[3.723421665063597,16.184283759012658],[4.270209995143887,16.852227484601315],[4.267419467800096,19.155265204337127],[5.677565952180714,19.6012069767998],[8.57289310062987,21.565660712159225],[11.9995056494717,23.471668402596432],[13.581424594790462,23.04050608976928],[14.143870883855243,22.49128896737113],[14.8513,22.862950000000126],[15.096887648181848,21.30851878507491],[15.471076694407316,21.048457139565983],[15.487148064850146,20.730414537025638],[15.903246697664313,20.387618923417506],[15.685740594147774,19.957180080642384],[15.30044111497972,17.927949937405003],[15.247731154041846,16.627305813050782],[13.972201775781684,15.684365953021143],[13.540393507550789,14.367133693901222],[13.956698846094127,13.996691189016929],[13.95447675950561,13.353448798063766],[14.595781284247607,13.330426947477859],[14.495787387762903,12.859396267137356],[14.21353071458475,12.802035427293333],[14.18133629726691,12.483656927943171],[13.995352817448293,12.461565253138303],[13.318701613018561,13.556356309457954],[13.083987257548813,13.596147162322495],[12.30207116054055,13.037189032437539],[11.527803175511508,13.32898000737356],[10.989593133191532,13.387322699431195],[10.701031935273818,13.246917832894042],[10.114814487354748,13.277251898649467],[9.52492801274309,12.851102199754564],[9.014933302454438,12.826659247280418],[7.804671258178871,13.343526923063735],[7.330746697630047,13.098038031461215],[6.820441928747812,13.115091254117601],[6.445426059605722,13.492768459522722],[5.443058302440135,13.865923977102225],[4.368343540066007,13.747481594289411],[4.107945997747379,13.531215725147945],[3.967282749048934,12.956108710171577],[3.680633579125925,12.55290334721417],[3.611180454125587,11.660167141155966],[2.848643019226586,12.23563589115821],[2.490163608418015,12.233052069543588],[2.15447350424995,11.940150051313424]]]}},{"type":"Feature","properties":{"abbrev":"Mal.","name":"Malawi","name_long":"Malawi","iso_a2":"MW","iso_a3":"MWI","iso_n3":"454"},"geometry":{"type":"Polygon","coordinates":[[[34.55998904799935,-11.520020033415925],[34.28000613784198,-12.280025323132504],[34.55998904799935,-13.579997653866876],[34.907151320136165,-13.565424899960568],[35.26795617039801,-13.887834161029566],[35.68684533055594,-14.611045830954332],[35.77190473810836,-15.896858819240725],[35.33906294123164,-16.10744028083011],[35.033810255683534,-16.801299737213093],[34.38129194513405,-16.183559665596043],[34.307291294092096,-15.478641452702595],[34.51766604995231,-15.013708591372612],[34.45963341648854,-14.613009535381424],[34.064825473778626,-14.359950046448121],[33.789700148256685,-14.451830743063072],[33.214024692525214,-13.971860039936153],[32.68816531752313,-13.712857761289275],[32.991764357237884,-12.783870537978272],[33.306422153463075,-12.435778090060218],[33.11428917820191,-11.607198174692314],[33.315310499817286,-10.796549981329697],[33.48568769708359,-10.525558770391115],[33.2313879737753,-9.6767216935648],[32.75937544122132,-9.230599053589058],[33.73972903823045,-9.417150974162723],[33.94083772409653,-9.693673841980294],[34.28000613784198,-10.159999688358404],[34.55998904799935,-11.520020033415925]]]}},{"type":"Feature","properties":{"abbrev":"Mrt.","name":"Mauritania","name_long":"Mauritania","iso_a2":"MR","iso_a3":"MRT","iso_n3":"478"},"geometry":{"type":"Polygon","coordinates":[[[-12.170750291380301,14.616834214735505],[-12.830658331747516,15.303691514542946],[-13.43573767745306,16.03938304286619],[-14.099521450242179,16.304302273010492],[-14.577347581428981,16.59826365810281],[-15.135737270558817,16.587282416240782],[-15.62366614425869,16.369337063049812],[-16.12069007004193,16.455662543193384],[-16.463098110407884,16.13503611903846],[-16.549707810929064,16.67389211676196],[-16.270551723688357,17.166962795474873],[-16.14634741867485,18.108481553616656],[-16.256883307347167,19.096715806550307],[-16.37765112961327,19.593817246981985],[-16.277838100641517,20.0925206568147],[-16.536323614965468,20.567866319251493],[-17.063423224342568,20.999752102130827],[-16.845193650773993,21.33332347257488],[-12.929101935263532,21.32707062426756],[-13.118754441774712,22.771220201096256],[-12.874221564169575,23.284832261645178],[-11.937224493853321,23.374594224536168],[-11.96941891117116,25.933352769468268],[-8.6872936670174,25.881056219988906],[-8.68439978680905,27.395744126896005],[-4.92333736817423,24.974574082941],[-6.453786586930335,24.956590684503425],[-5.971128709324248,20.64083344164763],[-5.488522508150438,16.325102037007966],[-5.315277268891933,16.20185374599184],[-5.537744309908447,15.501689764869257],[-9.55023840985939,15.486496893775437],[-9.700255092802706,15.264107367407362],[-10.086846482778212,15.330485744686273],[-10.650791388379417,15.132745876521426],[-11.349095017939504,15.411256008358478],[-11.666078253617854,15.388208319556298],[-11.834207526079467,14.79909699142894],[-12.170750291380301,14.616834214735505]]]}},{"type":"Feature","properties":{"abbrev":"Nigeria","name":"Nigeria","name_long":"Nigeria","iso_a2":"NG","iso_a3":"NGA","iso_n3":"566"},"geometry":{"type":"Polygon","coordinates":[[[8.500287713259695,4.771982937026849],[7.46210818851594,4.412108262546241],[7.082596469764439,4.464689032403228],[6.6980721370806,4.240594183769517],[5.898172641634687,4.262453314628985],[5.362804803090881,4.887970689305959],[5.033574252959368,5.611802476418234],[4.325607130560683,6.270651149923467],[3.574180128604553,6.258300482605719],[2.691701694356254,6.258817246928629],[2.74906253420022,7.870734361192888],[2.723792758809509,8.50684540448971],[2.912308383810256,9.13760793704432],[3.220351596702101,9.4441525333997],[3.705438266625919,10.063210354040208],[3.600070021182801,10.332186184119408],[3.797112257511714,10.734745591673105],[3.572216424177469,11.327939357951518],[3.611180454125559,11.660167141155966],[3.680633579125811,12.552903347214226],[3.967282749048849,12.956108710171575],[4.107945997747322,13.531215725147831],[4.368343540066064,13.747481594289324],[5.443058302440164,13.865923977102298],[6.445426059605637,13.492768459522678],[6.820441928747754,13.115091254117518],[7.330746697630018,13.0980380314612],[7.804671258178786,13.343526923063745],[9.014933302454466,12.82665924728043],[9.524928012742945,12.851102199754479],[10.114814487354693,13.27725189864941],[10.701031935273704,13.246917832894084],[10.989593133191535,13.38732269943111],[11.527803175511394,13.328980007373588],[12.302071160540523,13.037189032437524],[13.08398725754887,13.596147162322566],[13.318701613018561,13.556356309457826],[13.99535281744835,12.461565253138346],[14.181336297266792,12.483656927943116],[14.577177768622533,12.085360826053503],[14.468192172918975,11.904751695193411],[14.415378859116686,11.572368882692075],[13.572949659894562,10.798565985553566],[13.308676385153918,10.160362046748928],[13.167599724997103,9.640626328973411],[12.955467970438974,9.417771714714704],[12.753671502339214,8.717762762888995],[12.218872104550599,8.305824082874324],[12.063946160539558,7.799808457872302],[11.839308709366803,7.397042344589436],[11.74577436691851,6.981382961449753],[11.05878787603035,6.644426784690594],[10.497375115611417,7.055357774275564],[10.118276808318257,7.038769639509879],[9.522705926154401,6.453482367372117],[9.233162876023044,6.444490668153334],[8.757532993208628,5.479665839047911],[8.500287713259695,4.771982937026849]]]}},{"type":"Feature","properties":{"abbrev":"Rwa.","name":"Rwanda","name_long":"Rwanda","iso_a2":"RW","iso_a3":"RWA","iso_n3":"646"},"geometry":{"type":"Polygon","coordinates":[[[30.41910485201924,-1.134659112150416],[30.81613488131771,-1.698914076345389],[30.75830895358311,-2.287250257988369],[30.469696079232985,-2.413857517103458],[29.938359002407942,-2.348486830254238],[29.632176141078588,-2.917857761246097],[29.024926385216787,-2.839257907730158],[29.117478875451553,-2.292211195488385],[29.25483483248334,-2.215109958508911],[29.29188683443661,-1.620055840667987],[29.579466180140884,-1.341313164885626],[29.82151858899601,-1.443322442229785],[30.41910485201924,-1.134659112150416]]]}},{"type":"Feature","properties":{"abbrev":"W. Sah.","name":"W. Sahara","name_long":"Western Sahara","iso_a2":"EH","iso_a3":"ESH","iso_n3":"732"},"geometry":{"type":"Polygon","coordinates":[[[-8.794883999049077,27.120696316022503],[-8.817828334986672,27.656425889592356],[-8.665589565454809,27.656425889592356],[-8.665124477564191,27.589479071558227],[-8.68439978680905,27.395744126896005],[-8.6872936670174,25.881056219988906],[-11.96941891117116,25.933352769468268],[-11.937224493853321,23.374594224536168],[-12.874221564169575,23.284832261645178],[-13.118754441774712,22.771220201096256],[-12.929101935263532,21.32707062426756],[-16.845193650773993,21.33332347257488],[-17.063423224342568,20.999752102130827],[-17.020428432675743,21.42231028898148],[-17.00296179856109,21.420734157796577],[-14.750954555713534,21.500600083903663],[-14.630832688851072,21.8609398462749],[-14.221167771857251,22.31016307218816],[-13.891110398809047,23.691009019459305],[-12.50096269372537,24.7701162785782],[-12.030758836301615,26.030866197203043],[-11.718219773800357,26.104091701760623],[-11.392554897496979,26.883423977154365],[-10.551262579785273,26.990807603456886],[-10.189424200877582,26.860944729107405],[-9.735343390328879,26.860944729107405],[-9.413037482124466,27.088476060488517],[-8.794883999049077,27.120696316022503]]]}},{"type":"Feature","properties":{"abbrev":"S. Sud.","name":"S. Sudan","name_long":"South Sudan","iso_a2":"SS","iso_a3":"SSD","iso_n3":"728"},"geometry":{"type":"Polygon","coordinates":[[[33.963392794971185,9.464285229420625],[33.97498,8.68456],[33.82550000000015,8.37916],[33.29480000000012,8.35458],[32.95418,7.784970000000102],[33.568290000000104,7.71334],[34.0751,7.22595],[34.25032,6.82607],[34.70702,6.59422000000012],[35.298007118233095,5.506],[34.62019626785394,4.847122742082036],[34.005,4.249884947362147],[33.3900000000001,3.79],[32.68642,3.79232],[31.881450000000143,3.55827],[31.24556,3.7819],[30.83385,3.50917],[29.95349,4.1737],[29.71599531425602,4.600804755060153],[29.159078403446642,4.389267279473245],[28.696677687298802,4.455077215996994],[28.428993768027,4.287154649264608],[27.979977247842953,4.408413397637388],[27.374226108517632,5.233944403500175],[27.213409051225256,5.550953477394614],[26.465909458123292,5.946717434101856],[26.21341840994512,6.546603298362129],[25.796647983511264,6.97931590415817],[25.124130893664812,7.500085150579424],[25.114932488716875,7.825104071479245],[24.5673690121522,8.229187933785454],[23.886979580860665,8.619729712933065],[24.19406772118765,8.728696472403897],[24.53741516360202,8.91753756573172],[24.794925745412684,9.810240916008695],[25.069603699343986,10.273759963267992],[25.790633328413946,10.411098940233728],[25.962307049621018,10.136420986302424],[26.477328213242515,9.552730334198088],[26.752006167173818,9.466893473594496],[27.112520981708883,9.638567194801624],[27.833550610778783,9.60423245056029],[27.970889587744352,9.398223985111654],[28.966597170745782,9.398223985111654],[29.000931914987174,9.60423245056029],[29.515953078608614,9.793073543888056],[29.61895731133285,10.084918869940225],[29.99663949798855,10.290927335388687],[30.83784073190338,9.70723668328452],[31.35286189552488,9.810240916008695],[31.850715687025517,10.531270545078826],[32.400071594888345,11.080626452941488],[32.31423473428475,11.68148447716652],[32.073891524594785,11.973329803218519],[32.67474954881965,12.02483191958072],[32.743419037302544,12.248007757149992],[33.20693808456178,12.179338268667093],[33.086766479716744,11.441141267476496],[33.20693808456178,10.720111638406593],[33.72195924818311,10.325262079630193],[33.842130853028145,9.981914637215993],[33.82496348090751,9.484060845715362],[33.963392794971185,9.464285229420625]]]}},{"type":"Feature","properties":{"abbrev":"S.L.","name":"Sierra Leone","name_long":"Sierra Leone","iso_a2":"SL","iso_a3":"SLE","iso_n3":"694"},"geometry":{"type":"Polygon","coordinates":[[[-11.438779466182055,6.785916856305747],[-11.70819454593574,6.860098374860726],[-12.428098924193819,7.26294200279203],[-12.949049038128194,7.798645738145738],[-13.124025437868482,8.163946438016978],[-13.246550258832515,8.903048610871508],[-12.71195756677308,9.342711696810767],[-12.59671912276221,9.62018830000197],[-12.425928514037565,9.835834051955956],[-12.150338100625005,9.858571682164381],[-11.917277390988659,10.046983954300558],[-11.117481248407328,10.045872911006285],[-10.8391519840833,9.688246161330369],[-10.622395188835041,9.267910061068278],[-10.654770473665891,8.977178452994194],[-10.494315151399633,8.715540676300435],[-10.505477260774668,8.348896389189605],[-10.23009355309128,8.406205552601293],[-10.69559485517648,7.939464016141087],[-11.146704270868383,7.396706447779536],[-11.19980180504828,7.105845648624737],[-11.438779466182055,6.785916856305747]]]}},{"type":"Feature","properties":{"abbrev":"Sen.","name":"Senegal","name_long":"Senegal","iso_a2":"SN","iso_a3":"SEN","iso_n3":"686"},"geometry":{"type":"Polygon","coordinates":[[[-16.713728807023468,13.594958604379853],[-17.126106736712615,14.373515733289224],[-17.62504269049066,14.729540513564071],[-17.18517289882223,14.919477240452863],[-16.700706346085923,15.621527411354108],[-16.463098110407884,16.13503611903846],[-16.12069007004193,16.455662543193384],[-15.62366614425869,16.369337063049812],[-15.135737270558817,16.587282416240782],[-14.577347581428981,16.59826365810281],[-14.099521450242179,16.304302273010492],[-13.43573767745306,16.03938304286619],[-12.830658331747516,15.303691514542946],[-12.170750291380301,14.616834214735505],[-12.12488745772126,13.994727484589788],[-11.927716030311615,13.422075100147394],[-11.55339779300543,13.141213690641067],[-11.467899135778524,12.754518947800975],[-11.51394283695059,12.442987575729418],[-11.65830095055793,12.386582749882834],[-12.203564825885634,12.465647691289405],[-12.278599005573438,12.354440008997285],[-12.499050665730564,12.332089952031057],[-13.217818162478238,12.575873521367967],[-13.700476040084325,12.586182969610194],[-15.548476935274008,12.628170070847347],[-15.816574266004254,12.515567124883345],[-16.147716844130585,12.547761542201187],[-16.677451951554573,12.384851589401052],[-16.841524624081273,13.15139394780256],[-15.931295945692211,13.130284125211332],[-15.691000535534995,13.270353094938455],[-15.511812506562935,13.278569647672867],[-15.141163295949466,13.509511623585238],[-14.712197231494626,13.298206691943777],[-14.277701788784553,13.280585028532242],[-13.844963344772408,13.505041612192002],[-14.046992356817482,13.79406789800045],[-14.376713833055788,13.625680243377372],[-14.687030808968487,13.630356960499784],[-15.08173539881382,13.876491807505984],[-15.39877031092446,13.86036876063092],[-15.62459632003994,13.62358734786956],[-16.713728807023468,13.594958604379853]]]}},{"type":"Feature","properties":{"abbrev":"Solnd.","name":"Somaliland","name_long":"Somaliland","iso_a2":null,"iso_a3":null,"iso_n3":null},"geometry":{"type":"Polygon","coordinates":[[[48.938129510296505,9.451748968946674],[48.48673587422701,8.83762624758998],[47.78942,8.003],[46.94832848489796,7.996876532417388],[43.67875,9.18358000000012],[43.29697513201876,9.540477403191744],[42.92812,10.021940000000143],[42.55876,10.57258000000013],[42.77685184100096,10.92687856693442],[43.14530480324214,11.462039699748857],[43.470659620951665,11.27770986576388],[43.66666832863484,10.864169216348158],[44.11780358254282,10.445538438351605],[44.614259067570856,10.442205308468942],[45.55694054543915,10.698029486529776],[46.645401238803004,10.816549383991173],[47.525657586462785,11.12722809492999],[48.02159630716778,11.193063869669743],[48.37878380716927,11.375481675660126],[48.94820641459347,11.41062164961852],[48.94200524271844,11.394266058798166],[48.93849124532261,10.982327378783452],[48.93823286316109,9.973500067581483],[48.938129510296505,9.451748968946674]]]}},{"type":"Feature","properties":{"abbrev":"Sudan","name":"Sudan","name_long":"Sudan","iso_a2":"SD","iso_a3":"SDN","iso_n3":"729"},"geometry":{"type":"Polygon","coordinates":[[[33.963392794971185,9.464285229420625],[33.82496348090751,9.484060845715362],[33.842130853028145,9.981914637215993],[33.72195924818311,10.325262079630193],[33.20693808456178,10.720111638406593],[33.086766479716744,11.441141267476496],[33.20693808456178,12.179338268667093],[32.743419037302544,12.248007757149992],[32.67474954881965,12.02483191958072],[32.073891524594785,11.973329803218519],[32.31423473428475,11.68148447716652],[32.400071594888345,11.080626452941488],[31.850715687025517,10.531270545078826],[31.35286189552488,9.810240916008695],[30.83784073190338,9.70723668328452],[29.99663949798855,10.290927335388687],[29.61895731133285,10.084918869940225],[29.515953078608614,9.793073543888056],[29.000931914987174,9.60423245056029],[28.966597170745782,9.398223985111654],[27.970889587744352,9.398223985111654],[27.833550610778783,9.60423245056029],[27.112520981708883,9.638567194801624],[26.752006167173818,9.466893473594496],[26.477328213242515,9.552730334198088],[25.962307049621018,10.136420986302424],[25.790633328413946,10.411098940233728],[25.069603699343986,10.273759963267992],[24.794925745412684,9.810240916008695],[24.53741516360202,8.91753756573172],[24.19406772118765,8.728696472403897],[23.886979580860665,8.619729712933065],[23.805813429466752,8.666318874542526],[23.459012892355986,8.95428579348902],[23.394779087017298,9.26506785729225],[23.55724979014292,9.68121816653877],[23.554304233502194,10.08925527591532],[22.97754357269275,10.71446259199854],[22.864165480244253,11.142395127807617],[22.87622,11.384610000000123],[22.50869,11.67936],[22.49762,12.26024],[22.28801,12.64605],[21.93681,12.588180000000136],[22.03759,12.95546],[22.29658,13.37232],[22.18329,13.78648],[22.51202,14.09318],[22.30351,14.32682],[22.56795000000011,14.944290000000137],[23.024590000000103,15.68072],[23.886890000000108,15.61084],[23.837660000000138,19.580470000000105],[23.850000000000136,20],[25.00000000000011,20.00304],[25.00000000000011,22],[29.02,22],[32.9,22],[36.86623,22],[37.1887200000001,21.01885],[36.96941,20.83744000000013],[37.11470000000014,19.80796],[37.4817900000001,18.61409],[37.86276,18.36786],[38.410089959473225,17.99830739997031],[37.90400000000011,17.42754],[37.16747,17.263140000000135],[36.852530000000115,16.95655],[36.75389,16.29186],[36.32322,14.82249],[36.42951,14.42211],[36.27022,13.563330000000121],[35.86363,12.57828],[35.26049,12.08286],[34.83163000000013,11.318960000000118],[34.73115000000013,10.910170000000107],[34.25745,10.63009],[33.96162,9.58358],[33.963392794971185,9.464285229420625]]]}},{"type":"Feature","properties":{"abbrev":"Som.","name":"Somalia","name_long":"Somalia","iso_a2":"SO","iso_a3":"SOM","iso_n3":"706"},"geometry":{"type":"Polygon","coordinates":[[[49.72862,11.5789],[50.25878,11.67957],[50.73202,12.0219],[51.1112,12.02464],[51.13387,11.74815],[51.04153,11.16651],[51.04531,10.6409],[50.83418,10.27972],[50.55239,9.19874],[50.07092,8.08173],[49.4527,6.80466],[48.59455,5.33911],[47.74079,4.2194],[46.56476,2.85529],[45.56399,2.04576],[44.06815,1.05283],[43.13597,0.2922],[42.04157,-0.91916],[41.81095,-1.44647],[41.58513,-1.68325],[40.993,-0.85829],[40.98105,2.78452],[41.85508309264397,3.918911920483727],[42.12861,4.23413],[42.76967,4.25259],[43.66087,4.95755],[44.9636,5.00162],[47.78942,8.003],[48.48673587422695,8.837626247589995],[48.93812951029645,9.451748968946617],[48.93823286316103,9.973500067581512],[48.938491245322496,10.982327378783467],[48.94200524271835,11.394266058798138],[48.94820475850974,11.410617281697963],[49.26776,11.43033],[49.72862,11.5789]]]}},{"type":"Feature","properties":{"abbrev":"Swz.","name":"Swaziland","name_long":"Swaziland","iso_a2":"SZ","iso_a3":"SWZ","iso_n3":"748"},"geometry":{"type":"Polygon","coordinates":[[[32.07166548028107,-26.73382008230491],[31.868060337051077,-27.177927341421277],[31.282773064913325,-27.285879408478998],[30.68596194837448,-26.74384531016953],[30.676608514129637,-26.398078301704608],[30.949666782359913,-26.022649021104147],[31.04407962415715,-25.731452325139443],[31.333157586397906,-25.66019052500895],[31.837777947728064,-25.84333180105135],[31.98577924981197,-26.291779880480227],[32.07166548028107,-26.73382008230491]]]}},{"type":"Feature","properties":{"abbrev":"Chad","name":"Chad","name_long":"Chad","iso_a2":"TD","iso_a3":"TCD","iso_n3":"148"},"geometry":{"type":"Polygon","coordinates":[[[14.495787387762903,12.859396267137356],[14.595781284247607,13.330426947477859],[13.95447675950561,13.353448798063766],[13.956698846094127,13.996691189016929],[13.540393507550789,14.367133693901222],[13.97217,15.68437],[15.247731154041846,16.627305813050782],[15.30044111497972,17.927949937405003],[15.685740594147774,19.957180080642384],[15.903246697664313,20.387618923417506],[15.487148064850146,20.730414537025638],[15.47106,21.04845],[15.096887648181848,21.30851878507491],[14.8513,22.862950000000126],[15.86085,23.40972],[19.84926,21.49509],[23.837660000000138,19.580470000000105],[23.886890000000108,15.61084],[23.024590000000103,15.68072],[22.56795000000011,14.944290000000137],[22.30351,14.32682],[22.51202,14.09318],[22.18329,13.78648],[22.29658,13.37232],[22.03759,12.95546],[21.93681,12.588180000000136],[22.28801,12.64605],[22.49762,12.26024],[22.50869,11.67936],[22.87622,11.384610000000123],[22.864165480244253,11.142395127807617],[22.23112918466876,10.97188873946061],[21.72382164885954,10.567055568885962],[21.00086836109631,9.47598521569148],[20.05968549976427,9.01270600019484],[19.09400800952608,9.07484691002577],[18.81200971850927,8.982914536978626],[18.911021762780592,8.630894680206438],[18.389554884523303,8.281303615751881],[17.964929640380888,7.890914008002994],[16.70598839688637,7.508327541529979],[16.456184523187403,7.734773667832939],[16.290561557691888,7.754307359239418],[16.106231723706742,7.497087917506462],[15.279460483469164,7.421924546738012],[15.43609174974574,7.692812404811889],[15.120865512765306,8.382150173369437],[14.97999555833769,8.796104234243444],[14.544466586981855,8.96586131432224],[13.954218377344091,9.549494940626685],[14.171466098699113,10.021378282100045],[14.62720055508106,9.920919297724595],[14.9093538753948,9.99212942142276],[15.467872755605244,9.982336737503543],[14.923564894275046,10.891325181517516],[14.960151808337683,11.555574042197236],[14.89336,12.21905],[14.495787387762903,12.859396267137356]]]}},{"type":"Feature","properties":{"abbrev":"Togo","name":"Togo","name_long":"Togo","iso_a2":"TG","iso_a3":"TGO","iso_n3":"768"},"geometry":{"type":"Polygon","coordinates":[[[1.865240512712319,6.142157701029731],[1.060121697604927,5.928837388528876],[0.836931186536333,6.279978745952149],[0.570384148774849,6.914358628767189],[0.490957472342245,7.411744289576475],[0.712029249686878,8.31246450442383],[0.461191847342121,8.677222601756014],[0.365900506195885,9.465003973829482],[0.367579990245389,10.19121287682718],[-0.049784715159944,10.706917832883931],[0.023802524423701,11.018681748900804],[0.899563022474069,10.99733938236426],[0.772335646171484,10.470808213742359],[1.077795037448738,10.175606594275024],[1.425060662450136,9.825395412633],[1.46304284018467,9.334624335157088],[1.664477573258381,9.12859039960938],[1.618950636409238,6.832038072126237],[1.865240512712319,6.142157701029731]]]}},{"type":"Feature","properties":{"abbrev":"Tun.","name":"Tunisia","name_long":"Tunisia","iso_a2":"TN","iso_a3":"TUN","iso_n3":"788"},"geometry":{"type":"Polygon","coordinates":[[[9.482139926805274,30.307556057246188],[9.055602654668148,32.10269196220129],[8.439102817426118,32.50628489840082],[8.430472853233368,32.74833730725595],[7.612641635782182,33.34411489514896],[7.524481642292244,34.09737641045146],[8.140981479534304,34.65514598239379],[8.376367628623768,35.47987600355594],[8.217824334352315,36.433176988260286],[8.420964389691676,36.94642731378316],[9.509993523810607,37.349994411766545],[10.210002475636317,37.230001735984814],[10.18065026209453,36.724037787415085],[11.028867221733348,37.09210317641396],[11.100025668999251,36.899996039368915],[10.600004510143094,36.410000108377375],[10.593286573945136,35.94744436293281],[10.939518670300687,35.698984076473494],[10.807847120821009,34.83350718844919],[10.149592726287125,34.3307730168977],[10.339658644256616,33.78574168551532],[10.856836378633687,33.76874013929128],[11.108500603895122,33.293342800422195],[11.48878746913101,33.13699575452314],[11.432253452203696,32.368903103152874],[10.944789666394456,32.081814683555365],[10.636901482799487,31.761420803345754],[9.950225050505082,31.376069647745254],[10.056575148161755,30.9618313664936],[9.970017124072854,30.539324856075243],[9.482139926805274,30.307556057246188]]]}},{"type":"Feature","properties":{"abbrev":"Tanz.","name":"Tanzania","name_long":"Tanzania","iso_a2":"TZ","iso_a3":"TZA","iso_n3":"834"},"geometry":{"type":"Polygon","coordinates":[[[33.9037111971046,-0.95],[34.07262,-1.05982],[37.69869,-3.09699],[37.7669,-3.67712],[39.20222,-4.67677],[38.74054,-5.90895],[38.79977,-6.47566],[39.44,-6.839999999999861],[39.470000000000134,-7.1],[39.19469,-7.7039],[39.25203,-8.00781],[39.18652,-8.48551],[39.53574,-9.112369999999883],[39.9496,-10.0984],[40.31659,-10.317099999999868],[39.521,-10.89688],[38.42755659358778,-11.285202325081627],[37.82764,-11.26879],[37.47129,-11.56876],[36.77515099462289,-11.594537448780784],[36.514081658684404,-11.720938002166747],[35.31239790216915,-11.439146416879169],[34.559989047999466,-11.520020033415847],[34.28,-10.16],[33.940837724096525,-9.693673841980285],[33.73972,-9.41715],[32.75937544122138,-9.230599053589003],[32.19186486179194,-8.930358981973257],[31.556348097466635,-8.762048841998647],[31.15775133695007,-8.594578747317314],[30.74,-8.34],[30.2,-7.08],[29.62,-6.52],[29.419992710088305,-5.939998874539299],[29.51998660657307,-5.419978936386258],[29.33999759290037,-4.499983412294114],[29.753512404099865,-4.452389418153302],[30.11632,-4.09012],[30.50554,-3.56858],[30.75224,-3.35931],[30.74301,-3.03431],[30.52766,-2.80762],[30.46967,-2.41383],[30.758308953583136,-2.287250257988376],[30.81613488131785,-1.698914076345375],[30.4191048520193,-1.134659112150416],[30.769860000000108,-1.01455],[31.86617,-1.02736],[33.9037111971046,-0.95]]]}},{"type":"Feature","properties":{"abbrev":"Uga.","name":"Uganda","name_long":"Uganda","iso_a2":"UG","iso_a3":"UGA","iso_n3":"800"},"geometry":{"type":"Polygon","coordinates":[[[31.86617,-1.02736],[30.769860000000108,-1.01455],[30.4191048520193,-1.134659112150416],[29.821518588996124,-1.443322442229771],[29.579466180141022,-1.341313164885605],[29.58783776217217,-0.587405694179381],[29.8195,-0.2053],[29.875778842902434,0.597379868976361],[30.08615359876279,1.062312730306417],[30.46850752129029,1.583805446779706],[30.852670118948136,1.849396470543752],[31.17414920423596,2.204465236821306],[30.77332,2.339890000000139],[30.83385,3.50917],[31.24556,3.7819],[31.88145,3.55827],[32.68642,3.79232],[33.3900000000001,3.79],[34.005,4.249884947362147],[34.47913,3.5556],[34.59607,3.053740000000118],[35.03599,1.90584],[34.6721,1.17694],[34.18,0.515],[33.893568969666994,0.109813537861839],[33.9037111971046,-0.95],[31.86617,-1.02736]]]}},{"type":"Feature","properties":{"abbrev":"S.Af.","name":"South Africa","name_long":"South Africa","iso_a2":"ZA","iso_a3":"ZAF","iso_n3":"710"},"geometry":{"type":"Polygon","coordinates":[[[31.521001417778876,-29.257386976846252],[31.325561150851,-29.401977634398914],[30.901762729625343,-29.90995696382804],[30.622813348113823,-30.42377573010613],[30.05571618014278,-31.140269463832958],[28.925552605919535,-32.17204111097249],[28.2197558936771,-32.771952813448856],[27.464608188595975,-33.2269637997788],[26.419452345492825,-33.61495045342619],[25.90966434093349,-33.6670402971764],[25.780628289500697,-33.944646091448334],[25.172861769315972,-33.796851495093584],[24.677853224392123,-33.98717579522455],[23.594043409934642,-33.794474379208154],[22.988188917744733,-33.91643075941698],[22.574157342222236,-33.864082533505304],[21.542799106541025,-34.258838799782936],[20.689052768647002,-34.417175388325234],[20.071261020597632,-34.79513681410799],[19.61640506356457,-34.81916635512371],[19.193278435958717,-34.46259897230979],[18.85531456876987,-34.444305515278465],[18.42464318204938,-33.99787281670896],[18.377410922934615,-34.13652068454807],[18.244499139079917,-33.86775156019802],[18.250080193767445,-33.28143075941444],[17.92519046394844,-32.61129078545343],[18.247909783611192,-32.42913136162456],[18.22176150887148,-31.66163298922567],[17.56691775886887,-30.725721123987547],[17.064416131262703,-29.87864104585916],[17.062917514726223,-29.875953871379984],[16.344976840895242,-28.576705010697697],[16.824017368240902,-28.082161553664466],[17.218928663815404,-28.35594329194681],[17.387497185951503,-28.78351409272978],[17.83615197110953,-28.85637786226132],[18.464899122804752,-29.04546192801728],[19.002127312911085,-28.972443129188864],[19.894734327888614,-28.461104831660776],[19.895767856534434,-24.767790215760588],[20.165725538827186,-24.917961928000768],[20.758609246511835,-25.86813648855145],[20.66647016773544,-26.477453301704923],[20.88960900237174,-26.828542982695915],[21.60589603036939,-26.726533705351756],[22.105968865657868,-26.280256036079138],[22.57953169118059,-25.979447523708146],[22.8242712745149,-25.500458672794768],[23.312096795350186,-25.26868987396572],[23.73356977712271,-25.390129489851613],[24.211266717228792,-25.670215752873574],[25.025170525825786,-25.7196700985769],[25.66466637543772,-25.486816094669713],[25.76584882986521,-25.174845472923675],[25.94165205252216,-24.69637338633322],[26.4857532081233,-24.616326592713104],[26.786406691197413,-24.240690606383485],[27.119409620886245,-23.574323011979775],[28.01723595552525,-22.827753594659075],[29.43218834810904,-22.091312758067588],[29.839036899542972,-22.102216485281176],[30.322883335091774,-22.27161183033393],[30.65986535006709,-22.151567478119915],[31.191409132621285,-22.2515096981724],[31.670397983534652,-23.658969008073864],[31.93058882012425,-24.369416599222536],[31.75240848158188,-25.484283949487413],[31.837777947728064,-25.84333180105135],[31.333157586397906,-25.66019052500895],[31.04407962415715,-25.731452325139443],[30.949666782359913,-26.022649021104147],[30.676608514129637,-26.398078301704608],[30.68596194837448,-26.74384531016953],[31.282773064913325,-27.285879408478998],[31.868060337051077,-27.177927341421277],[32.07166548028107,-26.73382008230491],[32.830120477028885,-26.742191664336197],[32.580264926897684,-27.470157566031816],[32.46213260267845,-28.301011244420557],[32.20338870619304,-28.752404880490072],[31.521001417778876,-29.257386976846252]],[[28.97826256685724,-28.955596612261715],[28.541700066855498,-28.64750172293757],[28.07433841320778,-28.851468601193588],[27.532511020627478,-29.24271087007536],[26.999261915807637,-29.875953871379984],[27.749397006956485,-30.64510588961222],[28.107204624145425,-30.54573211031495],[28.29106937023991,-30.2262167294543],[28.84839969250774,-30.070050551068253],[29.018415154748023,-29.74376555757737],[29.325166456832587,-29.257386976846252],[28.97826256685724,-28.955596612261715]]]}},{"type":"Feature","properties":{"abbrev":"Zambia","name":"Zambia","name_long":"Zambia","iso_a2":"ZM","iso_a3":"ZMB","iso_n3":"894"},"geometry":{"type":"Polygon","coordinates":[[[32.75937544122132,-9.230599053589058],[33.2313879737753,-9.6767216935648],[33.48568769708359,-10.525558770391115],[33.315310499817286,-10.796549981329697],[33.11428917820191,-11.607198174692314],[33.306422153463075,-12.435778090060218],[32.991764357237884,-12.783870537978272],[32.68816531752313,-13.712857761289275],[33.214024692525214,-13.971860039936153],[30.17948123548183,-14.796099134991527],[30.274255812305107,-15.507786960515212],[29.516834344203147,-15.644677829656388],[28.947463413211263,-16.04305144619444],[28.825868768028496,-16.389748630440614],[28.467906121542683,-16.468400160388846],[27.598243442502756,-17.290830580314008],[27.04442711763073,-17.938026218337434],[26.70677330903564,-17.961228936436484],[26.381935255648926,-17.8460421688579],[25.264225701608012,-17.736539808831417],[25.08444339366457,-17.661815687737374],[25.07695031098226,-17.57882333747662],[24.682349074001507,-17.353410739819473],[24.033861525170778,-17.295843194246324],[23.215048455506064,-17.52311614346598],[22.56247846852426,-16.898451429921813],[21.887842644953874,-16.08031015387688],[21.933886346125917,-12.898437188369359],[24.016136508894675,-12.911046237848574],[23.930922072045377,-12.565847670138854],[24.079905226342845,-12.191296888887365],[23.904153680118185,-11.722281589406322],[24.017893507592586,-11.23729827234709],[23.912215203555718,-10.926826267137514],[24.25715538910399,-10.951992689663657],[24.31451622894795,-11.26282642989927],[24.78316979340295,-11.238693536018964],[25.418118116973204,-11.330935967659961],[25.752309604604733,-11.784965101776358],[26.553087599399618,-11.924439792532127],[27.164419793412463,-11.608748467661075],[27.38879886242378,-12.132747491100666],[28.155108676879987,-12.272480564017897],[28.523561639121027,-12.698604424696683],[28.934285922976837,-13.248958428605135],[29.69961388521949,-13.257226657771831],[29.61600141777123,-12.178894545137311],[29.34154788586909,-12.360743910372413],[28.642417433392353,-11.971568698782315],[28.372253045370428,-11.793646742401393],[28.49606977714177,-10.789883721564044],[28.67368167492893,-9.605924981324932],[28.449871046672826,-9.164918308146085],[28.7348665707625,-8.526559340044578],[29.002912225060467,-8.407031752153472],[30.346086053190813,-8.238256524288218],[30.740015496551788,-8.340007419470915],[31.15775133695005,-8.594578747317366],[31.556348097466497,-8.762048841998642],[32.19186486179197,-8.930358981973278],[32.75937544122132,-9.230599053589058]]]}},{"type":"Feature","properties":{"abbrev":"Zimb.","name":"Zimbabwe","name_long":"Zimbabwe","iso_a2":"ZW","iso_a3":"ZWE","iso_n3":"716"},"geometry":{"type":"Polygon","coordinates":[[[31.191409132621285,-22.2515096981724],[30.65986535006709,-22.151567478119915],[30.322883335091774,-22.27161183033393],[29.839036899542972,-22.102216485281176],[29.43218834810904,-22.091312758067588],[28.794656202924212,-21.63945403410745],[28.021370070108617,-21.485975030200585],[27.72722781750326,-20.851801853114715],[27.724747348753255,-20.499058526290387],[27.296504754350508,-20.391519870691],[26.164790887158485,-19.29308562589494],[25.85039147309473,-18.714412937090536],[25.649163445750162,-18.53602589281899],[25.264225701608012,-17.736539808831417],[26.381935255648926,-17.8460421688579],[26.70677330903564,-17.961228936436484],[27.04442711763073,-17.938026218337434],[27.598243442502756,-17.290830580314008],[28.467906121542683,-16.468400160388846],[28.825868768028496,-16.389748630440614],[28.947463413211263,-16.04305144619444],[29.516834344203147,-15.644677829656388],[30.274255812305107,-15.507786960515212],[30.338954705534544,-15.880839125230244],[31.173063999157677,-15.860943698797872],[31.636498243951195,-16.071990248277885],[31.8520406430406,-16.319417006091378],[32.32823896661022,-16.392074069893752],[32.847638787575846,-16.713398125884616],[32.84986087416439,-17.97905730557718],[32.65488569512715,-18.672089939043495],[32.61199425632489,-19.419382826416275],[32.772707960752626,-19.715592136313298],[32.65974327976258,-20.304290052982317],[32.50869306817344,-20.395292250248307],[32.244988234188014,-21.116488539313693],[31.191409132621285,-22.2515096981724]]]}},{"type":"Feature","properties":{"abbrev":"Alb.","name":"Albania","name_long":"Albania","iso_a2":"AL","iso_a3":"ALB","iso_n3":"008"},"geometry":{"type":"Polygon","coordinates":[[[20.590247430104906,41.855404161133606],[20.463175083099202,41.51508901627533],[20.605181919037364,41.08622630468522],[21.0200403174764,40.84272695572588],[20.999989861747224,40.58000397395397],[20.674996779063633,40.43499990494303],[20.615000441172754,40.11000682225938],[20.15001590341052,39.62499766698397],[19.980000441170144,39.69499339452341],[19.960001661873207,39.91500580500605],[19.406081984136733,40.250773423822466],[19.319058872157143,40.72723012955356],[19.40354983895429,41.40956574153546],[19.540027296637106,41.71998607031276],[19.37176883309496,41.877547512370654],[19.304486118250793,42.19574514420782],[19.738051385179627,42.688247382165564],[19.801613396898688,42.50009349219084],[20.0707,42.58863],[20.283754510181893,42.32025950781508],[20.52295,42.21787],[20.590247430104906,41.855404161133606]]]}},{"type":"Feature","properties":{"abbrev":"Aust.","name":"Austria","name_long":"Austria","iso_a2":"AT","iso_a3":"AUT","iso_n3":"040"},"geometry":{"type":"Polygon","coordinates":[[[16.979666782304037,48.123497015976305],[16.90375410326726,47.71486562762833],[16.340584344150415,47.71290192320123],[16.534267612380376,47.49617096616912],[16.202298211337364,46.85238597267696],[16.011663852612656,46.6836107448117],[15.137091912504985,46.65870270444703],[14.63247155117483,46.43181732846955],[13.806475457421527,46.509306138691215],[12.376485223040817,46.76755910906985],[12.153088006243054,47.11539317482645],[11.16482791509327,46.94157949481273],[11.048555942436536,46.75135854754634],[10.44270145024663,46.89354625099743],[9.932448357796659,46.92072805438296],[9.479969516649021,47.10280996356337],[9.632931756232978,47.34760122332999],[9.59422610844635,47.52505809182027],[9.896068149463188,47.580196845075704],[10.402083774465211,47.30248769793916],[10.544504021861627,47.56639923765377],[11.426414015354737,47.523766181012974],[12.141357456112788,47.703083401065776],[12.620759718484491,47.67238760028441],[12.932626987365948,47.467645575544],[13.02585127122049,47.637583523135824],[12.884102817443903,48.28914581968792],[13.243357374737,48.416114813829054],[13.595945672264437,48.87717194273715],[14.33889773932472,48.5553052842072],[14.901447381254057,48.964401760445824],[15.253415561593982,49.039074205107575],[16.02964725105022,48.73389903420793],[16.49928266771877,48.78580801044511],[16.960288120194576,48.5969823268506],[16.879982944413,48.47001333270947],[16.979666782304037,48.123497015976305]]]}},{"type":"Feature","properties":{"abbrev":"Belg.","name":"Belgium","name_long":"Belgium","iso_a2":"BE","iso_a3":"BEL","iso_n3":"056"},"geometry":{"type":"Polygon","coordinates":[[[3.314971144228537,51.345780951536085],[4.047071160507527,51.26725861266857],[4.973991326526914,51.475023708698124],[5.606975945670001,51.037298488969775],[6.156658155958779,50.80372101501058],[6.043073357781111,50.128051662794235],[5.782417433300906,50.09032786722122],[5.674051954784829,49.529483547557504],[4.799221632515809,49.985373033236385],[4.286022983425084,49.907496649772554],[3.588184441755686,50.37899241800358],[3.123251580425801,50.780363267614575],[2.658422071960274,50.79684804951574],[2.513573032246143,51.14850617126183],[3.314971144228537,51.345780951536085]]]}},{"type":"Feature","properties":{"abbrev":"Bulg.","name":"Bulgaria","name_long":"Bulgaria","iso_a2":"BG","iso_a3":"BGR","iso_n3":"100"},"geometry":{"type":"Polygon","coordinates":[[[22.65714969248299,44.23492300066128],[22.944832391051847,43.82378530534713],[23.33230228037632,43.89701080990471],[24.100679152124172,43.74105133724785],[25.569271681426926,43.68844472917472],[26.065158725699746,43.94349376075126],[27.242399529740908,44.175986029632405],[27.970107049275075,43.81246816667521],[28.558081495891997,43.70746165625813],[28.03909508638472,43.293171698574184],[27.67389773937805,42.577892361006214],[27.99672041190539,42.00735871028779],[27.135739373490477,42.14148489030134],[26.117041863720797,41.82690460872456],[26.106138136507212,41.32889883072778],[25.197201368925445,41.23448598893053],[24.49264489105803,41.583896185872035],[23.692073601992348,41.30908091894385],[22.952377150166452,41.33799388281115],[22.88137373219743,41.99929718685026],[22.380525750424592,42.32025950781509],[22.54501183440962,42.46136200618804],[22.43659467946128,42.580321153323936],[22.60480146657133,42.898518785161144],[22.986018507588483,43.211161200526966],[22.50015669118028,43.64281443946099],[22.410446404721597,44.00806346289995],[22.65714969248299,44.23492300066128]]]}},{"type":"Feature","properties":{"abbrev":"Bela.","name":"Belarus","name_long":"Belarus","iso_a2":"BY","iso_a3":"BLR","iso_n3":"112"},"geometry":{"type":"Polygon","coordinates":[[[23.48412763844985,53.91249766704114],[24.450683628037037,53.905702216194754],[25.536353794056993,54.28242340760253],[25.7684326514798,54.84696259217509],[26.58827924979039,55.16717560487167],[26.494331495883753,55.615106919977634],[27.10245975109453,55.783313707087686],[28.176709425577993,56.16912995057881],[29.229513380660308,55.918344224666356],[29.371571893030673,55.670090643936184],[29.896294386522356,55.78946320253041],[30.873909132620007,55.55097646750341],[30.971835971813135,55.08154775656404],[30.757533807098717,54.81177094178432],[31.38447228366374,54.157056382862436],[31.79142418796224,53.97463857687212],[31.731272820774507,53.79402944601202],[32.405598585751164,53.618045355842035],[32.69364301934604,53.35142080343212],[32.304519484188226,53.1327261419729],[31.49764367038293,53.1674268662569],[31.305200636528014,53.07399587667321],[31.54001834486226,52.74205231384636],[31.785998162571587,52.101677964885454],[30.927549269338982,52.04235342061438],[30.619454380014844,51.822806098022376],[30.555117221811457,51.31950348571566],[30.157363722460897,51.41613841410147],[29.254938185347925,51.368234361366895],[28.99283532076353,51.602044379271476],[28.61761274589225,51.42771393493484],[28.24161502453657,51.57222707783907],[27.454066196408434,51.59230337178447],[26.337958611768556,51.83228872334793],[25.327787713327005,51.91065603291855],[24.553106316839518,51.888461005249184],[24.00507775238421,51.61744395609446],[23.52707075368437,51.57845408793023],[23.508002150168693,52.02364655212473],[23.199493849386187,52.486977444053664],[23.799198846133375,52.69109935160657],[23.80493493011778,53.089731350306074],[23.527535841575002,53.470121568406555],[23.48412763844985,53.91249766704114]]]}},{"type":"Feature","properties":{"abbrev":"Switz.","name":"Switzerland","name_long":"Switzerland","iso_a2":"CH","iso_a3":"CHE","iso_n3":"756"},"geometry":{"type":"Polygon","coordinates":[[[9.59422610844635,47.52505809182027],[9.632931756232978,47.34760122332999],[9.479969516649021,47.10280996356337],[9.932448357796659,46.92072805438296],[10.44270145024663,46.89354625099743],[10.363378126678612,46.48357127540986],[9.92283654139038,46.31489940040919],[9.182881707403055,46.44021474871698],[8.966305779667806,46.036931871111186],[8.489952426801324,46.005150865251686],[8.31662967289438,46.16364248309086],[7.755992058959833,45.82449005795931],[7.273850945676656,45.776947740250776],[6.843592970414504,45.99114655210061],[6.500099724970425,46.42967275652944],[6.022609490593537,46.27298981382047],[6.037388950229001,46.725778713561866],[6.768713820023606,47.2877082383037],[6.736571079138059,47.541801255882845],[7.192202182655507,47.44976552997102],[7.46675906742223,47.62058197691181],[8.317301466514152,47.61357982033626],[8.522611932009765,47.830827541691285],[9.59422610844635,47.52505809182027]]]}},{"type":"Feature","properties":{"abbrev":"B.H.","name":"Bosnia and Herz.","name_long":"Bosnia and Herzegovina","iso_a2":"BA","iso_a3":"BIH","iso_n3":"070"},"geometry":{"type":"Polygon","coordinates":[[[19.00548628101012,44.86023366960916],[19.36803,44.863],[19.11761,44.42307000000011],[19.59976,44.03847],[19.454,43.56810000000013],[19.21852,43.52384],[19.03165,43.43253],[18.70648,43.20011],[18.56,42.65],[17.674921502358984,43.02856252702361],[17.297373488034452,43.44634064388736],[16.91615644701733,43.66772247982567],[16.456442905348865,44.04123973243128],[16.23966027188453,44.35114329688571],[15.750026075918981,44.81871165626256],[15.959367303133376,45.233776760430935],[16.318156772535872,45.00412669532591],[16.534939406000206,45.21160757097772],[17.002146030351014,45.233776760430935],[17.861783481526402,45.067740383477144],[18.553214145591653,45.08158966733145],[19.00548628101012,44.86023366960916]]]}},{"type":"Feature","properties":{"abbrev":"Cz. Rep.","name":"Czech Rep.","name_long":"Czech Republic","iso_a2":"CZ","iso_a3":"CZE","iso_n3":"203"},"geometry":{"type":"Polygon","coordinates":[[[16.960288120194576,48.5969823268506],[16.49928266771877,48.78580801044511],[16.02964725105022,48.73389903420793],[15.253415561593982,49.039074205107575],[14.901447381254057,48.964401760445824],[14.33889773932472,48.5553052842072],[13.595945672264437,48.87717194273715],[13.031328973043431,49.30706818297324],[12.521024204161192,49.547415269562734],[12.415190870827445,49.96912079528057],[12.240111118222558,50.266337795607285],[12.966836785543194,50.484076443069085],[13.338131951560285,50.73323436136435],[14.056227654688172,50.92691762959429],[14.307013380600637,51.117267767941414],[14.570718214586066,51.002339382524276],[15.01699588385867,51.10667409932158],[15.490972120839727,50.78472992614321],[16.23862674323857,50.69773265237984],[16.176253289462267,50.42260732685791],[16.719475945714436,50.21574656839354],[16.868769158605655,50.47397370055603],[17.55456709155112,50.36214590107641],[17.64944502123899,50.049038397819956],[18.392913852622172,49.98862864847075],[18.853144158613617,49.49622976337764],[18.554971144289482,49.49501536721878],[18.399993523846177,49.31500051533004],[18.170498488037964,49.271514797556435],[18.104972771891852,49.04398346617531],[17.913511590250465,48.996492824899086],[17.88648481616181,48.90347524677371],[17.545006951577108,48.80001902932537],[17.101984897538898,48.81696889911711],[16.960288120194576,48.5969823268506]]]}},{"type":"Feature","properties":{"abbrev":"Ger.","name":"Germany","name_long":"Germany","iso_a2":"DE","iso_a3":"DEU","iso_n3":"276"},"geometry":{"type":"Polygon","coordinates":[[[9.921906365609232,54.983104153048025],[9.9395797054529,54.596641954153256],[10.950112338920519,54.363607082733154],[10.939466993868448,54.00869334575258],[11.956252475643282,54.19648550070116],[12.518440382546714,54.47037059184799],[13.647467075259499,54.0755109727059],[14.119686313542559,53.75702912049103],[14.353315463934168,53.248171291713106],[14.074521111719434,52.98126251892535],[14.4375997250022,52.624850165408304],[14.685026482815713,52.089947414755216],[14.607098422919648,51.745188096719964],[15.016995883858781,51.10667409932171],[14.570718214586122,51.00233938252438],[14.307013380600665,51.11726776794137],[14.056227654688314,50.92691762959435],[13.338131951560397,50.73323436136428],[12.96683678554325,50.48407644306917],[12.240111118222671,50.26633779560723],[12.415190870827473,49.96912079528062],[12.521024204161336,49.54741526956275],[13.031328973043514,49.30706818297324],[13.595945672264577,48.877171942737164],[13.243357374737116,48.41611481382903],[12.884102817443873,48.28914581968786],[13.025851271220517,47.63758352313595],[12.932626987366064,47.467645575544],[12.620759718484521,47.672387600284424],[12.141357456112871,47.70308340106578],[11.426414015354851,47.52376618101306],[10.544504021861597,47.5663992376538],[10.402083774465325,47.30248769793916],[9.896068149463188,47.580196845075704],[9.594226108446376,47.5250580918202],[8.522611932009795,47.83082754169135],[8.317301466514095,47.61357982033627],[7.466759067422288,47.62058197691192],[7.593676385131062,48.33301911070373],[8.099278598674855,49.01778351500343],[6.658229607783709,49.20195831969164],[6.186320428094177,49.463802802114515],[6.242751092156993,49.90222565367873],[6.043073357781111,50.128051662794235],[6.156658155958779,50.80372101501058],[5.988658074577813,51.851615709025054],[6.589396599970826,51.852029120483394],[6.842869500362383,52.22844025329755],[7.092053256873896,53.14404328064489],[6.905139601274129,53.48216217713064],[7.100424838905268,53.69393219666267],[7.936239454793962,53.74829580343379],[8.121706170289485,53.52779246684429],[8.800734490604668,54.020785630908904],[8.572117954145368,54.39564647075405],[8.526229282270208,54.96274363872516],[9.282048780971136,54.83086538351631],[9.921906365609232,54.983104153048025]]]}},{"type":"Feature","properties":{"abbrev":"Den.","name":"Denmark","name_long":"Denmark","iso_a2":"DK","iso_a3":"DNK","iso_n3":"208"},"geometry":{"type":"MultiPolygon","coordinates":[[[[12.69000613775563,55.609990953180784],[12.089991082414741,54.80001455343793],[11.043543328504228,55.364863796604254],[10.903913608451631,55.77995473898875],[12.370904168353292,56.111407375708836],[12.69000613775563,55.609990953180784]]],[[[10.912181837618363,56.458621324277914],[10.667803989309988,56.08138336854722],[10.369992710011985,56.19000722922473],[9.649984978889307,55.469999498102055],[9.921906365609175,54.98310415304806],[9.282048780971136,54.83086538351616],[8.526229282270236,54.96274363872499],[8.120310906617588,55.517722683323626],[8.08997684086225,56.540011705137594],[8.256581658571264,56.8099693874303],[8.543437534223386,57.110002753316905],[9.42446902836761,57.17206614849948],[9.775558709358563,57.447940782289656],[10.580005730846153,57.73001658795485],[10.546105991262692,57.215732733786155],[10.250000034230226,56.89001618105047],[10.369992710011985,56.609981594460834],[10.912181837618363,56.458621324277914]]]]}},{"type":"Feature","properties":{"abbrev":"Sp.","name":"Spain","name_long":"Spain","iso_a2":"ES","iso_a3":"ESP","iso_n3":"724"},"geometry":{"type":"Polygon","coordinates":[[[-9.034817674180246,41.88057058365967],[-8.984433152695672,42.59277517350627],[-9.392883673530648,43.0266246608127],[-7.978189663108309,43.748337714200986],[-6.754491746436756,43.567909450853925],[-5.411886359061596,43.574239813809676],[-4.347842779955783,43.40344920508504],[-3.51753170410609,43.4559007838613],[-1.901351284177764,43.42280202897834],[-1.502770961910528,43.03401439063043],[0.338046909190581,42.57954600683954],[0.701590610363894,42.7957343613326],[1.826793247087153,42.34338471126569],[2.985998976258458,42.47301504166986],[3.039484083680549,41.892120266276905],[2.091841668312185,41.22608856868309],[0.810524529635188,41.01473196060934],[0.721331007499401,40.678318386389236],[0.106691521819869,40.12393362076202],[-0.278711310212941,39.30997813573272],[0.111290724293838,38.73851430923303],[-0.467123582349103,38.29236583104115],[-0.683389451490598,37.642353827457825],[-1.438382127274849,37.443063666324214],[-2.146452602538119,36.67414419203728],[-3.415780808923387,36.65889964451118],[-4.368900926114719,36.677839056946155],[-4.995219285492211,36.32470815687964],[-5.377159796561457,35.946850083961465],[-5.866432257500904,36.02981659600606],[-6.236693894872175,36.367677110330334],[-6.520190802425404,36.94291331638732],[-7.453725551778092,37.09778758396607],[-7.537105475281024,37.42890432387623],[-7.166507941099865,37.803894354802225],[-7.029281175148796,38.07576406508977],[-7.374092169616318,38.37305858006492],[-7.098036668313128,39.03007274022378],[-7.498632371439725,39.62957103124181],[-7.066591559263529,39.71189158788277],[-7.026413133156595,40.184524237624245],[-6.864019944679385,40.33087189387483],[-6.851126674822552,41.11108266861753],[-6.389087693700915,41.381815497394655],[-6.668605515967656,41.883386949219584],[-7.251308966490824,41.91834605566505],[-7.422512986673795,41.79207469335983],[-8.013174607769912,41.790886135417125],[-8.263856980817792,42.28046865495034],[-8.67194576662672,42.13468943945496],[-9.034817674180246,41.88057058365967]]]}},{"type":"Feature","properties":{"abbrev":"Est.","name":"Estonia","name_long":"Estonia","iso_a2":"EE","iso_a3":"EST","iso_n3":"233"},"geometry":{"type":"Polygon","coordinates":[[[24.312862583114622,57.79342357037698],[24.42892785004216,58.38341339785328],[24.061198357853186,58.25737457949341],[23.42656009287668,58.612753404364625],[23.339795363058645,59.18724030215338],[24.604214308376182,59.46585378685502],[25.86418908051664,59.61109039981134],[26.949135776484525,59.445803331125774],[27.981114129353244,59.47538808861287],[28.13169925305175,59.30082510033092],[27.42016645682494,58.72458120384424],[27.71668582531572,57.79189911562437],[27.28818484875151,57.47452830670383],[26.463532342237787,57.47638865826633],[25.602809685984365,57.84752879498657],[25.16459354014927,57.97015696881519],[24.312862583114622,57.79342357037698]]]}},{"type":"Feature","properties":{"abbrev":"Fin.","name":"Finland","name_long":"Finland","iso_a2":"FI","iso_a3":"FIN","iso_n3":"246"},"geometry":{"type":"Polygon","coordinates":[[[28.591929559043194,69.06477692328666],[28.445943637818658,68.36461294216404],[29.977426385220607,67.69829702419266],[29.054588657352326,66.94428620062193],[30.21765,65.80598],[29.544429559046986,64.94867157659048],[30.44468468600371,64.20445343693909],[30.035872430142714,63.55281362573855],[31.51609215671112,62.86768748641288],[31.139991082490894,62.35769277612441],[30.211107212044446,61.78002777774969],[28.069997592895277,60.503516547275844],[26.25517296723697,60.4239606797625],[24.496623976344523,60.05731639265165],[22.869694858499457,59.846373196036225],[22.290763787533592,60.39192129174154],[21.322244093519316,60.72016998965952],[21.544866163832694,61.7053294948718],[21.05921105315369,62.60739329695874],[21.536029493910803,63.18973501245587],[22.442744174903993,63.81781037053129],[24.730511508897536,64.90234365504082],[25.398067661243942,65.11142650009373],[25.294043003040404,65.53434642197045],[23.903378533633802,66.00692739527962],[23.565879754335583,66.39605093043743],[23.53947309743444,67.93600861273525],[21.978534783626117,68.6168456081807],[20.645592889089528,69.10624726020087],[21.244936150810673,69.37044302029307],[22.356237827247412,68.84174144151491],[23.66204959483076,68.89124746365054],[24.735679152126725,68.64955678982146],[25.68921268077636,69.09211375596904],[26.17962202322624,69.82529897732614],[27.732292107867863,70.16419302029625],[29.01557295097197,69.76649119737799],[28.591929559043194,69.06477692328666]]]}},{"type":"Feature","properties":{"abbrev":"Fr.","name":"France","name_long":"France","iso_a2":"FR","iso_a3":"FRA","iso_n3":"250"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-52.55642473001839,2.504705308437053],[-52.93965715189498,2.124857692875622],[-53.418465135295264,2.053389187016037],[-53.554839240113495,2.334896551925965],[-53.77852067728889,2.376702785650053],[-54.08806250671728,2.105556545414629],[-54.52475419779975,2.311848863123785],[-54.27122962097578,2.738747870286943],[-54.18428402364474,3.194172268075235],[-54.01150387227682,3.622569891774858],[-54.399542202356514,4.212611395683481],[-54.47863298197922,4.896755682795643],[-53.95804460307093,5.756548163267809],[-53.618452928264844,5.646529038918402],[-52.88214128275408,5.409850979021599],[-51.82334286152593,4.565768133966145],[-51.65779741067888,4.156232408053029],[-52.24933753112398,3.241094468596287],[-52.55642473001839,2.504705308437053]]],[[[9.560016310269134,42.15249197037957],[9.229752231491773,41.38000682226445],[8.77572309737536,41.58361196549444],[8.54421268070783,42.25651662858308],[8.746009148807588,42.62812185319396],[9.390000848028905,43.00998484961474],[9.560016310269134,42.15249197037957]]],[[[3.588184441755715,50.37899241800358],[4.28602298342514,49.907496649772554],[4.799221632515753,49.98537303323633],[5.674051954784885,49.52948354755745],[5.897759230176376,49.44266714130717],[6.186320428094206,49.46380280211446],[6.658229607783539,49.20195831969155],[8.099278598674772,49.01778351500337],[7.593676385131062,48.33301911070373],[7.46675906742223,47.620581976911865],[7.192202182655535,47.44976552997099],[6.736571079138088,47.54180125588289],[6.768713820023634,47.28770823830368],[6.037388950228972,46.72577871356191],[6.022609490593567,46.272989813820516],[6.500099724970454,46.42967275652944],[6.843592970414562,45.99114655210067],[6.802355177445662,45.70857982032867],[7.096652459347837,45.333098863295874],[6.749955275101711,45.02851797136759],[7.007562290076663,44.25476675066139],[7.549596388386163,44.12790110938482],[7.435184767291843,43.69384491634918],[6.529245232783068,43.12889232031836],[4.556962517931396,43.39965098731158],[3.10041059735272,43.075200507167125],[2.985998976258486,42.47301504166989],[1.826793247087181,42.34338471126566],[0.701590610363922,42.79573436133265],[0.338046909190581,42.579546006839564],[-1.502770961910471,43.03401439063049],[-1.901351284177735,43.42280202897834],[-1.384225226232957,44.02261037859017],[-1.193797573237362,46.014917710954876],[-2.225724249673789,47.06436269793821],[-2.963276129559574,47.570326646507965],[-4.491554938159481,47.95495433205642],[-4.592349819344747,48.68416046812695],[-3.295813971357745,48.901692409859635],[-1.616510789384932,48.644421291694584],[-1.933494025063254,49.776341864615766],[-0.98946895995536,49.347375800160876],[1.338761020522753,50.12717316344526],[1.6390010921385,50.946606350297515],[2.513573032246171,51.14850617126185],[2.658422071960331,50.79684804951566],[3.123251580425716,50.78036326761452],[3.588184441755715,50.37899241800358]]]]}},{"type":"Feature","properties":{"abbrev":"U.K.","name":"United Kingdom","name_long":"United Kingdom","iso_a2":"GB","iso_a3":"GBR","iso_n3":"826"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-5.661948614921897,54.55460317648385],[-6.197884894220977,53.86756500916334],[-6.953730231137996,54.073702297575636],[-7.572167934591079,54.05995636658599],[-7.366030646178785,54.595840969452695],[-7.572167934591079,55.1316222194549],[-6.733847011736145,55.1728600124238],[-5.661948614921897,54.55460317648385]]],[[[-3.005004848635281,58.63500010846633],[-4.073828497728016,57.55302480735525],[-3.055001796877661,57.69001902936095],[-1.959280564776918,57.68479970969951],[-2.219988165689301,56.87001740175353],[-3.119003058271118,55.973793036515474],[-2.085009324543023,55.90999848085127],[-2.005675679673857,55.80490285035023],[-1.11499101399221,54.62498647726539],[-0.4304849918542,54.46437612570216],[0.184981316742039,53.32501414653103],[0.469976840831777,52.92999949809197],[1.681530795914739,52.739520168664],[1.559987827164377,52.09999848083601],[1.050561557630914,51.806760565795685],[1.449865349950301,51.28942780212196],[0.550333693045502,50.765738837275876],[-0.78751746255864,50.77498891865622],[-2.489997524414377,50.50001862243124],[-2.956273972984036,50.696879991247016],[-3.617448085942328,50.22835561787272],[-4.542507900399244,50.34183706318566],[-5.245023159191135,49.95999990498108],[-5.776566941745301,50.15967763935682],[-4.309989793301838,51.21000112568916],[-3.414850633142123,51.42600861266925],[-3.422719467108323,51.42684816740609],[-4.984367234710874,51.593466091510976],[-5.267295701508885,51.99140045837458],[-4.222346564134853,52.301355699261364],[-4.770013393564113,52.840004991255626],[-4.579999152026915,53.49500377055517],[-3.093830673788659,53.404547400669685],[-3.092079637047106,53.404440822963544],[-2.945008510744344,53.984999701546684],[-3.614700825433034,54.600936773292574],[-3.63000545898933,54.615012925833014],[-4.844169073903004,54.790971177786844],[-5.082526617849226,55.06160065369937],[-4.719112107756644,55.50847260194348],[-5.047980922862109,55.78398550070752],[-5.586397670911139,55.31114614523682],[-5.644998745130181,56.275014960344805],[-6.149980841486354,56.78500967063354],[-5.786824713555291,57.81884837506465],[-5.009998745127575,58.63001333275005],[-4.211494513353557,58.55084503847917],[-3.005004848635281,58.63500010846633]]]]}},{"type":"Feature","properties":{"abbrev":"Cro.","name":"Croatia","name_long":"Croatia","iso_a2":"HR","iso_a3":"HRV","iso_n3":"191"},"geometry":{"type":"Polygon","coordinates":[[[18.829838087650046,45.908877671891844],[19.072768995854176,45.52151113543209],[19.39047570158459,45.236515611342384],[19.00548628101012,44.86023366960916],[18.553214145591653,45.08158966733145],[17.861783481526402,45.067740383477144],[17.002146030351014,45.233776760430935],[16.534939406000206,45.21160757097772],[16.318156772535872,45.00412669532591],[15.959367303133376,45.233776760430935],[15.750026075918981,44.81871165626256],[16.23966027188453,44.35114329688571],[16.456442905348865,44.04123973243128],[16.91615644701733,43.66772247982567],[17.297373488034452,43.44634064388736],[17.674921502358984,43.02856252702361],[18.56,42.65],[18.450016310304818,42.47999136002932],[17.509970330483327,42.849994615239154],[16.930005730871642,43.20999848080038],[16.015384555737683,43.50721548112722],[15.174453973052096,44.243191229827914],[15.376250441151795,44.31791535092208],[14.920309279040508,44.73848399512946],[14.901602410550877,45.07606028907611],[14.258747592839995,45.233776760430935],[13.952254672917034,44.80212352149687],[13.656975538801191,45.13693512631596],[13.67940311041582,45.48414907488501],[13.715059848697251,45.500323798192426],[14.4119682145855,45.46616567644742],[14.595109490627918,45.63494090431282],[14.935243767972963,45.471695054702764],[15.327674594797427,45.452316392593325],[15.323953891672431,45.731782538427694],[15.671529575267641,45.8341535507979],[15.768732944408612,46.23810822202353],[16.564808383864943,46.50375092221981],[16.882515089595415,46.38063182228444],[17.630066359129557,45.9517691106941],[18.45606245288286,45.75948110613615],[18.829838087650046,45.908877671891844]]]}},{"type":"Feature","properties":{"abbrev":"Ire.","name":"Ireland","name_long":"Ireland","iso_a2":"IE","iso_a3":"IRL","iso_n3":"372"},"geometry":{"type":"Polygon","coordinates":[[[-6.197884894220991,53.86756500916336],[-6.03298539877761,53.15316417094435],[-6.788856573910849,52.260117906292336],[-8.56161658368356,51.669301255899356],[-9.977085740590269,51.82045482035307],[-9.16628251793078,52.86462881124268],[-9.688524542672454,53.8813626165853],[-8.327987433292009,54.66451894796863],[-7.572167934591064,55.13162221945487],[-7.366030646178785,54.59584096945272],[-7.572167934591064,54.059956366586],[-6.953730231138067,54.073702297575636],[-6.197884894220991,53.86756500916336]]]}},{"type":"Feature","properties":{"abbrev":"Greece","name":"Greece","name_long":"Greece","iso_a2":"GR","iso_a3":"GRC","iso_n3":"300"},"geometry":{"type":"MultiPolygon","coordinates":[[[[23.699980096133004,35.70500438083553],[24.24666507334868,35.368022365860156],[25.02501549652888,35.42499563246198],[25.769207797964185,35.35401805270908],[25.745023227651586,35.179997666966216],[26.290002882601723,35.29999034274792],[26.16499759288766,35.004995429009796],[24.724982130642303,34.91998769788961],[24.735007358506945,35.08499054619759],[23.51497846852811,35.27999156345098],[23.699980096133004,35.70500438083553]]],[[[26.604195590936282,41.562114569661105],[26.29460208507578,40.93626129817426],[26.056942172965506,40.824123440100834],[25.447677036244187,40.85254547786147],[24.92584842296094,40.94706167252323],[23.714811232200816,40.687129218095116],[24.407998894964066,40.1249929876241],[23.899967889102584,39.96200552017558],[23.3429993018608,39.96099782974579],[22.81398766448896,40.476005153966554],[22.62629886240478,40.25656118423919],[22.849747755634805,39.65931081802577],[23.3500272966526,39.19001129816726],[22.973099399515547,38.97090322524966],[23.530016310324953,38.51000112563847],[24.025024855248944,38.21999298761645],[24.040011020613605,37.655014553369426],[23.115002882589152,37.92001129816222],[23.409971958111072,37.409990749657396],[22.774971958108633,37.30501007745656],[23.15422529469862,36.422505804992056],[22.490028110451107,36.41000010837746],[21.670026482843696,36.8449864771942],[21.295010613701574,37.644989325504696],[21.120034213961333,38.31032339126273],[20.730032179454582,38.769985256498785],[20.217712029712857,39.340234686839636],[20.15001590341052,39.62499766698403],[20.615000441172782,40.11000682225943],[20.674996779063633,40.434999904943055],[20.99998986174728,40.58000397395397],[21.02004031747643,40.84272695572588],[21.674160597426976,40.93127452245798],[22.05537763844427,41.14986583105269],[22.597308383889015,41.130487168943205],[22.76177,41.3048],[22.952377150166566,41.33799388281122],[23.692073601992462,41.30908091894386],[24.49264489105803,41.58389618587205],[25.197201368925533,41.23448598893066],[26.106138136507184,41.32889883072784],[26.117041863720914,41.82690460872473],[26.604195590936282,41.562114569661105]]]]}},{"type":"Feature","properties":{"abbrev":"Iceland","name":"Iceland","name_long":"Iceland","iso_a2":"IS","iso_a3":"ISL","iso_n3":"352"},"geometry":{"type":"Polygon","coordinates":[[[-14.508695441129236,66.45589223903141],[-14.739637417041605,65.8087482774403],[-13.60973222497981,65.12667104761987],[-14.909833746794902,64.36408193628868],[-17.794438035543422,63.67874909123385],[-18.656245896874992,63.49638296167582],[-19.97275468594276,63.64363495549153],[-22.762971971110158,63.960178941495386],[-21.778484259517683,64.40211579045551],[-23.95504391121911,64.89112986923348],[-22.184402635170358,65.0849681667603],[-22.227423265053332,65.37859365504272],[-24.326184047939336,65.61118927678847],[-23.65051469572309,66.26251902939522],[-22.134922451250883,66.41046865504687],[-20.57628373867955,65.73211212835143],[-19.05684160000159,66.27660085719477],[-17.79862382655905,65.99385325790978],[-16.167818976292125,66.52679230413587],[-14.508695441129236,66.45589223903141]]]}},{"type":"Feature","properties":{"abbrev":"Hun.","name":"Hungary","name_long":"Hungary","iso_a2":"HU","iso_a3":"HUN","iso_n3":"348"},"geometry":{"type":"Polygon","coordinates":[[[16.202298211337364,46.85238597267696],[16.534267612380376,47.49617096616912],[16.340584344150415,47.71290192320123],[16.90375410326726,47.71486562762833],[16.979666782304037,48.123497015976305],[17.48847293464982,47.86746613218621],[17.857132602620027,47.758428860050365],[18.696512892336926,47.880953681014404],[18.77702477384767,48.081768296900634],[19.17436486173989,48.11137889260387],[19.661363559658497,48.26661489520866],[19.769470656013112,48.202691148463614],[20.239054396249347,48.32756724709692],[20.473562045989866,48.56285004332181],[20.801293979584926,48.623854071642384],[21.872236362401736,48.31997081155002],[22.08560835133485,48.42226430927179],[22.640819939878753,48.15023956968735],[22.710531447040495,47.88219391538941],[22.099767693782834,47.6724392767167],[21.62651492685387,46.99423777931816],[21.02195234547125,46.3160879583519],[20.220192498462836,46.127468980486555],[19.596044549241583,46.17172984474454],[18.82983808764996,45.90887767189193],[18.45606245288286,45.759481106136136],[17.630066359129557,45.95176911069419],[16.8825150895953,46.38063182228444],[16.564808383864857,46.50375092221983],[16.370504998447416,46.8413272161665],[16.202298211337364,46.85238597267696]]]}},{"type":"Feature","properties":{"abbrev":"Italy","name":"Italy","name_long":"Italy","iso_a2":"IT","iso_a3":"ITA","iso_n3":"380"},"geometry":{"type":"MultiPolygon","coordinates":[[[[15.520376010813834,38.23115509699147],[15.160242954171736,37.44404551853782],[15.309897902089006,37.1342194687318],[15.099988234119449,36.6199872909954],[14.335228712632016,36.996630967754754],[13.826732618879928,37.10453135838019],[12.431003859108813,37.61294993748381],[12.570943637755136,38.12638113051968],[13.741156447004585,38.03496552179536],[14.76124922044616,38.143873602850505],[15.520376010813834,38.23115509699147]]],[[[9.210011834356266,41.20999136002422],[9.809975213264977,40.5000088567661],[9.669518670295673,39.177376410471794],[9.21481774255949,39.240473334300134],[8.80693566247973,38.90661774347847],[8.428302443077115,39.17184703221662],[8.38825320805094,40.378310858718805],[8.15999840661766,40.95000722916379],[8.709990675500109,40.89998444270523],[9.210011834356266,41.20999136002422]]],[[[12.376485223040843,46.76755910906987],[13.806475457421556,46.50930613869119],[13.698109978905478,46.016778062517375],[13.937630242578335,45.591015936864665],[13.141606479554298,45.73669179949541],[12.328581170306306,45.38177806251485],[12.383874952858605,44.88537425391908],[12.261453484759159,44.600482082694015],[12.589237094786483,44.091365871754476],[13.526905958722494,43.5877273626379],[14.029820997787027,42.76100779883248],[15.142569614327956,41.955139675456905],[15.926191033601896,41.96131500911574],[16.169897088290412,41.74029490820342],[15.889345737377797,41.5410822617182],[16.785001661860576,41.179605617836586],[17.519168735431208,40.87714345963224],[18.376687452882575,40.35562490494266],[18.4802470231954,40.168866278639825],[18.293385044028096,39.81077444107325],[17.738380161213286,40.2776710068303],[16.869595981522338,40.44223460546385],[16.448743116937322,39.79540070246648],[17.1714896989715,39.42469981542072],[17.05284061042934,38.9028712021373],[16.635088331781844,38.8435724960824],[16.100960727613057,37.98589874933418],[15.684086948314501,37.90884918878703],[15.687962680736321,38.214592800441864],[15.891981235424707,38.750942491199226],[16.109332309644312,38.96454702407769],[15.718813510814641,39.544072374014945],[15.413612501698822,40.04835683853517],[14.998495721098237,40.17294871679093],[14.70326826341477,40.604550279292624],[14.060671827865264,40.78634796809544],[13.627985060285397,41.188287258461656],[12.88808190273042,41.25308950455562],[12.10668257004491,41.70453481705741],[11.191906365614187,42.35542531998967],[10.511947869517797,42.931462510747224],[10.200028924204048,43.920006822274615],[9.702488234097814,44.03627879493132],[8.88894616052687,44.36633616797954],[8.428560825238577,44.23122813575242],[7.850766635783201,43.76714793555524],[7.435184767291843,43.69384491634918],[7.549596388386163,44.12790110938482],[7.007562290076663,44.25476675066139],[6.749955275101711,45.02851797136759],[7.096652459347837,45.333098863295874],[6.802355177445662,45.70857982032867],[6.843592970414562,45.99114655210067],[7.273850945676685,45.77694774025076],[7.755992058959833,45.82449005795928],[8.31662967289438,46.163642483090854],[8.489952426801295,46.00515086525175],[8.966305779667834,46.036931871111165],[9.182881707403112,46.44021474871698],[9.922836541390353,46.31489940040919],[10.363378126678668,46.483571275409844],[10.442701450246602,46.893546250997446],[11.048555942436508,46.7513585475464],[11.164827915093326,46.94157949481274],[12.153088006243081,47.11539317482644],[12.376485223040843,46.76755910906987]]]]}},{"type":"Feature","properties":{"abbrev":"Kos.","name":"Kosovo","name_long":"Kosovo","iso_a2":null,"iso_a3":null,"iso_n3":null},"geometry":{"type":"Polygon","coordinates":[[[20.76216,42.05186],[20.71731000000011,41.84711],[20.59023,41.85541],[20.52295,42.21787],[20.28374,42.3202500000001],[20.0707,42.58863],[20.25758,42.81275000000011],[20.49679,42.88469],[20.63508,43.21671],[20.81448,43.27205],[20.95651,43.13094],[21.143395,43.06868500000012],[21.27421,42.90959],[21.43866,42.86255],[21.63302,42.67717],[21.77505,42.6827],[21.66292,42.43922],[21.54332,42.3202500000001],[21.57663598940212,42.24522439706186],[21.35270000000014,42.2068],[20.76216,42.05186]]]}},{"type":"Feature","properties":{"abbrev":"Lith.","name":"Lithuania","name_long":"Lithuania","iso_a2":"LT","iso_a3":"LTU","iso_n3":"440"},"geometry":{"type":"Polygon","coordinates":[[[22.731098667092652,54.327536932993326],[22.65105187347254,54.582740993866736],[22.75776370615526,54.85657440858138],[22.315723504330577,55.015298570365864],[21.268448927503467,55.190481675835315],[21.055800408622414,56.03107636171106],[22.201156853939494,56.33780182557948],[23.878263787539964,56.273671373105266],[24.860684441840757,56.37252838807963],[25.000934279080894,56.16453074810484],[25.533046502390334,56.10029694276603],[26.494331495883753,55.615106919977634],[26.58827924979039,55.16717560487167],[25.7684326514798,54.84696259217509],[25.536353794056993,54.28242340760253],[24.450683628037037,53.905702216194754],[23.48412763844985,53.91249766704114],[23.24398725758951,54.22056671814914],[22.731098667092652,54.327536932993326]]]}},{"type":"Feature","properties":{"abbrev":"Lat.","name":"Latvia","name_long":"Latvia","iso_a2":"LV","iso_a3":"LVA","iso_n3":"428"},"geometry":{"type":"Polygon","coordinates":[[[21.055800408622414,56.03107636171106],[21.09042361825797,56.78387278912293],[21.581866489353672,57.41187063254993],[22.524341261492875,57.75337433535076],[23.318452996522097,57.00623647727487],[24.12072960785343,57.02569265403277],[24.312862583114622,57.79342357037698],[25.16459354014927,57.97015696881519],[25.602809685984365,57.84752879498657],[26.463532342237787,57.47638865826633],[27.28818484875151,57.47452830670383],[27.77001590344093,57.24425812441123],[27.855282016722526,56.75932648378429],[28.176709425577993,56.16912995057881],[27.10245975109453,55.783313707087686],[26.494331495883753,55.615106919977634],[25.533046502390334,56.10029694276603],[25.000934279080894,56.16453074810484],[24.860684441840757,56.37252838807963],[23.878263787539964,56.273671373105266],[22.201156853939494,56.33780182557948],[21.055800408622414,56.03107636171106]]]}},{"type":"Feature","properties":{"abbrev":"Lux.","name":"Luxembourg","name_long":"Luxembourg","iso_a2":"LU","iso_a3":"LUX","iso_n3":"442"},"geometry":{"type":"Polygon","coordinates":[[[6.043073357781111,50.128051662794235],[6.242751092156993,49.90222565367873],[6.186320428094177,49.463802802114515],[5.897759230176405,49.44266714130703],[5.674051954784829,49.529483547557504],[5.782417433300906,50.09032786722122],[6.043073357781111,50.128051662794235]]]}},{"type":"Feature","properties":{"abbrev":"Mkd.","name":"Macedonia","name_long":"Macedonia","iso_a2":"MK","iso_a3":"MKD","iso_n3":"807"},"geometry":{"type":"Polygon","coordinates":[[[20.59023,41.85541],[20.71731000000011,41.84711],[20.76216,42.05186],[21.35270000000014,42.2068],[21.57663598940212,42.24522439706186],[21.917080000000112,42.30364],[22.38052575042468,42.32025950781508],[22.881373732197346,41.999297186850356],[22.952377150166512,41.33799388281119],[22.76177,41.3048],[22.597308383889015,41.130487168943205],[22.05537763844427,41.14986583105269],[21.674160597426976,40.93127452245795],[21.0200403174764,40.84272695572588],[20.60518,41.08622],[20.46315,41.5150900000001],[20.59023,41.85541]]]}},{"type":"Feature","properties":{"abbrev":"Mda.","name":"Moldova","name_long":"Moldova","iso_a2":"MD","iso_a3":"MDA","iso_n3":"498"},"geometry":{"type":"Polygon","coordinates":[[[26.619336785597795,48.22072622333347],[26.857823520624805,48.368210761094495],[27.522537469195154,48.467119452501116],[28.259546746541844,48.15556224221342],[28.670891147585163,48.1181485052341],[29.12269819511303,47.84909516050646],[29.05086795422733,47.51022695575249],[29.41513512545274,47.34664520933257],[29.559674106573112,46.928582872091326],[29.908851759569302,46.67436066343146],[29.838210076626297,46.52532583270169],[30.02465864433537,46.42393667254503],[29.75997195813639,46.34998769793536],[29.170653924279886,46.3792623968287],[29.072106967899295,46.517677720722496],[28.862972446414062,46.43788930926383],[28.93371748222162,46.2588304713725],[28.659987420371575,45.93998688413164],[28.485269402792767,45.5969070501459],[28.233553501099042,45.48828318946837],[28.0544429867754,45.944586086605625],[28.160017937947714,46.37156260841722],[28.128030226359044,46.810476386088254],[27.551166212684848,47.40511709247083],[27.233872918412743,47.82677094175638],[26.924176059687568,48.123264472030996],[26.619336785597795,48.22072622333347]]]}},{"type":"Feature","properties":{"abbrev":"Mont.","name":"Montenegro","name_long":"Montenegro","iso_a2":"ME","iso_a3":"MNE","iso_n3":"499"},"geometry":{"type":"Polygon","coordinates":[[[19.801613396898688,42.50009349219084],[19.738051385179627,42.688247382165564],[19.3044900000001,42.19574],[19.37177000000014,41.87755],[19.16246,41.95502],[18.88214,42.28151],[18.45,42.48],[18.56,42.65],[18.70648,43.20011],[19.03165,43.43253],[19.21852,43.52384],[19.48389,43.35229],[19.63,43.21377997027054],[19.95857,43.10604],[20.3398,42.89852],[20.25758,42.81275000000011],[20.0707,42.58863],[19.801613396898688,42.50009349219084]]]}},{"type":"Feature","properties":{"abbrev":"Nor.","name":"Norway","name_long":"Norway","iso_a2":"NO","iso_a3":"NOR","iso_n3":"578"},"geometry":{"type":"MultiPolygon","coordinates":[[[[28.165547316202915,71.18547435168051],[31.29341840996548,70.45378774685992],[30.005435011522792,70.1862588568849],[31.10107872897512,69.55808014594486],[29.399580519332886,69.15691600206307],[28.591929559043194,69.0647769232867],[29.01557295097197,69.76649119737797],[27.73229210786789,70.16419302029628],[26.1796220232263,69.82529897732616],[25.68921268077639,69.09211375596902],[24.73567915212672,68.64955678982145],[23.662049594830762,68.89124746365053],[22.356237827247412,68.84174144151494],[21.24493615081073,69.37044302029312],[20.64559288908958,69.10624726020085],[20.025268995857914,69.06513865831272],[19.878559604581255,68.40719432237262],[17.99386844246439,68.56739126247734],[17.729181756265348,68.01055186631623],[16.76887861498554,68.01393667263139],[16.108712192456835,67.3024555528369],[15.108411492583059,66.19386688909543],[13.55568973150909,64.78702769638147],[13.919905226302205,64.44542064071611],[13.57191613124877,64.04911408146967],[12.57993533697393,64.06621898055835],[11.93056928879423,63.128317572676984],[11.992064243221535,61.800362453856565],[12.631146681375242,61.29357168237009],[12.3003658382749,60.11793284773006],[11.468271925511175,59.432393296946],[11.027368605196926,58.856149400459394],[10.356556837616097,59.46980703392538],[8.382000359743643,58.31328847923328],[7.048748406613299,58.07888418235728],[5.665835402050419,58.58815542259367],[5.308234490590735,59.66323191999382],[4.992078077829007,61.970998033284275],[5.912900424837885,62.614472968182696],[8.553411085655766,63.45400828719647],[10.527709181366788,64.48603831649748],[12.358346795306375,65.87972585719316],[14.761145867581604,67.81064158799515],[16.43592736172897,68.56320547146169],[19.184028354578516,69.81744415961782],[21.378416375420613,70.25516937934606],[23.023742303161583,70.20207184516626],[24.546543409938522,71.03049673123724],[26.370049676221807,70.98626170519537],[28.165547316202915,71.18547435168051]]],[[[24.72412,77.85385],[22.49032,77.44493],[20.72601,77.67704],[21.41611,77.93504],[20.8119,78.25463],[22.88426,78.45494],[23.28134,78.07954],[24.72412,77.85385]]],[[[18.25183,79.70175],[21.54383,78.95611],[19.02737,78.5626],[18.47172,77.82669],[17.59441,77.63796],[17.1182,76.80941],[15.91315,76.77045],[13.76259,77.38035],[14.66956,77.73565],[13.1706,78.02493],[11.22231,78.8693],[10.44453,79.65239],[13.17077,80.01046],[13.71852,79.66039],[15.14282,79.67431],[15.52255,80.01608],[16.99085,80.05086],[18.25183,79.70175]]],[[[25.447625359811894,80.40734039989451],[27.4075057309135,80.05640574820046],[25.92465050629818,79.51783397085455],[23.02446577321362,79.4000117052291],[20.075188429451885,79.56682322866726],[19.897266473070914,79.84236196564751],[18.462263624757924,79.85988027619442],[17.368015170977458,80.31889618602702],[20.455992059010697,80.59815562613224],[21.9079447771154,80.35767934846209],[22.919252557067438,80.65714427359349],[25.447625359811894,80.40734039989451]]]]}},{"type":"Feature","properties":{"abbrev":"Neth.","name":"Netherlands","name_long":"Netherlands","iso_a2":"NL","iso_a3":"NLD","iso_n3":"528"},"geometry":{"type":"Polygon","coordinates":[[[6.074182570020923,53.510403347378144],[6.905139601274129,53.48216217713064],[7.092053256873896,53.14404328064489],[6.842869500362383,52.22844025329755],[6.589396599970826,51.852029120483394],[5.988658074577813,51.851615709025054],[6.156658155958779,50.80372101501058],[5.606975945670001,51.037298488969775],[4.973991326526914,51.475023708698124],[4.047071160507527,51.26725861266857],[3.314971144228537,51.34575511331991],[3.830288527043137,51.62054454203195],[4.705997348661185,53.09179840759776],[6.074182570020923,53.510403347378144]]]}},{"type":"Feature","properties":{"abbrev":"Pol.","name":"Poland","name_long":"Poland","iso_a2":"PL","iso_a3":"POL","iso_n3":"616"},"geometry":{"type":"Polygon","coordinates":[[[15.01699588385867,51.10667409932158],[14.607098422919535,51.745188096719964],[14.685026482815688,52.0899474147552],[14.4375997250022,52.62485016540838],[14.074521111719491,52.98126251892543],[14.353315463934138,53.24817129171297],[14.119686313542587,53.75702912049103],[14.802900424873458,54.05070628520575],[16.36347700365573,54.513158677785725],[17.622831658608675,54.85153595643291],[18.62085859546164,54.68260569927078],[18.696254510175464,54.43871877706929],[19.660640089606403,54.42608388937393],[20.892244500418624,54.31252492941253],[22.731098667092652,54.327536932993326],[23.24398725758951,54.22056671814914],[23.48412763844985,53.91249766704114],[23.527535841575002,53.470121568406555],[23.80493493011778,53.089731350306074],[23.799198846133375,52.69109935160657],[23.199493849386187,52.486977444053664],[23.508002150168693,52.02364655212473],[23.52707075368437,51.57845408793023],[24.029985792748903,50.70540660257518],[23.922757195743262,50.42488108987875],[23.426508416444392,50.30850576435745],[22.518450148211603,49.47677358661974],[22.776418898212626,49.02739533140962],[22.558137648211755,49.085738023467144],[21.607808058364213,49.47010732685409],[20.887955356538413,49.32877228453583],[20.41583947111985,49.43145335549977],[19.825022820726872,49.21712535256923],[19.320712517990472,49.571574001659194],[18.909574822676316,49.435845852244576],[18.853144158613617,49.49622976337764],[18.392913852622172,49.98862864847075],[17.64944502123899,50.049038397819956],[17.55456709155112,50.36214590107641],[16.868769158605655,50.47397370055603],[16.719475945714436,50.21574656839354],[16.176253289462267,50.42260732685791],[16.23862674323857,50.69773265237984],[15.490972120839727,50.78472992614321],[15.01699588385867,51.10667409932158]]]}},{"type":"Feature","properties":{"abbrev":"Port.","name":"Portugal","name_long":"Portugal","iso_a2":"PT","iso_a3":"PRT","iso_n3":"620"},"geometry":{"type":"Polygon","coordinates":[[[-9.034817674180246,41.88057058365967],[-8.67194576662672,42.13468943945496],[-8.263856980817792,42.28046865495034],[-8.013174607769912,41.790886135417125],[-7.422512986673795,41.79207469335983],[-7.251308966490824,41.91834605566505],[-6.668605515967656,41.883386949219584],[-6.389087693700915,41.381815497394655],[-6.851126674822552,41.11108266861753],[-6.864019944679385,40.33087189387483],[-7.026413133156595,40.184524237624245],[-7.066591559263529,39.71189158788277],[-7.498632371439725,39.62957103124181],[-7.098036668313128,39.03007274022378],[-7.374092169616318,38.37305858006492],[-7.029281175148796,38.07576406508977],[-7.166507941099865,37.803894354802225],[-7.537105475281024,37.42890432387623],[-7.453725551778092,37.09778758396607],[-7.855613165711985,36.83826854099627],[-8.382816127953689,36.97888011326246],[-8.898856980820327,36.86880931248078],[-8.746101446965554,37.65134552667661],[-8.839997524439879,38.26624339451761],[-9.287463751655224,38.3584858261586],[-9.526570603869715,38.73742910415491],[-9.446988898140232,39.39206614842837],[-9.048305223008427,39.75509308527877],[-8.977353481471681,40.15930613866581],[-8.768684047877102,40.76063894303019],[-8.79085323733031,41.18433401139126],[-8.99078935386757,41.54345937760364],[-9.034817674180246,41.88057058365967]]]}},{"type":"Feature","properties":{"abbrev":"Rom.","name":"Romania","name_long":"Romania","iso_a2":"RO","iso_a3":"ROU","iso_n3":"642"},"geometry":{"type":"Polygon","coordinates":[[[22.710531447040495,47.88219391538941],[23.142236362406802,48.09634105080695],[23.76095828623741,47.985598456405455],[24.40205610525038,47.98187775328042],[24.866317172960578,47.73752574318831],[25.20774336111299,47.89105642352747],[25.9459411964024,47.987148749374214],[26.19745039236693,48.22088125263035],[26.619336785597795,48.22072622333347],[26.924176059687568,48.123264472030996],[27.233872918412743,47.82677094175638],[27.551166212684848,47.40511709247083],[28.128030226359044,46.810476386088254],[28.160017937947714,46.37156260841722],[28.0544429867754,45.944586086605625],[28.233553501099042,45.48828318946837],[28.679779493939378,45.304030870131704],[29.149724969201653,45.46492544207245],[29.603289015427432,45.293308010431126],[29.626543409958767,45.03539093686239],[29.141611769331835,44.82021027279904],[28.837857700320203,44.913873806328056],[28.558081495891997,43.70746165625813],[27.970107049275075,43.81246816667521],[27.242399529740908,44.175986029632405],[26.065158725699746,43.94349376075126],[25.569271681426926,43.68844472917472],[24.100679152124172,43.74105133724785],[23.33230228037632,43.89701080990471],[22.944832391051847,43.82378530534713],[22.65714969248299,44.23492300066128],[22.4740084164406,44.40922760678177],[22.705725538837356,44.57800283464702],[22.459022251075936,44.7025171982543],[22.14508792490281,44.47842234962059],[21.562022739353605,44.7689472519655],[21.483526238702233,45.18117015235778],[20.874312778413355,45.416375433934235],[20.762174920339987,45.734573065771436],[20.220192498462836,46.127468980486555],[21.02195234547125,46.3160879583519],[21.62651492685387,46.99423777931816],[22.099767693782834,47.6724392767167],[22.710531447040495,47.88219391538941]]]}},{"type":"Feature","properties":{"abbrev":"Rus.","name":"Russia","name_long":"Russian Federation","iso_a2":"RU","iso_a3":"RUS","iso_n3":"643"},"geometry":{"type":"MultiPolygon","coordinates":[[[[143.64800744036287,50.74760040954151],[144.65414757708564,48.976390692737596],[143.17392785051723,49.30655141865037],[142.5586682476501,47.861575018904915],[143.53349246640406,46.83672801369249],[143.5052771343726,46.13790761980948],[142.74770063697392,46.74076487892657],[142.0920300640545,45.96675527605879],[141.90692508358504,46.80592886004655],[142.0184428244709,47.780132961612935],[141.90444461483506,48.85918854429956],[142.13580000220568,49.61516307229746],[142.1799833518153,50.95234243428192],[141.59407596249002,51.93543488220254],[141.68254601457366,53.30196645772878],[142.60693403541075,53.762145087287905],[142.2097489768154,54.22547597921687],[142.654786411713,54.36588084575388],[142.91461551327657,53.704577541714734],[143.26084760963207,52.74076040303905],[143.23526777564766,51.75666026468875],[143.64800744036287,50.74760040954151]]],[[[22.731098667092652,54.327536932993326],[20.892244500418652,54.312524929412575],[19.660640089606403,54.426083889373984],[19.888481479581344,54.8661603867715],[21.2684489275035,55.19048167583528],[22.315723504330606,55.0152985703659],[22.757763706155288,54.85657440858142],[22.651051873472568,54.58274099386671],[22.731098667092652,54.327536932993326]]],[[[-175.01425,66.58435],[-174.33983,66.33556],[-174.57182,67.06219],[-171.85731,66.91308],[-169.89958,65.97724],[-170.89107,65.54139],[-172.53025,65.43791],[-172.555,64.46079],[-172.95533,64.25269],[-173.89184,64.2826],[-174.65392,64.63125],[-175.98353,64.92288],[-176.20716,65.35667],[-177.22266,65.52024],[-178.35993,65.39052],[-178.90332,65.74044],[-178.68611,66.11211],[-179.88377,65.87456],[-179.43268,65.40411],[-180,64.97970870219837],[-180,68.96363636363635],[-177.55,68.2],[-174.92825,67.20589],[-175.01425,66.58435]]],[[[180.00000000000014,70.83219920854668],[178.9034250000001,70.78114],[178.7253,71.0988],[180.00000000000014,71.51571433642826],[180.00000000000014,70.83219920854668]]],[[[-178.69378,70.89302],[-180,70.83219920854668],[-180,71.51571433642826],[-179.871875,71.55762],[-179.02433,71.55553],[-177.577945,71.26948],[-177.663575,71.13277],[-178.69378,70.89302]]],[[[143.60385,73.21244],[142.08763,73.20544],[140.038155,73.31692],[139.86312,73.36983],[140.81171,73.76506],[142.06207,73.85758],[143.48283,73.47525],[143.60385,73.21244]]],[[[150.73167,75.08406],[149.575925,74.68892],[147.977465,74.778355],[146.11919,75.17298],[146.358485,75.49682],[148.22223,75.345845],[150.73167,75.08406]]],[[[145.086285,75.562625],[144.3,74.82],[140.61381,74.84768],[138.95544,74.61148],[136.97439,75.26167],[137.51176,75.94917],[138.831075,76.13676],[141.471615,76.09289],[145.086285,75.562625]]],[[[57.5356925799924,70.72046397570216],[56.94497928246395,70.63274323188668],[53.6773751157842,70.76265778266847],[53.41201663596539,71.2066616889202],[51.60189456564572,71.47475901965049],[51.45575361512422,72.01488108996514],[52.47827518088357,72.22944163684096],[52.444168735570855,72.77473135038485],[54.42761355979766,73.62754751249759],[53.50828982932515,73.74981395130015],[55.90245893740766,74.62748647734533],[55.631932814359715,75.08141225859717],[57.86864383324885,75.60939036732321],[61.170044386647504,76.25188345000814],[64.49836836127022,76.43905548776928],[66.2109770038551,76.80978221303124],[68.15705976753483,76.93969676381292],[68.85221113472512,76.54481130645462],[68.18057254422766,76.23364166940911],[64.637326287703,75.73775462513623],[61.58350752141476,75.2608845079468],[58.47708214705338,74.30905630156283],[56.98678551618801,73.33304352486624],[55.419335971910954,72.37126760526598],[55.622837762276305,71.54059479439033],[57.5356925799924,70.72046397570216]]],[[[106.97013000000013,76.97419],[107.24000000000015,76.48],[108.1538,76.72335000000015],[111.07726000000017,76.71],[113.33151,76.22224],[114.13417,75.84764],[113.88539,75.32779000000014],[112.77918,75.03186],[110.1512500000002,74.47673],[109.4,74.18],[110.64,74.04],[112.11919,73.78774000000011],[113.01954000000026,73.97693000000015],[113.52958000000032,73.33505000000011],[113.96881,73.59488],[115.56782,73.75285],[118.77633000000023,73.58772],[119.02,73.12],[123.20066000000011,72.97122],[123.25777000000018,73.73503000000011],[125.38000000000018,73.56],[126.97644,73.56549],[128.59126,73.03871],[129.05157,72.39872],[128.46000000000012,71.98],[129.7159900000002,71.19304],[131.28858000000028,70.78699000000012],[132.25350000000017,71.83630000000011],[133.85766000000032,71.38642000000016],[135.56193,71.65525000000014],[137.49755,71.34763],[138.23409000000018,71.62803],[139.86983000000012,71.48783000000014],[139.14791,72.4161900000001],[140.46817,72.84941000000013],[149.5,72.2],[150.3511800000002,71.60643],[152.96890000000022,70.84222],[157.00688,71.03141],[158.99779,70.86672],[159.83031000000025,70.45324],[159.70866,69.72198],[160.94053000000034,69.4372800000001],[162.27907000000013,69.64204],[164.05248000000014,69.66823],[165.94037000000023,69.47199],[167.83567,69.58269],[169.5776300000002,68.6938],[170.81688000000028,69.01363],[170.0082000000002,69.65276],[170.4534500000003,70.09703],[173.64391000000026,69.81743],[175.72403000000023,69.87725000000023],[178.6,69.4],[180.00000000000014,68.96363636363657],[180.00000000000014,64.97970870219848],[179.99281,64.97433],[178.70720000000026,64.53493],[177.41128000000018,64.60821],[178.31300000000024,64.07593],[178.9082500000002,63.251970000000135],[179.37034,62.982620000000104],[179.48636,62.56894],[179.22825000000014,62.30410000000015],[177.3643,62.5219],[174.56929000000022,61.76915],[173.68013,61.65261],[172.15,60.95],[170.6985000000001,60.33618],[170.3308500000003,59.88177],[168.90046,60.57355],[166.29498000000032,59.788550000000214],[165.84000000000023,60.16],[164.87674,59.7316],[163.53929000000014,59.86871],[163.21711000000025,59.21101],[162.0173300000001,58.24328],[162.05297,57.83912],[163.19191,57.61503000000011],[163.05794000000017,56.159240000000125],[162.12958000000023,56.12219],[161.70146,55.285680000000156],[162.11749000000017,54.85514],[160.36877000000032,54.34433],[160.02173000000022,53.20257],[158.5309400000002,52.958680000000236],[158.23118,51.94269],[156.7897900000003,51.01105],[156.42000000000016,51.7],[155.99182,53.15895],[155.43366000000012,55.38103000000012],[155.91442000000032,56.767920000000146],[156.75815,57.3647],[156.8103500000001,57.83204],[158.3643300000002,58.05575],[160.15064000000012,59.31477000000012],[161.87204,60.34300000000013],[163.66969,61.1409],[164.47355000000013,62.55061],[163.2584200000002,62.46627],[162.65791,61.6425],[160.1214800000001,60.54423],[159.30232,61.77396],[156.7206800000001,61.43442],[154.21806000000035,59.75818000000013],[155.04375,59.14495],[152.81185,58.88385],[151.26573000000025,58.78089],[151.33815000000013,59.50396],[149.78371,59.65573000000014],[148.54481,59.16448],[145.48722,59.33637],[142.19782000000018,59.03998],[138.95848000000032,57.08805],[135.12619,54.72959],[136.70171,54.603550000000126],[137.19342,53.97732],[138.1647,53.755010000000254],[138.80463,54.25455000000011],[139.90151,54.18968000000018],[141.34531,53.08957000000012],[141.37923,52.23877],[140.5974200000002,51.2396700000001],[140.51308,50.04553000000013],[140.06193000000022,48.44671000000017],[138.5547200000002,46.99965],[138.21971,46.30795],[136.86232,45.14350000000019],[135.5153500000002,43.989],[134.86939000000027,43.39821],[133.53687000000028,42.81147],[132.90627000000015,42.79849],[132.27807000000027,43.28456000000011],[130.93587000000014,42.55274],[130.78,42.22000000000019],[130.64000000000019,42.395],[130.6338664084098,42.90301463477056],[131.144687941615,42.92998973242695],[131.28855512911562,44.111519680348266],[131.02519000000026,44.96796],[131.8834542176596,45.32116160743652],[133.09712000000022,45.14409],[133.7696439963132,46.116926988299156],[134.1123500000002,47.21248000000014],[134.50081,47.578450000000146],[135.0263114767868,48.47822988544391],[133.37359581922803,48.18344167743484],[132.50669000000013,47.78896],[130.98726000000013,47.79013],[130.58229332898267,48.729687404976204],[129.3978178244205,49.440600084015614],[127.65740000000038,49.76027],[127.28745568248493,50.73979726826545],[126.93915652883786,51.3538941514059],[126.56439904185699,51.7842554795327],[125.94634891164647,52.79279857035695],[125.06821129771045,53.161044826868924],[123.57147,53.4588],[122.24574791879307,53.43172597921369],[121.00308475147037,53.25140106873124],[120.1770886577169,52.75388621684121],[120.725789015792,52.51622630473091],[120.7382,51.96411],[120.18208000000018,51.64355],[119.27939,50.58292],[119.28846072802585,50.14288279886196],[117.8792444194265,49.51098338479704],[116.67880089728621,49.888531399121405],[115.48569542853144,49.80517731383475],[114.96210981655038,50.14024730081513],[114.36245649623534,50.248302720737485],[112.89773969935439,49.54356537535699],[111.58123091028668,49.37796824807767],[110.66201053267886,49.13012807880585],[109.40244917199672,49.29296051695769],[108.47516727095127,49.28254771585071],[107.86817589725112,49.79370514586588],[106.88880415245532,50.27429596618029],[105.8865914245869,50.406019192092174],[104.62158,50.275320000000164],[103.67654544476036,50.089966132195144],[102.25589000000011,50.51056000000011],[102.06521,51.25991],[100.88948042196265,51.51685578063842],[99.98173221232356,51.63400625264395],[98.8614905131005,52.04736603454671],[97.82573978067452,51.01099518493325],[98.23176150919173,50.42240062112873],[97.25976000000023,49.72605],[95.81402000000017,49.977460000000114],[94.81594933469879,50.01343333597088],[94.14756635943561,50.48053660745716],[93.10421,50.49529],[92.23471154171969,50.80217072204175],[90.71366743364078,50.331811835321105],[88.80556684769559,49.47052073831247],[87.75126427607685,49.29719798440556],[87.35997033076269,49.21498078062916],[86.82935672398966,49.82667470966813],[85.5412699726825,49.69285858824816],[85.11555952346211,50.11730296487763],[84.41637739455304,50.311399644565824],[83.93511478061893,50.88924551045358],[83.38300377801247,51.069182847693895],[81.94598554883994,50.81219594990633],[80.56844689323546,51.38833649352844],[80.03555952344172,50.864750881547224],[77.80091556184433,53.40441498474754],[76.52517947785478,54.177003485727134],[76.89110029491346,54.49052440044193],[74.38482000000013,53.54685000000011],[73.42567874542053,53.489810289109755],[73.50851606638437,54.035616766976595],[72.22415001820221,54.37665538188679],[71.1801310566095,54.133285224008254],[70.86526655465516,55.169733588270105],[69.06816694527289,55.3852501491435],[68.1691003762589,54.97039175070438],[65.6668700000001,54.601250000000164],[65.17853356309595,54.35422781027208],[61.43660000000013,54.00625],[60.97806644068325,53.66499339457914],[61.699986199800634,52.97999644633427],[60.739993117114544,52.71998647725775],[60.92726850774025,52.447548326215006],[59.96753380721557,51.960420437215674],[61.58800337102414,51.272658799843185],[61.33742435084101,50.79907013610426],[59.93280724471557,50.842194118851836],[59.64228234237057,50.545442206415714],[58.36332000000013,51.06364],[56.77798,51.04355],[55.71694000000011,50.62171000000015],[54.532878452376195,51.02623973245937],[52.32872358583106,51.718652248738096],[50.76664839051219,51.69276235615987],[48.702381626181044,50.60512848571284],[48.577841424357615,49.874759629915644],[47.549480421749394,50.454698391311126],[46.75159630716277,49.35600576435374],[47.0436715024766,49.152038886097586],[46.46644575377629,48.39415233010493],[47.31524000000016,47.71585],[48.05725,47.74377],[48.694733514201886,47.0756281601779],[48.593250000000154,46.561040000000105],[49.101160000000135,46.39933],[48.64541000000011,45.80629],[47.67591,45.64149000000012],[46.68201,44.6092000000001],[47.59094,43.66016000000013],[47.49252,42.98658],[48.58437000000018,41.80888],[47.98728315612604,41.4058192001944],[47.81566572448466,41.151416124021345],[47.373315464066394,41.21973236751114],[46.686070591016716,41.827137152669906],[46.40495079934894,41.860675157227426],[45.7764,42.09244000000024],[45.470279168485916,42.50278066667005],[44.53762291848207,42.711992702803684],[43.93121000000011,42.5549600000001],[43.755990000000196,42.74083],[42.39440000000016,43.2203],[40.92219000000014,43.38215000000014],[40.07696495947985,43.553104153002494],[39.955008579271095,43.434997666999294],[38.68,44.28],[37.53912000000011,44.65721],[36.67546000000013,45.24469],[37.40317,45.4045100000001],[38.23295,46.24087],[37.67372,46.63657],[39.14767,47.04475000000013],[39.12120000000013,47.26336],[38.22353803889948,47.10218984637598],[38.25511233902981,47.54640045835697],[38.77057,47.82562000000024],[39.738277622238996,47.89893707945208],[39.89562000000015,48.23241],[39.67465,48.783820000000134],[40.08078901546949,49.30742991799937],[40.069040000000115,49.60105],[38.59498823421356,49.92646190042373],[38.010631137857075,49.91566152607473],[37.39345950699524,50.38395335550368],[36.626167840325394,50.225590928745135],[35.35611616388812,50.57719737405915],[35.37791,50.77394],[35.02218305841794,51.2075723333715],[34.2248157081544,51.255993150428935],[34.14197838719061,51.566413479206204],[34.39173058445723,51.768881740925906],[33.75269982273588,52.33507457133166],[32.71576053236716,52.23846548116216],[32.41205813978777,52.28869497334977],[32.15944000000022,52.061250000000115],[31.78597,52.10168],[31.54001834486226,52.74205231384644],[31.30520063652798,53.0739958766733],[31.49764,53.16743000000014],[32.304519484188376,53.132726141972846],[32.693643019346126,53.35142080343214],[32.405598585751164,53.618045355842014],[31.731272820774592,53.79402944601202],[31.791424187962406,53.974638576872195],[31.384472283663822,54.15705638286238],[30.75753380709878,54.811770941784395],[30.971835971813245,55.081547756564134],[30.87390913262007,55.55097646750351],[29.89629438652244,55.7894632025305],[29.37157189303079,55.67009064393628],[29.22951338066039,55.91834422466641],[28.17670942557794,56.16912995057879],[27.855282016722526,56.75932648378438],[27.770015903440992,57.244258124411196],[27.288184848751655,57.47452830670392],[27.71668582531578,57.79189911562445],[27.420150000000202,58.72457000000014],[28.131699253051863,59.300825100331],[27.98112,59.47537],[29.1177,60.02805000000012],[28.07,60.50352000000015],[30.211107212044652,61.78002777774969],[31.139991082491036,62.357692776124445],[31.51609215671127,62.867687486412905],[30.035872430142803,63.552813625738565],[30.444684686003736,64.20445343693908],[29.544429559047018,64.94867157659056],[30.21765,65.80598],[29.054588657352383,66.94428620062203],[29.977426385220696,67.69829702419275],[28.44594363781877,68.36461294216399],[28.591929559043365,69.0647769232867],[29.39955,69.15692000000018],[31.10108000000011,69.55811],[32.13272000000026,69.90595000000025],[33.77547,69.30142000000012],[36.51396,69.06342],[40.292340000000166,67.9324],[41.059870000000124,67.4571300000001],[41.12595000000019,66.79158000000012],[40.01583,66.26618000000013],[38.38295,65.9995300000001],[33.918710000000175,66.75961],[33.18444,66.63253],[34.81477,65.90015000000014],[34.87857425307877,65.4362128770482],[34.94391000000015,64.41437000000016],[36.23129,64.10945],[37.01273000000012,63.84983000000011],[37.14197000000016,64.33471],[36.539579035089815,64.76446],[37.17604000000014,65.14322000000013],[39.59345,64.52079000000018],[40.43560000000011,64.76446],[39.76260000000016,65.49682],[42.0930900000001,66.47623],[43.01604000000012,66.41858],[43.94975000000014,66.06908],[44.53226,66.75634000000014],[43.69839,67.35245],[44.18795000000014,67.95051],[43.45282,68.57079],[46.25000000000014,68.25],[46.82134000000016,67.68997],[45.55517,67.56652],[45.5620200000001,67.01005000000019],[46.34915000000015,66.6676700000001],[47.894160000000255,66.88455000000016],[48.13876,67.52238],[50.22766000000016,67.99867000000013],[53.71743000000018,68.85738000000012],[54.47171,68.80815],[53.48582000000013,68.20131],[54.72628,68.09702],[55.44268000000014,68.43866],[57.317020000000156,68.46628],[58.80200000000021,68.88082],[59.94142000000019,68.2784400000001],[61.07784000000018,68.94069],[60.03,69.52],[60.55,69.85],[63.50400000000016,69.54739],[64.888115,69.23483500000013],[68.51216000000014,68.09233000000017],[69.18068,68.61563000000012],[68.16444,69.14436],[68.13522,69.35649],[66.93008000000012,69.45461000000012],[67.25976,69.92873],[66.72492000000014,70.70889000000014],[66.69466,71.02897000000024],[68.54006000000011,71.93450000000024],[69.19636000000011,72.84336000000016],[69.94,73.04000000000013],[72.58754,72.7762900000001],[72.79603,72.22006],[71.8481100000001,71.40898],[72.47011,71.09019],[72.79188,70.39114],[72.56470000000022,69.02085],[73.66787,68.4079],[73.2387,67.7404],[71.28000000000011,66.32000000000016],[72.42301000000018,66.17267000000018],[72.82077,66.53267],[73.92099000000016,66.78946000000013],[74.1865100000002,67.28429],[75.052,67.76047000000017],[74.46926000000016,68.32899],[74.93584000000013,68.98918],[73.84236,69.07146],[73.60187000000022,69.62763],[74.3998,70.63175],[73.1011,71.44717000000026],[74.89082000000022,72.12119],[74.65926,72.83227],[75.15801000000019,72.85497000000011],[75.68351,72.30056000000013],[75.28898000000012,71.33556],[76.35911,71.15287000000015],[75.90313000000017,71.87401],[77.57665000000011,72.26717],[79.65202000000014,72.32011],[81.5,71.75],[80.61071000000013,72.58285000000012],[80.51109,73.6482],[82.25,73.85000000000011],[84.65526,73.80591000000018],[86.82230000000024,73.93688],[86.00956,74.45967000000014],[87.16682000000017,75.11643],[88.31571000000011,75.14393],[90.26,75.64],[92.90058,75.77333],[93.23421000000016,76.0472],[95.86000000000016,76.14],[96.67821,75.91548],[98.92254000000023,76.44689],[100.75967000000023,76.43028],[101.03532,76.86189],[101.99084000000013,77.2875400000002],[104.3516000000001,77.69792],[106.06664000000013,77.37389],[104.70500000000024,77.1274],[106.97013000000013,76.97419]]],[[[105.07547,78.30689],[99.43814,77.921],[101.2649,79.23399],[102.08635,79.34641],[102.837815,79.28129],[105.37243,78.71334],[105.07547,78.30689]]],[[[51.13618655783128,80.54728017854093],[49.79368452332071,80.4154277615482],[48.89441124857754,80.3395667589437],[48.754936557821765,80.17546824820084],[47.586119012244154,80.01018117951533],[46.502825962109654,80.24724681265437],[47.07245527526291,80.55942414012945],[44.846958042181114,80.58980988231718],[46.79913862487123,80.77191762971364],[48.318477410684665,80.78400991486996],[48.522806023966695,80.51456899690015],[49.09718956889091,80.75398590770843],[50.03976769389462,80.91888540315182],[51.52293297710369,80.6997256538019],[51.13618655783128,80.54728017854093]]],[[[99.93976,78.88094],[97.75794,78.7562],[94.97259,79.044745],[93.31288,79.4265],[92.5454,80.14379],[91.18107,80.34146],[93.77766,81.0246],[95.940895,81.2504],[97.88385,80.746975],[100.186655,79.780135],[99.93976,78.88094]]]]}},{"type":"Feature","properties":{"abbrev":"Serb.","name":"Serbia","name_long":"Serbia","iso_a2":"RS","iso_a3":"SRB","iso_n3":"688"},"geometry":{"type":"Polygon","coordinates":[[[20.87431277841341,45.41637543393432],[21.48352623870221,45.18117015235788],[21.562022739353722,44.76894725196564],[22.145087924902896,44.47842234962059],[22.459022251075965,44.70251719825444],[22.70572553883744,44.57800283464701],[22.474008416440654,44.40922760678177],[22.657149692483074,44.234923000661354],[22.410446404721597,44.008063462900054],[22.500156691180223,43.642814439461006],[22.986018507588483,43.2111612005271],[22.60480146657136,42.898518785161116],[22.43659467946139,42.58032115332394],[22.54501183440965,42.46136200618804],[22.38052575042468,42.32025950781508],[21.917080000000112,42.30364],[21.57663598940212,42.24522439706186],[21.54332,42.3202500000001],[21.66292,42.43922],[21.77505,42.6827],[21.63302,42.67717],[21.43866,42.86255],[21.27421,42.90959],[21.143395,43.06868500000012],[20.95651,43.13094],[20.81448,43.27205],[20.63508,43.21671],[20.49679,42.88469],[20.25758,42.81275000000011],[20.3398,42.89852],[19.95857,43.10604],[19.63,43.21377997027054],[19.48389,43.35229],[19.21852,43.52384],[19.454,43.56810000000013],[19.59976,44.03847],[19.11761,44.42307000000011],[19.36803,44.863],[19.00548,44.86023],[19.39047570158459,45.236515611342384],[19.072768995854176,45.52151113543209],[18.82982,45.90888],[19.59604454924164,46.171729844744554],[20.220192498462893,46.12746898048658],[20.762174920339987,45.734573065771485],[20.87431277841341,45.41637543393432]]]}},{"type":"Feature","properties":{"abbrev":"Slo.","name":"Slovenia","name_long":"Slovenia","iso_a2":"SI","iso_a3":"SVN","iso_n3":"705"},"geometry":{"type":"Polygon","coordinates":[[[13.806475457421527,46.509306138691215],[14.63247155117483,46.43181732846955],[15.137091912504985,46.65870270444703],[16.011663852612656,46.6836107448117],[16.202298211337364,46.85238597267696],[16.370504998447416,46.8413272161665],[16.564808383864857,46.50375092221983],[15.768732944408551,46.23810822202345],[15.671529575267556,45.83415355079788],[15.323953891672403,45.73178253842768],[15.327674594797427,45.45231639259323],[14.935243767972935,45.471695054702685],[14.595109490627804,45.634940904312714],[14.411968214585414,45.46616567644746],[13.715059848697221,45.50032379819237],[13.937630242578306,45.59101593686462],[13.698109978905478,46.01677806251735],[13.806475457421527,46.509306138691215]]]}},{"type":"Feature","properties":{"abbrev":"Svk.","name":"Slovakia","name_long":"Slovakia","iso_a2":"SK","iso_a3":"SVK","iso_n3":"703"},"geometry":{"type":"Polygon","coordinates":[[[18.853144158613617,49.49622976337764],[18.909574822676316,49.435845852244576],[19.320712517990472,49.571574001659194],[19.825022820726872,49.21712535256923],[20.41583947111985,49.43145335549977],[20.887955356538413,49.32877228453583],[21.607808058364213,49.47010732685409],[22.558137648211755,49.085738023467144],[22.28084191253356,48.82539215758067],[22.08560835133485,48.42226430927179],[21.872236362401736,48.31997081155002],[20.801293979584926,48.623854071642384],[20.473562045989866,48.56285004332181],[20.239054396249347,48.32756724709692],[19.769470656013112,48.202691148463614],[19.661363559658497,48.26661489520866],[19.17436486173989,48.11137889260387],[18.77702477384767,48.081768296900634],[18.696512892336926,47.880953681014404],[17.857132602620027,47.758428860050365],[17.48847293464982,47.86746613218621],[16.979666782304037,48.123497015976305],[16.879982944413,48.47001333270947],[16.960288120194576,48.5969823268506],[17.101984897538898,48.81696889911711],[17.545006951577108,48.80001902932537],[17.88648481616181,48.90347524677371],[17.913511590250465,48.996492824899086],[18.104972771891852,49.04398346617531],[18.170498488037964,49.271514797556435],[18.399993523846177,49.31500051533004],[18.554971144289482,49.49501536721878],[18.853144158613617,49.49622976337764]]]}},{"type":"Feature","properties":{"abbrev":"Ukr.","name":"Ukraine","name_long":"Ukraine","iso_a2":"UA","iso_a3":"UKR","iso_n3":"804"},"geometry":{"type":"Polygon","coordinates":[[[31.785998162571587,52.101677964885454],[32.15941206231267,52.06126699483322],[32.41205813978763,52.28869497334975],[32.71576053236697,52.23846548116205],[33.7526998227357,52.335074571331695],[34.39173058445701,51.76888174092579],[34.14197838719039,51.56641347920623],[34.22481570815427,51.25599315042895],[35.02218305841788,51.20757233337145],[35.37792361831512,50.77395539001034],[35.35611616388795,50.577197374059054],[36.62616784032534,50.225590928745135],[37.39345950699507,50.38395335550359],[38.010631137856905,49.91566152607463],[38.59498823421342,49.92646190042363],[40.06905846533911,49.6010554062817],[40.08078901546935,49.307429917999286],[39.67466393408753,48.78381846780187],[39.89563235856758,48.23240509703143],[39.738277622238826,47.89893707945198],[38.7705847511412,47.825608222029814],[38.25511233902975,47.546400458356814],[38.22353803889942,47.10218984637588],[37.42513715998999,47.022220567404204],[36.75985477066439,46.698700263040934],[35.82368452326483,46.64596446388707],[34.96234174982388,46.27319651954964],[35.020787794745985,45.65121898048466],[35.51000857925317,45.40999339454619],[36.52999799983016,45.46998973243706],[36.33471276219916,45.113215643893966],[35.23999922052812,44.939996242851606],[33.882511020652885,44.36147858334407],[33.326420932760044,44.56487702084489],[33.54692426934946,45.03477081967489],[32.4541744321055,45.32746613217608],[32.630804477679135,45.519185695978905],[33.58816206231839,45.85156850848024],[33.29856733575471,46.080598456397844],[31.74414025241518,46.333347886737386],[31.675307244602408,46.70624502215554],[30.748748813609097,46.583100084004],[30.377608676888883,46.03241018328567],[29.603289015427432,45.293308010431126],[29.149724969201653,45.46492544207245],[28.679779493939378,45.304030870131704],[28.233553501099042,45.48828318946837],[28.485269402792767,45.5969070501459],[28.659987420371575,45.93998688413164],[28.93371748222162,46.2588304713725],[28.862972446414062,46.43788930926383],[29.072106967899295,46.517677720722496],[29.170653924279886,46.3792623968287],[29.75997195813639,46.34998769793536],[30.02465864433537,46.42393667254503],[29.838210076626297,46.52532583270169],[29.908851759569302,46.67436066343146],[29.559674106573112,46.928582872091326],[29.41513512545274,47.34664520933257],[29.05086795422733,47.51022695575249],[29.12269819511303,47.84909516050646],[28.670891147585163,48.1181485052341],[28.259546746541844,48.15556224221342],[27.522537469195154,48.467119452501116],[26.857823520624805,48.368210761094495],[26.619336785597795,48.22072622333347],[26.19745039236693,48.22088125263035],[25.9459411964024,47.987148749374214],[25.20774336111299,47.89105642352747],[24.866317172960578,47.73752574318831],[24.40205610525038,47.98187775328042],[23.76095828623741,47.985598456405455],[23.142236362406802,48.09634105080695],[22.710531447040495,47.88219391538941],[22.640819939878753,48.15023956968735],[22.08560835133485,48.42226430927179],[22.28084191253356,48.82539215758067],[22.558137648211755,49.085738023467144],[22.776418898212626,49.02739533140962],[22.518450148211603,49.47677358661974],[23.426508416444392,50.30850576435745],[23.922757195743262,50.42488108987875],[24.029985792748903,50.70540660257518],[23.52707075368437,51.57845408793023],[24.00507775238421,51.61744395609446],[24.553106316839518,51.888461005249184],[25.327787713327005,51.91065603291855],[26.337958611768556,51.83228872334793],[27.454066196408434,51.59230337178447],[28.24161502453657,51.57222707783907],[28.61761274589225,51.42771393493484],[28.99283532076353,51.602044379271476],[29.254938185347925,51.368234361366895],[30.157363722460897,51.41613841410147],[30.555117221811457,51.31950348571566],[30.619454380014844,51.822806098022376],[30.927549269338982,52.04235342061438],[31.785998162571587,52.101677964885454]]]}},{"type":"Feature","properties":{"abbrev":"Swe.","name":"Sweden","name_long":"Sweden","iso_a2":"SE","iso_a3":"SWE","iso_n3":"752"},"geometry":{"type":"Polygon","coordinates":[[[22.183173455501926,65.72374054632017],[21.21351687997722,65.02600535751527],[21.369631381930958,64.41358795842429],[19.77887576669022,63.60955434839504],[17.84777916837521,62.74940013289681],[17.119554884518124,61.34116567651097],[17.83134606290639,60.63658336042741],[18.78772179533209,60.081914374422595],[17.86922488777634,58.9537661810587],[16.829185011470088,58.71982697207339],[16.447709588291474,57.041118069071885],[15.879785597403783,56.10430186626866],[14.666681349352075,56.200885118222175],[14.100721062891465,55.40778107362265],[12.942910597392057,55.36173737245058],[12.625100538797028,56.30708018658197],[11.787942335668674,57.44181712506307],[11.027368605196866,58.85614940045936],[11.468271925511146,59.43239329694604],[12.3003658382749,60.11793284773003],[12.631146681375183,61.293571682370136],[11.992064243221563,61.80036245385656],[11.93056928879423,63.12831757267698],[12.579935336973932,64.06621898055833],[13.571916131248711,64.04911408146971],[13.919905226302204,64.44542064071608],[13.55568973150909,64.78702769638151],[15.108411492583002,66.19386688909547],[16.108712192456778,67.30245555283689],[16.768878614985482,68.01393667263139],[17.729181756265348,68.01055186631628],[17.993868442464333,68.56739126247736],[19.878559604581255,68.40719432237258],[20.025268995857886,69.0651386583127],[20.645592889089528,69.10624726020087],[21.978534783626117,68.6168456081807],[23.53947309743444,67.93600861273525],[23.565879754335583,66.39605093043743],[23.903378533633802,66.00692739527962],[22.183173455501926,65.72374054632017]]]}},{"type":"Feature","properties":{"abbrev":"Auz.","name":"Australia","name_long":"Australia","iso_a2":"AU","iso_a3":"AUS","iso_n3":"036"},"geometry":{"type":"MultiPolygon","coordinates":[[[[145.39797814349484,-40.79254851660589],[146.36412072162372,-41.13769540788334],[146.90858361225085,-41.00054615658068],[147.68925947488415,-40.80825815202269],[148.28906782449602,-40.87543751400213],[148.35986453673584,-42.06244516374644],[148.0173014670731,-42.407023614268624],[147.9140519553538,-43.211522312188485],[147.564564243764,-42.93768889747386],[146.87034305235494,-43.634597263362096],[146.66332726459368,-43.58085377377856],[146.04837772032042,-43.54974456153889],[145.43192955951056,-42.69377613705627],[145.2950903668017,-42.03360971452756],[144.71807132383063,-41.162551771815714],[144.74375451067968,-40.70397511165771],[145.39797814349484,-40.79254851660589]]],[[[143.56181115129996,-13.763655694232213],[143.92209923723894,-14.548310642152003],[144.56371382057486,-14.171176039285882],[144.89490807513354,-14.594457696188625],[145.37472374896348,-14.984976495018286],[145.27199100156727,-15.428205254785695],[145.48525963763578,-16.285672295804773],[145.63703331927695,-16.784918308176614],[145.88890425026767,-16.90692636481765],[146.1603088726645,-17.761654554925244],[146.0636739442787,-18.28007252367732],[146.3874784690196,-18.95827402107591],[147.47108157774792,-19.48072275154668],[148.1776017600425,-19.95593922290277],[148.84841352762322,-20.39120981209726],[148.7174654481956,-20.633468926681516],[149.28942020080206,-21.260510756111103],[149.67833703023067,-22.342511895438392],[150.07738244038862,-22.12278370533332],[150.48293908101516,-22.556142266533012],[150.72726525289121,-22.40240488046466],[150.89955447815228,-23.462236830338682],[151.60917524638424,-24.076256198830762],[152.07353966695908,-24.457886651306197],[152.85519738180594,-25.267501316023015],[153.13616214417678,-26.07117319102619],[153.16194868389042,-26.641319268502443],[153.0929089703486,-27.26029957449451],[153.5694690289442,-28.1100668271021],[153.51210818910022,-28.995077406532758],[153.33909549378706,-29.458201592732447],[153.06924116435889,-30.350240166954816],[153.0896016786818,-30.923641859665448],[152.8915775901394,-31.640445651985956],[152.45000247620536,-32.550002536755244],[151.70911746643682,-33.041342054986345],[151.34397179586242,-33.81602345147385],[151.01055545471516,-34.310360202777886],[150.71413943908905,-35.17345997491681],[150.32821984273326,-35.67187916437193],[150.07521203023228,-36.42020558039051],[149.94612430236717,-37.10905242284123],[149.99728397033616,-37.42526051203514],[149.42388227762555,-37.77268116633346],[148.30462243061592,-37.80906137466688],[147.3817330263153,-38.21921721776755],[146.92212283751135,-38.60653207779512],[146.3179219911548,-39.03575652441144],[145.48965213438058,-38.59376799901905],[144.87697635312816,-38.41744801203912],[145.03221235573298,-37.896187839510986],[144.48568240781404,-38.08532358169927],[143.6099735861961,-38.80946542740533],[142.745426873953,-38.538267510737526],[142.178329705982,-38.38003427505984],[141.6065816591047,-38.30851409276788],[140.63857872941324,-38.019332777662555],[139.99215823787435,-37.40293629328511],[139.80658816951407,-36.64360279718828],[139.57414757706525,-36.13836231867067],[139.0828080588341,-35.73275400161178],[138.12074791885632,-35.612296237939404],[138.44946170466503,-35.127261244447894],[138.2075643251067,-34.38472258884593],[137.71917036351616,-35.07682504653103],[136.82940555231474,-35.26053476332862],[137.3523710471085,-34.70733855564409],[137.50388634658836,-34.130267836240776],[137.89011600153768,-33.640478610978334],[137.81032759007914,-32.90000701266811],[136.99683719294038,-33.752771498348636],[136.37206912653167,-34.09476612725619],[135.98904341038437,-34.89011809666049],[135.20821251845413,-34.47867034275261],[135.23921837782916,-33.94795338311498],[134.6134167827746,-33.22277800876314],[134.08590376193914,-32.848072198214766],[134.27390262261704,-32.61723357516696],[132.99077680880984,-32.011224053680195],[132.2880806825049,-31.98264698662277],[131.32633060112093,-31.495803318001048],[129.5357938986397,-31.590422865527483],[128.24093753470223,-31.948488864877856],[127.10286746633831,-32.28226694105105],[126.14871382050116,-32.21596607842061],[125.08862348846561,-32.728751316052836],[124.22164798390494,-32.95948658623607],[124.02894656788854,-33.483847344701715],[123.65966678273072,-33.89017913181273],[122.81103641163364,-33.91446705498984],[122.18306440642286,-34.003402194964224],[121.2991907085026,-33.82103606540613],[120.58026818245814,-33.930176690406626],[119.89369510302824,-33.976065362281815],[119.2988993673488,-34.50936614353397],[119.007340936358,-34.464149265278536],[118.5057178081008,-34.7468193499151],[118.02497195848953,-35.064732761374714],[117.29550744025747,-35.02545867283287],[116.62510908413495,-35.02509693780683],[115.56434695847972,-34.386427911111554],[115.02680870977954,-34.196517022438925],[115.04861616420679,-33.62342538832203],[115.5451233256671,-33.48725798923296],[115.71467370001668,-33.25957162855495],[115.6793786967614,-32.90036874769413],[115.80164513556397,-32.20506235120703],[115.68961063035513,-31.61243702568379],[115.16090905157697,-30.60159433362246],[114.99704308477945,-30.030724786094165],[115.04003787644628,-29.461095472940798],[114.64197431850201,-28.810230808224713],[114.61649783738217,-28.516398614213042],[114.17357913620847,-28.11807667410733],[114.04888390508816,-27.334765313427127],[113.4774975932369,-26.543134047147902],[113.3389530782625,-26.116545098578484],[113.77835778204026,-26.54902516042918],[113.44096235560662,-25.621278171493156],[113.93690107631167,-25.911234633082884],[114.23285200404732,-26.298446140245872],[114.21616051641703,-25.786281019801105],[113.72125532435771,-24.998938897402127],[113.62534386602405,-24.683971042583153],[113.39352339076267,-24.38476449961327],[113.50204389857564,-23.806350192970257],[113.70699262904517,-23.560215345964068],[113.8434184102957,-23.059987481378737],[113.7365515483161,-22.47547535572538],[114.1497563009219,-21.755881036061012],[114.22530724493268,-22.517488295178634],[114.64776207891869,-21.829519952076904],[115.46016727097933,-21.495173435148544],[115.94737267462702,-21.06868783944371],[116.71161543179156,-20.70168181730682],[117.16631635952771,-20.623598728113805],[117.44154503791427,-20.746898695562162],[118.22955895393298,-20.374208265873236],[118.83608523974273,-20.26331064217483],[118.98780724495177,-20.044202569257322],[119.25249393115065,-19.95294198982984],[119.80522505094457,-19.976506442954985],[120.85622033089666,-19.68370777758919],[121.39985639860723,-19.239755547769732],[121.65513797412909,-18.705317885007133],[122.24166548064177,-18.19764861417177],[122.28662397673567,-17.798603204013915],[122.31277225147544,-17.25496713630345],[123.01257449757193,-16.405199883695857],[123.43378909718304,-17.268558037996225],[123.85934451710662,-17.069035332917252],[123.50324222218326,-16.596506036040367],[123.81707319549193,-16.111316013251994],[124.25828657439988,-16.327943617419564],[124.37972619028582,-15.567059828353976],[124.92615278534005,-15.075100192935324],[125.16727501841389,-14.680395603090004],[125.67008670461385,-14.510070082256021],[125.6857963400305,-14.230655612853838],[126.12514936737611,-14.347340996968953],[126.14282270721989,-14.095986830301213],[126.58258914602376,-13.95279143642041],[127.06586714081735,-13.817967624570926],[127.80463341686195,-14.276906019755046],[128.35968997610897,-14.869169610252257],[128.98554324759593,-14.875990899314742],[129.62147342337963,-14.969783623924556],[129.409600050983,-14.420669854391035],[129.88864057832862,-13.618703301653483],[130.33946577364296,-13.357375583553477],[130.183506300986,-13.107520033422304],[130.617795037967,-12.536392103732467],[131.22349450086003,-12.183648776908115],[131.73509118054952,-12.302452894747162],[132.57529829318312,-12.114040622611014],[132.55721154188106,-11.603012383676685],[131.82469811414367,-11.273781833545101],[132.35722374891142,-11.128519382372644],[133.01956058159644,-11.376411228076847],[133.55084598198906,-11.786515394745138],[134.393068475482,-12.042365411022175],[134.67863244032705,-11.9411829565947],[135.29849124566803,-12.248606052299051],[135.88269331272764,-11.962266940969798],[136.25838097548947,-12.04934172938161],[136.49247521377166,-11.857208754120393],[136.95162031468502,-12.351958916882737],[136.68512495335577,-12.887223402562057],[136.30540652887512,-13.291229750219898],[135.96175825413414,-13.324509372615893],[136.07761681533256,-13.724278252825783],[135.78383629775325,-14.223989353088214],[135.42866417861123,-14.7154322241839],[135.50018436090318,-14.99774057379443],[136.29517459528137,-15.550264987859123],[137.0653601421595,-15.870762220933356],[137.58047081924482,-16.215082289294084],[138.303217401279,-16.807604261952658],[138.5851640158634,-16.806622409739177],[139.1085429221155,-17.06267913174537],[139.26057498591823,-17.371600843986187],[140.2152453960783,-17.710804945550066],[140.87546349503927,-17.369068698803943],[141.0711104676963,-16.832047214426723],[141.27409549373883,-16.388870131091608],[141.3982222841038,-15.840531508042588],[141.70218305884467,-15.04492115647693],[141.5633801617087,-14.56133310308951],[141.63552046118812,-14.270394789286284],[141.51986860571898,-13.698078301653808],[141.650920038011,-12.944687595270565],[141.84269127824624,-12.74154753993119],[141.6869901877508,-12.407614434461138],[141.92862918514757,-11.87746591557878],[142.118488397388,-11.32804208745162],[142.14370649634637,-11.042736504768143],[142.51526004452498,-10.668185723516643],[142.79731001197408,-11.157354831591519],[142.8667631369743,-11.784706719614931],[143.1159468934857,-11.905629571177911],[143.1586316265588,-12.325655612846191],[143.5221236512999,-12.834358412327433],[143.5971578309877,-13.400422051652598],[143.56181115129996,-13.763655694232213]]]]}},{"type":"Feature","properties":{"abbrev":"Fiji","name":"Fiji","name_long":"Fiji","iso_a2":"FJ","iso_a3":"FJI","iso_n3":"242"},"geometry":{"type":"MultiPolygon","coordinates":[[[[178.3736,-17.33992],[178.71806,-17.62846],[178.55271,-18.15059],[177.93266,-18.28799],[177.38146,-18.16432],[177.28504,-17.72465],[177.67087,-17.38114],[178.12557,-17.50481],[178.3736,-17.33992]]],[[[179.36414266196428,-16.80135407694685],[178.7250593629971,-17.01204167436802],[178.59683859511708,-16.63915],[179.09660936299716,-16.43398427754742],[179.41350936299713,-16.379054277547397],[180.00000000000014,-16.06713266364244],[180.00000000000014,-16.55521656663916],[179.36414266196428,-16.80135407694685]]],[[[-179.91736938476524,-16.50178313564936],[-180,-16.55521656663916],[-180,-16.06713266364244],[-179.79332010904858,-16.02088225674123],[-179.91736938476524,-16.50178313564936]]]]}},{"type":"Feature","properties":{"abbrev":"New C.","name":"New Caledonia","name_long":"New Caledonia","iso_a2":"NC","iso_a3":"NCL","iso_n3":"540"},"geometry":{"type":"Polygon","coordinates":[[[165.77998986232637,-21.08000497811563],[166.59999148993384,-21.700018812753523],[167.1200114280869,-22.159990736583488],[166.74003462144478,-22.39997608814695],[166.18973229396866,-22.12970834726045],[165.47437544175222,-21.679606621998232],[164.82981530177568,-21.14981983814195],[164.16799523341365,-20.444746595951628],[164.029605747736,-20.105645847252354],[164.45996707586272,-20.1200118954295],[165.02003624904205,-20.45999114347773],[165.46000939357512,-20.80002206795826],[165.77998986232637,-21.08000497811563]]]}},{"type":"Feature","properties":{"abbrev":"N.Z.","name":"New Zealand","name_long":"New Zealand","iso_a2":"NZ","iso_a3":"NZL","iso_n3":"554"},"geometry":{"type":"MultiPolygon","coordinates":[[[[173.02037479074076,-40.919052422856424],[173.24723432850206,-41.331998793300784],[173.95840538970288,-40.92670053483562],[174.24758670480813,-41.34915536882167],[174.2485168805895,-41.770008233406756],[173.8764465680879,-42.233184096038826],[173.22273969959568,-42.970038344088564],[172.71124637277077,-43.372287693048506],[173.0801127464702,-43.85334360125358],[172.30858361235252,-43.865694268571346],[171.45292524646365,-44.24251881284372],[171.18513797432726,-44.89710418068489],[170.61669721911662,-45.90892872495971],[169.8314221540093,-46.3557748349876],[169.33233117093428,-46.641235446967855],[168.41135379462858,-46.61994475686359],[167.76374474514685,-46.29019744240921],[166.67688602118423,-46.21991749449224],[166.5091443219647,-45.85270476662622],[167.04642418850327,-45.11094125750867],[168.3037634625969,-44.12397307716613],[168.94940880765157,-43.93581918719142],[169.66781456937318,-43.55532561622634],[170.52491987536618,-43.03168832781283],[171.125089960004,-42.51275359473778],[171.56971398344322,-41.767424411792135],[171.94870893787194,-41.51441659929115],[172.09722700427878,-40.95610442480968],[172.798579543344,-40.493962090823466],[173.02037479074076,-40.919052422856424]]],[[[174.61200890533055,-36.156397393540544],[175.3366158389272,-37.20909799575826],[175.35759647043753,-36.52619394302113],[175.8088867536425,-36.79894215265769],[175.9584900251275,-37.55538176854606],[176.76319542877658,-37.8812533505787],[177.4388131045605,-37.961248467766495],[178.0103544457087,-37.57982472102013],[178.51709354076283,-37.6953732236248],[178.27473107331386,-38.58281259537309],[177.97046023997936,-39.166342868812976],[177.20699262929915,-39.145775648760846],[176.93998050364704,-39.44973642350158],[177.0329464053401,-39.87994272233148],[176.88582360260526,-40.065977878582174],[176.50801720611938,-40.60480803808959],[176.0124402204403,-41.28962411882151],[175.239567499083,-41.68830779395324],[175.0678983910094,-41.42589487077508],[174.65097293527847,-41.28182097754545],[175.22763024322367,-40.459235528323404],[174.90015669179,-39.90893320084723],[173.82404666574402,-39.50885426204351],[173.85226199777534,-39.14660247167746],[174.5748018740804,-38.797683200842755],[174.74347374908106,-38.027807712558385],[174.69701663645063,-37.38112883885796],[174.29202843657922,-36.71109221776144],[174.31900353423555,-36.53482390721389],[173.84099653553582,-36.121980889634116],[173.0541711774596,-35.23712533950034],[172.63600548735374,-34.52910654066939],[173.00704227120949,-34.45066171645034],[173.55129845610747,-35.006183363587965],[174.3293904971263,-35.26549570082862],[174.61200890533055,-36.156397393540544]]]]}},{"type":"Feature","properties":{"abbrev":"P.N.G.","name":"Papua New Guinea","name_long":"Papua New Guinea","iso_a2":"PG","iso_a3":"PNG","iso_n3":"598"},"geometry":{"type":"MultiPolygon","coordinates":[[[[155.88002566957843,-6.81999684003776],[155.5999910829888,-6.919990736522493],[155.16699425681512,-6.535931491729301],[154.72919152243836,-5.900828138862209],[154.51411421123967,-5.139117526880014],[154.65250369691736,-5.042430922061839],[154.7599906760844,-5.339983819198494],[155.06291792217937,-5.566791680527487],[155.54774620994172,-6.200654799019659],[156.01996544822478,-6.540013929880388],[155.88002566957843,-6.81999684003776]]],[[[151.9827958518545,-5.478063246282346],[151.45910688700866,-5.56028045005874],[151.3013904156539,-5.840728448106702],[150.7544470562767,-6.083762709175389],[150.24119673075384,-6.317753594592986],[149.70996300679332,-6.316513360218053],[148.89006473205046,-6.026040134305433],[148.31893680236075,-5.74714242922613],[148.4018257997569,-5.437755629094724],[149.29841190002082,-5.583741550319217],[149.84556196512725,-5.505503431829339],[149.9962504416903,-5.026101169457675],[150.13975589416495,-5.001348158389789],[150.23690758687349,-5.532220147324281],[150.8074670758081,-5.455842380396888],[151.089672072554,-5.113692722192368],[151.64788089417087,-4.757073662946169],[151.53786176982155,-4.16780730552189],[152.13679162008438,-4.14879037843852],[152.33874311748102,-4.312966403829762],[152.31869266175178,-4.86766122805075],[151.9827958518545,-5.478063246282346]]],[[[147.19187381407494,-7.38802418378998],[148.0846358583494,-8.044108168167611],[148.7341052593936,-9.104663588093757],[149.30683515848446,-9.07143564213007],[149.26663089416135,-9.514406019736027],[150.03872846903434,-9.684318129111702],[149.73879845601226,-9.872937106977005],[150.80162763895916,-10.293686618697421],[150.69057498596388,-10.582712904505868],[150.02839318257585,-10.652476088099931],[149.782310012002,-10.393267103723943],[148.92313764871722,-10.280922539921363],[147.91301842670802,-10.130440769087471],[147.13544315001226,-9.492443536012019],[146.56788089415062,-8.942554619994155],[146.04848107318494,-8.06741423913131],[144.74416792213802,-7.630128269077473],[143.8970878440097,-7.915330498896281],[143.2863757671843,-8.245491224809056],[143.4139132020807,-8.983068942910947],[142.62843143124422,-9.326820570516503],[142.06825890520022,-9.159595635620036],[141.0338517600139,-9.117892754760419],[141.01705691951904,-5.859021905138022],[141.00021040259188,-2.600151055515624],[142.7352466167915,-3.289152927263217],[144.58397098203326,-3.861417738463401],[145.27317955951,-4.373737888205028],[145.82978641172568,-4.876497897972683],[145.98192182839298,-5.465609226100014],[147.6480733583476,-6.083659356310804],[147.8911076194162,-6.614014580922315],[146.9709053895949,-6.721656589386257],[147.19187381407494,-7.38802418378998]]],[[[153.14003787659877,-4.499983412294114],[152.8272921083683,-4.766427097190999],[152.638673130503,-4.176127211120928],[152.40602583232496,-3.789742526874562],[151.95323693258356,-3.462062269711822],[151.38427941305005,-3.035421644710112],[150.66204959533886,-2.741486097833956],[150.93996544820456,-2.500002129734028],[151.4799841656545,-2.779985039891386],[151.82001509013512,-2.999971612157907],[152.2399894553711,-3.240008640153661],[152.64001671774253,-3.659983005389648],[153.01999352438466,-3.980015150573294],[153.14003787659877,-4.499983412294114]]]]}},{"type":"Feature","properties":{"abbrev":"S. Is.","name":"Solomon Is.","name_long":"Solomon Islands","iso_a2":"SB","iso_a3":"SLB","iso_n3":"090"},"geometry":{"type":"MultiPolygon","coordinates":[[[[162.11902469304087,-10.482719008021135],[162.39864586817222,-10.82636728276212],[161.70003218001838,-10.820011081590224],[161.31979699121476,-10.204751478723125],[161.917383254238,-10.446700534713656],[162.11902469304087,-10.482719008021135]]],[[[160.85222863183796,-9.872937106977005],[160.46258833235729,-9.895209649294841],[159.8494474632142,-9.794027194867368],[159.64000288313517,-9.63997975020527],[159.70294477766666,-9.242949720906779],[160.36295617089846,-9.400304457235533],[160.6885176943372,-9.610162448772812],[160.85222863183796,-9.872937106977005]]],[[[161.67998172428915,-9.599982191611375],[161.52939660059053,-9.784312025596435],[160.78825320866056,-8.91754322676492],[160.57999718652437,-8.320008640173967],[160.92002811100494,-8.320008640173967],[161.28000613835,-9.120011488484451],[161.67998172428915,-9.599982191611375]]],[[[159.8750272971986,-8.337320244991716],[159.917401971678,-8.538289890174866],[159.1336771995394,-8.114181410355398],[158.58611372297472,-7.754823500197715],[158.21114953026486,-7.421872246941149],[158.35997765526545,-7.320017998893917],[158.82000125552773,-7.560003350457392],[159.64000288313517,-8.020026950719569],[159.8750272971986,-8.337320244991716]]],[[[157.5384257346893,-7.34781991946693],[157.33941979393327,-7.404767347852555],[156.9020304710148,-7.176874281445392],[156.49135786359133,-6.765943291860395],[156.54282759015396,-6.59933847415148],[157.1400004417189,-7.021638278840655],[157.5384257346893,-7.34781991946693]]]]}},{"type":"Feature","properties":{"abbrev":"Van.","name":"Vanuatu","name_long":"Vanuatu","iso_a2":"VU","iso_a3":"VUT","iso_n3":"548"},"geometry":{"type":"MultiPolygon","coordinates":[[[[167.8448767438451,-16.466333103097156],[167.5151811058229,-16.597849623279966],[167.18000776597782,-16.15999521247096],[167.21680138576963,-15.891846205308452],[167.8448767438451,-16.466333103097156]]],[[[167.10771243720149,-14.933920179913954],[167.27002811103026,-15.740020847234874],[167.00120731024796,-15.614602146062495],[166.79315799384088,-15.668810723536723],[166.64985924709558,-15.392703545801195],[166.62913699774649,-14.626497084209603],[167.10771243720149,-14.933920179913954]]]]}}]} From f5fd10bb6c1315dd30b6ce074f7fca66a4450390 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 19 Jul 2023 13:16:08 +0900 Subject: [PATCH 133/274] Bump word-wrap from 1.2.3 to 1.2.4 in /viz-lib (#6193) Bumps [word-wrap](https://github.com/jonschlinkert/word-wrap) from 1.2.3 to 1.2.4. - [Release notes](https://github.com/jonschlinkert/word-wrap/releases) - [Commits](https://github.com/jonschlinkert/word-wrap/compare/1.2.3...1.2.4) --- updated-dependencies: - dependency-name: word-wrap dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- viz-lib/yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/viz-lib/yarn.lock b/viz-lib/yarn.lock index 1df36b67ae..d2510c6dbd 100644 --- a/viz-lib/yarn.lock +++ b/viz-lib/yarn.lock @@ -10406,9 +10406,9 @@ window-size@0.1.0: integrity sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0= word-wrap@^1.2.3, word-wrap@~1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" - integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== + version "1.2.4" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.4.tgz#cb4b50ec9aca570abd1f52f33cd45b6c61739a9f" + integrity sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA== wordwrap@0.0.2: version "0.0.2" From cbe3093a5d38d10c02d95d25b1f2345ffc126ac2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 19 Jul 2023 14:59:31 +1000 Subject: [PATCH 134/274] Bump word-wrap from 1.2.3 to 1.2.4 (#6194) Bumps [word-wrap](https://github.com/jonschlinkert/word-wrap) from 1.2.3 to 1.2.4. - [Release notes](https://github.com/jonschlinkert/word-wrap/releases) - [Commits](https://github.com/jonschlinkert/word-wrap/compare/1.2.3...1.2.4) --- updated-dependencies: - dependency-name: word-wrap dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 535c3e9ebc..15eee02936 100644 --- a/yarn.lock +++ b/yarn.lock @@ -16490,9 +16490,9 @@ winston@^3.0.0: winston-transport "^4.4.0" word-wrap@~1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" - integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== + version "1.2.4" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.4.tgz#cb4b50ec9aca570abd1f52f33cd45b6c61739a9f" + integrity sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA== wordwrap@0.0.2: version "0.0.2" From 897e3dbd3bfd0b6c1cbc1daf835e3908e700a706 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 19 Jul 2023 13:59:44 +0900 Subject: [PATCH 135/274] Bump ws from 5.2.2 to 5.2.3 in /viz-lib (#5553) Bumps [ws](https://github.com/websockets/ws) from 5.2.2 to 5.2.3. - [Release notes](https://github.com/websockets/ws/releases) - [Commits](https://github.com/websockets/ws/compare/5.2.2...5.2.3) --- updated-dependencies: - dependency-name: ws dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Justin Clift --- viz-lib/yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/viz-lib/yarn.lock b/viz-lib/yarn.lock index d2510c6dbd..fb4090d896 100644 --- a/viz-lib/yarn.lock +++ b/viz-lib/yarn.lock @@ -10455,9 +10455,9 @@ write-file-atomic@2.4.1, write-file-atomic@^2.3.0: signal-exit "^3.0.2" ws@^5.2.0: - version "5.2.2" - resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.2.tgz#dffef14866b8e8dc9133582514d1befaf96e980f" - integrity sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA== + version "5.2.3" + resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.3.tgz#05541053414921bc29c63bee14b8b0dd50b07b3d" + integrity sha512-jZArVERrMsKUatIdnLzqvcfydI85dvd/Fp1u/VOpfdDWQ4c9qWXe+VIeAbQ5FrDwciAkr+lzofXLz3Kuf26AOA== dependencies: async-limiter "~1.0.0" From af243be0b398b04866a28080b667840e2c595271 Mon Sep 17 00:00:00 2001 From: Jun Date: Wed, 19 Jul 2023 14:03:48 +0900 Subject: [PATCH 136/274] bump copy-webpack-plugin to 5.1.2 (#6195) Signed-off-by: Ye Sijun --- package.json | 2 +- yarn.lock | 358 +++++++++++++++++++++++++-------------------------- 2 files changed, 180 insertions(+), 180 deletions(-) diff --git a/package.json b/package.json index 64dc0b8d62..c988edf5b4 100644 --- a/package.json +++ b/package.json @@ -106,7 +106,7 @@ "babel-loader": "^8.0.5", "babel-plugin-istanbul": "^6.0.0", "babel-plugin-transform-builtin-extend": "^1.1.2", - "copy-webpack-plugin": "^4.5.3", + "copy-webpack-plugin": "^5.1.2", "css-loader": "^0.28.7", "cypress": "^5.3.0", "enzyme": "^3.8.0", diff --git a/yarn.lock b/yarn.lock index 15eee02936..dbd248133d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2615,7 +2615,7 @@ array-tree-filter@^2.1.0: array-union@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" - integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= + integrity sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng== dependencies: array-uniq "^1.0.1" @@ -2627,7 +2627,7 @@ array-union@^2.1.0: array-uniq@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" - integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= + integrity sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q== array-unique@^0.3.2: version "0.3.2" @@ -2971,9 +2971,9 @@ balanced-match@^0.4.2: integrity sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg= balanced-match@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" - integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== barycentric@^1.0.1: version "1.0.1" @@ -3100,12 +3100,12 @@ bluebird-retry@^0.11.0: resolved "https://registry.yarnpkg.com/bluebird-retry/-/bluebird-retry-0.11.0.tgz#1289ab22cbbc3a02587baad35595351dd0c1c047" integrity sha1-EomrIsu8OgJYe6rTVZU1HdDBwEc= -bluebird@3.5.3, bluebird@^3.5.0, bluebird@^3.5.1: +bluebird@3.5.3, bluebird@^3.5.0: version "3.5.3" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.3.tgz#7d01c6f9616c9a51ab0f8c549a79dfe6ec33efa7" integrity sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw== -bluebird@^3.5.5, bluebird@^3.7.2: +bluebird@^3.5.1, bluebird@^3.5.5, bluebird@^3.7.2: version "3.7.2" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== @@ -3425,9 +3425,9 @@ buffer-crc32@~0.2.3: integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= buffer-from@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" - integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== + version "1.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== buffer-indexof@^1.0.0: version "1.1.1" @@ -3471,26 +3471,7 @@ bytes@3.1.0: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== -cacache@^10.0.4: - version "10.0.4" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-10.0.4.tgz#6452367999eff9d4188aefd9a14e9d7c6a263460" - integrity sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA== - dependencies: - bluebird "^3.5.1" - chownr "^1.0.1" - glob "^7.1.2" - graceful-fs "^4.1.11" - lru-cache "^4.1.1" - mississippi "^2.0.0" - mkdirp "^0.5.1" - move-concurrently "^1.0.1" - promise-inflight "^1.0.1" - rimraf "^2.6.2" - ssri "^5.2.4" - unique-filename "^1.1.0" - y18n "^4.0.0" - -cacache@^12.0.2: +cacache@^12.0.2, cacache@^12.0.3: version "12.0.4" resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c" integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ== @@ -3799,7 +3780,7 @@ chokidar@^3.4.1: optionalDependencies: fsevents "~2.1.2" -chownr@^1.0.1, chownr@^1.1.1, chownr@^1.1.4: +chownr@^1.1.1, chownr@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== @@ -4254,7 +4235,7 @@ common-tags@^1.8.0: commondir@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" - integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= + integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== compare-angle@^1.0.0: version "1.0.1" @@ -4329,7 +4310,7 @@ compute-scroll-into-view@^1.0.14: concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== concat-stream@^1.5.0, concat-stream@^1.5.2, concat-stream@^1.6.0, concat-stream@^1.6.1, concat-stream@^1.6.2, concat-stream@~1.6.0: version "1.6.2" @@ -4467,19 +4448,23 @@ copy-to-clipboard@^3.2.0: dependencies: toggle-selection "^1.0.6" -copy-webpack-plugin@^4.5.3: - version "4.6.0" - resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-4.6.0.tgz#e7f40dd8a68477d405dd1b7a854aae324b158bae" - integrity sha512-Y+SQCF+0NoWQryez2zXn5J5knmr9z/9qSQt7fbL78u83rxmigOy8X5+BFn8CFSuX+nKT8gpYwJX68ekqtQt6ZA== +copy-webpack-plugin@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-5.1.2.tgz#8a889e1dcafa6c91c6cd4be1ad158f1d3823bae2" + integrity sha512-Uh7crJAco3AjBvgAy9Z75CjK8IG+gxaErro71THQ+vv/bl4HaQcpkexAY8KVW/T6D2W2IRr+couF/knIRkZMIQ== dependencies: - cacache "^10.0.4" - find-cache-dir "^1.0.0" + cacache "^12.0.3" + find-cache-dir "^2.1.0" + glob-parent "^3.1.0" globby "^7.1.1" - is-glob "^4.0.0" - loader-utils "^1.1.0" + is-glob "^4.0.1" + loader-utils "^1.2.3" minimatch "^3.0.4" - p-limit "^1.0.0" - serialize-javascript "^1.4.0" + normalize-path "^3.0.0" + p-limit "^2.2.1" + schema-utils "^1.0.0" + serialize-javascript "^4.0.0" + webpack-log "^2.0.0" core-js-compat@^3.1.1, core-js-compat@^3.6.2: version "3.6.5" @@ -4499,11 +4484,16 @@ core-js@^2.4.0: resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.4.tgz#b8897c062c4d769dd30a0ac5c73976c47f92ea0d" integrity sha512-05qQ5hXShcqGkPZpXEFLIpxayZscVD2kuMBZewxiIPPEagukO4mqgPA9CWhUvFBJfy3ODdK2p9xyHh7FTU9/7A== -core-util-is@1.0.2, core-util-is@~1.0.0: +core-util-is@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + cors@^2.8.4: version "2.8.5" resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" @@ -4797,10 +4787,10 @@ cwise@^1.0.10, cwise@^1.0.4: static-module "^1.0.0" uglify-js "^2.6.0" -cyclist@~0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640" - integrity sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA= +cyclist@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.2.tgz#673b5f233bf34d8e602b949429f8171d9121bea3" + integrity sha512-0sVXIohTfLqVIW3kb/0n6IiWF3Ifj5nm2XaSrLq2DI6fKIGa2fYAZdk917rUneaeLVpYfFcyXE2ft0fe3remsA== cypress@^5.3.0: version "5.3.0" @@ -5494,7 +5484,7 @@ emoji-regex@^9.0.0: emojis-list@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" - integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= + integrity sha512-knHEZMgs8BB+MInokmNTg/OyPlAddghe1YBgNwJBc5zsJi/uyIcXoSDsL/W9ymOsBoBGdPIHXYJ9+qKFwRwDng== emojis-list@^3.0.0: version "3.0.0" @@ -5512,9 +5502,9 @@ encodeurl@~1.0.2: integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= end-of-stream@^1.0.0, end-of-stream@^1.1.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" - integrity sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q== + version "1.4.4" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== dependencies: once "^1.4.0" @@ -6602,15 +6592,6 @@ find-cache-dir@^0.1.1: mkdirp "^0.5.1" pkg-dir "^1.0.0" -find-cache-dir@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-1.0.0.tgz#9288e3e9e3cc3748717d39eade17cf71fc30ee6f" - integrity sha1-kojj6ePMN0hxfTnq3hfPcfww7m8= - dependencies: - commondir "^1.0.1" - make-dir "^1.0.0" - pkg-dir "^2.0.0" - find-cache-dir@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.0.0.tgz#4c1faed59f45184530fb9d7fa123a4d04a98472d" @@ -6901,7 +6882,7 @@ fs-readdir-recursive@^1.1.0: fs-write-stream-atomic@^1.0.8: version "1.0.10" resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" - integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk= + integrity sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA== dependencies: graceful-fs "^4.1.2" iferr "^0.1.5" @@ -6911,7 +6892,7 @@ fs-write-stream-atomic@^1.0.8: fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== fsevents@^1.2.3, fsevents@^1.2.7: version "1.2.9" @@ -7465,7 +7446,7 @@ glob-parent@^5.1.0, glob-parent@~5.1.0: dependencies: is-glob "^4.0.1" -glob@^7.0.0, glob@^7.0.3, glob@^7.1.0, glob@^7.1.1, glob@^7.1.2: +glob@^7.0.0, glob@^7.0.3, glob@^7.1.0, glob@^7.1.1: version "7.1.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== @@ -7477,7 +7458,19 @@ glob@^7.0.0, glob@^7.0.3, glob@^7.1.0, glob@^7.1.1, glob@^7.1.2: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@~7.1.6: +glob@^7.1.2, glob@^7.1.3: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^7.1.4, glob@^7.1.6, glob@~7.1.6: version "7.1.6" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== @@ -7585,7 +7578,7 @@ globby@^6.1.0: globby@^7.1.1: version "7.1.1" resolved "https://registry.yarnpkg.com/globby/-/globby-7.1.1.tgz#fb2ccff9401f8600945dfada97440cca972b8680" - integrity sha1-+yzP+UAfhgCUXfral0QMypcrhoA= + integrity sha512-yANWAN2DUcBtuus5Cpd+SKROzXHs2iVXFZt/Ykrfz6SAXqacLX25NZpltE+39ceMexYF4TtEadjuSTw8+3wX4g== dependencies: array-union "^1.0.1" dir-glob "^2.0.0" @@ -7751,7 +7744,12 @@ glslify@^7.0.0: through2 "^2.0.1" xtend "^4.0.0" -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2: +graceful-fs@^4.1.11, graceful-fs@^4.1.2: + version "4.2.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + +graceful-fs@^4.1.15: version "4.1.15" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA== @@ -8193,7 +8191,7 @@ ieee754@^1.1.12, ieee754@^1.1.4: iferr@^0.1.5: version "0.1.5" resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" - integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= + integrity sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA== ignore-walk@^3.0.1: version "3.0.1" @@ -8272,7 +8270,7 @@ import-local@^2.0.0: imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== incremental-convex-hull@^1.0.1: version "1.0.1" @@ -8305,25 +8303,25 @@ infer-owner@^1.0.3: inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== dependencies: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= +inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3, inherits@~2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== inherits@2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= -inherits@~2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== +inherits@2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: version "1.3.5" @@ -8653,9 +8651,9 @@ is-glob@^3.1.0: is-extglob "^2.1.0" is-glob@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.0.tgz#9521c76845cc2610a85203ddf080a958c2ffabc0" - integrity sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A= + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== dependencies: is-extglob "^2.1.1" @@ -8855,12 +8853,12 @@ is-wsl@^2.1.1: isarray@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" - integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= + integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ== isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== isarray@^2.0.1: version "2.0.5" @@ -9509,9 +9507,9 @@ json5@^0.5.0: integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= json5@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" - integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== + version "1.0.2" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" + integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== dependencies: minimist "^1.2.0" @@ -9830,7 +9828,7 @@ loader-utils@^0.2.16: json5 "^0.5.0" object-assign "^4.0.1" -loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3: +loader-utils@^1.0.2, loader-utils@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7" integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA== @@ -9839,6 +9837,15 @@ loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3: emojis-list "^2.0.0" json5 "^1.0.1" +loader-utils@^1.1.0: + version "1.4.2" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.2.tgz#29a957f3a63973883eb684f10ffd3d151fec01a3" + integrity sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^1.0.1" + loader-utils@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.0.tgz#e4cace5b816d425a166b5f097e10cd12b36064b0" @@ -9851,7 +9858,7 @@ loader-utils@^2.0.0: locate-path@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" - integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= + integrity sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA== dependencies: p-locate "^2.0.0" path-exists "^3.0.0" @@ -10012,14 +10019,6 @@ lower-case@^1.1.1: resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" integrity sha1-miyr0bno4K6ZOkv31YdcOcQujqw= -lru-cache@^4.1.1: - version "4.1.5" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" - integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== - dependencies: - pseudomap "^1.0.2" - yallist "^2.1.2" - lru-cache@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" @@ -10394,13 +10393,20 @@ minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= -minimatch@^3.0.3, minimatch@^3.0.4: +minimatch@^3.0.3: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== dependencies: brace-expansion "^1.1.7" +minimatch@^3.0.4, minimatch@^3.1.1: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + minimist@0.0.5: version "0.0.5" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.5.tgz#d7aa327bcecf518f9106ac6b8f003fa3bcea8566" @@ -10411,15 +10417,15 @@ minimist@0.0.8: resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= -minimist@^1.1.0, minimist@^1.1.1, minimist@^1.2.0, minimist@~1.2.0: +minimist@^1.1.0, minimist@^1.1.1, minimist@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= -minimist@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" - integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== +minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6: + version "1.2.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== minimist@~0.0.1: version "0.0.10" @@ -10441,22 +10447,6 @@ minizlib@^1.3.3: dependencies: minipass "^2.9.0" -mississippi@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-2.0.0.tgz#3442a508fafc28500486feea99409676e4ee5a6f" - integrity sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw== - dependencies: - concat-stream "^1.5.0" - duplexify "^3.4.2" - end-of-stream "^1.1.0" - flush-write-stream "^1.0.0" - from2 "^2.1.0" - parallel-transform "^1.1.0" - pump "^2.0.1" - pumpify "^1.3.3" - stream-each "^1.1.0" - through2 "^2.0.0" - mississippi@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" @@ -10488,13 +10478,20 @@ mkdirp@0.5.1: dependencies: minimist "0.0.8" -mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.4, mkdirp@^0.5.5, mkdirp@~0.5.1: +mkdirp@^0.5.0, mkdirp@^0.5.3, mkdirp@^0.5.4, mkdirp@^0.5.5, mkdirp@~0.5.1: version "0.5.5" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== dependencies: minimist "^1.2.5" +mkdirp@^0.5.1: + version "0.5.6" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" + integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== + dependencies: + minimist "^1.2.6" + mockdate@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/mockdate/-/mockdate-2.0.2.tgz#5ae0c0eaf8fe23e009cd01f9889b42c4f634af12" @@ -10572,7 +10569,7 @@ mousetrap@^1.6.1: move-concurrently@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" - integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I= + integrity sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ== dependencies: aproba "^1.1.1" copy-concurrently "^1.0.0" @@ -11270,7 +11267,7 @@ on-headers@~1.0.2: once@^1.3.0, once@^1.3.1, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== dependencies: wrappy "1" @@ -11437,7 +11434,7 @@ p-is-promise@^2.0.0: resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.0.0.tgz#7554e3d572109a87e1f3f53f6a7d85d1b194f4c5" integrity sha512-pzQPhYMCAgLAKPWD2jC3Se9fEfrD9npNos0y150EeqZll7akhEgGhTW/slB6lHku8AvYGiJ+YJ5hfHKePPgFWg== -p-limit@^1.0.0, p-limit@^1.1.0: +p-limit@^1.1.0: version "1.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== @@ -11451,7 +11448,7 @@ p-limit@^2.0.0: dependencies: p-try "^2.0.0" -p-limit@^2.2.0: +p-limit@^2.2.0, p-limit@^2.2.1: version "2.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== @@ -11461,7 +11458,7 @@ p-limit@^2.2.0: p-locate@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" - integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= + integrity sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg== dependencies: p-limit "^1.1.0" @@ -11506,7 +11503,7 @@ p-retry@^3.0.1: p-try@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" - integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= + integrity sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww== p-try@^2.0.0: version "2.0.0" @@ -11536,11 +11533,11 @@ pako@~1.0.5: integrity sha512-6i0HVbUfcKaTv+EG8ZTr75az7GFXcLYk9UyLEg7Notv/Ma+z/UG3TCoz6GiNeOrn1E/e63I0X/Hpw18jHOTUnA== parallel-transform@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.1.0.tgz#d410f065b05da23081fcd10f28854c29bda33b06" - integrity sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY= + version "1.2.0" + resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc" + integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg== dependencies: - cyclist "~0.2.2" + cyclist "^1.0.1" inherits "^2.0.3" readable-stream "^2.1.5" @@ -11679,7 +11676,7 @@ path-exists@^2.0.0: path-exists@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= + integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== path-exists@^4.0.0: version "4.0.0" @@ -11689,7 +11686,7 @@ path-exists@^4.0.0: path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== path-is-inside@^1.0.2: version "1.0.2" @@ -11827,7 +11824,7 @@ pify@^2.0.0, pify@^2.2.0: pify@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" - integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= + integrity sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg== pify@^4.0.1: version "4.0.1" @@ -11863,7 +11860,7 @@ pkg-dir@^1.0.0: pkg-dir@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" - integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= + integrity sha512-ojakdnUgL5pzJYWw2AIDEupaQCX5OPbM688ZevubICjdIX01PRSYKqm33fJoCOJBRseYCTUlQRnBNX+Pchaejw== dependencies: find-up "^2.1.0" @@ -12361,9 +12358,9 @@ pretty-format@^26.6.2: react-is "^17.0.1" process-nextick-args@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" - integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw== + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== process-on-spawn@^1.0.0: version "1.0.0" @@ -12385,7 +12382,7 @@ progress@^2.0.0, progress@^2.0.1: promise-inflight@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" - integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= + integrity sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g== promise@^7.1.1: version "7.3.1" @@ -12442,11 +12439,6 @@ prr@~1.0.1: resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= -pseudomap@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" - integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= - psl@^1.1.24, psl@^1.1.28: version "1.1.31" resolved "https://registry.yarnpkg.com/psl/-/psl-1.1.31.tgz#e9aa86d0101b5b105cbe93ac6b784cd547276184" @@ -12464,7 +12456,7 @@ public-encrypt@^4.0.0: randombytes "^2.0.1" safe-buffer "^5.1.2" -pump@^2.0.0, pump@^2.0.1: +pump@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== @@ -13202,7 +13194,20 @@ read-pkg@^3.0.0: normalize-package-data "^2.3.2" path-type "^3.0.0" -"readable-stream@1 || 2", "readable-stream@>=1.0.33-1 <1.1.0-0", readable-stream@~1.0.17, readable-stream@~1.0.27-1: +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.6, readable-stream@~2.3.6: + version "2.3.8" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" + integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +"readable-stream@>=1.0.33-1 <1.1.0-0", readable-stream@~1.0.17, readable-stream@~1.0.27-1: version "1.0.34" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" integrity sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw= @@ -13212,7 +13217,7 @@ read-pkg@^3.0.0: isarray "0.0.1" string_decoder "~0.10.x" -readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.6: +readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6: version "2.3.6" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== @@ -13225,7 +13230,7 @@ readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable string_decoder "~1.1.1" util-deprecate "~1.0.1" -readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.7, readable-stream@~2.3.6: +readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.7: version "2.3.7" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== @@ -13804,13 +13809,20 @@ right-now@^1.0.0: resolved "https://registry.yarnpkg.com/right-now/-/right-now-1.0.0.tgz#6e89609deebd7dcdaf8daecc9aea39cf585a0918" integrity sha1-bolgne69fc2vja7Mmuo5z1haCRg= -rimraf@2.6.3, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@^2.6.3: +rimraf@2.6.3, rimraf@^2.6.1, rimraf@^2.6.3: version "2.6.3" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== dependencies: glob "^7.1.3" +rimraf@^2.5.4, rimraf@^2.6.2: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + rimraf@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" @@ -13937,7 +13949,7 @@ run-parallel@^1.1.9: run-queue@^1.0.0, run-queue@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" - integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec= + integrity sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg== dependencies: aproba "^1.1.1" @@ -14132,11 +14144,6 @@ send@0.17.1: range-parser "~1.2.1" statuses "~1.5.0" -serialize-javascript@^1.4.0: - version "1.6.1" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.6.1.tgz#4d1f697ec49429a847ca6f442a2a755126c4d879" - integrity sha512-A5MOagrPFga4YaKQSWHryl7AXvbQkEqpw4NNYMTNYUNV51bA8ABHgYFpqKx+YFFrw59xMV1qGH1R4AgoNIVgCw== - serialize-javascript@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" @@ -14379,7 +14386,7 @@ slab-decomposition@^1.0.1: slash@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" - integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU= + integrity sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg== slash@^2.0.0: version "2.0.0" @@ -14651,13 +14658,6 @@ sshpk@^1.7.0: safer-buffer "^2.0.2" tweetnacl "~0.14.0" -ssri@^5.2.4: - version "5.3.0" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-5.3.0.tgz#ba3872c9c6d33a0704a7d71ff045e5ec48999d06" - integrity sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ== - dependencies: - safe-buffer "^5.1.1" - ssri@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8" @@ -14770,9 +14770,9 @@ stream-http@^2.0.0, stream-http@^2.7.2: xtend "^4.0.0" stream-shift@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" - integrity sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI= + version "1.0.1" + resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" + integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== stream-splicer@^2.0.0: version "2.0.1" @@ -14957,7 +14957,7 @@ string_decoder@^1.0.0, string_decoder@^1.1.1: string_decoder@~0.10.x: version "0.10.31" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" - integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= + integrity sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ== string_decoder@~1.1.1: version "1.1.1" @@ -15654,7 +15654,7 @@ typedarray-to-buffer@^3.1.5: typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" - integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= + integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== typescript@^4.1.2: version "4.1.2" @@ -15753,7 +15753,7 @@ uniqs@^2.0.0: resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI= -unique-filename@^1.1.0, unique-filename@^1.1.1: +unique-filename@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== @@ -15761,9 +15761,9 @@ unique-filename@^1.1.0, unique-filename@^1.1.1: unique-slug "^2.0.0" unique-slug@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.1.tgz#5e9edc6d1ce8fb264db18a507ef9bd8544451ca6" - integrity sha512-n9cU6+gITaVu7VGj1Z8feKMmfAjEAQGhwD9fE3zvpRRa0wEIx8ODYkVGfSc94M2OX00tUFV8wH3zYbm1I8mxFg== + version "2.0.2" + resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" + integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== dependencies: imurmurhash "^0.1.4" @@ -15887,7 +15887,7 @@ use@^3.1.0: util-deprecate@^1.0.1, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== util.promisify@1.0.0, util.promisify@^1.0.0: version "1.0.0" @@ -16578,7 +16578,7 @@ wrap-ansi@^7.0.0: wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== write-file-atomic@2.4.1: version "2.4.1" @@ -16633,7 +16633,7 @@ xml-name-validator@^3.0.0: resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== -"xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.1: +"xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.0, xtend@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" integrity sha1-pcbVMr5lbiPbgg77lDofBJmNY68= @@ -16643,7 +16643,7 @@ xtend@^2.1.2: resolved "https://registry.yarnpkg.com/xtend/-/xtend-2.2.0.tgz#eef6b1f198c1c8deafad8b1765a04dad4a01c5a9" integrity sha1-7vax8ZjByN6vrYsXZaBNrUoBxak= -xtend@^4.0.2: +xtend@^4.0.2, xtend@~4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== @@ -16655,15 +16655,15 @@ xtend@~2.1.1: dependencies: object-keys "~0.4.0" -"y18n@^3.2.1 || ^4.0.0", y18n@^4.0.0: +"y18n@^3.2.1 || ^4.0.0": version "4.0.0" resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== -yallist@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" - integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= +y18n@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" + integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== yallist@^3.0.0, yallist@^3.0.2, yallist@^3.1.1: version "3.1.1" From 4092d418f605e06c69eada3a2525abd76ed43b4a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 19 Jul 2023 14:04:54 +0900 Subject: [PATCH 137/274] Bump tmpl from 1.0.4 to 1.0.5 in /viz-lib (#5597) Bumps [tmpl](https://github.com/daaku/nodejs-tmpl) from 1.0.4 to 1.0.5. - [Release notes](https://github.com/daaku/nodejs-tmpl/releases) - [Commits](https://github.com/daaku/nodejs-tmpl/commits/v1.0.5) --- updated-dependencies: - dependency-name: tmpl dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- viz-lib/yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/viz-lib/yarn.lock b/viz-lib/yarn.lock index fb4090d896..c4b54a4066 100644 --- a/viz-lib/yarn.lock +++ b/viz-lib/yarn.lock @@ -9689,9 +9689,9 @@ tinyqueue@^2.0.0: integrity sha512-ppJZNDuKGgxzkHihX8v9v9G5f+18gzaTfrukGrq6ueg0lmH4nqVnA2IPG0AEH3jKEk2GRJCUhDoqpoiw3PHLBA== tmpl@1.0.x: - version "1.0.4" - resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" - integrity sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE= + version "1.0.5" + resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" + integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== to-array-buffer@^3.0.0: version "3.2.0" From 698498d89632133feb2dbd8da8b0af652dcbe9f8 Mon Sep 17 00:00:00 2001 From: Justin Clift Date: Wed, 19 Jul 2023 15:11:12 +1000 Subject: [PATCH 138/274] Update README to point at wiki based dev guide (#6196) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index fde2a86684..2bcebaf985 100644 --- a/README.md +++ b/README.md @@ -105,7 +105,7 @@ Redash supports more than 35 SQL and NoSQL [data sources](https://redash.io/help ## Reporting Bugs and Contributing Code * Want to report a bug or request a feature? Please open [an issue](https://github.com/getredash/redash/issues/new). -* Want to help us build **_Redash_**? Fork the project, edit in a [dev environment](https://redash.io/help-onpremise/dev/guide.html) and make a pull request. We need all the help we can get! +* Want to help us build **_Redash_**? Fork the project, edit in a [dev environment](https://github.com/getredash/redash/wiki/Local-development-setup) and make a pull request. We need all the help we can get! ## Security From 255f2221c6cdef24277c6d28594de0477282d716 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 19 Jul 2023 15:54:59 +1000 Subject: [PATCH 139/274] Bump hosted-git-info from 2.8.8 to 2.8.9 in /viz-lib (#5497) Bumps [hosted-git-info](https://github.com/npm/hosted-git-info) from 2.8.8 to 2.8.9. - [Release notes](https://github.com/npm/hosted-git-info/releases) - [Changelog](https://github.com/npm/hosted-git-info/blob/v2.8.9/CHANGELOG.md) - [Commits](https://github.com/npm/hosted-git-info/compare/v2.8.8...v2.8.9) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- viz-lib/yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/viz-lib/yarn.lock b/viz-lib/yarn.lock index c4b54a4066..df9b6c59b5 100644 --- a/viz-lib/yarn.lock +++ b/viz-lib/yarn.lock @@ -5362,9 +5362,9 @@ homedir-polyfill@^1.0.1: parse-passwd "^1.0.0" hosted-git-info@^2.1.4: - version "2.8.8" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" - integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== + version "2.8.9" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" + integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== hsluv@^0.0.3: version "0.0.3" From 17a03628e486f7d25165a1771e0b51ff269b12cd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 19 Jul 2023 15:56:21 +1000 Subject: [PATCH 140/274] Bump y18n from 4.0.0 to 4.0.3 in /viz-lib (#5554) Bumps [y18n](https://github.com/yargs/y18n) from 4.0.0 to 4.0.3. - [Release notes](https://github.com/yargs/y18n/releases) - [Changelog](https://github.com/yargs/y18n/blob/y18n-v4.0.3/CHANGELOG.md) - [Commits](https://github.com/yargs/y18n/compare/v4.0.0...y18n-v4.0.3) --- updated-dependencies: - dependency-name: y18n dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- viz-lib/yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/viz-lib/yarn.lock b/viz-lib/yarn.lock index df9b6c59b5..162c7b4a73 100644 --- a/viz-lib/yarn.lock +++ b/viz-lib/yarn.lock @@ -10484,9 +10484,9 @@ xtend@~2.1.1: object-keys "~0.4.0" y18n@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" - integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== + version "4.0.3" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" + integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== yallist@^4.0.0: version "4.0.0" From d3f118a74be12f3167cf83787a14cb2cdd617b0f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 19 Jul 2023 15:56:39 +1000 Subject: [PATCH 141/274] Bump path-parse from 1.0.6 to 1.0.7 in /viz-lib (#5562) Bumps [path-parse](https://github.com/jbgutierrez/path-parse) from 1.0.6 to 1.0.7. - [Release notes](https://github.com/jbgutierrez/path-parse/releases) - [Commits](https://github.com/jbgutierrez/path-parse/commits/v1.0.7) --- updated-dependencies: - dependency-name: path-parse dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- viz-lib/yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/viz-lib/yarn.lock b/viz-lib/yarn.lock index 162c7b4a73..61803d98d6 100644 --- a/viz-lib/yarn.lock +++ b/viz-lib/yarn.lock @@ -7720,9 +7720,9 @@ path-key@^3.1.0: integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== path-parse@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" - integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== path-type@^3.0.0: version "3.0.0" From a63d7d9ad8346983b1f5d462396a431656076808 Mon Sep 17 00:00:00 2001 From: Justin Clift Date: Wed, 19 Jul 2023 17:13:56 +1000 Subject: [PATCH 142/274] Add (dev focused) Discord link to the README (#6197) --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 2bcebaf985..5eacf7b4d8 100644 --- a/README.md +++ b/README.md @@ -101,6 +101,7 @@ Redash supports more than 35 SQL and NoSQL [data sources](https://redash.io/help * Issues: https://github.com/getredash/redash/issues * Discussion Forum: https://github.com/getredash/redash/discussions/ +* Development Discussion: https://discord.gg/tN5MdmfGBp ## Reporting Bugs and Contributing Code From 87adad9afc00e3e838bfd043050dbcced731c061 Mon Sep 17 00:00:00 2001 From: Justin Clift Date: Wed, 19 Jul 2023 18:59:42 +1000 Subject: [PATCH 143/274] Update our dev and CI docker to use NodeJS 16.20.1 (#6178) --- .ci/Dockerfile.cypress | 2 +- Dockerfile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.ci/Dockerfile.cypress b/.ci/Dockerfile.cypress index 151905225c..1ee95563c8 100644 --- a/.ci/Dockerfile.cypress +++ b/.ci/Dockerfile.cypress @@ -1,4 +1,4 @@ -FROM cypress/browsers:node14.17.0-chrome91-ff89 +FROM cypress/browsers:node16.18.0-chrome90-ff88 ENV APP /usr/src/app WORKDIR $APP diff --git a/Dockerfile b/Dockerfile index 84d9b55ef5..4c33c5046d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM node:14.17 as frontend-builder +FROM node:16.20.1 as frontend-builder RUN npm install --global --force yarn@1.22.19 From 9736bc76f71868bba656cc25736e90668ff6d0a8 Mon Sep 17 00:00:00 2001 From: Justin Clift Date: Wed, 19 Jul 2023 20:18:19 +1000 Subject: [PATCH 144/274] Bump Cypress to 5.6.0 (#6198) --- package.json | 2 +- yarn.lock | 31 ++++++++++++++++++------------- 2 files changed, 19 insertions(+), 14 deletions(-) diff --git a/package.json b/package.json index c988edf5b4..20acb4dd58 100644 --- a/package.json +++ b/package.json @@ -108,7 +108,7 @@ "babel-plugin-transform-builtin-extend": "^1.1.2", "copy-webpack-plugin": "^5.1.2", "css-loader": "^0.28.7", - "cypress": "^5.3.0", + "cypress": "^5.6.0", "enzyme": "^3.8.0", "enzyme-adapter-react-16": "^1.7.1", "enzyme-to-json": "^3.3.5", diff --git a/yarn.lock b/yarn.lock index dbd248133d..0f511b2545 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4222,11 +4222,16 @@ commander@^2.20.0: resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== -commander@^4.0.1, commander@^4.1.1: +commander@^4.0.1: version "4.1.1" resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== +commander@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" + integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== + common-tags@^1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.0.tgz#8e3153e542d4a39e9b10554434afaaf98956a937" @@ -4792,10 +4797,10 @@ cyclist@^1.0.1: resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.2.tgz#673b5f233bf34d8e602b949429f8171d9121bea3" integrity sha512-0sVXIohTfLqVIW3kb/0n6IiWF3Ifj5nm2XaSrLq2DI6fKIGa2fYAZdk917rUneaeLVpYfFcyXE2ft0fe3remsA== -cypress@^5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/cypress/-/cypress-5.3.0.tgz#91122219ae66ab910058970dbf36619ab0fbde6c" - integrity sha512-XgebyqL7Th6/8YenE1ddb7+d4EiCG2Jvg/5c8+HPfFFY/gXnOVhoCVUU3KW8qg3JL7g0B+iJbHd5hxuCqbd1RQ== +cypress@^5.6.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/cypress/-/cypress-5.6.0.tgz#6781755c3ddfd644ce3179fcd7389176c0c82280" + integrity sha512-cs5vG3E2JLldAc16+5yQxaVRLLqMVya5RlrfPWkC72S5xrlHFdw7ovxPb61s4wYweROKTyH01WQc2PFzwwVvyQ== dependencies: "@cypress/listr-verbose-renderer" "^0.4.1" "@cypress/request" "^2.88.5" @@ -4809,7 +4814,7 @@ cypress@^5.3.0: chalk "^4.1.0" check-more-types "^2.24.0" cli-table3 "~0.6.0" - commander "^4.1.1" + commander "^5.1.0" common-tags "^1.8.0" debug "^4.1.1" eventemitter2 "^6.4.2" @@ -4827,10 +4832,10 @@ cypress@^5.3.0: minimist "^1.2.5" moment "^2.27.0" ospath "^1.2.2" - pretty-bytes "^5.3.0" + pretty-bytes "^5.4.1" ramda "~0.26.1" request-progress "^3.0.0" - supports-color "^7.1.0" + supports-color "^7.2.0" tmp "~0.2.1" untildify "^4.0.0" url "^0.11.0" @@ -12326,10 +12331,10 @@ prettier@^1.19.1: resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb" integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew== -pretty-bytes@^5.3.0: - version "5.4.1" - resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.4.1.tgz#cd89f79bbcef21e3d21eb0da68ffe93f803e884b" - integrity sha512-s1Iam6Gwz3JI5Hweaz4GoCD1WUNUIyzePFy5+Js2hjwGVt2Z79wNN+ZKOZ2vB6C+Xs6njyB84Z1IthQg8d9LxA== +pretty-bytes@^5.4.1: + version "5.6.0" + resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" + integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== pretty-error@^2.0.2: version "2.1.1" @@ -15082,7 +15087,7 @@ supports-color@^6.0.0, supports-color@^6.1.0: dependencies: has-flag "^3.0.0" -supports-color@^7.1.0: +supports-color@^7.1.0, supports-color@^7.2.0: version "7.2.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== From f3ba10ff3231529de5a488fb6dec144419aa3cab Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 20 Jul 2023 10:39:26 +0900 Subject: [PATCH 145/274] Bump sqlparse from 0.3.0 to 0.4.4 (#6049) * Bump sqlparse from 0.3.0 to 0.4.4 Bumps [sqlparse](https://github.com/andialbrecht/sqlparse) from 0.3.0 to 0.4.4. - [Changelog](https://github.com/andialbrecht/sqlparse/blob/master/CHANGELOG) - [Commits](https://github.com/andialbrecht/sqlparse/compare/0.3.0...0.4.4) --- updated-dependencies: - dependency-name: sqlparse dependency-type: direct:production ... Signed-off-by: dependabot[bot] * use str instead of text_type Signed-off-by: Ye Sijun --------- Signed-off-by: dependabot[bot] Signed-off-by: Ye Sijun Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Ye Sijun --- redash/query_runner/__init__.py | 16 ++++++---------- requirements.txt | 2 +- 2 files changed, 7 insertions(+), 11 deletions(-) diff --git a/redash/query_runner/__init__.py b/redash/query_runner/__init__.py index 7d0a125fa6..a259247367 100644 --- a/redash/query_runner/__init__.py +++ b/redash/query_runner/__init__.py @@ -1,14 +1,10 @@ -import ipaddress import logging -import socket from contextlib import ExitStack from functools import wraps -from urllib.parse import urlparse import sqlparse from dateutil import parser from rq.timeouts import JobTimeoutException -from six import text_type from sshtunnel import open_tunnel from redash import settings, utils @@ -76,21 +72,21 @@ def strip_trailing_semicolon(stmt): return stmt def is_empty_statement(stmt): - strip_comments = sqlparse.filters.StripCommentsFilter() - # copy statement object. `copy.deepcopy` fails to do this, so just re-parse it st = sqlparse.engine.FilterStack() - stmt = next(st.run(sqlparse.text_type(stmt))) + st.stmtprocess.append(sqlparse.filters.StripCommentsFilter()) + stmt = next(st.run(str(stmt)), None) + if stmt is None: + return True - sql = sqlparse.text_type(strip_comments.process(stmt)) - return sql.strip() == "" + return str(stmt).strip() == "" stack = sqlparse.engine.FilterStack() result = [stmt for stmt in stack.run(query)] result = [strip_trailing_comments(stmt) for stmt in result] result = [strip_trailing_semicolon(stmt) for stmt in result] - result = [sqlparse.text_type(stmt).strip() for stmt in result if not is_empty_statement(stmt)] + result = [str(stmt).strip() for stmt in result if not is_empty_statement(stmt)] if len(result) > 0: return result diff --git a/requirements.txt b/requirements.txt index 7b78d2bbd3..568a045b65 100644 --- a/requirements.txt +++ b/requirements.txt @@ -29,7 +29,7 @@ SQLAlchemy-Searchable==0.10.6 # We need to pin the version of pyparsing, as newer versions break SQLAlchemy-Searchable-10.0.6 (newer versions no longer depend on it) pyparsing==2.3.0 SQLAlchemy-Utils==0.34.2 -sqlparse==0.3.0 +sqlparse==0.4.4 statsd==3.3.0 greenlet==1.1.3 gunicorn==20.0.4 From ff6377b6e258ff5e54757379a785c0946177b5d7 Mon Sep 17 00:00:00 2001 From: Justin Clift Date: Fri, 21 Jul 2023 00:27:58 +1000 Subject: [PATCH 146/274] Bump SQLAlchemy-Searchable to 1.2.0 (#6173) * Drop pyparsing, update SQLAlchemy-Searchable to 1.2.0 * fix make_searchable (#6180) * fix test Signed-off-by: Ye Sijun --------- Signed-off-by: Ye Sijun Co-authored-by: Spencer Weeks Co-authored-by: Ye Sijun --- redash/models/base.py | 2 +- requirements.txt | 5 +---- tests/handlers/test_queries.py | 2 +- tests/models/test_queries.py | 2 ++ 4 files changed, 5 insertions(+), 6 deletions(-) diff --git a/redash/models/base.py b/redash/models/base.py index 57ec2f0471..0482fb9ace 100644 --- a/redash/models/base.py +++ b/redash/models/base.py @@ -36,7 +36,7 @@ def apply_pool_defaults(self, app, options): # listen to a few database events to set up functions, trigger updates # and indexes for the full text search -make_searchable(options={"regconfig": "pg_catalog.simple"}) +make_searchable(db.metadata, options={"regconfig": "pg_catalog.simple"}) class SearchBaseQuery(BaseQuery, SearchQueryMixin): diff --git a/requirements.txt b/requirements.txt index 568a045b65..e416955bed 100644 --- a/requirements.txt +++ b/requirements.txt @@ -24,10 +24,7 @@ PyYAML==5.4 redis==4.4.4 requests==2.31.0 SQLAlchemy==1.3.24 -# We can't upgrade SQLAlchemy-Searchable version as newer versions require PostgreSQL > 9.6, but we target older versions at the moment. -SQLAlchemy-Searchable==0.10.6 -# We need to pin the version of pyparsing, as newer versions break SQLAlchemy-Searchable-10.0.6 (newer versions no longer depend on it) -pyparsing==2.3.0 +SQLAlchemy-Searchable==1.2.0 SQLAlchemy-Utils==0.34.2 sqlparse==0.4.4 statsd==3.3.0 diff --git a/tests/handlers/test_queries.py b/tests/handlers/test_queries.py index f29216ccde..691858b9a0 100644 --- a/tests/handlers/test_queries.py +++ b/tests/handlers/test_queries.py @@ -59,7 +59,7 @@ def test_query_search(self): self.assertEqual(rv.status_code, 200) self.assertEqual(len(rv.json["results"]), 1) - rv = self.make_request("get", "/api/queries?q=better OR faster") + rv = self.make_request("get", "/api/queries?q=better or faster") self.assertEqual(rv.status_code, 200) self.assertEqual(len(rv.json["results"]), 2) diff --git a/tests/models/test_queries.py b/tests/models/test_queries.py index 85f1cac5cc..ce8d24acd3 100644 --- a/tests/models/test_queries.py +++ b/tests/models/test_queries.py @@ -1,6 +1,7 @@ import datetime import mock +import pytest from redash.models import Event, Group, Query, QueryResult, db from redash.utils import gen_query_hash, utcnow @@ -171,6 +172,7 @@ def test_search_query_parser_hyphen(self): self.assertIn(q1, queries) self.assertIn(q2, queries) + @pytest.mark.skip(reason="sqlalchemy-searchable > 1.0 doesn't support searching for emails") def test_search_query_parser_emails(self): q1 = self.factory.create_query(name="janedoe@example.com") q2 = self.factory.create_query(name="johndoe@example.com") From 0c223b6af75cb73215d0b90d601bbd1c2ed1508a Mon Sep 17 00:00:00 2001 From: vvsd <40269480+vvsd@users.noreply.github.com> Date: Thu, 20 Jul 2023 23:06:19 +0800 Subject: [PATCH 147/274] update httplib2 0.14.0 to 0.19.0 (#5865) Co-authored-by: Jun --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index e416955bed..9e2f768b52 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,7 +4,7 @@ itsdangerous==2.1.2 click==8.1.3 MarkupSafe==2.1.1 pyOpenSSL==23.2.0 -httplib2==0.18.1 +httplib2==0.19.0 wtforms==2.2.1 Flask-RESTful==0.3.10 Flask-Login==0.6.0 From 4869a652c0ba1bcaa1f8361996e81e3b3e2a3de7 Mon Sep 17 00:00:00 2001 From: Justin Clift Date: Fri, 21 Jul 2023 02:08:15 +1000 Subject: [PATCH 148/274] Bump Cypress to 6.0.1 (#6205) * Bump Cypress to 6.0.1 Unfortunately, due to a change in how Cypress treats elements with opacity 0, we need to disable two of the front end tests. Hopefully someday, someone with better knowledge of JS and Cypress is able to fix these. :) --- .../integration/dashboard/parameter_spec.js | 64 +------------------ package.json | 4 +- yarn.lock | 32 +++++----- 3 files changed, 19 insertions(+), 81 deletions(-) diff --git a/client/cypress/integration/dashboard/parameter_spec.js b/client/cypress/integration/dashboard/parameter_spec.js index dd62e773d4..0d3cc7a621 100644 --- a/client/cypress/integration/dashboard/parameter_spec.js +++ b/client/cypress/integration/dashboard/parameter_spec.js @@ -1,5 +1,4 @@ -import { createQueryAndAddWidget, editDashboard } from "../../support/dashboard"; -import { dragParam, expectParamOrder } from "../../support/parameters"; +import { createQueryAndAddWidget } from "../../support/dashboard"; describe("Dashboard Parameters", () => { const parameters = [ @@ -59,16 +58,6 @@ describe("Dashboard Parameters", () => { }); }; - const setWidgetParametersToDashboard = parameters => { - cy.wrap(parameters).each(({ name: paramName }, i) => { - cy.getByTestId(`EditParamMappingButton-${paramName}`).click(); - cy.getByTestId("NewDashboardParameterOption") - .filter(":visible") - .click(); - return saveMappingOptions(i === parameters.length - 1); - }); - }; - it("supports widget parameters", function() { // widget parameter mapping is the default for the API cy.getByTestId(this.widgetTestId).within(() => { @@ -86,27 +75,6 @@ describe("Dashboard Parameters", () => { cy.getByTestId("DashboardParameters").should("not.exist"); }); - it("supports dashboard parameters", function() { - openMappingOptions(this.widgetTestId); - setWidgetParametersToDashboard(parameters); - - cy.getByTestId(this.widgetTestId).within(() => { - cy.getByTestId("ParameterName-param1").should("not.exist"); - }); - - cy.getByTestId("DashboardParameters").within(() => { - cy.getByTestId("ParameterName-param1") - .find("input") - .type("{selectall}DashboardParam"); - - cy.getByTestId("ParameterApplyButton").click(); - }); - - cy.getByTestId(this.widgetTestId).within(() => { - cy.getByTestId("TableVisualization").should("contain", "DashboardParam"); - }); - }); - it("supports static values for parameters", function() { openMappingOptions(this.widgetTestId); cy.getByTestId("EditParamMappingButton-param1").click(); @@ -131,34 +99,4 @@ describe("Dashboard Parameters", () => { cy.getByTestId("TableVisualization").should("contain", "StaticValue"); }); }); - - it("reorders parameters", function() { - // Reorder is only available in edit mode - editDashboard(); - - const [param1, param2] = parameters; - - cy.getByTestId("ParameterBlock-param1") - .invoke("width") - .then(paramWidth => { - cy.server(); - cy.route("POST", `**/api/dashboards/*`).as("SaveDashboard"); - cy.route("POST", `**/api/widgets/*`).as("SaveWidget"); - - // Asserts widget param order - dragParam(param1.name, paramWidth, 1); - cy.wait("@SaveWidget"); - cy.reload(); - expectParamOrder([param2.title, param1.title]); - - // Asserts dashboard param order - openMappingOptions(this.widgetTestId); - setWidgetParametersToDashboard(parameters); - cy.wait("@SaveWidget"); - dragParam(param1.name, paramWidth, 1); - cy.wait("@SaveDashboard"); - cy.reload(); - expectParamOrder([param2.title, param1.title]); - }); - }); }); diff --git a/package.json b/package.json index 20acb4dd58..11d773b8a9 100644 --- a/package.json +++ b/package.json @@ -88,7 +88,7 @@ "@babel/preset-typescript": "^7.10.4", "@cypress/code-coverage": "^3.8.1", "@percy/agent": "0.24.3", - "@percy/cypress": "^2.3.2", + "@percy/cypress": "2.3.4", "@pmmmwh/react-refresh-webpack-plugin": "^0.4.3", "@testing-library/cypress": "^7.0.2", "@types/classnames": "^2.2.10", @@ -108,7 +108,7 @@ "babel-plugin-transform-builtin-extend": "^1.1.2", "copy-webpack-plugin": "^5.1.2", "css-loader": "^0.28.7", - "cypress": "^5.6.0", + "cypress": "6.0.1", "enzyme": "^3.8.0", "enzyme-adapter-react-16": "^1.7.1", "enzyme-to-json": "^3.3.5", diff --git a/yarn.lock b/yarn.lock index 0f511b2545..8f381376ec 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1635,13 +1635,13 @@ which "^2.0.1" winston "^3.0.0" -"@percy/cypress@^2.3.2": - version "2.3.2" - resolved "https://registry.yarnpkg.com/@percy/cypress/-/cypress-2.3.2.tgz#10853df07808f171d4bdd9df0cb62fdb7a89ee67" - integrity sha512-pRBUft9gOM5Jduyu0VKfucHy8QTDTIw8y+Zu7JNrNHWa0JcfOJcpQbhZJ6AGmA5xzad05S6wjQ8CnG8y3iaj/w== +"@percy/cypress@2.3.4": + version "2.3.4" + resolved "https://registry.yarnpkg.com/@percy/cypress/-/cypress-2.3.4.tgz#9605fd848ab27aab795515a22a8868078ba57838" + integrity sha512-UiVnLdcgRnOD1C5orkQiCQC1OFcb/Kt4CWSOVg61JkWNgeWb03os9HN2vjlwgb11eCR8gLHBs+O7T9MRMy28Qg== dependencies: "@percy/agent" "~0" - axios "^0.20.0" + axios "^0.21.0" "@plotly/d3-sankey-circular@0.33.1": version "0.33.1" @@ -2795,12 +2795,12 @@ axios@^0.19.0: dependencies: follow-redirects "1.5.10" -axios@^0.20.0: - version "0.20.0" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.20.0.tgz#057ba30f04884694993a8cd07fa394cff11c50bd" - integrity sha512-ANA4rr2BDcmmAQLOKft2fufrtuvlqR+cXNNinUmvfeSNCOF98PZL+7M/v1zIdGo7OLjEA9J2gXJL+j4zGsl0bA== +axios@^0.21.0: + version "0.21.4" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575" + integrity sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg== dependencies: - follow-redirects "^1.10.0" + follow-redirects "^1.14.0" axobject-query@^2.2.0: version "2.2.0" @@ -4797,10 +4797,10 @@ cyclist@^1.0.1: resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.2.tgz#673b5f233bf34d8e602b949429f8171d9121bea3" integrity sha512-0sVXIohTfLqVIW3kb/0n6IiWF3Ifj5nm2XaSrLq2DI6fKIGa2fYAZdk917rUneaeLVpYfFcyXE2ft0fe3remsA== -cypress@^5.6.0: - version "5.6.0" - resolved "https://registry.yarnpkg.com/cypress/-/cypress-5.6.0.tgz#6781755c3ddfd644ce3179fcd7389176c0c82280" - integrity sha512-cs5vG3E2JLldAc16+5yQxaVRLLqMVya5RlrfPWkC72S5xrlHFdw7ovxPb61s4wYweROKTyH01WQc2PFzwwVvyQ== +cypress@6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/cypress/-/cypress-6.0.1.tgz#86857ca2f527c3723575737deab42fd8f2a209df" + integrity sha512-3xtQZ0YM65soLgKQUgn2wg2IbWsM6A2yBg6L4RF31mZHr5LNKdO2/9sgiwxEVMKu2C2m6+IQ75zHP41kZP5rPg== dependencies: "@cypress/listr-verbose-renderer" "^0.4.1" "@cypress/request" "^2.88.5" @@ -6722,12 +6722,12 @@ follow-redirects@1.9.0: dependencies: debug "^3.0.0" -follow-redirects@^1.0.0, follow-redirects@^1.10.0: +follow-redirects@^1.0.0: version "1.14.5" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.5.tgz#f09a5848981d3c772b5392309778523f8d85c381" integrity sha512-wtphSXy7d4/OR+MvIFbCVBDzZ5520qV8XfPklSN5QtxuMUJZ+b0Wnst1e1lCDocfzuCkHqj8k0FpZqO+UIaKNA== -follow-redirects@^1.14.9: +follow-redirects@^1.14.0, follow-redirects@^1.14.9: version "1.15.2" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== From 3e8222de1771ed3c30efc2239f20e8e4ce7049cd Mon Sep 17 00:00:00 2001 From: Jun Date: Fri, 21 Jul 2023 08:56:30 +0900 Subject: [PATCH 149/274] upgrade boto3 and botocore (#6207) Signed-off-by: Ye Sijun --- requirements_all_ds.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/requirements_all_ds.txt b/requirements_all_ds.txt index f681c98664..d937abea19 100644 --- a/requirements_all_ds.txt +++ b/requirements_all_ds.txt @@ -10,8 +10,8 @@ pymongo[tls,srv]==4.3.3 vertica-python==1.1.1 td-client==1.0.0 pymssql==2.1.5 -boto3>=1.10.0,<1.11.0 -botocore>=1.13,<1.14.0 +boto3==1.28.8 +botocore==1.31.8 sasl>=0.1.3 thrift>=0.8.0 thrift_sasl>=0.1.0 From 281b55234625a200d1044ddfcd317a43283e4a83 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 21 Jul 2023 09:33:07 +0900 Subject: [PATCH 150/274] Bump urllib3 from 1.25.11 to 1.26.5 (#6136) Dependabot couldn't find the original pull request head commit, b868bb5edd4a3fc036ed40754f099f37541a2814. Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 9e2f768b52..ac8a892eba 100644 --- a/requirements.txt +++ b/requirements.txt @@ -60,5 +60,5 @@ werkzeug==2.3.3 # ldap3==2.2.4 Authlib==0.15.5 advocate==1.0.0 -urllib3==1.25.11 +urllib3==1.26.5 importlib-resources==5.13.0 From 0dd8614d5d594994dd21cf05098d0896cb96a9ac Mon Sep 17 00:00:00 2001 From: Jun Date: Fri, 21 Jul 2023 10:52:09 +0900 Subject: [PATCH 151/274] bump pysaml2 to 7.3.1 (#6208) Signed-off-by: Ye Sijun --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index ac8a892eba..bfacfb4e69 100644 --- a/requirements.txt +++ b/requirements.txt @@ -34,7 +34,7 @@ rq==1.5.0 rq-scheduler==0.10.0 jsonschema==3.1.1 RestrictedPython==6.1 -pysaml2==6.5.2 +pysaml2==7.3.1 python-dotenv==0.19.2 funcy==1.13 sentry-sdk>=0.14.3,<0.15.0 From 20dbb461e9897f380462a95301867d84cbe694f2 Mon Sep 17 00:00:00 2001 From: Jun Date: Fri, 21 Jul 2023 10:52:18 +0900 Subject: [PATCH 152/274] Use assertEqual instead of assertEquals (#6210) Signed-off-by: Ye Sijun --- tests/query_runner/test_google_analytics4.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tests/query_runner/test_google_analytics4.py b/tests/query_runner/test_google_analytics4.py index 9a6818758d..c13fd60496 100644 --- a/tests/query_runner/test_google_analytics4.py +++ b/tests/query_runner/test_google_analytics4.py @@ -82,7 +82,7 @@ def test_date_column(self): "type": "date", } - self.assertEquals(get_formatted_column_json(column_name), expected_response) + self.assertEqual(get_formatted_column_json(column_name), expected_response) def test_date_hour_column(self): column_name = "dateHour" @@ -92,7 +92,7 @@ def test_date_hour_column(self): "type": "datetime", } - self.assertEquals(get_formatted_column_json(column_name), expected_response) + self.assertEqual(get_formatted_column_json(column_name), expected_response) def test_other_string(self): column_name = "city" @@ -102,7 +102,7 @@ def test_other_string(self): "type": "string", } - self.assertEquals(get_formatted_column_json(column_name), expected_response) + self.assertEqual(get_formatted_column_json(column_name), expected_response) class TestParseGaResponse(TestCase): @@ -126,7 +126,7 @@ def test_parse_ga_response(self): value = parse_ga_response(response) - self.assertEquals(value, expected_value) + self.assertEqual(value, expected_value) def test_parse_ga_response_with_date_hour(self): response = { @@ -191,4 +191,4 @@ def test_parse_ga_response_with_date_hour(self): } value = parse_ga_response(response) - self.assertEquals(value, expected_value) + self.assertEqual(value, expected_value) From cd0bbc2621f9ae47aacb275431c0d83ef2afb5d2 Mon Sep 17 00:00:00 2001 From: Jun Date: Fri, 21 Jul 2023 10:52:29 +0900 Subject: [PATCH 153/274] Use 'urllib.parse.quote' instead 'werkzeug.urls.url_quote' (#6209) Signed-off-by: Ye Sijun --- redash/handlers/query_results.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/redash/handlers/query_results.py b/redash/handlers/query_results.py index 68b2cfff84..5b26c0cd45 100644 --- a/redash/handlers/query_results.py +++ b/redash/handlers/query_results.py @@ -1,9 +1,9 @@ import unicodedata +from urllib.parse import quote from flask import make_response, request from flask_login import current_user from flask_restful import abort -from werkzeug.urls import url_quote from redash import models, settings from redash.handlers.base import BaseResource, get_object_or_404, record_event @@ -126,7 +126,7 @@ def content_disposition_filenames(attachment_filename): except UnicodeEncodeError: filenames = { "filename": unicodedata.normalize("NFKD", attachment_filename).encode("ascii", "ignore"), - "filename*": "UTF-8''%s" % url_quote(attachment_filename, safe=b""), + "filename*": "UTF-8''%s" % quote(attachment_filename, safe=b""), } else: filenames = {"filename": attachment_filename} From f41eab70540cae1f050b3752bbbf7b5e1b9a08f2 Mon Sep 17 00:00:00 2001 From: Jun Date: Fri, 21 Jul 2023 11:51:00 +0900 Subject: [PATCH 154/274] use CryptContext.hash instead of CryptContext.encrypt (#6211) Signed-off-by: Ye Sijun --- redash/models/users.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/redash/models/users.py b/redash/models/users.py index f0313a24e0..ab660a9257 100644 --- a/redash/models/users.py +++ b/redash/models/users.py @@ -217,7 +217,7 @@ def find_by_email(cls, email): return cls.query.filter(cls.email == email) def hash_password(self, password): - self.password_hash = pwd_context.encrypt(password) + self.password_hash = pwd_context.hash(password) def verify_password(self, password): return self.password_hash and pwd_context.verify(password, self.password_hash) From 05c9b35e42d20d952dd8bcf4a46154281877a022 Mon Sep 17 00:00:00 2001 From: Jun Date: Fri, 21 Jul 2023 11:54:16 +0900 Subject: [PATCH 155/274] bump sentry to 1.28.1 (#6212) Signed-off-by: Ye Sijun --- requirements.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/requirements.txt b/requirements.txt index bfacfb4e69..ee73546c64 100644 --- a/requirements.txt +++ b/requirements.txt @@ -37,7 +37,7 @@ RestrictedPython==6.1 pysaml2==7.3.1 python-dotenv==0.19.2 funcy==1.13 -sentry-sdk>=0.14.3,<0.15.0 +sentry-sdk==1.28.1 semver==2.8.1 xlsxwriter==1.2.2 pystache==0.6.0 @@ -60,5 +60,5 @@ werkzeug==2.3.3 # ldap3==2.2.4 Authlib==0.15.5 advocate==1.0.0 -urllib3==1.26.5 +urllib3==1.26.16 importlib-resources==5.13.0 From 77a2c24d47b105ef0295bceca4416d9f10907913 Mon Sep 17 00:00:00 2001 From: Jun Date: Fri, 21 Jul 2023 14:52:46 +0900 Subject: [PATCH 156/274] fix test warning (#6217) Signed-off-by: Ye Sijun --- tests/factories.py | 2 +- tests/handlers/test_visualizations.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/factories.py b/tests/factories.py index 3f676e4a50..0656a67ed6 100644 --- a/tests/factories.py +++ b/tests/factories.py @@ -45,7 +45,7 @@ def __call__(self): redash.models.User, name="John Doe", email=Sequence("test{}@example.com"), - password_hash=pwd_context.encrypt("test1234"), + password_hash=pwd_context.hash("test1234"), group_ids=[2], org_id=1, ) diff --git a/tests/handlers/test_visualizations.py b/tests/handlers/test_visualizations.py index 75f022d607..c6c8d4c5f4 100644 --- a/tests/handlers/test_visualizations.py +++ b/tests/handlers/test_visualizations.py @@ -18,7 +18,7 @@ def test_create_visualization(self): self.assertEqual(rv.status_code, 200) data.pop("query_id") - self.assertDictContainsSubset(data, rv.json) + self.assertEqual(rv.json, {**rv.json, **data}) def test_delete_visualization(self): visualization = self.factory.create_visualization() From 37f008cccbee749a84e3c8e5f22c4918f2fef6cf Mon Sep 17 00:00:00 2001 From: ChengDaqi2023 <131479795+ChengDaqi2023@users.noreply.github.com> Date: Fri, 21 Jul 2023 14:27:47 +0800 Subject: [PATCH 157/274] update ua-parser 0.8.0 to 0.15.0 (#6199) --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index ee73546c64..d27f9a152e 100644 --- a/requirements.txt +++ b/requirements.txt @@ -45,7 +45,7 @@ parsedatetime==2.4 PyJWT==2.4.0 cryptography==40.0.2 simplejson==3.16.0 -ua-parser==0.8.0 +ua-parser==0.15.0 user-agents==2.0 maxminddb-geolite2==2018.703 pypd==1.1.0 From bee833a6c1e26e67b0c75317f04f4e865708677c Mon Sep 17 00:00:00 2001 From: Konstantin Smirnov <46676677+konnectr@users.noreply.github.com> Date: Fri, 21 Jul 2023 11:35:41 +0500 Subject: [PATCH 158/274] update werkzeug==2.3.6 (#6219) --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index d27f9a152e..c70985940e 100644 --- a/requirements.txt +++ b/requirements.txt @@ -54,7 +54,7 @@ gevent==22.10.1 sshtunnel==0.1.5 supervisor==4.1.0 supervisor_checks==0.8.1 -werkzeug==2.3.3 +werkzeug==2.3.6 # Uncomment the requirement for ldap3 if using ldap. # It is not included by default because of the GPL license conflict. # ldap3==2.2.4 From 91eee2b49edde06435a6b50bd274647973905c61 Mon Sep 17 00:00:00 2001 From: ImhotepW <38674754+ImhotepW@users.noreply.github.com> Date: Fri, 21 Jul 2023 03:18:28 -0400 Subject: [PATCH 159/274] Refactor permissions (#5600) * Updated admin permission definition location * Updated admin permission definition location for create_org and init_db * format Signed-off-by: Ye Sijun --------- Signed-off-by: Ye Sijun Co-authored-by: Oleksandr Co-authored-by: Ye Sijun --- redash/cli/users.py | 2 +- redash/handlers/setup.py | 2 +- redash/models/__init__.py | 2 +- redash/models/users.py | 1 + 4 files changed, 4 insertions(+), 3 deletions(-) diff --git a/redash/cli/users.py b/redash/cli/users.py index 845482271d..03e22dfa63 100644 --- a/redash/cli/users.py +++ b/redash/cli/users.py @@ -157,7 +157,7 @@ def create_root(email, name, google_auth=False, password=None, organization="def admin_group = models.Group( name="admin", - permissions=["admin", "super_admin"], + permissions=models.Group.ADMIN_PERMISSIONS, org=org, type=models.Group.BUILTIN_GROUP, ) diff --git a/redash/handlers/setup.py b/redash/handlers/setup.py index a81465406d..f7e8fab553 100644 --- a/redash/handlers/setup.py +++ b/redash/handlers/setup.py @@ -23,7 +23,7 @@ def create_org(org_name, user_name, email, password): default_org = Organization(name=org_name, slug="default", settings={}) admin_group = Group( name="admin", - permissions=["admin", "super_admin"], + permissions=Group.ADMIN_PERMISSIONS, org=default_org, type=Group.BUILTIN_GROUP, ) diff --git a/redash/models/__init__.py b/redash/models/__init__.py index b778309f3a..f8859f9f3d 100644 --- a/redash/models/__init__.py +++ b/redash/models/__init__.py @@ -1405,7 +1405,7 @@ def init_db(): default_org = Organization(name="Default", slug="default", settings={}) admin_group = Group( name="admin", - permissions=["admin", "super_admin"], + permissions=Group.ADMIN_PERMISSIONS, org=default_org, type=Group.BUILTIN_GROUP, ) diff --git a/redash/models/users.py b/redash/models/users.py index ab660a9257..af92492781 100644 --- a/redash/models/users.py +++ b/redash/models/users.py @@ -253,6 +253,7 @@ class Group(db.Model, BelongsToOrgMixin): "list_alerts", "list_data_sources", ] + ADMIN_PERMISSIONS = ["admin", "super_admin"] BUILTIN_GROUP = "builtin" REGULAR_GROUP = "regular" From be306e92849624076db9473a046be9949cb99b07 Mon Sep 17 00:00:00 2001 From: Peter Lee Date: Fri, 21 Jul 2023 15:32:59 +0800 Subject: [PATCH 160/274] fix pubic dashboard not update result #6203 (#6214) --- redash/handlers/query_results.py | 5 ++++- tests/handlers/test_query_results.py | 13 +++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/redash/handlers/query_results.py b/redash/handlers/query_results.py index 5b26c0cd45..c41988af83 100644 --- a/redash/handlers/query_results.py +++ b/redash/handlers/query_results.py @@ -255,7 +255,10 @@ def post(self, query_id): query = get_object_or_404(models.Query.get_by_id_and_org, query_id, self.current_org) allow_executing_with_view_only_permissions = query.parameterized.is_safe - should_apply_auto_limit = params.get("apply_auto_limit", False) + if "apply_auto_limit" in params: + should_apply_auto_limit = params.get("apply_auto_limit", False) + else: + should_apply_auto_limit = query.options.get("apply_auto_limit", False) if has_access(query, self.current_user, allow_executing_with_view_only_permissions): return run_query( diff --git a/tests/handlers/test_query_results.py b/tests/handlers/test_query_results.py index d6f7185fce..14072d0f90 100644 --- a/tests/handlers/test_query_results.py +++ b/tests/handlers/test_query_results.py @@ -250,6 +250,19 @@ def test_allows_execution_of_safe_queries_on_view_only_data_sources(self): rv = self.make_request("post", "/api/queries/{}/results".format(query.id), data={"parameters": {}}) self.assertEqual(rv.status_code, 200) + def test_get_latest_query_result_with_apply_auto_limit(self): + query = self.factory.create_query( + options={"parameters": [{"name": "foo", "type": "number"}], "apply_auto_limit": True} + ) + rv = self.make_request( + "post", + "/api/queries/{}/results".format(query.id), + data={"parameters": {}, "apply_auto_limit": True}, + ) + + self.assertEqual(rv.status_code, 200) + self.assertIn("job", rv.json) + def test_prevents_execution_of_unsafe_queries_using_api_key(self): ds = self.factory.create_data_source(group=self.factory.org.default_group, view_only=True) query = self.factory.create_query(data_source=ds, options={"parameters": [{"name": "foo", "type": "text"}]}) From e4302d916379289ac96f37cdd30c4eb8f842b5ca Mon Sep 17 00:00:00 2001 From: Justin Clift Date: Fri, 21 Jul 2023 18:29:51 +1000 Subject: [PATCH 161/274] Bump ua-parser to 0.18.0 (#6221) --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index c70985940e..434416183f 100644 --- a/requirements.txt +++ b/requirements.txt @@ -45,7 +45,7 @@ parsedatetime==2.4 PyJWT==2.4.0 cryptography==40.0.2 simplejson==3.16.0 -ua-parser==0.15.0 +ua-parser==0.18.0 user-agents==2.0 maxminddb-geolite2==2018.703 pypd==1.1.0 From c8eb445ce917b8664fa1f4a1060cd6aff3e52ab8 Mon Sep 17 00:00:00 2001 From: Naka Masato Date: Fri, 21 Jul 2023 18:23:15 +0900 Subject: [PATCH 162/274] Remove hipchat (#5486) * Remove hipchat * Remove hipchat logo --------- Co-authored-by: Justin Clift --- .../assets/images/destinations/hipchat.png | Bin 11742 -> 0 bytes .../destination/create_destination_spec.js | 2 +- redash/destinations/hipchat.py | 58 ------------------ redash/settings/__init__.py | 1 - 4 files changed, 1 insertion(+), 60 deletions(-) delete mode 100644 client/app/assets/images/destinations/hipchat.png delete mode 100644 redash/destinations/hipchat.py diff --git a/client/app/assets/images/destinations/hipchat.png b/client/app/assets/images/destinations/hipchat.png deleted file mode 100644 index 88ac5121029cacab1f6a21c311a63ecd12905bcf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11742 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 diff --git a/client/cypress/integration/destination/create_destination_spec.js b/client/cypress/integration/destination/create_destination_spec.js index 4629ec76c0..9e0ff79fce 100644 --- a/client/cypress/integration/destination/create_destination_spec.js +++ b/client/cypress/integration/destination/create_destination_spec.js @@ -15,7 +15,7 @@ describe("Create Destination", () => { cy.getByTestId("PreviewItem") .then($previewItems => Cypress.$.map($previewItems, item => Cypress.$(item).attr("data-test-type"))) - .then(availableTypes => expect(availableTypes).not.to.contain.members(this.deprecatedTypes)); + .then(availableTypes => expect(availableTypes).not.to.contain.oneOf(this.deprecatedTypes)); cy.getByTestId("CreateSourceDialog").should("contain", "Email"); cy.wait(1000); // eslint-disable-line cypress/no-unnecessary-waiting diff --git a/redash/destinations/hipchat.py b/redash/destinations/hipchat.py deleted file mode 100644 index f5262c1f0f..0000000000 --- a/redash/destinations/hipchat.py +++ /dev/null @@ -1,58 +0,0 @@ -import logging - -import requests - -from redash.destinations import BaseDestination, register -from redash.models import Alert -from redash.utils import deprecated, json_dumps - -colors = { - Alert.OK_STATE: "green", - Alert.TRIGGERED_STATE: "red", - Alert.UNKNOWN_STATE: "yellow", -} - - -@deprecated() -class HipChat(BaseDestination): - @classmethod - def configuration_schema(cls): - return { - "type": "object", - "properties": { - "url": { - "type": "string", - "title": "HipChat Notification URL (get it from the Integrations page)", - } - }, - "secret": ["url"], - "required": ["url"], - } - - @classmethod - def icon(cls): - return "fa-comment-o" - - def notify(self, alert, query, user, new_state, app, host, options): - try: - alert_url = "{host}/alerts/{alert_id}".format(host=host, alert_id=alert.id) - query_url = "{host}/queries/{query_id}".format(host=host, query_id=query.id) - - message = '{alert_name} changed state to {new_state} (based on this query).'.format( - alert_name=alert.name, - new_state=new_state.upper(), - alert_url=alert_url, - query_url=query_url, - ) - - data = {"message": message, "color": colors.get(new_state, "green")} - headers = {"Content-Type": "application/json"} - response = requests.post(options["url"], data=json_dumps(data), headers=headers, timeout=5.0) - - if response.status_code != 204: - logging.error("Bad status code received from HipChat: %d", response.status_code) - except Exception: - logging.exception("HipChat Send ERROR.") - - -register(HipChat) diff --git a/redash/settings/__init__.py b/redash/settings/__init__.py index 68f2e41ce5..6799a78c41 100644 --- a/redash/settings/__init__.py +++ b/redash/settings/__init__.py @@ -355,7 +355,6 @@ def email_server_is_configured(): "redash.destinations.email", "redash.destinations.slack", "redash.destinations.webhook", - "redash.destinations.hipchat", "redash.destinations.mattermost", "redash.destinations.chatwork", "redash.destinations.pagerduty", From 8376e4168448f4b6e9e3d154320c518c10345ab8 Mon Sep 17 00:00:00 2001 From: Peter Lee Date: Fri, 21 Jul 2023 19:10:19 +0800 Subject: [PATCH 163/274] Fix worker error in macOS (#6224) * Update worker.py * fix --------- Co-authored-by: rajat goyal --- redash/tasks/worker.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/redash/tasks/worker.py b/redash/tasks/worker.py index 10a83b8138..66adb05d09 100644 --- a/redash/tasks/worker.py +++ b/redash/tasks/worker.py @@ -1,6 +1,7 @@ import errno import os import signal +import sys from rq import Queue as BaseQueue from rq.job import Job as BaseJob @@ -10,9 +11,16 @@ from rq.worker import ( HerokuWorker, # HerokuWorker implements graceful shutdown on SIGTERM ) +from rq.worker import Worker from redash import statsd_client +# HerokuWorker does not work in OSX https://github.com/getredash/redash/issues/5413 +if sys.platform == "darwin": + BaseWorker = Worker +else: + BaseWorker = HerokuWorker + class CancellableJob(BaseJob): def cancel(self, pipeline=None): @@ -45,7 +53,7 @@ class RedashQueue(StatsdRecordingQueue, CancellableQueue): pass -class StatsdRecordingWorker(HerokuWorker): +class StatsdRecordingWorker(BaseWorker): """ RQ Worker Mixin that overrides `execute_job` to increment/modify metrics via Statsd """ @@ -63,7 +71,7 @@ def execute_job(self, job, queue): statsd_client.incr("rq.jobs.failed.{}".format(queue.name)) -class HardLimitingWorker(HerokuWorker): +class HardLimitingWorker(BaseWorker): """ RQ's work horses enforce time limits by setting a timed alarm and stopping jobs when they reach their time limits. However, the work horse may be entirely blocked From 7f4ade5f1ff95f4357f60acb07b0655a33527972 Mon Sep 17 00:00:00 2001 From: Vitaly Vakhteev Date: Fri, 21 Jul 2023 05:14:42 -0700 Subject: [PATCH 164/274] Feature/Add Discord Alert Destination (#6106) * Add discord webhook * Fix icon * Boto3 dependency * Add unit test for Discord webhook * Add suggestions * Apply suggestions from code review Co-authored-by: Jun * Misunderstood suggestion ) * Add suggestions * Apply suggestions from code review Co-authored-by: Jun * Fix test * Fix variables in strings * Fix formatting using our pre-commit hook --------- Co-authored-by: Jun Co-authored-by: Justin Clift --- .../assets/images/destinations/discord.png | Bin 0 -> 7202 bytes redash/destinations/discord.py | 70 ++++++++++++++++++ redash/settings/__init__.py | 1 + tests/handlers/test_destinations.py | 57 +++++++++++++- 4 files changed, 127 insertions(+), 1 deletion(-) create mode 100644 client/app/assets/images/destinations/discord.png create mode 100644 redash/destinations/discord.py diff --git a/client/app/assets/images/destinations/discord.png b/client/app/assets/images/destinations/discord.png new file mode 100644 index 0000000000000000000000000000000000000000..0781b84ce1e061324f11b014fc191a0f79777f9a GIT binary patch literal 7202 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 Vw(54xJ0JQ1^t268Z#3 {resp.status_code}") + except Exception as e: + logging.exception("Discord send ERROR: %s", e) + + +register(Discord) diff --git a/redash/settings/__init__.py b/redash/settings/__init__.py index 6799a78c41..7fb4101b08 100644 --- a/redash/settings/__init__.py +++ b/redash/settings/__init__.py @@ -355,6 +355,7 @@ def email_server_is_configured(): "redash.destinations.email", "redash.destinations.slack", "redash.destinations.webhook", + "redash.destinations.discord", "redash.destinations.mattermost", "redash.destinations.chatwork", "redash.destinations.pagerduty", diff --git a/tests/handlers/test_destinations.py b/tests/handlers/test_destinations.py index 3addbcbd1d..86feb4a263 100644 --- a/tests/handlers/test_destinations.py +++ b/tests/handlers/test_destinations.py @@ -1,4 +1,8 @@ -from redash.models import NotificationDestination +import json +from unittest import mock + +from redash.destinations.discord import Discord +from redash.models import Alert, NotificationDestination from tests import BaseTestCase @@ -86,3 +90,54 @@ def test_post(self): d = NotificationDestination.query.get(d.id) self.assertEqual(d.name, data["name"]) self.assertEqual(d.options["url"], data["options"]["url"]) + + +def test_discord_notify_calls_requests_post(): + alert = mock.Mock(spec_set=["id", "name", "options", "render_template"]) + alert.id = 1 + alert.name = "Test Alert" + alert.options = { + "custom_subject": "Test custom subject", + "custom_body": "Test custom body", + } + alert.render_template = mock.Mock(return_value={"Rendered": "template"}) + query = mock.Mock() + query.id = 1 + + user = mock.Mock() + app = mock.Mock() + host = "https://localhost:5000" + options = {"url": "https://discordapp.com/api/webhooks/test"} + + new_state = Alert.TRIGGERED_STATE + destination = Discord(options) + + with mock.patch("redash.destinations.discord.requests.post") as mock_post: + mock_response = mock.Mock() + mock_response.status_code = 204 + mock_post.return_value = mock_response + + destination.notify(alert, query, user, new_state, app, host, options) + + expected_payload = { + "content": "Test custom subject", + "embeds": [ + { + "color": "12597547", + "fields": [ + {"name": "Query", "value": f"{host}/queries/{query.id}", "inline": True}, + {"name": "Alert", "value": f"{host}/alerts/{alert.id}", "inline": True}, + {"name": "Description", "value": "Test custom body"}, + ], + } + ], + } + + mock_post.assert_called_once_with( + "https://discordapp.com/api/webhooks/test", + data=json.dumps(expected_payload), + headers={"Content-Type": "application/json"}, + timeout=5.0, + ) + + assert mock_response.status_code == 204 From 81da13b461f3c50ff440d1c86b53c5002e4c1ccd Mon Sep 17 00:00:00 2001 From: Justin Clift Date: Fri, 21 Jul 2023 22:43:37 +1000 Subject: [PATCH 165/274] Add "make format" command (#6225) --- Makefile | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Makefile b/Makefile index a17c3cecc1..00e9232f2f 100644 --- a/Makefile +++ b/Makefile @@ -25,6 +25,9 @@ down: env: printf "REDASH_COOKIE_SECRET=`pwgen -1s 32`\nREDASH_SECRET_KEY=`pwgen -1s 32`\n" >> .env +format: + pre-commit run --all-files + tests: docker-compose run server tests From b284dfe40d9f6ba17638e0c869c3f1e688966c39 Mon Sep 17 00:00:00 2001 From: Tejas Agrawal <30335116+agrawaltejas01@users.noreply.github.com> Date: Fri, 21 Jul 2023 18:48:37 +0530 Subject: [PATCH 166/274] improvement: MongoDB - JSON syntax error sent back to Client (#6068) --- redash/query_runner/mongodb.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/redash/query_runner/mongodb.py b/redash/query_runner/mongodb.py index 83b0e5ff04..86c3cd4281 100644 --- a/redash/query_runner/mongodb.py +++ b/redash/query_runner/mongodb.py @@ -267,8 +267,8 @@ def run_query(self, query, user): # noqa: C901 try: query_data = parse_query_json(query) - except ValueError: - return None, "Invalid query format. The query is not a valid JSON." + except ValueError as error: + return None, f"Invalid JSON format. {error.__str__()}" if "collection" not in query_data: return None, "'collection' must have a value to run a query" From bac15db21f4932e69f2b458db02ca84768983836 Mon Sep 17 00:00:00 2001 From: Konstantin Smirnov <46676677+konnectr@users.noreply.github.com> Date: Sat, 22 Jul 2023 02:23:01 +0500 Subject: [PATCH 167/274] bump PyYaml to 6.0.1 (#6227) --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 434416183f..992552361a 100644 --- a/requirements.txt +++ b/requirements.txt @@ -20,7 +20,7 @@ blinker==1.6.2 psycopg2-binary==2.9.6 python-dateutil==2.8.0 pytz>=2019.3 -PyYAML==5.4 +PyYAML==6.0.1 redis==4.4.4 requests==2.31.0 SQLAlchemy==1.3.24 From d2322c990416cc00b26eae18da2daae7d9fe58f0 Mon Sep 17 00:00:00 2001 From: Jannis Leidel Date: Sat, 22 Jul 2023 11:15:05 +0200 Subject: [PATCH 168/274] Store start datetime in redash:status hash again. (#4894) Fix #4893. Co-authored-by: Justin Clift --- redash/tasks/queries/maintenance.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/redash/tasks/queries/maintenance.py b/redash/tasks/queries/maintenance.py index 1336af4790..9c8dcd6985 100644 --- a/redash/tasks/queries/maintenance.py +++ b/redash/tasks/queries/maintenance.py @@ -81,6 +81,7 @@ def _apply_auto_limit(query_text, query): def refresh_queries(): + started_at = time.time() logger.info("Refreshing queries...") enqueued = [] for query in models.Query.outdated_queries(): @@ -105,6 +106,7 @@ def refresh_queries(): sentry.capture_exception(error) status = { + "started_at": started_at, "outdated_queries_count": len(enqueued), "last_refresh_at": time.time(), "query_ids": json_dumps([q.id for q in enqueued]), From b30622e53164ad6a70e54a9d50800a8c1fb0a7d3 Mon Sep 17 00:00:00 2001 From: Konstantin Smirnov <46676677+konnectr@users.noreply.github.com> Date: Sat, 22 Jul 2023 14:16:41 +0500 Subject: [PATCH 169/274] delete password in the log (#6228) --- redash/query_runner/pinot.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/redash/query_runner/pinot.py b/redash/query_runner/pinot.py index 96c69099fe..9b8a34fd70 100644 --- a/redash/query_runner/pinot.py +++ b/redash/query_runner/pinot.py @@ -69,7 +69,7 @@ def __init__(self, configuration): self.password = self.configuration.get("password") or None def run_query(self, query, user): - logger.debug("Running query %s with username: %s, password: %s", query, self.username, self.password) + logger.debug("Running query %s with username: %s", query, self.username) connection = pinotdb.connect( host=self.configuration["brokerHost"], port=self.configuration["brokerPort"], From 79ef3e4eb03e6177d3d65161cb81eee0c8452e8a Mon Sep 17 00:00:00 2001 From: Fernando Salcido <9658866+fsr313@users.noreply.github.com> Date: Sat, 22 Jul 2023 07:17:49 -0700 Subject: [PATCH 170/274] Handle error when data_source is None (#4936) * add try except for data_source * add try except for data_source * fix errir handle * add test for no data source * changed error handle * fix format * fix test --------- Co-authored-by: Konstantin Smirnov <46676677+konnectr@users.noreply.github.com> Co-authored-by: konnectr <1konnectrl@gmail.com> --- redash/handlers/query_results.py | 4 ++++ tests/handlers/test_query_results.py | 9 ++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/redash/handlers/query_results.py b/redash/handlers/query_results.py index c41988af83..f4d2584441 100644 --- a/redash/handlers/query_results.py +++ b/redash/handlers/query_results.py @@ -51,10 +51,14 @@ def error_response(message, http_status=400): ), "no_permission": error_response("You do not have permission to run queries with this data source.", 403), "select_data_source": error_response("Please select data source to run this query.", 401), + "no_data_source": error_response("Target data source not available.", 401), } def run_query(query, parameters, data_source, query_id, should_apply_auto_limit, max_age=0): + if not data_source: + return error_messages["no_data_source"] + if data_source.paused: if data_source.pause_reason: message = "{} is paused ({}). Please try later.".format(data_source.name, data_source.pause_reason) diff --git a/tests/handlers/test_query_results.py b/tests/handlers/test_query_results.py index 14072d0f90..e678c0eace 100644 --- a/tests/handlers/test_query_results.py +++ b/tests/handlers/test_query_results.py @@ -1,9 +1,16 @@ -from redash.handlers.query_results import error_messages +from redash.handlers.query_results import error_messages, run_query from redash.models import db from redash.utils import json_dumps from tests import BaseTestCase +class TestRunQuery(BaseTestCase): + def test_run_query_with_no_data_source(self): + response, status = run_query(None, None, None, None, None) + self.assertDictEqual(response, error_messages["no_data_source"][0]) + self.assertEqual(status, error_messages["no_data_source"][1]) + + class TestQueryResultsCacheHeaders(BaseTestCase): def test_uses_cache_headers_for_specific_result(self): query_result = self.factory.create_query_result() From f2e31a602e7bae921e39cb38730392a64273fb88 Mon Sep 17 00:00:00 2001 From: Tadayuki Onishi Date: Sat, 22 Jul 2023 23:20:17 +0900 Subject: [PATCH 171/274] [enhancement] Add a CLI command in order to create organization (#5869) * Add a cli command in order to create organization * Update redash/cli/organization.py Co-authored-by: Jun * add test --------- Co-authored-by: Konstantin Smirnov <46676677+konnectr@users.noreply.github.com> Co-authored-by: Jun Co-authored-by: konnectr <1konnectrl@gmail.com> --- redash/cli/organization.py | 21 ++++++++++++++++++++- tests/test_cli.py | 10 ++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/redash/cli/organization.py b/redash/cli/organization.py index 33282d050a..d941e06adb 100644 --- a/redash/cli/organization.py +++ b/redash/cli/organization.py @@ -1,4 +1,4 @@ -from click import argument +from click import argument, option from flask.cli import AppGroup from redash import models @@ -26,6 +26,25 @@ def show_google_apps_domains(): print("Current list of Google Apps domains: {}".format(", ".join(organization.google_apps_domains))) +@manager.command(name="create") +@argument("name") +@option( + "--slug", + "slug", + default="default", + help="The slug the organization belongs to (leave blank for " "'default').", +) +def create(name, slug="default"): + print("Creating organization (%s)..." % (name)) + + try: + models.db.session.add(models.Organization(name=name, slug=slug, settings={})) + models.db.session.commit() + except Exception as e: + print("Failed create organization: %s" % e) + exit(1) + + @manager.command(name="list") def list_command(): """List all organizations""" diff --git a/tests/test_cli.py b/tests/test_cli.py index 8494a08887..945c5588b7 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -353,6 +353,16 @@ def test_show_google_apps_domains(self): """ self.assertMultiLineEqual(result.output, textwrap.dedent(output).lstrip()) + def test_create(self): + runner = CliRunner() + result = runner.invoke(manager, ["org", "create", "test", "--slug", "test"]) + self.assertFalse(result.exception) + self.assertEqual(result.exit_code, 0) + + ucount = Organization.query.count() + + self.assertEqual(ucount, 2) + def test_list(self): self.factory.create_org(name="test", slug="test_org") self.factory.create_org(name="Borg", slug="B_org") From 448bb99b7ef931b61d2a8a2a926fd2057eb085f0 Mon Sep 17 00:00:00 2001 From: Justin Clift Date: Sun, 23 Jul 2023 06:30:56 +1000 Subject: [PATCH 172/274] Update webpack related deps in viz-lib (#6230) --- viz-lib/package.json | 6 +- viz-lib/yarn.lock | 407 ++++++++++++++++++------------------------- 2 files changed, 171 insertions(+), 242 deletions(-) diff --git a/viz-lib/package.json b/viz-lib/package.json index d9860e8db1..57fb385b86 100644 --- a/viz-lib/package.json +++ b/viz-lib/package.json @@ -60,7 +60,7 @@ "enzyme-to-json": "^3.3.5", "jest": "^24.1.0", "less": "^3.11.1", - "less-loader": "^5.0.0", + "less-loader": "^11.1.3", "less-plugin-autoprefix": "^2.0.0", "npm-run-all": "^4.1.5", "prettier": "^1.19.1", @@ -68,8 +68,8 @@ "style-loader": "^1.1.4", "ts-migrate": "^0.1.10", "typescript": "^4.1.2", - "webpack": "^5.88.1", - "webpack-cli": "^3.3.11" + "webpack": "^5.88.2", + "webpack-cli": "^5.1.4" }, "files": [ "dist", diff --git a/viz-lib/yarn.lock b/viz-lib/yarn.lock index 61803d98d6..2a70d88494 100644 --- a/viz-lib/yarn.lock +++ b/viz-lib/yarn.lock @@ -1082,6 +1082,11 @@ exec-sh "^0.3.2" minimist "^1.2.0" +"@discoveryjs/json-ext@^0.5.0": + version "0.5.7" + resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" + integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== + "@dsherret/to-absolute-glob@^2.0.2": version "2.0.2" resolved "https://registry.yarnpkg.com/@dsherret/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz#1f6475dc8bd974cea07a2daf3864b317b1dd332c" @@ -2020,6 +2025,21 @@ "@webassemblyjs/ast" "1.11.6" "@xtuc/long" "4.2.2" +"@webpack-cli/configtest@^2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-2.1.1.tgz#3b2f852e91dac6e3b85fb2a314fb8bef46d94646" + integrity sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw== + +"@webpack-cli/info@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-2.0.2.tgz#cc3fbf22efeb88ff62310cf885c5b09f44ae0fdd" + integrity sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A== + +"@webpack-cli/serve@^2.0.5": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-2.0.5.tgz#325db42395cd49fe6c14057f9a900e427df8810e" + integrity sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ== + "@xtuc/ieee754@^1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" @@ -2840,7 +2860,7 @@ center-align@^0.1.1: align-text "^0.1.3" lazy-cache "^1.0.3" -chalk@2.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.4.1, chalk@^2.4.2: +chalk@^2.0.0, chalk@^2.0.1, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -2987,7 +3007,16 @@ cliui@^6.0.0: strip-ansi "^6.0.0" wrap-ansi "^6.2.0" -clone@^2.1.1, clone@^2.1.2: +clone-deep@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" + integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== + dependencies: + is-plain-object "^2.0.4" + kind-of "^6.0.2" + shallow-clone "^3.0.0" + +clone@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= @@ -3078,6 +3107,11 @@ color-space@^1.14.6: hsluv "^0.0.3" mumath "^3.3.4" +colorette@^2.0.14: + version "2.0.20" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" + integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== + colormap@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/colormap/-/colormap-2.3.1.tgz#9f2ab643591c0728d32332d5480b2487a4e0f249" @@ -3102,6 +3136,11 @@ commander@2, commander@^2.15.1, commander@^2.19.0, commander@^2.20.0: resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== +commander@^10.0.1: + version "10.0.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-10.0.1.tgz#881ee46b4f77d1c1dccc5823433aa39b022cbe06" + integrity sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug== + commander@^4.0.1: version "4.1.1" resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" @@ -3225,7 +3264,7 @@ create-jest-runner@^0.5.3: jest-worker "^24.0.0" throat "^4.1.0" -cross-spawn@6.0.5, cross-spawn@^6.0.0, cross-spawn@^6.0.5: +cross-spawn@^6.0.0, cross-spawn@^6.0.5: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== @@ -3236,7 +3275,7 @@ cross-spawn@6.0.5, cross-spawn@^6.0.0, cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^7.0.2: +cross-spawn@^7.0.2, cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== @@ -3583,11 +3622,6 @@ delayed-stream@~1.0.0: resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= -detect-file@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" - integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc= - detect-kerning@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/detect-kerning/-/detect-kerning-2.1.2.tgz#4ecd548e4a5a3fc880fe2a50609312d000fa9fc2" @@ -3759,11 +3793,6 @@ emoji-regex@^8.0.0: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== -emojis-list@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" - integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= - emojis-list@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" @@ -3776,15 +3805,6 @@ end-of-stream@^1.0.0, end-of-stream@^1.1.0: dependencies: once "^1.4.0" -enhanced-resolve@4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz#41c7e0bfdfe74ac1ffe1e57ad6a5c6c9f3742a7f" - integrity sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng== - dependencies: - graceful-fs "^4.1.2" - memory-fs "^0.4.0" - tapable "^1.0.0" - enhanced-resolve@^5.15.0: version "5.15.0" resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz#1af946c7d93603eb88e9896cee4904dc012e9c35" @@ -3805,6 +3825,11 @@ entities@^1.1.1, entities@~1.1.1: resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== +envinfo@^7.7.3: + version "7.10.0" + resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.10.0.tgz#55146e3909cc5fe63c22da63fb15b05aeac35b13" + integrity sha512-ZtUjZO6l5mwTHvc1L9+1q5p/R3wTopcfqMW8r5t8SJSKqeVI/LtajORwRFEKpEFuekjD0VBjwu1HMxL4UalIRw== + enzyme-adapter-react-16@^1.7.1: version "1.15.2" resolved "https://registry.yarnpkg.com/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.15.2.tgz#b16db2f0ea424d58a808f9df86ab6212895a4501" @@ -3876,7 +3901,7 @@ enzyme@^3.8.0: rst-selector-parser "^2.2.3" string.prototype.trim "^1.2.1" -errno@^0.1.1, errno@^0.1.3: +errno@^0.1.1: version "0.1.7" resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" integrity sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg== @@ -4192,13 +4217,6 @@ expand-brackets@^2.1.4: snapdragon "^0.8.1" to-regex "^3.0.1" -expand-tilde@^2.0.0, expand-tilde@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" - integrity sha1-l+gBqgUt8CRU3kawK/YhZCzchQI= - dependencies: - homedir-polyfill "^1.0.1" - expect@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/expect/-/expect-24.9.0.tgz#b75165b4817074fa4a157794f46fe9f1ba15b6ca" @@ -4306,6 +4324,11 @@ fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= +fastest-levenshtein@^1.0.12: + version "1.0.16" + resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz#210e61b6ff181de91ea9b3d1b84fdedd47e034e5" + integrity sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg== + fastq@^1.6.0: version "1.9.0" resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.9.0.tgz#e16a72f338eaca48e91b5c23593bcc2ef66b7947" @@ -4395,7 +4418,7 @@ find-up@^3.0.0: dependencies: locate-path "^3.0.0" -find-up@^4.1.0: +find-up@^4.0.0, find-up@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== @@ -4403,16 +4426,6 @@ find-up@^4.1.0: locate-path "^5.0.0" path-exists "^4.0.0" -findup-sync@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-3.0.0.tgz#17b108f9ee512dfb7a5c7f3c8b27ea9e1a9c08d1" - integrity sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg== - dependencies: - detect-file "^1.0.0" - is-glob "^4.0.0" - micromatch "^3.0.4" - resolve-dir "^1.0.1" - flat-cache@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" @@ -5042,42 +5055,6 @@ glob@^7.0.0, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, gl once "^1.3.0" path-is-absolute "^1.0.0" -global-modules@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" - integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== - dependencies: - global-prefix "^3.0.0" - -global-modules@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" - integrity sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg== - dependencies: - global-prefix "^1.0.1" - is-windows "^1.0.1" - resolve-dir "^1.0.0" - -global-prefix@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" - integrity sha1-2/dDxsFJklk8ZVVoy2btMsASLr4= - dependencies: - expand-tilde "^2.0.2" - homedir-polyfill "^1.0.1" - ini "^1.3.4" - is-windows "^1.0.1" - which "^1.2.14" - -global-prefix@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97" - integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== - dependencies: - ini "^1.3.5" - kind-of "^6.0.2" - which "^1.3.1" - globals@^11.1.0: version "11.12.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" @@ -5354,13 +5331,6 @@ hoist-non-react-statics@^3.3.0: dependencies: react-is "^16.7.0" -homedir-polyfill@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" - integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA== - dependencies: - parse-passwd "^1.0.0" - hosted-git-info@^2.1.4: version "2.8.9" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" @@ -5464,7 +5434,7 @@ import-fresh@^3.0.0, import-fresh@^3.2.1: parent-module "^1.0.0" resolve-from "^4.0.0" -import-local@2.0.0, import-local@^2.0.0: +import-local@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ== @@ -5472,6 +5442,14 @@ import-local@2.0.0, import-local@^2.0.0: pkg-dir "^3.0.0" resolve-cwd "^2.0.0" +import-local@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" + integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== + dependencies: + pkg-dir "^4.2.0" + resolve-cwd "^3.0.0" + imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" @@ -5503,15 +5481,10 @@ inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3, resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== -ini@^1.3.4, ini@^1.3.5: - version "1.3.5" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" - integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== - -interpret@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296" - integrity sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw== +interpret@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-3.1.1.tgz#5be0ceed67ca79c6c4bc5cf0d7ee843dcea110c4" + integrity sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ== interval-tree-1d@^1.0.1: version "1.0.3" @@ -5527,11 +5500,6 @@ invariant@^2.2.0, invariant@^2.2.2, invariant@^2.2.4: dependencies: loose-envify "^1.0.0" -invert-kv@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" - integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA== - invert-permutation@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/invert-permutation/-/invert-permutation-1.0.0.tgz#a0a78042eadb36bc17551e787efd1439add54933" @@ -5623,6 +5591,13 @@ is-ci@^2.0.0: dependencies: ci-info "^2.0.0" +is-core-module@^2.11.0: + version "2.12.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.12.1.tgz#0c0b6885b6f80011c71541ce15c8d66cf5a4f9fd" + integrity sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg== + dependencies: + has "^1.0.3" + is-data-descriptor@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" @@ -6535,13 +6510,6 @@ lazy-cache@^1.0.3: resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" integrity sha1-odePw6UEdMuAhF07O24dpJpEbo4= -lcid@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" - integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA== - dependencies: - invert-kv "^2.0.0" - leaflet-fullscreen@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/leaflet-fullscreen/-/leaflet-fullscreen-1.0.2.tgz#09c61c4bac45f63b2ee126afd87e5cd97650fc1b" @@ -6567,14 +6535,10 @@ lerp@^1.0.3: resolved "https://registry.yarnpkg.com/lerp/-/lerp-1.0.3.tgz#a18c8968f917896de15ccfcc28d55a6b731e776e" integrity sha1-oYyJaPkXiW3hXM/MKNVaa3Med24= -less-loader@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/less-loader/-/less-loader-5.0.0.tgz#498dde3a6c6c4f887458ee9ed3f086a12ad1b466" - integrity sha512-bquCU89mO/yWLaUq0Clk7qCsKhsF/TZpJUzETRvJa9KSVEL9SO3ovCvdEHISBhrC81OwC8QSVX7E0bzElZj9cg== - dependencies: - clone "^2.1.1" - loader-utils "^1.1.0" - pify "^4.0.1" +less-loader@^11.1.3: + version "11.1.3" + resolved "https://registry.yarnpkg.com/less-loader/-/less-loader-11.1.3.tgz#1bb62d6ca9bf00a177c02793b54baac40f9be694" + integrity sha512-A5b7O8dH9xpxvkosNrP0dFp2i/dISOJa9WwGF3WJflfqIERE2ybxh1BFDj5CovC2+jCE4M354mk90hN6ziXlVw== less-plugin-autoprefix@^2.0.0: version "2.0.0" @@ -6644,16 +6608,7 @@ loader-runner@^4.2.0: resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1" integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== -loader-utils@1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7" - integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA== - dependencies: - big.js "^5.2.2" - emojis-list "^2.0.0" - json5 "^1.0.1" - -loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4.0: +loader-utils@^1.2.3, loader-utils@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== @@ -6769,13 +6724,6 @@ makeerror@1.0.x: dependencies: tmpl "1.0.x" -map-age-cleaner@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" - integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== - dependencies: - p-defer "^1.0.0" - map-cache@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" @@ -6872,23 +6820,6 @@ matrix-camera-controller@^2.1.1, matrix-camera-controller@^2.1.3: gl-vec3 "^1.0.3" mat4-interpolate "^1.0.3" -mem@^4.0.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178" - integrity sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w== - dependencies: - map-age-cleaner "^0.1.1" - mimic-fn "^2.0.0" - p-is-promise "^2.0.0" - -memory-fs@^0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" - integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI= - dependencies: - errno "^0.1.3" - readable-stream "^2.0.1" - memorystream@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2" @@ -6904,7 +6835,7 @@ merge2@^1.3.0: resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== -micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4: +micromatch@^3.1.10, micromatch@^3.1.4: version "3.1.10" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== @@ -6965,11 +6896,6 @@ mimic-fn@^1.0.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== -mimic-fn@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - minimatch@^3.0.2, minimatch@^3.0.4: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" @@ -7542,20 +7468,6 @@ os-homedir@^2.0.0: resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-2.0.0.tgz#a0c76bb001a8392a503cbd46e7e650b3423a923c" integrity sha512-saRNz0DSC5C/I++gFIaJTXoFJMRwiP5zHar5vV3xQ2TkgEw6hDCcU5F272JjUylpiVgBrZNQHnfjkLabTfb92Q== -os-locale@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" - integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q== - dependencies: - execa "^1.0.0" - lcid "^2.0.0" - mem "^4.0.0" - -p-defer@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" - integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= - p-each-series@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-1.0.0.tgz#930f3d12dd1f50e7434457a22cd6f04ac6ad7f71" @@ -7568,11 +7480,6 @@ p-finally@^1.0.0: resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= -p-is-promise@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" - integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg== - p-limit@^1.1.0: version "1.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" @@ -7650,11 +7557,6 @@ parse-json@^4.0.0: error-ex "^1.3.1" json-parse-better-errors "^1.0.1" -parse-passwd@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" - integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= - parse-rect@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/parse-rect/-/parse-rect-1.2.0.tgz#e0a5b0dbaaaee637a0a1eb9779969e19399d8dec" @@ -7719,7 +7621,7 @@ path-key@^3.1.0: resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== -path-parse@^1.0.6: +path-parse@^1.0.6, path-parse@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== @@ -7803,6 +7705,13 @@ pkg-dir@^3.0.0: dependencies: find-up "^3.0.0" +pkg-dir@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + pkg-up@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-2.0.0.tgz#c819ac728059a461cab1c3889a2be3c49a004d7f" @@ -8310,7 +8219,7 @@ read-pkg@^3.0.0: isarray "0.0.1" string_decoder "~0.10.x" -readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.2.2, readable-stream@^2.3.5, readable-stream@~2.3.6: +readable-stream@^2.0.0, readable-stream@^2.0.2, readable-stream@^2.2.2, readable-stream@^2.3.5, readable-stream@~2.3.6: version "2.3.7" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== @@ -8378,6 +8287,13 @@ recast@^0.18.1: private "^0.1.8" source-map "~0.6.1" +rechoir@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.8.0.tgz#49f866e0d32146142da3ad8f0eff352b3215ff22" + integrity sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ== + dependencies: + resolve "^1.20.0" + redeyed@~0.4.0: version "0.4.4" resolved "https://registry.yarnpkg.com/redeyed/-/redeyed-0.4.4.tgz#37e990a6f2b21b2a11c2e6a48fd4135698cba97f" @@ -8630,13 +8546,12 @@ resolve-cwd@^2.0.0: dependencies: resolve-from "^3.0.0" -resolve-dir@^1.0.0, resolve-dir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" - integrity sha1-eaQGRMNivoLybv/nOcm7U4IEb0M= +resolve-cwd@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" + integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== dependencies: - expand-tilde "^2.0.0" - global-modules "^1.0.0" + resolve-from "^5.0.0" resolve-from@^3.0.0: version "3.0.0" @@ -8682,6 +8597,15 @@ resolve@^1.0.0, resolve@^1.1.5, resolve@^1.10.0, resolve@^1.13.1, resolve@^1.3.2 dependencies: path-parse "^1.0.6" +resolve@^1.20.0: + version "1.22.2" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.2.tgz#0ed0943d4e301867955766c9f3e1ae6d01c6845f" + integrity sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g== + dependencies: + is-core-module "^2.11.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + restore-cursor@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" @@ -8957,6 +8881,13 @@ set-value@^2.0.0, set-value@^2.0.1: is-plain-object "^2.0.3" split-string "^3.0.1" +shallow-clone@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" + integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== + dependencies: + kind-of "^6.0.2" + shallow-copy@0.0.1, shallow-copy@~0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/shallow-copy/-/shallow-copy-0.0.1.tgz#415f42702d73d810330292cc5ee86eae1a11a170" @@ -9476,13 +9407,6 @@ superscript-text@^1.0.0: resolved "https://registry.yarnpkg.com/superscript-text/-/superscript-text-1.0.0.tgz#e7cb2752567360df50beb0610ce8df3d71d8dfd8" integrity sha1-58snUlZzYN9QvrBhDOjfPXHY39g= -supports-color@6.1.0, supports-color@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" - integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== - dependencies: - has-flag "^3.0.0" - supports-color@^5.3.0, supports-color@^5.4.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" @@ -9490,6 +9414,13 @@ supports-color@^5.3.0, supports-color@^5.4.0: dependencies: has-flag "^3.0.0" +supports-color@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" + integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== + dependencies: + has-flag "^3.0.0" + supports-color@^7.1.0: version "7.2.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" @@ -9504,6 +9435,11 @@ supports-color@^8.0.0: dependencies: has-flag "^4.0.0" +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + surface-nets@^1.0.0, surface-nets@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/surface-nets/-/surface-nets-1.0.2.tgz#e433c8cbba94a7274c6f4c99552b461bf1fc7a4b" @@ -9554,11 +9490,6 @@ table@^5.2.3: slice-ansi "^2.1.0" string-width "^3.0.0" -tapable@^1.0.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" - integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== - tapable@^2.1.1, tapable@^2.2.0: version "2.2.1" resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" @@ -10135,7 +10066,7 @@ uuid@^3.3.2: resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== -v8-compile-cache@2.0.3, v8-compile-cache@^2.0.3: +v8-compile-cache@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.0.3.tgz#00f7494d2ae2b688cfe2899df6ed2c54bef91dbe" integrity sha512-CNmdbwQMBjwr9Gsmohvm0pbL954tJrNzf6gWL3K+QMQf00PF7ERGrEiLgjuU3mKreLC2MeGhUsNV9ybTbLgd3w== @@ -10294,32 +10225,42 @@ webidl-conversions@^4.0.2: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== -webpack-cli@^3.3.11: - version "3.3.11" - resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.3.11.tgz#3bf21889bf597b5d82c38f215135a411edfdc631" - integrity sha512-dXlfuml7xvAFwYUPsrtQAA9e4DOe58gnzSxhgrO/ZM/gyXTBowrsYeubyN4mqGhYdpXMFNyQ6emjJS9M7OBd4g== - dependencies: - chalk "2.4.2" - cross-spawn "6.0.5" - enhanced-resolve "4.1.0" - findup-sync "3.0.0" - global-modules "2.0.0" - import-local "2.0.0" - interpret "1.2.0" - loader-utils "1.2.3" - supports-color "6.1.0" - v8-compile-cache "2.0.3" - yargs "13.2.4" +webpack-cli@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-5.1.4.tgz#c8e046ba7eaae4911d7e71e2b25b776fcc35759b" + integrity sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg== + dependencies: + "@discoveryjs/json-ext" "^0.5.0" + "@webpack-cli/configtest" "^2.1.1" + "@webpack-cli/info" "^2.0.2" + "@webpack-cli/serve" "^2.0.5" + colorette "^2.0.14" + commander "^10.0.1" + cross-spawn "^7.0.3" + envinfo "^7.7.3" + fastest-levenshtein "^1.0.12" + import-local "^3.0.2" + interpret "^3.1.1" + rechoir "^0.8.0" + webpack-merge "^5.7.3" + +webpack-merge@^5.7.3: + version "5.9.0" + resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.9.0.tgz#dc160a1c4cf512ceca515cc231669e9ddb133826" + integrity sha512-6NbRQw4+Sy50vYNTw7EyOn41OZItPiXB8GNv3INSoe3PSFaHJEz3SHTrYVaRm2LilNGnFUzh0FAwqPEmU/CwDg== + dependencies: + clone-deep "^4.0.1" + wildcard "^2.0.0" 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.88.1: - version "5.88.1" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.88.1.tgz#21eba01e81bd5edff1968aea726e2fbfd557d3f8" - integrity sha512-FROX3TxQnC/ox4N+3xQoWZzvGXSuscxR32rbzjpXgEzWudJFEJBpdlkkob2ylrv5yzzufD1zph1OoFsLtm6stQ== +webpack@^5.88.2: + version "5.88.2" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.88.2.tgz#f62b4b842f1c6ff580f3fcb2ed4f0b579f4c210e" + integrity sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ== dependencies: "@types/eslint-scope" "^3.7.3" "@types/estree" "^1.0.0" @@ -10386,7 +10327,7 @@ which-module@^2.0.0: resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= -which@^1.2.14, which@^1.2.9, which@^1.3.0, which@^1.3.1: +which@^1.2.9, which@^1.3.0: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== @@ -10400,6 +10341,11 @@ which@^2.0.1: dependencies: isexe "^2.0.0" +wildcard@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.1.tgz#5ab10d02487198954836b6349f74fff961e10f67" + integrity sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ== + window-size@0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" @@ -10493,7 +10439,7 @@ yallist@^4.0.0: resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== -yargs-parser@^13.1.0, yargs-parser@^13.1.2: +yargs-parser@^13.1.2: version "13.1.2" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== @@ -10509,23 +10455,6 @@ yargs-parser@^18.1.2: camelcase "^5.0.0" decamelize "^1.2.0" -yargs@13.2.4: - version "13.2.4" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.2.4.tgz#0b562b794016eb9651b98bd37acf364aa5d6dc83" - integrity sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg== - dependencies: - cliui "^5.0.0" - find-up "^3.0.0" - get-caller-file "^2.0.1" - os-locale "^3.1.0" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^3.0.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^13.1.0" - yargs@^13.3.0: version "13.3.2" resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" From 7248be14bb5c18927cacc88219748e92384a54e3 Mon Sep 17 00:00:00 2001 From: Justin Clift Date: Sun, 23 Jul 2023 07:59:16 +1000 Subject: [PATCH 173/274] Bump html-webpack-plugin to ^4.5.2 (#6232) In theory (!), this should fix a dependabot warning. --- package.json | 2 +- yarn.lock | 350 ++++++++++++++++++++++++++++++++++----------------- 2 files changed, 234 insertions(+), 118 deletions(-) diff --git a/package.json b/package.json index 11d773b8a9..192e75e2df 100644 --- a/package.json +++ b/package.json @@ -127,7 +127,7 @@ "eslint-plugin-react": "^7.17.0", "eslint-plugin-react-hooks": "^1.7.0", "file-loader": "^2.0.0", - "html-webpack-plugin": "^3.2.0", + "html-webpack-plugin": "^4.5.2", "identity-obj-proxy": "^3.0.0", "jest": "^24.1.0", "less": "^3.9.0", diff --git a/yarn.lock b/yarn.lock index 8f381376ec..a1ddddad02 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1797,6 +1797,11 @@ "@types/react" "*" hoist-non-react-statics "^3.3.0" +"@types/html-minifier-terser@^5.0.0": + version "5.1.2" + resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-5.1.2.tgz#693b316ad323ea97eed6b38ed1a3cc02b1672b57" + integrity sha512-h4lTMgMJctJybDp8CQrxTUiiYmedihHWkjnF/8Pxseu2S6Nlfcy8kwboQ8yejh456rP2yWoEVm1sS/FVsfM48w== + "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": version "2.0.3" resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz#4ba8ddb720221f432e443bd5f9117fd22cfd4762" @@ -1876,11 +1881,49 @@ resolved "https://registry.yarnpkg.com/@types/sizzle/-/sizzle-2.3.2.tgz#a811b8c18e2babab7d542b3365887ae2e4d9de47" integrity sha512-7EJYyKTL7tFR8+gDbB6Wwz/arpGa0Mywk1TJbNzKzHtzbwVmY4HR9WqS5VV7dsBUKQmPNr192jHr/VpBluj/hg== +"@types/source-list-map@*": + version "0.1.2" + resolved "https://registry.yarnpkg.com/@types/source-list-map/-/source-list-map-0.1.2.tgz#0078836063ffaf17412349bba364087e0ac02ec9" + integrity sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA== + "@types/sql-formatter@^2.3.0": version "2.3.0" resolved "https://registry.yarnpkg.com/@types/sql-formatter/-/sql-formatter-2.3.0.tgz#d2584c54f865fd57a7fe7e88ee8ed3623b23da33" integrity sha512-Xh9kEOaKWhm3vYD5lUjYFFiSfpN4y3/iQCJUAVwFaQ1rVvHs4WXTa5C8E7gyF3kxwsMS8KgttW7WBAPtFlsvAg== +"@types/tapable@^1", "@types/tapable@^1.0.5": + version "1.0.8" + resolved "https://registry.yarnpkg.com/@types/tapable/-/tapable-1.0.8.tgz#b94a4391c85666c7b73299fd3ad79d4faa435310" + integrity sha512-ipixuVrh2OdNmauvtT51o3d8z12p6LtFW9in7U79der/kwejjdNchQC5UMn5u/KxNoM7VHHOs/l8KS8uHxhODQ== + +"@types/uglify-js@*": + version "3.17.1" + resolved "https://registry.yarnpkg.com/@types/uglify-js/-/uglify-js-3.17.1.tgz#e0ffcef756476410e5bce2cb01384ed878a195b5" + integrity sha512-GkewRA4i5oXacU/n4MA9+bLgt5/L3F1mKrYvFGm7r2ouLXhRKjuWwo9XHNnbx6WF3vlGW21S3fCvgqxvxXXc5g== + dependencies: + source-map "^0.6.1" + +"@types/webpack-sources@*": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@types/webpack-sources/-/webpack-sources-3.2.0.tgz#16d759ba096c289034b26553d2df1bf45248d38b" + integrity sha512-Ft7YH3lEVRQ6ls8k4Ff1oB4jN6oy/XmU6tQISKdhfh+1mR+viZFphS6WL0IrtDOzvefmJg5a0s7ZQoRXwqTEFg== + dependencies: + "@types/node" "*" + "@types/source-list-map" "*" + source-map "^0.7.3" + +"@types/webpack@^4.41.8": + version "4.41.33" + resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.33.tgz#16164845a5be6a306bcbe554a8e67f9cac215ffc" + integrity sha512-PPajH64Ft2vWevkerISMtnZ8rTs4YmRbs+23c402J0INmxDKCrhZNvwZYtzx96gY2wAtXdrK1BS2fiC8MlLr3g== + dependencies: + "@types/node" "*" + "@types/tapable" "^1" + "@types/uglify-js" "*" + "@types/webpack-sources" "*" + anymatch "^3.0.0" + source-map "^0.6.0" + "@types/yargs-parser@*": version "15.0.0" resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-15.0.0.tgz#cb3f9f741869e20cce330ffbeb9271590483882d" @@ -2471,6 +2514,14 @@ anymatch@^2.0.0: micromatch "^3.1.4" normalize-path "^2.1.1" +anymatch@^3.0.0: + version "3.1.3" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + anymatch@~3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" @@ -3035,11 +3086,6 @@ big-rat@^1.0.3: bn.js "^4.11.6" double-bits "^1.1.1" -big.js@^3.1.3: - version "3.2.0" - resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e" - integrity sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q== - big.js@^5.2.2: version "5.2.2" resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" @@ -3159,7 +3205,7 @@ bonjour@^3.5.0: multicast-dns "^6.0.1" multicast-dns-service-types "^1.1.0" -boolbase@~1.0.0: +boolbase@^1.0.0, boolbase@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= @@ -3559,13 +3605,13 @@ callsites@^3.0.0: resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.0.0.tgz#fb7eb569b72ad7a45812f93fd9430a3e410b3dd3" integrity sha512-tWnkwu9YEq2uzlBDI4RcLn8jrFvF9AOi8PxDNU3hZZjJcjkcRAq3vCI+vZcg1SuxISDYe86k9VZFwAxDiJGoAw== -camel-case@3.0.x: - version "3.0.0" - resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73" - integrity sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M= +camel-case@^4.1.1: + version "4.1.2" + resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" + integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== dependencies: - no-case "^2.2.0" - upper-case "^1.1.1" + pascal-case "^3.1.2" + tslib "^2.0.3" camelcase@^1.0.2: version "1.2.1" @@ -3852,10 +3898,10 @@ classnames@2.x, classnames@^2.2.0, classnames@^2.2.1, classnames@^2.2.3, classna resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.6.tgz#43935bffdd291f326dad0a205309b38d00f650ce" integrity sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q== -clean-css@4.2.x: - version "4.2.1" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.1.tgz#2d411ef76b8569b6d0c84068dabe85b0aa5e5c17" - integrity sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g== +clean-css@^4.2.3: + version "4.2.4" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.4.tgz#733bf46eba4e607c6891ea57c24a989356831178" + integrity sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A== dependencies: source-map "~0.6.0" @@ -4212,17 +4258,12 @@ commander@2, commander@^2.13.0, commander@^2.15.1, commander@^2.19.0: resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a" integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg== -commander@2.17.x, commander@~2.17.1: - version "2.17.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" - integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg== - commander@^2.20.0: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== -commander@^4.0.1: +commander@^4.0.1, commander@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== @@ -4232,6 +4273,11 @@ commander@^5.1.0: resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== +commander@~2.17.1: + version "2.17.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" + integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg== + common-tags@^1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.0.tgz#8e3153e542d4a39e9b10554434afaaf98956a937" @@ -4655,7 +4701,18 @@ css-loader@^0.28.7: postcss-value-parser "^3.3.0" source-list-map "^2.0.0" -css-select@^1.1.0, css-select@~1.2.0: +css-select@^4.1.3: + version "4.3.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.3.0.tgz#db7129b2846662fd8628cfc496abb2b59e41529b" + integrity sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ== + dependencies: + boolbase "^1.0.0" + css-what "^6.0.1" + domhandler "^4.3.1" + domutils "^2.8.0" + nth-check "^2.0.1" + +css-select@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" integrity sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg= @@ -4684,6 +4741,11 @@ css-what@2.1: resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2" integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg== +css-what@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" + integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== + csscolorparser@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/csscolorparser/-/csscolorparser-1.0.3.tgz#b34f391eea4da8f3e98231e2ccd8df9c041f171b" @@ -5272,7 +5334,7 @@ dom-align@^1.7.0: resolved "https://registry.yarnpkg.com/dom-align/-/dom-align-1.12.0.tgz#56fb7156df0b91099830364d2d48f88963f5a29c" integrity sha512-YkoezQuhp3SLFGdOlr5xkqZ640iXrnHAwVYcDg8ZKRUtO7mSzSC2BA5V0VuyAwPSJA4CLIc6EDDJh4bEsD2+zA== -dom-converter@^0.2: +dom-converter@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== @@ -5295,6 +5357,15 @@ dom-serializer@0, dom-serializer@~0.1.0: domelementtype "^1.3.0" entities "^1.1.1" +dom-serializer@^1.0.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.4.1.tgz#de5d41b1aea290215dc45a6dae8adcf1d32e2d30" + integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.2.0" + entities "^2.0.0" + domain-browser@^1.1.1, domain-browser@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" @@ -5305,6 +5376,11 @@ domelementtype@1, domelementtype@^1.3.0, domelementtype@^1.3.1: resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== +domelementtype@^2.0.1, domelementtype@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" + integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== + domexception@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90" @@ -5319,6 +5395,13 @@ domhandler@^2.3.0: dependencies: domelementtype "1" +domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c" + integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ== + dependencies: + domelementtype "^2.2.0" + dompurify@^2.0.7: version "2.0.7" resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-2.0.7.tgz#f8266ad38fe1602fb5b3222f31eedbf5c16c4fd5" @@ -5332,6 +5415,23 @@ domutils@1.5.1, domutils@^1.5.1: dom-serializer "0" domelementtype "1" +domutils@^2.5.2, domutils@^2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" + integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== + dependencies: + dom-serializer "^1.0.1" + domelementtype "^2.2.0" + domhandler "^4.2.0" + +dot-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" + integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + dotenv@^8.1.0: version "8.2.0" resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a" @@ -5536,6 +5636,11 @@ entities@^1.1.1, entities@~1.1.1: resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== +entities@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" + integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== + enzyme-adapter-react-16@^1.7.1: version "1.10.0" resolved "https://registry.yarnpkg.com/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.10.0.tgz#12e5b6f4be84f9a2ef374acc2555f829f351fc6e" @@ -7934,7 +8039,7 @@ hasha@^5.0.0: is-stream "^2.0.0" type-fest "^0.8.0" -he@1.2.x: +he@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== @@ -8035,30 +8140,32 @@ html-escaper@^2.0.0: resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== -html-minifier@^3.2.3: - version "3.5.21" - resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.21.tgz#d0040e054730e354db008463593194015212d20c" - integrity sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA== - dependencies: - camel-case "3.0.x" - clean-css "4.2.x" - commander "2.17.x" - he "1.2.x" - param-case "2.1.x" - relateurl "0.2.x" - uglify-js "3.4.x" - -html-webpack-plugin@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz#b01abbd723acaaa7b37b6af4492ebda03d9dd37b" - integrity sha1-sBq71yOsqqeze2r0SS69oD2d03s= - dependencies: - html-minifier "^3.2.3" - loader-utils "^0.2.16" - lodash "^4.17.3" - pretty-error "^2.0.2" - tapable "^1.0.0" - toposort "^1.0.0" +html-minifier-terser@^5.0.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz#922e96f1f3bb60832c2634b79884096389b1f054" + integrity sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg== + dependencies: + camel-case "^4.1.1" + clean-css "^4.2.3" + commander "^4.1.1" + he "^1.2.0" + param-case "^3.0.3" + relateurl "^0.2.7" + terser "^4.6.3" + +html-webpack-plugin@^4.5.2: + version "4.5.2" + resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-4.5.2.tgz#76fc83fa1a0f12dd5f7da0404a54e2699666bc12" + integrity sha512-q5oYdzjKUIPQVjOosjgvCHQOv9Ett9CYYHlgvJeXG0qQvdSojnBq4vAdQBwn1+yGveAwHCoe/rMR86ozX3+c2A== + 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" htmlescape@^1.1.0: @@ -8066,7 +8173,7 @@ htmlescape@^1.1.0: resolved "https://registry.yarnpkg.com/htmlescape/-/htmlescape-1.1.1.tgz#3a03edc2214bca3b66424a3e7959349509cb0351" integrity sha1-OgPtwiFLyjtmQko+eVk0lQnLA1E= -htmlparser2@^3.3.0, htmlparser2@^3.9.1: +htmlparser2@^3.9.1: version "3.10.1" resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f" integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ== @@ -8078,6 +8185,16 @@ htmlparser2@^3.3.0, htmlparser2@^3.9.1: inherits "^2.0.1" readable-stream "^3.1.1" +htmlparser2@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7" + integrity sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.0.0" + domutils "^2.5.2" + entities "^2.0.0" + http-deceiver@^1.2.7: version "1.2.7" resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" @@ -9506,11 +9623,6 @@ json3@^3.3.2: resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81" integrity sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA== -json5@^0.5.0: - version "0.5.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" - integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= - json5@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" @@ -9823,16 +9935,6 @@ loader-runner@^2.4.0: resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== -loader-utils@^0.2.16: - version "0.2.17" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348" - integrity sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g= - dependencies: - big.js "^3.1.3" - emojis-list "^2.0.0" - json5 "^0.5.0" - object-assign "^4.0.1" - loader-utils@^1.0.2, loader-utils@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7" @@ -9963,7 +10065,7 @@ lodash.uniq@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= -"lodash@>=3.5 <5", lodash@^4.15.0, lodash@^4.16.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.21, lodash@^4.17.3, lodash@^4.17.4: +"lodash@>=3.5 <5", lodash@^4.15.0, lodash@^4.16.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.4: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -10019,10 +10121,12 @@ loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3 dependencies: js-tokens "^3.0.0 || ^4.0.0" -lower-case@^1.1.1: - version "1.1.4" - resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" - integrity sha1-miyr0bno4K6ZOkv31YdcOcQujqw= +lower-case@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" + integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== + dependencies: + tslib "^2.0.3" lru-cache@^5.1.1: version "5.1.1" @@ -10801,12 +10905,13 @@ nice-try@^1.0.4: resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== -no-case@^2.2.0: - version "2.3.2" - resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac" - integrity sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ== +no-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" + integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== dependencies: - lower-case "^1.1.1" + lower-case "^2.0.2" + tslib "^2.0.3" node-forge@^0.10.0: version "0.10.0" @@ -11029,6 +11134,13 @@ npmlog@^4.0.2: gauge "~2.7.3" set-blocking "~2.0.0" +nth-check@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" + integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== + dependencies: + boolbase "^1.0.0" + nth-check@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" @@ -11546,12 +11658,13 @@ parallel-transform@^1.1.0: inherits "^2.0.3" readable-stream "^2.1.5" -param-case@2.1.x: - version "2.1.1" - resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247" - integrity sha1-35T9jPZTHs915r75oIWPvHK+Ikc= +param-case@^3.0.3: + version "3.0.4" + resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" + integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A== dependencies: - no-case "^2.2.0" + dot-case "^3.0.4" + tslib "^2.0.3" parent-module@^1.0.0: version "1.0.1" @@ -11643,6 +11756,14 @@ parseurl@~1.3.3: resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== +pascal-case@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb" + integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + pascalcase@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" @@ -12336,13 +12457,13 @@ pretty-bytes@^5.4.1: resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== -pretty-error@^2.0.2: - version "2.1.1" - resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.1.tgz#5f4f87c8f91e5ae3f3ba87ab4cf5e03b1a17f1a3" - integrity sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM= +pretty-error@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.2.tgz#be89f82d81b1c86ec8fdfbc385045882727f93b6" + integrity sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw== dependencies: - renderkid "^2.0.1" - utila "~0.4" + lodash "^4.17.20" + renderkid "^2.0.4" pretty-format@^24.0.0: version "24.0.0" @@ -13530,10 +13651,10 @@ regl@^1.3.11: resolved "https://registry.yarnpkg.com/regl/-/regl-1.4.2.tgz#6593c38868b569ea68410364048360367a21e813" integrity sha512-wc/kE6kGmGfQk3G9f1Pai4TZ0K1pWxkD1Jeaj6CxJwEiB1jwHgEpqD84G2t7F0DmNXfQh7IUnoG1opxoONJ7Xg== -relateurl@0.2.x: +relateurl@^0.2.7: version "0.2.7" resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" - integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= + integrity sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog== release-zalgo@^1.0.0: version "1.0.0" @@ -13547,16 +13668,16 @@ remove-trailing-separator@^1.0.1: resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= -renderkid@^2.0.1: - version "2.0.3" - resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.3.tgz#380179c2ff5ae1365c522bf2fcfcff01c5b74149" - integrity sha512-z8CLQp7EZBPCwCnncgf9C4XAi3WR0dv+uWu/PjIyhhAb5d6IJ/QZqlHFprHeKT+59//V6BNUsLbvN8+2LarxGA== +renderkid@^2.0.4: + version "2.0.7" + resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.7.tgz#464f276a6bdcee606f4a15993f9b29fc74ca8609" + integrity sha512-oCcFyxaMrKsKcTY59qnCAtmDVSLfPbrv6A3tVbPdFMMrv5jaK10V6m40cKsoPNhAqN6rmHW9sswW4o3ruSrwUQ== dependencies: - css-select "^1.1.0" - dom-converter "^0.2" - htmlparser2 "^3.3.0" - strip-ansi "^3.0.0" - utila "^0.4.0" + css-select "^4.1.3" + dom-converter "^0.2.0" + htmlparser2 "^6.1.0" + lodash "^4.17.21" + strip-ansi "^3.0.1" repeat-element@^1.1.2: version "1.1.3" @@ -15231,7 +15352,7 @@ terser-webpack-plugin@^1.4.3: webpack-sources "^1.4.0" worker-farm "^1.7.0" -terser@^4.1.2: +terser@^4.1.2, terser@^4.6.3: version "4.8.1" resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.1.tgz#a00e5634562de2239fd404c649051bf6fc21144f" integrity sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw== @@ -15469,11 +15590,6 @@ topojson-client@^2.1.0: dependencies: commander "2" -toposort@^1.0.0: - version "1.0.7" - resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.7.tgz#2e68442d9f64ec720b8cc89e6443ac6caa950029" - integrity sha1-LmhELZ9k7HILjMieZEOsbKqVACk= - tough-cookie@0.12.x: version "0.12.1" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-0.12.1.tgz#8220c7e21abd5b13d96804254bd5a81ebf2c7d62" @@ -15550,6 +15666,11 @@ tslib@^2.0.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.0.3.tgz#8e0741ac45fc0c226e58a17bfc3e64b9bc6ca61c" integrity sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ== +tslib@^2.0.3: + version "2.6.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.0.tgz#b295854684dbda164e181d259a22cd779dcd7bc3" + integrity sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA== + tsutils@^3.17.1: version "3.17.1" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.17.1.tgz#ed719917f11ca0dee586272b2ac49e015a2dd759" @@ -15666,14 +15787,6 @@ typescript@^4.1.2: resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.1.2.tgz#6369ef22516fe5e10304aae5a5c4862db55380e9" integrity sha512-thGloWsGH3SOxv1SoY7QojKi0tc+8FnOmiarEGMbd/lar7QOEd3hvlx3Fp5y6FlDUGl9L+pd4n2e+oToGMmhRQ== -uglify-js@3.4.x, uglify-js@^3.1.4: - version "3.4.9" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.4.9.tgz#af02f180c1207d76432e473ed24a28f4a782bae3" - integrity sha512-8CJsbKOtEbnJsTyv6LE6m6ZKniqMiFWmm9sRbopbkGs3gMPPfd3Fh8iIA4Ykv5MgaTbqHr4BaoGLJLZNhsrW1Q== - dependencies: - commander "~2.17.1" - source-map "~0.6.1" - uglify-js@^2.6.0: version "2.8.29" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd" @@ -15684,6 +15797,14 @@ uglify-js@^2.6.0: optionalDependencies: uglify-to-browserify "~1.0.0" +uglify-js@^3.1.4: + version "3.4.9" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.4.9.tgz#af02f180c1207d76432e473ed24a28f4a782bae3" + integrity sha512-8CJsbKOtEbnJsTyv6LE6m6ZKniqMiFWmm9sRbopbkGs3gMPPfd3Fh8iIA4Ykv5MgaTbqHr4BaoGLJLZNhsrW1Q== + dependencies: + commander "~2.17.1" + source-map "~0.6.1" + uglify-to-browserify@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" @@ -15827,11 +15948,6 @@ update-diff@^1.1.0: resolved "https://registry.yarnpkg.com/update-diff/-/update-diff-1.1.0.tgz#f510182d81ee819fb82c3a6b22b62bbdeda7808f" integrity sha1-9RAYLYHugZ+4LDprIrYrve2ngI8= -upper-case@^1.1.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" - integrity sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg= - uri-js@^4.2.2: version "4.2.2" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" @@ -15923,7 +16039,7 @@ util@~0.10.1: dependencies: inherits "2.0.3" -utila@^0.4.0, utila@~0.4: +utila@~0.4: version "0.4.0" resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" integrity sha1-ihagXURWV6Oupe7MWxKk+lN5dyw= From 02c8f71710fb0a16c339e7ba5c52ee7008fe592c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 22 Jul 2023 22:42:32 +0000 Subject: [PATCH 174/274] Bump loader-utils from 1.2.3 to 1.4.2 (#6233) Bumps [loader-utils](https://github.com/webpack/loader-utils) from 1.2.3 to 1.4.2. - [Release notes](https://github.com/webpack/loader-utils/releases) - [Changelog](https://github.com/webpack/loader-utils/blob/v1.4.2/CHANGELOG.md) - [Commits](https://github.com/webpack/loader-utils/compare/v1.2.3...v1.4.2) --- updated-dependencies: - dependency-name: loader-utils dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 22 ++++------------------ 1 file changed, 4 insertions(+), 18 deletions(-) diff --git a/yarn.lock b/yarn.lock index a1ddddad02..620f606cab 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5586,11 +5586,6 @@ emoji-regex@^9.0.0: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.1.tgz#c9b25604256bb3428964bead3ab63069d736f7ee" integrity sha512-117l1H6U4X3Krn+MrzYrL57d5H7siRHWraBs7s+LjRuFK7Fe7hJqnJ0skWlinqsycVLU5YAo6L8CsEYQ0V5prg== -emojis-list@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" - integrity sha512-knHEZMgs8BB+MInokmNTg/OyPlAddghe1YBgNwJBc5zsJi/uyIcXoSDsL/W9ymOsBoBGdPIHXYJ9+qKFwRwDng== - emojis-list@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" @@ -9935,16 +9930,7 @@ loader-runner@^2.4.0: resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== -loader-utils@^1.0.2, loader-utils@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7" - integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA== - dependencies: - big.js "^5.2.2" - emojis-list "^2.0.0" - json5 "^1.0.1" - -loader-utils@^1.1.0: +loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3: version "1.4.2" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.2.tgz#29a957f3a63973883eb684f10ffd3d151fec01a3" integrity sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg== @@ -9954,9 +9940,9 @@ loader-utils@^1.1.0: json5 "^1.0.1" loader-utils@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.0.tgz#e4cace5b816d425a166b5f097e10cd12b36064b0" - integrity sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ== + version "2.0.4" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.4.tgz#8b5cb38b5c34a9a018ee1fc0e6a066d1dfcc528c" + integrity sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw== dependencies: big.js "^5.2.2" emojis-list "^3.0.0" From 416126abd3caf5eac9bf33d2ef28cdec5a418633 Mon Sep 17 00:00:00 2001 From: Justin Clift Date: Sun, 23 Jul 2023 09:25:51 +1000 Subject: [PATCH 175/274] Bump webpack-cli to ^3.3.12 (#6234) --- package.json | 2 +- yarn.lock | 88 +++++++++++++++++++++++++++++++--------------------- 2 files changed, 53 insertions(+), 37 deletions(-) diff --git a/package.json b/package.json index 192e75e2df..15815d38f5 100644 --- a/package.json +++ b/package.json @@ -149,7 +149,7 @@ "webpack": "^4.44.2", "webpack-build-notifier": "^0.1.30", "webpack-bundle-analyzer": "^2.11.1", - "webpack-cli": "^3.1.2", + "webpack-cli": "^3.3.12", "webpack-dev-server": "^3.11.0", "webpack-manifest-plugin": "^2.0.4" }, diff --git a/yarn.lock b/yarn.lock index 620f606cab..ba394e2bc4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5608,13 +5608,13 @@ end-of-stream@^1.0.0, end-of-stream@^1.1.0: dependencies: once "^1.4.0" -enhanced-resolve@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz#41c7e0bfdfe74ac1ffe1e57ad6a5c6c9f3742a7f" - integrity sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng== +enhanced-resolve@^4.1.1: + version "4.5.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz#2f3cfd84dbe3b487f18f2db2ef1e064a571ca5ec" + integrity sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg== dependencies: graceful-fs "^4.1.2" - memory-fs "^0.4.0" + memory-fs "^0.5.0" tapable "^1.0.0" enhanced-resolve@^4.3.0: @@ -6754,13 +6754,13 @@ find-up@^4.0.0, find-up@^4.1.0: locate-path "^5.0.0" path-exists "^4.0.0" -findup-sync@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-2.0.0.tgz#9326b1488c22d1a6088650a86901b2d9a90a2cbc" - integrity sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw= +findup-sync@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-3.0.0.tgz#17b108f9ee512dfb7a5c7f3c8b27ea9e1a9c08d1" + integrity sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg== dependencies: detect-file "^1.0.0" - is-glob "^3.1.0" + is-glob "^4.0.0" micromatch "^3.0.4" resolve-dir "^1.0.1" @@ -7603,6 +7603,13 @@ global-modules@^1.0.0: is-windows "^1.0.1" resolve-dir "^1.0.0" +global-modules@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" + integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== + dependencies: + global-prefix "^3.0.0" + global-prefix@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" @@ -7614,6 +7621,15 @@ global-prefix@^1.0.1: is-windows "^1.0.1" which "^1.2.14" +global-prefix@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97" + integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== + dependencies: + ini "^1.3.5" + kind-of "^6.0.2" + which "^1.3.1" + globals@^11.0.1, globals@^11.1.0: version "11.11.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.11.0.tgz#dcf93757fa2de5486fbeed7118538adf789e9c2e" @@ -8500,10 +8516,10 @@ internal-ip@^4.3.0: default-gateway "^4.2.0" ipaddr.js "^1.9.0" -interpret@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296" - integrity sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw== +interpret@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" + integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== interval-tree-1d@^1.0.1: version "1.0.3" @@ -9930,7 +9946,7 @@ loader-runner@^2.4.0: resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== -loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3: +loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4.0: version "1.4.2" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.2.tgz#29a957f3a63973883eb684f10ffd3d151fec01a3" integrity sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg== @@ -10319,7 +10335,7 @@ mem@^4.0.0: mimic-fn "^1.0.0" p-is-promise "^2.0.0" -memory-fs@^0.4.0, memory-fs@^0.4.1: +memory-fs@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI= @@ -16084,16 +16100,16 @@ uuid@^3.3.3, uuid@^3.4.0: resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== -v8-compile-cache@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.0.2.tgz#a428b28bb26790734c4fc8bc9fa106fccebf6a6c" - integrity sha512-1wFuMUIM16MDJRCrpbpuEPTUGmM5QMUg0cr3KFwra2XgOgFcPGDQHDh3CszSCD2Zewc/dh/pamNEW8CbfDebUw== - v8-compile-cache@^2.0.3: version "2.1.0" resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e" integrity sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g== +v8-compile-cache@^2.1.1: + version "2.3.0" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" + integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== + validate-npm-package-license@^3.0.1: version "3.0.4" resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" @@ -16347,22 +16363,22 @@ webpack-bundle-analyzer@^2.11.1: opener "^1.4.3" ws "^4.0.0" -webpack-cli@^3.1.2: - version "3.2.3" - resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.2.3.tgz#13653549adfd8ccd920ad7be1ef868bacc22e346" - integrity sha512-Ik3SjV6uJtWIAN5jp5ZuBMWEAaP5E4V78XJ2nI+paFPh8v4HPSwo/myN0r29Xc/6ZKnd2IdrAlpSgNOu2CDQ6Q== +webpack-cli@^3.3.12: + version "3.3.12" + resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.3.12.tgz#94e9ada081453cd0aa609c99e500012fd3ad2d4a" + integrity sha512-NVWBaz9k839ZH/sinurM+HcDvJOTXwSjYp1ku+5XKeOC03z8v5QitnK/x+lAxGXFyhdayoIf/GOpv85z3/xPag== dependencies: - chalk "^2.4.1" + chalk "^2.4.2" cross-spawn "^6.0.5" - enhanced-resolve "^4.1.0" - findup-sync "^2.0.0" - global-modules "^1.0.0" + enhanced-resolve "^4.1.1" + findup-sync "^3.0.0" + global-modules "^2.0.0" import-local "^2.0.0" - interpret "^1.1.0" - loader-utils "^1.1.0" - supports-color "^5.5.0" - v8-compile-cache "^2.0.2" - yargs "^12.0.4" + interpret "^1.4.0" + loader-utils "^1.4.0" + supports-color "^6.1.0" + v8-compile-cache "^2.1.1" + yargs "^13.3.2" webpack-dev-middleware@^3.7.2: version "3.7.2" @@ -16533,7 +16549,7 @@ which-module@^2.0.0: resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= -which@^1.2.12, which@^1.2.14, which@^1.2.9, which@^1.3.0: +which@^1.2.12, which@^1.2.14, which@^1.2.9, which@^1.3.0, which@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== @@ -16806,7 +16822,7 @@ yargs-parser@^18.1.2: camelcase "^5.0.0" decamelize "^1.2.0" -yargs@^12.0.2, yargs@^12.0.4: +yargs@^12.0.2: version "12.0.5" resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw== From 4113bb532cd9dd0c8cd4ed758f23aece2aa3b35e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 23 Jul 2023 00:09:26 +0000 Subject: [PATCH 176/274] Bump url-parse from 1.4.7 to 1.5.10 (#6235) Bumps [url-parse](https://github.com/unshiftio/url-parse) from 1.4.7 to 1.5.10. - [Commits](https://github.com/unshiftio/url-parse/compare/1.4.7...1.5.10) --- updated-dependencies: - dependency-name: url-parse dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index ba394e2bc4..390b8605a6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -15972,9 +15972,9 @@ url-loader@^1.1.2: schema-utils "^1.0.0" url-parse@^1.4.3: - version "1.4.7" - resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.7.tgz#a8a83535e8c00a316e403a5db4ac1b9b853ae278" - integrity sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg== + version "1.5.10" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" + integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== dependencies: querystringify "^2.1.1" requires-port "^1.0.0" From 9829a0957a719b59a6c6ab968bb6bfd9cdb2791c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 23 Jul 2023 01:22:37 +0000 Subject: [PATCH 177/274] Bump loader-utils from 1.4.0 to 1.4.2 in /viz-lib (#6236) Bumps [loader-utils](https://github.com/webpack/loader-utils) from 1.4.0 to 1.4.2. - [Release notes](https://github.com/webpack/loader-utils/releases) - [Changelog](https://github.com/webpack/loader-utils/blob/v1.4.2/CHANGELOG.md) - [Commits](https://github.com/webpack/loader-utils/compare/v1.4.0...v1.4.2) --- updated-dependencies: - dependency-name: loader-utils dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- viz-lib/yarn.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/viz-lib/yarn.lock b/viz-lib/yarn.lock index 2a70d88494..1af8bf0c2a 100644 --- a/viz-lib/yarn.lock +++ b/viz-lib/yarn.lock @@ -6609,18 +6609,18 @@ loader-runner@^4.2.0: integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== loader-utils@^1.2.3, loader-utils@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" - integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== + version "1.4.2" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.2.tgz#29a957f3a63973883eb684f10ffd3d151fec01a3" + integrity sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg== dependencies: big.js "^5.2.2" emojis-list "^3.0.0" json5 "^1.0.1" loader-utils@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.0.tgz#e4cace5b816d425a166b5f097e10cd12b36064b0" - integrity sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ== + version "2.0.4" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.4.tgz#8b5cb38b5c34a9a018ee1fc0e6a066d1dfcc528c" + integrity sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw== dependencies: big.js "^5.2.2" emojis-list "^3.0.0" From 518fb33c7ebc83e6933169d96bc819b860b8ec54 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 23 Jul 2023 12:02:25 +1000 Subject: [PATCH 178/274] Bump handlebars from 4.1.0 to 4.7.7 (#6237) Bumps [handlebars](https://github.com/wycats/handlebars.js) from 4.1.0 to 4.7.7. - [Changelog](https://github.com/handlebars-lang/handlebars.js/blob/master/release-notes.md) - [Commits](https://github.com/wycats/handlebars.js/compare/v4.1.0...v4.7.7) --- updated-dependencies: - dependency-name: handlebars dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 35 +++++++++-------------------------- 1 file changed, 9 insertions(+), 26 deletions(-) diff --git a/yarn.lock b/yarn.lock index 390b8605a6..9978b4aef2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2762,7 +2762,7 @@ async-validator@^3.0.3: resolved "https://registry.yarnpkg.com/async-validator/-/async-validator-3.3.0.tgz#1d92193bbe60d6d6c8b246692c7005e9ed14a8ee" integrity sha512-cAHGD9EL8aCqWXjnb44q94MWiDFzUo1tMhvLb2WzcpWqGiKugsjWG9cvl+jPgkPca7asNbsBU3fa0cwkI/P+Xg== -async@^2.5.0, async@^2.6.1, async@^2.6.2: +async@^2.6.1, async@^2.6.2: version "2.6.4" resolved "https://registry.yarnpkg.com/async/-/async-2.6.4.tgz#706b7ff6084664cd7eae713f6f965433b5504221" integrity sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA== @@ -7904,13 +7904,14 @@ handle-thing@^2.0.0: integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== handlebars@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.1.0.tgz#0d6a6f34ff1f63cecec8423aa4169827bf787c3a" - integrity sha512-l2jRuU1NAWK6AW5qqcTATWQJvNPEwkM7NEKSiv/gqOsoSQbVoWyqVEY5GS+XPQ88zLNmqASRpzfdm8d79hJS+w== + version "4.7.7" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1" + integrity sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA== dependencies: - async "^2.5.0" - optimist "^0.6.1" + minimist "^1.2.5" + neo-async "^2.6.0" source-map "^0.6.1" + wordwrap "^1.0.0" optionalDependencies: uglify-js "^3.1.4" @@ -10538,11 +10539,6 @@ minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== -minimist@~0.0.1: - version "0.0.10" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" - integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= - minipass@^2.6.0, minipass@^2.9.0: version "2.9.0" resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" @@ -10885,7 +10881,7 @@ negotiator@0.6.2: resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== -neo-async@^2.5.0, neo-async@^2.6.1: +neo-async@^2.5.0, neo-async@^2.6.0, neo-async@^2.6.1: version "2.6.2" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== @@ -11435,14 +11431,6 @@ opn@^5.5.0: dependencies: is-wsl "^1.1.0" -optimist@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" - integrity sha1-2j6nRob6IaGaERwybpDrFaAZZoY= - dependencies: - minimist "~0.0.1" - wordwrap "~0.0.2" - optionator@^0.8.1: version "0.8.2" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" @@ -16622,12 +16610,7 @@ wordwrap@0.0.2: resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" integrity sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8= -wordwrap@~0.0.2: - version "0.0.3" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" - integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc= - -wordwrap@~1.0.0: +wordwrap@^1.0.0, wordwrap@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= From f3a768edb8a6a6c5d000f19221d45b2e845ab618 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 23 Jul 2023 12:50:37 +1000 Subject: [PATCH 179/274] Bump eventsource from 1.0.7 to 1.1.2 (#6238) Bumps [eventsource](https://github.com/EventSource/eventsource) from 1.0.7 to 1.1.2. - [Changelog](https://github.com/EventSource/eventsource/blob/master/HISTORY.md) - [Commits](https://github.com/EventSource/eventsource/compare/v1.0.7...v1.1.2) --- updated-dependencies: - dependency-name: eventsource dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/yarn.lock b/yarn.lock index 9978b4aef2..78b0b6c11d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6224,11 +6224,9 @@ events@^3.0.0: integrity sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg== eventsource@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-1.0.7.tgz#8fbc72c93fcd34088090bc0a4e64f4b5cee6d8d0" - integrity sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ== - dependencies: - original "^1.0.0" + version "1.1.2" + resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-1.1.2.tgz#bc75ae1c60209e7cb1541231980460343eaea7c2" + integrity sha512-xAH3zWhgO2/3KIniEKYPr8plNSzlGINOUqYj0m0u7AB81iRw8b/3E73W6AuU+6klLbaSFmZnaETQ2lXPfAydrA== evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: version "1.0.3" @@ -11463,13 +11461,6 @@ orbit-camera-controller@^4.0.0: filtered-vector "^1.2.1" gl-mat4 "^1.0.3" -original@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f" - integrity sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg== - dependencies: - url-parse "^1.4.3" - os-browserify@^0.3.0, os-browserify@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" From 00eab7512740e65f0d2ede3b6eb134aa483f0cad Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 23 Jul 2023 03:35:41 +0000 Subject: [PATCH 180/274] Bump mixin-deep from 1.3.1 to 1.3.2 (#6239) Bumps [mixin-deep](https://github.com/jonschlinkert/mixin-deep) from 1.3.1 to 1.3.2. - [Commits](https://github.com/jonschlinkert/mixin-deep/compare/1.3.1...1.3.2) --- updated-dependencies: - dependency-name: mixin-deep dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 78b0b6c11d..80420c9c00 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10569,9 +10569,9 @@ mississippi@^3.0.0: through2 "^2.0.0" mixin-deep@^1.2.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe" - integrity sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ== + version "1.3.2" + resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" + integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== dependencies: for-in "^1.0.2" is-extendable "^1.0.1" From 7871e80abfeba38aba39476065e363c64aac3296 Mon Sep 17 00:00:00 2001 From: Justin Clift Date: Sun, 23 Jul 2023 14:25:08 +1000 Subject: [PATCH 181/274] Bump webpack to 4.46.0, webpack-bundle-analyzer to 4.9.0 (#6240) This should help unblock some Dependabot updates --- package.json | 4 +- yarn.lock | 174 +++++++++++++++++++++++++-------------------------- 2 files changed, 89 insertions(+), 89 deletions(-) diff --git a/package.json b/package.json index 15815d38f5..77e4221ba5 100644 --- a/package.json +++ b/package.json @@ -146,9 +146,9 @@ "style-loader": "^2.0.0", "typescript": "^4.1.2", "url-loader": "^1.1.2", - "webpack": "^4.44.2", + "webpack": "^4.46.0", "webpack-build-notifier": "^0.1.30", - "webpack-bundle-analyzer": "^2.11.1", + "webpack-bundle-analyzer": "^4.9.0", "webpack-cli": "^3.3.12", "webpack-dev-server": "^3.11.0", "webpack-manifest-plugin": "^2.0.4" diff --git a/yarn.lock b/yarn.lock index 80420c9c00..c97c9f6f10 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1382,6 +1382,11 @@ enabled "2.0.x" kuler "^2.0.0" +"@discoveryjs/json-ext@0.5.7": + version "0.5.7" + resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" + integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== + "@istanbuljs/load-nyc-config@^1.0.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" @@ -1674,6 +1679,11 @@ schema-utils "^2.6.5" source-map "^0.7.3" +"@polka/url@^1.0.0-next.20": + version "1.0.0-next.21" + resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.21.tgz#5de5a2385a35309427f6011992b544514d559aa1" + integrity sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g== + "@redash/viz@file:viz-lib": version "1.0.0" dependencies: @@ -2224,7 +2234,12 @@ acorn-walk@^7.0.0: resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== -acorn@^5.3.0, acorn@^5.5.3: +acorn-walk@^8.0.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" + integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== + +acorn@^5.5.3: version "5.7.3" resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279" integrity sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw== @@ -2259,6 +2274,11 @@ acorn@^7.1.1: resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.1.tgz#e35668de0b402f359de515c5482a1ab9f89a69bf" integrity sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg== +acorn@^8.0.4: + version "8.10.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.10.0.tgz#8be5b3907a67221a81ab23c7889c4c5526b62ec5" + integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw== + add-line-numbers@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/add-line-numbers/-/add-line-numbers-1.0.1.tgz#48dbbdea47dbd234deafeac6c93cea6f70b4b7e3" @@ -3068,15 +3088,6 @@ beautifymarker@^1.0.7: resolved "https://registry.yarnpkg.com/beautifymarker/-/beautifymarker-1.0.7.tgz#b613092b90bfa37960716caca1aa3a93446657d8" integrity sha512-iWj/8cZOJ2jW7N7VkmmmPg7gFLgU6C8ArX6m6/hkIz0LaktVWtE+kpL351AE6MK5sX57/CzzXH54jlYD9agxnQ== -bfj-node4@^5.2.0: - version "5.3.1" - resolved "https://registry.yarnpkg.com/bfj-node4/-/bfj-node4-5.3.1.tgz#e23d8b27057f1d0214fc561142ad9db998f26830" - integrity sha512-SOmOsowQWfXc7ybFARsK3C4MCOWzERaOMV/Fl3Tgjs+5dJWyzo3oa127jL44eMbQiAN17J7SvAs2TRxEScTUmg== - dependencies: - bluebird "^3.5.1" - check-types "^7.3.0" - tryer "^1.0.0" - big-rat@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/big-rat/-/big-rat-1.0.4.tgz#768d093bb57930dd18ed575c7fca27dc5391adea" @@ -3721,7 +3732,7 @@ chalk@^1.0.0, chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" -chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.4.1, chalk@^2.4.2: +chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -3756,11 +3767,6 @@ check-more-types@^2.24.0: resolved "https://registry.yarnpkg.com/check-more-types/-/check-more-types-2.24.0.tgz#1420ffb10fd444dcfc79b43891bbfffd32a84600" integrity sha1-FCD/sQ/URNz8ebQ4kbv//TKoRgA= -check-types@^7.3.0: - version "7.4.0" - resolved "https://registry.yarnpkg.com/check-types/-/check-types-7.4.0.tgz#0378ec1b9616ec71f774931a3c6516fad8c152f4" - integrity sha512-YbulWHdfP99UfZ73NcUDlNJhEIDgm9Doq9GhpyXbF+7Aegi3CVV7qqMCKTTqJxlvEvnQBp9IA+dxsGN6xK/nSg== - cheerio@^1.0.0-rc.2: version "1.0.0-rc.2" resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.2.tgz#4b9f53a81b27e4d5dac31c0ffd0cfa03cc6830db" @@ -4253,7 +4259,7 @@ combined-stream@^1.0.8: dependencies: delayed-stream "~1.0.0" -commander@2, commander@^2.13.0, commander@^2.15.1, commander@^2.19.0: +commander@2, commander@^2.15.1, commander@^2.19.0: version "2.19.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a" integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg== @@ -4273,6 +4279,11 @@ commander@^5.1.0: resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== +commander@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" + integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== + commander@~2.17.1: version "2.17.1" resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" @@ -5481,10 +5492,10 @@ duplexer2@~0.0.2: dependencies: readable-stream "~1.1.9" -duplexer@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" - integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E= +duplexer@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" + integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== duplexify@^3.4.2, duplexify@^3.4.5, duplexify@^3.6.0: version "3.7.1" @@ -5521,11 +5532,6 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= -ejs@^2.5.7: - version "2.6.1" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.6.1.tgz#498ec0d495655abc6f23cd61868d926464071aa0" - integrity sha512-0xy4A/twfrRCnkhfk8ErDi5DqdAsAqeGxht4xkCUrsvhhbQNs7E+4jV0CN7+NKIY0aHE72+XvqtBIXzD31ZbXQ== - electron-to-chromium@^1.2.7: version "1.3.113" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.113.tgz#b1ccf619df7295aea17bc6951dc689632629e4a9" @@ -5608,7 +5614,7 @@ end-of-stream@^1.0.0, end-of-stream@^1.1.0: dependencies: once "^1.4.0" -enhanced-resolve@^4.1.1: +enhanced-resolve@^4.1.1, enhanced-resolve@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz#2f3cfd84dbe3b487f18f2db2ef1e064a571ca5ec" integrity sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg== @@ -5617,15 +5623,6 @@ enhanced-resolve@^4.1.1: memory-fs "^0.5.0" tapable "^1.0.0" -enhanced-resolve@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.3.0.tgz#3b806f3bfafc1ec7de69551ef93cca46c1704126" - integrity sha512-3e87LvavsdxyoCfGusJnrZ5G8SLPOFeHSNpZI/ATL9a5leXo2k0w6MKnbqhdBad9qTobSfB20Ld7UmgoNbAZkQ== - dependencies: - graceful-fs "^4.1.2" - memory-fs "^0.5.0" - tapable "^1.0.0" - entities@^1.1.1, entities@~1.1.1: version "1.1.2" resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" @@ -6334,7 +6331,7 @@ expect@^24.1.0: jest-message-util "^24.0.0" jest-regex-util "^24.0.0" -express@^4.16.2, express@^4.16.3: +express@^4.16.3: version "4.16.4" resolved "https://registry.yarnpkg.com/express/-/express-4.16.4.tgz#fddef61926109e24c515ea97fd2f1bdbf62df12e" integrity sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg== @@ -6630,11 +6627,6 @@ fileset@^2.0.3: glob "^7.0.3" minimatch "^3.0.3" -filesize@^3.5.11: - version "3.6.1" - resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.6.1.tgz#090bb3ee01b6f801a8a8be99d31710b3422bb317" - integrity sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg== - fill-range@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" @@ -7888,13 +7880,12 @@ growly@^1.3.0: resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= -gzip-size@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-4.1.0.tgz#8ae096257eabe7d69c45be2b67c448124ffb517c" - integrity sha1-iuCWJX6r59acRb4rZ8RIEk/7UXw= +gzip-size@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671cbcbad5be3e2eeb10e462" + integrity sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q== dependencies: - duplexer "^0.1.1" - pify "^3.0.0" + duplexer "^0.1.2" handle-thing@^2.0.0: version "2.0.1" @@ -10683,6 +10674,11 @@ move-concurrently@^1.0.1: rimraf "^2.5.4" run-queue "^1.0.3" +mrmime@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mrmime/-/mrmime-1.0.1.tgz#5f90c825fad4bdd41dc914eff5d1a8cfdaf24f27" + integrity sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw== + ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" @@ -11417,10 +11413,10 @@ onetime@^5.1.0: dependencies: mimic-fn "^2.1.0" -opener@^1.4.3: - version "1.5.1" - resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.1.tgz#6d2f0e77f1a0af0032aca716c2c1fbb8e7e8abed" - integrity sha512-goYSy5c2UXE4Ra1xixabeVh1guIX/ZV/YokJksb6q2lubWu6UbvPQ20p542/sFIll1nl8JnCyK9oBaOcCWXwvA== +opener@^1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598" + integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A== opn@^5.5.0: version "5.5.0" @@ -14476,6 +14472,15 @@ simplify-planar-graph@^2.0.1: robust-orientation "^1.0.1" simplicial-complex "^0.3.3" +sirv@^1.0.7: + version "1.0.19" + resolved "https://registry.yarnpkg.com/sirv/-/sirv-1.0.19.tgz#1d73979b38c7fe91fcba49c85280daa9c2363b49" + integrity sha512-JuLThK3TnZG1TAKDwNIqNq6QA2afLOCcm+iE8D1Kj3GA40pSPsxQjjJl0J8X3tsR7T+CP1GavpzLwYkgVLWrZQ== + dependencies: + "@polka/url" "^1.0.0-next.20" + mrmime "^1.0.0" + totalist "^1.0.0" + sisteransi@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.0.tgz#77d9622ff909080f1c19e5f4a1df0c1b0a27b88c" @@ -15571,6 +15576,11 @@ topojson-client@^2.1.0: dependencies: commander "2" +totalist@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/totalist/-/totalist-1.1.0.tgz#a4d65a3e546517701e3e5c37a47a70ac97fe56df" + integrity sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g== + tough-cookie@0.12.x: version "0.12.1" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-0.12.1.tgz#8220c7e21abd5b13d96804254bd5a81ebf2c7d62" @@ -15632,11 +15642,6 @@ triple-beam@^1.2.0, triple-beam@^1.3.0: resolved "https://registry.yarnpkg.com/triple-beam/-/triple-beam-1.3.0.tgz#a595214c7298db8339eeeee083e4d10bd8cb8dd9" integrity sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw== -tryer@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/tryer/-/tryer-1.0.1.tgz#f2c85406800b9b0f74c9f7465b81eaad241252f8" - integrity sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA== - tslib@^1, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3: version "1.9.3" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" @@ -16324,23 +16329,21 @@ webpack-build-notifier@^0.1.30: node-notifier "5.2.1" strip-ansi "^3.0.1" -webpack-bundle-analyzer@^2.11.1: - version "2.13.1" - resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-2.13.1.tgz#07d2176c6e86c3cdce4c23e56fae2a7b6b4ad526" - integrity sha512-rwxyfecTAxoarCC9VlHlIpfQCmmJ/qWD5bpbjkof+7HrNhTNZIwZITxN6CdlYL2axGmwNUQ+tFgcSOiNXMf/sQ== - dependencies: - acorn "^5.3.0" - bfj-node4 "^5.2.0" - chalk "^2.3.0" - commander "^2.13.0" - ejs "^2.5.7" - express "^4.16.2" - filesize "^3.5.11" - gzip-size "^4.1.0" - lodash "^4.17.4" - mkdirp "^0.5.1" - opener "^1.4.3" - ws "^4.0.0" +webpack-bundle-analyzer@^4.9.0: + version "4.9.0" + resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.9.0.tgz#fc093c4ab174fd3dcbd1c30b763f56d10141209d" + integrity sha512-+bXGmO1LyiNx0i9enBu3H8mv42sj/BJWhZNFwjz92tVnBa9J3JMGo2an2IXlEleoDOPn/Hofl5hr/xCpObUDtw== + dependencies: + "@discoveryjs/json-ext" "0.5.7" + 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" webpack-cli@^3.3.12: version "3.3.12" @@ -16442,10 +16445,10 @@ webpack-sources@^1.4.0, webpack-sources@^1.4.1: source-list-map "^2.0.0" source-map "~0.6.1" -webpack@^4.44.2: - version "4.44.2" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.44.2.tgz#6bfe2b0af055c8b2d1e90ed2cd9363f841266b72" - integrity sha512-6KJVGlCxYdISyurpQ0IPTklv+DULv05rs2hseIXer6D7KrUicRDLFb4IUM1S6LUAKypPM/nSiVSuv8jHu1m3/Q== +webpack@^4.46.0: + version "4.46.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.46.0.tgz#bf9b4404ea20a073605e0a011d188d77cb6ad542" + integrity sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q== dependencies: "@webassemblyjs/ast" "1.9.0" "@webassemblyjs/helper-module-context" "1.9.0" @@ -16455,7 +16458,7 @@ webpack@^4.44.2: ajv "^6.10.2" ajv-keywords "^3.4.1" chrome-trace-event "^1.0.2" - enhanced-resolve "^4.3.0" + enhanced-resolve "^4.5.0" eslint-scope "^4.0.3" json-parse-better-errors "^1.0.2" loader-runner "^2.4.0" @@ -16703,14 +16706,6 @@ write@1.0.3: dependencies: mkdirp "^0.5.1" -ws@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-4.1.0.tgz#a979b5d7d4da68bf54efe0408967c324869a7289" - integrity sha512-ZGh/8kF9rrRNffkLFV4AzhvooEclrOH0xaugmqGsIfFgOE/pIz4fMc4Ef+5HSQqTEug2S9JZIWDR47duDSLfaA== - dependencies: - async-limiter "~1.0.0" - safe-buffer "~5.1.0" - ws@^5.2.0: version "5.2.2" resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.2.tgz#dffef14866b8e8dc9133582514d1befaf96e980f" @@ -16725,6 +16720,11 @@ ws@^6.1.0, ws@^6.2.1: dependencies: async-limiter "~1.0.0" +ws@^7.3.1: + version "7.5.9" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" + integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== + xml-name-validator@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" From 34c20afdd88a2c6639d0daf0c046f5ddad248737 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 23 Jul 2023 05:05:11 +0000 Subject: [PATCH 182/274] Bump decode-uri-component from 0.2.0 to 0.2.2 (#6241) Bumps [decode-uri-component](https://github.com/SamVerschueren/decode-uri-component) from 0.2.0 to 0.2.2. - [Release notes](https://github.com/SamVerschueren/decode-uri-component/releases) - [Commits](https://github.com/SamVerschueren/decode-uri-component/compare/v0.2.0...v0.2.2) --- updated-dependencies: - dependency-name: decode-uri-component dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index c97c9f6f10..baad670adb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5075,9 +5075,9 @@ decamelize@^1.0.0, decamelize@^1.1.2, decamelize@^1.2.0: integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= decode-uri-component@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" - integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= + version "0.2.2" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9" + integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ== deep-equal@^1.0.1, deep-equal@~1.1.1: version "1.1.1" From a32c0dfb58d382e97434ce25476481ae6a0baabb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 23 Jul 2023 05:50:26 +0000 Subject: [PATCH 183/274] Bump lodash from 4.17.19 to 4.17.21 in /viz-lib (#5496) Bumps [lodash](https://github.com/lodash/lodash) from 4.17.19 to 4.17.21. - [Release notes](https://github.com/lodash/lodash/releases) - [Commits](https://github.com/lodash/lodash/compare/4.17.19...4.17.21) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- viz-lib/yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/viz-lib/yarn.lock b/viz-lib/yarn.lock index 1af8bf0c2a..3babc368d7 100644 --- a/viz-lib/yarn.lock +++ b/viz-lib/yarn.lock @@ -6670,9 +6670,9 @@ lodash.sortby@^4.7.0: integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= lodash@^4.15.0, lodash@^4.17.10, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19: - version "4.17.19" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.19.tgz#e48ddedbe30b3321783c5b4301fbd353bc1e4a4b" - integrity sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ== + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== log-update@^3.3.0: version "3.4.0" From 58fc8f4aee499b7b8c3c31044ca883138fa05936 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 23 Jul 2023 06:37:47 +0000 Subject: [PATCH 184/274] Bump minimatch from 3.0.4 to 3.1.2 (#6242) Bumps [minimatch](https://github.com/isaacs/minimatch) from 3.0.4 to 3.1.2. - [Changelog](https://github.com/isaacs/minimatch/blob/main/changelog.md) - [Commits](https://github.com/isaacs/minimatch/compare/v3.0.4...v3.1.2) --- updated-dependencies: - dependency-name: minimatch dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/yarn.lock b/yarn.lock index baad670adb..a41fe4ce83 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10494,14 +10494,7 @@ minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= -minimatch@^3.0.3: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== - dependencies: - brace-expansion "^1.1.7" - -minimatch@^3.0.4, minimatch@^3.1.1: +minimatch@^3.0.3, minimatch@^3.0.4, minimatch@^3.1.1: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== From 5f2aad2009da5023466c7ac0f6452e93f99ac4a8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 23 Jul 2023 06:44:20 +0000 Subject: [PATCH 185/274] Bump elliptic from 6.4.1 to 6.5.4 (#6243) Bumps [elliptic](https://github.com/indutny/elliptic) from 6.4.1 to 6.5.4. - [Commits](https://github.com/indutny/elliptic/compare/v6.4.1...v6.5.4) --- updated-dependencies: - dependency-name: elliptic dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 35 ++++++++++++++++++++--------------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/yarn.lock b/yarn.lock index a41fe4ce83..0879fbd369 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3167,11 +3167,16 @@ bluebird@^3.5.1, bluebird@^3.5.5, bluebird@^3.7.2: resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== -bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.11.6, bn.js@^4.4.0: +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.11.6: version "4.11.8" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA== +bn.js@^4.11.9: + version "4.12.0" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" + integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== + body-parser@1.18.3, body-parser@^1.18.3: version "1.18.3" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.3.tgz#5b292198ffdd553b3a0f20ded0592b956955c8b4" @@ -3272,7 +3277,7 @@ braces@^3.0.1, braces@~3.0.2: dependencies: fill-range "^7.0.1" -brorand@^1.0.1: +brorand@^1.0.1, brorand@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= @@ -5565,17 +5570,17 @@ elementary-circuits-directed-graph@^1.0.4: strongly-connected-components "^1.0.1" elliptic@^6.0.0: - version "6.4.1" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.1.tgz#c2d0b7776911b86722c632c3c06c60f2f819939a" - integrity sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ== + version "6.5.4" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" + integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== dependencies: - bn.js "^4.4.0" - brorand "^1.0.1" + bn.js "^4.11.9" + brorand "^1.1.0" hash.js "^1.0.0" - hmac-drbg "^1.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.0" + hmac-drbg "^1.0.1" + inherits "^2.0.4" + minimalistic-assert "^1.0.1" + minimalistic-crypto-utils "^1.0.1" emoji-regex@^7.0.1: version "7.0.3" @@ -8057,10 +8062,10 @@ history@^4.10.1: tiny-warning "^1.0.0" value-equal "^1.0.1" -hmac-drbg@^1.0.0: +hmac-drbg@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" - integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= + integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg== dependencies: hash.js "^1.0.3" minimalistic-assert "^1.0.0" @@ -8431,7 +8436,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3, inherits@~2.0.4: +inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3, inherits@~2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -10489,7 +10494,7 @@ minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== -minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: +minimalistic-crypto-utils@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= From 3370a34b6e00d6d46365b77d8b8e5014bd1bfce1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 23 Jul 2023 07:00:39 +0000 Subject: [PATCH 186/274] Bump ajv from 6.9.2 to 6.12.6 (#6245) Bumps [ajv](https://github.com/ajv-validator/ajv) from 6.9.2 to 6.12.6. - [Release notes](https://github.com/ajv-validator/ajv/releases) - [Commits](https://github.com/ajv-validator/ajv/compare/v6.9.2...v6.12.6) --- updated-dependencies: - dependency-name: ajv dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 27 +-------------------------- 1 file changed, 1 insertion(+), 26 deletions(-) diff --git a/yarn.lock b/yarn.lock index 0879fbd369..dd33f58af6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2326,27 +2326,7 @@ ajv-keywords@^3.5.2: resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== -ajv@^6.1.0, ajv@^6.5.5: - version "6.9.2" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.9.2.tgz#4927adb83e7f48e5a32b45729744c71ec39c9c7b" - integrity sha512-4UFy0/LgDo7Oa/+wOAlj44tp9K78u38E5/359eSrqEp1Z5PdVfimCcs7SluXMP755RUQu6d2b4AvF0R1C9RZjg== - dependencies: - fast-deep-equal "^2.0.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -ajv@^6.10.0: - version "6.10.2" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.2.tgz#d3cea04d6b017b2894ad69040fec8b623eb4bd52" - integrity sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw== - dependencies: - fast-deep-equal "^2.0.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -ajv@^6.10.2, ajv@^6.12.4, ajv@^6.12.5: +ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.4, ajv@^6.12.5, ajv@^6.5.5: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -6493,11 +6473,6 @@ falafel@^2.1.0: isarray "^2.0.1" object-keys "^1.0.6" -fast-deep-equal@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" - integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= - fast-deep-equal@^3.1.1: version "3.1.3" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" From 2d6928469ad1c28108d81bbbc6eafd23e8920a0c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 23 Jul 2023 17:18:27 +1000 Subject: [PATCH 187/274] Bump dns-packet from 1.3.1 to 1.3.4 (#6246) Bumps [dns-packet](https://github.com/mafintosh/dns-packet) from 1.3.1 to 1.3.4. - [Changelog](https://github.com/mafintosh/dns-packet/blob/master/CHANGELOG.md) - [Commits](https://github.com/mafintosh/dns-packet/compare/v1.3.1...v1.3.4) --- updated-dependencies: - dependency-name: dns-packet dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index dd33f58af6..7b10e9b00b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5284,9 +5284,9 @@ dns-equal@^1.0.0: integrity sha1-s55/HabrCnW6nBcySzR1PEfgZU0= dns-packet@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.1.tgz#12aa426981075be500b910eedcd0b47dd7deda5a" - integrity sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg== + version "1.3.4" + resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.4.tgz#e3455065824a2507ba886c55a89963bb107dec6f" + integrity sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA== dependencies: ip "^1.1.0" safe-buffer "^5.0.1" From de1e6ba018a35f158d651d4ad52c2fe8fa74635f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 23 Jul 2023 18:19:47 +1000 Subject: [PATCH 188/274] Bump y18n from 4.0.0 to 4.0.3 (#6249) Bumps [y18n](https://github.com/yargs/y18n) from 4.0.0 to 4.0.3. - [Release notes](https://github.com/yargs/y18n/releases) - [Changelog](https://github.com/yargs/y18n/blob/y18n-v4.0.3/CHANGELOG.md) - [Commits](https://github.com/yargs/y18n/compare/v4.0.0...y18n-v4.0.3) --- updated-dependencies: - dependency-name: y18n dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/yarn.lock b/yarn.lock index 7b10e9b00b..e9ffec2bee 100644 --- a/yarn.lock +++ b/yarn.lock @@ -16725,12 +16725,7 @@ xtend@~2.1.1: dependencies: object-keys "~0.4.0" -"y18n@^3.2.1 || ^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" - integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== - -y18n@^4.0.0: +"y18n@^3.2.1 || ^4.0.0", y18n@^4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== From ed0075d495a717892393e79c1fc3c54c414944ac Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 23 Jul 2023 18:22:23 +1000 Subject: [PATCH 189/274] Bump acorn from 5.7.3 to 5.7.4 (#6248) Bumps [acorn](https://github.com/acornjs/acorn) from 5.7.3 to 5.7.4. - [Commits](https://github.com/acornjs/acorn/compare/5.7.3...5.7.4) --- updated-dependencies: - dependency-name: acorn dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 36 ++++++++---------------------------- 1 file changed, 8 insertions(+), 28 deletions(-) diff --git a/yarn.lock b/yarn.lock index e9ffec2bee..17963f2a90 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2240,39 +2240,19 @@ acorn-walk@^8.0.0: integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== acorn@^5.5.3: - version "5.7.3" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279" - integrity sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw== + version "5.7.4" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.4.tgz#3e8d8a9947d0599a1796d10225d7432f4a4acf5e" + integrity sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg== -acorn@^6.0.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.1.1.tgz#7d25ae05bb8ad1f9b699108e1094ecd7884adc1f" - integrity sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA== - -acorn@^6.1.1: - version "6.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474" - integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA== - -acorn@^6.4.1: +acorn@^6.0.1, acorn@^6.1.1, acorn@^6.4.1: version "6.4.2" resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== -acorn@^7.0.0: - version "7.4.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.0.tgz#e1ad486e6c54501634c6c397c5c121daa383607c" - integrity sha512-+G7P8jJmCHr+S+cLfQxygbWhXy+8YTVGzAkpEbcLo2mLoL7tij/VG41QSHACSf5QgYRhMZYHuNc6drJaO0Da+w== - -acorn@^7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.0.tgz#949d36f2c292535da602283586c2477c57eb2d6c" - integrity sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ== - -acorn@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.1.tgz#e35668de0b402f359de515c5482a1ab9f89a69bf" - integrity sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg== +acorn@^7.0.0, acorn@^7.1.0, acorn@^7.1.1: + version "7.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" + integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== acorn@^8.0.4: version "8.10.0" From e2c824e1d5599bbb06372582e4bb9cb045481e22 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 23 Jul 2023 18:23:10 +1000 Subject: [PATCH 190/274] Bump ini from 1.3.5 to 1.3.8 (#6250) Bumps [ini](https://github.com/npm/ini) from 1.3.5 to 1.3.8. - [Release notes](https://github.com/npm/ini/releases) - [Changelog](https://github.com/npm/ini/blob/main/CHANGELOG.md) - [Commits](https://github.com/npm/ini/compare/v1.3.5...v1.3.8) --- updated-dependencies: - dependency-name: ini dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 17963f2a90..c2321c5af0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8407,9 +8407,9 @@ inherits@2.0.3: integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: - version "1.3.5" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" - integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== + version "1.3.8" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== inline-source-map@~0.6.0: version "0.6.2" From 8973772548595b6f6a126a37d33e73a65b6df3c4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 23 Jul 2023 18:25:47 +1000 Subject: [PATCH 191/274] Bump ansi-regex from 3.0.0 to 3.0.1 in /viz-lib (#6244) Bumps [ansi-regex](https://github.com/chalk/ansi-regex) from 3.0.0 to 3.0.1. - [Release notes](https://github.com/chalk/ansi-regex/releases) - [Commits](https://github.com/chalk/ansi-regex/compare/v3.0.0...v3.0.1) --- updated-dependencies: - dependency-name: ansi-regex dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- viz-lib/yarn.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/viz-lib/yarn.lock b/viz-lib/yarn.lock index 3babc368d7..66d5d07d5b 100644 --- a/viz-lib/yarn.lock +++ b/viz-lib/yarn.lock @@ -2223,19 +2223,19 @@ ansi-escapes@^3.0.0, ansi-escapes@^3.2.0: integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== ansi-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" - integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= + version "3.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.1.tgz#123d6479e92ad45ad897d4054e3c7ca7db4944e1" + integrity sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw== ansi-regex@^4.0.0, ansi-regex@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" - integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.1.tgz#164daac87ab2d6f6db3a29875e2d1766582dabed" + integrity sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g== ansi-regex@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" - integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== ansi-styles@^3.2.0, ansi-styles@^3.2.1: version "3.2.1" From 868453077a21050e2f4e02f97d367cd98c801bf7 Mon Sep 17 00:00:00 2001 From: Justin Clift Date: Sun, 23 Jul 2023 18:27:39 +1000 Subject: [PATCH 192/274] Bump css-loader from 0.28.7 to 1.0.1 (#6251) --- package.json | 2 +- yarn.lock | 520 ++------------------------------------------------- 2 files changed, 21 insertions(+), 501 deletions(-) diff --git a/package.json b/package.json index 77e4221ba5..9be152b868 100644 --- a/package.json +++ b/package.json @@ -107,7 +107,7 @@ "babel-plugin-istanbul": "^6.0.0", "babel-plugin-transform-builtin-extend": "^1.1.2", "copy-webpack-plugin": "^5.1.2", - "css-loader": "^0.28.7", + "css-loader": "^1.0.1", "cypress": "6.0.1", "enzyme": "^3.8.0", "enzyme-adapter-react-16": "^1.7.1", diff --git a/yarn.lock b/yarn.lock index c2321c5af0..d4b8bf8b26 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2346,11 +2346,6 @@ alpha-shape@^1.0.0: alpha-complex "^1.0.0" simplicial-complex-boundary "^1.0.0" -alphanum-sort@^1.0.1, alphanum-sort@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" - integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= - amdefine@>=0.0.4: version "1.0.1" resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" @@ -2779,7 +2774,7 @@ atob@^2.1.1, atob@^2.1.2: resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== -autoprefixer@^6.0.0, autoprefixer@^6.3.1: +autoprefixer@^6.0.0: version "6.7.7" resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-6.7.7.tgz#1dbd1c835658e35ce3f9984099db00585c782014" integrity sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ= @@ -2996,11 +2991,6 @@ babylon@^6.18.0: resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== -balanced-match@^0.4.2: - version "0.4.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" - integrity sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg= - balanced-match@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" @@ -3386,7 +3376,7 @@ browserify@16.2.3, browserify@^16.1.0: vm-browserify "^1.0.0" xtend "^4.0.0" -browserslist@^1.3.6, browserslist@^1.5.2, browserslist@^1.7.6: +browserslist@^1.7.6: version "1.7.7" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-1.7.7.tgz#0bd76704258be829b2398bb50e4b62d1a166b0b9" integrity sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk= @@ -3599,17 +3589,7 @@ camelcase@^5.0.0, camelcase@^5.3.1: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== -caniuse-api@^1.5.2: - version "1.6.1" - resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-1.6.1.tgz#b534e7c734c4f81ec5fbe8aca2ad24354b962c6c" - integrity sha1-tTTnxzTE+B7F++isoq0kNUuWLGw= - dependencies: - browserslist "^1.3.6" - caniuse-db "^1.0.30000529" - lodash.memoize "^4.1.2" - lodash.uniq "^4.5.0" - -caniuse-db@^1.0.30000529, caniuse-db@^1.0.30000634, caniuse-db@^1.0.30000639: +caniuse-db@^1.0.30000634, caniuse-db@^1.0.30000639: version "1.0.30000939" resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000939.tgz#8cb54a9868fe040fbf2e2441408c68b7008912e8" integrity sha512-nB5tLf3hOs+biXl1lhKjHRgNC0J1I7H52h/t1FP7qxARKKwpB0z+P/JewJLYAlxCBP/q7rxJzQzHHrQMl0viKg== @@ -3847,13 +3827,6 @@ clamp@^1.0.1: resolved "https://registry.yarnpkg.com/clamp/-/clamp-1.0.1.tgz#66a0e64011816e37196828fdc8c8c147312c8634" integrity sha1-ZqDmQBGBbjcZaCj9yMjBRzEshjQ= -clap@^1.0.9: - version "1.2.3" - resolved "https://registry.yarnpkg.com/clap/-/clap-1.2.3.tgz#4f36745b32008492557f46412d66d50cb99bce51" - integrity sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA== - dependencies: - chalk "^1.1.3" - class-utils@^0.3.5: version "0.3.6" resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" @@ -4008,11 +3981,6 @@ cliui@^6.0.0: strip-ansi "^6.0.0" wrap-ansi "^6.2.0" -clone@^1.0.2: - version "1.0.4" - resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" - integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= - clone@^2.1.1, clone@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" @@ -4028,13 +3996,6 @@ co@^4.6.0: resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= -coa@~1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/coa/-/coa-1.0.4.tgz#a9ef153660d6a86a8bdec0289a5c684d217432fd" - integrity sha1-qe8VNmDWqGqL3sAomlxoTSF0Mv0= - dependencies: - q "^1.1.2" - code-point-at@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" @@ -4068,7 +4029,7 @@ color-alpha@^1.0.4: dependencies: color-parse "^1.3.8" -color-convert@^1.3.0, color-convert@^1.9.0, color-convert@^1.9.1: +color-convert@^1.9.0, color-convert@^1.9.1: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== @@ -4134,13 +4095,6 @@ color-space@^1.14.6: hsluv "^0.0.3" mumath "^3.3.4" -color-string@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/color-string/-/color-string-0.3.0.tgz#27d46fb67025c5c2fa25993bfbf579e47841b991" - integrity sha1-J9RvtnAlxcL6JZk7+/V55HhBuZE= - dependencies: - color-name "^1.0.0" - color-string@^1.5.2: version "1.5.4" resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.4.tgz#dd51cd25cfee953d138fe4002372cc3d0e504cb6" @@ -4157,15 +4111,6 @@ color@3.0.x: color-convert "^1.9.1" color-string "^1.5.2" -color@^0.11.0: - version "0.11.4" - resolved "https://registry.yarnpkg.com/color/-/color-0.11.4.tgz#6d7b5c74fb65e841cd48792ad1ed5e07b904d764" - integrity sha1-bXtcdPtl6EHNSHkq0e1eB7kE12Q= - dependencies: - clone "^1.0.2" - color-convert "^1.3.0" - color-string "^0.3.0" - colormap@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/colormap/-/colormap-2.3.1.tgz#9f2ab643591c0728d32332d5480b2487a4e0f249" @@ -4173,16 +4118,7 @@ colormap@^2.3.1: dependencies: lerp "^1.0.3" -colormin@^1.0.5: - version "1.1.2" - resolved "https://registry.yarnpkg.com/colormin/-/colormin-1.1.2.tgz#ea2f7420a72b96881a38aae59ec124a6f7298133" - integrity sha1-6i90IKcrlogaOKrlnsEkpvcpgTM= - dependencies: - color "^0.11.0" - css-color-names "0.0.4" - has "^1.0.1" - -colors@^1.1.2, colors@~1.1.2: +colors@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" integrity sha1-FopHAXVran9RoSzgyXv6KMCE7WM= @@ -4612,11 +4548,6 @@ crypto-browserify@^3.0.0, crypto-browserify@^3.11.0: randombytes "^2.0.0" randomfill "^1.0.3" -css-color-names@0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" - integrity sha1-gIrcLnnPhHOAabZGyyDsJ762KeA= - css-font-size-keywords@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/css-font-size-keywords/-/css-font-size-keywords-1.0.0.tgz#854875ace9aca6a8d2ee0d345a44aae9bb6db6cb" @@ -4657,19 +4588,17 @@ css-global-keywords@^1.0.1: resolved "https://registry.yarnpkg.com/css-global-keywords/-/css-global-keywords-1.0.1.tgz#72a9aea72796d019b1d2a3252de4e5aaa37e4a69" integrity sha1-cqmupyeW0Bmx0qMlLeTlqqN+Smk= -css-loader@^0.28.7: - version "0.28.11" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-0.28.11.tgz#c3f9864a700be2711bb5a2462b2389b1a392dab7" - integrity sha512-wovHgjAx8ZIMGSL8pTys7edA1ClmzxHeY6n/d97gg5odgsxEgKjULPR0viqyC+FWMCL9sfqoC/QCUBo62tLvPg== +css-loader@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-1.0.1.tgz#6885bb5233b35ec47b006057da01cc640b6b79fe" + integrity sha512-+ZHAZm/yqvJ2kDtPne3uX0C+Vr3Zn5jFn2N4HywtS5ujwvsVkyg0VArEXpl3BgczDA8anieki1FIzhchX4yrDw== dependencies: babel-code-frame "^6.26.0" css-selector-tokenizer "^0.7.0" - cssnano "^3.10.0" icss-utils "^2.1.0" loader-utils "^1.0.2" - lodash.camelcase "^4.3.0" - object-assign "^4.1.1" - postcss "^5.0.6" + lodash "^4.17.11" + postcss "^6.0.23" postcss-modules-extract-imports "^1.2.0" postcss-modules-local-by-default "^1.2.0" postcss-modules-scope "^1.1.0" @@ -4732,52 +4661,6 @@ cssesc@^0.1.0: resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4" integrity sha1-yBSQPkViM3GgR3tAEJqq++6t27Q= -cssnano@^3.10.0: - version "3.10.0" - resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-3.10.0.tgz#4f38f6cea2b9b17fa01490f23f1dc68ea65c1c38" - integrity sha1-Tzj2zqK5sX+gFJDyPx3GjqZcHDg= - dependencies: - autoprefixer "^6.3.1" - decamelize "^1.1.2" - defined "^1.0.0" - has "^1.0.1" - object-assign "^4.0.1" - postcss "^5.0.14" - postcss-calc "^5.2.0" - postcss-colormin "^2.1.8" - postcss-convert-values "^2.3.4" - postcss-discard-comments "^2.0.4" - postcss-discard-duplicates "^2.0.1" - postcss-discard-empty "^2.0.1" - postcss-discard-overridden "^0.1.1" - postcss-discard-unused "^2.2.1" - postcss-filter-plugins "^2.0.0" - postcss-merge-idents "^2.1.5" - postcss-merge-longhand "^2.0.1" - postcss-merge-rules "^2.0.3" - postcss-minify-font-values "^1.0.2" - postcss-minify-gradients "^1.0.1" - postcss-minify-params "^1.0.4" - postcss-minify-selectors "^2.0.4" - postcss-normalize-charset "^1.1.0" - postcss-normalize-url "^3.0.7" - postcss-ordered-values "^2.1.0" - postcss-reduce-idents "^2.2.2" - postcss-reduce-initial "^1.0.0" - postcss-reduce-transforms "^1.0.3" - postcss-svgo "^2.1.1" - postcss-unique-selectors "^2.0.2" - postcss-value-parser "^3.2.3" - postcss-zindex "^2.0.1" - -csso@~2.3.1: - version "2.3.2" - resolved "https://registry.yarnpkg.com/csso/-/csso-2.3.2.tgz#ddd52c587033f49e94b71fc55569f252e8ff5f85" - integrity sha1-3dUsWHAz9J6Utx/FVWnyUuj/X4U= - dependencies: - clap "^1.0.9" - source-map "^0.5.3" - cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0": version "0.3.6" resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.6.tgz#f85206cee04efa841f3c5982a74ba96ab20d65ad" @@ -5034,7 +4917,7 @@ debug@^3.0.0, debug@^3.1.0, debug@^3.1.1, debug@^3.2.5: dependencies: ms "^2.1.1" -decamelize@^1.0.0, decamelize@^1.1.2, decamelize@^1.2.0: +decamelize@^1.0.0, decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= @@ -6091,11 +5974,6 @@ esprima@^1.0.3: resolved "https://registry.yarnpkg.com/esprima/-/esprima-1.2.5.tgz#0993502feaf668138325756f30f9a51feeec11e9" integrity sha1-CZNQL+r2aBODJXVvMPmlH+7sEek= -esprima@^2.6.0: - version "2.7.3" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" - integrity sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE= - esprima@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" @@ -6735,11 +6613,6 @@ flatten-vertex-data@^1.0.2: dependencies: dtype "^2.0.0" -flatten@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782" - integrity sha1-2uRqnXj74lKSJYzB54CkHZXAN4I= - flip-pixels@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/flip-pixels/-/flip-pixels-1.0.2.tgz#aad7b7d9fc65932d5f27e2e4dac4b494140845e4" @@ -8067,11 +7940,6 @@ hsluv@^0.0.3: resolved "https://registry.yarnpkg.com/hsluv/-/hsluv-0.0.3.tgz#829107dafb4a9f8b52a1809ed02e091eade6754c" integrity sha1-gpEH2vtKn4tSoYCe0C4JHq3mdUw= -html-comment-regex@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.2.tgz#97d4688aeb5c81886a364faa0cad1dda14d433a7" - integrity sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ== - html-element-map@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/html-element-map/-/html-element-map-1.0.0.tgz#19a41940225153ecdfead74f8509154ff1cdc18b" @@ -8373,11 +8241,6 @@ indent-string@^4.0.0: resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== -indexes-of@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" - integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= - infer-owner@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" @@ -8520,11 +8383,6 @@ ipaddr.js@1.9.1, ipaddr.js@^1.9.0: resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== -is-absolute-url@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" - integrity sha1-UFMN+4T8yap9vnhS6Do3uTufKqY= - is-absolute-url@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698" @@ -8823,7 +8681,7 @@ is-path-inside@^3.0.1: resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.2.tgz#f5220fc82a3e233757291dddc9c5877f2a1f3017" integrity sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg== -is-plain-obj@^1.0.0, is-plain-obj@^1.1.0: +is-plain-obj@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= @@ -8897,13 +8755,6 @@ is-svg-path@^1.0.1: resolved "https://registry.yarnpkg.com/is-svg-path/-/is-svg-path-1.0.2.tgz#77ab590c12b3d20348e5c7a13d0040c87784dda0" integrity sha1-d6tZDBKz0gNI5cehPQBAyHeE3aA= -is-svg@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-2.1.0.tgz#cf61090da0d9efbcab8722deba6f032208dbb0e9" - integrity sha1-z2EJDaDZ77yrhyLeum8DIgjbsOk= - dependencies: - html-comment-regex "^1.1.0" - is-symbol@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38" @@ -9485,14 +9336,6 @@ js-yaml@^3.12.0: argparse "^1.0.7" esprima "^4.0.0" -js-yaml@~3.7.0: - version "3.7.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.7.0.tgz#5c967ddd837a9bfdca5f2de84253abe8a1c03b80" - integrity sha1-XJZ93YN6m/3KXy3oQlOr6KHAO4A= - dependencies: - argparse "^1.0.7" - esprima "^2.6.0" - jsbn@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" @@ -9942,11 +9785,6 @@ lodash._reinterpolate@^3.0.0: resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= -lodash.camelcase@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" - integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY= - lodash.clonedeep@4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" @@ -9972,7 +9810,7 @@ lodash.isequal@^4.0.0, lodash.isequal@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" integrity sha1-QVxEePK8wwEgwizhDtMib30+GOA= -lodash.memoize@4.1.2, lodash.memoize@^4.1.2: +lodash.memoize@4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= @@ -10012,11 +9850,6 @@ lodash.unescape@4.0.1: resolved "https://registry.yarnpkg.com/lodash.unescape/-/lodash.unescape-4.0.1.tgz#bf2249886ce514cda112fae9218cdc065211fc9c" integrity sha1-vyJJiGzlFM2hEvrpIYzcBlIR/Jw= -lodash.uniq@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" - integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= - "lodash@>=3.5 <5", lodash@^4.15.0, lodash@^4.16.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.4: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" @@ -10235,11 +10068,6 @@ material-design-iconic-font@^2.2.0: resolved "https://registry.yarnpkg.com/material-design-iconic-font/-/material-design-iconic-font-2.2.0.tgz#66c3b1c880ef0cb87c02ca2a0f900ff0fe7f480d" integrity sha1-ZsOxyIDvDLh8AsoqD5AP8P5/SA0= -math-expression-evaluator@^1.2.14: - version "1.2.17" - resolved "https://registry.yarnpkg.com/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz#de819fdbcd84dccd8fae59c6aeb79615b9d266ac" - integrity sha1-3oGf282E3M2PrlnGrreWFbnSZqw= - math-log2@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/math-log2/-/math-log2-1.0.1.tgz#fb8941be5f5ebe8979e718e6273b178e58694565" @@ -10527,7 +10355,7 @@ mkdirp@0.5.1: dependencies: minimist "0.0.8" -mkdirp@^0.5.0, mkdirp@^0.5.3, mkdirp@^0.5.4, mkdirp@^0.5.5, mkdirp@~0.5.1: +mkdirp@^0.5.0, mkdirp@^0.5.3, mkdirp@^0.5.4, mkdirp@^0.5.5: version "0.5.5" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== @@ -11012,16 +10840,6 @@ normalize-svg-path@~0.1.0: resolved "https://registry.yarnpkg.com/normalize-svg-path/-/normalize-svg-path-0.1.0.tgz#456360e60ece75fbef7b5d7e160480e7ffd16fe5" integrity sha1-RWNg5g7Odfvve11+FgSA5//Rb+U= -normalize-url@^1.4.0: - version "1.9.1" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c" - integrity sha1-LMDWazHqIwNkWENuNiDYWVTGbDw= - dependencies: - object-assign "^4.0.1" - prepend-http "^1.0.0" - query-string "^4.1.0" - sort-keys "^1.0.0" - normals@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/normals/-/normals-1.1.0.tgz#325b595ed34afe467a6c55a14fd9085787ff59c0" @@ -12083,144 +11901,6 @@ posix-character-classes@^0.1.0: resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= -postcss-calc@^5.2.0: - version "5.3.1" - resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-5.3.1.tgz#77bae7ca928ad85716e2fda42f261bf7c1d65b5e" - integrity sha1-d7rnypKK2FcW4v2kLyYb98HWW14= - dependencies: - postcss "^5.0.2" - postcss-message-helpers "^2.0.0" - reduce-css-calc "^1.2.6" - -postcss-colormin@^2.1.8: - version "2.2.2" - resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-2.2.2.tgz#6631417d5f0e909a3d7ec26b24c8a8d1e4f96e4b" - integrity sha1-ZjFBfV8OkJo9fsJrJMio0eT5bks= - dependencies: - colormin "^1.0.5" - postcss "^5.0.13" - postcss-value-parser "^3.2.3" - -postcss-convert-values@^2.3.4: - version "2.6.1" - resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz#bbd8593c5c1fd2e3d1c322bb925dcae8dae4d62d" - integrity sha1-u9hZPFwf0uPRwyK7kl3K6Nrk1i0= - dependencies: - postcss "^5.0.11" - postcss-value-parser "^3.1.2" - -postcss-discard-comments@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz#befe89fafd5b3dace5ccce51b76b81514be00e3d" - integrity sha1-vv6J+v1bPazlzM5Rt2uBUUvgDj0= - dependencies: - postcss "^5.0.14" - -postcss-discard-duplicates@^2.0.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz#b9abf27b88ac188158a5eb12abcae20263b91932" - integrity sha1-uavye4isGIFYpesSq8riAmO5GTI= - dependencies: - postcss "^5.0.4" - -postcss-discard-empty@^2.0.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz#d2b4bd9d5ced5ebd8dcade7640c7d7cd7f4f92b5" - integrity sha1-0rS9nVztXr2Nyt52QMfXzX9PkrU= - dependencies: - postcss "^5.0.14" - -postcss-discard-overridden@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz#8b1eaf554f686fb288cd874c55667b0aa3668d58" - integrity sha1-ix6vVU9ob7KIzYdMVWZ7CqNmjVg= - dependencies: - postcss "^5.0.16" - -postcss-discard-unused@^2.2.1: - version "2.2.3" - resolved "https://registry.yarnpkg.com/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz#bce30b2cc591ffc634322b5fb3464b6d934f4433" - integrity sha1-vOMLLMWR/8Y0Mitfs0ZLbZNPRDM= - dependencies: - postcss "^5.0.14" - uniqs "^2.0.0" - -postcss-filter-plugins@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/postcss-filter-plugins/-/postcss-filter-plugins-2.0.3.tgz#82245fdf82337041645e477114d8e593aa18b8ec" - integrity sha512-T53GVFsdinJhgwm7rg1BzbeBRomOg9y5MBVhGcsV0CxurUdVj1UlPdKtn7aqYA/c/QVkzKMjq2bSV5dKG5+AwQ== - dependencies: - postcss "^5.0.4" - -postcss-merge-idents@^2.1.5: - version "2.1.7" - resolved "https://registry.yarnpkg.com/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz#4c5530313c08e1d5b3bbf3d2bbc747e278eea270" - integrity sha1-TFUwMTwI4dWzu/PSu8dH4njuonA= - dependencies: - has "^1.0.1" - postcss "^5.0.10" - postcss-value-parser "^3.1.1" - -postcss-merge-longhand@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz#23d90cd127b0a77994915332739034a1a4f3d658" - integrity sha1-I9kM0Sewp3mUkVMyc5A0oaTz1lg= - dependencies: - postcss "^5.0.4" - -postcss-merge-rules@^2.0.3: - version "2.1.2" - resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz#d1df5dfaa7b1acc3be553f0e9e10e87c61b5f721" - integrity sha1-0d9d+qexrMO+VT8OnhDofGG19yE= - dependencies: - browserslist "^1.5.2" - caniuse-api "^1.5.2" - postcss "^5.0.4" - postcss-selector-parser "^2.2.2" - vendors "^1.0.0" - -postcss-message-helpers@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz#a4f2f4fab6e4fe002f0aed000478cdf52f9ba60e" - integrity sha1-pPL0+rbk/gAvCu0ABHjN9S+bpg4= - -postcss-minify-font-values@^1.0.2: - version "1.0.5" - resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz#4b58edb56641eba7c8474ab3526cafd7bbdecb69" - integrity sha1-S1jttWZB66fIR0qzUmyv17vey2k= - dependencies: - object-assign "^4.0.1" - postcss "^5.0.4" - postcss-value-parser "^3.0.2" - -postcss-minify-gradients@^1.0.1: - version "1.0.5" - resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz#5dbda11373703f83cfb4a3ea3881d8d75ff5e6e1" - integrity sha1-Xb2hE3NwP4PPtKPqOIHY11/15uE= - dependencies: - postcss "^5.0.12" - postcss-value-parser "^3.3.0" - -postcss-minify-params@^1.0.4: - version "1.2.2" - resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz#ad2ce071373b943b3d930a3fa59a358c28d6f1f3" - integrity sha1-rSzgcTc7lDs9kwo/pZo1jCjW8fM= - dependencies: - alphanum-sort "^1.0.1" - postcss "^5.0.2" - postcss-value-parser "^3.0.2" - uniqs "^2.0.0" - -postcss-minify-selectors@^2.0.4: - version "2.1.1" - resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz#b2c6a98c0072cf91b932d1a496508114311735bf" - integrity sha1-ssapjAByz5G5MtGkllCBFDEXNb8= - dependencies: - alphanum-sort "^1.0.2" - has "^1.0.1" - postcss "^5.0.14" - postcss-selector-parser "^2.0.0" - postcss-modules-extract-imports@^1.2.0: version "1.2.1" resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.1.tgz#dc87e34148ec7eab5f791f7cd5849833375b741a" @@ -12252,98 +11932,12 @@ postcss-modules-values@^1.3.0: icss-replace-symbols "^1.1.0" postcss "^6.0.1" -postcss-normalize-charset@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz#ef9ee71212d7fe759c78ed162f61ed62b5cb93f1" - integrity sha1-757nEhLX/nWceO0WL2HtYrXLk/E= - dependencies: - postcss "^5.0.5" - -postcss-normalize-url@^3.0.7: - version "3.0.8" - resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz#108f74b3f2fcdaf891a2ffa3ea4592279fc78222" - integrity sha1-EI90s/L82viRov+j6kWSJ5/HgiI= - dependencies: - is-absolute-url "^2.0.0" - normalize-url "^1.4.0" - postcss "^5.0.14" - postcss-value-parser "^3.2.3" - -postcss-ordered-values@^2.1.0: - version "2.2.3" - resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz#eec6c2a67b6c412a8db2042e77fe8da43f95c11d" - integrity sha1-7sbCpntsQSqNsgQud/6NpD+VwR0= - dependencies: - postcss "^5.0.4" - postcss-value-parser "^3.0.1" - -postcss-reduce-idents@^2.2.2: - version "2.4.0" - resolved "https://registry.yarnpkg.com/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz#c2c6d20cc958284f6abfbe63f7609bf409059ad3" - integrity sha1-wsbSDMlYKE9qv75j92Cb9AkFmtM= - dependencies: - postcss "^5.0.4" - postcss-value-parser "^3.0.2" - -postcss-reduce-initial@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz#68f80695f045d08263a879ad240df8dd64f644ea" - integrity sha1-aPgGlfBF0IJjqHmtJA343WT2ROo= - dependencies: - postcss "^5.0.4" - -postcss-reduce-transforms@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz#ff76f4d8212437b31c298a42d2e1444025771ae1" - integrity sha1-/3b02CEkN7McKYpC0uFEQCV3GuE= - dependencies: - has "^1.0.1" - postcss "^5.0.8" - postcss-value-parser "^3.0.1" - -postcss-selector-parser@^2.0.0, postcss-selector-parser@^2.2.2: - version "2.2.3" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz#f9437788606c3c9acee16ffe8d8b16297f27bb90" - integrity sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A= - dependencies: - flatten "^1.0.2" - indexes-of "^1.0.1" - uniq "^1.0.1" - -postcss-svgo@^2.1.1: - version "2.1.6" - resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-2.1.6.tgz#b6df18aa613b666e133f08adb5219c2684ac108d" - integrity sha1-tt8YqmE7Zm4TPwittSGcJoSsEI0= - dependencies: - is-svg "^2.0.0" - postcss "^5.0.14" - postcss-value-parser "^3.2.3" - svgo "^0.7.0" - -postcss-unique-selectors@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz#981d57d29ddcb33e7b1dfe1fd43b8649f933ca1d" - integrity sha1-mB1X0p3csz57Hf4f1DuGSfkzyh0= - dependencies: - alphanum-sort "^1.0.1" - postcss "^5.0.4" - uniqs "^2.0.0" - -postcss-value-parser@^3.0.1, postcss-value-parser@^3.0.2, postcss-value-parser@^3.1.1, postcss-value-parser@^3.1.2, postcss-value-parser@^3.2.3, postcss-value-parser@^3.3.0: +postcss-value-parser@^3.2.3, postcss-value-parser@^3.3.0: version "3.3.1" resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== -postcss-zindex@^2.0.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/postcss-zindex/-/postcss-zindex-2.2.0.tgz#d2109ddc055b91af67fc4cb3b025946639d2af22" - integrity sha1-0hCd3AVbka9n/EyzsCWUZjnSryI= - dependencies: - has "^1.0.1" - postcss "^5.0.4" - uniqs "^2.0.0" - -postcss@^5.0.0, postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0.14, postcss@^5.0.16, postcss@^5.0.2, postcss@^5.0.4, postcss@^5.0.5, postcss@^5.0.6, postcss@^5.0.8, postcss@^5.2.16: +postcss@^5.0.0, postcss@^5.2.16: version "5.2.18" resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.18.tgz#badfa1497d46244f6390f58b319830d9107853c5" integrity sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg== @@ -12353,7 +11947,7 @@ postcss@^5.0.0, postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0. source-map "^0.5.6" supports-color "^3.2.3" -postcss@^6.0.1: +postcss@^6.0.1, postcss@^6.0.23: version "6.0.23" resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.23.tgz#61c82cc328ac60e677645f979054eb98bc0e3324" integrity sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag== @@ -12372,11 +11966,6 @@ prelude-ls@~1.1.2: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= -prepend-http@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" - integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= - prettier@^1.19.1: version "1.19.1" resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb" @@ -12580,11 +12169,6 @@ pxls@^2.0.0: is-buffer "^2.0.3" to-uint8 "^1.4.1" -q@^1.1.2: - version "1.5.1" - resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" - integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= - qs@6.5.2, qs@~6.5.2: version "6.5.2" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" @@ -12607,14 +12191,6 @@ quat-slerp@^1.0.0: dependencies: gl-quat "^1.0.0" -query-string@^4.1.0: - version "4.3.4" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb" - integrity sha1-u7aTucqRXCMlFbIosaArYJBD2+s= - dependencies: - object-assign "^4.1.0" - strict-uri-encode "^1.0.0" - query-string@^6.9.0: version "6.9.0" resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.9.0.tgz#1c3b727c370cf00f177c99f328fda2108f8fa3dd" @@ -13364,22 +12940,6 @@ redeyed@~2.1.0: dependencies: esprima "~4.0.0" -reduce-css-calc@^1.2.6: - version "1.3.0" - resolved "https://registry.yarnpkg.com/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz#747c914e049614a4c9cfbba629871ad1d2927716" - integrity sha1-dHyRTgSWFKTJz7umKYca0dKSdxY= - dependencies: - balanced-match "^0.4.2" - math-expression-evaluator "^1.2.14" - reduce-function-call "^1.0.1" - -reduce-function-call@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/reduce-function-call/-/reduce-function-call-1.0.2.tgz#5a200bf92e0e37751752fe45b0ab330fd4b6be99" - integrity sha1-WiAL+S4ON3UXUv5FsKszD9S2vpk= - dependencies: - balanced-match "^0.4.2" - reduce-simplicial-complex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/reduce-simplicial-complex/-/reduce-simplicial-complex-1.0.0.tgz#74d696a2f835f7a6dcd92065fd8c5181f2edf8bc" @@ -14065,7 +13625,7 @@ sane@^3.0.0: optionalDependencies: fsevents "^1.2.3" -sax@^1.2.4, sax@~1.2.1: +sax@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== @@ -14528,13 +14088,6 @@ sockjs@0.3.20: uuid "^3.4.0" websocket-driver "0.6.5" -sort-keys@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" - integrity sha1-RBttTTRnmPG05J6JIK37oOVD+a0= - dependencies: - is-plain-obj "^1.0.0" - sortablejs@^1.6.1: version "1.10.2" resolved "https://registry.yarnpkg.com/sortablejs/-/sortablejs-1.10.2.tgz#6e40364d913f98b85a14f6678f92b5c1221f5290" @@ -14584,7 +14137,7 @@ source-map-url@^0.4.0: dependencies: amdefine ">=0.0.4" -source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.1, source-map@~0.5.3: +source-map@^0.5.0, source-map@^0.5.6, source-map@~0.5.1, source-map@~0.5.3: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= @@ -14847,11 +14400,6 @@ stream-splicer@^2.0.0: inherits "^2.0.1" readable-stream "^2.0.2" -strict-uri-encode@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" - integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= - strict-uri-encode@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546" @@ -15197,19 +14745,6 @@ svg-path-sdf@^1.1.3: parse-svg-path "^0.1.2" svg-path-bounds "^1.0.1" -svgo@^0.7.0: - version "0.7.2" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-0.7.2.tgz#9f5772413952135c6fefbf40afe6a4faa88b4bb5" - integrity sha1-n1dyQTlSE1xv779Ar+ak+qiLS7U= - dependencies: - coa "~1.0.1" - colors "~1.1.2" - csso "~2.3.1" - js-yaml "~3.7.0" - mkdirp "~0.5.1" - sax "~1.2.1" - whet.extend "~0.9.9" - symbol-observable@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" @@ -15813,11 +15348,6 @@ uniq@^1.0.0, uniq@^1.0.1: resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= -uniqs@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" - integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI= - unique-filename@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" @@ -16149,11 +15679,6 @@ vectorize-text@^3.2.1: surface-nets "^1.0.0" triangulate-polyline "^1.0.0" -vendors@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.2.tgz#7fcb5eef9f5623b156bcea89ec37d63676f21801" - integrity sha512-w/hry/368nO21AN9QljsaIhb9ZiZtZARoVH5f3CsFbawdLdayCgKRPup7CggujvySMxx0I91NOyxdVENohprLQ== - verror@1.10.0: version "1.10.0" resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" @@ -16474,11 +15999,6 @@ whatwg-url@^7.0.0: tr46 "^1.0.1" webidl-conversions "^4.0.2" -whet.extend@~0.9.9: - version "0.9.9" - resolved "https://registry.yarnpkg.com/whet.extend/-/whet.extend-0.9.9.tgz#f877d5bf648c97e5aa542fadc16d6a259b9c11a1" - integrity sha1-+HfVv2SMl+WqVC+twW1qJZucEaE= - which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" From d4c69beef9ab285a12689063e8af014f589a7097 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 23 Jul 2023 18:42:41 +1000 Subject: [PATCH 193/274] Bump path-parse from 1.0.6 to 1.0.7 (#6253) Bumps [path-parse](https://github.com/jbgutierrez/path-parse) from 1.0.6 to 1.0.7. - [Commits](https://github.com/jbgutierrez/path-parse/commits/v1.0.7) --- updated-dependencies: - dependency-name: path-parse dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index d4b8bf8b26..e794cdb875 100644 --- a/yarn.lock +++ b/yarn.lock @@ -11578,9 +11578,9 @@ path-key@^3.0.0, path-key@^3.1.0: integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== path-parse@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" - integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== path-platform@~0.11.15: version "0.11.15" From 416e6cb86494b44e1d547381e4d36e95aeb62b20 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 23 Jul 2023 18:45:05 +1000 Subject: [PATCH 194/274] Bump ssri from 6.0.1 to 6.0.2 (#6247) Bumps [ssri](https://github.com/npm/ssri) from 6.0.1 to 6.0.2. - [Release notes](https://github.com/npm/ssri/releases) - [Changelog](https://github.com/npm/ssri/blob/v6.0.2/CHANGELOG.md) - [Commits](https://github.com/npm/ssri/compare/v6.0.1...v6.0.2) --- updated-dependencies: - dependency-name: ssri dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index e794cdb875..ab7f71001a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -14277,9 +14277,9 @@ sshpk@^1.7.0: tweetnacl "~0.14.0" ssri@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8" - integrity sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA== + version "6.0.2" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.2.tgz#157939134f20464e7301ddba3e90ffa8f7728ac5" + integrity sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q== dependencies: figgy-pudding "^3.5.1" From f1477c825e2e6de663b2cd9eee392c359d7aa832 Mon Sep 17 00:00:00 2001 From: Justin Clift Date: Sun, 23 Jul 2023 19:14:53 +1000 Subject: [PATCH 195/274] Bump webpack-dev-server from 3.11.0 to 4.15.1 (#6254) --- package.json | 2 +- yarn.lock | 1041 ++++++++++++++++++++++++++++++-------------------- 2 files changed, 633 insertions(+), 410 deletions(-) diff --git a/package.json b/package.json index 9be152b868..70b2c8793d 100644 --- a/package.json +++ b/package.json @@ -150,7 +150,7 @@ "webpack-build-notifier": "^0.1.30", "webpack-bundle-analyzer": "^4.9.0", "webpack-cli": "^3.3.12", - "webpack-dev-server": "^3.11.0", + "webpack-dev-server": "^4.15.1", "webpack-manifest-plugin": "^2.0.4" }, "optionalDependencies": { diff --git a/yarn.lock b/yarn.lock index ab7f71001a..30fe25f31a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1414,6 +1414,11 @@ "@types/yargs" "^15.0.0" chalk "^4.0.0" +"@leichtgewicht/ip-codec@^2.0.1": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz#b2ac626d6cb9c8718ab459166d4bb405b8ffa78b" + integrity sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A== + "@mapbox/geojson-area@0.2.2": version "0.2.2" resolved "https://registry.yarnpkg.com/@mapbox/geojson-area/-/geojson-area-0.2.2.tgz#18d7814aa36bf23fbbcc379f8e26a22927debf10" @@ -1781,16 +1786,66 @@ resolved "https://registry.yarnpkg.com/@types/aria-query/-/aria-query-4.2.0.tgz#14264692a9d6e2fa4db3df5e56e94b5e25647ac0" integrity sha512-iIgQNzCm0v7QMhhe4Jjn9uRh+I6GoPmt03CbEtwx3ao8/EfoQcmgtqH4vQ5Db/lxiIGaWDv6nwvunuh0RyX0+A== +"@types/body-parser@*": + version "1.19.2" + resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.2.tgz#aea2059e28b7658639081347ac4fab3de166e6f0" + integrity sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g== + dependencies: + "@types/connect" "*" + "@types/node" "*" + +"@types/bonjour@^3.5.9": + version "3.5.10" + resolved "https://registry.yarnpkg.com/@types/bonjour/-/bonjour-3.5.10.tgz#0f6aadfe00ea414edc86f5d106357cda9701e275" + integrity sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw== + dependencies: + "@types/node" "*" + "@types/classnames@^2.2.10": version "2.2.10" resolved "https://registry.yarnpkg.com/@types/classnames/-/classnames-2.2.10.tgz#cc658ca319b6355399efc1f5b9e818f1a24bf999" integrity sha512-1UzDldn9GfYYEsWWnn/P4wkTlkZDH7lDb0wBMGbtIQc9zXEQq7FlKBdZUn6OBqD8sKZZ2RQO2mAjGpXiDGoRmQ== +"@types/connect-history-api-fallback@^1.3.5": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz#9fd20b3974bdc2bcd4ac6567e2e0f6885cb2cf41" + integrity sha512-4x5FkPpLipqwthjPsF7ZRbOv3uoLUFkTA9G9v583qi4pACvq0uTELrB8OLUzPWUI4IJIyvM85vzkV1nyiI2Lig== + dependencies: + "@types/express-serve-static-core" "*" + "@types/node" "*" + +"@types/connect@*": + version "3.4.35" + resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" + integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ== + dependencies: + "@types/node" "*" + "@types/eslint-visitor-keys@^1.0.0": version "1.0.0" resolved "https://registry.yarnpkg.com/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#1ee30d79544ca84d68d4b3cdb0af4f205663dd2d" integrity sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag== +"@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.33": + version "4.17.35" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.35.tgz#c95dd4424f0d32e525d23812aa8ab8e4d3906c4f" + integrity sha512-wALWQwrgiB2AWTT91CB62b6Yt0sNHpznUXeZEcnPU3DRdlDIz74x8Qg1UUYKSVFi+va5vKOLYRBI1bRKiLLKIg== + dependencies: + "@types/node" "*" + "@types/qs" "*" + "@types/range-parser" "*" + "@types/send" "*" + +"@types/express@*", "@types/express@^4.17.13": + version "4.17.17" + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.17.tgz#01d5437f6ef9cfa8668e616e13c2f2ac9a491ae4" + integrity sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q== + dependencies: + "@types/body-parser" "*" + "@types/express-serve-static-core" "^4.17.33" + "@types/qs" "*" + "@types/serve-static" "*" + "@types/glob@^7.1.1": version "7.1.3" resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.3.tgz#e6ba80f36b7daad2c685acd9266382e68985c183" @@ -1812,6 +1867,18 @@ resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-5.1.2.tgz#693b316ad323ea97eed6b38ed1a3cc02b1672b57" integrity sha512-h4lTMgMJctJybDp8CQrxTUiiYmedihHWkjnF/8Pxseu2S6Nlfcy8kwboQ8yejh456rP2yWoEVm1sS/FVsfM48w== +"@types/http-errors@*": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-2.0.1.tgz#20172f9578b225f6c7da63446f56d4ce108d5a65" + integrity sha512-/K3ds8TRAfBvi5vfjuz8y6+GiAYBZ0x4tXv1Av6CWBWn0IlADc+ZX9pMq7oU0fNQPnBwIZl3rmeLp6SBApbxSQ== + +"@types/http-proxy@^1.17.8": + version "1.17.11" + resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.11.tgz#0ca21949a5588d55ac2b659b69035c84bd5da293" + integrity sha512-HC8G7c1WmaF2ekqpnFq626xd3Zz0uvaqFmBJNRZCGEZCXkvSdJoNFn/8Ygbd9fKNQj8UzLdCETaI0UWPAjK7IA== + dependencies: + "@types/node" "*" + "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": version "2.0.3" resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz#4ba8ddb720221f432e443bd5f9117fd22cfd4762" @@ -1841,6 +1908,11 @@ resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.6.tgz#f4c7ec43e81b319a9815115031709f26987891f0" integrity sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw== +"@types/json-schema@^7.0.9": + version "7.0.12" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.12.tgz#d70faba7039d5fca54c83c7dbab41051d2b6f6cb" + integrity sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA== + "@types/lodash@^4.14.157": version "4.14.157" resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.157.tgz#fdac1c52448861dfde1a2e1515dbc46e54926dc8" @@ -1851,6 +1923,16 @@ resolved "https://registry.yarnpkg.com/@types/mime-types/-/mime-types-2.1.0.tgz#9ca52cda363f699c69466c2a6ccdaad913ea7a73" integrity sha1-nKUs2jY/aZxpRmwqbM2q2RPqenM= +"@types/mime@*": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.1.tgz#5f8f2bca0a5863cb69bc0b0acd88c96cb1d4ae10" + integrity sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA== + +"@types/mime@^1": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a" + integrity sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw== + "@types/minimatch@*": version "3.0.3" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" @@ -1866,6 +1948,16 @@ resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.3.tgz#2ab0d5da2e5815f94b0b9d4b95d1e5f243ab2ca7" integrity sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw== +"@types/qs@*": + version "6.9.7" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" + integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== + +"@types/range-parser@*": + version "1.2.4" + resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" + integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== + "@types/react-dom@^16.9.10": version "16.9.10" resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-16.9.10.tgz#4485b0bec3d41f856181b717f45fd7831101156f" @@ -1881,6 +1973,35 @@ "@types/prop-types" "*" csstype "^3.0.2" +"@types/retry@0.12.0": + version "0.12.0" + resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.0.tgz#2b35eccfcee7d38cd72ad99232fbd58bffb3c84d" + integrity sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA== + +"@types/send@*": + version "0.17.1" + resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.1.tgz#ed4932b8a2a805f1fe362a70f4e62d0ac994e301" + integrity sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q== + dependencies: + "@types/mime" "^1" + "@types/node" "*" + +"@types/serve-index@^1.9.1": + version "1.9.1" + resolved "https://registry.yarnpkg.com/@types/serve-index/-/serve-index-1.9.1.tgz#1b5e85370a192c01ec6cec4735cf2917337a6278" + integrity sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg== + dependencies: + "@types/express" "*" + +"@types/serve-static@*", "@types/serve-static@^1.13.10": + version "1.15.2" + resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.2.tgz#3e5419ecd1e40e7405d34093f10befb43f63381a" + integrity sha512-J2LqtvFYCzaj8pVYKw8klQXrLLk7TBZmQ4ShlcdkELFKGwGMfevMLneMMRkMgZxotOD9wg497LpC7O8PcvAmfw== + dependencies: + "@types/http-errors" "*" + "@types/mime" "*" + "@types/node" "*" + "@types/sinonjs__fake-timers@^6.0.1": version "6.0.2" resolved "https://registry.yarnpkg.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-6.0.2.tgz#3a84cf5ec3249439015e14049bd3161419bf9eae" @@ -1891,6 +2012,13 @@ resolved "https://registry.yarnpkg.com/@types/sizzle/-/sizzle-2.3.2.tgz#a811b8c18e2babab7d542b3365887ae2e4d9de47" integrity sha512-7EJYyKTL7tFR8+gDbB6Wwz/arpGa0Mywk1TJbNzKzHtzbwVmY4HR9WqS5VV7dsBUKQmPNr192jHr/VpBluj/hg== +"@types/sockjs@^0.3.33": + version "0.3.33" + resolved "https://registry.yarnpkg.com/@types/sockjs/-/sockjs-0.3.33.tgz#570d3a0b99ac995360e3136fd6045113b1bd236f" + integrity sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw== + dependencies: + "@types/node" "*" + "@types/source-list-map@*": version "0.1.2" resolved "https://registry.yarnpkg.com/@types/source-list-map/-/source-list-map-0.1.2.tgz#0078836063ffaf17412349bba364087e0ac02ec9" @@ -1934,6 +2062,13 @@ anymatch "^3.0.0" source-map "^0.6.0" +"@types/ws@^8.5.5": + version "8.5.5" + resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.5.tgz#af587964aa06682702ee6dcbc7be41a80e4b28eb" + integrity sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg== + dependencies: + "@types/node" "*" + "@types/yargs-parser@*": version "15.0.0" resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-15.0.0.tgz#cb3f9f741869e20cce330ffbeb9271590483882d" @@ -2184,13 +2319,13 @@ accepts@~1.3.4, accepts@~1.3.5: mime-types "~2.1.18" negotiator "0.6.1" -accepts@~1.3.7: - version "1.3.7" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" - integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== +accepts@~1.3.8: + version "1.3.8" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" + integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== dependencies: - mime-types "~2.1.24" - negotiator "0.6.2" + mime-types "~2.1.34" + negotiator "0.6.3" ace-builds@^1.4.12, ace-builds@^1.4.6: version "1.4.12" @@ -2291,6 +2426,13 @@ ajv-errors@^1.0.0: resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== +ajv-formats@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520" + integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== + dependencies: + ajv "^8.0.0" + ajv-keywords@^3.1.0: version "3.4.0" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.4.0.tgz#4b831e7b531415a7cc518cd404e73f6193c6349d" @@ -2306,6 +2448,13 @@ ajv-keywords@^3.5.2: resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== +ajv-keywords@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz#69d4d385a4733cdbeab44964a1170a88f87f0e16" + integrity sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw== + dependencies: + fast-deep-equal "^3.1.3" + ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.4, ajv@^6.12.5, ajv@^6.5.5: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" @@ -2316,6 +2465,16 @@ ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.4, ajv@^6.12.5, ajv@^6.5.5: json-schema-traverse "^0.4.1" uri-js "^4.2.2" +ajv@^8.0.0, ajv@^8.9.0: + version "8.12.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1" + integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + align-text@^0.1.1, align-text@^0.1.3: version "0.1.4" resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" @@ -2368,7 +2527,12 @@ ansi-escapes@^4.2.1: dependencies: type-fest "^0.8.1" -ansi-html@0.0.7, ansi-html@^0.0.7: +ansi-html-community@^0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz#69fbc4d6ccbe383f9736934ae34c3f8290f1bf41" + integrity sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw== + +ansi-html@^0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" integrity sha1-gTWEAhliqenm/QOflA0S9WynhZ4= @@ -2489,7 +2653,7 @@ anymatch@^2.0.0: micromatch "^3.1.4" normalize-path "^2.1.1" -anymatch@^3.0.0: +anymatch@^3.0.0, anymatch@~3.1.2: version "3.1.3" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== @@ -2592,7 +2756,7 @@ array-flatten@1.1.1: resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= -array-flatten@^2.1.0: +array-flatten@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== @@ -2737,7 +2901,7 @@ async-validator@^3.0.3: resolved "https://registry.yarnpkg.com/async-validator/-/async-validator-3.3.0.tgz#1d92193bbe60d6d6c8b246692c7005e9ed14a8ee" integrity sha512-cAHGD9EL8aCqWXjnb44q94MWiDFzUo1tMhvLb2WzcpWqGiKugsjWG9cvl+jPgkPca7asNbsBU3fa0cwkI/P+Xg== -async@^2.6.1, async@^2.6.2: +async@^2.6.1: version "2.6.4" resolved "https://registry.yarnpkg.com/async/-/async-2.6.4.tgz#706b7ff6084664cd7eae713f6f965433b5504221" integrity sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA== @@ -3143,33 +3307,33 @@ body-parser@1.18.3, body-parser@^1.18.3: raw-body "2.3.3" type-is "~1.6.16" -body-parser@1.19.0: - version "1.19.0" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" - integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== +body-parser@1.20.1: + version "1.20.1" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668" + integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw== dependencies: - bytes "3.1.0" + bytes "3.1.2" content-type "~1.0.4" debug "2.6.9" - depd "~1.1.2" - http-errors "1.7.2" + depd "2.0.0" + destroy "1.2.0" + http-errors "2.0.0" iconv-lite "0.4.24" - on-finished "~2.3.0" - qs "6.7.0" - raw-body "2.4.0" - type-is "~1.6.17" + on-finished "2.4.1" + qs "6.11.0" + raw-body "2.5.1" + type-is "~1.6.18" + unpipe "1.0.0" -bonjour@^3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5" - integrity sha1-jokKGD2O6aI5OzhExpGkK897yfU= +bonjour-service@^1.0.11: + version "1.1.1" + resolved "https://registry.yarnpkg.com/bonjour-service/-/bonjour-service-1.1.1.tgz#960948fa0e0153f5d26743ab15baf8e33752c135" + integrity sha512-Z/5lQRMOG9k7W+FkeGTNjh7htqn/2LMnfOvBZ8pynNZCM9MwkQkI3zeI4oz09uWdcgmgHugVvBqxGg4VQJ5PCg== dependencies: - array-flatten "^2.1.0" - deep-equal "^1.0.1" + array-flatten "^2.1.2" dns-equal "^1.0.0" - dns-txt "^2.0.2" - multicast-dns "^6.0.1" - multicast-dns-service-types "^1.1.0" + fast-deep-equal "^3.1.3" + multicast-dns "^7.2.5" boolbase@^1.0.0, boolbase@~1.0.0: version "1.0.0" @@ -3441,11 +3605,6 @@ buffer-from@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== -buffer-indexof@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" - integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g== - buffer-xor@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" @@ -3478,10 +3637,10 @@ bytes@3.0.0: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= -bytes@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" - integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== +bytes@3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" + integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== cacache@^12.0.2, cacache@^12.0.3: version "12.0.4" @@ -3777,6 +3936,21 @@ chokidar@^3.4.1: optionalDependencies: fsevents "~2.1.2" +chokidar@^3.5.3: + version "3.5.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" + integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.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" + optionalDependencies: + fsevents "~2.3.2" + chownr@^1.1.1, chownr@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" @@ -4111,6 +4285,11 @@ color@3.0.x: color-convert "^1.9.1" color-string "^1.5.2" +colorette@^2.0.10: + version "2.0.20" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" + integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== + colormap@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/colormap/-/colormap-2.3.1.tgz#9f2ab643591c0728d32332d5480b2487a4e0f249" @@ -4290,10 +4469,10 @@ confusing-browser-globals@^1.0.9: resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.9.tgz#72bc13b483c0276801681871d4898516f8f54fdd" integrity sha512-KbS1Y0jMtyPgIxjO7ZzMAuUpAKMt1SzCL9fsrKsX6b0zJPTaT0SiSPmewwVZg9UAO83HVIlEhZF84LIjZ0lmAw== -connect-history-api-fallback@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" - integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== +connect-history-api-fallback@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz#647264845251a0daf25b97ce87834cace0f5f1c8" + integrity sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA== console-browserify@^1.1.0: version "1.1.0" @@ -4332,12 +4511,12 @@ content-disposition@0.5.2: resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4" integrity sha1-DPaLud318r55YcOoUXjLhdunjLQ= -content-disposition@0.5.3: - version "0.5.3" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" - integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== +content-disposition@0.5.4: + version "0.5.4" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" + integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== dependencies: - safe-buffer "5.1.2" + safe-buffer "5.2.1" content-type@~1.0.4: version "1.0.4" @@ -4382,10 +4561,10 @@ cookie@0.3.1: resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" integrity sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s= -cookie@0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" - integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== +cookie@0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" + integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== copy-concurrently@^1.0.0: version "1.0.5" @@ -4522,7 +4701,7 @@ cross-spawn@^6.0.0, cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^7.0.0: +cross-spawn@^7.0.0, cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== @@ -4910,7 +5089,7 @@ debug@=3.1.0: dependencies: ms "2.0.0" -debug@^3.0.0, debug@^3.1.0, debug@^3.1.1, debug@^3.2.5: +debug@^3.0.0, debug@^3.1.0: version "3.2.6" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== @@ -4927,7 +5106,7 @@ decode-uri-component@^0.2.0: resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9" integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ== -deep-equal@^1.0.1, deep-equal@~1.1.1: +deep-equal@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== @@ -4954,13 +5133,12 @@ deepmerge@^4.0.0: resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== -default-gateway@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-4.2.0.tgz#167104c7500c2115f6dd69b0a536bb8ed720552b" - integrity sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA== +default-gateway@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-6.0.3.tgz#819494c888053bdb743edbf343d6cdf7f2943a71" + integrity sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg== dependencies: - execa "^1.0.0" - ip-regex "^2.1.0" + execa "^5.0.0" default-require-extensions@^2.0.0: version "2.0.0" @@ -4976,6 +5154,11 @@ default-require-extensions@^3.0.0: dependencies: strip-bom "^4.0.0" +define-lazy-prop@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" + integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== + define-properties@^1.1.2, define-properties@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" @@ -5010,19 +5193,6 @@ defined@^1.0.0, defined@~1.0.0: resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" integrity sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM= -del@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/del/-/del-4.1.1.tgz#9e8f117222ea44a31ff3a156c049b99052a9f0b4" - integrity sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ== - dependencies: - "@types/glob" "^7.1.1" - globby "^6.1.0" - is-path-cwd "^2.0.0" - is-path-in-cwd "^2.0.0" - p-map "^2.0.0" - pify "^4.0.1" - rimraf "^2.6.3" - delaunay-triangulate@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/delaunay-triangulate/-/delaunay-triangulate-1.1.6.tgz#5bbca21b078198d4bc3c75796a35cbb98c25954c" @@ -5041,6 +5211,11 @@ delegates@^1.0.0: resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= +depd@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + depd@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" @@ -5064,6 +5239,11 @@ des.js@^1.0.0: inherits "^2.0.1" minimalistic-assert "^1.0.0" +destroy@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" + integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== + destroy@~1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" @@ -5146,20 +5326,12 @@ dns-equal@^1.0.0: resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" integrity sha1-s55/HabrCnW6nBcySzR1PEfgZU0= -dns-packet@^1.3.1: - version "1.3.4" - resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.4.tgz#e3455065824a2507ba886c55a89963bb107dec6f" - integrity sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA== - dependencies: - ip "^1.1.0" - safe-buffer "^5.0.1" - -dns-txt@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6" - integrity sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY= +dns-packet@^5.2.2: + version "5.6.0" + resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-5.6.0.tgz#2202c947845c7a63c23ece58f2f70ff6ab4c2f7d" + integrity sha512-rza3UH1LwdHh9qyPXp8lkwpjSNk/AMD3dPytUoRoqnypDUhY0xvbdmVhWOfxO68frEfV9BU8V12Ez7ZsHGZpCQ== dependencies: - buffer-indexof "^1.0.0" + "@leichtgewicht/ip-codec" "^2.0.1" doctrine@1.5.0: version "1.5.0" @@ -6063,11 +6235,6 @@ events@^3.0.0: resolved "https://registry.yarnpkg.com/events/-/events-3.2.0.tgz#93b87c18f8efcd4202a461aec4dfc0556b639379" integrity sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg== -eventsource@^1.0.7: - version "1.1.2" - resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-1.1.2.tgz#bc75ae1c60209e7cb1541231980460343eaea7c2" - integrity sha512-xAH3zWhgO2/3KIniEKYPr8plNSzlGINOUqYj0m0u7AB81iRw8b/3E73W6AuU+6klLbaSFmZnaETQ2lXPfAydrA== - evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" @@ -6126,6 +6293,21 @@ execa@^4.0.2: signal-exit "^3.0.2" strip-final-newline "^2.0.0" +execa@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== + dependencies: + 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" + executable@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/executable/-/executable-4.1.1.tgz#41532bff361d3e57af4d763b70582db18f5d133c" @@ -6210,38 +6392,39 @@ express@^4.16.3: utils-merge "1.0.1" vary "~1.1.2" -express@^4.17.1: - version "4.17.1" - resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" - integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== +express@^4.17.3: + version "4.18.2" + resolved "https://registry.yarnpkg.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59" + integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ== dependencies: - accepts "~1.3.7" + accepts "~1.3.8" array-flatten "1.1.1" - body-parser "1.19.0" - content-disposition "0.5.3" + body-parser "1.20.1" + content-disposition "0.5.4" content-type "~1.0.4" - cookie "0.4.0" + cookie "0.5.0" cookie-signature "1.0.6" debug "2.6.9" - depd "~1.1.2" + depd "2.0.0" encodeurl "~1.0.2" escape-html "~1.0.3" etag "~1.8.1" - finalhandler "~1.1.2" + finalhandler "1.2.0" fresh "0.5.2" + http-errors "2.0.0" merge-descriptors "1.0.1" methods "~1.1.2" - on-finished "~2.3.0" + on-finished "2.4.1" parseurl "~1.3.3" path-to-regexp "0.1.7" - proxy-addr "~2.0.5" - qs "6.7.0" + proxy-addr "~2.0.7" + qs "6.11.0" range-parser "~1.2.1" - safe-buffer "5.1.2" - send "0.17.1" - serve-static "1.14.1" - setprototypeof "1.1.1" - statuses "~1.5.0" + safe-buffer "5.2.1" + send "0.18.0" + serve-static "1.15.0" + setprototypeof "1.2.0" + statuses "2.0.1" type-is "~1.6.18" utils-merge "1.0.1" vary "~1.1.2" @@ -6331,7 +6514,7 @@ falafel@^2.1.0: isarray "^2.0.1" object-keys "^1.0.6" -fast-deep-equal@^3.1.1: +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== @@ -6382,17 +6565,10 @@ fastq@^1.6.0: dependencies: reusify "^1.0.4" -faye-websocket@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" - integrity sha1-TkkvjQTftviQA1B/btvy1QHnxvQ= - dependencies: - websocket-driver ">=0.5.1" - -faye-websocket@~0.11.1: - version "0.11.3" - resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.3.tgz#5c0e9a8968e8912c286639fde977a8b209f2508e" - integrity sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA== +faye-websocket@^0.11.3: + version "0.11.4" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da" + integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== dependencies: websocket-driver ">=0.5.1" @@ -6503,17 +6679,17 @@ finalhandler@1.1.1: statuses "~1.4.0" unpipe "~1.0.0" -finalhandler@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" - integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== +finalhandler@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" + integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== dependencies: debug "2.6.9" encodeurl "~1.0.2" escape-html "~1.0.3" - on-finished "~2.3.0" + on-finished "2.4.1" parseurl "~1.3.3" - statuses "~1.5.0" + statuses "2.0.1" unpipe "~1.0.0" find-cache-dir@^0.1.1: @@ -6727,6 +6903,11 @@ form-data@~2.3.2: combined-stream "^1.0.6" mime-types "^2.1.12" +forwarded@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" + integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== + forwarded@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" @@ -6802,6 +6983,11 @@ fs-minipass@^1.2.7: dependencies: minipass "^2.6.0" +fs-monkey@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.4.tgz#ee8c1b53d3fe8bb7e5d2c5c5dfc0168afdd2f747" + integrity sha512-INM/fWAxMICjttnD0DX1rBvinKskj5G1w+oy/pnm9u/tSlnBrzFonJMcalKJ30P8RRsPzKcCG7Q8l0jx5Fh9YQ== + fs-readdir-recursive@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27" @@ -6830,7 +7016,7 @@ fsevents@^1.2.3, fsevents@^1.2.7: nan "^2.12.1" node-pre-gyp "^0.12.0" -fsevents@^2.3.2: +fsevents@^2.3.2, fsevents@~2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== @@ -6946,6 +7132,11 @@ get-stream@^5.0.0: dependencies: pump "^3.0.0" +get-stream@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" @@ -7374,6 +7565,13 @@ glob-parent@^5.1.0, glob-parent@~5.1.0: dependencies: is-glob "^4.0.1" +glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + glob@^7.0.0, glob@^7.0.3, glob@^7.1.0, glob@^7.1.1: version "7.1.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" @@ -7508,17 +7706,6 @@ globby@^11.0.1: merge2 "^1.3.0" slash "^3.0.0" -globby@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" - integrity sha1-9abXDoOV4hyFj7BInWTfAkJNUGw= - dependencies: - array-union "^1.0.1" - glob "^7.0.3" - object-assign "^4.0.1" - pify "^2.0.0" - pinkie-promise "^2.0.0" - globby@^7.1.1: version "7.1.1" resolved "https://registry.yarnpkg.com/globby/-/globby-7.1.1.tgz#fb2ccff9401f8600945dfada97440cca972b8680" @@ -7688,7 +7875,7 @@ glslify@^7.0.0: through2 "^2.0.1" xtend "^4.0.0" -graceful-fs@^4.1.11, graceful-fs@^4.1.2: +graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.2.6: version "4.2.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== @@ -7959,10 +8146,10 @@ html-entities@^1.2.1: resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f" integrity sha1-DfKTUfByEWNRXfueVUPl9u7VFi8= -html-entities@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.3.1.tgz#fb9a1a4b5b14c5daba82d3e34c6ae4fe701a0e44" - integrity sha512-rhE/4Z3hIhzHAUKbW8jVcCyuT5oJCXXqhN/6mXXVCpzTmvJnoH2HL/bt3EZ6p55jbFJBeAe1ZNpL5BugLujxNA== +html-entities@^2.3.2: + version "2.4.0" + resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.4.0.tgz#edd0cee70402584c8c76cc2c0556db09d1f45061" + integrity sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ== html-escaper@^2.0.0: version "2.0.2" @@ -8039,28 +8226,34 @@ http-errors@1.6.3, http-errors@~1.6.2, http-errors@~1.6.3: setprototypeof "1.1.0" statuses ">= 1.4.0 < 2" -http-errors@1.7.2, http-errors@~1.7.2: - version "1.7.2" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" - integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== +http-errors@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" + integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.1" - statuses ">= 1.5.0 < 2" - toidentifier "1.0.0" + depd "2.0.0" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses "2.0.1" + toidentifier "1.0.1" -http-proxy-middleware@0.19.1: - version "0.19.1" - resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz#183c7dc4aa1479150306498c210cdaf96080a43a" - integrity sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q== +http-parser-js@>=0.5.1: + version "0.5.8" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.8.tgz#af23090d9ac4e24573de6f6aecc9d84a48bf20e3" + integrity sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q== + +http-proxy-middleware@^2.0.3: + version "2.0.6" + resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz#e1a4dd6979572c7ab5a4e4b55095d1f32a74963f" + integrity sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw== dependencies: - http-proxy "^1.17.0" - is-glob "^4.0.0" - lodash "^4.17.11" - micromatch "^3.1.10" + "@types/http-proxy" "^1.17.8" + http-proxy "^1.18.1" + is-glob "^4.0.1" + is-plain-obj "^3.0.0" + micromatch "^4.0.2" -http-proxy@^1.17.0: +http-proxy@^1.18.1: version "1.18.1" resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== @@ -8096,6 +8289,11 @@ human-signals@^1.1.1: resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== + hyperlinker@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/hyperlinker/-/hyperlinker-1.0.0.tgz#23dc9e38a206b208ee49bc2d6c8ef47027df0c0e" @@ -8254,7 +8452,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3, inherits@~2.0.4: +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3, inherits@~2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -8321,14 +8519,6 @@ insert-module-globals@^7.0.0: undeclared-identifiers "^1.1.2" xtend "^4.0.0" -internal-ip@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-4.3.0.tgz#845452baad9d2ca3b69c635a137acb9a0dad0907" - integrity sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg== - dependencies: - default-gateway "^4.2.0" - ipaddr.js "^1.9.0" - interpret@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" @@ -8363,30 +8553,20 @@ iota-array@^1.0.0: resolved "https://registry.yarnpkg.com/iota-array/-/iota-array-1.0.0.tgz#81ef57fe5d05814cd58c2483632a99c30a0e8087" integrity sha1-ge9X/l0FgUzVjCSDYyqZwwoOgIc= -ip-regex@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" - integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= - -ip@^1.1.0, ip@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" - integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= - ipaddr.js@1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.8.0.tgz#eaa33d6ddd7ace8f7f6fe0c9ca0440e706738b1e" integrity sha1-6qM9bd16zo9/b+DJygRA5wZzix4= -ipaddr.js@1.9.1, ipaddr.js@^1.9.0: +ipaddr.js@1.9.1: version "1.9.1" resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== -is-absolute-url@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698" - integrity sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q== +ipaddr.js@^2.0.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.1.0.tgz#2119bc447ff8c257753b196fc5f1ce08a4cdf39f" + integrity sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ== is-accessor-descriptor@^0.1.6: version "0.1.6" @@ -8530,6 +8710,11 @@ is-docker@^2.0.0: resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.1.1.tgz#4125a88e44e450d384e09047ede71adc2d144156" integrity sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw== +is-docker@^2.1.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" + integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== + is-extendable@^0.1.0, is-extendable@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" @@ -8657,25 +8842,6 @@ is-observable@^1.1.0: dependencies: symbol-observable "^1.1.0" -is-path-cwd@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" - integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== - -is-path-in-cwd@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz#bfe2dca26c69f397265a4009963602935a053acb" - integrity sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ== - dependencies: - is-path-inside "^2.1.0" - -is-path-inside@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-2.1.0.tgz#7c9810587d659a40d27bcdb4d5616eab059494b2" - integrity sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg== - dependencies: - path-is-inside "^1.0.2" - is-path-inside@^3.0.1: version "3.0.2" resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.2.tgz#f5220fc82a3e233757291dddc9c5877f2a1f3017" @@ -8686,6 +8852,11 @@ is-plain-obj@^1.1.0: resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= +is-plain-obj@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz#af6f2ea14ac5a646183a5bbdb5baabbc156ad9d7" + integrity sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA== + is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" @@ -8777,7 +8948,7 @@ is-wsl@^1.1.0: resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= -is-wsl@^2.1.1: +is-wsl@^2.1.1, is-wsl@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== @@ -9393,6 +9564,11 @@ json-schema-traverse@^0.4.1: resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + json-schema@0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" @@ -9422,11 +9598,6 @@ json2mq@^0.2.0: dependencies: string-convert "^0.2.0" -json3@^3.3.2: - version "3.3.3" - resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81" - integrity sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA== - json5@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" @@ -9503,11 +9674,6 @@ kdbush@^3.0.0: resolved "https://registry.yarnpkg.com/kdbush/-/kdbush-3.0.0.tgz#f8484794d47004cc2d85ed3a79353dbe0abc2bf0" integrity sha512-hRkd6/XW4HTsA9vjVpY9tuXJYLSlelnkTmVFu4M9/7MIYQtFcHpbugAU7UbOfjOiVSVYl2fqgBuJ32JUmRo5Ew== -killable@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892" - integrity sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg== - kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: version "3.2.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" @@ -9562,6 +9728,14 @@ language-tags@^1.0.5: dependencies: language-subtag-registry "~0.3.2" +launch-editor@^2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/launch-editor/-/launch-editor-2.6.0.tgz#4c0c1a6ac126c572bd9ff9a30da1d2cae66defd7" + integrity sha512-JpDCcQnyAAzZZaZ7vEiSqL690w7dAEyLao+KC96zBplnYbJS7TYNjvM3M7y3dGz+v7aIsJk3hllWuc0kWAjyRQ== + dependencies: + picocolors "^1.0.0" + shell-quote "^1.7.3" + lazy-ass@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/lazy-ass/-/lazy-ass-1.6.0.tgz#7999655e8646c17f089fdd187d150d3324d54513" @@ -9889,11 +10063,6 @@ logform@^2.2.0: ms "^2.1.1" triple-beam "^1.3.0" -loglevel@^1.6.8: - version "1.7.1" - resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.7.1.tgz#005fde2f5e6e47068f935ff28573e125ef72f197" - integrity sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw== - longest@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" @@ -10113,6 +10282,13 @@ mem@^4.0.0: mimic-fn "^1.0.0" p-is-promise "^2.0.0" +memfs@^3.4.3: + version "3.6.0" + resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.6.0.tgz#d7a2110f86f79dd950a8b6df6d57bc984aa185f6" + integrity sha512-EGowvkkgbMcIChjMTMkESFDbZeSh8xZ7kNSF0hAiAN4Jh6jgHCRS0Ga/+C8y6Au+oqpezRHCfPsmJ2+DwAgiwQ== + dependencies: + fs-monkey "^1.0.4" + memory-fs@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" @@ -10206,6 +10382,11 @@ mime-db@1.44.0: resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92" integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg== +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + "mime-db@>= 1.43.0 < 2": version "1.45.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.45.0.tgz#cceeda21ccd7c3a745eba2decd55d4b73e7879ea" @@ -10230,6 +10411,13 @@ mime-types@^2.1.25, mime-types@~2.1.24: dependencies: mime-db "1.44.0" +mime-types@^2.1.31, mime-types@~2.1.34: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + mime@1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6" @@ -10240,7 +10428,7 @@ mime@1.6.0, mime@^1.4.1: resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== -mime@^2.0.3, mime@^2.4.4: +mime@^2.0.3: version "2.4.6" resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.6.tgz#e5b407c90db442f2beb5b162373d07b69affa4d1" integrity sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA== @@ -10465,27 +10653,27 @@ ms@2.0.0: resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= -ms@2.1.1, ms@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" - integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== - ms@2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -multicast-dns-service-types@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901" - integrity sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE= +ms@2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== -multicast-dns@^6.0.1: - version "6.2.3" - resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.3.tgz#a0ec7bd9055c4282f790c3c82f4e28db3b31b229" - integrity sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g== +ms@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" + integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== + +multicast-dns@^7.2.5: + version "7.2.5" + resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-7.2.5.tgz#77eb46057f4d7adbd16d9290fa7299f6fa64cced" + integrity sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg== dependencies: - dns-packet "^1.3.1" + dns-packet "^5.2.2" thunky "^1.0.2" mumath@^3.3.4: @@ -10651,10 +10839,10 @@ negotiator@0.6.1: resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" integrity sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk= -negotiator@0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" - integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== +negotiator@0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== neo-async@^2.5.0, neo-async@^2.6.0, neo-async@^2.6.1: version "2.6.2" @@ -10686,10 +10874,10 @@ no-case@^3.0.4: lower-case "^2.0.2" tslib "^2.0.3" -node-forge@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3" - integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA== +node-forge@^1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3" + integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== node-int64@^0.4.0: version "0.4.0" @@ -10880,7 +11068,7 @@ npm-run-path@^2.0.0: dependencies: path-key "^2.0.0" -npm-run-path@^4.0.0: +npm-run-path@^4.0.0, npm-run-path@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== @@ -10981,7 +11169,7 @@ oauth-sign@~0.9.0: resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== -object-assign@^4, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: +object-assign@^4, object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= @@ -11132,6 +11320,13 @@ omit.js@^2.0.0, omit.js@^2.0.2: resolved "https://registry.yarnpkg.com/omit.js/-/omit.js-2.0.2.tgz#dd9b8436fab947a5f3ff214cb2538631e313ec2f" integrity sha512-hJmu9D+bNB40YpL9jYebQl4lsTW6yEHRTroJzNLqQJYHm7c+NQnJGfZmIWh8S3q3KoaxV1aLhV6B3+0N0/kyJg== +on-finished@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" + integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== + dependencies: + ee-first "1.1.1" + on-finished@~2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" @@ -11177,25 +11372,27 @@ onetime@^2.0.0: dependencies: mimic-fn "^1.0.0" -onetime@^5.1.0: +onetime@^5.1.0, onetime@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== dependencies: mimic-fn "^2.1.0" +open@^8.0.9: + version "8.4.2" + resolved "https://registry.yarnpkg.com/open/-/open-8.4.2.tgz#5b5ffe2a8f793dcd2aad73e550cb87b59cb084f9" + integrity sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ== + dependencies: + define-lazy-prop "^2.0.0" + is-docker "^2.1.1" + is-wsl "^2.2.0" + opener@^1.5.2: version "1.5.2" resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598" integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A== -opn@^5.5.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc" - integrity sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA== - dependencies: - is-wsl "^1.1.0" - optionator@^0.8.1: version "0.8.2" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" @@ -11358,12 +11555,13 @@ p-reduce@^1.0.0: resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-1.0.0.tgz#18c2b0dd936a4690a529f8231f58a0fdb6a47dfa" integrity sha1-GMKw3ZNqRpClKfgjH1ig/bakffo= -p-retry@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-3.0.1.tgz#316b4c8893e2c8dc1cfa891f406c4b422bebf328" - integrity sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w== +p-retry@^4.5.0: + version "4.6.2" + resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-4.6.2.tgz#9baae7184057edd4e17231cee04264106e092a16" + integrity sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ== dependencies: - retry "^0.12.0" + "@types/retry" "0.12.0" + retry "^0.13.1" p-try@^1.0.0: version "1.0.0" @@ -11562,11 +11760,6 @@ path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== -path-is-inside@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" - integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= - path-key@^2.0.0, path-key@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" @@ -11680,6 +11873,11 @@ pick-by-alias@^1.2.0: resolved "https://registry.yarnpkg.com/pick-by-alias/-/pick-by-alias-1.2.0.tgz#5f7cb2b1f21a6e1e884a0c87855aa4a37361107b" integrity sha1-X3yysfIabh6ISgyHhVqko3NhEHs= +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1: version "2.2.2" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" @@ -11887,15 +12085,6 @@ polytope-closest-point@^1.0.0: dependencies: numeric "^1.2.6" -portfinder@^1.0.26: - version "1.0.28" - resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.28.tgz#67c4622852bd5374dd1dd900f779f53462fac778" - integrity sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA== - dependencies: - async "^2.6.2" - debug "^3.1.1" - mkdirp "^0.5.5" - posix-character-classes@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" @@ -12066,12 +12255,12 @@ proxy-addr@~2.0.4: forwarded "~0.1.2" ipaddr.js "1.8.0" -proxy-addr@~2.0.5: - version "2.0.6" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf" - integrity sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw== +proxy-addr@~2.0.7: + version "2.0.7" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" + integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== dependencies: - forwarded "~0.1.2" + forwarded "0.2.0" ipaddr.js "1.9.1" proxy-from-env@^1.0.0: @@ -12169,16 +12358,18 @@ pxls@^2.0.0: is-buffer "^2.0.3" to-uint8 "^1.4.1" +qs@6.11.0: + version "6.11.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" + integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== + dependencies: + side-channel "^1.0.4" + qs@6.5.2, qs@~6.5.2: version "6.5.2" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== -qs@6.7.0: - version "6.7.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" - integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== - quantize@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/quantize/-/quantize-1.0.2.tgz#d25ac200a77b6d70f40127ca171a10e33c8546de" @@ -12210,11 +12401,6 @@ querystring@0.2.0, querystring@^0.2.0: resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= -querystringify@^2.1.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" - integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== - queue@6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/queue/-/queue-6.0.1.tgz#abd5a5b0376912f070a25729e0b6a7d565683791" @@ -12302,13 +12488,13 @@ raw-body@2.3.3: iconv-lite "0.4.23" unpipe "1.0.0" -raw-body@2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" - integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== +raw-body@2.5.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" + integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== dependencies: - bytes "3.1.0" - http-errors "1.7.2" + bytes "3.1.2" + http-errors "2.0.0" iconv-lite "0.4.24" unpipe "1.0.0" @@ -12919,6 +13105,13 @@ readdirp@~3.5.0: dependencies: picomatch "^2.2.1" +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + realpath-native@^1.0.0, realpath-native@^1.0.2: version "1.1.0" resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.1.0.tgz#2003294fea23fb0672f2476ebe22fcf498a2d65c" @@ -13257,6 +13450,11 @@ require-directory@^2.1.1: resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + require-main-filename@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" @@ -13403,10 +13601,10 @@ retry-axios@^1.0.1: resolved "https://registry.yarnpkg.com/retry-axios/-/retry-axios-1.0.2.tgz#f1b5895ad0ef69656036c48fd7952f72340ed772" integrity sha512-PeR6ZVYscfOHrbN3A6EiP8M6UlseHpDkwVDsT6YMcZH0qyMubuFIq6gwydn+ZkvBzry3xmAZwZ3pW1zmJbvLOA== -retry@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" - integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= +retry@^0.13.1: + version "0.13.1" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" + integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== reusify@^1.0.4: version "1.0.4" @@ -13439,7 +13637,7 @@ rimraf@^2.5.4, rimraf@^2.6.2: dependencies: glob "^7.1.3" -rimraf@^3.0.0: +rimraf@^3.0.0, rimraf@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== @@ -13586,7 +13784,7 @@ safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.1, safe-buffer@~5.2.0: +safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.1, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -13681,6 +13879,16 @@ schema-utils@^3.0.0: ajv "^6.12.5" ajv-keywords "^3.5.2" +schema-utils@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.2.0.tgz#70d7c93e153a273a805801882ebd3bff20d89c8b" + integrity sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw== + dependencies: + "@types/json-schema" "^7.0.9" + ajv "^8.9.0" + ajv-formats "^2.1.1" + ajv-keywords "^5.1.0" + scroll-into-view-if-needed@^2.2.25: version "2.2.25" resolved "https://registry.yarnpkg.com/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.25.tgz#117b7bc7c61bc7a2b7872a0984bc73a19bc6e961" @@ -13693,12 +13901,12 @@ select-hose@^2.0.0: resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= -selfsigned@^1.10.7: - version "1.10.8" - resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.8.tgz#0d17208b7d12c33f8eac85c41835f27fc3d81a30" - integrity sha512-2P4PtieJeEwVgTU9QEcwIRDQ/mXJLX8/+I3ur+Pg16nS8oNbrGxEso9NyYWy8NAmXiNl4dlAp5MwoNeCWzON4w== +selfsigned@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-2.1.1.tgz#18a7613d714c0cd3385c48af0075abf3f266af61" + integrity sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ== dependencies: - node-forge "^0.10.0" + node-forge "^1" "semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: version "5.7.2" @@ -13741,24 +13949,24 @@ send@0.16.2: range-parser "~1.2.0" statuses "~1.4.0" -send@0.17.1: - version "0.17.1" - resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" - integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== +send@0.18.0: + version "0.18.0" + resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" + integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== dependencies: debug "2.6.9" - depd "~1.1.2" - destroy "~1.0.4" + depd "2.0.0" + destroy "1.2.0" encodeurl "~1.0.2" escape-html "~1.0.3" etag "~1.8.1" fresh "0.5.2" - http-errors "~1.7.2" + http-errors "2.0.0" mime "1.6.0" - ms "2.1.1" - on-finished "~2.3.0" + ms "2.1.3" + on-finished "2.4.1" range-parser "~1.2.1" - statuses "~1.5.0" + statuses "2.0.1" serialize-javascript@^4.0.0: version "4.0.0" @@ -13790,15 +13998,15 @@ serve-static@1.13.2: parseurl "~1.3.2" send "0.16.2" -serve-static@1.14.1: - version "1.14.1" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" - integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== +serve-static@1.15.0: + version "1.15.0" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" + integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== dependencies: encodeurl "~1.0.2" escape-html "~1.0.3" parseurl "~1.3.3" - send "0.17.1" + send "0.18.0" set-blocking@^2.0.0, set-blocking@~2.0.0: version "2.0.0" @@ -13835,10 +14043,10 @@ setprototypeof@1.1.0: resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== -setprototypeof@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" - integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== +setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== sha.js@^2.4.0, sha.js@^2.4.8, sha.js@~2.4.4: version "2.4.11" @@ -13911,16 +14119,35 @@ shell-quote@^1.4.2, shell-quote@^1.6.1: resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.3.tgz#aa40edac170445b9a431e17bb62c0b881b9c4123" integrity sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw== +shell-quote@^1.7.3: + version "1.8.1" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.1.tgz#6dbf4db75515ad5bac63b4f1894c3a154c766680" + integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA== + shellwords@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww== +side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + dependencies: + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" + signal-exit@^3.0.0, signal-exit@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= +signal-exit@^3.0.3: + version "3.0.7" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + signum@^0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/signum/-/signum-0.0.0.tgz#ab551b1003351070a704783f1a09c5e7691f9cf6" @@ -14067,26 +14294,14 @@ snapdragon@^0.8.1: source-map-resolve "^0.5.0" use "^3.1.0" -sockjs-client@1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.4.0.tgz#c9f2568e19c8fd8173b4997ea3420e0bb306c7d5" - integrity sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g== - dependencies: - debug "^3.2.5" - eventsource "^1.0.7" - faye-websocket "~0.11.1" - inherits "^2.0.3" - json3 "^3.3.2" - url-parse "^1.4.3" - -sockjs@0.3.20: - version "0.3.20" - resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.20.tgz#b26a283ec562ef8b2687b44033a4eeceac75d855" - integrity sha512-SpmVOVpdq0DJc0qArhF3E5xsxvaiqGNb73XfgBpK1y3UD5gs8DSo8aCTsuT5pX8rssdc2NDIzANwP9eCAiSdTA== +sockjs@^0.3.24: + version "0.3.24" + resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.24.tgz#c9bc8995f33a111bea0395ec30aa3206bdb5ccce" + integrity sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ== dependencies: - faye-websocket "^0.10.0" - uuid "^3.4.0" - websocket-driver "0.6.5" + faye-websocket "^0.11.3" + uuid "^8.3.2" + websocket-driver "^0.7.4" sortablejs@^1.6.1: version "1.10.2" @@ -14337,16 +14552,16 @@ static-module@^1.0.0: static-eval "~0.2.0" through2 "~0.4.1" +statuses@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== + "statuses@>= 1.4.0 < 2", statuses@~1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087" integrity sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew== -"statuses@>= 1.5.0 < 2", statuses@~1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" - integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= - stealthy-require@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" @@ -15052,10 +15267,10 @@ toggle-selection@^1.0.6: resolved "https://registry.yarnpkg.com/toggle-selection/-/toggle-selection-1.0.6.tgz#6e45b1263f2017fa0acc7d89d78b15b8bf77da32" integrity sha1-bkWxJj8gF/oKzH2J14sVuL932jI= -toidentifier@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" - integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== +toidentifier@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== topojson-client@^2.1.0: version "2.1.0" @@ -15213,7 +15428,7 @@ type-is@~1.6.16: media-typer "0.3.0" mime-types "~2.1.18" -type-is@~1.6.17, type-is@~1.6.18: +type-is@~1.6.18: version "1.6.18" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== @@ -15438,14 +15653,6 @@ url-loader@^1.1.2: mime "^2.0.3" schema-utils "^1.0.0" -url-parse@^1.4.3: - version "1.5.10" - resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" - integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== - dependencies: - querystringify "^2.1.1" - requires-port "^1.0.0" - url@^0.11.0, url@~0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" @@ -15562,11 +15769,16 @@ uuid@^3.3.2: resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== -uuid@^3.3.3, uuid@^3.4.0: +uuid@^3.3.3: version "3.4.0" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== +uuid@^8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + v8-compile-cache@^2.0.3: version "2.1.0" resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e" @@ -15840,55 +16052,52 @@ webpack-cli@^3.3.12: v8-compile-cache "^2.1.1" yargs "^13.3.2" -webpack-dev-middleware@^3.7.2: - version "3.7.2" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz#0019c3db716e3fa5cecbf64f2ab88a74bab331f3" - integrity sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw== +webpack-dev-middleware@^5.3.1: + version "5.3.3" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz#efae67c2793908e7311f1d9b06f2a08dcc97e51f" + integrity sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA== dependencies: - memory-fs "^0.4.1" - mime "^2.4.4" - mkdirp "^0.5.1" + colorette "^2.0.10" + memfs "^3.4.3" + mime-types "^2.1.31" range-parser "^1.2.1" - webpack-log "^2.0.0" - -webpack-dev-server@^3.11.0: - version "3.11.0" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.11.0.tgz#8f154a3bce1bcfd1cc618ef4e703278855e7ff8c" - integrity sha512-PUxZ+oSTxogFQgkTtFndEtJIPNmml7ExwufBZ9L2/Xyyd5PnOL5UreWe5ZT7IU25DSdykL9p1MLQzmLh2ljSeg== - dependencies: - ansi-html "0.0.7" - bonjour "^3.5.0" - chokidar "^2.1.8" + schema-utils "^4.0.0" + +webpack-dev-server@^4.15.1: + version "4.15.1" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.15.1.tgz#8944b29c12760b3a45bdaa70799b17cb91b03df7" + integrity sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA== + dependencies: + "@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/serve-static" "^1.13.10" + "@types/sockjs" "^0.3.33" + "@types/ws" "^8.5.5" + ansi-html-community "^0.0.8" + bonjour-service "^1.0.11" + chokidar "^3.5.3" + colorette "^2.0.10" compression "^1.7.4" - connect-history-api-fallback "^1.6.0" - debug "^4.1.1" - del "^4.1.1" - express "^4.17.1" - html-entities "^1.3.1" - http-proxy-middleware "0.19.1" - import-local "^2.0.0" - internal-ip "^4.3.0" - ip "^1.1.5" - is-absolute-url "^3.0.3" - killable "^1.0.1" - loglevel "^1.6.8" - opn "^5.5.0" - p-retry "^3.0.1" - portfinder "^1.0.26" - schema-utils "^1.0.0" - selfsigned "^1.10.7" - semver "^6.3.0" + connect-history-api-fallback "^2.0.0" + default-gateway "^6.0.3" + express "^4.17.3" + graceful-fs "^4.2.6" + html-entities "^2.3.2" + http-proxy-middleware "^2.0.3" + ipaddr.js "^2.0.1" + launch-editor "^2.6.0" + open "^8.0.9" + p-retry "^4.5.0" + rimraf "^3.0.2" + schema-utils "^4.0.0" + selfsigned "^2.1.1" serve-index "^1.9.1" - sockjs "0.3.20" - sockjs-client "1.4.0" + sockjs "^0.3.24" spdy "^4.0.2" - strip-ansi "^3.0.1" - supports-color "^6.1.0" - url "^0.11.0" - webpack-dev-middleware "^3.7.2" - webpack-log "^2.0.0" - ws "^6.2.1" - yargs "^13.3.2" + webpack-dev-middleware "^5.3.1" + ws "^8.13.0" webpack-log@^2.0.0: version "2.0.0" @@ -15952,13 +16161,22 @@ webpack@^4.46.0: watchpack "^1.7.4" webpack-sources "^1.4.1" -websocket-driver@0.6.5, websocket-driver@>=0.5.1: +websocket-driver@>=0.5.1: version "0.6.5" resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.6.5.tgz#5cb2556ceb85f4373c6d8238aa691c8454e13a36" integrity sha1-XLJVbOuF9Dc8bYI4qmkchFThOjY= dependencies: websocket-extensions ">=0.1.1" +websocket-driver@^0.7.4: + version "0.7.4" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" + integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== + dependencies: + http-parser-js ">=0.5.1" + safe-buffer ">=5.1.0" + websocket-extensions ">=0.1.1" + websocket-extensions@>=0.1.1: version "0.1.4" resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" @@ -16186,7 +16404,7 @@ ws@^5.2.0: dependencies: async-limiter "~1.0.0" -ws@^6.1.0, ws@^6.2.1: +ws@^6.1.0: version "6.2.1" resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb" integrity sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA== @@ -16198,6 +16416,11 @@ ws@^7.3.1: resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== +ws@^8.13.0: + version "8.13.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.13.0.tgz#9a9fb92f93cf41512a0735c8f4dd09b8a1211cd0" + integrity sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA== + xml-name-validator@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" From 3bddbcb0251f8e0b29ad6b083d08f254c93ea9bb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 23 Jul 2023 19:24:05 +1000 Subject: [PATCH 196/274] Bump hosted-git-info from 2.7.1 to 2.8.9 (#6255) Bumps [hosted-git-info](https://github.com/npm/hosted-git-info) from 2.7.1 to 2.8.9. - [Release notes](https://github.com/npm/hosted-git-info/releases) - [Changelog](https://github.com/npm/hosted-git-info/blob/v2.8.9/CHANGELOG.md) - [Commits](https://github.com/npm/hosted-git-info/compare/v2.7.1...v2.8.9) --- updated-dependencies: - dependency-name: hosted-git-info dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 30fe25f31a..49712179ea 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8108,9 +8108,9 @@ homedir-polyfill@^1.0.1: parse-passwd "^1.0.0" hosted-git-info@^2.1.4: - version "2.7.1" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047" - integrity sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w== + version "2.8.9" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" + integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== hpack.js@^2.1.6: version "2.1.6" From 37fd7f74dd1136a6bf660fca5dfea057d9fabcac Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 23 Jul 2023 19:26:12 +1000 Subject: [PATCH 197/274] Bump dompurify from 2.0.7 to 2.0.17 (#6256) Bumps [dompurify](https://github.com/cure53/DOMPurify) from 2.0.7 to 2.0.17. - [Release notes](https://github.com/cure53/DOMPurify/releases) - [Commits](https://github.com/cure53/DOMPurify/compare/2.0.7...2.0.17) --- updated-dependencies: - dependency-name: dompurify dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 70b2c8793d..c6a8135269 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,7 @@ "classnames": "^2.2.6", "d3": "^3.5.17", "debug": "^3.1.0", - "dompurify": "^2.0.7", + "dompurify": "^2.0.17", "font-awesome": "^4.7.0", "history": "^4.10.1", "hoist-non-react-statics": "^3.3.0", diff --git a/yarn.lock b/yarn.lock index 49712179ea..e6832150c1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5433,10 +5433,10 @@ domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.1: dependencies: domelementtype "^2.2.0" -dompurify@^2.0.7: - version "2.0.7" - resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-2.0.7.tgz#f8266ad38fe1602fb5b3222f31eedbf5c16c4fd5" - integrity sha512-S3O0lk6rFJtO01ZTzMollCOGg+WAtCwS3U5E2WSDY/x/sy7q70RjEC4Dmrih5/UqzLLB9XoKJ8KqwBxaNvBu4A== +dompurify@^2.0.17, dompurify@^2.0.7: + version "2.0.17" + resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-2.0.17.tgz#505ffa126a580603df4007e034bdc9b6b738668e" + integrity sha512-nNwwJfW55r8akD8MSFz6k75bzyT2y6JEa1O3JrZFBf+Y5R9JXXU4OsRl0B9hKoPgHTw2b7ER5yJ5Md97MMUJPg== domutils@1.5.1, domutils@^1.5.1: version "1.5.1" From f5c53efb3eca7e2e9ba765058ceaae36667ab913 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 23 Jul 2023 20:06:51 +1000 Subject: [PATCH 198/274] Bump ws from 5.2.2 to 5.2.3 (#6252) Bumps [ws](https://github.com/websockets/ws) from 5.2.2 to 5.2.3. - [Release notes](https://github.com/websockets/ws/releases) - [Commits](https://github.com/websockets/ws/compare/5.2.2...5.2.3) --- updated-dependencies: - dependency-name: ws dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/yarn.lock b/yarn.lock index e6832150c1..f039115577 100644 --- a/yarn.lock +++ b/yarn.lock @@ -16398,16 +16398,16 @@ write@1.0.3: mkdirp "^0.5.1" ws@^5.2.0: - version "5.2.2" - resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.2.tgz#dffef14866b8e8dc9133582514d1befaf96e980f" - integrity sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA== + version "5.2.3" + resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.3.tgz#05541053414921bc29c63bee14b8b0dd50b07b3d" + integrity sha512-jZArVERrMsKUatIdnLzqvcfydI85dvd/Fp1u/VOpfdDWQ4c9qWXe+VIeAbQ5FrDwciAkr+lzofXLz3Kuf26AOA== dependencies: async-limiter "~1.0.0" ws@^6.1.0: - version "6.2.1" - resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb" - integrity sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA== + version "6.2.2" + resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.2.tgz#dd5cdbd57a9979916097652d78f1cc5faea0c32e" + integrity sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw== dependencies: async-limiter "~1.0.0" From f8e9887feb838beb86757db20a2edec9f2c7df08 Mon Sep 17 00:00:00 2001 From: Justin Clift Date: Sun, 23 Jul 2023 20:39:59 +1000 Subject: [PATCH 199/274] Bump @pmmmwh/react-refresh-webpack-plugin to 0.5.10, react-refresh to 0.14.0 (#6258) --- package.json | 4 +- yarn.lock | 107 ++++++++++++++++++++++++++++++--------------------- 2 files changed, 66 insertions(+), 45 deletions(-) diff --git a/package.json b/package.json index c6a8135269..6f532a0c36 100644 --- a/package.json +++ b/package.json @@ -89,7 +89,7 @@ "@cypress/code-coverage": "^3.8.1", "@percy/agent": "0.24.3", "@percy/cypress": "2.3.4", - "@pmmmwh/react-refresh-webpack-plugin": "^0.4.3", + "@pmmmwh/react-refresh-webpack-plugin": "^0.5.10", "@testing-library/cypress": "^7.0.2", "@types/classnames": "^2.2.10", "@types/hoist-non-react-statics": "^3.3.1", @@ -139,7 +139,7 @@ "npm-run-all": "^4.1.5", "prettier": "^1.19.1", "raw-loader": "^0.5.1", - "react-refresh": "^0.9.0", + "react-refresh": "^0.14.0", "react-test-renderer": "^16.5.2", "request": "^2.88.0", "request-cookies": "^1.1.0", diff --git a/yarn.lock b/yarn.lock index f039115577..7a1c9147c6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1672,16 +1672,19 @@ d3-collection "1" d3-shape "^1.2.0" -"@pmmmwh/react-refresh-webpack-plugin@^0.4.3": - version "0.4.3" - resolved "https://registry.yarnpkg.com/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.4.3.tgz#1eec460596d200c0236bf195b078a5d1df89b766" - integrity sha512-br5Qwvh8D2OQqSXpd1g/xqXKnK0r+Jz6qVKBbWmpUcrbGOxUrf39V5oZ1876084CGn18uMdR5uvPqBv9UqtBjQ== +"@pmmmwh/react-refresh-webpack-plugin@^0.5.10": + version "0.5.10" + resolved "https://registry.yarnpkg.com/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.10.tgz#2eba163b8e7dbabb4ce3609ab5e32ab63dda3ef8" + integrity sha512-j0Ya0hCFZPd4x40qLzbhGsh9TMtdb+CJQiso+WxLOPNasohq9cc5SNUcwsZaRH6++Xh91Xkm/xHCkuIiIu0LUA== dependencies: - ansi-html "^0.0.7" + ansi-html-community "^0.0.8" + common-path-prefix "^3.0.0" + core-js-pure "^3.23.3" error-stack-parser "^2.0.6" - html-entities "^1.2.1" - native-url "^0.2.6" - schema-utils "^2.6.5" + find-up "^5.0.0" + html-entities "^2.1.0" + loader-utils "^2.0.4" + schema-utils "^3.0.0" source-map "^0.7.3" "@polka/url@^1.0.0-next.20": @@ -1903,7 +1906,7 @@ resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.3.tgz#bdfd69d61e464dcc81b25159c270d75a73c1a636" integrity sha512-Il2DtDVRGDcqjDtE+rF8iqg1CArehSK84HZJCT7AMITlyXRBpuPhqGLDQMowraqqu1coEaimg4ZOqggt6L6L+A== -"@types/json-schema@^7.0.5", "@types/json-schema@^7.0.6": +"@types/json-schema@^7.0.6": version "7.0.6" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.6.tgz#f4c7ec43e81b319a9815115031709f26987891f0" integrity sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw== @@ -2455,7 +2458,7 @@ ajv-keywords@^5.1.0: dependencies: fast-deep-equal "^3.1.3" -ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.4, ajv@^6.12.5, ajv@^6.5.5: +ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.5, ajv@^6.5.5: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -2532,11 +2535,6 @@ ansi-html-community@^0.0.8: resolved "https://registry.yarnpkg.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz#69fbc4d6ccbe383f9736934ae34c3f8290f1bf41" integrity sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw== -ansi-html@^0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" - integrity sha1-gTWEAhliqenm/QOflA0S9WynhZ4= - ansi-regex@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" @@ -4369,6 +4367,11 @@ commander@~2.17.1: resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg== +common-path-prefix@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/common-path-prefix/-/common-path-prefix-3.0.0.tgz#7d007a7e07c58c4b4d5f433131a19141b29f11e0" + integrity sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w== + common-tags@^1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.0.tgz#8e3153e542d4a39e9b10554434afaaf98956a937" @@ -4621,6 +4624,11 @@ core-js-pure@^3.0.0: resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.4.7.tgz#c998e1892da9949200c7452cbd33c0df95be9f54" integrity sha512-Am3uRS8WCdTFA3lP7LtKR0PxgqYzjAMGKXaZKSNSC/8sqU0Wfq8R/YzoRs2rqtOVEunfgH+0q3O0BKOg0AvjPw== +core-js-pure@^3.23.3: + version "3.31.1" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.31.1.tgz#73d154958881873bc19381df80bddb20c8d0cdb5" + integrity sha512-w+C62kvWti0EPs4KPMCMVv9DriHSXfQOCQ94bGGBiEW5rrbtt/Rz8n5Krhfw9cpFyzXBjf3DB3QnPdEzGDY4Fw== + core-js@^2.4.0: version "2.6.4" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.4.tgz#b8897c062c4d769dd30a0ac5c73976c47f92ea0d" @@ -6758,6 +6766,14 @@ find-up@^4.0.0, find-up@^4.1.0: locate-path "^5.0.0" path-exists "^4.0.0" +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + findup-sync@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-3.0.0.tgz#17b108f9ee512dfb7a5c7f3c8b27ea9e1a9c08d1" @@ -8141,12 +8157,7 @@ html-encoding-sniffer@^1.0.2: dependencies: whatwg-encoding "^1.0.1" -html-entities@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f" - integrity sha1-DfKTUfByEWNRXfueVUPl9u7VFi8= - -html-entities@^2.3.2: +html-entities@^2.1.0, html-entities@^2.3.2: version "2.4.0" resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.4.0.tgz#edd0cee70402584c8c76cc2c0556db09d1f45061" integrity sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ== @@ -9922,7 +9933,7 @@ loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4 emojis-list "^3.0.0" json5 "^1.0.1" -loader-utils@^2.0.0: +loader-utils@^2.0.0, loader-utils@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.4.tgz#8b5cb38b5c34a9a018ee1fc0e6a066d1dfcc528c" integrity sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw== @@ -9954,6 +9965,13 @@ locate-path@^5.0.0: dependencies: p-locate "^4.1.0" +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + lodash._reinterpolate@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" @@ -10720,13 +10738,6 @@ nanomatch@^1.2.9: snapdragon "^0.8.1" to-regex "^3.0.1" -native-url@^0.2.6: - version "0.2.6" - resolved "https://registry.yarnpkg.com/native-url/-/native-url-0.2.6.tgz#ca1258f5ace169c716ff44eccbddb674e10399ae" - integrity sha512-k4bDC87WtgrdD362gZz6zoiXQrl40kYlBmpfmSjwRO1VU0V5ccwJTlxuE72F6m3V0vc1xOf6n3UCP9QyerRqmA== - dependencies: - querystring "^0.2.0" - natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" @@ -11517,6 +11528,13 @@ p-limit@^2.2.0, p-limit@^2.2.1: dependencies: p-try "^2.0.0" +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + p-locate@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" @@ -11538,6 +11556,13 @@ p-locate@^4.1.0: dependencies: p-limit "^2.2.0" +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + p-map@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" @@ -12396,7 +12421,7 @@ querystring-es3@^0.2.0, querystring-es3@~0.2.0: resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= -querystring@0.2.0, querystring@^0.2.0: +querystring@0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= @@ -12911,10 +12936,10 @@ react-pivottable@^0.9.0: react-sortablejs "^1.3.4" sortablejs "^1.6.1" -react-refresh@^0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.9.0.tgz#71863337adc3e5c2f8a6bfddd12ae3bfe32aafbf" - integrity sha512-Gvzk7OZpiqKSkxsQvO/mbTN1poglhmAV7gR/DdIrRrSMXraRQQlfikRJOr3Nb9GTMPC5kof948Zy6jJZIFtDvQ== +react-refresh@^0.14.0: + version "0.14.0" + resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.14.0.tgz#4e02825378a5f227079554d4284889354e5f553e" + integrity sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ== react-resizable@^1.10.1, react-resizable@^1.9.0: version "1.10.1" @@ -13861,15 +13886,6 @@ schema-utils@^2.6.1: ajv "^6.10.2" ajv-keywords "^3.4.1" -schema-utils@^2.6.5: - version "2.7.1" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" - integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== - dependencies: - "@types/json-schema" "^7.0.5" - ajv "^6.12.4" - ajv-keywords "^3.5.2" - schema-utils@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.0.0.tgz#67502f6aa2b66a2d4032b4279a2944978a0913ef" @@ -16556,6 +16572,11 @@ yauzl@^2.10.0: buffer-crc32 "~0.2.3" fd-slicer "~1.1.0" +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== + zero-crossings@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/zero-crossings/-/zero-crossings-1.0.1.tgz#c562bd3113643f3443a245d12406b88b69b9a9ff" From 4fb78387aac1de0fc0fcec8367484f3165249476 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 23 Jul 2023 21:19:20 +1000 Subject: [PATCH 200/274] Bump bl from 1.2.2 to 1.2.3 (#6257) Bumps [bl](https://github.com/rvagg/bl) from 1.2.2 to 1.2.3. - [Release notes](https://github.com/rvagg/bl/releases) - [Changelog](https://github.com/rvagg/bl/blob/master/CHANGELOG.md) - [Commits](https://github.com/rvagg/bl/compare/v1.2.2...v1.2.3) --- updated-dependencies: - dependency-name: bl dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 7a1c9147c6..79eeec61de 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3252,9 +3252,9 @@ bitmap-sdf@^1.0.0: clamp "^1.0.1" bl@^1.0.0: - version "1.2.2" - resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.2.tgz#a160911717103c07410cef63ef51b397c025af9c" - integrity sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA== + version "1.2.3" + resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.3.tgz#1e8dd80142eac80d7158c9dccc047fb620e035e7" + integrity sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww== dependencies: readable-stream "^2.3.5" safe-buffer "^5.1.1" From afa723c435205c9ed9ebfcc2fe9313d3d3e3df44 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 23 Jul 2023 21:19:34 +1000 Subject: [PATCH 201/274] Bump js-yaml from 3.12.2 to 3.14.0 (#6260) Bumps [js-yaml](https://github.com/nodeca/js-yaml) from 3.12.2 to 3.14.0. - [Changelog](https://github.com/nodeca/js-yaml/blob/master/CHANGELOG.md) - [Commits](https://github.com/nodeca/js-yaml/compare/3.12.2...3.14.0) --- updated-dependencies: - dependency-name: js-yaml dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/yarn.lock b/yarn.lock index 79eeec61de..51c27aac40 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9502,7 +9502,7 @@ js-tokens@^3.0.2: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= -js-yaml@3.14.0, js-yaml@^3.13.1: +js-yaml@3.14.0: version "3.14.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482" integrity sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A== @@ -9510,10 +9510,10 @@ js-yaml@3.14.0, js-yaml@^3.13.1: argparse "^1.0.7" esprima "^4.0.0" -js-yaml@^3.12.0: - version "3.12.2" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.12.2.tgz#ef1d067c5a9d9cb65bd72f285b5d8105c77f14fc" - integrity sha512-QHn/Lh/7HhZ/Twc7vJYQTkjuCa0kaCcDcjK5Zlk2rvnUpy7DxMJ23+Jc2dcyvltwQVg1nygAVlB2oRDFHoRS5Q== +js-yaml@^3.12.0, js-yaml@^3.13.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== dependencies: argparse "^1.0.7" esprima "^4.0.0" From ef06dff433c17fe80d033a764db505203542dc9c Mon Sep 17 00:00:00 2001 From: Konstantin Smirnov <46676677+konnectr@users.noreply.github.com> Date: Sun, 23 Jul 2023 17:19:43 +0500 Subject: [PATCH 202/274] bump jest to 24.9.0 (#6259) --- yarn.lock | 3217 +++++++++++++++++++++++++++++------------------------ 1 file changed, 1759 insertions(+), 1458 deletions(-) diff --git a/yarn.lock b/yarn.lock index 51c27aac40..2868b65645 100644 --- a/yarn.lock +++ b/yarn.lock @@ -11,6 +11,14 @@ orbit-camera-controller "^4.0.0" turntable-camera-controller "^3.0.0" +"@ampproject/remapping@^2.2.0": + version "2.2.1" + resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630" + integrity sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg== + dependencies: + "@jridgewell/gen-mapping" "^0.3.0" + "@jridgewell/trace-mapping" "^0.3.9" + "@ant-design/colors@^3.1.0": version "3.2.2" resolved "https://registry.yarnpkg.com/@ant-design/colors/-/colors-3.2.2.tgz#5ad43d619e911f3488ebac303d606e66a8423903" @@ -67,19 +75,12 @@ optionalDependencies: chokidar "^2.1.8" -"@babel/code-frame@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8" - integrity sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA== - dependencies: - "@babel/highlight" "^7.0.0" - -"@babel/code-frame@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a" - integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg== +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.5.tgz#234d98e1551960604f1246e6475891a570ad5658" + integrity sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ== dependencies: - "@babel/highlight" "^7.10.4" + "@babel/highlight" "^7.22.5" "@babel/compat-data@^7.10.4": version "7.10.4" @@ -90,6 +91,11 @@ invariant "^2.2.4" semver "^5.5.0" +"@babel/compat-data@^7.22.9": + version "7.22.9" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.22.9.tgz#71cdb00a1ce3a329ce4cbec3a44f9fef35669730" + integrity sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ== + "@babel/core@7.4.5": version "7.4.5" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.4.5.tgz#081f97e8ffca65a9b4b0fdc7e274e703f000c06a" @@ -110,7 +116,28 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/core@^7.1.0", "@babel/core@^7.10.4", "@babel/core@^7.7.5": +"@babel/core@^7.1.0": + version "7.22.9" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.22.9.tgz#bd96492c68822198f33e8a256061da3cf391f58f" + integrity sha512-G2EgeufBcYw27U4hhoIwFcgc1XU7TlXJ3mv04oOv1WCuo900U/anZSPzEqNjwdjgffkk2Gs0AN0dW1CKVLcG7w== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.22.5" + "@babel/generator" "^7.22.9" + "@babel/helper-compilation-targets" "^7.22.9" + "@babel/helper-module-transforms" "^7.22.9" + "@babel/helpers" "^7.22.6" + "@babel/parser" "^7.22.7" + "@babel/template" "^7.22.5" + "@babel/traverse" "^7.22.8" + "@babel/types" "^7.22.5" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.2" + semver "^6.3.1" + +"@babel/core@^7.10.4", "@babel/core@^7.7.5": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.10.4.tgz#780e8b83e496152f8dd7df63892b2e052bf1d51d" integrity sha512-3A0tS0HWpy4XujGc7QtOIHTeNwUgWaZc/WuS5YQrfhU67jnVmsD6OGPc1AKHH0LJHQICGncy3+YUjIhVlfDdcA== @@ -132,35 +159,15 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/generator@^7.0.0", "@babel/generator@^7.3.4": - version "7.3.4" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.3.4.tgz#9aa48c1989257877a9d971296e5b73bfe72e446e" - integrity sha512-8EXhHRFqlVVWXPezBW5keTiQi/rJMQTg/Y9uVCEZ0CAF3PKtCCaVRnp64Ii1ujhkoDhhF1fVsImoN4yJ2uz4Wg== - dependencies: - "@babel/types" "^7.3.4" - jsesc "^2.5.1" - lodash "^4.17.11" - source-map "^0.5.0" - trim-right "^1.0.1" - -"@babel/generator@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.10.4.tgz#e49eeed9fe114b62fa5b181856a43a5e32f5f243" - integrity sha512-toLIHUIAgcQygFZRAQcsLQV3CBuX6yOIru1kJk/qqqvcRmZrYe6WavZTSG+bB8MxhnL9YPf+pKQfuiP161q7ng== +"@babel/generator@^7.10.4", "@babel/generator@^7.22.7", "@babel/generator@^7.22.9", "@babel/generator@^7.4.0": + version "7.22.9" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.22.9.tgz#572ecfa7a31002fa1de2a9d91621fd895da8493d" + integrity sha512-KtLMbmicyuK2Ak/FTCJVbDnkN1SlT8/kceFTiuDiiRUUSMnHMidxSCdG4ndkTOHHpoomWe/4xkvHkEOncwjYIw== dependencies: - "@babel/types" "^7.10.4" + "@babel/types" "^7.22.5" + "@jridgewell/gen-mapping" "^0.3.2" + "@jridgewell/trace-mapping" "^0.3.17" jsesc "^2.5.1" - lodash "^4.17.13" - source-map "^0.5.0" - -"@babel/generator@^7.11.0", "@babel/generator@^7.4.0": - version "7.11.4" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.11.4.tgz#1ec7eec00defba5d6f83e50e3ee72ae2fee482be" - integrity sha512-Rn26vueFx0eOoz7iifCN2UHT6rGtnkSGWSoDRIy8jZN3B91PzeSULbswfLoOWuTuAcNwpG/mxy+uCTDnZ9Mp1g== - dependencies: - "@babel/types" "^7.11.0" - jsesc "^2.5.1" - source-map "^0.5.0" "@babel/generator@^7.11.5", "@babel/generator@^7.4.4": version "7.11.6" @@ -205,6 +212,17 @@ levenary "^1.1.1" semver "^5.5.0" +"@babel/helper-compilation-targets@^7.22.9": + version "7.22.9" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.9.tgz#f9d0a7aaaa7cd32a3f31c9316a69f5a9bcacb892" + integrity sha512-7qYrNM6HjpnPHJbopxmb8hSPoZ0gsX8IvUS32JGVoy+pU9e5N0nLr1VjJoR6kA4d9dmGLxNYOjeB8sUDal2WMw== + dependencies: + "@babel/compat-data" "^7.22.9" + "@babel/helper-validator-option" "^7.22.5" + browserslist "^4.21.9" + lru-cache "^5.1.1" + semver "^6.3.1" + "@babel/helper-create-class-features-plugin@^7.10.4", "@babel/helper-create-class-features-plugin@^7.3.0": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.4.tgz#2d4015d0136bd314103a70d84a7183e4b344a355" @@ -235,6 +253,11 @@ "@babel/types" "^7.10.4" lodash "^4.17.13" +"@babel/helper-environment-visitor@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz#f06dd41b7c1f44e1f8da6c4055b41ab3a09a7e98" + integrity sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q== + "@babel/helper-explode-assignable-expression@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.10.4.tgz#40a1cd917bff1288f699a94a75b37a1a2dbd8c7c" @@ -243,37 +266,20 @@ "@babel/traverse" "^7.10.4" "@babel/types" "^7.10.4" -"@babel/helper-function-name@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz#a0ceb01685f73355d4360c1247f582bfafc8ff53" - integrity sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw== +"@babel/helper-function-name@^7.10.4", "@babel/helper-function-name@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz#ede300828905bb15e582c037162f99d5183af1be" + integrity sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ== dependencies: - "@babel/helper-get-function-arity" "^7.0.0" - "@babel/template" "^7.1.0" - "@babel/types" "^7.0.0" - -"@babel/helper-function-name@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz#d2d3b20c59ad8c47112fa7d2a94bc09d5ef82f1a" - integrity sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ== - dependencies: - "@babel/helper-get-function-arity" "^7.10.4" - "@babel/template" "^7.10.4" - "@babel/types" "^7.10.4" - -"@babel/helper-get-function-arity@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz#83572d4320e2a4657263734113c42868b64e49c3" - integrity sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ== - dependencies: - "@babel/types" "^7.0.0" + "@babel/template" "^7.22.5" + "@babel/types" "^7.22.5" "@babel/helper-get-function-arity@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz#98c1cbea0e2332f33f9a4661b8ce1505b2c19ba2" - integrity sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A== + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz#ea08ac753117a669f1508ba06ebcc49156387419" + integrity sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw== dependencies: - "@babel/types" "^7.10.4" + "@babel/types" "^7.16.7" "@babel/helper-hoist-variables@^7.10.4": version "7.10.4" @@ -282,46 +288,58 @@ dependencies: "@babel/types" "^7.10.4" -"@babel/helper-member-expression-to-functions@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.10.4.tgz#7cd04b57dfcf82fce9aeae7d4e4452fa31b8c7c4" - integrity sha512-m5j85pK/KZhuSdM/8cHUABQTAslV47OjfIB9Cc7P+PvlAoBzdb79BGNfw8RhT5Mq3p+xGd0ZfAKixbrUZx0C7A== +"@babel/helper-hoist-variables@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb" + integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw== dependencies: - "@babel/types" "^7.10.4" + "@babel/types" "^7.22.5" + +"@babel/helper-member-expression-to-functions@^7.10.4", "@babel/helper-member-expression-to-functions@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.22.5.tgz#0a7c56117cad3372fbf8d2fb4bf8f8d64a1e76b2" + integrity sha512-aBiH1NKMG0H2cGZqspNvsaBe6wNGjbJjuLy29aU+eDZjSbbN53BaxlpB02xm9v34pLTZ1nIQPFYn2qMZoa5BQQ== + dependencies: + "@babel/types" "^7.22.5" -"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.10.4": +"@babel/helper-module-imports@^7.0.0": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz#4c5c54be04bd31670a7382797d75b9fa2e5b5620" integrity sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw== dependencies: "@babel/types" "^7.10.4" -"@babel/helper-module-transforms@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.10.4.tgz#ca1f01fdb84e48c24d7506bb818c961f1da8805d" - integrity sha512-Er2FQX0oa3nV7eM1o0tNCTx7izmQtwAQsIiaLRWtavAAEcskb0XJ5OjJbVrYXWOTr8om921Scabn4/tzlx7j1Q== +"@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz#1a8f4c9f4027d23f520bd76b364d44434a72660c" + integrity sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg== dependencies: - "@babel/helper-module-imports" "^7.10.4" - "@babel/helper-replace-supers" "^7.10.4" - "@babel/helper-simple-access" "^7.10.4" - "@babel/helper-split-export-declaration" "^7.10.4" - "@babel/template" "^7.10.4" - "@babel/types" "^7.10.4" - lodash "^4.17.13" + "@babel/types" "^7.22.5" -"@babel/helper-optimise-call-expression@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz#50dc96413d594f995a77905905b05893cd779673" - integrity sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg== +"@babel/helper-module-transforms@^7.10.4", "@babel/helper-module-transforms@^7.22.9": + version "7.22.9" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.22.9.tgz#92dfcb1fbbb2bc62529024f72d942a8c97142129" + integrity sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ== dependencies: - "@babel/types" "^7.10.4" + "@babel/helper-environment-visitor" "^7.22.5" + "@babel/helper-module-imports" "^7.22.5" + "@babel/helper-simple-access" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/helper-validator-identifier" "^7.22.5" -"@babel/helper-plugin-utils@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz#bbb3fbee98661c569034237cc03967ba99b4f250" - integrity sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA== +"@babel/helper-optimise-call-expression@^7.10.4", "@babel/helper-optimise-call-expression@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz#f21531a9ccbff644fdd156b4077c16ff0c3f609e" + integrity sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw== + dependencies: + "@babel/types" "^7.22.5" -"@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.8.0": +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.8.0": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295" + integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== + +"@babel/helper-plugin-utils@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz#2f75a831269d4f677de49986dff59927533cf375" integrity sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg== @@ -345,48 +363,42 @@ "@babel/types" "^7.10.4" "@babel/helper-replace-supers@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.10.4.tgz#d585cd9388ea06e6031e4cd44b6713cbead9e6cf" - integrity sha512-sPxZfFXocEymYTdVK1UNmFPBN+Hv5mJkLPsYWwGBxZAxaWfFu+xqp7b6qWD0yjNuNL2VKc6L5M18tOXUP7NU0A== + version "7.22.9" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.22.9.tgz#cbdc27d6d8d18cd22c81ae4293765a5d9afd0779" + integrity sha512-LJIKvvpgPOPUThdYqcX6IXRuIcTkcAub0IaDRGCZH0p5GPUp7PhRU9QVgFcDDd51BaPkk77ZjqFwh6DZTAEmGg== dependencies: - "@babel/helper-member-expression-to-functions" "^7.10.4" - "@babel/helper-optimise-call-expression" "^7.10.4" - "@babel/traverse" "^7.10.4" - "@babel/types" "^7.10.4" + "@babel/helper-environment-visitor" "^7.22.5" + "@babel/helper-member-expression-to-functions" "^7.22.5" + "@babel/helper-optimise-call-expression" "^7.22.5" -"@babel/helper-simple-access@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.10.4.tgz#0f5ccda2945277a2a7a2d3a821e15395edcf3461" - integrity sha512-0fMy72ej/VEvF8ULmX6yb5MtHG4uH4Dbd6I/aHDb/JVg0bbivwt9Wg+h3uMvX+QSFtwr5MeItvazbrc4jtRAXw== +"@babel/helper-simple-access@^7.10.4", "@babel/helper-simple-access@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz#4938357dc7d782b80ed6dbb03a0fba3d22b1d5de" + integrity sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w== dependencies: - "@babel/template" "^7.10.4" - "@babel/types" "^7.10.4" + "@babel/types" "^7.22.5" -"@babel/helper-split-export-declaration@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0.tgz#3aae285c0311c2ab095d997b8c9a94cad547d813" - integrity sha512-MXkOJqva62dfC0w85mEf/LucPPS/1+04nmmRMPEBUB++hiiThQ2zPtX/mEWQ3mtzCEjIJvPY8nuwxXtQeQwUag== +"@babel/helper-split-export-declaration@^7.10.4", "@babel/helper-split-export-declaration@^7.11.0", "@babel/helper-split-export-declaration@^7.22.6": + version "7.22.6" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c" + integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g== dependencies: - "@babel/types" "^7.0.0" + "@babel/types" "^7.22.5" -"@babel/helper-split-export-declaration@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.4.tgz#2c70576eaa3b5609b24cb99db2888cc3fc4251d1" - integrity sha512-pySBTeoUff56fL5CBU2hWm9TesA4r/rOkI9DyJLvvgz09MB9YtfIYe3iBriVaYNaPe+Alua0vBIOVOLs2buWhg== - dependencies: - "@babel/types" "^7.10.4" +"@babel/helper-string-parser@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz#533f36457a25814cf1df6488523ad547d784a99f" + integrity sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw== -"@babel/helper-split-export-declaration@^7.11.0": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz#f8a491244acf6a676158ac42072911ba83ad099f" - integrity sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg== - dependencies: - "@babel/types" "^7.11.0" +"@babel/helper-validator-identifier@^7.10.4", "@babel/helper-validator-identifier@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz#9544ef6a33999343c8740fa51350f30eeaaaf193" + integrity sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ== -"@babel/helper-validator-identifier@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2" - integrity sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw== +"@babel/helper-validator-option@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz#de52000a15a177413c8234fa3a8af4ee8102d0ac" + integrity sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw== "@babel/helper-wrap-function@^7.10.4": version "7.10.4" @@ -398,7 +410,16 @@ "@babel/traverse" "^7.10.4" "@babel/types" "^7.10.4" -"@babel/helpers@^7.10.4", "@babel/helpers@^7.4.4": +"@babel/helpers@^7.10.4", "@babel/helpers@^7.22.6": + version "7.22.6" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.22.6.tgz#8e61d3395a4f0c5a8060f309fb008200969b5ecd" + integrity sha512-YjDs6y/fVOYFV8hAf1rxd1QvR9wJe1pDBZ2AREKq/SDayfPzgk0PBnVuTCE5X1acEpMMNOVUqoe+OwiZGJ+OaA== + dependencies: + "@babel/template" "^7.22.5" + "@babel/traverse" "^7.22.6" + "@babel/types" "^7.22.5" + +"@babel/helpers@^7.4.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.10.4.tgz#2abeb0d721aff7c0a97376b9e1f6f65d7a475044" integrity sha512-L2gX/XeUONeEbI78dXSrJzGdz4GQ+ZTA/aazfUsFaWjSe95kiCuOZ5HsXvkiw3iwF+mFHSRUfJU8t6YavocdXA== @@ -407,38 +428,19 @@ "@babel/traverse" "^7.10.4" "@babel/types" "^7.10.4" -"@babel/highlight@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0.tgz#f710c38c8d458e6dd9a201afb637fcb781ce99e4" - integrity sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw== +"@babel/highlight@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.22.5.tgz#aa6c05c5407a67ebce408162b7ede789b4d22031" + integrity sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw== dependencies: + "@babel/helper-validator-identifier" "^7.22.5" chalk "^2.0.0" - esutils "^2.0.2" js-tokens "^4.0.0" -"@babel/highlight@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143" - integrity sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA== - dependencies: - "@babel/helper-validator-identifier" "^7.10.4" - chalk "^2.0.0" - js-tokens "^4.0.0" - -"@babel/parser@^7.0.0", "@babel/parser@^7.2.2", "@babel/parser@^7.3.4": - version "7.3.4" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.3.4.tgz#a43357e4bbf4b92a437fb9e465c192848287f27c" - integrity sha512-tXZCqWtlOOP4wgCp6RjRvLmfuhnqTLy9VHwRochJBCP2nDm27JnnuFEnXFASVyQNHk36jD1tAammsCEEqgscIQ== - -"@babel/parser@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.10.4.tgz#9eedf27e1998d87739fb5028a5120557c06a1a64" - integrity sha512-8jHII4hf+YVDsskTF6WuMB3X4Eh+PsUkC2ljq22so5rHvH+T8BzyL94VOdyFLNR8tBSVXOTbNHOKpR4TfRxVtA== - -"@babel/parser@^7.11.0", "@babel/parser@^7.4.3": - version "7.11.4" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.11.4.tgz#6fa1a118b8b0d80d0267b719213dc947e88cc0ca" - integrity sha512-MggwidiH+E9j5Sh8pbrX5sJvMcsqS5o+7iB42M9/k0CD63MjYbdP4nhSh7uB5wnv2/RVzTZFTxzF/kIa5mrCqA== +"@babel/parser@^7.0.0", "@babel/parser@^7.1.0", "@babel/parser@^7.10.4", "@babel/parser@^7.20.7", "@babel/parser@^7.22.5", "@babel/parser@^7.22.7", "@babel/parser@^7.4.3": + version "7.22.7" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.22.7.tgz#df8cf085ce92ddbdbf668a7f186ce848c9036cae" + integrity sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q== "@babel/parser@^7.11.5", "@babel/parser@^7.4.5": version "7.11.5" @@ -609,20 +611,20 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz#3b7a3e733510c57e820b9142a6579ac8b0dfad2e" - integrity sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-syntax-object-rest-spread@^7.8.0": +"@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.8.0": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== dependencies: "@babel/helper-plugin-utils" "^7.8.0" +"@babel/plugin-syntax-object-rest-spread@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz#3b7a3e733510c57e820b9142a6579ac8b0dfad2e" + integrity sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-optional-catch-binding@^7.2.0", "@babel/plugin-syntax-optional-catch-binding@^7.8.0": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" @@ -1171,16 +1173,16 @@ dependencies: regenerator-runtime "^0.13.2" -"@babel/template@^7.0.0", "@babel/template@^7.1.0": - version "7.2.2" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.2.2.tgz#005b3fdf0ed96e88041330379e0da9a708eb2907" - integrity sha512-zRL0IMM02AUDwghf5LMSSDEz7sBCO2YnNmpg3uWTZj/v1rcG2BmQUvaGU8GhU8BvfMh1k2KIAYZ7Ji9KXPUg7g== +"@babel/template@^7.10.4", "@babel/template@^7.22.5", "@babel/template@^7.4.0": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.5.tgz#0c8c4d944509875849bd0344ff0050756eefc6ec" + integrity sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw== dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/parser" "^7.2.2" - "@babel/types" "^7.2.2" + "@babel/code-frame" "^7.22.5" + "@babel/parser" "^7.22.5" + "@babel/types" "^7.22.5" -"@babel/template@^7.10.4", "@babel/template@^7.4.0", "@babel/template@^7.4.4": +"@babel/template@^7.4.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.10.4.tgz#3251996c4200ebc71d1a8fc405fba940f36ba278" integrity sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA== @@ -1189,50 +1191,21 @@ "@babel/parser" "^7.10.4" "@babel/types" "^7.10.4" -"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0": - version "7.3.4" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.3.4.tgz#1330aab72234f8dea091b08c4f8b9d05c7119e06" - integrity sha512-TvTHKp6471OYEcE/91uWmhR6PrrYywQntCHSaZ8CM8Vmp+pjAusal4nGB2WCCQd0rvI7nOMKn9GnbcvTUz3/ZQ== - dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/generator" "^7.3.4" - "@babel/helper-function-name" "^7.1.0" - "@babel/helper-split-export-declaration" "^7.0.0" - "@babel/parser" "^7.3.4" - "@babel/types" "^7.3.4" +"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.10.4", "@babel/traverse@^7.22.6", "@babel/traverse@^7.22.8", "@babel/traverse@^7.4.3": + version "7.22.8" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.22.8.tgz#4d4451d31bc34efeae01eac222b514a77aa4000e" + integrity sha512-y6LPR+wpM2I3qJrsheCTwhIinzkETbplIgPBbwvqPKc+uljeA5gP+3nP8irdYt1mjQaDnlIcG+dw8OjAco4GXw== + dependencies: + "@babel/code-frame" "^7.22.5" + "@babel/generator" "^7.22.7" + "@babel/helper-environment-visitor" "^7.22.5" + "@babel/helper-function-name" "^7.22.5" + "@babel/helper-hoist-variables" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/parser" "^7.22.7" + "@babel/types" "^7.22.5" debug "^4.1.0" globals "^11.1.0" - lodash "^4.17.11" - -"@babel/traverse@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.10.4.tgz#e642e5395a3b09cc95c8e74a27432b484b697818" - integrity sha512-aSy7p5THgSYm4YyxNGz6jZpXf+Ok40QF3aA2LyIONkDHpAcJzDUqlCKXv6peqYUs2gmic849C/t2HKw2a2K20Q== - dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/generator" "^7.10.4" - "@babel/helper-function-name" "^7.10.4" - "@babel/helper-split-export-declaration" "^7.10.4" - "@babel/parser" "^7.10.4" - "@babel/types" "^7.10.4" - debug "^4.1.0" - globals "^11.1.0" - lodash "^4.17.13" - -"@babel/traverse@^7.4.3": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.11.0.tgz#9b996ce1b98f53f7c3e4175115605d56ed07dd24" - integrity sha512-ZB2V+LskoWKNpMq6E5UUCrjtDUh5IOTAyIl0dTjIEoXum/iKWkoIEKIRDnUucO6f+2FzNkE0oD4RLKoPIufDtg== - dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/generator" "^7.11.0" - "@babel/helper-function-name" "^7.10.4" - "@babel/helper-split-export-declaration" "^7.11.0" - "@babel/parser" "^7.11.0" - "@babel/types" "^7.11.0" - debug "^4.1.0" - globals "^11.1.0" - lodash "^4.17.19" "@babel/traverse@^7.4.5": version "7.11.5" @@ -1249,31 +1222,13 @@ globals "^11.1.0" lodash "^4.17.19" -"@babel/types@^7.0.0", "@babel/types@^7.2.2", "@babel/types@^7.3.0", "@babel/types@^7.3.4": - version "7.3.4" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.3.4.tgz#bf482eaeaffb367a28abbf9357a94963235d90ed" - integrity sha512-WEkp8MsLftM7O/ty580wAmZzN1nDmCACc5+jFzUt+GUFNNIi3LdRlueYz0YIlmJhlZx1QYDMZL5vdWCL0fNjFQ== +"@babel/types@^7.0.0", "@babel/types@^7.10.4", "@babel/types@^7.16.7", "@babel/types@^7.20.7", "@babel/types@^7.22.5", "@babel/types@^7.4.0": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.22.5.tgz#cd93eeaab025880a3a47ec881f4b096a5b786fbe" + integrity sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA== dependencies: - esutils "^2.0.2" - lodash "^4.17.11" - to-fast-properties "^2.0.0" - -"@babel/types@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.10.4.tgz#369517188352e18219981efd156bfdb199fff1ee" - integrity sha512-UTCFOxC3FsFHb7lkRMVvgLzaRVamXuAs2Tz4wajva4WxtVY82eZeaUBtC2Zt95FU9TiznuC0Zk35tsim8jeVpg== - dependencies: - "@babel/helper-validator-identifier" "^7.10.4" - lodash "^4.17.13" - to-fast-properties "^2.0.0" - -"@babel/types@^7.11.0", "@babel/types@^7.4.0": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.11.0.tgz#2ae6bf1ba9ae8c3c43824e5861269871b206e90d" - integrity sha512-O53yME4ZZI0jO1EVGtF1ePGl0LHirG4P1ibcD80XyzZcKhcMFeCXmh4Xb1ifGBIV233Qg12x4rBfQgA+tmOukA== - dependencies: - "@babel/helper-validator-identifier" "^7.10.4" - lodash "^4.17.19" + "@babel/helper-string-parser" "^7.22.5" + "@babel/helper-validator-identifier" "^7.22.5" to-fast-properties "^2.0.0" "@babel/types@^7.11.5", "@babel/types@^7.4.4": @@ -1285,6 +1240,15 @@ lodash "^4.17.19" to-fast-properties "^2.0.0" +"@babel/types@^7.3.0": + version "7.3.4" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.3.4.tgz#bf482eaeaffb367a28abbf9357a94963235d90ed" + integrity sha512-WEkp8MsLftM7O/ty580wAmZzN1nDmCACc5+jFzUt+GUFNNIi3LdRlueYz0YIlmJhlZx1QYDMZL5vdWCL0fNjFQ== + dependencies: + esutils "^2.0.2" + lodash "^4.17.11" + to-fast-properties "^2.0.0" + "@choojs/findup@^0.2.0": version "0.2.1" resolved "https://registry.yarnpkg.com/@choojs/findup/-/findup-0.2.1.tgz#ac13c59ae7be6e1da64de0779a0a7f03d75615a3" @@ -1292,6 +1256,14 @@ dependencies: commander "^2.15.1" +"@cnakazawa/watch@^1.0.3": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.4.tgz#f864ae85004d0fcab6f50be9141c4da368d1656a" + integrity sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ== + dependencies: + exec-sh "^0.3.2" + minimist "^1.2.0" + "@cypress/browserify-preprocessor@3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@cypress/browserify-preprocessor/-/browserify-preprocessor-3.0.0.tgz#2d1fa6a96ed7130a1b172c540448a5955cbc1264" @@ -1403,6 +1375,154 @@ resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd" integrity sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw== +"@jest/console@^24.7.1", "@jest/console@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-24.9.0.tgz#79b1bc06fb74a8cfb01cbdedf945584b1b9707f0" + integrity sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ== + dependencies: + "@jest/source-map" "^24.9.0" + chalk "^2.0.1" + slash "^2.0.0" + +"@jest/core@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-24.9.0.tgz#2ceccd0b93181f9c4850e74f2a9ad43d351369c4" + integrity sha512-Fogg3s4wlAr1VX7q+rhV9RVnUv5tD7VuWfYy1+whMiWUrvl7U3QJSJyWcDio9Lq2prqYsZaeTv2Rz24pWGkJ2A== + dependencies: + "@jest/console" "^24.7.1" + "@jest/reporters" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/transform" "^24.9.0" + "@jest/types" "^24.9.0" + ansi-escapes "^3.0.0" + chalk "^2.0.1" + exit "^0.1.2" + graceful-fs "^4.1.15" + jest-changed-files "^24.9.0" + jest-config "^24.9.0" + jest-haste-map "^24.9.0" + jest-message-util "^24.9.0" + jest-regex-util "^24.3.0" + jest-resolve "^24.9.0" + jest-resolve-dependencies "^24.9.0" + jest-runner "^24.9.0" + jest-runtime "^24.9.0" + jest-snapshot "^24.9.0" + jest-util "^24.9.0" + jest-validate "^24.9.0" + jest-watcher "^24.9.0" + micromatch "^3.1.10" + p-each-series "^1.0.0" + realpath-native "^1.1.0" + rimraf "^2.5.4" + slash "^2.0.0" + strip-ansi "^5.0.0" + +"@jest/environment@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-24.9.0.tgz#21e3afa2d65c0586cbd6cbefe208bafade44ab18" + integrity sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ== + dependencies: + "@jest/fake-timers" "^24.9.0" + "@jest/transform" "^24.9.0" + "@jest/types" "^24.9.0" + jest-mock "^24.9.0" + +"@jest/fake-timers@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-24.9.0.tgz#ba3e6bf0eecd09a636049896434d306636540c93" + integrity sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A== + dependencies: + "@jest/types" "^24.9.0" + jest-message-util "^24.9.0" + jest-mock "^24.9.0" + +"@jest/reporters@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-24.9.0.tgz#86660eff8e2b9661d042a8e98a028b8d631a5b43" + integrity sha512-mu4X0yjaHrffOsWmVLzitKmmmWSQ3GGuefgNscUSWNiUNcEOSEQk9k3pERKEQVBb0Cnn88+UESIsZEMH3o88Gw== + dependencies: + "@jest/environment" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/transform" "^24.9.0" + "@jest/types" "^24.9.0" + chalk "^2.0.1" + exit "^0.1.2" + glob "^7.1.2" + istanbul-lib-coverage "^2.0.2" + istanbul-lib-instrument "^3.0.1" + istanbul-lib-report "^2.0.4" + istanbul-lib-source-maps "^3.0.1" + istanbul-reports "^2.2.6" + jest-haste-map "^24.9.0" + jest-resolve "^24.9.0" + jest-runtime "^24.9.0" + jest-util "^24.9.0" + jest-worker "^24.6.0" + node-notifier "^5.4.2" + slash "^2.0.0" + source-map "^0.6.0" + string-length "^2.0.0" + +"@jest/source-map@^24.3.0", "@jest/source-map@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-24.9.0.tgz#0e263a94430be4b41da683ccc1e6bffe2a191714" + integrity sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg== + dependencies: + callsites "^3.0.0" + graceful-fs "^4.1.15" + source-map "^0.6.0" + +"@jest/test-result@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-24.9.0.tgz#11796e8aa9dbf88ea025757b3152595ad06ba0ca" + integrity sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA== + dependencies: + "@jest/console" "^24.9.0" + "@jest/types" "^24.9.0" + "@types/istanbul-lib-coverage" "^2.0.0" + +"@jest/test-sequencer@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-24.9.0.tgz#f8f334f35b625a4f2f355f2fe7e6036dad2e6b31" + integrity sha512-6qqsU4o0kW1dvA95qfNog8v8gkRN9ph6Lz7r96IvZpHdNipP2cBcb07J1Z45mz/VIS01OHJ3pY8T5fUY38tg4A== + dependencies: + "@jest/test-result" "^24.9.0" + jest-haste-map "^24.9.0" + jest-runner "^24.9.0" + jest-runtime "^24.9.0" + +"@jest/transform@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-24.9.0.tgz#4ae2768b296553fadab09e9ec119543c90b16c56" + integrity sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ== + dependencies: + "@babel/core" "^7.1.0" + "@jest/types" "^24.9.0" + babel-plugin-istanbul "^5.1.0" + chalk "^2.0.1" + convert-source-map "^1.4.0" + fast-json-stable-stringify "^2.0.0" + graceful-fs "^4.1.15" + jest-haste-map "^24.9.0" + jest-regex-util "^24.9.0" + jest-util "^24.9.0" + micromatch "^3.1.10" + pirates "^4.0.1" + realpath-native "^1.1.0" + slash "^2.0.0" + source-map "^0.6.1" + write-file-atomic "2.4.1" + +"@jest/types@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-24.9.0.tgz#63cb26cb7500d069e5a389441a7c6ab5e909fc59" + integrity sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^1.1.1" + "@types/yargs" "^13.0.0" + "@jest/types@^26.6.2": version "26.6.2" resolved "https://registry.yarnpkg.com/@jest/types/-/types-26.6.2.tgz#bef5a532030e1d88a2f5a6d933f84e97226ed48e" @@ -1414,6 +1534,43 @@ "@types/yargs" "^15.0.0" chalk "^4.0.0" +"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": + version "0.3.3" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098" + integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ== + dependencies: + "@jridgewell/set-array" "^1.0.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/resolve-uri@3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" + integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== + +"@jridgewell/set-array@^1.0.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" + integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== + +"@jridgewell/sourcemap-codec@1.4.14": + version "1.4.14" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" + integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== + +"@jridgewell/sourcemap-codec@^1.4.10": + version "1.4.15" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" + integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== + +"@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": + version "0.3.18" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz#25783b2086daf6ff1dcb53c9249ae480e4dd4cd6" + integrity sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA== + dependencies: + "@jridgewell/resolve-uri" "3.1.0" + "@jridgewell/sourcemap-codec" "1.4.14" + "@leichtgewicht/ip-codec@^2.0.1": version "2.0.4" resolved "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz#b2ac626d6cb9c8718ab459166d4bb405b8ffa78b" @@ -1789,6 +1946,39 @@ resolved "https://registry.yarnpkg.com/@types/aria-query/-/aria-query-4.2.0.tgz#14264692a9d6e2fa4db3df5e56e94b5e25647ac0" integrity sha512-iIgQNzCm0v7QMhhe4Jjn9uRh+I6GoPmt03CbEtwx3ao8/EfoQcmgtqH4vQ5Db/lxiIGaWDv6nwvunuh0RyX0+A== +"@types/babel__core@^7.1.0": + version "7.20.1" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.1.tgz#916ecea274b0c776fec721e333e55762d3a9614b" + integrity sha512-aACu/U/omhdk15O4Nfb+fHgH/z3QsfQzpnvRZhYhThms83ZnAOZz7zZAWO7mn2yyNQaA4xTO8GLK3uqFU4bYYw== + dependencies: + "@babel/parser" "^7.20.7" + "@babel/types" "^7.20.7" + "@types/babel__generator" "*" + "@types/babel__template" "*" + "@types/babel__traverse" "*" + +"@types/babel__generator@*": + version "7.6.4" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.4.tgz#1f20ce4c5b1990b37900b63f050182d28c2439b7" + integrity sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg== + dependencies: + "@babel/types" "^7.0.0" + +"@types/babel__template@*": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.1.tgz#3d1a48fd9d6c0edfd56f2ff578daed48f36c8969" + integrity sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + +"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": + version "7.20.1" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.1.tgz#dd6f1d2411ae677dcb2db008c962598be31d6acf" + integrity sha512-MitHFXnhtgwsGZWtT68URpOvLN4EREih1u3QtQiN4VdAxWKRVvGCSvw/Qth0M0Qq3pJpnGOu5JaM/ydK7OGbqg== + dependencies: + "@babel/types" "^7.20.7" + "@types/body-parser@*": version "1.19.2" resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.2.tgz#aea2059e28b7658639081347ac4fab3de166e6f0" @@ -1883,9 +2073,9 @@ "@types/node" "*" "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz#4ba8ddb720221f432e443bd5f9117fd22cfd4762" - integrity sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw== + version "2.0.4" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" + integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== "@types/istanbul-lib-report@*": version "3.0.0" @@ -1894,6 +2084,14 @@ dependencies: "@types/istanbul-lib-coverage" "*" +"@types/istanbul-reports@^1.1.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz#e875cc689e47bce549ec81f3df5e6f6f11cfaeb2" + integrity sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw== + dependencies: + "@types/istanbul-lib-coverage" "*" + "@types/istanbul-lib-report" "*" + "@types/istanbul-reports@^3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz#508b13aa344fa4976234e75dddcc34925737d821" @@ -2032,6 +2230,11 @@ resolved "https://registry.yarnpkg.com/@types/sql-formatter/-/sql-formatter-2.3.0.tgz#d2584c54f865fd57a7fe7e88ee8ed3623b23da33" integrity sha512-Xh9kEOaKWhm3vYD5lUjYFFiSfpN4y3/iQCJUAVwFaQ1rVvHs4WXTa5C8E7gyF3kxwsMS8KgttW7WBAPtFlsvAg== +"@types/stack-utils@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e" + integrity sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw== + "@types/tapable@^1", "@types/tapable@^1.0.5": version "1.0.8" resolved "https://registry.yarnpkg.com/@types/tapable/-/tapable-1.0.8.tgz#b94a4391c85666c7b73299fd3ad79d4faa435310" @@ -2073,9 +2276,16 @@ "@types/node" "*" "@types/yargs-parser@*": - version "15.0.0" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-15.0.0.tgz#cb3f9f741869e20cce330ffbeb9271590483882d" - integrity sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw== + version "21.0.0" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b" + integrity sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA== + +"@types/yargs@^13.0.0": + version "13.0.12" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-13.0.12.tgz#d895a88c703b78af0465a9de88aa92c61430b092" + integrity sha512-qCxJE1qgz2y0hA4pIxjBR+PelCH0U5CK1XJXFwCNqfmliatKp47UCXXE9Dyk1OXBDLvsCF57TqQEJaeLfDYEOQ== + dependencies: + "@types/yargs-parser" "*" "@types/yargs@^15.0.0": version "15.0.11" @@ -2300,9 +2510,9 @@ a-big-triangle@^1.0.3: weak-map "^1.0.5" abab@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.0.tgz#aba0ab4c5eee2d4c79d3487d85450fb2376ebb0f" - integrity sha512-sY5AXXVZv4Y1VACTtR11UJCPHHudgY5i26Qj5TypE6DKlIApbwb5uqhXcJ5UUGbvZNRh7EeIoW+LrJumBsKp7w== + version "2.0.6" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" + integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== abbrev@1: version "1.1.1" @@ -2341,9 +2551,9 @@ acorn-dynamic-import@^4.0.0: integrity sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw== acorn-globals@^4.1.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.0.tgz#e3b6f8da3c1552a95ae627571f7dd6923bb54103" - integrity sha512-hMtHj3s5RnuhvHPowpBYvJVj3rAar82JiDQHvGs1zO0l10ocX/xEdBShNHTJaboucJUsScghp74pH3s7EnHHQw== + version "4.3.4" + resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.4.tgz#9fa1926addc11c97308c4e66d7add0d40c3272e7" + integrity sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A== dependencies: acorn "^6.0.1" acorn-walk "^6.0.1" @@ -2363,9 +2573,9 @@ acorn-node@^1.2.0, acorn-node@^1.3.0, acorn-node@^1.5.2, acorn-node@^1.6.1: xtend "^4.0.2" acorn-walk@^6.0.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.1.1.tgz#d363b66f5fac5f018ff9c3a1e7b6f8e310cc3913" - integrity sha512-OtUw6JUTgxA2QoqqmrmQ7F2NYqiBPi/L2jqHyFtllhOUvXYQXf0Z1CYUinIfyT4bTCGmrA7gX9FvHA81uzCoVw== + version "6.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.2.0.tgz#123cb8f3b84c2171f1f7fb252615b1c78a6b1a8c" + integrity sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA== acorn-walk@^7.0.0: version "7.2.0" @@ -2458,7 +2668,7 @@ ajv-keywords@^5.1.0: dependencies: fast-deep-equal "^3.1.3" -ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.5, ajv@^6.5.5: +ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.5: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -2538,22 +2748,17 @@ ansi-html-community@^0.0.8: ansi-regex@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= + integrity sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA== ansi-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" - integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= - -ansi-regex@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.0.0.tgz#70de791edf021404c3fd615aa89118ae0432e5a9" - integrity sha512-iB5Dda8t/UqpPI/IjsejXu5jOGDrzn41wJyljwPH65VCIbk6+1BzFIMJGFwTNrYXT1CrD+B4l19U7awiQ8rk7w== + version "3.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.1.tgz#123d6479e92ad45ad897d4054e3c7ca7db4944e1" + integrity sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw== -ansi-regex@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" - integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== +ansi-regex@^4.0.0, ansi-regex@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.1.tgz#164daac87ab2d6f6db3a29875e2d1766582dabed" + integrity sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g== ansi-regex@^5.0.0: version "5.0.0" @@ -2667,13 +2872,6 @@ anymatch@~3.1.1: normalize-path "^3.0.0" picomatch "^2.0.4" -append-transform@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-1.0.0.tgz#046a52ae582a228bd72f58acfbe2967c678759ab" - integrity sha512-P009oYkeHyU742iSZJzZZywj4QRJdnTWffaKuJQLablCZ1uz6/cW4yaRgcDaoQ+uwOxxnt0gRUcwfsNP2ri0gw== - dependencies: - default-require-extensions "^2.0.0" - append-transform@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-2.0.0.tgz#99d9d29c7b38391e6f428d28ce136551f0b77e12" @@ -2681,7 +2879,7 @@ append-transform@^2.0.0: dependencies: default-require-extensions "^3.0.0" -aproba@^1.0.3, aproba@^1.1.1: +aproba@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== @@ -2696,14 +2894,6 @@ archy@^1.0.0: resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" integrity sha1-+cjBN1fMHde8N5rHeyxipcKGjEA= -are-we-there-yet@~1.1.2: - version "1.1.5" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" - integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== - dependencies: - delegates "^1.0.0" - readable-stream "^2.0.6" - argparse@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" @@ -2722,7 +2912,7 @@ aria-query@^4.2.2: arr-diff@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" - integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= + integrity sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA== arr-flatten@^1.1.0: version "1.1.0" @@ -2732,17 +2922,25 @@ arr-flatten@^1.1.0: arr-union@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" - integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= + integrity sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q== array-bounds@^1.0.0, array-bounds@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/array-bounds/-/array-bounds-1.0.1.tgz#da11356b4e18e075a4f0c86e1f179a67b7d7ea31" integrity sha512-8wdW3ZGk6UjMPJx/glyEt0sLzzwAE1bhToPsO1W2pbpR2gULyxe3BjSiuJFheP50T/GgODVPz2fuMUmIywt8cQ== +array-buffer-byte-length@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz#fabe8bc193fea865f317fe7807085ee0dee5aead" + integrity sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A== + dependencies: + call-bind "^1.0.2" + is-array-buffer "^3.0.1" + array-equal@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" - integrity sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM= + integrity sha512-H3LU5RLiSsGXPhN+Nipar0iR0IofH+8r89G2y1tBKxQ/agagKyAjhkAFDRBfodP2caPrNKHpAWNIM/c9yeL7uA== array-filter@^1.0.0: version "1.0.0" @@ -2820,7 +3018,7 @@ array-uniq@^1.0.1: array-unique@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" - integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= + integrity sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ== array.prototype.flat@^1.2.1: version "1.2.1" @@ -2831,6 +3029,29 @@ array.prototype.flat@^1.2.1: es-abstract "^1.10.0" function-bind "^1.1.1" +array.prototype.reduce@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/array.prototype.reduce/-/array.prototype.reduce-1.0.5.tgz#6b20b0daa9d9734dd6bc7ea66b5bbce395471eac" + integrity sha512-kDdugMl7id9COE8R7MHF5jWk7Dqt/fs4Pv+JXoICnYwqpjjjbUurz6w5fT5IG6brLdJhv6/VoHB0H7oyIBXd+Q== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + es-array-method-boxes-properly "^1.0.0" + is-string "^1.0.7" + +arraybuffer.prototype.slice@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.1.tgz#9b5ea3868a6eebc30273da577eb888381c0044bb" + integrity sha512-09x0ZWFEjj4WD8PDbykUwo3t9arLn8NIzmmYEJFpYekOAQjpkGSyrQhNoRTcwwcFRu+ycWF78QZ63oWTqSjBcw== + dependencies: + array-buffer-byte-length "^1.0.0" + call-bind "^1.0.2" + define-properties "^1.2.0" + get-intrinsic "^1.2.1" + is-array-buffer "^3.0.2" + is-shared-array-buffer "^1.0.2" + asap@~2.0.3: version "2.0.6" resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" @@ -2846,16 +3067,16 @@ asn1.js@^4.0.0: minimalistic-assert "^1.0.0" asn1@~0.2.3: - version "0.2.4" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" - integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== + version "0.2.6" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d" + integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ== dependencies: safer-buffer "~2.1.0" assert-plus@1.0.0, assert-plus@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= + integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== assert@^1.1.1, assert@^1.4.0: version "1.4.1" @@ -2867,7 +3088,7 @@ assert@^1.1.1, assert@^1.4.0: assign-symbols@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" - integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= + integrity sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw== ast-metadata-inferer@^0.1.1: version "0.1.1" @@ -2890,22 +3111,15 @@ async-each@^1.0.1: integrity sha1-GdOGodntxufByF04iu28xW0zYC0= async-limiter@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8" - integrity sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg== + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" + integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== async-validator@^3.0.3: version "3.3.0" resolved "https://registry.yarnpkg.com/async-validator/-/async-validator-3.3.0.tgz#1d92193bbe60d6d6c8b246692c7005e9ed14a8ee" integrity sha512-cAHGD9EL8aCqWXjnb44q94MWiDFzUo1tMhvLb2WzcpWqGiKugsjWG9cvl+jPgkPca7asNbsBU3fa0cwkI/P+Xg== -async@^2.6.1: - version "2.6.4" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.4.tgz#706b7ff6084664cd7eae713f6f965433b5504221" - integrity sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA== - dependencies: - lodash "^4.17.14" - async@^3.1.0, async@^3.2.0: version "3.2.4" resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c" @@ -2914,7 +3128,7 @@ async@^3.1.0, async@^3.2.0: asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== at-least-node@^1.0.0: version "1.0.0" @@ -2931,7 +3145,7 @@ atob-lite@^2.0.0: resolved "https://registry.yarnpkg.com/atob-lite/-/atob-lite-2.0.0.tgz#0fef5ad46f1bd7a8502c65727f0367d5ee43d696" integrity sha1-D+9a1G8b16hQLGVyfwNn1e5D1pY= -atob@^2.1.1, atob@^2.1.2: +atob@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== @@ -2948,15 +3162,20 @@ autoprefixer@^6.0.0: postcss "^5.2.16" postcss-value-parser "^3.2.3" +available-typed-arrays@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" + integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== + aws-sign2@~0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" - integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= + integrity sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA== aws4@^1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" - integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ== + version "1.12.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.12.0.tgz#ce1c9d143389679e253b314241ea9aa5cec980d3" + integrity sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg== axe-core@^4.0.2: version "4.1.2" @@ -3026,6 +3245,19 @@ babel-jest@^24.1.0: chalk "^2.4.2" slash "^2.0.0" +babel-jest@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-24.9.0.tgz#3fc327cb8467b89d14d7bc70e315104a783ccd54" + integrity sha512-ntuddfyiN+EhMw58PTNL1ph4C9rECiQXjI4nMMBKBaNjXvqLdkXpPRcMSr4iyBrJg/+wz9brFUD6RhOAT6r4Iw== + dependencies: + "@jest/transform" "^24.9.0" + "@jest/types" "^24.9.0" + "@types/babel__core" "^7.1.0" + babel-plugin-istanbul "^5.1.0" + babel-preset-jest "^24.9.0" + chalk "^2.4.2" + slash "^2.0.0" + babel-loader@^8.0.5: version "8.0.5" resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.0.5.tgz#225322d7509c2157655840bba52e46b6c2f2fe33" @@ -3083,6 +3315,13 @@ babel-plugin-jest-hoist@^24.1.0: resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.1.0.tgz#dfecc491fb15e2668abbd690a697a8fd1411a7f8" integrity sha512-gljYrZz8w1b6fJzKcsfKsipSru2DU2DmQ39aB6nV3xQ0DDv3zpIzKGortA5gknrhNnPN8DweaEgrnZdmbGmhnw== +babel-plugin-jest-hoist@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.9.0.tgz#4f837091eb407e01447c8843cbec546d0002d756" + integrity sha512-2EMA2P8Vp7lG0RAzr4HXqtYwacfMErOuv1U3wrvxHX6rD1sV6xS3WXG3r8TRQ2r6w8OhvSdWt+z41hQNwNm3Xw== + dependencies: + "@types/babel__traverse" "^7.0.6" + babel-plugin-transform-builtin-extend@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/babel-plugin-transform-builtin-extend/-/babel-plugin-transform-builtin-extend-1.1.2.tgz#5e96fecf58b8fa1ed74efcad88475b2af3c9116e" @@ -3099,6 +3338,14 @@ babel-preset-jest@^24.1.0: "@babel/plugin-syntax-object-rest-spread" "^7.0.0" babel-plugin-jest-hoist "^24.1.0" +babel-preset-jest@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-24.9.0.tgz#192b521e2217fb1d1f67cf73f70c336650ad3cdc" + integrity sha512-izTUuhE4TMfTRPF92fFwD2QfdXaZW08qvWTFCI51V8rW5x00UuPgc3ajRoWofXOuxjfcOM5zzSYsQS3H8KGCAg== + dependencies: + "@babel/plugin-syntax-object-rest-spread" "^7.0.0" + babel-plugin-jest-hoist "^24.9.0" + babel-runtime@^6.2.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" @@ -3191,7 +3438,7 @@ batch@0.6.1: bcrypt-pbkdf@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" - integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= + integrity sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w== dependencies: tweetnacl "^0.14.3" @@ -3234,6 +3481,13 @@ binary-search-bounds@^2.0.3, binary-search-bounds@^2.0.4: resolved "https://registry.yarnpkg.com/binary-search-bounds/-/binary-search-bounds-2.0.4.tgz#eea0e4081da93baa851c7d851a7e636c3d51307f" integrity sha512-2hg5kgdKql5ClF2ErBcSx0U5bnl5hgS4v7wMnLFodyR47yMtj2w+UAZB+0CiqyHct2q543i7Bi4/aMIegorCCg== +bindings@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" + integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== + dependencies: + file-uri-to-path "1.0.0" + bit-twiddle@^1.0.0, bit-twiddle@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/bit-twiddle/-/bit-twiddle-1.0.2.tgz#0c6c1fabe2b23d17173d9a61b7b7093eb9e1769e" @@ -3406,10 +3660,10 @@ browser-pack@^6.0.1: through2 "^2.0.0" umd "^3.0.0" -browser-process-hrtime@^0.1.2: - version "0.1.3" - resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz#616f00faef1df7ec1b5bf9cfe2bdc3170f26c7b4" - integrity sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw== +browser-process-hrtime@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" + integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== browser-resolve@^1.11.0, browser-resolve@^1.11.3: version "1.11.3" @@ -3556,6 +3810,16 @@ browserslist@^4.12.0, browserslist@^4.6.0, browserslist@^4.8.5: escalade "^3.0.1" node-releases "^1.1.58" +browserslist@^4.21.9: + version "4.21.9" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.9.tgz#e11bdd3c313d7e2a9e87e8b4b0c7872b13897635" + integrity sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg== + dependencies: + caniuse-lite "^1.0.30001503" + electron-to-chromium "^1.4.431" + node-releases "^2.0.12" + update-browserslist-db "^1.0.11" + browserslist@^4.6.3: version "4.8.1" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.8.1.tgz#df0f50cc4b3255322fae60ae82a946baae69f8c6" @@ -3565,10 +3829,10 @@ browserslist@^4.6.3: electron-to-chromium "^1.3.322" node-releases "^1.1.42" -bser@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/bser/-/bser-2.0.0.tgz#9ac78d3ed5d915804fd87acb158bc797147a1719" - integrity sha1-mseNPtXZFYBP2HrLFYvHlxR6Fxk= +bser@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" + integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== dependencies: node-int64 "^0.4.0" @@ -3724,9 +3988,9 @@ callsites@^2.0.0: integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= callsites@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.0.0.tgz#fb7eb569b72ad7a45812f93fd9430a3e410b3dd3" - integrity sha512-tWnkwu9YEq2uzlBDI4RcLn8jrFvF9AOi8PxDNU3hZZjJcjkcRAq3vCI+vZcg1SuxISDYe86k9VZFwAxDiJGoAw== + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== camel-case@^4.1.1: version "4.1.2" @@ -3766,6 +4030,11 @@ caniuse-lite@^1.0.30001093: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001097.tgz#1129c40c9f5ee3282158da08fd915d301f4a9bd8" integrity sha512-TeuSleKt/vWXaPkLVFqGDnbweYfq4IaZ6rUugFf3rWY6dlII8StUZ8Ddin0PkADfgYZ4wRqCdO2ORl4Rn5eZIA== +caniuse-lite@^1.0.30001503: + version "1.0.30001517" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001517.tgz#90fabae294215c3495807eb24fc809e11dc2f0a8" + integrity sha512-Vdhm5S11DaFVLlyiKu4hiUTkpZu+y1KA/rZZqVQfOD5YdDT/eQKlkt7NaE0WGOFgX32diqt9MiP9CAiFeRklaA== + canvas-fit@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/canvas-fit/-/canvas-fit-1.5.0.tgz#ae13be66ade42f5be0e487e345fce30a5e5b5e5f" @@ -3773,12 +4042,12 @@ canvas-fit@^1.5.0: dependencies: element-size "^1.1.1" -capture-exit@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-1.2.0.tgz#1c5fcc489fd0ab00d4f1ac7ae1072e3173fbab6f" - integrity sha1-HF/MSJ/QqwDU8ax64QcuMXP7q28= +capture-exit@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4" + integrity sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g== dependencies: - rsvp "^3.3.3" + rsvp "^4.8.4" cardinal@^2.1.1: version "2.1.1" @@ -3799,7 +4068,7 @@ cardinal@~0.4.2: caseless@~0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" - integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= + integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== cdt2d@^1.0.0: version "1.0.0" @@ -3949,7 +4218,7 @@ chokidar@^3.5.3: optionalDependencies: fsevents "~2.3.2" -chownr@^1.1.1, chownr@^1.1.4: +chownr@^1.1.1: version "1.1.4" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== @@ -4126,15 +4395,6 @@ cliui@^2.1.0: right-align "^0.1.1" wordwrap "0.0.2" -cliui@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" - integrity sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ== - dependencies: - string-width "^2.1.1" - strip-ansi "^4.0.0" - wrap-ansi "^2.0.0" - cliui@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" @@ -4166,12 +4426,12 @@ clsx@^1.0.1: co@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" - integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= + integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== code-point-at@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" - integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= + integrity sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA== coffeeify@3.0.1: version "3.0.1" @@ -4189,7 +4449,7 @@ coffeescript@1.12.7: collection-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" - integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= + integrity sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw== dependencies: map-visit "^1.0.0" object-visit "^1.0.0" @@ -4225,7 +4485,7 @@ color-id@^1.1.0: color-name@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== color-name@^1.0.0, color-name@~1.1.4: version "1.1.4" @@ -4323,14 +4583,7 @@ combine-source-map@^0.8.0, combine-source-map@~0.8.0: lodash.memoize "~3.0.3" source-map "~0.5.3" -combined-stream@^1.0.6, combined-stream@~1.0.6: - version "1.0.7" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.7.tgz#2d1d24317afb8abe95d6d2c0b07b57813539d828" - integrity sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w== - dependencies: - delayed-stream "~1.0.0" - -combined-stream@^1.0.8: +combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: version "1.0.8" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== @@ -4362,11 +4615,6 @@ commander@^7.2.0: resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== -commander@~2.17.1: - version "2.17.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" - integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg== - common-path-prefix@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/common-path-prefix/-/common-path-prefix-3.0.0.tgz#7d007a7e07c58c4b4d5f433131a19141b29f11e0" @@ -4406,15 +4654,10 @@ compare-oriented-cell@^1.0.1: cell-orientation "^1.0.1" compare-cell "^1.0.0" -compare-versions@^3.2.1: - version "3.4.0" - resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-3.4.0.tgz#e0747df5c9cb7f054d6d3dc3e1dbc444f9e92b26" - integrity sha512-tK69D7oNXXqUW3ZNo/z7NXTEz22TCF0pTE+YF9cxvaAM9XnkLo1fV621xCLrRR6aevJlKxExkss0vWqUCUpqdg== - component-emitter@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" - integrity sha1-E3kY1teCg/ffemt8WmPhQOaUJeY= + version "1.3.0" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" + integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== compressible@~2.0.16: version "2.0.18" @@ -4484,11 +4727,6 @@ console-browserify@^1.1.0: dependencies: date-now "^0.1.4" -console-control-strings@^1.0.0, console-control-strings@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" - integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= - const-max-uint32@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/const-max-uint32/-/const-max-uint32-1.0.2.tgz#f009bb6230e678ed874dd2d6a9cd9e3cbfabb676" @@ -4526,19 +4764,17 @@ content-type@~1.0.4: resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== -convert-source-map@^1.1.0, convert-source-map@^1.3.0, convert-source-map@^1.4.0: +convert-source-map@^1.1.0, convert-source-map@^1.3.0: version "1.6.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20" integrity sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A== dependencies: safe-buffer "~5.1.1" -convert-source-map@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" - integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== - dependencies: - safe-buffer "~5.1.1" +convert-source-map@^1.4.0, convert-source-map@^1.7.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" + integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== convert-source-map@~1.1.0: version "1.1.3" @@ -4584,7 +4820,7 @@ copy-concurrently@^1.0.0: copy-descriptor@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" - integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= + integrity sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw== copy-to-clipboard@^3.2.0: version "3.3.1" @@ -4637,7 +4873,7 @@ core-js@^2.4.0: core-util-is@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= + integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ== core-util-is@~1.0.0: version "1.0.3" @@ -4849,14 +5085,14 @@ cssesc@^0.1.0: integrity sha1-yBSQPkViM3GgR3tAEJqq++6t27Q= cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0": - version "0.3.6" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.6.tgz#f85206cee04efa841f3c5982a74ba96ab20d65ad" - integrity sha512-DtUeseGk9/GBW0hl0vVPpU22iHL6YB5BUX7ml1hB+GMpo0NX5G4voX3kdWiMSEguFtcW3Vh3djqNF4aIe6ne0A== + version "0.3.8" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" + integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== cssstyle@^1.0.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-1.2.1.tgz#3aceb2759eaf514ac1a21628d723d6043a819495" - integrity sha512-7DYm8qe+gPx/h77QlCyFmX80+fGaE/6A/Ekl0zaszYOubvySO2saYFdQ78P29D0UsULxFKCetDGNaNRUdSF+2A== + version "1.4.0" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-1.4.0.tgz#9d31328229d3c565c61e586b02041a28fccdccf1" + integrity sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA== dependencies: cssom "0.3.x" @@ -5046,7 +5282,7 @@ dash-ast@^1.0.0: dashdash@^1.12.0: version "1.14.1" resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" - integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= + integrity sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g== dependencies: assert-plus "^1.0.0" @@ -5076,7 +5312,7 @@ debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: dependencies: ms "2.0.0" -debug@4, debug@^4.1.0, debug@^4.1.1: +debug@4: version "4.2.0" resolved "https://registry.yarnpkg.com/debug/-/debug-4.2.0.tgz#7f150f93920e94c58f5574c2fd01a3110effe7f1" integrity sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg== @@ -5104,6 +5340,13 @@ debug@^3.0.0, debug@^3.1.0: dependencies: ms "^2.1.1" +debug@^4.1.0, debug@^4.1.1: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + decamelize@^1.0.0, decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" @@ -5126,15 +5369,10 @@ deep-equal@~1.1.1: object-keys "^1.1.1" regexp.prototype.flags "^1.2.0" -deep-extend@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" - integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== - deep-is@~0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" - integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= + version "0.1.4" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== deepmerge@^4.0.0: version "4.2.2" @@ -5148,13 +5386,6 @@ default-gateway@^6.0.3: dependencies: execa "^5.0.0" -default-require-extensions@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-2.0.0.tgz#f5f8fbb18a7d6d50b21f641f649ebb522cfe24f7" - integrity sha1-9fj7sYp9bVCyH2QfZJ67Uiz+JPc= - dependencies: - strip-bom "^3.0.0" - default-require-extensions@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-3.0.0.tgz#e03f93aac9b2b6443fc52e5e4a37b3ad9ad8df96" @@ -5167,24 +5398,25 @@ define-lazy-prop@^2.0.0: resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== -define-properties@^1.1.2, define-properties@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" - integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== +define-properties@^1.1.2, define-properties@^1.1.3, define-properties@^1.1.4, define-properties@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.0.tgz#52988570670c9eacedd8064f4a990f2405849bd5" + integrity sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA== dependencies: - object-keys "^1.0.12" + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" define-property@^0.2.5: version "0.2.5" resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" - integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= + integrity sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA== dependencies: is-descriptor "^0.1.0" define-property@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" - integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= + integrity sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA== dependencies: is-descriptor "^1.0.0" @@ -5212,12 +5444,7 @@ delaunay-triangulate@^1.1.6: delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= - -delegates@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== depd@2.0.0: version "2.0.0" @@ -5267,15 +5494,10 @@ detect-kerning@^2.1.2: resolved "https://registry.yarnpkg.com/detect-kerning/-/detect-kerning-2.1.2.tgz#4ecd548e4a5a3fc880fe2a50609312d000fa9fc2" integrity sha512-I3JIbrnKPAntNLl1I6TpSQQdQ4AutYzv/sKMFKbepawV/hlH0GmYKhUoOEMd4xqaUHT+Bm0f4127lh5qs1m1tw== -detect-libc@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" - integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= - detect-newline@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" - integrity sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I= + integrity sha512-CwffZFvlJffUg9zZA0uqrjQayUTC8ob94pnr5sFwaVv3IOmkfUHcWH+jXaQK3askE51Cqe8/9Ql/0uXNwqZ8Zg== detect-node@^2.0.4: version "2.0.4" @@ -5296,10 +5518,10 @@ diff-match-patch@^1.0.4: resolved "https://registry.yarnpkg.com/diff-match-patch/-/diff-match-patch-1.0.5.tgz#abb584d5f10cd1196dfc55aa03701592ae3f7b37" integrity sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw== -diff-sequences@^24.0.0: - version "24.0.0" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-24.0.0.tgz#cdf8e27ed20d8b8d3caccb4e0c0d8fe31a173013" - integrity sha512-46OkIuVGBBnrC0soO/4LHu5LHGHx0uhP65OVz8XOrAJpqiCB2aVIuESvjI1F9oqebuvY8lekS1pt6TN7vt7qsw== +diff-sequences@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-24.9.0.tgz#5715d6244e2aa65f48bba0bc972db0b0b11e95b5" + integrity sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew== diffie-hellman@^5.0.0: version "5.0.3" @@ -5543,7 +5765,7 @@ earcut@^2.1.5: ecc-jsbn@~0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" - integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= + integrity sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw== dependencies: jsbn "~0.1.0" safer-buffer "^2.1.0" @@ -5575,6 +5797,11 @@ electron-to-chromium@^1.3.488: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.496.tgz#3f43d32930481d82ad3663d79658e7c59a58af0b" integrity sha512-TXY4mwoyowwi4Lsrq9vcTUYBThyc1b2hXaTZI13p8/FRhY2CTaq5lK+DVjhYkKiTLsKt569Xes+0J5JsVXFurQ== +electron-to-chromium@^1.4.431: + version "1.4.468" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.468.tgz#3cbf64ad67d9f12bfe69fefe5eb1935ec4f6ab7a" + integrity sha512-6M1qyhaJOt7rQtNti1lBA0GwclPH+oKCmsra/hkcWs5INLxfXXD/dtdnaKUYQu/pjOBP/8Osoe4mAcNvvzoFag== + elegant-spinner@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/elegant-spinner/-/elegant-spinner-1.0.1.tgz#db043521c95d7e303fd8f345bedc3349cfb0729e" @@ -5739,7 +5966,7 @@ error-stack-parser@^2.0.6: dependencies: stackframe "^1.1.1" -es-abstract@^1.10.0, es-abstract@^1.11.0, es-abstract@^1.12.0, es-abstract@^1.5.0, es-abstract@^1.5.1, es-abstract@^1.7.0: +es-abstract@^1.10.0, es-abstract@^1.11.0, es-abstract@^1.12.0, es-abstract@^1.5.0, es-abstract@^1.7.0: version "1.13.0" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.13.0.tgz#ac86145fdd5099d8dd49558ccba2eaf9b88e24e9" integrity sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg== @@ -5804,16 +6031,66 @@ es-abstract@^1.18.0-next.1: string.prototype.trimend "^1.0.3" string.prototype.trimstart "^1.0.3" -es-to-primitive@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377" - integrity sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg== +es-abstract@^1.19.0, es-abstract@^1.20.4, es-abstract@^1.21.2: + version "1.22.1" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.1.tgz#8b4e5fc5cefd7f1660f0f8e1a52900dfbc9d9ccc" + integrity sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw== dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" + array-buffer-byte-length "^1.0.0" + arraybuffer.prototype.slice "^1.0.1" + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + es-set-tostringtag "^2.0.1" + es-to-primitive "^1.2.1" + function.prototype.name "^1.1.5" + get-intrinsic "^1.2.1" + get-symbol-description "^1.0.0" + globalthis "^1.0.3" + gopd "^1.0.1" + has "^1.0.3" + has-property-descriptors "^1.0.0" + has-proto "^1.0.1" + has-symbols "^1.0.3" + internal-slot "^1.0.5" + is-array-buffer "^3.0.2" + is-callable "^1.2.7" + is-negative-zero "^2.0.2" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.2" + is-string "^1.0.7" + is-typed-array "^1.1.10" + is-weakref "^1.0.2" + object-inspect "^1.12.3" + object-keys "^1.1.1" + object.assign "^4.1.4" + regexp.prototype.flags "^1.5.0" + safe-array-concat "^1.0.0" + safe-regex-test "^1.0.0" + string.prototype.trim "^1.2.7" + string.prototype.trimend "^1.0.6" + string.prototype.trimstart "^1.0.6" + typed-array-buffer "^1.0.0" + typed-array-byte-length "^1.0.0" + typed-array-byte-offset "^1.0.0" + typed-array-length "^1.0.4" + unbox-primitive "^1.0.2" + which-typed-array "^1.1.10" + +es-array-method-boxes-properly@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz#873f3e84418de4ee19c5be752990b2e44718d09e" + integrity sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA== -es-to-primitive@^1.2.1: +es-set-tostringtag@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz#338d502f6f674301d710b80c8592de8a15f09cd8" + integrity sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg== + dependencies: + get-intrinsic "^1.1.3" + has "^1.0.3" + has-tostringtag "^1.0.0" + +es-to-primitive@^1.2.0, es-to-primitive@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== @@ -5878,6 +6155,11 @@ escalade@^3.0.1: resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.0.1.tgz#52568a77443f6927cd0ab9c73129137533c965ed" integrity sha512-DR6NO3h9niOT+MZs7bjxlj2a1k+POu5RN8CLTPX2+i78bRi9eLe7+0zXgUHMnGXWybYcL61E9hGhPKqedy8tQA== +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + escape-html@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" @@ -5891,14 +6173,31 @@ escape-string-regexp@4.0.0: escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== -escodegen@^1.11.1, escodegen@^1.9.1: +escape-string-regexp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== + +escodegen@^1.11.1: version "1.11.1" resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.11.1.tgz#c485ff8d6b4cdb89e27f4a856e91f118401ca510" integrity sha512-JwiqFD9KdGVVpeuRa68yU3zZnBEOcPs0nKW7wZzXky8Z7tffdYUHbe11bPCV5jYlK6DVdKLWLm0f5I/QlL0Kmw== dependencies: - esprima "^3.1.3" + esprima "^3.1.3" + estraverse "^4.2.0" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.6.1" + +escodegen@^1.9.1: + version "1.14.3" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503" + integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw== + dependencies: + esprima "^4.0.1" estraverse "^4.2.0" esutils "^2.0.2" optionator "^0.8.1" @@ -6157,9 +6456,9 @@ esprima@^1.0.3: esprima@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" - integrity sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM= + integrity sha512-AWwVMNxwhN8+NIPQzAQZCm7RkLC4RbM3B1OobMuyp3i+w73X57KCKaVIxaRZb+DYCojq7rspo+fmuQfAboyhFg== -esprima@^4.0.0, esprima@~4.0.0: +esprima@^4.0.0, esprima@^4.0.1, esprima@~4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== @@ -6188,11 +6487,16 @@ esrecurse@^4.1.0: dependencies: estraverse "^4.1.0" -estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: +estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1: version "4.2.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" integrity sha1-De4/7TH81GlhjOc0IJn8GvoL2xM= +estraverse@^4.2.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + estraverse@~1.3.0: version "1.3.2" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.3.2.tgz#37c2b893ef13d723f276d878d60d8535152a6c42" @@ -6203,11 +6507,16 @@ estraverse@~1.5.0: resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.5.1.tgz#867a3e8e58a9f84618afb6c2ddbcd916b7cbaf71" integrity sha1-hno+jlip+EYYr7bC3bzZFrfLr3E= -esutils@^2.0.0, esutils@^2.0.2: +esutils@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs= +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + esutils@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/esutils/-/esutils-1.0.0.tgz#8151d358e20c8acc7fb745e7472c0025fe496570" @@ -6251,12 +6560,10 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: md5.js "^1.3.4" safe-buffer "^5.1.1" -exec-sh@^0.2.0: - version "0.2.2" - resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.2.2.tgz#2a5e7ffcbd7d0ba2755bdecb16e5a427dfbdec36" - integrity sha512-FIUCJz1RbuS0FKTdaAafAByGS0CPvU3R0MeHxgtl+djzCc//F8HakL8GzmVNZanasTbTAY/3DRFA0KpVqj/eAw== - dependencies: - merge "^1.2.0" +exec-sh@^0.3.2: + version "0.3.6" + resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.6.tgz#ff264f9e325519a60cb5e273692943483cca63bc" + integrity sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w== execa@4.0.2: version "4.0.2" @@ -6331,12 +6638,12 @@ exit-hook@^1.0.0: exit@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" - integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= + integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== expand-brackets@^2.1.4: version "2.1.4" resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" - integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= + integrity sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA== dependencies: debug "^2.3.3" define-property "^0.2.5" @@ -6353,16 +6660,17 @@ expand-tilde@^2.0.0, expand-tilde@^2.0.2: dependencies: homedir-polyfill "^1.0.1" -expect@^24.1.0: - version "24.1.0" - resolved "https://registry.yarnpkg.com/expect/-/expect-24.1.0.tgz#88e73301c4c785cde5f16da130ab407bdaf8c0f2" - integrity sha512-lVcAPhaYkQcIyMS+F8RVwzbm1jro20IG8OkvxQ6f1JfqhVZyyudCwYogQ7wnktlf14iF3ii7ArIUO/mqvrW9Gw== +expect@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/expect/-/expect-24.9.0.tgz#b75165b4817074fa4a157794f46fe9f1ba15b6ca" + integrity sha512-wvVAx8XIol3Z5m9zvZXiyZOQ+sRJqNTIm6sGjdWlaZIeupQGO3WbYI+15D/AmEwZywL6wtJkbAbJtzkOfBuR0Q== dependencies: + "@jest/types" "^24.9.0" ansi-styles "^3.2.0" - jest-get-type "^24.0.0" - jest-matcher-utils "^24.0.0" - jest-message-util "^24.0.0" - jest-regex-util "^24.0.0" + jest-get-type "^24.9.0" + jest-matcher-utils "^24.9.0" + jest-message-util "^24.9.0" + jest-regex-util "^24.9.0" express@^4.16.3: version "4.16.4" @@ -6447,14 +6755,14 @@ ext@^1.1.2: extend-shallow@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" - integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= + integrity sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug== dependencies: is-extendable "^0.1.0" extend-shallow@^3.0.0, extend-shallow@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" - integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= + integrity sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q== dependencies: assign-symbols "^1.0.0" is-extendable "^1.0.1" @@ -6507,10 +6815,15 @@ extract-zip@^1.6.6, extract-zip@^1.7.0: mkdirp "^0.5.4" yauzl "^2.10.0" -extsprintf@1.3.0, extsprintf@^1.2.0: +extsprintf@1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" - integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= + integrity sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g== + +extsprintf@^1.2.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07" + integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA== falafel@^2.1.0: version "2.2.4" @@ -6547,14 +6860,14 @@ fast-isnumeric@^1.1.3: is-string-blank "^1.0.1" fast-json-stable-stringify@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" - integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I= + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== -fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.4, fast-levenshtein@~2.0.6: +fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== fast-safe-stringify@^2.0.4, fast-safe-stringify@^2.0.7: version "2.0.7" @@ -6581,11 +6894,11 @@ faye-websocket@^0.11.3: websocket-driver ">=0.5.1" fb-watchman@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.0.tgz#54e9abf7dfa2f26cd9b1636c588c1afc05de5d58" - integrity sha1-VOmr99+i8mzZsWNsWIwa/AXeXVg= + version "2.0.2" + resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.2.tgz#e9524ee6b5c77e9e5001af0f85f3adbb8623255c" + integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA== dependencies: - bser "^2.0.0" + bser "2.1.1" fd-slicer@~1.1.0: version "1.1.0" @@ -6641,18 +6954,15 @@ file-loader@^2.0.0: loader-utils "^1.0.2" schema-utils "^1.0.0" -fileset@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/fileset/-/fileset-2.0.3.tgz#8e7548a96d3cc2327ee5e674168723a333bba2a0" - integrity sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA= - dependencies: - glob "^7.0.3" - minimatch "^3.0.3" +file-uri-to-path@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" + integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== fill-range@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" - integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= + integrity sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ== dependencies: extend-shallow "^2.0.1" is-number "^3.0.0" @@ -6866,7 +7176,7 @@ font-measure@^1.2.2: dependencies: css-font "^1.2.0" -for-each@~0.3.3: +for-each@^0.3.3, for-each@~0.3.3: version "0.3.3" resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== @@ -6876,7 +7186,7 @@ for-each@~0.3.3: for-in@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= + integrity sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ== foreach@^2.0.5: version "2.0.5" @@ -6899,7 +7209,7 @@ foreground-child@^2.0.0: forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" - integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= + integrity sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw== form-data@^4.0.0: version "4.0.0" @@ -6932,7 +7242,7 @@ forwarded@~0.1.2: fragment-cache@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" - integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= + integrity sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA== dependencies: map-cache "^0.2.2" @@ -6992,13 +7302,6 @@ fs-extra@^9.0.1: jsonfile "^6.0.1" universalify "^1.0.0" -fs-minipass@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" - integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== - dependencies: - minipass "^2.6.0" - fs-monkey@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.4.tgz#ee8c1b53d3fe8bb7e5d2c5c5dfc0168afdd2f747" @@ -7024,13 +7327,13 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== -fsevents@^1.2.3, fsevents@^1.2.7: - version "1.2.9" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.9.tgz#3f5ed66583ccd6f400b5a00db6f7e861363e388f" - integrity sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw== +fsevents@^1.2.7: + version "1.2.13" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" + integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== dependencies: + bindings "^1.5.0" nan "^2.12.1" - node-pre-gyp "^0.12.0" fsevents@^2.3.2, fsevents@~2.3.2: version "2.3.2" @@ -7056,39 +7359,40 @@ function.prototype.name@^1.1.0: function-bind "^1.1.1" is-callable "^1.1.3" +function.prototype.name@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.5.tgz#cce0505fe1ffb80503e6f9e46cc64e46a12a9621" + integrity sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.0" + functions-have-names "^1.2.2" + functional-red-black-tree@^1.0.0, functional-red-black-tree@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= +functions-have-names@^1.2.2, functions-have-names@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" + integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== + gamma@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/gamma/-/gamma-0.1.0.tgz#3315643403bf27906ca80ab37c36ece9440ef330" integrity sha1-MxVkNAO/J5BsqAqzfDbs6UQO8zA= -gauge@~2.7.3: - version "2.7.4" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" - integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= - dependencies: - aproba "^1.0.3" - console-control-strings "^1.0.0" - has-unicode "^2.0.0" - object-assign "^4.1.0" - signal-exit "^3.0.0" - string-width "^1.0.1" - strip-ansi "^3.0.1" - wide-align "^1.1.0" - generic-pool@^3.7.1: version "3.7.1" resolved "https://registry.yarnpkg.com/generic-pool/-/generic-pool-3.7.1.tgz#36fe5bb83e7e0e032e5d32cd05dc00f5ff119aa8" integrity sha512-ug6DAZoNgWm6q5KhPFA+hzXfBLFQu5sTXxPpv44DmE0A2g+CiHoq9LTVdkXpZMkYVMoGw83F6W+WT0h0MFMK/w== -gensync@^1.0.0-beta.1: - version "1.0.0-beta.1" - resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" - integrity sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg== +gensync@^1.0.0-beta.1, gensync@^1.0.0-beta.2: + version "1.0.0-beta.2" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== geojson-vt@^3.2.1: version "3.2.1" @@ -7100,11 +7404,6 @@ get-assigned-identifiers@^1.2.0: resolved "https://registry.yarnpkg.com/get-assigned-identifiers/-/get-assigned-identifiers-1.2.0.tgz#6dbf411de648cbaf8d9169ebb0d2d576191e2ff1" integrity sha512-mBBwmeGTrxEMO4pMaaf/uUEFHnYtwr8FTe8Y/mer4rcV/bye0qGm6pw1bGZFGStxC5O76c5ZAVBGnqHmOaJpdQ== -get-caller-file@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" - integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== - get-caller-file@^2.0.1: version "2.0.5" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" @@ -7115,7 +7414,7 @@ get-canvas-context@^1.0.1: resolved "https://registry.yarnpkg.com/get-canvas-context/-/get-canvas-context-1.0.2.tgz#d6e7b50bc4e4c86357cd39f22647a84b73601e93" integrity sha1-1ue1C8TkyGNXzTnyJkeoS3NgHpM= -get-intrinsic@^1.0.1, get-intrinsic@^1.0.2: +get-intrinsic@^1.0.1: version "1.1.1" resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== @@ -7124,6 +7423,16 @@ get-intrinsic@^1.0.1, get-intrinsic@^1.0.2: has "^1.0.3" has-symbols "^1.0.1" +get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0, get-intrinsic@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.1.tgz#d295644fed4505fc9cde952c37ee12b477a83d82" + integrity sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-proto "^1.0.1" + has-symbols "^1.0.3" + get-package-type@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" @@ -7153,10 +7462,18 @@ get-stream@^6.0.0: resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== +get-symbol-description@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" + integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.1" + get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" - integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= + integrity sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA== getos@^3.2.1: version "3.2.1" @@ -7168,7 +7485,7 @@ getos@^3.2.1: getpass@^0.1.1: version "0.1.7" resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" - integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= + integrity sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng== dependencies: assert-plus "^1.0.0" @@ -7588,7 +7905,7 @@ glob-parent@~5.1.2: dependencies: is-glob "^4.0.1" -glob@^7.0.0, glob@^7.0.3, glob@^7.1.0, glob@^7.1.1: +glob@^7.0.0, glob@^7.1.0: version "7.1.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== @@ -7600,7 +7917,7 @@ glob@^7.0.0, glob@^7.0.3, glob@^7.1.0, glob@^7.1.1: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.1.2, glob@^7.1.3: +glob@^7.1.1, glob@^7.1.2, glob@^7.1.3: version "7.2.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== @@ -7667,11 +7984,16 @@ global-prefix@^3.0.0: kind-of "^6.0.2" which "^1.3.1" -globals@^11.0.1, globals@^11.1.0: +globals@^11.0.1: version "11.11.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.11.0.tgz#dcf93757fa2de5486fbeed7118538adf789e9c2e" integrity sha512-WHq43gS+6ufNOEqlrDBxVEbb8ntfXrfAUU2ZOpCxrBdGKW3gyv8mCxAfIBD0DroPKGrJ2eSsXsLtY9MPntsyTw== +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + globals@^12.1.0: version "12.3.0" resolved "https://registry.yarnpkg.com/globals/-/globals-12.3.0.tgz#1e564ee5c4dded2ab098b0f88f24702a3c56be13" @@ -7684,6 +8006,13 @@ globals@^9.18.0: resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" integrity sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ== +globalthis@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" + integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== + dependencies: + define-properties "^1.1.3" + globby@11.0.0: version "11.0.0" resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.0.tgz#56fd0e9f0d4f8fb0c456f1ab0dee96e1380bc154" @@ -7891,16 +8220,18 @@ glslify@^7.0.0: through2 "^2.0.1" xtend "^4.0.0" -graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.2.6: +gopd@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" + integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== + dependencies: + get-intrinsic "^1.1.3" + +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.2.6: version "4.2.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== -graceful-fs@^4.1.15: - version "4.1.15" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" - integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA== - graceful-fs@^4.1.6, graceful-fs@^4.2.0: version "4.2.4" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" @@ -7914,7 +8245,7 @@ grid-index@^1.1.0: growly@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" - integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= + integrity sha512-+xGQY0YyAWCnqy7Cd++hc2JqMYzlm0dG30Jd0beaA64sROr8C4nt8Yc9V5Ro3avlSUDTN0ulqP/VBKi1/lLygw== gzip-size@^6.0.0: version "6.0.0" @@ -7928,29 +8259,17 @@ handle-thing@^2.0.0: resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== -handlebars@^4.1.0: - version "4.7.7" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1" - integrity sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA== - dependencies: - minimist "^1.2.5" - neo-async "^2.6.0" - source-map "^0.6.1" - wordwrap "^1.0.0" - optionalDependencies: - uglify-js "^3.1.4" - har-schema@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" - integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= + integrity sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q== har-validator@~5.1.0, har-validator@~5.1.3: - version "5.1.3" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" - integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== + version "5.1.5" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" + integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== dependencies: - ajv "^6.5.5" + ajv "^6.12.3" har-schema "^2.0.0" harmony-reflect@^1.4.6: @@ -7965,6 +8284,11 @@ has-ansi@^2.0.0: dependencies: ansi-regex "^2.0.0" +has-bigints@^1.0.1, has-bigints@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" + integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== + has-flag@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" @@ -7978,7 +8302,7 @@ has-flag@^2.0.0: has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== has-flag@^4.0.0: version "4.0.0" @@ -7999,25 +8323,34 @@ has-passive-events@^1.0.0: dependencies: is-browser "^2.0.1" -has-symbols@^1.0.0: +has-property-descriptors@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" - integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q= + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" + integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== + dependencies: + get-intrinsic "^1.1.1" -has-symbols@^1.0.1: +has-proto@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" - integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== + resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" + integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== -has-unicode@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" - integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= +has-symbols@^1.0.0, has-symbols@^1.0.1, has-symbols@^1.0.2, has-symbols@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== + +has-tostringtag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" + integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== + dependencies: + has-symbols "^1.0.2" has-value@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" - integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= + integrity sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q== dependencies: get-value "^2.0.3" has-values "^0.1.4" @@ -8026,7 +8359,7 @@ has-value@^0.3.1: has-value@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" - integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= + integrity sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw== dependencies: get-value "^2.0.6" has-values "^1.0.0" @@ -8035,12 +8368,12 @@ has-value@^1.0.0: has-values@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" - integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= + integrity sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ== has-values@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" - integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= + integrity sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ== dependencies: is-number "^3.0.0" kind-of "^4.0.0" @@ -8276,7 +8609,7 @@ http-proxy@^1.18.1: http-signature@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" - integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= + integrity sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ== dependencies: assert-plus "^1.0.0" jsprim "^1.2.2" @@ -8317,7 +8650,7 @@ iconv-lite@0.4.23: dependencies: safer-buffer ">= 2.1.2 < 3" -iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4: +iconv-lite@0.4.24, iconv-lite@^0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -8353,13 +8686,6 @@ iferr@^0.1.5: resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" integrity sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA== -ignore-walk@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8" - integrity sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ== - dependencies: - minimatch "^3.0.4" - ignore@^3.3.5: version "3.3.10" resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" @@ -8478,7 +8804,7 @@ inherits@2.0.3: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= -ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: +ini@^1.3.4, ini@^1.3.5: version "1.3.8" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== @@ -8530,6 +8856,15 @@ insert-module-globals@^7.0.0: undeclared-identifiers "^1.1.2" xtend "^4.0.0" +internal-slot@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.5.tgz#f2a2ee21f668f8627a4667f309dc0f4fb6674986" + integrity sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ== + dependencies: + get-intrinsic "^1.2.0" + has "^1.0.3" + side-channel "^1.0.4" + interpret@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" @@ -8549,11 +8884,6 @@ invariant@^2.2.0, invariant@^2.2.2, invariant@^2.2.4: dependencies: loose-envify "^1.0.0" -invert-kv@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" - integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA== - invert-permutation@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/invert-permutation/-/invert-permutation-1.0.0.tgz#a0a78042eadb36bc17551e787efd1439add54933" @@ -8582,7 +8912,7 @@ ipaddr.js@^2.0.1: is-accessor-descriptor@^0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" - integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= + integrity sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A== dependencies: kind-of "^3.0.2" @@ -8598,10 +8928,19 @@ is-arguments@^1.0.4: resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3" integrity sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA== +is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.2.tgz#f2653ced8412081638ecb0ebbd0c41c6e0aecbbe" + integrity sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.0" + is-typed-array "^1.1.10" + is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= + integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== is-arrayish@^0.3.1: version "0.3.2" @@ -8613,6 +8952,13 @@ is-base64@^0.1.0: resolved "https://registry.yarnpkg.com/is-base64/-/is-base64-0.1.0.tgz#a6f20610c6ef4863a51cba32bc0222544b932622" integrity sha512-WRRyllsGXJM7ZN7gPTCCQ/6wNPTRDwiWdPK66l5sJzcU/oOzcIcRRf0Rux8bkpox/1yjt0F6VJRsQOIG2qz5sg== +is-bigint@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" + integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== + dependencies: + has-bigints "^1.0.1" + is-binary-path@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" @@ -8637,6 +8983,14 @@ is-boolean-object@^1.0.0: resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.0.0.tgz#98f8b28030684219a95f375cfbd88ce3405dff93" integrity sha1-mPiygDBoQhmpXzdc+9iM40Bd/5M= +is-boolean-object@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" + integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + is-browser@^2.0.1, is-browser@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-browser/-/is-browser-2.1.0.tgz#fc084d59a5fced307d6708c59356bad7007371a9" @@ -8652,10 +9006,10 @@ is-buffer@^2.0.3: resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.4.tgz#3e572f23c8411a5cfd9557c849e3665e0b290623" integrity sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A== -is-callable@^1.1.3, is-callable@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" - integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA== +is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" + integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== is-callable@^1.1.5: version "1.1.5" @@ -8674,10 +9028,17 @@ is-ci@^2.0.0: dependencies: ci-info "^2.0.0" +is-core-module@^2.11.0: + version "2.12.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.12.1.tgz#0c0b6885b6f80011c71541ce15c8d66cf5a4f9fd" + integrity sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg== + dependencies: + has "^1.0.3" + is-data-descriptor@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" - integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= + integrity sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg== dependencies: kind-of "^3.0.2" @@ -8689,9 +9050,11 @@ is-data-descriptor@^1.0.0: kind-of "^6.0.0" is-date-object@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" - integrity sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY= + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" + integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== + dependencies: + has-tostringtag "^1.0.0" is-descriptor@^0.1.0: version "0.1.6" @@ -8729,7 +9092,7 @@ is-docker@^2.1.1: is-extendable@^0.1.0, is-extendable@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" - integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= + integrity sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw== is-extendable@^1.0.1: version "1.0.1" @@ -8761,14 +9124,14 @@ is-float-array@^1.0.0: is-fullwidth-code-point@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" - integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= + integrity sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw== dependencies: number-is-nan "^1.0.0" is-fullwidth-code-point@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + integrity sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w== is-fullwidth-code-point@^3.0.0: version "3.0.0" @@ -8776,9 +9139,9 @@ is-fullwidth-code-point@^3.0.0: integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== is-generator-fn@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.0.0.tgz#038c31b774709641bda678b1f06a4e3227c10b3e" - integrity sha512-elzyIdM7iKoFHzcrndIqjYomImhxrFRnGP3galODoII4TB9gI7mZ+FnlLQmmjf27SxHS2gKEeyhX5/+YRS6H9g== + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" + integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== is-glob@^3.1.0: version "3.1.0" @@ -8824,15 +9187,27 @@ is-negative-zero@^2.0.1: resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== +is-negative-zero@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" + integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== + is-number-object@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.3.tgz#f265ab89a9f445034ef6aff15a8f00b00f551799" integrity sha1-8mWrian0RQNO9q/xWo8AsA9VF5k= +is-number-object@^1.0.4: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" + integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== + dependencies: + has-tostringtag "^1.0.0" + is-number@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" - integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= + integrity sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg== dependencies: kind-of "^3.0.2" @@ -8868,7 +9243,7 @@ is-plain-obj@^3.0.0: resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz#af6f2ea14ac5a646183a5bbdb5baabbc156ad9d7" integrity sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA== -is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: +is-plain-object@^2.0.3, is-plain-object@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== @@ -8880,12 +9255,13 @@ is-promise@^2.1.0: resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= -is-regex@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" - integrity sha1-VRdIm1RwkbCTDglWVM7SXul+lJE= +is-regex@^1.0.4, is-regex@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" + integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== dependencies: - has "^1.0.1" + call-bind "^1.0.2" + has-tostringtag "^1.0.0" is-regex@^1.0.5, is-regex@~1.0.5: version "1.0.5" @@ -8902,10 +9278,17 @@ is-regex@^1.1.1: call-bind "^1.0.2" has-symbols "^1.0.1" +is-shared-array-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" + integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== + dependencies: + call-bind "^1.0.2" + is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" - integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= + integrity sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ== is-stream@^2.0.0: version "2.0.0" @@ -8922,10 +9305,12 @@ is-string@^1.0.4: resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.4.tgz#cc3a9b69857d621e963725a24caeec873b826e64" integrity sha1-zDqbaYV9Yh6WNyWiTK7shzuCbmQ= -is-string@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" - integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== +is-string@^1.0.5, is-string@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" + integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== + dependencies: + has-tostringtag "^1.0.0" is-subset@^0.1.1: version "0.1.1" @@ -8937,18 +9322,32 @@ is-svg-path@^1.0.1: resolved "https://registry.yarnpkg.com/is-svg-path/-/is-svg-path-1.0.2.tgz#77ab590c12b3d20348e5c7a13d0040c87784dda0" integrity sha1-d6tZDBKz0gNI5cehPQBAyHeE3aA= -is-symbol@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38" - integrity sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw== +is-symbol@^1.0.2, is-symbol@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" + integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== dependencies: - has-symbols "^1.0.0" + has-symbols "^1.0.2" + +is-typed-array@^1.1.10, is-typed-array@^1.1.9: + version "1.1.12" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.12.tgz#d0bab5686ef4a76f7a73097b95470ab199c57d4a" + integrity sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg== + dependencies: + which-typed-array "^1.1.11" is-typedarray@^1.0.0, is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= +is-weakref@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" + integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== + dependencies: + call-bind "^1.0.2" + is-windows@^1.0.1, is-windows@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" @@ -8957,7 +9356,7 @@ is-windows@^1.0.1, is-windows@^1.0.2: is-wsl@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" - integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= + integrity sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw== is-wsl@^2.1.1, is-wsl@^2.2.0: version "2.2.0" @@ -8976,7 +9375,7 @@ isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== -isarray@^2.0.1: +isarray@^2.0.1, isarray@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== @@ -8984,66 +9383,35 @@ isarray@^2.0.1: isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== isobject@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= + integrity sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA== dependencies: isarray "1.0.0" isobject@^3.0.0, isobject@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= + integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== isstream@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= - -istanbul-api@^2.0.8: - version "2.1.1" - resolved "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-2.1.1.tgz#194b773f6d9cbc99a9258446848b0f988951c4d0" - integrity sha512-kVmYrehiwyeBAk/wE71tW6emzLiHGjYIiDrc8sfyty4F8M02/lrgXSm+R1kXysmF20zArvmZXjlE/mg24TVPJw== - dependencies: - async "^2.6.1" - compare-versions "^3.2.1" - fileset "^2.0.3" - istanbul-lib-coverage "^2.0.3" - istanbul-lib-hook "^2.0.3" - istanbul-lib-instrument "^3.1.0" - istanbul-lib-report "^2.0.4" - istanbul-lib-source-maps "^3.0.2" - istanbul-reports "^2.1.1" - js-yaml "^3.12.0" - make-dir "^1.3.0" - minimatch "^3.0.4" - once "^1.4.0" + integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g== istanbul-lib-coverage@3.0.0, istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.0.0-alpha.1: version "3.0.0" resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec" integrity sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg== -istanbul-lib-coverage@^2.0.2, istanbul-lib-coverage@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz#0b891e5ad42312c2b9488554f603795f9a2211ba" - integrity sha512-dKWuzRGCs4G+67VfW9pBFFz2Jpi4vSp/k7zBcJ888ofV5Mi1g5CUML5GvMvV6u9Cjybftu+E8Cgp+k0dI1E5lw== - -istanbul-lib-coverage@^2.0.5: +istanbul-lib-coverage@^2.0.2, istanbul-lib-coverage@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz#675f0ab69503fad4b1d849f736baaca803344f49" integrity sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA== -istanbul-lib-hook@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-2.0.3.tgz#e0e581e461c611be5d0e5ef31c5f0109759916fb" - integrity sha512-CLmEqwEhuCYtGcpNVJjLV1DQyVnIqavMLFHV/DP+np/g3qvdxu3gsPqYoJMXm15sN84xOlckFB3VNvRbf5yEgA== - dependencies: - append-transform "^1.0.0" - istanbul-lib-hook@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz#8f84c9434888cc6b1d0a9d7092a76d239ebf0cc6" @@ -9051,20 +9419,7 @@ istanbul-lib-hook@^3.0.0: dependencies: append-transform "^2.0.0" -istanbul-lib-instrument@^3.0.1, istanbul-lib-instrument@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-3.1.0.tgz#a2b5484a7d445f1f311e93190813fa56dfb62971" - integrity sha512-ooVllVGT38HIk8MxDj/OIHXSYvH+1tq/Vb38s8ixt9GoJadXska4WkGY+0wkmtYCZNYtaARniH/DixUGGLZ0uA== - dependencies: - "@babel/generator" "^7.0.0" - "@babel/parser" "^7.0.0" - "@babel/template" "^7.0.0" - "@babel/traverse" "^7.0.0" - "@babel/types" "^7.0.0" - istanbul-lib-coverage "^2.0.3" - semver "^5.5.0" - -istanbul-lib-instrument@^3.3.0: +istanbul-lib-instrument@^3.0.1, istanbul-lib-instrument@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz#a5f63d91f0bbc0c3e479ef4c5de027335ec6d630" integrity sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA== @@ -9101,13 +9456,13 @@ istanbul-lib-processinfo@^2.0.2: uuid "^3.3.3" istanbul-lib-report@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-2.0.4.tgz#bfd324ee0c04f59119cb4f07dab157d09f24d7e4" - integrity sha512-sOiLZLAWpA0+3b5w5/dq0cjm2rrNdAfHWaGhmn7XEFW6X++IV9Ohn+pnELAl9K3rfpaeBfbmH9JU5sejacdLeA== + version "2.0.8" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz#5a8113cd746d43c4889eba36ab10e7d50c9b4f33" + integrity sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ== dependencies: - istanbul-lib-coverage "^2.0.3" - make-dir "^1.3.0" - supports-color "^6.0.0" + istanbul-lib-coverage "^2.0.5" + make-dir "^2.1.0" + supports-color "^6.1.0" istanbul-lib-report@^3.0.0: version "3.0.0" @@ -9118,15 +9473,15 @@ istanbul-lib-report@^3.0.0: make-dir "^3.0.0" supports-color "^7.1.0" -istanbul-lib-source-maps@^3.0.1, istanbul-lib-source-maps@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.2.tgz#f1e817229a9146e8424a28e5d69ba220fda34156" - integrity sha512-JX4v0CiKTGp9fZPmoxpu9YEkPbEqCqBbO3403VabKjH+NRXo72HafD5UgnjTEqHL2SAjaZK1XDuDOkn6I5QVfQ== +istanbul-lib-source-maps@^3.0.1: + version "3.0.6" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz#284997c48211752ec486253da97e3879defba8c8" + integrity sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw== dependencies: debug "^4.1.1" - istanbul-lib-coverage "^2.0.3" - make-dir "^1.3.0" - rimraf "^2.6.2" + istanbul-lib-coverage "^2.0.5" + make-dir "^2.1.0" + rimraf "^2.6.3" source-map "^0.6.1" istanbul-lib-source-maps@^4.0.0: @@ -9138,12 +9493,12 @@ istanbul-lib-source-maps@^4.0.0: istanbul-lib-coverage "^3.0.0" source-map "^0.6.1" -istanbul-reports@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-2.1.1.tgz#72ef16b4ecb9a4a7bd0e2001e00f95d1eec8afa9" - integrity sha512-FzNahnidyEPBCI0HcufJoSEoKykesRlFcSzQqjH9x0+LC8tnnE/p/90PBLu8iZTxr8yYZNyTtiAujUqyN+CIxw== +istanbul-reports@^2.2.6: + version "2.2.7" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-2.2.7.tgz#5d939f6237d7b48393cc0959eab40cd4fd056931" + integrity sha512-uu1F/L1o5Y6LzPVSVZXNOoD/KXpJue9aeLRd0sM9uMXfZvzomB0WxVamWb5ue8kA2vVWEmW7EG+A5n3f1kqHKg== dependencies: - handlebars "^4.1.0" + html-escaper "^2.0.0" istanbul-reports@^3.0.2: version "3.0.2" @@ -9153,334 +9508,359 @@ istanbul-reports@^3.0.2: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" -jest-changed-files@^24.0.0: - version "24.0.0" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-24.0.0.tgz#c02c09a8cc9ca93f513166bc773741bd39898ff7" - integrity sha512-nnuU510R9U+UX0WNb5XFEcsrMqriSiRLeO9KWDFgPrpToaQm60prfQYpxsXigdClpvNot5bekDY440x9dNGnsQ== +jest-changed-files@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-24.9.0.tgz#08d8c15eb79a7fa3fc98269bc14b451ee82f8039" + integrity sha512-6aTWpe2mHF0DhL28WjdkO8LyGjs3zItPET4bMSeXU6T3ub4FPMw+mcOcbdGXQOAfmLcxofD23/5Bl9Z4AkFwqg== dependencies: + "@jest/types" "^24.9.0" execa "^1.0.0" throat "^4.0.0" -jest-cli@^24.1.0: - version "24.1.0" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-24.1.0.tgz#f7cc98995f36e7210cce3cbb12974cbf60940843" - integrity sha512-U/iyWPwOI0T1CIxVLtk/2uviOTJ/OiSWJSe8qt6X1VkbbgP+nrtLJlmT9lPBe4lK78VNFJtrJ7pttcNv/s7yCw== +jest-cli@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-24.9.0.tgz#ad2de62d07472d419c6abc301fc432b98b10d2af" + integrity sha512-+VLRKyitT3BWoMeSUIHRxV/2g8y9gw91Jh5z2UmXZzkZKpbC08CSehVxgHUwTpy+HwGcns/tqafQDJW7imYvGg== dependencies: - ansi-escapes "^3.0.0" + "@jest/core" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" chalk "^2.0.1" exit "^0.1.2" - glob "^7.1.2" - graceful-fs "^4.1.15" import-local "^2.0.0" is-ci "^2.0.0" - istanbul-api "^2.0.8" - istanbul-lib-coverage "^2.0.2" - istanbul-lib-instrument "^3.0.1" - istanbul-lib-source-maps "^3.0.1" - jest-changed-files "^24.0.0" - jest-config "^24.1.0" - jest-environment-jsdom "^24.0.0" - jest-get-type "^24.0.0" - jest-haste-map "^24.0.0" - jest-message-util "^24.0.0" - jest-regex-util "^24.0.0" - jest-resolve-dependencies "^24.1.0" - jest-runner "^24.1.0" - jest-runtime "^24.1.0" - jest-snapshot "^24.1.0" - jest-util "^24.0.0" - jest-validate "^24.0.0" - jest-watcher "^24.0.0" - jest-worker "^24.0.0" - micromatch "^3.1.10" - node-notifier "^5.2.1" - p-each-series "^1.0.0" - pirates "^4.0.0" + jest-config "^24.9.0" + jest-util "^24.9.0" + jest-validate "^24.9.0" prompts "^2.0.1" - realpath-native "^1.0.0" - rimraf "^2.5.4" - slash "^2.0.0" - string-length "^2.0.0" - strip-ansi "^5.0.0" - which "^1.2.12" - yargs "^12.0.2" + realpath-native "^1.1.0" + yargs "^13.3.0" -jest-config@^24.1.0: - version "24.1.0" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-24.1.0.tgz#6ea6881cfdd299bc86cc144ee36d937c97c3850c" - integrity sha512-FbbRzRqtFC6eGjG5VwsbW4E5dW3zqJKLWYiZWhB0/4E5fgsMw8GODLbGSrY5t17kKOtCWb/Z7nsIThRoDpuVyg== +jest-config@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-24.9.0.tgz#fb1bbc60c73a46af03590719efa4825e6e4dd1b5" + integrity sha512-RATtQJtVYQrp7fvWg6f5y3pEFj9I+H8sWw4aKxnDZ96mob5i5SD6ZEGWgMLXQ4LE8UurrjbdlLWdUeo+28QpfQ== dependencies: "@babel/core" "^7.1.0" - babel-jest "^24.1.0" + "@jest/test-sequencer" "^24.9.0" + "@jest/types" "^24.9.0" + babel-jest "^24.9.0" chalk "^2.0.1" glob "^7.1.1" - jest-environment-jsdom "^24.0.0" - jest-environment-node "^24.0.0" - jest-get-type "^24.0.0" - jest-jasmine2 "^24.1.0" - jest-regex-util "^24.0.0" - jest-resolve "^24.1.0" - jest-util "^24.0.0" - jest-validate "^24.0.0" + jest-environment-jsdom "^24.9.0" + jest-environment-node "^24.9.0" + jest-get-type "^24.9.0" + jest-jasmine2 "^24.9.0" + jest-regex-util "^24.3.0" + jest-resolve "^24.9.0" + jest-util "^24.9.0" + jest-validate "^24.9.0" micromatch "^3.1.10" - pretty-format "^24.0.0" - realpath-native "^1.0.2" + pretty-format "^24.9.0" + realpath-native "^1.1.0" -jest-diff@^24.0.0: - version "24.0.0" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-24.0.0.tgz#a3e5f573dbac482f7d9513ac9cfa21644d3d6b34" - integrity sha512-XY5wMpRaTsuMoU+1/B2zQSKQ9RdE9gsLkGydx3nvApeyPijLA8GtEvIcPwISRCer+VDf9W1mStTYYq6fPt8ryA== +jest-diff@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-24.9.0.tgz#931b7d0d5778a1baf7452cb816e325e3724055da" + integrity sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ== dependencies: chalk "^2.0.1" - diff-sequences "^24.0.0" - jest-get-type "^24.0.0" - pretty-format "^24.0.0" + diff-sequences "^24.9.0" + jest-get-type "^24.9.0" + pretty-format "^24.9.0" -jest-docblock@^24.0.0: - version "24.0.0" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-24.0.0.tgz#54d77a188743e37f62181a91a01eb9222289f94e" - integrity sha512-KfAKZ4SN7CFOZpWg4i7g7MSlY0M+mq7K0aMqENaG2vHuhC9fc3vkpU/iNN9sOus7v3h3Y48uEjqz3+Gdn2iptA== +jest-docblock@^24.3.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-24.9.0.tgz#7970201802ba560e1c4092cc25cbedf5af5a8ce2" + integrity sha512-F1DjdpDMJMA1cN6He0FNYNZlo3yYmOtRUnktrT9Q37njYzC5WEaDdmbynIgy0L/IvXvvgsG8OsqhLPXTpfmZAA== dependencies: detect-newline "^2.1.0" -jest-each@^24.0.0: - version "24.0.0" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-24.0.0.tgz#10987a06b21c7ffbfb7706c89d24c52ed864be55" - integrity sha512-gFcbY4Cu55yxExXMkjrnLXov3bWO3dbPAW7HXb31h/DNWdNc/6X8MtxGff8nh3/MjkF9DpVqnj0KsPKuPK0cpA== +jest-each@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-24.9.0.tgz#eb2da602e2a610898dbc5f1f6df3ba86b55f8b05" + integrity sha512-ONi0R4BvW45cw8s2Lrx8YgbeXL1oCQ/wIDwmsM3CqM/nlblNCPmnC3IPQlMbRFZu3wKdQ2U8BqM6lh3LJ5Bsog== dependencies: + "@jest/types" "^24.9.0" chalk "^2.0.1" - jest-get-type "^24.0.0" - jest-util "^24.0.0" - pretty-format "^24.0.0" - -jest-environment-jsdom@^24.0.0: - version "24.0.0" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-24.0.0.tgz#5affa0654d6e44cd798003daa1a8701dbd6e4d11" - integrity sha512-1YNp7xtxajTRaxbylDc2pWvFnfDTH5BJJGyVzyGAKNt/lEULohwEV9zFqTgG4bXRcq7xzdd+sGFws+LxThXXOw== - dependencies: - jest-mock "^24.0.0" - jest-util "^24.0.0" + jest-get-type "^24.9.0" + jest-util "^24.9.0" + pretty-format "^24.9.0" + +jest-environment-jsdom@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-24.9.0.tgz#4b0806c7fc94f95edb369a69cc2778eec2b7375b" + integrity sha512-Zv9FV9NBRzLuALXjvRijO2351DRQeLYXtpD4xNvfoVFw21IOKNhZAEUKcbiEtjTkm2GsJ3boMVgkaR7rN8qetA== + dependencies: + "@jest/environment" "^24.9.0" + "@jest/fake-timers" "^24.9.0" + "@jest/types" "^24.9.0" + jest-mock "^24.9.0" + jest-util "^24.9.0" jsdom "^11.5.1" -jest-environment-node@^24.0.0: - version "24.0.0" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-24.0.0.tgz#330948980656ed8773ce2e04eb597ed91e3c7190" - integrity sha512-62fOFcaEdU0VLaq8JL90TqwI7hLn0cOKOl8vY2n477vRkCJRojiRRtJVRzzCcgFvs6gqU97DNqX5R0BrBP6Rxg== +jest-environment-node@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-24.9.0.tgz#333d2d2796f9687f2aeebf0742b519f33c1cbfd3" + integrity sha512-6d4V2f4nxzIzwendo27Tr0aFm+IXWa0XEUnaH6nU0FMaozxovt+sfRvh4J47wL1OvF83I3SSTu0XK+i4Bqe7uA== dependencies: - jest-mock "^24.0.0" - jest-util "^24.0.0" + "@jest/environment" "^24.9.0" + "@jest/fake-timers" "^24.9.0" + "@jest/types" "^24.9.0" + jest-mock "^24.9.0" + jest-util "^24.9.0" -jest-get-type@^24.0.0: - version "24.0.0" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-24.0.0.tgz#36e72930b78e33da59a4f63d44d332188278940b" - integrity sha512-z6/Eyf6s9ZDGz7eOvl+fzpuJmN9i0KyTt1no37/dHu8galssxz5ZEgnc1KaV8R31q1khxyhB4ui/X5ZjjPk77w== +jest-get-type@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-24.9.0.tgz#1684a0c8a50f2e4901b6644ae861f579eed2ef0e" + integrity sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q== -jest-haste-map@^24.0.0: - version "24.0.0" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-24.0.0.tgz#e9ef51b2c9257384b4d6beb83bd48c65b37b5e6e" - integrity sha512-CcViJyUo41IQqttLxXVdI41YErkzBKbE6cS6dRAploCeutePYfUimWd3C9rQEWhX0YBOQzvNsC0O9nYxK2nnxQ== +jest-haste-map@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-24.9.0.tgz#b38a5d64274934e21fa417ae9a9fbeb77ceaac7d" + integrity sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ== dependencies: + "@jest/types" "^24.9.0" + anymatch "^2.0.0" fb-watchman "^2.0.0" graceful-fs "^4.1.15" invariant "^2.2.4" - jest-serializer "^24.0.0" - jest-util "^24.0.0" - jest-worker "^24.0.0" + jest-serializer "^24.9.0" + jest-util "^24.9.0" + jest-worker "^24.9.0" micromatch "^3.1.10" - sane "^3.0.0" + sane "^4.0.3" + walker "^1.0.7" + optionalDependencies: + fsevents "^1.2.7" -jest-jasmine2@^24.1.0: - version "24.1.0" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-24.1.0.tgz#8377324b967037c440f0a549ee0bbd9912055db6" - integrity sha512-H+o76SdSNyCh9fM5K8upK45YTo/DiFx5w2YAzblQebSQmukDcoVBVeXynyr7DDnxh+0NTHYRCLwJVf3tC518wg== +jest-jasmine2@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-24.9.0.tgz#1f7b1bd3242c1774e62acabb3646d96afc3be6a0" + integrity sha512-Cq7vkAgaYKp+PsX+2/JbTarrk0DmNhsEtqBXNwUHkdlbrTBLtMJINADf2mf5FkowNsq8evbPc07/qFO0AdKTzw== dependencies: "@babel/traverse" "^7.1.0" + "@jest/environment" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" chalk "^2.0.1" co "^4.6.0" - expect "^24.1.0" + expect "^24.9.0" is-generator-fn "^2.0.0" - jest-each "^24.0.0" - jest-matcher-utils "^24.0.0" - jest-message-util "^24.0.0" - jest-snapshot "^24.1.0" - jest-util "^24.0.0" - pretty-format "^24.0.0" + jest-each "^24.9.0" + jest-matcher-utils "^24.9.0" + jest-message-util "^24.9.0" + jest-runtime "^24.9.0" + jest-snapshot "^24.9.0" + jest-util "^24.9.0" + pretty-format "^24.9.0" throat "^4.0.0" -jest-leak-detector@^24.0.0: - version "24.0.0" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-24.0.0.tgz#78280119fd05ee98317daee62cddb3aa537a31c6" - integrity sha512-ZYHJYFeibxfsDSKowjDP332pStuiFT2xfc5R67Rjm/l+HFJWJgNIOCOlQGeXLCtyUn3A23+VVDdiCcnB6dTTrg== +jest-leak-detector@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-24.9.0.tgz#b665dea7c77100c5c4f7dfcb153b65cf07dcf96a" + integrity sha512-tYkFIDsiKTGwb2FG1w8hX9V0aUb2ot8zY/2nFg087dUageonw1zrLMP4W6zsRO59dPkTSKie+D4rhMuP9nRmrA== dependencies: - pretty-format "^24.0.0" + jest-get-type "^24.9.0" + pretty-format "^24.9.0" -jest-matcher-utils@^24.0.0: - version "24.0.0" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-24.0.0.tgz#fc9c41cfc49b2c3ec14e576f53d519c37729d579" - integrity sha512-LQTDmO+aWRz1Tf9HJg+HlPHhDh1E1c65kVwRFo5mwCVp5aQDzlkz4+vCvXhOKFjitV2f0kMdHxnODrXVoi+rlA== +jest-matcher-utils@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-24.9.0.tgz#f5b3661d5e628dffe6dd65251dfdae0e87c3a073" + integrity sha512-OZz2IXsu6eaiMAwe67c1T+5tUAtQyQx27/EMEkbFAGiw52tB9em+uGbzpcgYVpA8wl0hlxKPZxrly4CXU/GjHA== dependencies: chalk "^2.0.1" - jest-diff "^24.0.0" - jest-get-type "^24.0.0" - pretty-format "^24.0.0" + jest-diff "^24.9.0" + jest-get-type "^24.9.0" + pretty-format "^24.9.0" -jest-message-util@^24.0.0: - version "24.0.0" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-24.0.0.tgz#a07a141433b2c992dbaec68d4cbfe470ba289619" - integrity sha512-J9ROJIwz/IeC+eV1XSwnRK4oAwPuhmxEyYx1+K5UI+pIYwFZDSrfZaiWTdq0d2xYFw4Xiu+0KQWsdsQpgJMf3Q== +jest-message-util@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-24.9.0.tgz#527f54a1e380f5e202a8d1149b0ec872f43119e3" + integrity sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw== dependencies: "@babel/code-frame" "^7.0.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + "@types/stack-utils" "^1.0.1" chalk "^2.0.1" micromatch "^3.1.10" slash "^2.0.0" stack-utils "^1.0.1" -jest-mock@^24.0.0: - version "24.0.0" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-24.0.0.tgz#9a4b53e01d66a0e780f7d857462d063e024c617d" - integrity sha512-sQp0Hu5fcf5NZEh1U9eIW2qD0BwJZjb63Yqd98PQJFvf/zzUTBoUAwv/Dc/HFeNHIw1f3hl/48vNn+j3STaI7A== +jest-mock@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-24.9.0.tgz#c22835541ee379b908673ad51087a2185c13f1c6" + integrity sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w== + dependencies: + "@jest/types" "^24.9.0" + +jest-pnp-resolver@^1.2.1: + version "1.2.3" + resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz#930b1546164d4ad5937d5540e711d4d38d4cad2e" + integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w== -jest-regex-util@^24.0.0: - version "24.0.0" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-24.0.0.tgz#4feee8ec4a358f5bee0a654e94eb26163cb9089a" - integrity sha512-Jv/uOTCuC+PY7WpJl2mpoI+WbY2ut73qwwO9ByJJNwOCwr1qWhEW2Lyi2S9ZewUdJqeVpEBisdEVZSI+Zxo58Q== +jest-regex-util@^24.3.0, jest-regex-util@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-24.9.0.tgz#c13fb3380bde22bf6575432c493ea8fe37965636" + integrity sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA== -jest-resolve-dependencies@^24.1.0: - version "24.1.0" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-24.1.0.tgz#78f738a2ec59ff4d00751d9da56f176e3f589f6c" - integrity sha512-2VwPsjd3kRPu7qe2cpytAgowCObk5AKeizfXuuiwgm1a9sijJDZe8Kh1sFj6FKvSaNEfCPlBVkZEJa2482m/Uw== +jest-resolve-dependencies@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-24.9.0.tgz#ad055198959c4cfba8a4f066c673a3f0786507ab" + integrity sha512-Fm7b6AlWnYhT0BXy4hXpactHIqER7erNgIsIozDXWl5dVm+k8XdGVe1oTg1JyaFnOxarMEbax3wyRJqGP2Pq+g== dependencies: - jest-regex-util "^24.0.0" - jest-snapshot "^24.1.0" + "@jest/types" "^24.9.0" + jest-regex-util "^24.3.0" + jest-snapshot "^24.9.0" -jest-resolve@^24.1.0: - version "24.1.0" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-24.1.0.tgz#42ff0169b0ea47bfdbd0c52a0067ca7d022c7688" - integrity sha512-TPiAIVp3TG6zAxH28u/6eogbwrvZjBMWroSLBDkwkHKrqxB/RIdwkWDye4uqPlZIXWIaHtifY3L0/eO5Z0f2wg== +jest-resolve@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-24.9.0.tgz#dff04c7687af34c4dd7e524892d9cf77e5d17321" + integrity sha512-TaLeLVL1l08YFZAt3zaPtjiVvyy4oSA6CRe+0AFPPVX3Q/VI0giIWWoAvoS5L96vj9Dqxj4fB5p2qrHCmTU/MQ== dependencies: + "@jest/types" "^24.9.0" browser-resolve "^1.11.3" chalk "^2.0.1" - realpath-native "^1.0.0" - -jest-runner@^24.1.0: - version "24.1.0" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-24.1.0.tgz#3686a2bb89ce62800da23d7fdc3da2c32792943b" - integrity sha512-CDGOkT3AIFl16BLL/OdbtYgYvbAprwJ+ExKuLZmGSCSldwsuU2dEGauqkpvd9nphVdAnJUcP12e/EIlnTX0QXg== - dependencies: + jest-pnp-resolver "^1.2.1" + realpath-native "^1.1.0" + +jest-runner@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-24.9.0.tgz#574fafdbd54455c2b34b4bdf4365a23857fcdf42" + integrity sha512-KksJQyI3/0mhcfspnxxEOBueGrd5E4vV7ADQLT9ESaCzz02WnbdbKWIf5Mkaucoaj7obQckYPVX6JJhgUcoWWg== + dependencies: + "@jest/console" "^24.7.1" + "@jest/environment" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" chalk "^2.4.2" exit "^0.1.2" graceful-fs "^4.1.15" - jest-config "^24.1.0" - jest-docblock "^24.0.0" - jest-haste-map "^24.0.0" - jest-jasmine2 "^24.1.0" - jest-leak-detector "^24.0.0" - jest-message-util "^24.0.0" - jest-runtime "^24.1.0" - jest-util "^24.0.0" - jest-worker "^24.0.0" + jest-config "^24.9.0" + jest-docblock "^24.3.0" + jest-haste-map "^24.9.0" + jest-jasmine2 "^24.9.0" + jest-leak-detector "^24.9.0" + jest-message-util "^24.9.0" + jest-resolve "^24.9.0" + jest-runtime "^24.9.0" + jest-util "^24.9.0" + jest-worker "^24.6.0" source-map-support "^0.5.6" throat "^4.0.0" -jest-runtime@^24.1.0: - version "24.1.0" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-24.1.0.tgz#7c157a2e776609e8cf552f956a5a19ec9c985214" - integrity sha512-59/BY6OCuTXxGeDhEMU7+N33dpMQyXq7MLK07cNSIY/QYt2QZgJ7Tjx+rykBI0skAoigFl0A5tmT8UdwX92YuQ== - dependencies: - "@babel/core" "^7.1.0" - babel-plugin-istanbul "^5.1.0" +jest-runtime@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-24.9.0.tgz#9f14583af6a4f7314a6a9d9f0226e1a781c8e4ac" + integrity sha512-8oNqgnmF3v2J6PVRM2Jfuj8oX3syKmaynlDMMKQ4iyzbQzIG6th5ub/lM2bCMTmoTKM3ykcUYI2Pw9xwNtjMnw== + dependencies: + "@jest/console" "^24.7.1" + "@jest/environment" "^24.9.0" + "@jest/source-map" "^24.3.0" + "@jest/transform" "^24.9.0" + "@jest/types" "^24.9.0" + "@types/yargs" "^13.0.0" chalk "^2.0.1" - convert-source-map "^1.4.0" exit "^0.1.2" - fast-json-stable-stringify "^2.0.0" glob "^7.1.3" graceful-fs "^4.1.15" - jest-config "^24.1.0" - jest-haste-map "^24.0.0" - jest-message-util "^24.0.0" - jest-regex-util "^24.0.0" - jest-resolve "^24.1.0" - jest-snapshot "^24.1.0" - jest-util "^24.0.0" - jest-validate "^24.0.0" - micromatch "^3.1.10" - realpath-native "^1.0.0" + jest-config "^24.9.0" + jest-haste-map "^24.9.0" + jest-message-util "^24.9.0" + jest-mock "^24.9.0" + jest-regex-util "^24.3.0" + jest-resolve "^24.9.0" + jest-snapshot "^24.9.0" + jest-util "^24.9.0" + jest-validate "^24.9.0" + realpath-native "^1.1.0" slash "^2.0.0" strip-bom "^3.0.0" - write-file-atomic "2.4.1" - yargs "^12.0.2" + yargs "^13.3.0" -jest-serializer@^24.0.0: - version "24.0.0" - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-24.0.0.tgz#522c44a332cdd194d8c0531eb06a1ee5afb4256b" - integrity sha512-9FKxQyrFgHtx3ozU+1a8v938ILBE7S8Ko3uiAVjT8Yfi2o91j/fj81jacCQZ/Ihjiff/VsUCXVgQ+iF1XdImOw== +jest-serializer@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-24.9.0.tgz#e6d7d7ef96d31e8b9079a714754c5d5c58288e73" + integrity sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ== -jest-snapshot@^24.1.0: - version "24.1.0" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-24.1.0.tgz#85e22f810357aa5994ab61f236617dc2205f2f5b" - integrity sha512-th6TDfFqEmXvuViacU1ikD7xFb7lQsPn2rJl7OEmnfIVpnrx3QNY2t3PE88meeg0u/mQ0nkyvmC05PBqO4USFA== +jest-snapshot@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-24.9.0.tgz#ec8e9ca4f2ec0c5c87ae8f925cf97497b0e951ba" + integrity sha512-uI/rszGSs73xCM0l+up7O7a40o90cnrk429LOiK3aeTvfC0HHmldbd81/B7Ix81KSFe1lwkbl7GnBGG4UfuDew== dependencies: "@babel/types" "^7.0.0" + "@jest/types" "^24.9.0" chalk "^2.0.1" - jest-diff "^24.0.0" - jest-matcher-utils "^24.0.0" - jest-message-util "^24.0.0" - jest-resolve "^24.1.0" + expect "^24.9.0" + jest-diff "^24.9.0" + jest-get-type "^24.9.0" + jest-matcher-utils "^24.9.0" + jest-message-util "^24.9.0" + jest-resolve "^24.9.0" mkdirp "^0.5.1" natural-compare "^1.4.0" - pretty-format "^24.0.0" - semver "^5.5.0" - -jest-util@^24.0.0: - version "24.0.0" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-24.0.0.tgz#fd38fcafd6dedbd0af2944d7a227c0d91b68f7d6" - integrity sha512-QxsALc4wguYS7cfjdQSOr5HTkmjzkHgmZvIDkcmPfl1ib8PNV8QUWLwbKefCudWS0PRKioV+VbQ0oCUPC691fQ== - dependencies: + pretty-format "^24.9.0" + semver "^6.2.0" + +jest-util@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-24.9.0.tgz#7396814e48536d2e85a37de3e4c431d7cb140162" + integrity sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg== + dependencies: + "@jest/console" "^24.9.0" + "@jest/fake-timers" "^24.9.0" + "@jest/source-map" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" callsites "^3.0.0" chalk "^2.0.1" graceful-fs "^4.1.15" is-ci "^2.0.0" - jest-message-util "^24.0.0" mkdirp "^0.5.1" slash "^2.0.0" source-map "^0.6.0" -jest-validate@^24.0.0: - version "24.0.0" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-24.0.0.tgz#aa8571a46983a6538328fef20406b4a496b6c020" - integrity sha512-vMrKrTOP4BBFIeOWsjpsDgVXATxCspC9S1gqvbJ3Tnn/b9ACsJmteYeVx9830UMV28Cob1RX55x96Qq3Tfad4g== +jest-validate@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-24.9.0.tgz#0775c55360d173cd854e40180756d4ff52def8ab" + integrity sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ== dependencies: - camelcase "^5.0.0" + "@jest/types" "^24.9.0" + camelcase "^5.3.1" chalk "^2.0.1" - jest-get-type "^24.0.0" - leven "^2.1.0" - pretty-format "^24.0.0" + jest-get-type "^24.9.0" + leven "^3.1.0" + pretty-format "^24.9.0" -jest-watcher@^24.0.0: - version "24.0.0" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-24.0.0.tgz#20d44244d10b0b7312410aefd256c1c1eef68890" - integrity sha512-GxkW2QrZ4YxmW1GUWER05McjVDunBlKMFfExu+VsGmXJmpej1saTEKvONdx5RJBlVdpPI5x6E3+EDQSIGgl53g== +jest-watcher@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-24.9.0.tgz#4b56e5d1ceff005f5b88e528dc9afc8dd4ed2b3b" + integrity sha512-+/fLOfKPXXYJDYlks62/4R4GoT+GU1tYZed99JSCOsmzkkF7727RqKrjNAxtfO4YpGv11wybgRvCjR73lK2GZw== dependencies: + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + "@types/yargs" "^13.0.0" ansi-escapes "^3.0.0" chalk "^2.0.1" - jest-util "^24.0.0" + jest-util "^24.9.0" string-length "^2.0.0" -jest-worker@^24.0.0: - version "24.0.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.0.0.tgz#3d3483b077bf04f412f47654a27bba7e947f8b6d" - integrity sha512-s64/OThpfQvoCeHG963MiEZOAAxu8kHsaL/rCMF7lpdzo7vgF0CtPml9hfguOMgykgH/eOm4jFP4ibfHLruytg== +jest-worker@^24.6.0, jest-worker@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.9.0.tgz#5dbfdb5b2d322e98567898238a9697bcce67b3e5" + integrity sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw== dependencies: - merge-stream "^1.0.1" + merge-stream "^2.0.0" supports-color "^6.1.0" jest@^24.1.0: - version "24.1.0" - resolved "https://registry.yarnpkg.com/jest/-/jest-24.1.0.tgz#b1e1135caefcf2397950ecf7f90e395fde866fd2" - integrity sha512-+q91L65kypqklvlRFfXfdzUKyngQLOcwGhXQaLmVHv+d09LkNXuBuGxlofTFW42XMzu3giIcChchTsCNUjQ78A== + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest/-/jest-24.9.0.tgz#987d290c05a08b52c56188c1002e368edb007171" + integrity sha512-YvkBL1Zm7d2B1+h5fHEOdyjCG+sGMz4f8D86/0HiqJ6MB4MnDc8FgP5vdWsGnemOQro7lnYo8UakZ3+5A0jxGw== dependencies: import-local "^2.0.0" - jest-cli "^24.1.0" + jest-cli "^24.9.0" js-base64@^2.1.9: version "2.5.1" @@ -9510,7 +9890,7 @@ js-yaml@3.14.0: argparse "^1.0.7" esprima "^4.0.0" -js-yaml@^3.12.0, js-yaml@^3.13.1: +js-yaml@^3.13.1: version "3.14.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== @@ -9521,7 +9901,7 @@ js-yaml@^3.12.0, js-yaml@^3.13.1: jsbn@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= + integrity sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg== jsdom@^11.5.1: version "11.12.0" @@ -9580,10 +9960,10 @@ json-schema-traverse@^1.0.0: resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== -json-schema@0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" - integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= +json-schema@0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" + integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== json-stable-stringify-without-jsonify@^1.0.1: version "1.0.1" @@ -9600,7 +9980,7 @@ json-stable-stringify@~0.0.0: json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= + integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== json2mq@^0.2.0: version "0.2.0" @@ -9616,13 +9996,18 @@ json5@^1.0.1: dependencies: minimist "^1.2.0" -json5@^2.1.0, json5@^2.1.2: +json5@^2.1.0: version "2.1.3" resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43" integrity sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA== dependencies: minimist "^1.2.5" +json5@^2.1.2, json5@^2.2.2: + version "2.2.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== + jsonfile@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" @@ -9650,13 +10035,13 @@ jsonparse@^1.2.0: integrity sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA= jsprim@^1.2.2: - version "1.4.1" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" - integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= + version "1.4.2" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.2.tgz#712c65533a15c878ba59e9ed5f0e26d5b77c5feb" + integrity sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw== dependencies: assert-plus "1.0.0" extsprintf "1.3.0" - json-schema "0.2.3" + json-schema "0.4.0" verror "1.10.0" jssha@^2.1.0: @@ -9688,14 +10073,14 @@ kdbush@^3.0.0: kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: version "3.2.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" - integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= + integrity sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ== dependencies: is-buffer "^1.1.5" kind-of@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" - integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= + integrity sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw== dependencies: is-buffer "^1.1.5" @@ -9705,14 +10090,14 @@ kind-of@^5.0.0: integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== kind-of@^6.0.0, kind-of@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" - integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA== + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== -kleur@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.2.tgz#83c7ec858a41098b613d5998a7b653962b504f68" - integrity sha512-3h7B2WRT5LNXOtQiAaWonilegHcPSf9nLVXlSTci8lu1dZUuui61+EsPEZqSVxY7rXYmB2DVKMQILxaO5WL61Q== +kleur@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" + integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== kuler@^2.0.0: version "2.0.0" @@ -9757,13 +10142,6 @@ lazy-cache@^1.0.3: resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" integrity sha1-odePw6UEdMuAhF07O24dpJpEbo4= -lcid@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" - integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA== - dependencies: - invert-kv "^2.0.0" - leaflet-fullscreen@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/leaflet-fullscreen/-/leaflet-fullscreen-1.0.2.tgz#09c61c4bac45f63b2ee126afd87e5cd97650fc1b" @@ -9822,11 +10200,6 @@ less@^3.9.0: request "^2.83.0" source-map "~0.6.0" -leven@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580" - integrity sha1-wuep93IJTe6dNCAq6KzORoeHVYA= - leven@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" @@ -9842,7 +10215,7 @@ levenary@^1.1.1: levn@^0.3.0, levn@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" - integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= + integrity sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA== dependencies: prelude-ls "~1.1.2" type-check "~0.3.2" @@ -9904,7 +10277,7 @@ load-json-file@^2.0.0: load-json-file@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" - integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= + integrity sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw== dependencies: graceful-fs "^4.1.2" parse-json "^4.0.0" @@ -10020,7 +10393,7 @@ lodash.once@^4.1.1: lodash.sortby@^4.7.0: version "4.7.0" resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" - integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= + integrity sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA== lodash.template@^4.4.0: version "4.5.0" @@ -10126,7 +10499,7 @@ magic-string@^0.25.3: dependencies: sourcemap-codec "^1.4.4" -make-dir@^1.0.0, make-dir@^1.3.0: +make-dir@^1.0.0: version "1.3.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" integrity sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ== @@ -10148,24 +10521,17 @@ make-dir@^3.0.0, make-dir@^3.0.2: dependencies: semver "^6.0.0" -makeerror@1.0.x: - version "1.0.11" - resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" - integrity sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw= - dependencies: - tmpl "1.0.x" - -map-age-cleaner@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" - integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== +makeerror@1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" + integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== dependencies: - p-defer "^1.0.0" + tmpl "1.0.5" map-cache@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" - integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= + integrity sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg== map-limit@0.0.1: version "0.0.1" @@ -10177,7 +10543,7 @@ map-limit@0.0.1: map-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" - integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= + integrity sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w== dependencies: object-visit "^1.0.0" @@ -10291,15 +10657,6 @@ media-typer@0.3.0: resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= -mem@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/mem/-/mem-4.1.0.tgz#aeb9be2d21f47e78af29e4ac5978e8afa2ca5b8a" - integrity sha512-I5u6Q1x7wxO0kdOpYBB28xueHADYps5uty/zg936CiG8NTe5sJL8EjrCuLneuDW3PlMdZBGDIn8BirEVdovZvg== - dependencies: - map-age-cleaner "^0.1.1" - mimic-fn "^1.0.0" - p-is-promise "^2.0.0" - memfs@^3.4.3: version "3.6.0" resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.6.0.tgz#d7a2110f86f79dd950a8b6df6d57bc984aa185f6" @@ -10333,13 +10690,6 @@ merge-descriptors@1.0.1: resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= -merge-stream@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-1.0.1.tgz#4041202d508a342ba00174008df0c251b8c135e1" - integrity sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE= - dependencies: - readable-stream "^2.0.1" - merge-stream@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" @@ -10350,11 +10700,6 @@ merge2@^1.2.3, merge2@^1.3.0: resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== -merge@^1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.1.tgz#38bebf80c3220a8a487b6fcfb3941bb11720c145" - integrity sha512-VjFo4P5Whtj4vsLzsYBu5ayHhoHJ0UqNm7ibvShmbmoz7tGi0vXaoJbGdB+GmDMLUdg8DpQXEIeVDAe8MaABvQ== - methods@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" @@ -10415,12 +10760,12 @@ mime-db@~1.38.0: resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.38.0.tgz#1a2aab16da9eb167b49c6e4df2d9c68d63d8e2ad" integrity sha512-bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg== -mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.18, mime-types@~2.1.19: - version "2.1.22" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.22.tgz#fe6b355a190926ab7698c9a0556a11199b2199bd" - integrity sha512-aGl6TZGnhm/li6F7yx82bJiBZwgiEa4Hf6CNr8YO+r5UHr53tSTYZb102zyU50DOWWKeOv0uQLRL0/9EiKWCog== +mime-types@^2.1.12, mime-types@^2.1.31, mime-types@~2.1.19, mime-types@~2.1.34: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== dependencies: - mime-db "~1.38.0" + mime-db "1.52.0" mime-types@^2.1.25, mime-types@~2.1.24: version "2.1.27" @@ -10429,12 +10774,12 @@ mime-types@^2.1.25, mime-types@~2.1.24: dependencies: mime-db "1.44.0" -mime-types@^2.1.31, mime-types@~2.1.34: - version "2.1.35" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" - integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== +mime-types@~2.1.17, mime-types@~2.1.18: + version "2.1.22" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.22.tgz#fe6b355a190926ab7698c9a0556a11199b2199bd" + integrity sha512-aGl6TZGnhm/li6F7yx82bJiBZwgiEa4Hf6CNr8YO+r5UHr53tSTYZb102zyU50DOWWKeOv0uQLRL0/9EiKWCog== dependencies: - mime-db "1.52.0" + mime-db "~1.38.0" mime@1.4.1: version "1.4.1" @@ -10488,7 +10833,7 @@ minimalistic-crypto-utils@^1.0.1: resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= -minimatch@^3.0.3, minimatch@^3.0.4, minimatch@^3.1.1: +minimatch@^3.0.4, minimatch@^3.1.1: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== @@ -10505,30 +10850,15 @@ minimist@0.0.8: resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= -minimist@^1.1.0, minimist@^1.1.1, minimist@~1.2.0: +minimist@^1.1.0, minimist@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= -minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6: +minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6: version "1.2.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" - integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== - -minipass@^2.6.0, minipass@^2.9.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" - integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== - dependencies: - safe-buffer "^5.1.2" - yallist "^3.0.0" - -minizlib@^1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" - integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== - dependencies: - minipass "^2.9.0" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== mississippi@^3.0.0: version "3.0.0" @@ -10561,7 +10891,7 @@ mkdirp@0.5.1: dependencies: minimist "0.0.8" -mkdirp@^0.5.0, mkdirp@^0.5.3, mkdirp@^0.5.4, mkdirp@^0.5.5: +mkdirp@^0.5.0, mkdirp@^0.5.3, mkdirp@^0.5.4: version "0.5.5" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== @@ -10669,23 +10999,18 @@ mrmime@^1.0.0: ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== ms@2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -ms@2.1.3: +ms@2.1.3, ms@^2.1.1: version "2.1.3" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== -ms@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" - integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== - multicast-dns@^7.2.5: version "7.2.5" resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-7.2.5.tgz#77eb46057f4d7adbd16d9290fa7299f6fa64cced" @@ -10717,9 +11042,9 @@ mute-stream@0.0.8: integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== nan@^2.12.1: - version "2.14.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c" - integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg== + version "2.17.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.17.0.tgz#c0150a2368a182f033e9aa5195ec76ea41a199cb" + integrity sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ== nanomatch@^1.2.9: version "1.2.13" @@ -10741,7 +11066,7 @@ nanomatch@^1.2.9: natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== ndarray-extract-contour@^1.0.0: version "1.0.1" @@ -10836,15 +11161,6 @@ nearley@^2.7.10: randexp "0.4.6" semver "^5.4.1" -needle@^2.2.1: - version "2.3.0" - resolved "https://registry.yarnpkg.com/needle/-/needle-2.3.0.tgz#ce3fea21197267bacb310705a7bbe24f2a3a3492" - integrity sha512-QBZu7aAFR0522EyaXZM0FZ9GLpq6lvQ3uq8gteiDUp7wKdy0lSd2hPlgFwVuW1CBkfEs9PfDQsQzZghLs/psdg== - dependencies: - debug "^4.1.0" - iconv-lite "^0.4.4" - sax "^1.2.4" - negotiator@0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" @@ -10855,7 +11171,7 @@ negotiator@0.6.3: resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== -neo-async@^2.5.0, neo-async@^2.6.0, neo-async@^2.6.1: +neo-async@^2.5.0, neo-async@^2.6.1: version "2.6.2" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== @@ -10893,7 +11209,7 @@ node-forge@^1: node-int64@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" - integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= + integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== node-libs-browser@^2.2.1: version "2.2.1" @@ -10924,11 +11240,6 @@ node-libs-browser@^2.2.1: util "^0.11.0" vm-browserify "^1.0.1" -node-modules-regexp@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" - integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= - node-notifier@5.2.1: version "5.2.1" resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.2.1.tgz#fa313dd08f5517db0e2502e5758d664ac69f9dea" @@ -10939,10 +11250,10 @@ node-notifier@5.2.1: shellwords "^0.1.1" which "^1.3.0" -node-notifier@^5.2.1: - version "5.4.0" - resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.4.0.tgz#7b455fdce9f7de0c63538297354f3db468426e6a" - integrity sha512-SUDEb+o71XR5lXSTyivXd9J7fCloE3SyP4lSgt3lU2oSANiox+SxlNRGPjDKrwU1YN3ix2KN/VGGCg0t01rttQ== +node-notifier@^5.4.2: + version "5.4.5" + resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.4.5.tgz#0cbc1a2b0f658493b4025775a13ad938e96091ef" + integrity sha512-tVbHs7DyTLtzOiN78izLA85zRqB9NvEXkAf014Vx3jtSvn/xBl6bR8ZYifj+dFcFrKI21huSQgJZ6ZtL3B4HfQ== dependencies: growly "^1.3.0" is-wsl "^1.1.0" @@ -10950,22 +11261,6 @@ node-notifier@^5.2.1: shellwords "^0.1.1" which "^1.3.0" -node-pre-gyp@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.12.0.tgz#39ba4bb1439da030295f899e3b520b7785766149" - integrity sha512-4KghwV8vH5k+g2ylT+sLTjy5wmUOb9vPhnM8NHvRf9dHmnW/CndrFXy2aRPaPST6dugXSdHXfeaHQm77PIz/1A== - dependencies: - detect-libc "^1.0.2" - mkdirp "^0.5.1" - needle "^2.2.1" - nopt "^4.0.1" - npm-packlist "^1.1.6" - npmlog "^4.0.2" - rc "^1.2.7" - rimraf "^2.6.1" - semver "^5.3.0" - tar "^4" - node-preload@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/node-preload/-/node-preload-0.2.1.tgz#c03043bb327f417a18fee7ab7ee57b408a144301" @@ -10985,13 +11280,10 @@ node-releases@^1.1.58: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.59.tgz#4d648330641cec704bff10f8e4fe28e453ab8e8e" integrity sha512-H3JrdUczbdiwxN5FuJPyCHnGHIFqQ0wWxo+9j1kAXAzqNMAHlo+4I/sYYxpyK0irQ73HgdiyzD32oqQDcU2Osw== -nopt@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" - integrity sha1-0NRoWv1UFRk8jHUFYC0NF81kR00= - dependencies: - abbrev "1" - osenv "^0.1.4" +node-releases@^2.0.12: + version "2.0.13" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.13.tgz#d5ed1627c23e3461e819b02e57b75e4899b1c81d" + integrity sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ== nopt@~2.1.1: version "2.1.2" @@ -11013,7 +11305,7 @@ normalize-package-data@^2.3.2: normalize-path@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" - integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= + integrity sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w== dependencies: remove-trailing-separator "^1.0.1" @@ -11044,19 +11336,6 @@ normals@^1.1.0: resolved "https://registry.yarnpkg.com/normals/-/normals-1.1.0.tgz#325b595ed34afe467a6c55a14fd9085787ff59c0" integrity sha1-MltZXtNK/kZ6bFWhT9kIV4f/WcA= -npm-bundled@^1.0.1: - version "1.0.6" - resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.6.tgz#e7ba9aadcef962bb61248f91721cd932b3fe6bdd" - integrity sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g== - -npm-packlist@^1.1.6: - version "1.4.1" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.1.tgz#19064cdf988da80ea3cee45533879d90192bbfbc" - integrity sha512-+TcdO7HJJ8peiiYhvPxsEDhF3PJFGUGRcFsGve3vxvxdcpO2Z4Z7rkosRM0kWj6LfbK/P0gu3dzk5RU1ffvFcw== - dependencies: - ignore-walk "^3.0.1" - npm-bundled "^1.0.1" - npm-run-all@^4.1.5: version "4.1.5" resolved "https://registry.yarnpkg.com/npm-run-all/-/npm-run-all-4.1.5.tgz#04476202a15ee0e2e214080861bff12a51d98fba" @@ -11075,7 +11354,7 @@ npm-run-all@^4.1.5: npm-run-path@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" - integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= + integrity sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw== dependencies: path-key "^2.0.0" @@ -11086,16 +11365,6 @@ npm-run-path@^4.0.0, npm-run-path@^4.0.1: dependencies: path-key "^3.0.0" -npmlog@^4.0.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" - integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== - dependencies: - are-we-there-yet "~1.1.2" - console-control-strings "~1.1.0" - gauge "~2.7.3" - set-blocking "~2.0.0" - nth-check@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" @@ -11125,7 +11394,7 @@ number-is-integer@^1.0.1: number-is-nan@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= + integrity sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ== numeral@^2.0.6: version "2.0.6" @@ -11138,9 +11407,9 @@ numeric@^1.2.6: integrity sha1-dlsCvvl5iPz4gNTrPza4D6MTNao= nwsapi@^2.0.7: - version "2.1.1" - resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.1.1.tgz#08d6d75e69fd791bdea31507ffafe8c843b67e9c" - integrity sha512-T5GaA1J/d34AC8mkrFD2O0DR17kwJ702ZOtJOsS8RpbsQZVOC2/xYFb1i/cw+xdM54JIlMuojjDOYct8GIWtwg== + version "2.2.7" + resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.7.tgz#738e0707d3128cb750dddcfe90e4610482df0f30" + integrity sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ== nyc@15.1.0: version "15.1.0" @@ -11188,7 +11457,7 @@ object-assign@^4, object-assign@^4.1.0, object-assign@^4.1.1: object-copy@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" - integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= + integrity sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ== dependencies: copy-descriptor "^0.1.0" define-property "^0.2.5" @@ -11199,6 +11468,11 @@ object-hash@^2.0.1: resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-2.0.1.tgz#cef18a0c940cc60aa27965ecf49b782cbf101d96" integrity sha512-HgcGMooY4JC2PBt9sdUdJ6PMzpin+YtY3r/7wg0uTifP+HJWW8rammseSEHuyt0UeShI183UGssCJqm1bJR7QA== +object-inspect@^1.12.3, object-inspect@^1.9.0: + version "1.12.3" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9" + integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== + object-inspect@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.6.0.tgz#c70b6cbf72f274aab4c34c0c82f5167bf82cf15b" @@ -11209,11 +11483,6 @@ object-inspect@^1.7.0, object-inspect@~1.7.0: resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67" integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw== -object-inspect@^1.9.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.9.0.tgz#c90521d74e1127b67266ded3394ad6116986533a" - integrity sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw== - object-inspect@~0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-0.4.0.tgz#f5157c116c1455b243b06ee97703392c5ad89fec" @@ -11224,12 +11493,12 @@ object-is@^1.0.1: resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.0.1.tgz#0aa60ec9989a0b3ed795cf4d06f62cf1ad6539b6" integrity sha1-CqYOyZiaCz7Xlc9NBvYs8a1lObY= -object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.0.6, object-keys@^1.0.9: +object-keys@^1.0.11, object-keys@^1.0.6, object-keys@^1.0.9: version "1.1.0" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.0.tgz#11bd22348dd2e096a045ab06f6c85bcc340fa032" integrity sha512-6OO5X1+2tYkNyNEx6TsCxEqFfRWaqx6EtMiSbGrw8Ob8v9Ne+Hl8rBAgLBZn5wjEz3s/s6U1WXFUFOcxxAwUpg== -object-keys@^1.1.1: +object-keys@^1.0.12, object-keys@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== @@ -11242,7 +11511,7 @@ object-keys@~0.4.0: object-visit@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" - integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= + integrity sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA== dependencies: isobject "^3.0.0" @@ -11266,6 +11535,16 @@ object.assign@^4.1.2: has-symbols "^1.0.1" object-keys "^1.1.1" +object.assign@^4.1.4: + version "4.1.4" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f" + integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + has-symbols "^1.0.3" + object-keys "^1.1.1" + object.entries@^1.0.4, object.entries@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.0.tgz#2024fc6d6ba246aee38bdb0ffd5cfbcf371b7519" @@ -11296,18 +11575,21 @@ object.fromentries@^2.0.1: function-bind "^1.1.1" has "^1.0.3" -object.getownpropertydescriptors@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16" - integrity sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY= +object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.6: + version "2.1.6" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.6.tgz#5e5c384dd209fa4efffead39e3a0512770ccc312" + integrity sha512-lq+61g26E/BgHv0ZTFgRvi7NMEPuAxLkFU7rukXjc/AlwH4Am5xXVnIXy3un1bg/JPbXHrixRkK1itUzzPiIjQ== dependencies: - define-properties "^1.1.2" - es-abstract "^1.5.1" + array.prototype.reduce "^1.0.5" + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.21.2" + safe-array-concat "^1.0.0" object.pick@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" - integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= + integrity sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ== dependencies: isobject "^3.0.1" @@ -11404,19 +11686,7 @@ opener@^1.5.2: resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598" integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A== -optionator@^0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" - integrity sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q= - dependencies: - deep-is "~0.1.3" - fast-levenshtein "~2.0.4" - levn "~0.3.0" - prelude-ls "~1.1.2" - type-check "~0.3.2" - wordwrap "~1.0.0" - -optionator@^0.8.3: +optionator@^0.8.1, optionator@^0.8.3: version "0.8.3" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== @@ -11441,37 +11711,15 @@ os-browserify@^0.3.0, os-browserify@~0.3.0: resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= -os-homedir@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" - integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= - os-homedir@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-2.0.0.tgz#a0c76bb001a8392a503cbd46e7e650b3423a923c" integrity sha512-saRNz0DSC5C/I++gFIaJTXoFJMRwiP5zHar5vV3xQ2TkgEw6hDCcU5F272JjUylpiVgBrZNQHnfjkLabTfb92Q== -os-locale@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" - integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q== - dependencies: - execa "^1.0.0" - lcid "^2.0.0" - mem "^4.0.0" - -os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: +os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= - -osenv@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" - integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.0" + integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== ospath@^1.2.2: version "1.2.2" @@ -11485,27 +11733,17 @@ outpipe@^1.1.0: dependencies: shell-quote "^1.4.2" -p-defer@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" - integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= - p-each-series@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-1.0.0.tgz#930f3d12dd1f50e7434457a22cd6f04ac6ad7f71" - integrity sha1-kw89Et0fUOdDRFeiLNbwSsatf3E= + integrity sha512-J/e9xiZZQNrt+958FFzJ+auItsBGq+UrQ7nE89AUP7UOTtjHnkISANXLdayhVzh538UnLMCSlf13lFfRIAKQOA== dependencies: p-reduce "^1.0.0" p-finally@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= - -p-is-promise@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.0.0.tgz#7554e3d572109a87e1f3f53f6a7d85d1b194f4c5" - integrity sha512-pzQPhYMCAgLAKPWD2jC3Se9fEfrD9npNos0y150EeqZll7akhEgGhTW/slB6lHku8AvYGiJ+YJ5hfHKePPgFWg== + integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== p-limit@^1.1.0: version "1.3.0" @@ -11514,14 +11752,7 @@ p-limit@^1.1.0: dependencies: p-try "^1.0.0" -p-limit@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.1.0.tgz#1d5a0d20fb12707c758a655f6bbc4386b5930d68" - integrity sha512-NhURkNcrVB+8hNfLuysU8enY5xn2KXphsHBaC2YmRNTZRc7RWusw6apSpdEj3jo4CMb6W9nrF6tTnsJsJeyu6g== - dependencies: - p-try "^2.0.0" - -p-limit@^2.2.0, p-limit@^2.2.1: +p-limit@^2.0.0, p-limit@^2.2.0, p-limit@^2.2.1: version "2.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== @@ -11578,7 +11809,7 @@ p-map@^3.0.0: p-reduce@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-1.0.0.tgz#18c2b0dd936a4690a529f8231f58a0fdb6a47dfa" - integrity sha1-GMKw3ZNqRpClKfgjH1ig/bakffo= + integrity sha512-3Tx1T3oM1xO/Y8Gj0sWyE78EIJZ+t+aEmXUdvQgvGmSMri7aPTHoovbXEreWKkL5j21Er60XAWLTzKbAKYOujQ== p-retry@^4.5.0: version "4.6.2" @@ -11594,9 +11825,9 @@ p-try@^1.0.0: integrity sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww== p-try@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.0.0.tgz#85080bb87c64688fa47996fe8f7dfbe8211760b1" - integrity sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ== + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== package-hash@^4.0.0: version "4.0.0" @@ -11678,7 +11909,7 @@ parse-json@^2.2.0: parse-json@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" - integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= + integrity sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw== dependencies: error-ex "^1.3.1" json-parse-better-errors "^1.0.1" @@ -11738,7 +11969,7 @@ pascal-case@^3.1.2: pascalcase@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" - integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= + integrity sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw== password-prompt@^1.0.7: version "1.1.2" @@ -11788,14 +12019,14 @@ path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: path-key@^2.0.0, path-key@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" - integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= + integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw== path-key@^3.0.0, path-key@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== -path-parse@^1.0.6: +path-parse@^1.0.6, path-parse@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== @@ -11876,7 +12107,7 @@ percy-client@^3.2.0: performance-now@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" - integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= + integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow== permutation-parity@^1.0.0: version "1.0.0" @@ -11940,12 +12171,10 @@ pinkie@^2.0.0: resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= -pirates@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87" - integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA== - dependencies: - node-modules-regexp "^1.0.0" +pirates@^4.0.1: + version "4.0.6" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9" + integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== pkg-dir@^1.0.0: version "1.0.0" @@ -12113,7 +12342,7 @@ polytope-closest-point@^1.0.0: posix-character-classes@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" - integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= + integrity sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg== postcss-modules-extract-imports@^1.2.0: version "1.2.1" @@ -12178,7 +12407,7 @@ potpack@^1.0.1: prelude-ls@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" - integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= + integrity sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w== prettier@^1.19.1: version "1.19.1" @@ -12198,13 +12427,15 @@ pretty-error@^2.1.1: lodash "^4.17.20" renderkid "^2.0.4" -pretty-format@^24.0.0: - version "24.0.0" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-24.0.0.tgz#cb6599fd73ac088e37ed682f61291e4678f48591" - integrity sha512-LszZaKG665djUcqg5ZQq+XzezHLKrxsA86ZABTozp+oNhkdqa+tG2dX4qa6ERl5c/sRDrAa3lHmwnvKoP+OG/g== +pretty-format@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-24.9.0.tgz#12fac31b37019a4eea3c11aa9a959eb7628aa7c9" + integrity sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA== dependencies: + "@jest/types" "^24.9.0" ansi-regex "^4.0.0" ansi-styles "^3.2.0" + react-is "^16.8.4" pretty-format@^26.6.2: version "26.6.2" @@ -12251,12 +12482,12 @@ promise@^7.1.1: asap "~2.0.3" prompts@^2.0.1: - version "2.0.3" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.0.3.tgz#c5ccb324010b2e8f74752aadceeb57134c1d2522" - integrity sha512-H8oWEoRZpybm6NV4to9/1limhttEo13xK62pNvn2JzY0MA03p7s0OjtmhXyon3uJmxiJJVSuUwEJFFssI3eBiQ== + version "2.4.2" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" + integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== dependencies: - kleur "^3.0.2" - sisteransi "^1.0.0" + kleur "^3.0.3" + sisteransi "^1.0.5" prop-types@15.x, prop-types@>=15.0.0, prop-types@^15.0.0, prop-types@^15.5.10, prop-types@^15.5.7, prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2, prop-types@^15.7.2: version "15.7.2" @@ -12299,9 +12530,9 @@ prr@~1.0.1: integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= psl@^1.1.24, psl@^1.1.28: - version "1.1.31" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.1.31.tgz#e9aa86d0101b5b105cbe93ac6b784cd547276184" - integrity sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw== + version "1.9.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" + integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== public-encrypt@^4.0.0: version "4.0.3" @@ -12345,7 +12576,7 @@ punycode@1.3.2: resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= -punycode@>=0.2.0, punycode@^2.1.0, punycode@^2.1.1: +punycode@>=0.2.0: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== @@ -12355,6 +12586,11 @@ punycode@^1.2.4, punycode@^1.3.2, punycode@^1.4.1: resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= +punycode@^2.1.0, punycode@^2.1.1: + version "2.3.0" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" + integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== + puppeteer@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/puppeteer/-/puppeteer-2.1.1.tgz#ccde47c2a688f131883b50f2d697bd25189da27e" @@ -12390,11 +12626,16 @@ qs@6.11.0: dependencies: side-channel "^1.0.4" -qs@6.5.2, qs@~6.5.2: +qs@6.5.2: version "6.5.2" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== +qs@~6.5.2: + version "6.5.3" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" + integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== + quantize@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/quantize/-/quantize-1.0.2.tgz#d25ac200a77b6d70f40127ca171a10e33c8546de" @@ -12847,16 +13088,6 @@ rc-virtual-list@^1.1.0, rc-virtual-list@^1.1.2: raf "^3.4.1" rc-util "^5.0.0" -rc@^1.2.7: - version "1.2.8" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" - integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== - dependencies: - deep-extend "^0.6.0" - ini "~1.3.0" - minimist "^1.2.0" - strip-json-comments "~2.0.1" - react-ace@^9.1.1: version "9.1.1" resolved "https://registry.yarnpkg.com/react-ace/-/react-ace-9.1.1.tgz#fe27e1c668b0186dc1609c422198d1c2df34d2bf" @@ -12905,7 +13136,7 @@ react-grid-layout@^0.18.2: react-draggable "^4.0.0" react-resizable "^1.9.0" -react-is@^16.12.0: +react-is@^16.12.0, react-is@^16.8.4: version "16.13.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== @@ -13031,13 +13262,13 @@ read-pkg@^2.0.0: read-pkg@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" - integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= + integrity sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA== dependencies: load-json-file "^4.0.0" normalize-package-data "^2.3.2" path-type "^3.0.0" -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.6, readable-stream@~2.3.6: +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.6, readable-stream@~2.3.6: version "2.3.8" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== @@ -13060,7 +13291,7 @@ read-pkg@^3.0.0: isarray "0.0.1" string_decoder "~0.10.x" -readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6: +readable-stream@^2.0.2: version "2.3.6" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== @@ -13137,7 +13368,7 @@ readdirp@~3.6.0: dependencies: picomatch "^2.2.1" -realpath-native@^1.0.0, realpath-native@^1.0.2: +realpath-native@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.1.0.tgz#2003294fea23fb0672f2476ebe22fcf498a2d65c" integrity sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA== @@ -13227,6 +13458,15 @@ regexp.prototype.flags@^1.2.0: define-properties "^1.1.3" es-abstract "^1.17.0-next.1" +regexp.prototype.flags@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz#fe7ce25e7e4cca8db37b6634c8a2c7009199b9cb" + integrity sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + functions-have-names "^1.2.3" + regexpp@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" @@ -13374,7 +13614,7 @@ release-zalgo@^1.0.0: remove-trailing-separator@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" - integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= + integrity sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw== renderkid@^2.0.4: version "2.0.7" @@ -13388,9 +13628,9 @@ renderkid@^2.0.4: strip-ansi "^3.0.1" repeat-element@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" - integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== + version "1.1.4" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9" + integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ== repeat-string@^1.3.0, repeat-string@^1.5.2, repeat-string@^1.6.1: version "1.6.1" @@ -13411,13 +13651,6 @@ request-progress@^3.0.0: dependencies: throttleit "^1.0.0" -request-promise-core@1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.2.tgz#339f6aababcafdb31c799ff158700336301d3346" - integrity sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag== - dependencies: - lodash "^4.17.11" - request-promise-core@1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.4.tgz#3eedd4223208d419867b78ce815167d10593a22f" @@ -13426,11 +13659,11 @@ request-promise-core@1.1.4: lodash "^4.17.19" request-promise-native@^1.0.5: - version "1.0.7" - resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.7.tgz#a49868a624bdea5069f1251d0a836e0d89aa2c59" - integrity sha512-rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w== + version "1.0.9" + resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.9.tgz#e407120526a5efdc9a39b28a5679bf47b9d9dc28" + integrity sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g== dependencies: - request-promise-core "1.1.2" + request-promise-core "1.1.4" stealthy-require "^1.1.1" tough-cookie "^2.3.3" @@ -13444,7 +13677,7 @@ request-promise@^4.2.2: stealthy-require "^1.1.1" tough-cookie "^2.3.3" -request@^2.83.0, request@^2.87.0, request@^2.88.0: +request@^2.83.0, request@^2.88.0: version "2.88.0" resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" integrity sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg== @@ -13470,21 +13703,42 @@ request@^2.83.0, request@^2.87.0, request@^2.88.0: tunnel-agent "^0.6.0" uuid "^3.3.2" +request@^2.87.0: + version "2.88.2" + resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" + integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.8.0" + caseless "~0.12.0" + combined-stream "~1.0.6" + extend "~3.0.2" + forever-agent "~0.6.1" + form-data "~2.3.2" + har-validator "~5.1.3" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.19" + oauth-sign "~0.9.0" + performance-now "^2.1.0" + qs "~6.5.2" + safe-buffer "^5.1.2" + tough-cookie "~2.5.0" + tunnel-agent "^0.6.0" + uuid "^3.3.2" + require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== require-from-string@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== -require-main-filename@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" - integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= - require-main-filename@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" @@ -13503,7 +13757,7 @@ resize-observer-polyfill@^1.5.0, resize-observer-polyfill@^1.5.1: resolve-cwd@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" - integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo= + integrity sha512-ccu8zQTrzVr954472aUVPLEcB3YpKSYR3cg/3lo1okzobPBM+1INXBbBZlDbnI/hbEocnf8j0QVo43hQKrbchg== dependencies: resolve-from "^3.0.0" @@ -13518,7 +13772,7 @@ resolve-dir@^1.0.0, resolve-dir@^1.0.1: resolve-from@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" - integrity sha1-six699nWiBvItuZTM17rywoYh0g= + integrity sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw== resolve-from@^4.0.0: version "4.0.0" @@ -13545,25 +13799,34 @@ resolve-protobuf-schema@^2.1.0: resolve-url@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" - integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= + integrity sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg== resolve@1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" - integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= + integrity sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg== resolve@^0.6.1: version "0.6.3" resolved "https://registry.yarnpkg.com/resolve/-/resolve-0.6.3.tgz#dd957982e7e736debdf53b58a4dd91754575dd46" integrity sha1-3ZV5gufnNt699TtYpN2RdUV13UY= -resolve@^1.0.0, resolve@^1.1.4, resolve@^1.1.5, resolve@^1.10.0, resolve@^1.3.2, resolve@^1.4.0, resolve@^1.5.0, resolve@^1.8.1: +resolve@^1.0.0, resolve@^1.1.4, resolve@^1.1.5, resolve@^1.4.0, resolve@^1.5.0, resolve@^1.8.1: version "1.10.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.10.0.tgz#3bdaaeaf45cc07f375656dfd2e54ed0810b101ba" integrity sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg== dependencies: path-parse "^1.0.6" +resolve@^1.10.0, resolve@^1.3.2: + version "1.22.2" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.2.tgz#0ed0943d4e301867955766c9f3e1ae6d01c6845f" + integrity sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g== + dependencies: + is-core-module "^2.11.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + resolve@^1.11.0, resolve@^1.12.0, resolve@^1.13.1: version "1.13.1" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.13.1.tgz#be0aa4c06acd53083505abb35f4d66932ab35d16" @@ -13648,14 +13911,14 @@ right-now@^1.0.0: resolved "https://registry.yarnpkg.com/right-now/-/right-now-1.0.0.tgz#6e89609deebd7dcdaf8daecc9aea39cf585a0918" integrity sha1-bolgne69fc2vja7Mmuo5z1haCRg= -rimraf@2.6.3, rimraf@^2.6.1, rimraf@^2.6.3: +rimraf@2.6.3: version "2.6.3" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== dependencies: glob "^7.1.3" -rimraf@^2.5.4, rimraf@^2.6.2: +rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.3: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== @@ -13768,10 +14031,10 @@ rst-selector-parser@^2.2.3: lodash.flattendeep "^4.4.0" nearley "^2.7.10" -rsvp@^3.3.3: - version "3.6.2" - resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-3.6.2.tgz#2e96491599a96cde1b515d5674a8f7a91452926a" - integrity sha512-OfWGQTb9vnwRjwtA2QwpG2ICclHC3pgXZO5xt8H2EfgDquO0qVdSb5T88L4qJVAEugbS56pAuV4XZM58UX8ulw== +rsvp@^4.8.4: + version "4.8.5" + resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" + integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== run-async@^2.2.0: version "2.3.0" @@ -13804,20 +14067,39 @@ rxjs@^6.3.3, rxjs@^6.4.0: dependencies: tslib "^1.9.0" +safe-array-concat@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.0.0.tgz#2064223cba3c08d2ee05148eedbc563cd6d84060" + integrity sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.0" + has-symbols "^1.0.3" + isarray "^2.0.5" + safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.1, safe-buffer@~5.2.0: +safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== +safe-regex-test@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.0.tgz#793b874d524eb3640d1873aad03596db2d4f2295" + integrity sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.3" + is-regex "^1.1.4" + safe-regex@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" - integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= + integrity sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg== dependencies: ret "~0.1.10" @@ -13831,22 +14113,20 @@ sane-topojson@^4.0.0: resolved "https://registry.yarnpkg.com/sane-topojson/-/sane-topojson-4.0.0.tgz#624cdb26fc6d9392c806897bfd1a393f29bb5308" integrity sha512-bJILrpBboQfabG3BNnHI2hZl52pbt80BE09u4WhnrmzuF2JbMKZdl62G5glXskJ46p+gxE2IzOwGj/awR4g8AA== -sane@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/sane/-/sane-3.1.0.tgz#995193b7dc1445ef1fe41ddfca2faf9f111854c6" - integrity sha512-G5GClRRxT1cELXfdAq7UKtUsv8q/ZC5k8lQGmjEm4HcAl3HzBy68iglyNCmw4+0tiXPCBZntslHlRhbnsSws+Q== +sane@^4.0.3: + version "4.1.0" + resolved "https://registry.yarnpkg.com/sane/-/sane-4.1.0.tgz#ed881fd922733a6c461bc189dc2b6c006f3ffded" + integrity sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA== dependencies: + "@cnakazawa/watch" "^1.0.3" anymatch "^2.0.0" - capture-exit "^1.2.0" - exec-sh "^0.2.0" + capture-exit "^2.0.0" + exec-sh "^0.3.2" execa "^1.0.0" fb-watchman "^2.0.0" micromatch "^3.1.4" minimist "^1.1.1" walker "~1.0.5" - watch "~0.18.0" - optionalDependencies: - fsevents "^1.2.3" sax@^1.2.4: version "1.2.4" @@ -13924,7 +14204,7 @@ selfsigned@^2.1.1: dependencies: node-forge "^1" -"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: +"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: version "5.7.2" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== @@ -13934,7 +14214,7 @@ semver@7.0.0: resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== -semver@^6.0.0, semver@^6.1.2, semver@^6.3.0: +semver@^6.0.0, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0, semver@^6.3.1: version "6.3.1" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== @@ -14024,25 +14304,15 @@ serve-static@1.15.0: parseurl "~1.3.3" send "0.18.0" -set-blocking@^2.0.0, set-blocking@~2.0.0: +set-blocking@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= + integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== -set-value@^0.4.3: - version "0.4.3" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1" - integrity sha1-fbCPnT0i3H945Trzw79GZuzfzPE= - dependencies: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.1" - to-object-path "^0.3.0" - -set-value@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274" - integrity sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg== +set-value@^2.0.0, set-value@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" + integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== dependencies: extend-shallow "^2.0.1" is-extendable "^0.1.1" @@ -14109,7 +14379,7 @@ shasum@^1.0.0: shebang-command@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" - integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= + integrity sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg== dependencies: shebang-regex "^1.0.0" @@ -14123,7 +14393,7 @@ shebang-command@^2.0.0: shebang-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" - integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= + integrity sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ== shebang-regex@^3.0.0: version "3.0.0" @@ -14154,12 +14424,7 @@ side-channel@^1.0.4: get-intrinsic "^1.0.2" object-inspect "^1.9.0" -signal-exit@^3.0.0, signal-exit@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" - integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= - -signal-exit@^3.0.3: +signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3: version "3.0.7" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== @@ -14237,10 +14502,10 @@ sirv@^1.0.7: mrmime "^1.0.0" totalist "^1.0.0" -sisteransi@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.0.tgz#77d9622ff909080f1c19e5f4a1df0c1b0a27b88c" - integrity sha512-N+z4pHB4AmUv0SjveWRd6q1Nj5w62m5jodv+GD8lvmbY/83T/rpbJGZOnK5T149OldDj4Db07BSv9xY4K6NTPQ== +sisteransi@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" + integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== slab-decomposition@^1.0.1: version "1.0.2" @@ -14330,20 +14595,20 @@ source-list-map@^2.0.0: integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== source-map-resolve@^0.5.0: - version "0.5.2" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259" - integrity sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA== + version "0.5.3" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" + integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== dependencies: - atob "^2.1.1" + atob "^2.1.2" decode-uri-component "^0.2.0" resolve-url "^0.2.1" source-map-url "^0.4.0" urix "^0.1.0" source-map-support@^0.5.6: - version "0.5.10" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.10.tgz#2214080bc9d51832511ee2bab96e3c2f9353120c" - integrity sha512-YfQ3tQFTK/yzlGJuX8pTwa4tifQj4QS2Mj7UegOu8jAz59MqIiMGPXxQhVQiIMNzayuUSF/jEuVnfFF5JqybmQ== + version "0.5.21" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== dependencies: buffer-from "^1.0.0" source-map "^0.6.0" @@ -14357,9 +14622,9 @@ source-map-support@~0.5.12: source-map "^0.6.0" source-map-url@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" - integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= + version "0.4.1" + resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" + integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== "source-map@>= 0.1.2", source-map@~0.1.33: version "0.1.43" @@ -14401,30 +14666,30 @@ spawn-wrap@^2.0.0: which "^2.0.1" spdx-correct@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" - integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q== + version "3.2.0" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.2.0.tgz#4f5ab0668f0059e34f9c00dce331784a12de4e9c" + integrity sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA== dependencies: spdx-expression-parse "^3.0.0" spdx-license-ids "^3.0.0" spdx-exceptions@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977" - integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA== + version "2.3.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" + integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== spdx-expression-parse@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" - integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg== + version "3.0.1" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" + integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== dependencies: spdx-exceptions "^2.1.0" spdx-license-ids "^3.0.0" spdx-license-ids@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.3.tgz#81c0ce8f21474756148bbb5f3bfc0f36bf15d76e" - integrity sha512-uBIcIl3Ih6Phe3XHK1NqboJLdGfwr1UN3k6wSD1dZpmPsIkb8AGNbZYJ1fOBk834+Gxy8rpfDxrS6XLEMZMY2g== + version "3.0.13" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz#7189a474c46f8d47c7b0da4b987bb45e908bd2d5" + integrity sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w== spdy-transport@^3.0.0: version "3.0.0" @@ -14484,7 +14749,7 @@ sprintf-js@^1.0.3: sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= + integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== "sql-formatter@git+https://github.com/getredash/sql-formatter.git": version "2.3.3" @@ -14493,9 +14758,9 @@ sprintf-js@~1.0.2: lodash "^4.16.0" sshpk@^1.7.0: - version "1.16.1" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" - integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== + version "1.17.0" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.17.0.tgz#578082d92d4fe612b13007496e543fa0fbcbe4c5" + integrity sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ== dependencies: asn1 "~0.2.3" assert-plus "^1.0.0" @@ -14520,9 +14785,11 @@ stack-trace@0.0.9, stack-trace@0.0.x: integrity sha1-qPbq7KkGdMMz58Q5U/J1tFFRBpU= stack-utils@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.2.tgz#33eba3897788558bebfc2db059dc158ec36cebb8" - integrity sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA== + version "1.0.5" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.5.tgz#a19b0b01947e0029c8e451d5d61a498f5bb1471b" + integrity sha512-KZiTzuV3CnSnSvgMRrARVCj+Ht7rMbauGDK0LdVFRGyenwdylpajAp4Q0i6SX8rEmbTpMMf6ryq2gb8pPq2WgQ== + dependencies: + escape-string-regexp "^2.0.0" stackframe@^1.1.1: version "1.2.0" @@ -14546,7 +14813,7 @@ static-eval@~0.2.0: static-extend@^0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" - integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= + integrity sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g== dependencies: define-property "^0.2.5" object-copy "^0.1.0" @@ -14581,7 +14848,7 @@ statuses@2.0.1: stealthy-require@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" - integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= + integrity sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g== stream-browserify@^2.0.0, stream-browserify@^2.0.1: version "2.0.2" @@ -14644,7 +14911,7 @@ string-convert@^0.2.0: string-length@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/string-length/-/string-length-2.0.0.tgz#d40dbb686a3ace960c1cffca562bf2c45f8363ed" - integrity sha1-1A27aGo6zpYMHP/KVivyxF+DY+0= + integrity sha512-Qka42GGrS8Mm3SZ+7cH8UXiIWI867/b/Z/feQSpQx/rbfB8UGknGEZVaUQMOUVj+soY6NpWAxily63HI1OckVQ== dependencies: astral-regex "^1.0.0" strip-ansi "^4.0.0" @@ -14664,16 +14931,16 @@ string-to-arraybuffer@^1.0.0: atob-lite "^2.0.0" is-base64 "^0.1.0" -string-width@^1.0.1, "string-width@^1.0.2 || 2": +string-width@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= + integrity sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw== dependencies: code-point-at "^1.0.0" is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -string-width@^2.0.0, string-width@^2.1.1: +string-width@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== @@ -14716,6 +14983,15 @@ string.prototype.trim@^1.1.2: es-abstract "^1.5.0" function-bind "^1.0.2" +string.prototype.trim@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz#a68352740859f6893f14ce3ef1bb3037f7a90533" + integrity sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + string.prototype.trim@~1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.1.tgz#141233dff32c82bfad80684d7e5f0869ee0fb782" @@ -14741,6 +15017,15 @@ string.prototype.trimend@^1.0.3: call-bind "^1.0.0" define-properties "^1.1.3" +string.prototype.trimend@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz#c4a27fa026d979d79c04f17397f250a462944533" + integrity sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + string.prototype.trimleft@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz#6cc47f0d7eb8d62b0f3701611715a3954591d634" @@ -14791,6 +15076,15 @@ string.prototype.trimstart@^1.0.3: call-bind "^1.0.0" define-properties "^1.1.3" +string.prototype.trimstart@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz#e90ab66aa8e4007d92ef591bbf3cd422c56bdcf4" + integrity sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + string_decoder@^1.0.0, string_decoder@^1.1.1: version "1.3.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" @@ -14813,14 +15107,14 @@ string_decoder@~1.1.1: strip-ansi@^3.0.0, strip-ansi@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= + integrity sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg== dependencies: ansi-regex "^2.0.0" strip-ansi@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= + integrity sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow== dependencies: ansi-regex "^3.0.0" @@ -14841,7 +15135,7 @@ strip-ansi@^6.0.0: strip-bom@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= + integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== strip-bom@^4.0.0: version "4.0.0" @@ -14851,7 +15145,7 @@ strip-bom@^4.0.0: strip-eof@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" - integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= + integrity sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q== strip-final-newline@^2.0.0: version "2.0.0" @@ -14863,11 +15157,6 @@ strip-json-comments@^3.0.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.0.1.tgz#85713975a91fb87bf1b305cca77395e40d2a64a7" integrity sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw== -strip-json-comments@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" - integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= - strongly-connected-components@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/strongly-connected-components/-/strongly-connected-components-1.0.1.tgz#0920e2b4df67c8eaee96c6b6234fe29e873dba99" @@ -14919,7 +15208,7 @@ supports-color@^5.0.0, supports-color@^5.3.0, supports-color@^5.4.0, supports-co dependencies: has-flag "^3.0.0" -supports-color@^6.0.0, supports-color@^6.1.0: +supports-color@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== @@ -14941,6 +15230,11 @@ supports-hyperlinks@^1.0.1: has-flag "^2.0.0" supports-color "^5.0.0" +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + surface-nets@^1.0.0, surface-nets@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/surface-nets/-/surface-nets-1.0.2.tgz#e433c8cbba94a7274c6f4c99552b461bf1fc7a4b" @@ -14982,9 +15276,9 @@ symbol-observable@^1.1.0: integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== symbol-tree@^3.2.2: - version "3.2.2" - resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz#ae27db38f660a7ae2e1c3b7d1bc290819b8519e6" - integrity sha1-rifbOPZgp64uHDt9G8KQgZuFGeY= + version "3.2.4" + resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" + integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== syntax-error@^1.1.1: version "1.4.0" @@ -15029,19 +15323,6 @@ tape@^4.0.0: string.prototype.trim "~1.2.1" through "~2.3.8" -tar@^4: - version "4.4.19" - resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.19.tgz#2e4d7263df26f2b914dee10c825ab132123742f3" - integrity sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA== - dependencies: - chownr "^1.1.4" - fs-minipass "^1.2.7" - minipass "^2.9.0" - minizlib "^1.3.3" - mkdirp "^0.5.5" - safe-buffer "^5.2.1" - yallist "^3.1.1" - terser-webpack-plugin@^1.4.3: version "1.4.5" resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz#a217aefaea330e734ffacb6120ec1fa312d6040b" @@ -15105,7 +15386,7 @@ text-table@^0.2.0: throat@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a" - integrity sha1-iQN8vJLFarGJJua6TLsgDhVnKmo= + integrity sha512-wCVxLDcFxw7ujDxaeJC6nfl2XfHJNYs8yUYJnvMgtPEFlttP9tHSfRUv2vBe6C4hkVFPWoP1P6ZccbYjmSEkKA== throttleit@^1.0.0: version "1.0.0" @@ -15194,7 +15475,7 @@ tmp@~0.2.1: dependencies: rimraf "^3.0.0" -tmpl@1.0.x: +tmpl@1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== @@ -15221,7 +15502,7 @@ to-fast-properties@^1.0.3: to-fast-properties@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= + integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== to-float32@^1.0.1: version "1.0.1" @@ -15231,7 +15512,7 @@ to-float32@^1.0.1: to-object-path@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" - integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= + integrity sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg== dependencies: kind-of "^3.0.2" @@ -15245,7 +15526,7 @@ to-px@^1.0.1: to-regex-range@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" - integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= + integrity sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg== dependencies: is-number "^3.0.0" repeat-string "^1.6.1" @@ -15326,7 +15607,7 @@ tough-cookie@~2.4.3: tr46@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" - integrity sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk= + integrity sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA== dependencies: punycode "^2.1.0" @@ -15351,11 +15632,6 @@ triangulate-polyline@^1.0.0: dependencies: cdt2d "^1.0.0" -trim-right@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" - integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM= - triple-beam@^1.2.0, triple-beam@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/triple-beam/-/triple-beam-1.3.0.tgz#a595214c7298db8339eeeee083e4d10bd8cb8dd9" @@ -15396,7 +15672,7 @@ tty-browserify@0.0.1: tunnel-agent@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= + integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== dependencies: safe-buffer "^5.0.1" @@ -15412,7 +15688,7 @@ turntable-camera-controller@^3.0.0: tweetnacl@^0.14.3, tweetnacl@~0.14.0: version "0.14.5" resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" - integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= + integrity sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA== two-product@^1.0.0, two-product@^1.0.2: version "1.0.2" @@ -15427,7 +15703,7 @@ two-sum@^1.0.0: type-check@~0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" - integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= + integrity sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg== dependencies: prelude-ls "~1.1.2" @@ -15467,6 +15743,45 @@ type@^2.0.0: resolved "https://registry.yarnpkg.com/type/-/type-2.0.0.tgz#5f16ff6ef2eb44f260494dae271033b29c09a9c3" integrity sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow== +typed-array-buffer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz#18de3e7ed7974b0a729d3feecb94338d1472cd60" + integrity sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.1" + is-typed-array "^1.1.10" + +typed-array-byte-length@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz#d787a24a995711611fb2b87a4052799517b230d0" + integrity sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA== + dependencies: + call-bind "^1.0.2" + for-each "^0.3.3" + has-proto "^1.0.1" + is-typed-array "^1.1.10" + +typed-array-byte-offset@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz#cbbe89b51fdef9cd6aaf07ad4707340abbc4ea0b" + integrity sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + has-proto "^1.0.1" + is-typed-array "^1.1.10" + +typed-array-length@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.4.tgz#89d83785e5c4098bec72e08b319651f0eac9c1bb" + integrity sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng== + dependencies: + call-bind "^1.0.2" + for-each "^0.3.3" + is-typed-array "^1.1.9" + typedarray-pool@^1.0.0, typedarray-pool@^1.0.2, typedarray-pool@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/typedarray-pool/-/typedarray-pool-1.2.0.tgz#e7e90720144ba02b9ed660438af6f3aacfe33ac3" @@ -15502,14 +15817,6 @@ uglify-js@^2.6.0: optionalDependencies: uglify-to-browserify "~1.0.0" -uglify-js@^3.1.4: - version "3.4.9" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.4.9.tgz#af02f180c1207d76432e473ed24a28f4a782bae3" - integrity sha512-8CJsbKOtEbnJsTyv6LE6m6ZKniqMiFWmm9sRbopbkGs3gMPPfd3Fh8iIA4Ykv5MgaTbqHr4BaoGLJLZNhsrW1Q== - dependencies: - commander "~2.17.1" - source-map "~0.6.1" - uglify-to-browserify@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" @@ -15520,6 +15827,16 @@ umd@^3.0.0: resolved "https://registry.yarnpkg.com/umd/-/umd-3.0.3.tgz#aa9fe653c42b9097678489c01000acb69f0b26cf" integrity sha512-4IcGSufhFshvLNcMCV80UnQVlZ5pMOC8mvNPForqwA4+lzYQuetTESLDQkeLmihq8bRcnpbQa48Wb8Lh16/xow== +unbox-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" + integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== + dependencies: + call-bind "^1.0.2" + has-bigints "^1.0.2" + has-symbols "^1.0.3" + which-boxed-primitive "^1.0.2" + undeclared-identifiers@^1.1.2: version "1.1.3" resolved "https://registry.yarnpkg.com/undeclared-identifiers/-/undeclared-identifiers-1.1.3.tgz#9254c1d37bdac0ac2b52de4b6722792d2a91e30f" @@ -15565,14 +15882,14 @@ union-find@~0.0.3: integrity sha1-uFSzMBYZva0USwAUx4+W6sDS8PY= union-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4" - integrity sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ= + version "1.0.1" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" + integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== dependencies: arr-union "^3.1.0" get-value "^2.0.6" is-extendable "^0.1.1" - set-value "^0.4.3" + set-value "^2.0.1" uniq@^1.0.0, uniq@^1.0.1: version "1.0.1" @@ -15623,7 +15940,7 @@ unquote@^1.1.0: unset-value@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" - integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= + integrity sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ== dependencies: has-value "^0.3.1" isobject "^3.0.0" @@ -15643,22 +15960,30 @@ upath@^1.1.1: resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== +update-browserslist-db@^1.0.11: + version "1.0.11" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz#9a2a641ad2907ae7b3616506f4b977851db5b940" + integrity sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA== + dependencies: + escalade "^3.1.1" + picocolors "^1.0.0" + update-diff@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/update-diff/-/update-diff-1.1.0.tgz#f510182d81ee819fb82c3a6b22b62bbdeda7808f" integrity sha1-9RAYLYHugZ+4LDprIrYrve2ngI8= uri-js@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" - integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== dependencies: punycode "^2.1.0" urix@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" - integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= + integrity sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg== url-loader@^1.1.2: version "1.1.2" @@ -15702,7 +16027,7 @@ util-deprecate@^1.0.1, util-deprecate@~1.0.1: resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== -util.promisify@1.0.0, util.promisify@^1.0.0: +util.promisify@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA== @@ -15710,6 +16035,19 @@ util.promisify@1.0.0, util.promisify@^1.0.0: define-properties "^1.1.2" object.getownpropertydescriptors "^2.0.3" +util.promisify@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.1.2.tgz#02b3dbadbb80071eee4c43aed58747afdfc516db" + integrity sha512-PBdZ03m1kBnQ5cjjO0ZvJMJS+QsbyIcFwi4hY4U76OQsCO9JrOYjbCFgIF76ccFg9xnJo7ZHPkqyj1GqmdS7MA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + for-each "^0.3.3" + has-proto "^1.0.1" + has-symbols "^1.0.3" + object.getownpropertydescriptors "^2.1.6" + safe-array-concat "^1.0.0" + util@0.10.3: version "0.10.3" resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" @@ -15780,12 +16118,7 @@ utils-regex-from-string@^1.0.0: regex-regex "^1.0.0" validate.io-string-primitive "^1.0.0" -uuid@^3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" - integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== - -uuid@^3.3.3: +uuid@^3.3.2, uuid@^3.3.3: version "3.4.0" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== @@ -15910,7 +16243,7 @@ vectorize-text@^3.2.1: verror@1.10.0: version "1.10.0" resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" - integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= + integrity sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw== dependencies: assert-plus "^1.0.0" core-util-is "1.0.2" @@ -15931,11 +16264,11 @@ vt-pbf@^3.1.1: pbf "^3.0.5" w3c-hr-time@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz#82ac2bff63d950ea9e3189a58a65625fedf19045" - integrity sha1-gqwr/2PZUOqeMYmlimViX+3xkEU= + version "1.0.2" + resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" + integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== dependencies: - browser-process-hrtime "^0.1.2" + browser-process-hrtime "^1.0.0" walk@^2.3.14: version "2.3.14" @@ -15944,12 +16277,12 @@ walk@^2.3.14: dependencies: foreachasync "^3.0.0" -walker@~1.0.5: - version "1.0.7" - resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" - integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs= +walker@^1.0.7, walker@~1.0.5: + version "1.0.8" + resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" + integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== dependencies: - makeerror "1.0.x" + makeerror "1.0.12" warning@^4.0.1, warning@^4.0.3: version "4.0.3" @@ -15958,14 +16291,6 @@ warning@^4.0.1, warning@^4.0.3: dependencies: loose-envify "^1.0.0" -watch@~0.18.0: - version "0.18.0" - resolved "https://registry.yarnpkg.com/watch/-/watch-0.18.0.tgz#28095476c6df7c90c963138990c0a5423eb4b986" - integrity sha1-KAlUdsbffJDJYxOJkMClQj60uYY= - dependencies: - exec-sh "^0.2.0" - minimist "^1.2.0" - watchify@3.11.1: version "3.11.1" resolved "https://registry.yarnpkg.com/watchify/-/watchify-3.11.1.tgz#8e4665871fff1ef64c0430d1a2c9d084d9721881" @@ -16225,20 +16550,42 @@ whatwg-url@^6.4.1: webidl-conversions "^4.0.2" whatwg-url@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.0.0.tgz#fde926fa54a599f3adf82dff25a9f7be02dc6edd" - integrity sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ== + version "7.1.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" + integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg== dependencies: lodash.sortby "^4.7.0" tr46 "^1.0.1" webidl-conversions "^4.0.2" +which-boxed-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" + integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== + dependencies: + is-bigint "^1.0.1" + is-boolean-object "^1.1.0" + is-number-object "^1.0.4" + is-string "^1.0.5" + is-symbol "^1.0.3" + which-module@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" - integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= + version "2.0.1" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.1.tgz#776b1fe35d90aebe99e8ac15eb24093389a4a409" + integrity sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ== + +which-typed-array@^1.1.10, which-typed-array@^1.1.11: + version "1.1.11" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.11.tgz#99d691f23c72aab6768680805a271b69761ed61a" + integrity sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.0" -which@^1.2.12, which@^1.2.14, which@^1.2.9, which@^1.3.0, which@^1.3.1: +which@^1.2.14, which@^1.2.9, which@^1.3.0, which@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== @@ -16252,13 +16599,6 @@ which@^2.0.1: dependencies: isexe "^2.0.0" -wide-align@^1.1.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" - integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== - dependencies: - string-width "^1.0.2 || 2" - widest-line@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-2.0.1.tgz#7438764730ec7ef4381ce4df82fb98a53142a3fc" @@ -16302,20 +16642,15 @@ winston@^3.0.0: winston-transport "^4.4.0" word-wrap@~1.2.3: - version "1.2.4" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.4.tgz#cb4b50ec9aca570abd1f52f33cd45b6c61739a9f" - integrity sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA== + version "1.2.5" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" + integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== wordwrap@0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" integrity sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8= -wordwrap@^1.0.0, wordwrap@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" - integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= - worker-farm@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" @@ -16330,14 +16665,6 @@ world-calendars@^1.0.3: dependencies: object-assign "^4.1.0" -wrap-ansi@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" - integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - wrap-ansi@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-3.0.1.tgz#288a04d87eda5c286e060dfe8f135ce8d007f8ba" @@ -16464,12 +16791,12 @@ xtend@~2.1.1: dependencies: object-keys "~0.4.0" -"y18n@^3.2.1 || ^4.0.0", y18n@^4.0.0: +y18n@^4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== -yallist@^3.0.0, yallist@^3.0.2, yallist@^3.1.1: +yallist@^3.0.2: version "3.1.1" resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== @@ -16479,14 +16806,6 @@ yallist@^4.0.0: resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== -yargs-parser@^11.1.1: - version "11.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4" - integrity sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - yargs-parser@^13.1.2: version "13.1.2" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" @@ -16503,25 +16822,7 @@ yargs-parser@^18.1.2: camelcase "^5.0.0" decamelize "^1.2.0" -yargs@^12.0.2: - version "12.0.5" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" - integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw== - dependencies: - cliui "^4.0.0" - decamelize "^1.2.0" - find-up "^3.0.0" - get-caller-file "^1.0.1" - os-locale "^3.0.0" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^2.0.0" - which-module "^2.0.0" - y18n "^3.2.1 || ^4.0.0" - yargs-parser "^11.1.1" - -yargs@^13.3.2: +yargs@^13.3.0, yargs@^13.3.2: version "13.3.2" resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== From 3446e7e569e77e6e1f056d0c332fd54cf877fe70 Mon Sep 17 00:00:00 2001 From: Konstantin Smirnov <46676677+konnectr@users.noreply.github.com> Date: Sun, 23 Jul 2023 20:10:14 +0500 Subject: [PATCH 203/274] update jest viz_lib (#6261) --- viz-lib/yarn.lock | 1568 +++++++++++++++++++++++++++++++-------------- 1 file changed, 1084 insertions(+), 484 deletions(-) diff --git a/viz-lib/yarn.lock b/viz-lib/yarn.lock index 66d5d07d5b..d6de83f470 100644 --- a/viz-lib/yarn.lock +++ b/viz-lib/yarn.lock @@ -11,6 +11,14 @@ orbit-camera-controller "^4.0.0" turntable-camera-controller "^3.0.0" +"@ampproject/remapping@^2.2.0": + version "2.2.1" + resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630" + integrity sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg== + dependencies: + "@jridgewell/gen-mapping" "^0.3.0" + "@jridgewell/trace-mapping" "^0.3.9" + "@babel/cli@^7.8.4": version "7.8.4" resolved "https://registry.yarnpkg.com/@babel/cli/-/cli-7.8.4.tgz#505fb053721a98777b2b175323ea4f090b7d3c1c" @@ -27,12 +35,12 @@ optionalDependencies: chokidar "^2.1.8" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.8.3.tgz#33e25903d7481181534e12ec0a25f16b6fcf419e" - integrity sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g== +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.22.5", "@babel/code-frame@^7.8.3": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.5.tgz#234d98e1551960604f1246e6475891a570ad5658" + integrity sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ== dependencies: - "@babel/highlight" "^7.8.3" + "@babel/highlight" "^7.22.5" "@babel/code-frame@^7.10.4": version "7.10.4" @@ -41,6 +49,11 @@ dependencies: "@babel/highlight" "^7.10.4" +"@babel/compat-data@^7.22.9": + version "7.22.9" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.22.9.tgz#71cdb00a1ce3a329ce4cbec3a44f9fef35669730" + integrity sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ== + "@babel/compat-data@^7.8.6", "@babel/compat-data@^7.9.0": version "7.9.0" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.9.0.tgz#04815556fc90b0c174abd2c0c1bb966faa036a6c" @@ -50,7 +63,28 @@ invariant "^2.2.4" semver "^5.5.0" -"@babel/core@^7.1.0", "@babel/core@^7.1.6", "@babel/core@^7.7.5", "@babel/core@^7.9.0": +"@babel/core@^7.1.0": + version "7.22.9" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.22.9.tgz#bd96492c68822198f33e8a256061da3cf391f58f" + integrity sha512-G2EgeufBcYw27U4hhoIwFcgc1XU7TlXJ3mv04oOv1WCuo900U/anZSPzEqNjwdjgffkk2Gs0AN0dW1CKVLcG7w== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.22.5" + "@babel/generator" "^7.22.9" + "@babel/helper-compilation-targets" "^7.22.9" + "@babel/helper-module-transforms" "^7.22.9" + "@babel/helpers" "^7.22.6" + "@babel/parser" "^7.22.7" + "@babel/template" "^7.22.5" + "@babel/traverse" "^7.22.8" + "@babel/types" "^7.22.5" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.2" + semver "^6.3.1" + +"@babel/core@^7.1.6", "@babel/core@^7.7.5", "@babel/core@^7.9.0": version "7.9.0" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.9.0.tgz#ac977b538b77e132ff706f3b8a4dbad09c03c56e" integrity sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w== @@ -81,15 +115,15 @@ jsesc "^2.5.1" source-map "^0.5.0" -"@babel/generator@^7.4.0", "@babel/generator@^7.9.0": - version "7.9.4" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.9.4.tgz#12441e90c3b3c4159cdecf312075bf1a8ce2dbce" - integrity sha512-rjP8ahaDy/ouhrvCoU1E5mqaitWrxwuNGU+dy1EpaoK48jZay4MdkskKGIMHLZNewg8sAsqpGSREJwP0zH3YQA== +"@babel/generator@^7.22.7", "@babel/generator@^7.22.9", "@babel/generator@^7.4.0", "@babel/generator@^7.9.0": + version "7.22.9" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.22.9.tgz#572ecfa7a31002fa1de2a9d91621fd895da8493d" + integrity sha512-KtLMbmicyuK2Ak/FTCJVbDnkN1SlT8/kceFTiuDiiRUUSMnHMidxSCdG4ndkTOHHpoomWe/4xkvHkEOncwjYIw== dependencies: - "@babel/types" "^7.9.0" + "@babel/types" "^7.22.5" + "@jridgewell/gen-mapping" "^0.3.2" + "@jridgewell/trace-mapping" "^0.3.17" jsesc "^2.5.1" - lodash "^4.17.13" - source-map "^0.5.0" "@babel/helper-annotate-as-pure@^7.8.3": version "7.8.3" @@ -123,6 +157,17 @@ "@babel/helper-annotate-as-pure" "^7.8.3" "@babel/types" "^7.9.0" +"@babel/helper-compilation-targets@^7.22.9": + version "7.22.9" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.9.tgz#f9d0a7aaaa7cd32a3f31c9316a69f5a9bcacb892" + integrity sha512-7qYrNM6HjpnPHJbopxmb8hSPoZ0gsX8IvUS32JGVoy+pU9e5N0nLr1VjJoR6kA4d9dmGLxNYOjeB8sUDal2WMw== + dependencies: + "@babel/compat-data" "^7.22.9" + "@babel/helper-validator-option" "^7.22.5" + browserslist "^4.21.9" + lru-cache "^5.1.1" + semver "^6.3.1" + "@babel/helper-compilation-targets@^7.8.7": version "7.8.7" resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.8.7.tgz#dac1eea159c0e4bd46e309b5a1b04a66b53c1dde" @@ -175,6 +220,11 @@ "@babel/types" "^7.8.3" lodash "^4.17.13" +"@babel/helper-environment-visitor@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz#f06dd41b7c1f44e1f8da6c4055b41ab3a09a7e98" + integrity sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q== + "@babel/helper-explode-assignable-expression@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.8.3.tgz#a728dc5b4e89e30fc2dfc7d04fa28a930653f982" @@ -192,14 +242,13 @@ "@babel/template" "^7.10.4" "@babel/types" "^7.10.4" -"@babel/helper-function-name@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz#eeeb665a01b1f11068e9fb86ad56a1cb1a824cca" - integrity sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA== +"@babel/helper-function-name@^7.22.5", "@babel/helper-function-name@^7.8.3": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz#ede300828905bb15e582c037162f99d5183af1be" + integrity sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ== dependencies: - "@babel/helper-get-function-arity" "^7.8.3" - "@babel/template" "^7.8.3" - "@babel/types" "^7.8.3" + "@babel/template" "^7.22.5" + "@babel/types" "^7.22.5" "@babel/helper-get-function-arity@^7.10.4": version "7.10.4" @@ -209,11 +258,18 @@ "@babel/types" "^7.10.4" "@babel/helper-get-function-arity@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz#b894b947bd004381ce63ea1db9f08547e920abd5" - integrity sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA== + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz#ea08ac753117a669f1508ba06ebcc49156387419" + integrity sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw== dependencies: - "@babel/types" "^7.8.3" + "@babel/types" "^7.16.7" + +"@babel/helper-hoist-variables@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb" + integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw== + dependencies: + "@babel/types" "^7.22.5" "@babel/helper-hoist-variables@^7.8.3": version "7.8.3" @@ -229,32 +285,30 @@ dependencies: "@babel/types" "^7.12.7" -"@babel/helper-member-expression-to-functions@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz#659b710498ea6c1d9907e0c73f206eee7dadc24c" - integrity sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA== +"@babel/helper-member-expression-to-functions@^7.22.5", "@babel/helper-member-expression-to-functions@^7.8.3": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.22.5.tgz#0a7c56117cad3372fbf8d2fb4bf8f8d64a1e76b2" + integrity sha512-aBiH1NKMG0H2cGZqspNvsaBe6wNGjbJjuLy29aU+eDZjSbbN53BaxlpB02xm9v34pLTZ1nIQPFYn2qMZoa5BQQ== dependencies: - "@babel/types" "^7.8.3" + "@babel/types" "^7.22.5" -"@babel/helper-module-imports@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz#7fe39589b39c016331b6b8c3f441e8f0b1419498" - integrity sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg== +"@babel/helper-module-imports@^7.22.5", "@babel/helper-module-imports@^7.8.3": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz#1a8f4c9f4027d23f520bd76b364d44434a72660c" + integrity sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg== dependencies: - "@babel/types" "^7.8.3" + "@babel/types" "^7.22.5" -"@babel/helper-module-transforms@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz#43b34dfe15961918707d247327431388e9fe96e5" - integrity sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA== +"@babel/helper-module-transforms@^7.22.9", "@babel/helper-module-transforms@^7.9.0": + version "7.22.9" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.22.9.tgz#92dfcb1fbbb2bc62529024f72d942a8c97142129" + integrity sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ== dependencies: - "@babel/helper-module-imports" "^7.8.3" - "@babel/helper-replace-supers" "^7.8.6" - "@babel/helper-simple-access" "^7.8.3" - "@babel/helper-split-export-declaration" "^7.8.3" - "@babel/template" "^7.8.6" - "@babel/types" "^7.9.0" - lodash "^4.17.13" + "@babel/helper-environment-visitor" "^7.22.5" + "@babel/helper-module-imports" "^7.22.5" + "@babel/helper-simple-access" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/helper-validator-identifier" "^7.22.5" "@babel/helper-optimise-call-expression@^7.10.4": version "7.12.7" @@ -263,23 +317,28 @@ dependencies: "@babel/types" "^7.12.7" -"@babel/helper-optimise-call-expression@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz#7ed071813d09c75298ef4f208956006b6111ecb9" - integrity sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ== +"@babel/helper-optimise-call-expression@^7.22.5", "@babel/helper-optimise-call-expression@^7.8.3": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz#f21531a9ccbff644fdd156b4077c16ff0c3f609e" + integrity sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw== dependencies: - "@babel/types" "^7.8.3" + "@babel/types" "^7.22.5" -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz#9ea293be19babc0f52ff8ca88b34c3611b208670" - integrity sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ== +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.8.0": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295" + integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== "@babel/helper-plugin-utils@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz#2f75a831269d4f677de49986dff59927533cf375" integrity sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg== +"@babel/helper-plugin-utils@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz#9ea293be19babc0f52ff8ca88b34c3611b208670" + integrity sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ== + "@babel/helper-regex@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.8.3.tgz#139772607d51b93f23effe72105b319d2a4c6965" @@ -308,7 +367,7 @@ "@babel/traverse" "^7.12.5" "@babel/types" "^7.12.5" -"@babel/helper-replace-supers@^7.8.3", "@babel/helper-replace-supers@^7.8.6": +"@babel/helper-replace-supers@^7.8.3": version "7.8.6" resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.8.6.tgz#5ada744fd5ad73203bf1d67459a27dcba67effc8" integrity sha512-PeMArdA4Sv/Wf4zXwBKPqVj7n9UF/xg6slNRtZW84FM7JpE1CbG8B612FyM4cxrf4fMAMGO0kR7voy1ForHHFA== @@ -318,13 +377,21 @@ "@babel/traverse" "^7.8.6" "@babel/types" "^7.8.6" -"@babel/helper-simple-access@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz#7f8109928b4dab4654076986af575231deb639ae" - integrity sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw== +"@babel/helper-replace-supers@^7.8.6": + version "7.22.9" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.22.9.tgz#cbdc27d6d8d18cd22c81ae4293765a5d9afd0779" + integrity sha512-LJIKvvpgPOPUThdYqcX6IXRuIcTkcAub0IaDRGCZH0p5GPUp7PhRU9QVgFcDDd51BaPkk77ZjqFwh6DZTAEmGg== dependencies: - "@babel/template" "^7.8.3" - "@babel/types" "^7.8.3" + "@babel/helper-environment-visitor" "^7.22.5" + "@babel/helper-member-expression-to-functions" "^7.22.5" + "@babel/helper-optimise-call-expression" "^7.22.5" + +"@babel/helper-simple-access@^7.22.5", "@babel/helper-simple-access@^7.8.3": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz#4938357dc7d782b80ed6dbb03a0fba3d22b1d5de" + integrity sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w== + dependencies: + "@babel/types" "^7.22.5" "@babel/helper-split-export-declaration@^7.10.4", "@babel/helper-split-export-declaration@^7.11.0": version "7.11.0" @@ -333,28 +400,38 @@ dependencies: "@babel/types" "^7.11.0" -"@babel/helper-split-export-declaration@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz#31a9f30070f91368a7182cf05f831781065fc7a9" - integrity sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA== +"@babel/helper-split-export-declaration@^7.22.6", "@babel/helper-split-export-declaration@^7.8.3": + version "7.22.6" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c" + integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g== dependencies: - "@babel/types" "^7.8.3" + "@babel/types" "^7.22.5" + +"@babel/helper-string-parser@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz#533f36457a25814cf1df6488523ad547d784a99f" + integrity sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw== "@babel/helper-validator-identifier@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2" integrity sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw== -"@babel/helper-validator-identifier@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.0.tgz#ad53562a7fc29b3b9a91bbf7d10397fd146346ed" - integrity sha512-6G8bQKjOh+of4PV/ThDm/rRqlU7+IGoJuofpagU5GlEl29Vv0RGqqt86ZGRV8ZuSOY3o+8yXl5y782SMcG7SHw== +"@babel/helper-validator-identifier@^7.22.5", "@babel/helper-validator-identifier@^7.9.0": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz#9544ef6a33999343c8740fa51350f30eeaaaf193" + integrity sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ== "@babel/helper-validator-option@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.1.tgz#175567380c3e77d60ff98a54bb015fe78f2178d9" integrity sha512-YpJabsXlJVWP0USHjnC/AQDTLlZERbON577YUVO/wLpqyj6HAtVYnWaQaN0iUN+1/tWn3c+uKKXjRut5115Y2A== +"@babel/helper-validator-option@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz#de52000a15a177413c8234fa3a8af4ee8102d0ac" + integrity sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw== + "@babel/helper-wrap-function@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.8.3.tgz#9dbdb2bb55ef14aaa01fe8c99b629bd5352d8610" @@ -365,14 +442,14 @@ "@babel/traverse" "^7.8.3" "@babel/types" "^7.8.3" -"@babel/helpers@^7.9.0": - version "7.9.2" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.9.2.tgz#b42a81a811f1e7313b88cba8adc66b3d9ae6c09f" - integrity sha512-JwLvzlXVPjO8eU9c/wF9/zOIN7X6h8DYf7mG4CiFRZRvZNKEF5dQ3H3V+ASkHoIB3mWhatgl5ONhyqHRI6MppA== +"@babel/helpers@^7.22.6", "@babel/helpers@^7.9.0": + version "7.22.6" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.22.6.tgz#8e61d3395a4f0c5a8060f309fb008200969b5ecd" + integrity sha512-YjDs6y/fVOYFV8hAf1rxd1QvR9wJe1pDBZ2AREKq/SDayfPzgk0PBnVuTCE5X1acEpMMNOVUqoe+OwiZGJ+OaA== dependencies: - "@babel/template" "^7.8.3" - "@babel/traverse" "^7.9.0" - "@babel/types" "^7.9.0" + "@babel/template" "^7.22.5" + "@babel/traverse" "^7.22.6" + "@babel/types" "^7.22.5" "@babel/highlight@^7.10.4": version "7.10.4" @@ -383,16 +460,21 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/highlight@^7.8.3": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.9.0.tgz#4e9b45ccb82b79607271b2979ad82c7b68163079" - integrity sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ== +"@babel/highlight@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.22.5.tgz#aa6c05c5407a67ebce408162b7ede789b4d22031" + integrity sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw== dependencies: - "@babel/helper-validator-identifier" "^7.9.0" + "@babel/helper-validator-identifier" "^7.22.5" chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.1.6", "@babel/parser@^7.4.3", "@babel/parser@^7.8.6", "@babel/parser@^7.9.0": +"@babel/parser@^7.1.0", "@babel/parser@^7.20.7", "@babel/parser@^7.22.5", "@babel/parser@^7.22.7", "@babel/parser@^7.4.3", "@babel/parser@^7.9.0": + version "7.22.7" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.22.7.tgz#df8cf085ce92ddbdbf668a7f186ce848c9036cae" + integrity sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q== + +"@babel/parser@^7.1.6": version "7.9.4" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.9.4.tgz#68a35e6b0319bbc014465be43828300113f2f2e8" integrity sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA== @@ -1010,29 +1092,30 @@ "@babel/parser" "^7.12.7" "@babel/types" "^7.12.7" -"@babel/template@^7.4.0", "@babel/template@^7.8.3", "@babel/template@^7.8.6": - version "7.8.6" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.8.6.tgz#86b22af15f828dfb086474f964dcc3e39c43ce2b" - integrity sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg== - dependencies: - "@babel/code-frame" "^7.8.3" - "@babel/parser" "^7.8.6" - "@babel/types" "^7.8.6" - -"@babel/traverse@^7.1.0", "@babel/traverse@^7.4.3", "@babel/traverse@^7.8.3", "@babel/traverse@^7.8.6", "@babel/traverse@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.9.0.tgz#d3882c2830e513f4fe4cec9fe76ea1cc78747892" - integrity sha512-jAZQj0+kn4WTHO5dUZkZKhbFrqZE7K5LAQ5JysMnmvGij+wOdr+8lWqPeW0BcF4wFwrEXXtdGO7wcV6YPJcf3w== - dependencies: - "@babel/code-frame" "^7.8.3" - "@babel/generator" "^7.9.0" - "@babel/helper-function-name" "^7.8.3" - "@babel/helper-split-export-declaration" "^7.8.3" - "@babel/parser" "^7.9.0" - "@babel/types" "^7.9.0" +"@babel/template@^7.22.5", "@babel/template@^7.4.0", "@babel/template@^7.8.3", "@babel/template@^7.8.6": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.5.tgz#0c8c4d944509875849bd0344ff0050756eefc6ec" + integrity sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw== + dependencies: + "@babel/code-frame" "^7.22.5" + "@babel/parser" "^7.22.5" + "@babel/types" "^7.22.5" + +"@babel/traverse@^7.1.0", "@babel/traverse@^7.22.6", "@babel/traverse@^7.22.8", "@babel/traverse@^7.4.3", "@babel/traverse@^7.8.6", "@babel/traverse@^7.9.0": + version "7.22.8" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.22.8.tgz#4d4451d31bc34efeae01eac222b514a77aa4000e" + integrity sha512-y6LPR+wpM2I3qJrsheCTwhIinzkETbplIgPBbwvqPKc+uljeA5gP+3nP8irdYt1mjQaDnlIcG+dw8OjAco4GXw== + dependencies: + "@babel/code-frame" "^7.22.5" + "@babel/generator" "^7.22.7" + "@babel/helper-environment-visitor" "^7.22.5" + "@babel/helper-function-name" "^7.22.5" + "@babel/helper-hoist-variables" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/parser" "^7.22.7" + "@babel/types" "^7.22.5" debug "^4.1.0" globals "^11.1.0" - lodash "^4.17.13" "@babel/traverse@^7.12.5": version "7.12.9" @@ -1049,13 +1132,28 @@ globals "^11.1.0" lodash "^4.17.19" -"@babel/types@^7.0.0", "@babel/types@^7.3.0", "@babel/types@^7.4.0", "@babel/types@^7.4.4", "@babel/types@^7.8.3", "@babel/types@^7.8.6", "@babel/types@^7.9.0": +"@babel/traverse@^7.8.3": version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.9.0.tgz#00b064c3df83ad32b2dbf5ff07312b15c7f1efb5" - integrity sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng== + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.9.0.tgz#d3882c2830e513f4fe4cec9fe76ea1cc78747892" + integrity sha512-jAZQj0+kn4WTHO5dUZkZKhbFrqZE7K5LAQ5JysMnmvGij+wOdr+8lWqPeW0BcF4wFwrEXXtdGO7wcV6YPJcf3w== dependencies: - "@babel/helper-validator-identifier" "^7.9.0" + "@babel/code-frame" "^7.8.3" + "@babel/generator" "^7.9.0" + "@babel/helper-function-name" "^7.8.3" + "@babel/helper-split-export-declaration" "^7.8.3" + "@babel/parser" "^7.9.0" + "@babel/types" "^7.9.0" + debug "^4.1.0" + globals "^11.1.0" lodash "^4.17.13" + +"@babel/types@^7.0.0", "@babel/types@^7.16.7", "@babel/types@^7.20.7", "@babel/types@^7.22.5", "@babel/types@^7.4.0", "@babel/types@^7.8.3", "@babel/types@^7.8.6", "@babel/types@^7.9.0": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.22.5.tgz#cd93eeaab025880a3a47ec881f4b096a5b786fbe" + integrity sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA== + dependencies: + "@babel/helper-string-parser" "^7.22.5" + "@babel/helper-validator-identifier" "^7.22.5" to-fast-properties "^2.0.0" "@babel/types@^7.10.4", "@babel/types@^7.11.0", "@babel/types@^7.12.5", "@babel/types@^7.12.7": @@ -1067,6 +1165,15 @@ lodash "^4.17.19" to-fast-properties "^2.0.0" +"@babel/types@^7.4.4": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.9.0.tgz#00b064c3df83ad32b2dbf5ff07312b15c7f1efb5" + integrity sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng== + dependencies: + "@babel/helper-validator-identifier" "^7.9.0" + lodash "^4.17.13" + to-fast-properties "^2.0.0" + "@choojs/findup@^0.2.0": version "0.2.1" resolved "https://registry.yarnpkg.com/@choojs/findup/-/findup-0.2.1.tgz#ac13c59ae7be6e1da64de0779a0a7f03d75615a3" @@ -1286,11 +1393,25 @@ "@types/yargs" "^15.0.0" chalk "^4.0.0" +"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": + version "0.3.3" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098" + integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ== + dependencies: + "@jridgewell/set-array" "^1.0.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" + "@jridgewell/resolve-uri@3.1.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== +"@jridgewell/set-array@^1.0.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" + integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== + "@jridgewell/source-map@^0.3.3": version "0.3.4" resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.4.tgz#856a142864530d4059dda415659b48d37db2d556" @@ -1301,7 +1422,12 @@ resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== -"@jridgewell/trace-mapping@^0.3.17": +"@jridgewell/sourcemap-codec@^1.4.10": + version "1.4.15" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" + integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== + +"@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": version "0.3.18" resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz#25783b2086daf6ff1dcb53c9249ae480e4dd4cd6" integrity sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA== @@ -1464,37 +1590,37 @@ "@turf/helpers" "6.x" "@types/babel__core@^7.1.0": - version "7.1.7" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.7.tgz#1dacad8840364a57c98d0dd4855c6dd3752c6b89" - integrity sha512-RL62NqSFPCDK2FM1pSDH0scHpJvsXtZNiYlMB73DgPBaG1E38ZYVL+ei5EkWRbr+KC4YNiAUNBnRj+bgwpgjMw== + version "7.20.1" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.1.tgz#916ecea274b0c776fec721e333e55762d3a9614b" + integrity sha512-aACu/U/omhdk15O4Nfb+fHgH/z3QsfQzpnvRZhYhThms83ZnAOZz7zZAWO7mn2yyNQaA4xTO8GLK3uqFU4bYYw== dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" + "@babel/parser" "^7.20.7" + "@babel/types" "^7.20.7" "@types/babel__generator" "*" "@types/babel__template" "*" "@types/babel__traverse" "*" "@types/babel__generator@*": - version "7.6.1" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.1.tgz#4901767b397e8711aeb99df8d396d7ba7b7f0e04" - integrity sha512-bBKm+2VPJcMRVwNhxKu8W+5/zT7pwNEqeokFOmbvVSqGzFneNxYcEBro9Ac7/N9tlsaPYnZLK8J1LWKkMsLAew== + version "7.6.4" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.4.tgz#1f20ce4c5b1990b37900b63f050182d28c2439b7" + integrity sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg== dependencies: "@babel/types" "^7.0.0" "@types/babel__template@*": - version "7.0.2" - resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.0.2.tgz#4ff63d6b52eddac1de7b975a5223ed32ecea9307" - integrity sha512-/K6zCpeW7Imzgab2bLkLEbz0+1JlFSrUMdw7KoIIu+IUdu51GWaBZpd3y1VXGVXzynvGa4DaIaxNZHiON3GXUg== + version "7.4.1" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.1.tgz#3d1a48fd9d6c0edfd56f2ff578daed48f36c8969" + integrity sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g== dependencies: "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" "@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": - version "7.0.11" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.0.11.tgz#1ae3010e8bf8851d324878b42acec71986486d18" - integrity sha512-ddHK5icION5U6q11+tV2f9Mo6CZVuT8GJKld2q9LqHSZbvLbH34Kcu2yFGckZut453+eQU6btIA3RihmnRgI+Q== + version "7.20.1" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.1.tgz#dd6f1d2411ae677dcb2db008c962598be31d6acf" + integrity sha512-MitHFXnhtgwsGZWtT68URpOvLN4EREih1u3QtQiN4VdAxWKRVvGCSvw/Qth0M0Qq3pJpnGOu5JaM/ydK7OGbqg== dependencies: - "@babel/types" "^7.3.0" + "@babel/types" "^7.20.7" "@types/cheerio@*": version "0.22.23" @@ -1782,9 +1908,9 @@ integrity sha512-wE2v81i4C4Ol09RtsWFAqg3BUitWbHSpSlIo+bNdsCJijO9sjme+zm+73ZMCa/qMC8UEERxzGbvmr1cffo2SiQ== "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz#42995b446db9a48a11a07ec083499a860e9138ff" - integrity sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg== + version "2.0.4" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" + integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== "@types/istanbul-lib-report@*": version "3.0.0" @@ -1794,9 +1920,9 @@ "@types/istanbul-lib-coverage" "*" "@types/istanbul-reports@^1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-1.1.1.tgz#7a8cbf6a406f36c8add871625b278eaf0b0d255a" - integrity sha512-UpYjBi8xefVChsCoBpKShdxTllC9pwISirfoZsUa2AAdQg/Jd2KQGtSbw+ya7GPo7x/wAPlH6JBhKhAsXUEZNA== + version "1.1.2" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz#e875cc689e47bce549ec81f3df5e6f6f11cfaeb2" + integrity sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw== dependencies: "@types/istanbul-lib-coverage" "*" "@types/istanbul-lib-report" "*" @@ -1886,14 +2012,14 @@ integrity sha512-230RC8sFeHoT6sSUlRO6a8cAnclO06eeiq1QDfiv2FGCLWFvvERWgwIQD4FWqD9A69BN7Lzee4OXwoMVnnsWDw== "@types/yargs-parser@*": - version "15.0.0" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-15.0.0.tgz#cb3f9f741869e20cce330ffbeb9271590483882d" - integrity sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw== + version "21.0.0" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b" + integrity sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA== "@types/yargs@^13.0.0": - version "13.0.8" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-13.0.8.tgz#a38c22def2f1c2068f8971acb3ea734eb3c64a99" - integrity sha512-XAvHLwG7UQ+8M4caKIH0ZozIOYay5fQkAgyIXegXT9jPtdIGdhga+sUEdAr1CiG46aB+c64xQEYyEzlwWVTNzA== + version "13.0.12" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-13.0.12.tgz#d895a88c703b78af0465a9de88aa92c61430b092" + integrity sha512-qCxJE1qgz2y0hA4pIxjBR+PelCH0U5CK1XJXFwCNqfmliatKp47UCXXE9Dyk1OXBDLvsCF57TqQEJaeLfDYEOQ== dependencies: "@types/yargs-parser" "*" @@ -2060,9 +2186,9 @@ a-big-triangle@^1.0.3: weak-map "^1.0.5" abab@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.3.tgz#623e2075e02eb2d3f2475e49f99c91846467907a" - integrity sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg== + version "2.0.6" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" + integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== abs-svg-path@^0.1.1, abs-svg-path@~0.1.1: version "0.1.1" @@ -2107,7 +2233,12 @@ acorn@^5.5.3: resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.4.tgz#3e8d8a9947d0599a1796d10225d7432f4a4acf5e" integrity sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg== -acorn@^6.0.1, acorn@^6.1.1: +acorn@^6.0.1: + version "6.4.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" + integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== + +acorn@^6.1.1: version "6.4.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474" integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA== @@ -2167,7 +2298,7 @@ ajv-keywords@^3.5.2: resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== -ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.0, ajv@^6.12.4, ajv@^6.12.5, ajv@^6.5.5: +ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.0, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -2274,7 +2405,7 @@ argparse@^1.0.7: arr-diff@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" - integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= + integrity sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA== arr-flatten@^1.1.0: version "1.1.0" @@ -2284,13 +2415,21 @@ arr-flatten@^1.1.0: arr-union@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" - integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= + integrity sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q== array-bounds@^1.0.0, array-bounds@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/array-bounds/-/array-bounds-1.0.1.tgz#da11356b4e18e075a4f0c86e1f179a67b7d7ea31" integrity sha512-8wdW3ZGk6UjMPJx/glyEt0sLzzwAE1bhToPsO1W2pbpR2gULyxe3BjSiuJFheP50T/GgODVPz2fuMUmIywt8cQ== +array-buffer-byte-length@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz#fabe8bc193fea865f317fe7807085ee0dee5aead" + integrity sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A== + dependencies: + call-bind "^1.0.2" + is-array-buffer "^3.0.1" + array-differ@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-3.0.0.tgz#3cbb3d0f316810eafcc47624734237d6aee4ae6b" @@ -2299,7 +2438,7 @@ array-differ@^3.0.0: array-equal@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" - integrity sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM= + integrity sha512-H3LU5RLiSsGXPhN+Nipar0iR0IofH+8r89G2y1tBKxQ/agagKyAjhkAFDRBfodP2caPrNKHpAWNIM/c9yeL7uA== array-filter@^1.0.0: version "1.0.0" @@ -2331,7 +2470,7 @@ array-union@^2.1.0: array-unique@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" - integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= + integrity sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ== array.prototype.find@^2.1.0: version "2.1.1" @@ -2349,6 +2488,29 @@ array.prototype.flat@^1.2.3: define-properties "^1.1.3" es-abstract "^1.17.0-next.1" +array.prototype.reduce@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/array.prototype.reduce/-/array.prototype.reduce-1.0.5.tgz#6b20b0daa9d9734dd6bc7ea66b5bbce395471eac" + integrity sha512-kDdugMl7id9COE8R7MHF5jWk7Dqt/fs4Pv+JXoICnYwqpjjjbUurz6w5fT5IG6brLdJhv6/VoHB0H7oyIBXd+Q== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + es-array-method-boxes-properly "^1.0.0" + is-string "^1.0.7" + +arraybuffer.prototype.slice@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.1.tgz#9b5ea3868a6eebc30273da577eb888381c0044bb" + integrity sha512-09x0ZWFEjj4WD8PDbykUwo3t9arLn8NIzmmYEJFpYekOAQjpkGSyrQhNoRTcwwcFRu+ycWF78QZ63oWTqSjBcw== + dependencies: + array-buffer-byte-length "^1.0.0" + call-bind "^1.0.2" + define-properties "^1.2.0" + get-intrinsic "^1.2.1" + is-array-buffer "^3.0.2" + is-shared-array-buffer "^1.0.2" + arrify@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" @@ -2360,21 +2522,21 @@ asap@~2.0.3: integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= asn1@~0.2.3: - version "0.2.4" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" - integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== + version "0.2.6" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d" + integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ== dependencies: safer-buffer "~2.1.0" assert-plus@1.0.0, assert-plus@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= + integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== assign-symbols@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" - integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= + integrity sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw== ast-types@0.11.7: version "0.11.7" @@ -2404,7 +2566,7 @@ async-limiter@~1.0.0: asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== at-least-node@^1.0.0: version "1.0.0" @@ -2438,15 +2600,20 @@ autoprefixer@^8.6.3: postcss "^6.0.23" postcss-value-parser "^3.2.3" +available-typed-arrays@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" + integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== + aws-sign2@~0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" - integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= + integrity sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA== aws4@^1.8.0: - version "1.9.1" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.9.1.tgz#7e33d8f7d449b3f673cd72deb9abdc552dbe528e" - integrity sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug== + version "1.12.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.12.0.tgz#ce1c9d143389679e253b314241ea9aa5cec980d3" + integrity sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg== axios-auth-refresh@3.3.6: version "3.3.6" @@ -2545,9 +2712,9 @@ babel-preset-jest@^24.9.0: babel-plugin-jest-hoist "^24.9.0" balanced-match@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" - integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== barycentric@^1.0.1: version "1.0.1" @@ -2572,7 +2739,7 @@ base@^0.11.1: bcrypt-pbkdf@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" - integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= + integrity sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w== dependencies: tweetnacl "^0.14.3" @@ -2718,7 +2885,7 @@ browserslist@^3.2.8: caniuse-lite "^1.0.30000844" electron-to-chromium "^1.3.47" -browserslist@^4.14.5: +browserslist@^4.14.5, browserslist@^4.21.9: version "4.21.9" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.9.tgz#e11bdd3c313d7e2a9e87e8b4b0c7872b13897635" integrity sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg== @@ -2767,9 +2934,9 @@ bubleify@^1.1.0, bubleify@^1.2.0: buble "^0.19.3" buffer-from@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" - integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== + version "1.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== cache-base@^1.0.1: version "1.0.1" @@ -2786,6 +2953,14 @@ cache-base@^1.0.1: union-value "^1.0.0" unset-value "^1.0.0" +call-bind@^1.0.0, call-bind@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + callsites@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" @@ -2836,7 +3011,7 @@ cardinal@~0.4.2: caseless@~0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" - integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= + integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== cdt2d@^1.0.0: version "1.0.0" @@ -3024,12 +3199,12 @@ clone@^2.1.2: co@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" - integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= + integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== collection-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" - integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= + integrity sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw== dependencies: map-visit "^1.0.0" object-visit "^1.0.0" @@ -3194,7 +3369,7 @@ compute-dims@^1.1.0: concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== concat-stream@^1.5.2, concat-stream@~1.6.0: version "1.6.2" @@ -3216,13 +3391,18 @@ const-pinf-float64@^1.0.0: resolved "https://registry.yarnpkg.com/const-pinf-float64/-/const-pinf-float64-1.0.0.tgz#f6efb0d79f9c0986d3e79f2923abf9b70b63d726" integrity sha1-9u+w15+cCYbT558pI6v5twtj1yY= -convert-source-map@^1.1.0, convert-source-map@^1.4.0, convert-source-map@^1.7.0: +convert-source-map@^1.1.0: version "1.7.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== dependencies: safe-buffer "~5.1.1" +convert-source-map@^1.4.0, convert-source-map@^1.7.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" + integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== + convex-hull@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/convex-hull/-/convex-hull-1.0.3.tgz#20a3aa6ce87f4adea2ff7d17971c9fc1c67e1fff" @@ -3235,7 +3415,7 @@ convex-hull@^1.0.3: copy-descriptor@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" - integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= + integrity sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw== core-js-compat@^3.6.2: version "3.6.4" @@ -3507,7 +3687,7 @@ d@1, d@^1.0.1: dashdash@^1.12.0: version "1.14.1" resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" - integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= + integrity sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g== dependencies: assert-plus "^1.0.0" @@ -3534,19 +3714,19 @@ debug@^3.1.0: dependencies: ms "^2.1.1" -debug@^4.0.1, debug@^4.1.0: +debug@^4.0.1: version "4.3.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== dependencies: ms "2.1.2" -debug@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" - integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== +debug@^4.1.0, debug@^4.1.1: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== dependencies: - ms "^2.1.1" + ms "2.1.2" decamelize@^1.0.0, decamelize@^1.2.0: version "1.2.0" @@ -3570,29 +3750,35 @@ deep-equal@~1.1.1: object-keys "^1.1.1" regexp.prototype.flags "^1.2.0" -deep-is@^0.1.3, deep-is@~0.1.3: +deep-is@^0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= -define-properties@^1.1.2, define-properties@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" - integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== +deep-is@~0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + +define-properties@^1.1.3, define-properties@^1.1.4, define-properties@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.0.tgz#52988570670c9eacedd8064f4a990f2405849bd5" + integrity sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA== dependencies: - object-keys "^1.0.12" + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" define-property@^0.2.5: version "0.2.5" resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" - integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= + integrity sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA== dependencies: is-descriptor "^0.1.0" define-property@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" - integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= + integrity sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA== dependencies: is-descriptor "^1.0.0" @@ -3620,7 +3806,7 @@ delaunay-triangulate@^1.1.6: delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== detect-kerning@^2.1.2: version "2.1.2" @@ -3630,7 +3816,7 @@ detect-kerning@^2.1.2: detect-newline@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" - integrity sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I= + integrity sha512-CwffZFvlJffUg9zZA0uqrjQayUTC8ob94pnr5sFwaVv3IOmkfUHcWH+jXaQK3askE51Cqe8/9Ql/0uXNwqZ8Zg== diff-sequences@^24.9.0: version "24.9.0" @@ -3749,7 +3935,7 @@ earcut@^2.1.5: ecc-jsbn@~0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" - integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= + integrity sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw== dependencies: jsbn "~0.1.0" safer-buffer "^2.1.0" @@ -3915,7 +4101,52 @@ error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.17.0-next.1, es-abstract@^1.17.2, es-abstract@^1.17.4, es-abstract@^1.17.5: +es-abstract@^1.17.0-next.1, es-abstract@^1.17.5, es-abstract@^1.19.0, es-abstract@^1.20.4, es-abstract@^1.21.2: + version "1.22.1" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.1.tgz#8b4e5fc5cefd7f1660f0f8e1a52900dfbc9d9ccc" + integrity sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw== + dependencies: + array-buffer-byte-length "^1.0.0" + arraybuffer.prototype.slice "^1.0.1" + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + es-set-tostringtag "^2.0.1" + es-to-primitive "^1.2.1" + function.prototype.name "^1.1.5" + get-intrinsic "^1.2.1" + get-symbol-description "^1.0.0" + globalthis "^1.0.3" + gopd "^1.0.1" + has "^1.0.3" + has-property-descriptors "^1.0.0" + has-proto "^1.0.1" + has-symbols "^1.0.3" + internal-slot "^1.0.5" + is-array-buffer "^3.0.2" + is-callable "^1.2.7" + is-negative-zero "^2.0.2" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.2" + is-string "^1.0.7" + is-typed-array "^1.1.10" + is-weakref "^1.0.2" + object-inspect "^1.12.3" + object-keys "^1.1.1" + object.assign "^4.1.4" + regexp.prototype.flags "^1.5.0" + safe-array-concat "^1.0.0" + safe-regex-test "^1.0.0" + string.prototype.trim "^1.2.7" + string.prototype.trimend "^1.0.6" + string.prototype.trimstart "^1.0.6" + typed-array-buffer "^1.0.0" + typed-array-byte-length "^1.0.0" + typed-array-byte-offset "^1.0.0" + typed-array-length "^1.0.4" + unbox-primitive "^1.0.2" + which-typed-array "^1.1.10" + +es-abstract@^1.17.4: version "1.17.5" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.5.tgz#d8c9d1d66c8981fb9200e2251d799eee92774ae9" integrity sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg== @@ -3932,11 +4163,25 @@ es-abstract@^1.17.0-next.1, es-abstract@^1.17.2, es-abstract@^1.17.4, es-abstrac string.prototype.trimleft "^2.1.1" string.prototype.trimright "^2.1.1" +es-array-method-boxes-properly@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz#873f3e84418de4ee19c5be752990b2e44718d09e" + integrity sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA== + es-module-lexer@^1.2.1: version "1.3.0" resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.3.0.tgz#6be9c9e0b4543a60cd166ff6f8b4e9dae0b0c16f" integrity sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA== +es-set-tostringtag@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz#338d502f6f674301d710b80c8592de8a15f09cd8" + integrity sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg== + dependencies: + get-intrinsic "^1.1.3" + has "^1.0.3" + has-tostringtag "^1.0.0" + es-to-primitive@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" @@ -3995,9 +4240,14 @@ escalade@^3.1.1: escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + +escape-string-regexp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== -escodegen@^1.11.1, escodegen@^1.9.1: +escodegen@^1.11.1: version "1.14.1" resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.1.tgz#ba01d0c8278b5e95a9a45350142026659027a457" integrity sha512-Bmt7NcRySdIfNPfU2ZoXDrrXsG9ZjvDxcAlMfDUgRBjLOWTuIACXPBFJH7Z+cLb40JeQco5toikyc9t9P8E9SQ== @@ -4009,6 +4259,18 @@ escodegen@^1.11.1, escodegen@^1.9.1: optionalDependencies: source-map "~0.6.1" +escodegen@^1.9.1: + version "1.14.3" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503" + integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw== + dependencies: + esprima "^4.0.1" + estraverse "^4.2.0" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.6.1" + escodegen@~0.0.24: version "0.0.28" resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-0.0.28.tgz#0e4ff1715f328775d6cab51ac44a406cd7abffd3" @@ -4182,9 +4444,9 @@ events@^3.2.0: integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== exec-sh@^0.3.2: - version "0.3.4" - resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.4.tgz#3a018ceb526cc6f6df2bb504b2bfe8e3a4934ec5" - integrity sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A== + version "0.3.6" + resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.6.tgz#ff264f9e325519a60cb5e273692943483cca63bc" + integrity sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w== execa@^1.0.0: version "1.0.0" @@ -4202,12 +4464,12 @@ execa@^1.0.0: exit@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" - integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= + integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== expand-brackets@^2.1.4: version "2.1.4" resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" - integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= + integrity sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA== dependencies: debug "^2.3.3" define-property "^0.2.5" @@ -4239,14 +4501,14 @@ ext@^1.1.2: extend-shallow@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" - integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= + integrity sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug== dependencies: is-extendable "^0.1.0" extend-shallow@^3.0.0, extend-shallow@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" - integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= + integrity sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q== dependencies: assign-symbols "^1.0.0" is-extendable "^1.0.1" @@ -4275,10 +4537,15 @@ extract-frustum-planes@^1.0.0: resolved "https://registry.yarnpkg.com/extract-frustum-planes/-/extract-frustum-planes-1.0.0.tgz#97d5703ff0564c8c3c6838cac45f9e7bc52c9ef5" integrity sha1-l9VwP/BWTIw8aDjKxF+ee8UsnvU= -extsprintf@1.3.0, extsprintf@^1.2.0: +extsprintf@1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" - integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= + integrity sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g== + +extsprintf@^1.2.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07" + integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA== falafel@^2.1.0: version "2.2.4" @@ -4291,9 +4558,9 @@ falafel@^2.1.0: object-keys "^1.0.6" fast-deep-equal@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz#545145077c501491e33b15ec408c294376e94ae4" - integrity sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA== + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== fast-glob@^3.2.4: version "3.2.4" @@ -4322,7 +4589,7 @@ fast-json-stable-stringify@^2.0.0: fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== fastest-levenshtein@^1.0.12: version "1.0.16" @@ -4337,9 +4604,9 @@ fastq@^1.6.0: reusify "^1.0.4" fb-watchman@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" - integrity sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg== + version "2.0.2" + resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.2.tgz#e9524ee6b5c77e9e5001af0f85f3adbb8623255c" + integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA== dependencies: bser "2.1.1" @@ -4365,7 +4632,7 @@ file-uri-to-path@1.0.0: fill-range@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" - integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= + integrity sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ== dependencies: extend-shallow "^2.0.1" is-number "^3.0.0" @@ -4480,7 +4747,7 @@ font-measure@^1.2.2: dependencies: css-font "^1.2.0" -for-each@~0.3.3: +for-each@^0.3.3, for-each@~0.3.3: version "0.3.3" resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== @@ -4490,7 +4757,7 @@ for-each@~0.3.3: for-in@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= + integrity sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ== foreach@^2.0.5: version "2.0.5" @@ -4500,7 +4767,7 @@ foreach@^2.0.5: forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" - integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= + integrity sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw== form-data@^4.0.0: version "4.0.0" @@ -4523,7 +4790,7 @@ form-data@~2.3.2: fragment-cache@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" - integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= + integrity sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA== dependencies: map-cache "^0.2.2" @@ -4553,12 +4820,12 @@ fs-readdir-recursive@^1.1.0: fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== fsevents@^1.2.7: - version "1.2.12" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.12.tgz#db7e0d8ec3b0b45724fd4d83d43554a8f1f0de5c" - integrity sha512-Ggd/Ktt7E7I8pxZRbGIs7vwqAPscSESMrCSkx2FtWeqmheJgCo2R74fTsZFCifr0VTPwqRpPv17+6b8Zp7th0Q== + version "1.2.13" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" + integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== dependencies: bindings "^1.5.0" nan "^2.12.1" @@ -4577,6 +4844,16 @@ function.prototype.name@^1.1.1, function.prototype.name@^1.1.2: es-abstract "^1.17.0-next.1" functions-have-names "^1.2.0" +function.prototype.name@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.5.tgz#cce0505fe1ffb80503e6f9e46cc64e46a12a9621" + integrity sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.0" + functions-have-names "^1.2.2" + functional-red-black-tree@^1.0.0, functional-red-black-tree@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" @@ -4587,15 +4864,20 @@ functions-have-names@^1.2.0: resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.1.tgz#a981ac397fa0c9964551402cdc5533d7a4d52f91" integrity sha512-j48B/ZI7VKs3sgeI2cZp7WXWmZXu7Iq5pl5/vptV5N2mq+DGFuS/ulaDjtaoLpYzuD6u8UgrUKHfgo7fDTSiBA== +functions-have-names@^1.2.2, functions-have-names@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" + integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== + gamma@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/gamma/-/gamma-0.1.0.tgz#3315643403bf27906ca80ab37c36ece9440ef330" integrity sha1-MxVkNAO/J5BsqAqzfDbs6UQO8zA= -gensync@^1.0.0-beta.1: - version "1.0.0-beta.1" - resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" - integrity sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg== +gensync@^1.0.0-beta.1, gensync@^1.0.0-beta.2: + version "1.0.0-beta.2" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== geojson-vt@^3.2.1: version "3.2.1" @@ -4612,6 +4894,16 @@ get-canvas-context@^1.0.1: resolved "https://registry.yarnpkg.com/get-canvas-context/-/get-canvas-context-1.0.2.tgz#d6e7b50bc4e4c86357cd39f22647a84b73601e93" integrity sha1-1ue1C8TkyGNXzTnyJkeoS3NgHpM= +get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0, get-intrinsic@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.1.tgz#d295644fed4505fc9cde952c37ee12b477a83d82" + integrity sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-proto "^1.0.1" + has-symbols "^1.0.3" + get-package-type@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" @@ -4624,15 +4916,23 @@ get-stream@^4.0.0: dependencies: pump "^3.0.0" +get-symbol-description@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" + integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.1" + get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" - integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= + integrity sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA== getpass@^0.1.1: version "0.1.7" resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" - integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= + integrity sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng== dependencies: assert-plus "^1.0.0" @@ -5043,7 +5343,7 @@ glob-to-regexp@^0.4.1: resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== -glob@^7.0.0, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@~7.1.6: +glob@^7.0.0, glob@^7.1.4, glob@^7.1.6, glob@~7.1.6: version "7.1.6" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== @@ -5055,6 +5355,18 @@ glob@^7.0.0, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, gl once "^1.3.0" path-is-absolute "^1.0.0" +glob@^7.1.1, glob@^7.1.2, glob@^7.1.3: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + globals@^11.1.0: version "11.12.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" @@ -5067,6 +5379,13 @@ globals@^12.1.0: dependencies: type-fest "^0.8.1" +globalthis@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" + integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== + dependencies: + define-properties "^1.1.3" + glsl-inject-defines@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/glsl-inject-defines/-/glsl-inject-defines-1.0.3.tgz#dd1aacc2c17fcb2bd3fc32411c6633d0d7b60fd4" @@ -5224,16 +5543,23 @@ glslify@^7.0.0: through2 "^2.0.1" xtend "^4.0.0" -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0: - version "4.2.3" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" - integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== +gopd@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" + integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== + dependencies: + get-intrinsic "^1.1.3" -graceful-fs@^4.2.4, graceful-fs@^4.2.9: +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.2.4, graceful-fs@^4.2.9: version "4.2.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== +graceful-fs@^4.1.6, graceful-fs@^4.2.0: + version "4.2.3" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" + integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== + grid-index@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/grid-index/-/grid-index-1.1.0.tgz#97f8221edec1026c8377b86446a7c71e79522ea7" @@ -5242,25 +5568,30 @@ grid-index@^1.1.0: growly@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" - integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= + integrity sha512-+xGQY0YyAWCnqy7Cd++hc2JqMYzlm0dG30Jd0beaA64sROr8C4nt8Yc9V5Ro3avlSUDTN0ulqP/VBKi1/lLygw== har-schema@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" - integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= + integrity sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q== har-validator@~5.1.3: - version "5.1.3" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" - integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== + version "5.1.5" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" + integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== dependencies: - ajv "^6.5.5" + ajv "^6.12.3" har-schema "^2.0.0" +has-bigints@^1.0.1, has-bigints@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" + integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== + has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== has-flag@^4.0.0: version "4.0.0" @@ -5281,15 +5612,34 @@ has-passive-events@^1.0.0: dependencies: is-browser "^2.0.1" -has-symbols@^1.0.0, has-symbols@^1.0.1: +has-property-descriptors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" + integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== + dependencies: + get-intrinsic "^1.1.1" + +has-proto@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" - integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== + resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" + integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== + +has-symbols@^1.0.1, has-symbols@^1.0.2, has-symbols@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== + +has-tostringtag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" + integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== + dependencies: + has-symbols "^1.0.2" has-value@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" - integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= + integrity sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q== dependencies: get-value "^2.0.3" has-values "^0.1.4" @@ -5298,7 +5648,7 @@ has-value@^0.3.1: has-value@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" - integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= + integrity sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw== dependencies: get-value "^2.0.6" has-values "^1.0.0" @@ -5307,12 +5657,12 @@ has-value@^1.0.0: has-values@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" - integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= + integrity sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ== has-values@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" - integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= + integrity sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ== dependencies: is-number "^3.0.0" kind-of "^4.0.0" @@ -5375,7 +5725,7 @@ htmlparser2@^3.9.1: http-signature@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" - integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= + integrity sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ== dependencies: assert-plus "^1.0.0" jsprim "^1.2.2" @@ -5453,7 +5803,7 @@ import-local@^3.0.2: imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== incremental-convex-hull@^1.0.1: version "1.0.1" @@ -5471,7 +5821,7 @@ indexes-of@^1.0.1: inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== dependencies: once "^1.3.0" wrappy "1" @@ -5481,6 +5831,15 @@ inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3, resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== +internal-slot@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.5.tgz#f2a2ee21f668f8627a4667f309dc0f4fb6674986" + integrity sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ== + dependencies: + get-intrinsic "^1.2.0" + has "^1.0.3" + side-channel "^1.0.4" + interpret@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/interpret/-/interpret-3.1.1.tgz#5be0ceed67ca79c6c4bc5cf0d7ee843dcea110c4" @@ -5521,7 +5880,7 @@ is-absolute@^1.0.0: is-accessor-descriptor@^0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" - integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= + integrity sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A== dependencies: kind-of "^3.0.2" @@ -5537,16 +5896,32 @@ is-arguments@^1.0.4: resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3" integrity sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA== +is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.2.tgz#f2653ced8412081638ecb0ebbd0c41c6e0aecbbe" + integrity sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.0" + is-typed-array "^1.1.10" + is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= + integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== is-base64@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/is-base64/-/is-base64-0.1.0.tgz#a6f20610c6ef4863a51cba32bc0222544b932622" integrity sha512-WRRyllsGXJM7ZN7gPTCCQ/6wNPTRDwiWdPK66l5sJzcU/oOzcIcRRf0Rux8bkpox/1yjt0F6VJRsQOIG2qz5sg== +is-bigint@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" + integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== + dependencies: + has-bigints "^1.0.1" + is-binary-path@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" @@ -5564,6 +5939,14 @@ is-boolean-object@^1.0.1: resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.0.1.tgz#10edc0900dd127697a92f6f9807c7617d68ac48e" integrity sha512-TqZuVwa/sppcrhUCAYkGBk7w0yxfQQnxq28fjkO53tnK9FQXmdwz2JS5+GjsWQ6RByES1K40nI+yDic5c9/aAQ== +is-boolean-object@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" + integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + is-browser@^2.0.1, is-browser@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-browser/-/is-browser-2.1.0.tgz#fc084d59a5fced307d6708c59356bad7007371a9" @@ -5579,11 +5962,16 @@ is-buffer@^2.0.3: resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.4.tgz#3e572f23c8411a5cfd9557c849e3665e0b290623" integrity sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A== -is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.1.5: +is-callable@^1.1.3: version "1.1.5" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.5.tgz#f7e46b596890456db74e7f6e976cb3273d06faab" integrity sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q== +is-callable@^1.1.4, is-callable@^1.1.5, is-callable@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" + integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== + is-ci@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" @@ -5601,7 +5989,7 @@ is-core-module@^2.11.0: is-data-descriptor@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" - integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= + integrity sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg== dependencies: kind-of "^3.0.2" @@ -5613,9 +6001,11 @@ is-data-descriptor@^1.0.0: kind-of "^6.0.0" is-date-object@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" - integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" + integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== + dependencies: + has-tostringtag "^1.0.0" is-descriptor@^0.1.0: version "0.1.6" @@ -5638,7 +6028,7 @@ is-descriptor@^1.0.0, is-descriptor@^1.0.2: is-extendable@^0.1.0, is-extendable@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" - integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= + integrity sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw== is-extendable@^1.0.1: version "1.0.1" @@ -5670,7 +6060,7 @@ is-float-array@^1.0.0: is-fullwidth-code-point@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + integrity sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w== is-fullwidth-code-point@^3.0.0: version "3.0.0" @@ -5711,6 +6101,11 @@ is-negated-glob@^1.0.0: resolved "https://registry.yarnpkg.com/is-negated-glob/-/is-negated-glob-1.0.0.tgz#6910bca5da8c95e784b5751b976cf5a10fee36d2" integrity sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI= +is-negative-zero@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" + integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== + is-number-object@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.4.tgz#36ac95e741cf18b283fc1ddf5e83da798e3ec197" @@ -5719,7 +6114,7 @@ is-number-object@^1.0.4: is-number@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" - integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= + integrity sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg== dependencies: kind-of "^3.0.2" @@ -5745,13 +6140,21 @@ is-plain-object@^2.0.3, is-plain-object@^2.0.4: dependencies: isobject "^3.0.1" -is-regex@^1.0.4, is-regex@^1.0.5, is-regex@~1.0.5: +is-regex@^1.0.4, is-regex@~1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.5.tgz#39d589a358bf18967f726967120b8fc1aed74eae" integrity sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ== dependencies: has "^1.0.3" +is-regex@^1.0.5, is-regex@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" + integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + is-relative@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-1.0.0.tgz#a1bb6935ce8c5dba1e8b9754b9b2dcc020e2260d" @@ -5759,10 +6162,17 @@ is-relative@^1.0.0: dependencies: is-unc-path "^1.0.0" +is-shared-array-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" + integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== + dependencies: + call-bind "^1.0.2" + is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" - integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= + integrity sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ== is-string-blank@^1.0.1: version "1.0.1" @@ -5774,6 +6184,13 @@ is-string@^1.0.5: resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== +is-string@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" + integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== + dependencies: + has-tostringtag "^1.0.0" + is-subset@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/is-subset/-/is-subset-0.1.1.tgz#8a59117d932de1de00f245fcdd39ce43f1e939a6" @@ -5784,17 +6201,24 @@ is-svg-path@^1.0.1: resolved "https://registry.yarnpkg.com/is-svg-path/-/is-svg-path-1.0.2.tgz#77ab590c12b3d20348e5c7a13d0040c87784dda0" integrity sha1-d6tZDBKz0gNI5cehPQBAyHeE3aA= -is-symbol@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" - integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== +is-symbol@^1.0.2, is-symbol@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" + integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== dependencies: - has-symbols "^1.0.1" + has-symbols "^1.0.2" + +is-typed-array@^1.1.10, is-typed-array@^1.1.9: + version "1.1.12" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.12.tgz#d0bab5686ef4a76f7a73097b95470ab199c57d4a" + integrity sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg== + dependencies: + which-typed-array "^1.1.11" is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= + integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== is-unc-path@^1.0.0: version "1.0.0" @@ -5803,6 +6227,13 @@ is-unc-path@^1.0.0: dependencies: unc-path-regex "^0.1.2" +is-weakref@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" + integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== + dependencies: + call-bind "^1.0.2" + is-windows@^1.0.1, is-windows@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" @@ -5811,7 +6242,7 @@ is-windows@^1.0.1, is-windows@^1.0.2: is-wsl@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" - integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= + integrity sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw== isarray@0.0.1: version "0.0.1" @@ -5823,7 +6254,7 @@ isarray@1.0.0, isarray@~1.0.0: resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= -isarray@^2.0.1: +isarray@^2.0.1, isarray@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== @@ -5831,24 +6262,24 @@ isarray@^2.0.1: isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== isobject@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= + integrity sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA== dependencies: isarray "1.0.0" isobject@^3.0.0, isobject@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= + integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== isstream@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= + integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g== istanbul-lib-coverage@^2.0.2, istanbul-lib-coverage@^2.0.5: version "2.0.5" @@ -6113,9 +6544,9 @@ jest-mock@^24.9.0: "@jest/types" "^24.9.0" jest-pnp-resolver@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz#ecdae604c077a7fbc70defb6d517c3c1c898923a" - integrity sha512-pgFw2tm54fzgYvc/OHrnysABEObZCUNFnhjoRjaVOCN8NYc032/gVjPaHD4Aq6ApkSieWtfKAFQtmDKAmhupnQ== + version "1.2.3" + resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz#930b1546164d4ad5937d5540e711d4d38d4cad2e" + integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w== jest-regex-util@^24.3.0, jest-regex-util@^24.9.0: version "24.9.0" @@ -6304,7 +6735,7 @@ js-yaml@^3.13.1: jsbn@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= + integrity sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg== jscodeshift@^0.6.3: version "0.6.4" @@ -6411,10 +6842,10 @@ json-schema-traverse@^0.4.1: resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== -json-schema@0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" - integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= +json-schema@0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" + integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== json-stable-stringify-without-jsonify@^1.0.1: version "1.0.1" @@ -6424,7 +6855,7 @@ json-stable-stringify-without-jsonify@^1.0.1: json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= + integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== json5-writer@^0.1.8: version "0.1.8" @@ -6445,13 +6876,18 @@ json5@^1.0.1: dependencies: minimist "^1.2.0" -json5@^2.1.1, json5@^2.1.2: +json5@^2.1.1: version "2.1.3" resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43" integrity sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA== dependencies: minimist "^1.2.5" +json5@^2.1.2, json5@^2.2.2: + version "2.2.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== + jsonfile@^6.0.1: version "6.1.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" @@ -6462,13 +6898,13 @@ jsonfile@^6.0.1: graceful-fs "^4.1.6" jsprim@^1.2.2: - version "1.4.1" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" - integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= + version "1.4.2" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.2.tgz#712c65533a15c878ba59e9ed5f0e26d5b77c5feb" + integrity sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw== dependencies: assert-plus "1.0.0" extsprintf "1.3.0" - json-schema "0.2.3" + json-schema "0.4.0" verror "1.10.0" kdbush@^3.0.0: @@ -6479,14 +6915,14 @@ kdbush@^3.0.0: kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: version "3.2.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" - integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= + integrity sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ== dependencies: is-buffer "^1.1.5" kind-of@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" - integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= + integrity sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw== dependencies: is-buffer "^1.1.5" @@ -6588,7 +7024,7 @@ levn@^0.4.1: levn@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" - integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= + integrity sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA== dependencies: prelude-ls "~1.1.2" type-check "~0.3.2" @@ -6596,7 +7032,7 @@ levn@~0.3.0: load-json-file@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" - integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= + integrity sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw== dependencies: graceful-fs "^4.1.2" parse-json "^4.0.0" @@ -6667,7 +7103,7 @@ lodash.isequal@^4.5.0: lodash.sortby@^4.7.0: version "4.7.0" resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" - integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= + integrity sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA== lodash@^4.15.0, lodash@^4.17.10, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19: version "4.17.21" @@ -6695,6 +7131,13 @@ loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: dependencies: js-tokens "^3.0.0 || ^4.0.0" +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + lru-cache@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" @@ -6717,17 +7160,17 @@ make-dir@^2.0.0, make-dir@^2.1.0: pify "^4.0.1" semver "^5.6.0" -makeerror@1.0.x: - version "1.0.11" - resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" - integrity sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw= +makeerror@1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" + integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== dependencies: - tmpl "1.0.x" + tmpl "1.0.5" map-cache@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" - integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= + integrity sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg== map-limit@0.0.1: version "0.0.1" @@ -6739,7 +7182,7 @@ map-limit@0.0.1: map-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" - integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= + integrity sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w== dependencies: object-visit "^1.0.0" @@ -6862,24 +7305,12 @@ micromatch@^4.0.2: braces "^3.0.1" picomatch "^2.0.5" -mime-db@1.43.0: - version "1.43.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.43.0.tgz#0a12e0502650e473d735535050e7c8f4eb4fae58" - integrity sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ== - mime-db@1.52.0: version "1.52.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== -mime-types@^2.1.12, mime-types@~2.1.19: - version "2.1.26" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.26.tgz#9c921fc09b7e149a65dfdc0da4d20997200b0a06" - integrity sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ== - dependencies: - mime-db "1.43.0" - -mime-types@^2.1.27: +mime-types@^2.1.12, mime-types@^2.1.27, mime-types@~2.1.19: version "2.1.35" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== @@ -6896,7 +7327,7 @@ mimic-fn@^1.0.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== -minimatch@^3.0.2, minimatch@^3.0.4: +minimatch@^3.0.2, minimatch@^3.0.4, minimatch@^3.1.1: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== @@ -6913,7 +7344,12 @@ minimist@0.0.8: resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= -minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5, minimist@~1.2.0: +minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6: + version "1.2.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + +minimist@~1.2.0: version "1.2.5" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== @@ -6933,7 +7369,14 @@ mkdirp@^0.5.0: dependencies: minimist "^1.2.5" -mkdirp@^0.5.1, mkdirp@^0.5.3: +mkdirp@^0.5.1: + version "0.5.6" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" + integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== + dependencies: + minimist "^1.2.6" + +mkdirp@^0.5.3: version "0.5.5" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== @@ -6986,13 +7429,18 @@ mouse-wheel@^1.2.0: ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== -ms@2.1.2, ms@^2.1.1: +ms@2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== +ms@^2.1.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + multimatch@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-4.0.0.tgz#8c3c0f6e3e8449ada0af3dd29efb491a375191b3" @@ -7017,9 +7465,9 @@ murmurhash-js@^1.0.0: integrity sha1-sGJ44h/Gw3+lMTcysEEry2rhX1E= nan@^2.12.1: - version "2.14.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c" - integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg== + version "2.17.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.17.0.tgz#c0150a2368a182f033e9aa5195ec76ea41a199cb" + integrity sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ== nanomatch@^1.2.9: version "1.2.13" @@ -7041,7 +7489,7 @@ nanomatch@^1.2.9: natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== ndarray-extract-contour@^1.0.0: version "1.0.1" @@ -7173,17 +7621,17 @@ node-dir@^0.1.17: node-int64@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" - integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= + integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== node-modules-regexp@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" - integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= + integrity sha512-JMaRS9L4wSRIR+6PTVEikTrq/lMGEZR43a48ETeilY0Q0iMwVnccMFrUM1k+tNzmYuIU0Vh710bCUqHX+/+ctQ== node-notifier@^5.4.2: - version "5.4.3" - resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.4.3.tgz#cb72daf94c93904098e28b9c590fd866e464bd50" - integrity sha512-M4UBGcs4jeOK9CjTsYwkvH6/MzuUmGCyTW+kCY7uO+1ZVr0+FHGdPdIf5CCLqAaxnRrWidyoQlNkMIIVwbKB8Q== + version "5.4.5" + resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.4.5.tgz#0cbc1a2b0f658493b4025775a13ad938e96091ef" + integrity sha512-tVbHs7DyTLtzOiN78izLA85zRqB9NvEXkAf014Vx3jtSvn/xBl6bR8ZYifj+dFcFrKI21huSQgJZ6ZtL3B4HfQ== dependencies: growly "^1.3.0" is-wsl "^1.1.0" @@ -7214,7 +7662,7 @@ normalize-package-data@^2.3.2: normalize-path@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" - integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= + integrity sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w== dependencies: remove-trailing-separator "^1.0.1" @@ -7263,7 +7711,7 @@ npm-run-all@^4.1.5: npm-run-path@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" - integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= + integrity sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw== dependencies: path-key "^2.0.0" @@ -7297,9 +7745,9 @@ numeric@^1.2.6: integrity sha1-dlsCvvl5iPz4gNTrPza4D6MTNao= nwsapi@^2.0.7: - version "2.2.0" - resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" - integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== + version "2.2.7" + resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.7.tgz#738e0707d3128cb750dddcfe90e4610482df0f30" + integrity sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ== oauth-sign@~0.9.0: version "0.9.0" @@ -7314,22 +7762,27 @@ object-assign@^4.1.0, object-assign@^4.1.1: object-copy@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" - integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= + integrity sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ== dependencies: copy-descriptor "^0.1.0" define-property "^0.2.5" kind-of "^3.0.3" -object-inspect@^1.7.0, object-inspect@~1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67" - integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw== +object-inspect@^1.12.3, object-inspect@^1.7.0, object-inspect@^1.9.0: + version "1.12.3" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9" + integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== object-inspect@~0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-0.4.0.tgz#f5157c116c1455b243b06ee97703392c5ad89fec" integrity sha1-9RV8EWwUVbJDsG7pdwM5LFrYn+w= +object-inspect@~1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67" + integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw== + object-is@^1.0.1, object-is@^1.0.2: version "1.1.2" resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.2.tgz#c5d2e87ff9e119f78b7a088441519e2eec1573b6" @@ -7338,7 +7791,7 @@ object-is@^1.0.1, object-is@^1.0.2: define-properties "^1.1.3" es-abstract "^1.17.5" -object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.0.6, object-keys@^1.0.9, object-keys@^1.1.1: +object-keys@^1.0.6, object-keys@^1.0.9, object-keys@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== @@ -7351,19 +7804,19 @@ object-keys@~0.4.0: object-visit@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" - integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= + integrity sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA== dependencies: isobject "^3.0.0" -object.assign@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" - integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== +object.assign@^4.1.0, object.assign@^4.1.4: + version "4.1.4" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f" + integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== dependencies: - define-properties "^1.1.2" - function-bind "^1.1.1" - has-symbols "^1.0.0" - object-keys "^1.0.11" + call-bind "^1.0.2" + define-properties "^1.1.4" + has-symbols "^1.0.3" + object-keys "^1.1.1" object.entries@^1.1.0, object.entries@^1.1.1: version "1.1.1" @@ -7385,18 +7838,21 @@ object.fromentries@^2.0.2: function-bind "^1.1.1" has "^1.0.3" -object.getownpropertydescriptors@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649" - integrity sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg== +object.getownpropertydescriptors@^2.1.6: + version "2.1.6" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.6.tgz#5e5c384dd209fa4efffead39e3a0512770ccc312" + integrity sha512-lq+61g26E/BgHv0ZTFgRvi7NMEPuAxLkFU7rukXjc/AlwH4Am5xXVnIXy3un1bg/JPbXHrixRkK1itUzzPiIjQ== dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" + array.prototype.reduce "^1.0.5" + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.21.2" + safe-array-concat "^1.0.0" object.pick@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" - integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= + integrity sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ== dependencies: isobject "^3.0.1" @@ -7413,7 +7869,7 @@ object.values@^1.1.1: once@^1.3.0, once@^1.3.1, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== dependencies: wrappy "1" @@ -7471,14 +7927,14 @@ os-homedir@^2.0.0: p-each-series@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-1.0.0.tgz#930f3d12dd1f50e7434457a22cd6f04ac6ad7f71" - integrity sha1-kw89Et0fUOdDRFeiLNbwSsatf3E= + integrity sha512-J/e9xiZZQNrt+958FFzJ+auItsBGq+UrQ7nE89AUP7UOTtjHnkISANXLdayhVzh538UnLMCSlf13lFfRIAKQOA== dependencies: p-reduce "^1.0.0" p-finally@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= + integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== p-limit@^1.1.0: version "1.3.0" @@ -7518,7 +7974,7 @@ p-locate@^4.1.0: p-reduce@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-1.0.0.tgz#18c2b0dd936a4690a529f8231f58a0fdb6a47dfa" - integrity sha1-GMKw3ZNqRpClKfgjH1ig/bakffo= + integrity sha512-3Tx1T3oM1xO/Y8Gj0sWyE78EIJZ+t+aEmXUdvQgvGmSMri7aPTHoovbXEreWKkL5j21Er60XAWLTzKbAKYOujQ== p-try@^1.0.0: version "1.0.0" @@ -7552,7 +8008,7 @@ parenthesis@^3.1.5: parse-json@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" - integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= + integrity sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw== dependencies: error-ex "^1.3.1" json-parse-better-errors "^1.0.1" @@ -7589,7 +8045,7 @@ parse5@^3.0.1: pascalcase@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" - integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= + integrity sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw== path-dirname@^1.0.0: version "1.0.2" @@ -7599,7 +8055,7 @@ path-dirname@^1.0.0: path-exists@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= + integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== path-exists@^4.0.0: version "4.0.0" @@ -7609,12 +8065,12 @@ path-exists@^4.0.0: path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== path-key@^2.0.0, path-key@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" - integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= + integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw== path-key@^3.1.0: version "3.1.1" @@ -7644,7 +8100,7 @@ pbf@^3.0.5: performance-now@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" - integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= + integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow== permutation-parity@^1.0.0: version "1.0.0" @@ -7684,20 +8140,25 @@ pidtree@^0.3.0: pify@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" - integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= + integrity sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg== pify@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== -pirates@^4.0.0, pirates@^4.0.1: +pirates@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87" integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA== dependencies: node-modules-regexp "^1.0.0" +pirates@^4.0.1: + version "4.0.6" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9" + integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== + pkg-dir@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" @@ -7864,7 +8325,7 @@ polytope-closest-point@^1.0.0: posix-character-classes@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" - integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= + integrity sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg== postcss-modules-extract-imports@^2.0.0: version "2.0.0" @@ -7949,7 +8410,7 @@ prelude-ls@^1.2.1: prelude-ls@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" - integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= + integrity sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w== prettier@^1.19.1: version "1.19.1" @@ -7999,12 +8460,12 @@ promise@^7.1.1: asap "~2.0.3" prompts@^2.0.1: - version "2.3.2" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.3.2.tgz#480572d89ecf39566d2bd3fe2c9fccb7c4c0b068" - integrity sha512-Q06uKs2CkNYVID0VqwfAl9mipo99zkBv/n2JtWY89Yxa3ZabWSrs0e2KTudKVa3peLUvYXMefDqIleLPVUBZMA== + version "2.4.2" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" + integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== dependencies: kleur "^3.0.3" - sisteransi "^1.0.4" + sisteransi "^1.0.5" prop-types-exact@^1.2.0: version "1.2.0" @@ -8044,9 +8505,9 @@ prr@~1.0.1: integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= psl@^1.1.28: - version "1.8.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" - integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== + version "1.9.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" + integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== pump@^3.0.0: version "3.0.0" @@ -8057,9 +8518,9 @@ pump@^3.0.0: once "^1.3.1" punycode@^2.1.0, punycode@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" - integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + version "2.3.0" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" + integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== pxls@^2.0.0: version "2.3.2" @@ -8203,7 +8664,7 @@ read-pkg-up@^4.0.0: read-pkg@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" - integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= + integrity sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA== dependencies: load-json-file "^4.0.0" normalize-package-data "^2.3.2" @@ -8361,6 +8822,15 @@ regexp.prototype.flags@^1.2.0: define-properties "^1.1.3" es-abstract "^1.17.0-next.1" +regexp.prototype.flags@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz#fe7ce25e7e4cca8db37b6634c8a2c7009199b9cb" + integrity sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + functions-have-names "^1.2.3" + regexpp@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" @@ -8470,31 +8940,31 @@ regl@^1.3.11: remove-trailing-separator@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" - integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= + integrity sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw== repeat-element@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" - integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== + version "1.1.4" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9" + integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ== repeat-string@^1.3.0, repeat-string@^1.5.2, repeat-string@^1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= -request-promise-core@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.3.tgz#e9a3c081b51380dfea677336061fea879a829ee9" - integrity sha512-QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ== +request-promise-core@1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.4.tgz#3eedd4223208d419867b78ce815167d10593a22f" + integrity sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw== dependencies: - lodash "^4.17.15" + lodash "^4.17.19" request-promise-native@^1.0.5: - version "1.0.8" - resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.8.tgz#a455b960b826e44e2bf8999af64dff2bfe58cb36" - integrity sha512-dapwLGqkHtwL5AEbfenuzjTYg35Jd6KPytsC2/TLkVMz8rm+tNt72MGUWT1RP/aYawMpN6HqbNGBQaRcBtjQMQ== + version "1.0.9" + resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.9.tgz#e407120526a5efdc9a39b28a5679bf47b9d9dc28" + integrity sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g== dependencies: - request-promise-core "1.1.3" + request-promise-core "1.1.4" stealthy-require "^1.1.1" tough-cookie "^2.3.3" @@ -8527,7 +8997,7 @@ request@^2.83.0, request@^2.87.0: require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== require-main-filename@^2.0.0: version "2.0.0" @@ -8542,7 +9012,7 @@ reselect@^4.0.0: resolve-cwd@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" - integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo= + integrity sha512-ccu8zQTrzVr954472aUVPLEcB3YpKSYR3cg/3lo1okzobPBM+1INXBbBZlDbnI/hbEocnf8j0QVo43hQKrbchg== dependencies: resolve-from "^3.0.0" @@ -8556,7 +9026,7 @@ resolve-cwd@^3.0.0: resolve-from@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" - integrity sha1-six699nWiBvItuZTM17rywoYh0g= + integrity sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw== resolve-from@^4.0.0: version "4.0.0" @@ -8578,26 +9048,26 @@ resolve-protobuf-schema@^2.1.0: resolve-url@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" - integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= + integrity sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg== resolve@1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" - integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= + integrity sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg== resolve@^0.6.1: version "0.6.3" resolved "https://registry.yarnpkg.com/resolve/-/resolve-0.6.3.tgz#dd957982e7e736debdf53b58a4dd91754575dd46" integrity sha1-3ZV5gufnNt699TtYpN2RdUV13UY= -resolve@^1.0.0, resolve@^1.1.5, resolve@^1.10.0, resolve@^1.13.1, resolve@^1.3.2, resolve@~1.15.1: +resolve@^1.0.0, resolve@^1.1.5, resolve@^1.13.1, resolve@~1.15.1: version "1.15.1" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.15.1.tgz#27bdcdeffeaf2d6244b95bb0f9f4b4653451f3e8" integrity sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w== dependencies: path-parse "^1.0.6" -resolve@^1.20.0: +resolve@^1.10.0, resolve@^1.20.0, resolve@^1.3.2: version "1.22.2" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.2.tgz#0ed0943d4e301867955766c9f3e1ae6d01c6845f" integrity sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g== @@ -8770,15 +9240,39 @@ rw@^1.3.3: resolved "https://registry.yarnpkg.com/rw/-/rw-1.3.3.tgz#3f862dfa91ab766b14885ef4d01124bfda074fb4" integrity sha1-P4Yt+pGrdmsUiF700BEkv9oHT7Q= -safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: +safe-array-concat@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.0.0.tgz#2064223cba3c08d2ee05148eedbc563cd6d84060" + integrity sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.0" + has-symbols "^1.0.3" + isarray "^2.0.5" + +safe-buffer@^5.0.1, safe-buffer@^5.1.2: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== +safe-regex-test@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.0.tgz#793b874d524eb3640d1873aad03596db2d4f2295" + integrity sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.3" + is-regex "^1.1.4" + safe-regex@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" - integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= + integrity sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg== dependencies: ret "~0.1.10" @@ -8847,7 +9341,7 @@ semver@7.0.0: resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== -semver@^6.0.0, semver@^6.2.0, semver@^6.3.0: +semver@^6.0.0, semver@^6.2.0, semver@^6.3.0, semver@^6.3.1: version "6.3.1" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== @@ -8869,7 +9363,7 @@ serialize-javascript@^6.0.1: set-blocking@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= + integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== set-value@^2.0.0, set-value@^2.0.1: version "2.0.1" @@ -8905,7 +9399,7 @@ sharkdown@^0.1.0: shebang-command@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" - integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= + integrity sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg== dependencies: shebang-regex "^1.0.0" @@ -8919,7 +9413,7 @@ shebang-command@^2.0.0: shebang-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" - integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= + integrity sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ== shebang-regex@^3.0.0: version "3.0.0" @@ -8936,10 +9430,19 @@ shellwords@^0.1.1: resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww== +side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + dependencies: + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" + signal-exit@^3.0.0, signal-exit@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" - integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== + version "3.0.7" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== signum@^0.0.0: version "0.0.0" @@ -8993,7 +9496,7 @@ simplify-planar-graph@^2.0.1: robust-orientation "^1.0.1" simplicial-complex "^0.3.3" -sisteransi@^1.0.4: +sisteransi@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== @@ -9067,7 +9570,7 @@ source-map-resolve@^0.5.0: source-map-url "^0.4.0" urix "^0.1.0" -source-map-support@^0.5.16, source-map-support@^0.5.6: +source-map-support@^0.5.16: version "0.5.19" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== @@ -9075,7 +9578,7 @@ source-map-support@^0.5.16, source-map-support@^0.5.6: buffer-from "^1.0.0" source-map "^0.6.0" -source-map-support@~0.5.20: +source-map-support@^0.5.6, source-map-support@~0.5.20: version "0.5.21" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== @@ -9084,9 +9587,9 @@ source-map-support@~0.5.20: source-map "^0.6.0" source-map-url@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" - integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= + version "0.4.1" + resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" + integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== "source-map@>= 0.1.2", source-map@~0.1.33: version "0.1.43" @@ -9111,30 +9614,30 @@ sourcemap-codec@^1.4.4: integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== spdx-correct@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" - integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q== + version "3.2.0" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.2.0.tgz#4f5ab0668f0059e34f9c00dce331784a12de4e9c" + integrity sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA== dependencies: spdx-expression-parse "^3.0.0" spdx-license-ids "^3.0.0" spdx-exceptions@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977" - integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA== + version "2.3.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" + integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== spdx-expression-parse@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" - integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg== + version "3.0.1" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" + integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== dependencies: spdx-exceptions "^2.1.0" spdx-license-ids "^3.0.0" spdx-license-ids@^3.0.0: - version "3.0.5" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654" - integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q== + version "3.0.13" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz#7189a474c46f8d47c7b0da4b987bb45e908bd2d5" + integrity sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w== split-polygon@^1.0.0: version "1.0.0" @@ -9169,9 +9672,9 @@ sprintf-js@~1.0.2: integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= sshpk@^1.7.0: - version "1.16.1" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" - integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== + version "1.17.0" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.17.0.tgz#578082d92d4fe612b13007496e543fa0fbcbe4c5" + integrity sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ== dependencies: asn1 "~0.2.3" assert-plus "^1.0.0" @@ -9189,9 +9692,11 @@ stack-trace@0.0.9: integrity sha1-qPbq7KkGdMMz58Q5U/J1tFFRBpU= stack-utils@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.2.tgz#33eba3897788558bebfc2db059dc158ec36cebb8" - integrity sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA== + version "1.0.5" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.5.tgz#a19b0b01947e0029c8e451d5d61a498f5bb1471b" + integrity sha512-KZiTzuV3CnSnSvgMRrARVCj+Ht7rMbauGDK0LdVFRGyenwdylpajAp4Q0i6SX8rEmbTpMMf6ryq2gb8pPq2WgQ== + dependencies: + escape-string-regexp "^2.0.0" static-eval@^2.0.0: version "2.0.5" @@ -9210,7 +9715,7 @@ static-eval@~0.2.0: static-extend@^0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" - integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= + integrity sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g== dependencies: define-property "^0.2.5" object-copy "^0.1.0" @@ -9235,7 +9740,7 @@ static-module@^1.0.0: stealthy-require@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" - integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= + integrity sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g== stream-shift@^1.0.0: version "1.0.1" @@ -9245,7 +9750,7 @@ stream-shift@^1.0.0: string-length@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/string-length/-/string-length-2.0.0.tgz#d40dbb686a3ace960c1cffca562bf2c45f8363ed" - integrity sha1-1A27aGo6zpYMHP/KVivyxF+DY+0= + integrity sha512-Qka42GGrS8Mm3SZ+7cH8UXiIWI867/b/Z/feQSpQx/rbfB8UGknGEZVaUQMOUVj+soY6NpWAxily63HI1OckVQ== dependencies: astral-regex "^1.0.0" strip-ansi "^4.0.0" @@ -9300,39 +9805,50 @@ string.prototype.trim@^1.2.1, string.prototype.trim@~1.2.1: es-abstract "^1.17.0-next.1" function-bind "^1.1.1" -string.prototype.trimend@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz#85812a6b847ac002270f5808146064c995fb6913" - integrity sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g== +string.prototype.trim@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz#a68352740859f6893f14ce3ef1bb3037f7a90533" + integrity sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg== dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.5" + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + +string.prototype.trimend@^1.0.3, string.prototype.trimend@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz#c4a27fa026d979d79c04f17397f250a462944533" + integrity sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" string.prototype.trimleft@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz#4408aa2e5d6ddd0c9a80739b087fbc067c03b3cc" - integrity sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw== + version "2.1.3" + resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.3.tgz#dee305118117d0a1843c1fc0d38d5d0754d83c60" + integrity sha512-699Ibssmj/awVzvdNk4g83/Iu8U9vDohzmA/ly2BrQWGhamuY4Tlvs5XKmKliDt3ky6SKbE1bzPhASKCFlx9Sg== dependencies: + call-bind "^1.0.0" define-properties "^1.1.3" - es-abstract "^1.17.5" - string.prototype.trimstart "^1.0.0" + string.prototype.trimstart "^1.0.3" string.prototype.trimright@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz#c76f1cef30f21bbad8afeb8db1511496cfb0f2a3" - integrity sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg== + version "2.1.3" + resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.3.tgz#dc16a21d7456cbc8b2c54d47fe01f06d9efe94eb" + integrity sha512-hoOq56oRFnnfDuXNy2lGHiwT77MehHv9d0zGfRZ8QdC+4zjrkFB9vd5i/zYTd/ymFBd4YxtbdgHt3U6ksGeuBw== dependencies: + call-bind "^1.0.0" define-properties "^1.1.3" - es-abstract "^1.17.5" - string.prototype.trimend "^1.0.0" + string.prototype.trimend "^1.0.3" -string.prototype.trimstart@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz#14af6d9f34b053f7cfc89b72f8f2ee14b9039a54" - integrity sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw== +string.prototype.trimstart@^1.0.3, string.prototype.trimstart@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz#e90ab66aa8e4007d92ef591bbf3cd422c56bdcf4" + integrity sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA== dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.5" + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" string_decoder@^1.1.1, string_decoder@~1.1.1: version "1.1.1" @@ -9349,7 +9865,7 @@ string_decoder@~0.10.x: strip-ansi@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= + integrity sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow== dependencies: ansi-regex "^3.0.0" @@ -9370,12 +9886,12 @@ strip-ansi@^6.0.0: strip-bom@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= + integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== strip-eof@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" - integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= + integrity sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q== strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: version "3.1.1" @@ -9619,7 +10135,7 @@ tinyqueue@^2.0.0: resolved "https://registry.yarnpkg.com/tinyqueue/-/tinyqueue-2.0.3.tgz#64d8492ebf39e7801d7bd34062e29b45b2035f08" integrity sha512-ppJZNDuKGgxzkHihX8v9v9G5f+18gzaTfrukGrq6ueg0lmH4nqVnA2IPG0AEH3jKEk2GRJCUhDoqpoiw3PHLBA== -tmpl@1.0.x: +tmpl@1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== @@ -9636,7 +10152,7 @@ to-array-buffer@^3.0.0: to-fast-properties@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= + integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== to-float32@^1.0.1: version "1.0.1" @@ -9646,7 +10162,7 @@ to-float32@^1.0.1: to-object-path@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" - integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= + integrity sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg== dependencies: kind-of "^3.0.2" @@ -9660,7 +10176,7 @@ to-px@^1.0.1: to-regex-range@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" - integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= + integrity sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg== dependencies: is-number "^3.0.0" repeat-string "^1.6.1" @@ -9711,7 +10227,7 @@ tough-cookie@^2.3.3, tough-cookie@^2.3.4, tough-cookie@~2.5.0: tr46@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" - integrity sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk= + integrity sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA== dependencies: punycode "^2.1.0" @@ -9772,7 +10288,7 @@ tslib@^1.10.0, tslib@^1.9.0: tunnel-agent@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= + integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== dependencies: safe-buffer "^5.0.1" @@ -9788,7 +10304,7 @@ turntable-camera-controller@^3.0.0: tweetnacl@^0.14.3, tweetnacl@~0.14.0: version "0.14.5" resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" - integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= + integrity sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA== two-product@^1.0.0, two-product@^1.0.2: version "1.0.2" @@ -9810,7 +10326,7 @@ type-check@^0.4.0, type-check@~0.4.0: type-check@~0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" - integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= + integrity sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg== dependencies: prelude-ls "~1.1.2" @@ -9834,6 +10350,45 @@ type@^2.0.0: resolved "https://registry.yarnpkg.com/type/-/type-2.0.0.tgz#5f16ff6ef2eb44f260494dae271033b29c09a9c3" integrity sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow== +typed-array-buffer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz#18de3e7ed7974b0a729d3feecb94338d1472cd60" + integrity sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.1" + is-typed-array "^1.1.10" + +typed-array-byte-length@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz#d787a24a995711611fb2b87a4052799517b230d0" + integrity sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA== + dependencies: + call-bind "^1.0.2" + for-each "^0.3.3" + has-proto "^1.0.1" + is-typed-array "^1.1.10" + +typed-array-byte-offset@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz#cbbe89b51fdef9cd6aaf07ad4707340abbc4ea0b" + integrity sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + has-proto "^1.0.1" + is-typed-array "^1.1.10" + +typed-array-length@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.4.tgz#89d83785e5c4098bec72e08b319651f0eac9c1bb" + integrity sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng== + dependencies: + call-bind "^1.0.2" + for-each "^0.3.3" + is-typed-array "^1.1.9" + typedarray-pool@^1.0.0, typedarray-pool@^1.0.2, typedarray-pool@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/typedarray-pool/-/typedarray-pool-1.2.0.tgz#e7e90720144ba02b9ed660438af6f3aacfe33ac3" @@ -9877,6 +10432,16 @@ uglify-to-browserify@~1.0.0: resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" integrity sha1-bgkk1r2mta/jSeOabWMoUKD4grc= +unbox-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" + integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== + dependencies: + call-bind "^1.0.2" + has-bigints "^1.0.2" + has-symbols "^1.0.3" + which-boxed-primitive "^1.0.2" + unc-path-regex@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa" @@ -9948,7 +10513,7 @@ unquote@^1.1.0: unset-value@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" - integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= + integrity sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ== dependencies: has-value "^0.3.1" isobject "^3.0.0" @@ -9981,16 +10546,16 @@ update-diff@^1.1.0: integrity sha1-9RAYLYHugZ+4LDprIrYrve2ngI8= uri-js@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" - integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== dependencies: punycode "^2.1.0" urix@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" - integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= + integrity sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg== use-debounce@^3.4.1: version "3.4.1" @@ -10013,14 +10578,17 @@ util-deprecate@^1.0.1, util-deprecate@~1.0.1: integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= util.promisify@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee" - integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== + version "1.1.2" + resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.1.2.tgz#02b3dbadbb80071eee4c43aed58747afdfc516db" + integrity sha512-PBdZ03m1kBnQ5cjjO0ZvJMJS+QsbyIcFwi4hY4U76OQsCO9JrOYjbCFgIF76ccFg9xnJo7ZHPkqyj1GqmdS7MA== dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.2" - has-symbols "^1.0.1" - object.getownpropertydescriptors "^2.1.0" + call-bind "^1.0.2" + define-properties "^1.2.0" + for-each "^0.3.3" + has-proto "^1.0.1" + has-symbols "^1.0.3" + object.getownpropertydescriptors "^2.1.6" + safe-array-concat "^1.0.0" utils-copy-error@^1.0.0: version "1.0.1" @@ -10166,7 +10734,7 @@ vectorize-text@^3.2.1: verror@1.10.0: version "1.10.0" resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" - integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= + integrity sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw== dependencies: assert-plus "^1.0.0" core-util-is "1.0.2" @@ -10189,11 +10757,11 @@ w3c-hr-time@^1.0.1: browser-process-hrtime "^1.0.0" walker@^1.0.7, walker@~1.0.5: - version "1.0.7" - resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" - integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs= + version "1.0.8" + resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" + integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== dependencies: - makeerror "1.0.x" + makeerror "1.0.12" watchpack@^2.4.0: version "2.4.0" @@ -10322,10 +10890,32 @@ whatwg-url@^7.0.0: tr46 "^1.0.1" webidl-conversions "^4.0.2" +which-boxed-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" + integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== + dependencies: + is-bigint "^1.0.1" + is-boolean-object "^1.1.0" + is-number-object "^1.0.4" + is-string "^1.0.5" + is-symbol "^1.0.3" + which-module@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" - integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= + version "2.0.1" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.1.tgz#776b1fe35d90aebe99e8ac15eb24093389a4a409" + integrity sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ== + +which-typed-array@^1.1.10, which-typed-array@^1.1.11: + version "1.1.11" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.11.tgz#99d691f23c72aab6768680805a271b69761ed61a" + integrity sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.0" which@^1.2.9, which@^1.3.0: version "1.3.1" @@ -10351,11 +10941,16 @@ window-size@0.1.0: resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" integrity sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0= -word-wrap@^1.2.3, word-wrap@~1.2.3: +word-wrap@^1.2.3: version "1.2.4" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.4.tgz#cb4b50ec9aca570abd1f52f33cd45b6c61739a9f" integrity sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA== +word-wrap@~1.2.3: + version "1.2.5" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" + integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== + wordwrap@0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" @@ -10389,7 +10984,7 @@ wrap-ansi@^6.2.0: wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== write-file-atomic@2.4.1, write-file-atomic@^2.3.0: version "2.4.1" @@ -10434,6 +11029,11 @@ y18n@^4.0.0: resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== +yallist@^3.0.2: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + yallist@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" From 6e4f96405d579caec1217eeb7825a03e59eb8c94 Mon Sep 17 00:00:00 2001 From: Justin Clift Date: Tue, 25 Jul 2023 05:24:06 +1000 Subject: [PATCH 204/274] Bump React to exactly 16.14.0 (#6270) This gets rid of a peer dependency warning from viz-lib. --- package.json | 2 +- viz-lib/package.json | 5 +- viz-lib/yarn.lock | 181 ++++++++++++++++++++++--------------------- yarn.lock | 2 +- 4 files changed, 98 insertions(+), 92 deletions(-) diff --git a/package.json b/package.json index 6f532a0c36..be590ad83f 100644 --- a/package.json +++ b/package.json @@ -67,7 +67,7 @@ "path-to-regexp": "^3.1.0", "prop-types": "^15.6.1", "query-string": "^6.9.0", - "react": "^16.14.0", + "react": "16.14.0", "react-ace": "^9.1.1", "react-dom": "^16.14.0", "react-grid-layout": "^0.18.2", diff --git a/viz-lib/package.json b/viz-lib/package.json index 57fb385b86..2cd4e4c0d3 100644 --- a/viz-lib/package.json +++ b/viz-lib/package.json @@ -28,8 +28,7 @@ "peerDependencies": { "@ant-design/icons": ">=4.0.0", "antd": ">=4.0.0", - "react": ">=16.8.0", - "react-dom": ">=16.8.0" + "react-dom": ">=16.14.0" }, "devDependencies": { "@babel/cli": "^7.8.4", @@ -56,7 +55,7 @@ "babel-plugin-module-resolver": "^4.0.0", "css-loader": "^3.5.2", "enzyme": "^3.8.0", - "enzyme-adapter-react-16": "^1.7.1", + "enzyme-adapter-react-16": "^1.15.7", "enzyme-to-json": "^3.3.5", "jest": "^24.1.0", "less": "^3.11.1", diff --git a/viz-lib/yarn.lock b/viz-lib/yarn.lock index d6de83f470..6a54c07206 100644 --- a/viz-lib/yarn.lock +++ b/viz-lib/yarn.lock @@ -2272,21 +2272,20 @@ affine-hull@^1.0.0: dependencies: robust-orientation "^1.1.3" -airbnb-prop-types@^2.15.0: - version "2.15.0" - resolved "https://registry.yarnpkg.com/airbnb-prop-types/-/airbnb-prop-types-2.15.0.tgz#5287820043af1eb469f5b0af0d6f70da6c52aaef" - integrity sha512-jUh2/hfKsRjNFC4XONQrxo/n/3GG4Tn6Hl0WlFQN5PY9OMC9loSCoAYKnZsWaP8wEfd5xcrPloK0Zg6iS1xwVA== +airbnb-prop-types@^2.16.0: + version "2.16.0" + resolved "https://registry.yarnpkg.com/airbnb-prop-types/-/airbnb-prop-types-2.16.0.tgz#b96274cefa1abb14f623f804173ee97c13971dc2" + integrity sha512-7WHOFolP/6cS96PhKNrslCLMYAI8yB1Pp6u6XmxozQOiZbsI5ycglZr5cHhBFfuRcQQjzCMith5ZPZdYiJCxUg== dependencies: - array.prototype.find "^2.1.0" - function.prototype.name "^1.1.1" - has "^1.0.3" - is-regex "^1.0.4" - object-is "^1.0.1" + array.prototype.find "^2.1.1" + function.prototype.name "^1.1.2" + is-regex "^1.1.0" + object-is "^1.1.2" object.assign "^4.1.0" - object.entries "^1.1.0" + object.entries "^1.1.2" prop-types "^15.7.2" prop-types-exact "^1.2.0" - react-is "^16.9.0" + react-is "^16.13.1" ajv-keywords@^3.4.1: version "3.4.1" @@ -2472,13 +2471,15 @@ array-unique@^0.3.2: resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" integrity sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ== -array.prototype.find@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/array.prototype.find/-/array.prototype.find-2.1.1.tgz#3baca26108ca7affb08db06bf0be6cb3115a969c" - integrity sha512-mi+MYNJYLTx2eNYy+Yh6raoQacCsNeeMUaspFPh9Y141lFSsWxxB8V9mM2ye+eqiRs917J6/pJ4M9ZPzenWckA== +array.prototype.find@^2.1.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/array.prototype.find/-/array.prototype.find-2.2.1.tgz#769b8182a0b535c3d76ac025abab98ba1e12467b" + integrity sha512-I2ri5Z9uMpMvnsNrHre9l3PaX+z9D0/z6F7Yt2u15q7wt0I62g5kX6xUKR1SJiefgG+u2/gJUmM8B47XRvQR6w== dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.4" + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + es-shim-unscopables "^1.0.0" array.prototype.flat@^1.2.3: version "1.2.3" @@ -4016,31 +4017,32 @@ envinfo@^7.7.3: resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.10.0.tgz#55146e3909cc5fe63c22da63fb15b05aeac35b13" integrity sha512-ZtUjZO6l5mwTHvc1L9+1q5p/R3wTopcfqMW8r5t8SJSKqeVI/LtajORwRFEKpEFuekjD0VBjwu1HMxL4UalIRw== -enzyme-adapter-react-16@^1.7.1: - version "1.15.2" - resolved "https://registry.yarnpkg.com/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.15.2.tgz#b16db2f0ea424d58a808f9df86ab6212895a4501" - integrity sha512-SkvDrb8xU3lSxID8Qic9rB8pvevDbLybxPK6D/vW7PrT0s2Cl/zJYuXvsd1EBTz0q4o3iqG3FJhpYz3nUNpM2Q== +enzyme-adapter-react-16@^1.15.7: + version "1.15.7" + resolved "https://registry.yarnpkg.com/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.15.7.tgz#a737e6d8e2c147e9da5acf957755be7634f76201" + integrity sha512-LtjKgvlTc/H7adyQcj+aq0P0H07LDL480WQl1gU512IUyaDo/sbOaNDdZsJXYW2XaoPqrLLE9KbZS+X2z6BASw== dependencies: - enzyme-adapter-utils "^1.13.0" - enzyme-shallow-equal "^1.0.1" + enzyme-adapter-utils "^1.14.1" + enzyme-shallow-equal "^1.0.5" has "^1.0.3" - object.assign "^4.1.0" - object.values "^1.1.1" - prop-types "^15.7.2" - react-is "^16.12.0" + object.assign "^4.1.4" + object.values "^1.1.5" + prop-types "^15.8.1" + react-is "^16.13.1" react-test-renderer "^16.0.0-0" semver "^5.7.0" -enzyme-adapter-utils@^1.13.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/enzyme-adapter-utils/-/enzyme-adapter-utils-1.13.0.tgz#01c885dde2114b4690bf741f8dc94cee3060eb78" - integrity sha512-YuEtfQp76Lj5TG1NvtP2eGJnFKogk/zT70fyYHXK2j3v6CtuHqc8YmgH/vaiBfL8K1SgVVbQXtTcgQZFwzTVyQ== +enzyme-adapter-utils@^1.14.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/enzyme-adapter-utils/-/enzyme-adapter-utils-1.14.1.tgz#f30db15dafc22e0ccd44f5acc8d93be29218cdcf" + integrity sha512-JZgMPF1QOI7IzBj24EZoDpaeG/p8Os7WeBZWTJydpsH7JRStc7jYbHE4CmNQaLqazaGFyLM8ALWA3IIZvxW3PQ== dependencies: - airbnb-prop-types "^2.15.0" - function.prototype.name "^1.1.2" - object.assign "^4.1.0" - object.fromentries "^2.0.2" - prop-types "^15.7.2" + airbnb-prop-types "^2.16.0" + function.prototype.name "^1.1.5" + has "^1.0.3" + object.assign "^4.1.4" + object.fromentries "^2.0.5" + prop-types "^15.8.1" semver "^5.7.1" enzyme-shallow-equal@^1.0.1: @@ -4051,6 +4053,14 @@ enzyme-shallow-equal@^1.0.1: has "^1.0.3" object-is "^1.0.2" +enzyme-shallow-equal@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/enzyme-shallow-equal/-/enzyme-shallow-equal-1.0.5.tgz#5528a897a6ad2bdc417c7221a7db682cd01711ba" + integrity sha512-i6cwm7hN630JXenxxJFBKzgLC3hMTafFQXflvzHgPmDhOBhxUWDe8AeRv1qp2/uWJ2Y8z5yLWMzmAfkTOiOCZg== + dependencies: + has "^1.0.3" + object-is "^1.1.5" + enzyme-to-json@^3.3.5: version "3.4.4" resolved "https://registry.yarnpkg.com/enzyme-to-json/-/enzyme-to-json-3.4.4.tgz#b30726c59091d273521b6568c859e8831e94d00e" @@ -4146,23 +4156,6 @@ es-abstract@^1.17.0-next.1, es-abstract@^1.17.5, es-abstract@^1.19.0, es-abstrac unbox-primitive "^1.0.2" which-typed-array "^1.1.10" -es-abstract@^1.17.4: - version "1.17.5" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.5.tgz#d8c9d1d66c8981fb9200e2251d799eee92774ae9" - integrity sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg== - dependencies: - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.1" - is-callable "^1.1.5" - is-regex "^1.0.5" - object-inspect "^1.7.0" - object-keys "^1.1.1" - object.assign "^4.1.0" - string.prototype.trimleft "^2.1.1" - string.prototype.trimright "^2.1.1" - es-array-method-boxes-properly@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz#873f3e84418de4ee19c5be752990b2e44718d09e" @@ -4182,6 +4175,13 @@ es-set-tostringtag@^2.0.1: has "^1.0.3" has-tostringtag "^1.0.0" +es-shim-unscopables@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz#702e632193201e3edf8713635d083d378e510241" + integrity sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w== + dependencies: + has "^1.0.3" + es-to-primitive@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" @@ -4835,7 +4835,7 @@ function-bind@^1.1.1, function-bind@~1.1.1: resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== -function.prototype.name@^1.1.1, function.prototype.name@^1.1.2: +function.prototype.name@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.2.tgz#5cdf79d7c05db401591dfde83e3b70c5123e9a45" integrity sha512-C8A+LlHBJjB2AdcRPorc5JvJ5VUoWlXdEHLOJdCI7kjHEtGTpHQUiqMvCIKUwIsGwZX2jZJy761AXsn356bJQg== @@ -5624,7 +5624,7 @@ has-proto@^1.0.1: resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== -has-symbols@^1.0.1, has-symbols@^1.0.2, has-symbols@^1.0.3: +has-symbols@^1.0.2, has-symbols@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== @@ -6147,7 +6147,7 @@ is-regex@^1.0.4, is-regex@~1.0.5: dependencies: has "^1.0.3" -is-regex@^1.0.5, is-regex@^1.1.4: +is-regex@^1.0.5, is-regex@^1.1.0, is-regex@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== @@ -7791,6 +7791,14 @@ object-is@^1.0.1, object-is@^1.0.2: define-properties "^1.1.3" es-abstract "^1.17.5" +object-is@^1.1.2, object-is@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" + integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + object-keys@^1.0.6, object-keys@^1.0.9, object-keys@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" @@ -7818,7 +7826,7 @@ object.assign@^4.1.0, object.assign@^4.1.4: has-symbols "^1.0.3" object-keys "^1.1.1" -object.entries@^1.1.0, object.entries@^1.1.1: +object.entries@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.1.tgz#ee1cf04153de02bb093fec33683900f57ce5399b" integrity sha512-ilqR7BgdyZetJutmDPfXCDffGa0/Yzl2ivVNpbx/g4UeWrCdRnFDUBrKJGLhGieRHDATnyZXWBeCb29k9CJysQ== @@ -7828,15 +7836,23 @@ object.entries@^1.1.0, object.entries@^1.1.1: function-bind "^1.1.1" has "^1.0.3" -object.fromentries@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.2.tgz#4a09c9b9bb3843dd0f89acdb517a794d4f355ac9" - integrity sha512-r3ZiBH7MQppDJVLx6fhD618GKNG40CZYH9wgwdhKxBDDbQgjeWGGd4AtkZad84d291YxvWe7bJGuE65Anh0dxQ== +object.entries@^1.1.2: + version "1.1.6" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.6.tgz#9737d0e5b8291edd340a3e3264bb8a3b00d5fa23" + integrity sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w== dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - function-bind "^1.1.1" - has "^1.0.3" + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + +object.fromentries@^2.0.5: + version "2.0.6" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.6.tgz#cdb04da08c539cffa912dcd368b886e0904bfa73" + integrity sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" object.getownpropertydescriptors@^2.1.6: version "2.1.6" @@ -7866,6 +7882,15 @@ object.values@^1.1.1: function-bind "^1.1.1" has "^1.0.3" +object.values@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.6.tgz#4abbaa71eba47d63589d402856f908243eea9b1d" + integrity sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + once@^1.3.0, once@^1.3.1, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" @@ -8485,7 +8510,7 @@ prop-types@>=15.0.0, prop-types@^15.5.10, prop-types@^15.6.0, prop-types@^15.6.2 object-assign "^4.1.1" react-is "^16.8.1" -prop-types@^15.5.7: +prop-types@^15.5.7, prop-types@^15.8.1: version "15.8.1" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== @@ -8606,7 +8631,7 @@ react-draggable@^3.0.3: classnames "^2.2.5" prop-types "^15.6.0" -react-is@^16.12.0, react-is@^16.13.1, react-is@^16.7.0, react-is@^16.8.1, react-is@^16.8.4, react-is@^16.8.6, react-is@^16.9.0: +react-is@^16.12.0, react-is@^16.13.1, react-is@^16.7.0, react-is@^16.8.1, react-is@^16.8.4, react-is@^16.8.6: version "16.13.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== @@ -9814,7 +9839,7 @@ string.prototype.trim@^1.2.7: define-properties "^1.1.4" es-abstract "^1.20.4" -string.prototype.trimend@^1.0.3, string.prototype.trimend@^1.0.6: +string.prototype.trimend@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz#c4a27fa026d979d79c04f17397f250a462944533" integrity sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ== @@ -9823,25 +9848,7 @@ string.prototype.trimend@^1.0.3, string.prototype.trimend@^1.0.6: define-properties "^1.1.4" es-abstract "^1.20.4" -string.prototype.trimleft@^2.1.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.3.tgz#dee305118117d0a1843c1fc0d38d5d0754d83c60" - integrity sha512-699Ibssmj/awVzvdNk4g83/Iu8U9vDohzmA/ly2BrQWGhamuY4Tlvs5XKmKliDt3ky6SKbE1bzPhASKCFlx9Sg== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - string.prototype.trimstart "^1.0.3" - -string.prototype.trimright@^2.1.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.3.tgz#dc16a21d7456cbc8b2c54d47fe01f06d9efe94eb" - integrity sha512-hoOq56oRFnnfDuXNy2lGHiwT77MehHv9d0zGfRZ8QdC+4zjrkFB9vd5i/zYTd/ymFBd4YxtbdgHt3U6ksGeuBw== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - string.prototype.trimend "^1.0.3" - -string.prototype.trimstart@^1.0.3, string.prototype.trimstart@^1.0.6: +string.prototype.trimstart@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz#e90ab66aa8e4007d92ef591bbf3cd422c56bdcf4" integrity sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA== diff --git a/yarn.lock b/yarn.lock index 2868b65645..9f418fcc1f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -13218,7 +13218,7 @@ react-virtualized@^9.21.2: prop-types "^15.6.0" react-lifecycles-compat "^3.0.4" -react@^16.14.0: +react@16.14.0: version "16.14.0" resolved "https://registry.yarnpkg.com/react/-/react-16.14.0.tgz#94d776ddd0aaa37da3eda8fc5b6b18a4c9a3114d" integrity sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g== From 177f33a4605db82d95f531b8eea23c49366c6eca Mon Sep 17 00:00:00 2001 From: Justin Clift Date: Tue, 25 Jul 2023 07:48:56 +1000 Subject: [PATCH 205/274] Bump plotly.js to 1.54.4 in viz-lib (#6272) --- viz-lib/package.json | 2 +- viz-lib/yarn.lock | 655 +++++++++++++------------------------------ 2 files changed, 193 insertions(+), 464 deletions(-) diff --git a/viz-lib/package.json b/viz-lib/package.json index 2cd4e4c0d3..97fa4ca007 100644 --- a/viz-lib/package.json +++ b/viz-lib/package.json @@ -92,7 +92,7 @@ "lodash": "^4.17.10", "moment": "^2.19.3", "numeral": "^2.0.6", - "plotly.js": "1.52.3", + "plotly.js": "1.54.4", "react-pivottable": "^0.9.0", "react-sortable-hoc": "^1.10.1", "tinycolor2": "^1.4.1", diff --git a/viz-lib/yarn.lock b/viz-lib/yarn.lock index 6a54c07206..2ff495862e 100644 --- a/viz-lib/yarn.lock +++ b/viz-lib/yarn.lock @@ -1435,22 +1435,13 @@ "@jridgewell/resolve-uri" "3.1.0" "@jridgewell/sourcemap-codec" "1.4.14" -"@mapbox/geojson-area@0.2.2": - version "0.2.2" - resolved "https://registry.yarnpkg.com/@mapbox/geojson-area/-/geojson-area-0.2.2.tgz#18d7814aa36bf23fbbcc379f8e26a22927debf10" - integrity sha1-GNeBSqNr8j+7zDefjiaiKSfevxA= - dependencies: - wgs84 "0.0.0" - -"@mapbox/geojson-rewind@^0.4.0": - version "0.4.1" - resolved "https://registry.yarnpkg.com/@mapbox/geojson-rewind/-/geojson-rewind-0.4.1.tgz#357d79300adb7fec7c1f091512988bca6458f068" - integrity sha512-mxo2MEr7izA1uOXcDsw99Kgg6xW3P4H2j4n1lmldsgviIelpssvP+jQDivFKOHrOVJDpTTi5oZJvRcHtU9Uufw== +"@mapbox/geojson-rewind@^0.5.0": + version "0.5.2" + resolved "https://registry.yarnpkg.com/@mapbox/geojson-rewind/-/geojson-rewind-0.5.2.tgz#591a5d71a9cd1da1a0bf3420b3bea31b0fc7946a" + integrity sha512-tJaT+RbYGJYStt7wI3cq4Nl4SXxG8W7JDG5DMJu97V25RnbNg3QtQtf+KD+VLjNpWKYsRvXDNmNrBgEETr1ifA== dependencies: - "@mapbox/geojson-area" "0.2.2" - concat-stream "~1.6.0" - minimist "^1.2.5" - sharkdown "^0.1.0" + get-stream "^6.0.1" + minimist "^1.2.6" "@mapbox/geojson-types@^1.0.2": version "1.0.2" @@ -1462,7 +1453,7 @@ resolved "https://registry.yarnpkg.com/@mapbox/jsonlint-lines-primitives/-/jsonlint-lines-primitives-2.0.2.tgz#ce56e539f83552b58d10d672ea4d6fc9adc7b234" integrity sha1-zlblOfg1UrWNENZy6k1vya3HsjQ= -"@mapbox/mapbox-gl-supported@^1.4.0": +"@mapbox/mapbox-gl-supported@^1.5.0": version "1.5.0" resolved "https://registry.yarnpkg.com/@mapbox/mapbox-gl-supported/-/mapbox-gl-supported-1.5.0.tgz#f60b6a55a5d8e5ee908347d2ce4250b15103dc8e" integrity sha512-/PT1P6DNf7vjEEiPkVIRJkvibbqWtqnyGaBz3nfRdcxclNSnSdaLU5tfAgcD7I8Yt5i+L19s406YLl1koLnLbg== @@ -1472,10 +1463,10 @@ resolved "https://registry.yarnpkg.com/@mapbox/point-geometry/-/point-geometry-0.1.0.tgz#8a83f9335c7860effa2eeeca254332aa0aeed8f2" integrity sha1-ioP5M1x4YO/6Lu7KJUMyqgru2PI= -"@mapbox/tiny-sdf@^1.1.0": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@mapbox/tiny-sdf/-/tiny-sdf-1.1.1.tgz#16a20c470741bfe9191deb336f46e194da4a91ff" - integrity sha512-Ihn1nZcGIswJ5XGbgFAvVumOgWpvIjBX9jiRlIl46uQG9vJOF51ViBYHF95rEZupuyQbEmhLaDPLQlU7fUTsBg== +"@mapbox/tiny-sdf@^1.1.1": + version "1.2.5" + resolved "https://registry.yarnpkg.com/@mapbox/tiny-sdf/-/tiny-sdf-1.2.5.tgz#424c620a96442b20402552be70a7f62a8407cc59" + integrity sha512-cD8A/zJlm6fdJOk6DqPUV8mcpyJkRz2x2R+/fYcWDYG3oWbG7/L7Yl/WqQ1VZCjnL9OTIMAn6c+BC5Eru4sQEw== "@mapbox/unitbezier@^0.0.0": version "0.0.0" @@ -1534,6 +1525,22 @@ d3-collection "1" d3-shape "^1.2.0" +"@plotly/point-cluster@^3.1.9": + version "3.1.9" + resolved "https://registry.yarnpkg.com/@plotly/point-cluster/-/point-cluster-3.1.9.tgz#8ffec77fbf5041bf15401079e4fdf298220291c1" + integrity sha512-MwaI6g9scKf68Orpr1pHZ597pYx9uP8UEFXLPbsCmuw3a84obwz6pnMXGc90VhgDNeNiLEdlmuK7CPo+5PIxXw== + dependencies: + array-bounds "^1.0.1" + binary-search-bounds "^2.0.4" + clamp "^1.0.1" + defined "^1.0.0" + dtype "^2.0.0" + flatten-vertex-data "^1.0.2" + is-obj "^1.0.1" + math-log2 "^1.0.1" + parse-rect "^1.2.0" + pick-by-alias "^1.2.0" + "@ts-morph/bootstrap@^0.6.0": version "0.6.0" resolved "https://registry.yarnpkg.com/@ts-morph/bootstrap/-/bootstrap-0.6.0.tgz#264b51a00070916c5c824d754b7155b8b03f6631" @@ -2307,15 +2314,6 @@ ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.0, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -align-text@^0.1.1, align-text@^0.1.3: - version "0.1.4" - resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" - integrity sha1-DNkKVhCT810KmSVsIrcGlDP60Rc= - dependencies: - kind-of "^3.0.2" - longest "^1.0.1" - repeat-string "^1.5.2" - almost-equal@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/almost-equal/-/almost-equal-1.1.0.tgz#f851c631138757994276aa2efbe8dfa3066cccdd" @@ -2337,11 +2335,6 @@ alpha-shape@^1.0.0: alpha-complex "^1.0.0" simplicial-complex-boundary "^1.0.0" -amdefine@>=0.0.4: - version "1.0.1" - resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" - integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU= - ansi-colors@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" @@ -2381,11 +2374,6 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0: dependencies: color-convert "^2.0.1" -ansicolors@~0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/ansicolors/-/ansicolors-0.2.1.tgz#be089599097b74a5c9c4a84a0cdbcdb62bd87aef" - integrity sha1-vgiVmQl7dKXJxKhKDNvNtivYeu8= - anymatch@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" @@ -2967,11 +2955,6 @@ callsites@^3.0.0: resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== -camelcase@^1.0.2: - version "1.2.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" - integrity sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk= - camelcase@^5.0.0, camelcase@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" @@ -3001,14 +2984,6 @@ capture-exit@^2.0.0: dependencies: rsvp "^4.8.4" -cardinal@~0.4.2: - version "0.4.4" - resolved "https://registry.yarnpkg.com/cardinal/-/cardinal-0.4.4.tgz#ca5bb68a5b511b90fe93b9acea49bdee5c32bfe2" - integrity sha1-ylu2iltRG5D+k7ms6km97lwyv+I= - dependencies: - ansicolors "~0.2.1" - redeyed "~0.4.0" - caseless@~0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" @@ -3028,14 +3003,6 @@ cell-orientation@^1.0.1: resolved "https://registry.yarnpkg.com/cell-orientation/-/cell-orientation-1.0.1.tgz#b504ad96a66ad286d9edd985a2253d03b80d2850" integrity sha1-tQStlqZq0obZ7dmFoiU9A7gNKFA= -center-align@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" - integrity sha1-qg0yYptu6XIgBBHL1EYckHvCt60= - dependencies: - align-text "^0.1.3" - lazy-cache "^1.0.3" - chalk@^2.0.0, chalk@^2.0.1, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" @@ -3156,15 +3123,6 @@ cli-cursor@^2.1.0: dependencies: restore-cursor "^2.0.0" -cliui@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" - integrity sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE= - dependencies: - center-align "^0.1.1" - right-align "^0.1.1" - wordwrap "0.0.2" - cliui@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" @@ -3372,7 +3330,7 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== -concat-stream@^1.5.2, concat-stream@~1.6.0: +concat-stream@^1.5.2: version "1.6.2" resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== @@ -3544,10 +3502,10 @@ css-what@2.1: resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2" integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg== -csscolorparser@~1.0.2: +csscolorparser@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/csscolorparser/-/csscolorparser-1.0.3.tgz#b34f391eea4da8f3e98231e2ccd8df9c041f171b" - integrity sha1-s085HupNqPPpgjHizNjfnAQfFxs= + integrity sha512-umPSgYwZkdFoUrH5hIq5kf0wPSXiro51nPw0j2K/c83KflkPSTBGMz6NJvMB+07VlL0y7VPo6QJcDjcgKTTm3w== cssesc@^3.0.0: version "3.0.0" @@ -3576,31 +3534,13 @@ cubic-hermite@^1.0.0: resolved "https://registry.yarnpkg.com/cubic-hermite/-/cubic-hermite-1.0.0.tgz#84e3b2f272b31454e8393b99bb6aed45168c14e5" integrity sha1-hOOy8nKzFFToOTuZu2rtRRaMFOU= -cwise-compiler@^1.0.0, cwise-compiler@^1.1.1, cwise-compiler@^1.1.2: +cwise-compiler@^1.0.0, cwise-compiler@^1.1.2: version "1.1.3" resolved "https://registry.yarnpkg.com/cwise-compiler/-/cwise-compiler-1.1.3.tgz#f4d667410e850d3a313a7d2db7b1e505bb034cc5" integrity sha1-9NZnQQ6FDToxOn0tt7HlBbsDTMU= dependencies: uniq "^1.0.0" -cwise-parser@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/cwise-parser/-/cwise-parser-1.0.3.tgz#8e493c17d54f97cb030a9e9854bc86c9dfb354fe" - integrity sha1-jkk8F9VPl8sDCp6YVLyGyd+zVP4= - dependencies: - esprima "^1.0.3" - uniq "^1.0.0" - -cwise@^1.0.10, cwise@^1.0.4: - version "1.0.10" - resolved "https://registry.yarnpkg.com/cwise/-/cwise-1.0.10.tgz#24eee6072ebdfd6b8c6f5dadb17090b649b12bef" - integrity sha1-JO7mBy69/WuMb12tsXCQtkmxK+8= - dependencies: - cwise-compiler "^1.1.1" - cwise-parser "^1.0.0" - static-module "^1.0.0" - uglify-js "^2.6.0" - d3-array@1, d3-array@^1.2.1: version "1.2.4" resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-1.2.4.tgz#635ce4d5eea759f6f605863dbcfc30edc737f71f" @@ -3628,7 +3568,7 @@ d3-dispatch@1, d3-dispatch@^1.0.3: resolved "https://registry.yarnpkg.com/d3-dispatch/-/d3-dispatch-1.0.6.tgz#00d37bcee4dd8cd97729dd893a0ac29caaba5d58" integrity sha512-fVjoElzjhCEy+Hbn8KygnmMS7Or0a9sI2UzGwoB7cCtvI1XpVN9GpoYlnb3xt2YV66oXYb1fLJ8GMvP4hdU1RA== -d3-force@^1.0.6: +d3-force@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/d3-force/-/d3-force-1.2.1.tgz#fd29a5d1ff181c9e7f0669e4bd72bdb0e914ec0b" integrity sha512-HHvehyaiUlVo5CxBJ0yF/xny4xoaxFxDnBXNvNcfW9adORGZfyNF1dj6DGLKyk4Yh3brP/1h3rnDzdIAwL08zg== @@ -3672,7 +3612,7 @@ d3-timer@1: resolved "https://registry.yarnpkg.com/d3-timer/-/d3-timer-1.0.10.tgz#dfe76b8a91748831b13b6d9c793ffbd508dd9de5" integrity sha512-B1JDm0XDaQC+uvo4DT79H0XmBskgS3l6Ve+1SBCfxgmtIb1AVrPIoqd+nPSv+loMX8szQ0sVUhGngL7D5QPiXw== -d3@^3.5.12, d3@^3.5.17: +d3@^3.5.17: version "3.5.17" resolved "https://registry.yarnpkg.com/d3/-/d3-3.5.17.tgz#bc46748004378b21a360c9fc7cf5231790762fb8" integrity sha1-vEZ0gAQ3iyGjYMn8fPUjF5B2L7g= @@ -3729,7 +3669,7 @@ debug@^4.1.0, debug@^4.1.1: dependencies: ms "2.1.2" -decamelize@^1.0.0, decamelize@^1.2.0: +decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= @@ -3911,13 +3851,6 @@ dup@^1.0.0: resolved "https://registry.yarnpkg.com/dup/-/dup-1.0.0.tgz#51fc5ac685f8196469df0b905e934b20af5b4029" integrity sha1-UfxaxoX4GWRp3wuQXpNLIK9bQCk= -duplexer2@~0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.0.2.tgz#c614dcf67e2fb14995a91711e5a617e8a60a31db" - integrity sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds= - dependencies: - readable-stream "~1.1.9" - duplexify@^3.4.5: version "3.7.1" resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" @@ -3933,6 +3866,11 @@ earcut@^2.1.5: resolved "https://registry.yarnpkg.com/earcut/-/earcut-2.2.2.tgz#41b0bc35f63e0fe80da7cddff28511e7e2e80d11" integrity sha512-eZoZPPJcUHnfRZ0PjLvx2qBordSiO8ofC3vt+qACLM95u+4DovnbYNpQtJh0DNsWj8RnxrQytD4WA8gj5cRIaQ== +earcut@^2.2.2: + version "2.2.4" + resolved "https://registry.yarnpkg.com/earcut/-/earcut-2.2.4.tgz#6d02fd4d68160c114825d06890a92ecaae60343a" + integrity sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ== + ecc-jsbn@~0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" @@ -4209,10 +4147,10 @@ es6-iterator@^2.0.3, es6-iterator@~2.0.3: es5-ext "^0.10.35" es6-symbol "^3.1.1" -es6-promise@^3.0.2: - version "3.3.1" - resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.3.1.tgz#a08cdde84ccdbf34d027a1451bc91d4bcd28a613" - integrity sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM= +es6-promise@^4.2.8: + version "4.2.8" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" + integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== es6-symbol@^3.1.1, es6-symbol@~3.1.3: version "3.1.3" @@ -4271,27 +4209,6 @@ escodegen@^1.9.1: optionalDependencies: source-map "~0.6.1" -escodegen@~0.0.24: - version "0.0.28" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-0.0.28.tgz#0e4ff1715f328775d6cab51ac44a406cd7abffd3" - integrity sha1-Dk/xcV8yh3XWyrUaxEpAbNer/9M= - dependencies: - esprima "~1.0.2" - estraverse "~1.3.0" - optionalDependencies: - source-map ">= 0.1.2" - -escodegen@~1.3.2: - version "1.3.3" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.3.3.tgz#f024016f5a88e046fd12005055e939802e6c5f23" - integrity sha1-8CQBb1qI4Eb9EgBQVek5gC5sXyM= - dependencies: - esprima "~1.1.1" - estraverse "~1.5.0" - esutils "~1.0.0" - optionalDependencies: - source-map "~0.1.33" - eslint-scope@5.1.1, eslint-scope@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" @@ -4369,26 +4286,11 @@ espree@^7.3.0, espree@^7.3.1: acorn-jsx "^5.3.1" eslint-visitor-keys "^1.3.0" -esprima@^1.0.3: - version "1.2.5" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-1.2.5.tgz#0993502feaf668138325756f30f9a51feeec11e9" - integrity sha1-CZNQL+r2aBODJXVvMPmlH+7sEek= - esprima@^4.0.0, esprima@^4.0.1, esprima@~4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -esprima@~1.0.2, esprima@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-1.0.4.tgz#9f557e08fc3b4d26ece9dd34f8fbf476b62585ad" - integrity sha1-n1V+CPw7TSbs6d00+Pv0drYlha0= - -esprima@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-1.1.1.tgz#5b6f1547f4d102e670e140c509be6771d6aeb549" - integrity sha1-W28VR/TRAuZw4UDFCb5ncdautUk= - esquery@^1.2.0: version "1.3.1" resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.3.1.tgz#b78b5828aa8e214e29fb74c4d5b752e1c033da57" @@ -4413,26 +4315,11 @@ estraverse@^5.1.0, estraverse@^5.2.0: resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== -estraverse@~1.3.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.3.2.tgz#37c2b893ef13d723f276d878d60d8535152a6c42" - integrity sha1-N8K4k+8T1yPydth41g2FNRUqbEI= - -estraverse@~1.5.0: - version "1.5.1" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.5.1.tgz#867a3e8e58a9f84618afb6c2ddbcd916b7cbaf71" - integrity sha1-hno+jlip+EYYr7bC3bzZFrfLr3E= - esutils@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== -esutils@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-1.0.0.tgz#8151d358e20c8acc7fb745e7472c0025fe496570" - integrity sha1-gVHTWOIMisx/t0XnRywAJf5JZXA= - events@^1.0.2: version "1.1.1" resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" @@ -4574,7 +4461,7 @@ fast-glob@^3.2.4: micromatch "^4.0.2" picomatch "^2.2.1" -fast-isnumeric@^1.1.3: +fast-isnumeric@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/fast-isnumeric/-/fast-isnumeric-1.1.4.tgz#e165786ff471c439e9ace2b8c8e66cceb47e2ea4" integrity sha512-1mM8qOr2LYz8zGaUdmiqRDiuue00Dxjgcb1NQR7TnhLVh6sQyngP9xvLo7Sl7LZpP/sk5eb+bcyWXw530NTBZw== @@ -4916,6 +4803,11 @@ get-stream@^4.0.0: dependencies: pump "^3.0.0" +get-stream@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + get-symbol-description@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" @@ -4964,7 +4856,7 @@ gl-buffer@^2.1.1, gl-buffer@^2.1.2: ndarray-ops "^1.1.0" typedarray-pool "^1.0.0" -gl-cone3d@^1.5.1, gl-cone3d@^1.5.2: +gl-cone3d@^1.5.2: version "1.5.2" resolved "https://registry.yarnpkg.com/gl-cone3d/-/gl-cone3d-1.5.2.tgz#66af5c33b7d5174034dfa3654a88e995998d92bc" integrity sha512-1JNeHH4sUtUmDA4ZK7Om8/kShwb8IZVAsnxaaB7IPRJsNGciLj1sTpODrJGeMl41RNkex5kXD2SQFrzyEAR2Rw== @@ -4987,7 +4879,7 @@ gl-constants@^1.0.0: resolved "https://registry.yarnpkg.com/gl-constants/-/gl-constants-1.0.0.tgz#597a504e364750ff50253aa35f8dea7af4a5d233" integrity sha1-WXpQTjZHUP9QJTqjX43qevSl0jM= -gl-contour2d@^1.1.6: +gl-contour2d@^1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/gl-contour2d/-/gl-contour2d-1.1.7.tgz#ca330cf8449673a9ca0b3f6726c83f8d35c7a50c" integrity sha512-GdebvJ9DtT3pJDpoE+eU2q+Wo9S3MijPpPz5arZbhK85w2bARmpFpVfPaDlZqWkB644W3BlH8TVyvAo1KE4Bhw== @@ -5002,7 +4894,7 @@ gl-contour2d@^1.1.6: ndarray "^1.0.18" surface-nets "^1.0.2" -gl-error3d@^1.0.15: +gl-error3d@^1.0.16: version "1.0.16" resolved "https://registry.yarnpkg.com/gl-error3d/-/gl-error3d-1.0.16.tgz#88a94952f5303d9cf5cb86806789a360777c5446" integrity sha512-TGJewnKSp7ZnqGgG3XCF9ldrDbxZrO+OWlx6oIet4OdOM//n8xJ5isArnIV/sdPJnFbhfoLxWrW9f5fxHFRQ1A== @@ -5030,22 +4922,22 @@ gl-format-compiler-error@^1.0.2: glsl-shader-name "^1.0.0" sprintf-js "^1.0.3" -gl-heatmap2d@^1.0.5: - version "1.0.6" - resolved "https://registry.yarnpkg.com/gl-heatmap2d/-/gl-heatmap2d-1.0.6.tgz#d0a2d9e8f5975534224b3b2be2ffe683f6b7e961" - integrity sha512-+agzSv4R5vsaH+AGYVz5RVzBK10amqAa+Bwj205F13JjNSGS91M1L9Yb8zssCv2FIjpP+1Mp73cFBYrQFfS1Jg== +gl-heatmap2d@^1.0.6: + version "1.1.1" + resolved "https://registry.yarnpkg.com/gl-heatmap2d/-/gl-heatmap2d-1.1.1.tgz#dbbb2c288bfe277002fa50985155b0403d87640f" + integrity sha512-6Vo1fPIB1vQFWBA/MR6JAA16XuQuhwvZRbSjYEq++m4QV33iqjGS2HcVIRfJGX+fomd5eiz6bwkVZcKm69zQPw== dependencies: binary-search-bounds "^2.0.4" gl-buffer "^2.1.2" gl-shader "^4.2.1" glslify "^7.0.0" iota-array "^1.0.0" - typedarray-pool "^1.1.0" + typedarray-pool "^1.2.0" -gl-line3d@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/gl-line3d/-/gl-line3d-1.2.0.tgz#038d339b8986e602af90dd9663f83678db64247c" - integrity sha512-du9GDF87DMfllND2pBjySyHhFaza9upw4t2GMoXn11/I38atO6+saiznuhKmfxuDnyxGdmmZF6/HPauk0owKDA== +gl-line3d@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/gl-line3d/-/gl-line3d-1.2.1.tgz#632fc5b931a84a315995322b271aaf497e292609" + integrity sha512-eeb0+RI2ZBRqMYJK85SgsRiJK7c4aiOjcnirxv0830A3jmOc99snY3AbPcV8KvKmW0Yaf3KA4e+qNCbHiTOTnA== dependencies: binary-search-bounds "^2.0.4" gl-buffer "^2.1.2" @@ -5056,36 +4948,22 @@ gl-line3d@1.2.0: glslify "^7.0.0" ndarray "^1.0.18" -gl-mat2@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/gl-mat2/-/gl-mat2-1.0.1.tgz#142505730a5c2fe1e9f25d9ece3d0d6cc2710a30" - integrity sha1-FCUFcwpcL+Hp8l2ezj0NbMJxCjA= - gl-mat3@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/gl-mat3/-/gl-mat3-1.0.0.tgz#89633219ca429379a16b9185d95d41713453b912" integrity sha1-iWMyGcpCk3mha5GF2V1BcTRTuRI= -gl-mat4@^1.0.0, gl-mat4@^1.0.1, gl-mat4@^1.0.2, gl-mat4@^1.0.3, gl-mat4@^1.1.2, gl-mat4@^1.2.0: +gl-mat4@^1.0.1, gl-mat4@^1.0.2, gl-mat4@^1.0.3, gl-mat4@^1.1.2, gl-mat4@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/gl-mat4/-/gl-mat4-1.2.0.tgz#49d8a7636b70aa00819216635f4a3fd3f4669b26" integrity sha512-sT5C0pwB1/e9G9AvAoLsoaJtbMGjfd/jfxo8jMCKqYYEnjZuFvqV5rehqar0538EmssjdDeiEWnKyBSTw7quoA== -gl-matrix-invert@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/gl-matrix-invert/-/gl-matrix-invert-1.0.0.tgz#a36d7bde3654c4590a127ee7c68f6e13fea8c63d" - integrity sha1-o2173jZUxFkKEn7nxo9uE/6oxj0= - dependencies: - gl-mat2 "^1.0.0" - gl-mat3 "^1.0.0" - gl-mat4 "^1.0.0" - -gl-matrix@^3.0.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/gl-matrix/-/gl-matrix-3.3.0.tgz#232eef60b1c8b30a28cbbe75b2caf6c48fd6358b" - integrity sha512-COb7LDz+SXaHtl/h4LeaFcNdJdAQSDeVqjiIihSXNrkWObZLhDI4hIkZC11Aeqp7bcE72clzB0BnDXr2SmslRA== +gl-matrix@^3.2.1: + version "3.4.3" + resolved "https://registry.yarnpkg.com/gl-matrix/-/gl-matrix-3.4.3.tgz#fc1191e8320009fd4d20e9339595c6041ddc22c9" + integrity sha512-wcCp8vu8FT22BnvKVPjXa/ICBWRq/zjFfdofZy1WSpQZpphblv12/bOQLBC1rMM7SGOFS9ltVmKOHil5+Ml7gA== -gl-mesh3d@^2.3.0: +gl-mesh3d@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/gl-mesh3d/-/gl-mesh3d-2.3.1.tgz#087a93c5431df923570ca51cfc691bab0d21a6b8" integrity sha512-pXECamyGgu4/9HeAQSE5OEUuLBGS1aq9V4BCsTcxsND4fNLaajEkYKUz/WY2QSYElqKdsMBVsldGiKRKwlybqA== @@ -5106,30 +4984,30 @@ gl-mesh3d@^2.3.0: simplicial-complex-contour "^1.0.2" typedarray-pool "^1.1.0" -gl-plot2d@^1.4.3: - version "1.4.4" - resolved "https://registry.yarnpkg.com/gl-plot2d/-/gl-plot2d-1.4.4.tgz#2dbe40776051436baf0947f828ee2c8c303d2bdb" - integrity sha512-0UhKiiqeampLtydv6NMNrKEilc0Ui5oaJtvHLbLZ5u/1ttT1XjOY5Yk8LzfqozA/No4a9omxjSKnH+tvSn+rQQ== +gl-plot2d@^1.4.5: + version "1.4.5" + resolved "https://registry.yarnpkg.com/gl-plot2d/-/gl-plot2d-1.4.5.tgz#6412b8b3f8df3e7d89c5955daac7059e04d657d4" + integrity sha512-6GmCN10SWtV+qHFQ1gjdnVubeHFVsm6P4zmo0HrPIl9TcdePCUHDlBKWAuE6XtFhiMKMj7R8rApOX8O8uXUYog== dependencies: binary-search-bounds "^2.0.4" gl-buffer "^2.1.2" - gl-select-static "^2.0.6" + gl-select-static "^2.0.7" gl-shader "^4.2.1" glsl-inverse "^1.0.0" glslify "^7.0.0" text-cache "^4.2.2" -gl-plot3d@^2.4.4: - version "2.4.5" - resolved "https://registry.yarnpkg.com/gl-plot3d/-/gl-plot3d-2.4.5.tgz#962e99c3e55862e0ad77e99114566eadb28bf224" - integrity sha512-cKAqMXFRHTCFxH8r1/ACdk5hyfnA9djfiAM8zVQrqu0qLEttUu0i1fq0pr+d5m0HPuNcK8wEc4F3VjL2hrDcGQ== +gl-plot3d@^2.4.6: + version "2.4.7" + resolved "https://registry.yarnpkg.com/gl-plot3d/-/gl-plot3d-2.4.7.tgz#b66e18c5affdd664f42c884acf7b82c60b41ee78" + integrity sha512-mLDVWrl4Dj0O0druWyHUK5l7cBQrRIJRn2oROEgrRuOgbbrLAzsREKefwMO0bA0YqkiZMFMnV5VvPA9j57X5Xg== dependencies: "3d-view" "^2.0.0" a-big-triangle "^1.0.3" gl-axes3d "^1.5.3" gl-fbo "^2.0.5" gl-mat4 "^1.2.0" - gl-select-static "^2.0.6" + gl-select-static "^2.0.7" gl-shader "^4.2.1" gl-spikes3d "^1.0.10" glslify "^7.0.0" @@ -5138,10 +5016,10 @@ gl-plot3d@^2.4.4: mouse-change "^1.4.0" mouse-event-offset "^3.0.2" mouse-wheel "^1.2.0" - ndarray "^1.0.18" + ndarray "^1.0.19" right-now "^1.0.0" -gl-pointcloud2d@^1.0.2: +gl-pointcloud2d@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/gl-pointcloud2d/-/gl-pointcloud2d-1.0.3.tgz#f37e215f21ccb2e17f0604664e99fc3d6a4e611d" integrity sha512-OS2e1irvJXVRpg/GziXj10xrFJm9kkRfFoB6BLUvkjCQV7ZRNNcs2CD+YSK1r0gvMwTg2T3lfLM3UPwNtz+4Xw== @@ -5160,7 +5038,7 @@ gl-quat@^1.0.0: gl-vec3 "^1.0.3" gl-vec4 "^1.0.0" -gl-scatter3d@^1.2.2: +gl-scatter3d@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/gl-scatter3d/-/gl-scatter3d-1.2.3.tgz#83d63700ec2fe4e95b3d1cd613e86de9a6b5f603" integrity sha512-nXqPlT1w5Qt51dTksj+DUqrZqwWAEWg0PocsKcoDnVNv0X8sGA+LBZ0Y+zrA+KNXUL0PPCX9WR9cF2uJAZl1Sw== @@ -5175,7 +5053,7 @@ gl-scatter3d@^1.2.2: typedarray-pool "^1.1.0" vectorize-text "^3.2.1" -gl-select-box@^1.0.3: +gl-select-box@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/gl-select-box/-/gl-select-box-1.0.4.tgz#47c11caa2b84f81e8bbfde08c6e39eeebb53d3d8" integrity sha512-mKsCnglraSKyBbQiGq0Ila0WF+m6Tr+EWT2yfaMn/Sh9aMHq5Wt0F/l6Cf/Ed3CdERq5jHWAY5yxLviZteYu2w== @@ -5184,13 +5062,12 @@ gl-select-box@^1.0.3: gl-shader "^4.2.1" glslify "^7.0.0" -gl-select-static@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/gl-select-static/-/gl-select-static-2.0.6.tgz#43194a348613a693d4097e5ab9ceb0685003f036" - integrity sha512-p4DmBG1DMo/47/fV3oqPcU6uTqHy0eI1vATH1fm8OVDqlzWnLv3786tdEunZWG6Br7DUdH6NgWhuy4gAlt+TAQ== +gl-select-static@^2.0.7: + version "2.0.7" + resolved "https://registry.yarnpkg.com/gl-select-static/-/gl-select-static-2.0.7.tgz#ce7eb05ae0139009c15e2d2d0d731600b3dae5c0" + integrity sha512-OvpYprd+ngl3liEatBTdXhSyNBjwvjMSvV2rN0KHpTU+BTi4viEETXNZXFgGXY37qARs0L28ybk3UQEW6C5Nnw== dependencies: bit-twiddle "^1.0.2" - cwise "^1.0.10" gl-fbo "^2.0.5" ndarray "^1.0.18" typedarray-pool "^1.1.0" @@ -5225,7 +5102,7 @@ gl-state@^1.0.0: dependencies: uniq "^1.0.0" -gl-streamtube3d@^1.4.0: +gl-streamtube3d@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/gl-streamtube3d/-/gl-streamtube3d-1.4.1.tgz#bd2b725e00aa96989ce34b06ebf66a76f93e35ae" integrity sha512-rH02v00kgwgdpkXVo7KsSoPp38bIAYR9TE1iONjcQ4cQAlDhrGRauqT/P5sUaOIzs17A2DxWGcXM+EpNQs9pUA== @@ -5238,10 +5115,10 @@ gl-streamtube3d@^1.4.0: glsl-specular-cook-torrance "^2.0.1" glslify "^7.0.0" -gl-surface3d@^1.4.6: - version "1.5.2" - resolved "https://registry.yarnpkg.com/gl-surface3d/-/gl-surface3d-1.5.2.tgz#a283b98d3473fca4e8552f0f6ac40a6f0dc88b00" - integrity sha512-rWSQwEQDkB0T5CDEDFJwJc4VgwwJaAyFRSJ92NJlrTSwDlsEsWdzG9+APx6FWJMwkOpIoZGWqv+csswK2kMMLQ== +gl-surface3d@^1.5.2: + version "1.6.0" + resolved "https://registry.yarnpkg.com/gl-surface3d/-/gl-surface3d-1.6.0.tgz#5fc915759a91e9962dcfbf3982296c462a032526" + integrity sha512-x15+u4712ysnB85G55RLJEml6mOB4VaDn0VTlXCc9JcjRl5Es10Tk7lhGGyiPtkCfHwvhnkxzYA1/rHHYN7Y0A== dependencies: binary-search-bounds "^2.0.4" bit-twiddle "^1.0.2" @@ -5667,7 +5544,7 @@ has-values@^1.0.0: is-number "^3.0.0" kind-of "^4.0.0" -has@^1.0.0, has@^1.0.3, has@~1.0.3: +has@^1.0.3, has@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== @@ -6091,7 +5968,7 @@ is-iexplorer@^1.0.0: resolved "https://registry.yarnpkg.com/is-iexplorer/-/is-iexplorer-1.0.0.tgz#1d72bc66d3fe22eaf6170dda8cf10943248cfc76" integrity sha1-HXK8ZtP+Iur2Fw3ajPEJQySM/HY= -is-mobile@^2.2.0, is-mobile@^2.2.1: +is-mobile@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/is-mobile/-/is-mobile-2.2.1.tgz#10f2320012c410cc285feecb13406bd586f1b2f8" integrity sha512-6zELsfVFr326eq2CI53yvqq6YBanOxKBybwDT+MbMS2laBnK6Ez8m5XHSuTQQbnKRfpDzCod1CMWW5q3wZYMvA== @@ -6941,11 +6818,6 @@ kleur@^3.0.3: resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== -lazy-cache@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" - integrity sha1-odePw6UEdMuAhF07O24dpJpEbo4= - leaflet-fullscreen@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/leaflet-fullscreen/-/leaflet-fullscreen-1.0.2.tgz#09c61c4bac45f63b2ee126afd87e5cd97650fc1b" @@ -7119,11 +6991,6 @@ log-update@^3.3.0: cli-cursor "^2.1.0" wrap-ansi "^5.0.0" -longest@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" - integrity sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc= - loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" @@ -7186,33 +7053,33 @@ map-visit@^1.0.0: dependencies: object-visit "^1.0.0" -mapbox-gl@1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/mapbox-gl/-/mapbox-gl-1.3.2.tgz#6e9197485de7c0c71b1fd30e5e8e7e3824bc35dd" - integrity sha512-6Ro7GbTMWxcbc836m6rbBNkesgTncbE1yXWeuHlr89esSqaItKr0+ntOu8rZie3fv+GtitkbODysXzIGCA7G+w== +mapbox-gl@1.10.1: + version "1.10.1" + resolved "https://registry.yarnpkg.com/mapbox-gl/-/mapbox-gl-1.10.1.tgz#7dbd53bdf2f78e45e125c1115e94dea286ef663c" + integrity sha512-0aHt+lFUpYfvh0kMIqXqNXqoYMuhuAsMlw87TbhWrw78Tx2zfuPI0Lx31/YPUgJ+Ire0tzQ4JnuBL7acDNXmMg== dependencies: - "@mapbox/geojson-rewind" "^0.4.0" + "@mapbox/geojson-rewind" "^0.5.0" "@mapbox/geojson-types" "^1.0.2" "@mapbox/jsonlint-lines-primitives" "^2.0.2" - "@mapbox/mapbox-gl-supported" "^1.4.0" + "@mapbox/mapbox-gl-supported" "^1.5.0" "@mapbox/point-geometry" "^0.1.0" - "@mapbox/tiny-sdf" "^1.1.0" + "@mapbox/tiny-sdf" "^1.1.1" "@mapbox/unitbezier" "^0.0.0" "@mapbox/vector-tile" "^1.3.1" "@mapbox/whoots-js" "^3.1.0" - csscolorparser "~1.0.2" - earcut "^2.1.5" + csscolorparser "~1.0.3" + earcut "^2.2.2" geojson-vt "^3.2.1" - gl-matrix "^3.0.0" + gl-matrix "^3.2.1" grid-index "^1.1.0" - minimist "0.0.8" + minimist "^1.2.5" murmurhash-js "^1.0.0" - pbf "^3.0.5" + pbf "^3.2.1" potpack "^1.0.1" quickselect "^2.0.0" rw "^1.3.3" - supercluster "^6.0.1" - tinyqueue "^2.0.0" + supercluster "^7.0.0" + tinyqueue "^2.0.3" vt-pbf "^3.1.1" marching-simplex-table@^1.0.0: @@ -7334,16 +7201,6 @@ minimatch@^3.0.2, minimatch@^3.0.4, minimatch@^3.1.1: dependencies: brace-expansion "^1.1.7" -minimist@0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.5.tgz#d7aa327bcecf518f9106ac6b8f003fa3bcea8566" - integrity sha1-16oye87PUY+RBqxrjwA/o7zqhWY= - -minimist@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" - integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= - minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6: version "1.2.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" @@ -7498,13 +7355,6 @@ ndarray-extract-contour@^1.0.0: dependencies: typedarray-pool "^1.0.0" -ndarray-fill@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/ndarray-fill/-/ndarray-fill-1.0.2.tgz#a30a60f7188e0c9582fcdd58896acdcb522a1ed6" - integrity sha1-owpg9xiODJWC/N1YiWrNy1IqHtY= - dependencies: - cwise "^1.0.10" - ndarray-gradient@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/ndarray-gradient/-/ndarray-gradient-1.0.0.tgz#b7491a515c6a649f19a62324fff6f27fc8c25393" @@ -7513,14 +7363,6 @@ ndarray-gradient@^1.0.0: cwise-compiler "^1.0.0" dup "^1.0.0" -ndarray-homography@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/ndarray-homography/-/ndarray-homography-1.0.0.tgz#c35516ea86bc2862b4e804a236a2707309fe296b" - integrity sha1-w1UW6oa8KGK06ASiNqJwcwn+KWs= - dependencies: - gl-matrix-invert "^1.0.0" - ndarray-warp "^1.0.0" - ndarray-linear-interpolate@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/ndarray-linear-interpolate/-/ndarray-linear-interpolate-1.0.0.tgz#78bc92b85b9abc15b6e67ee65828f9e2137ae72b" @@ -7557,15 +7399,7 @@ ndarray-sort@^1.0.0: dependencies: typedarray-pool "^1.0.0" -ndarray-warp@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ndarray-warp/-/ndarray-warp-1.0.1.tgz#a8a125aaabba0bebf93bd6ca83e6abd6822a34e0" - integrity sha1-qKElqqu6C+v5O9bKg+ar1oIqNOA= - dependencies: - cwise "^1.0.4" - ndarray-linear-interpolate "^1.0.0" - -ndarray@^1.0.11, ndarray@^1.0.13, ndarray@^1.0.14, ndarray@^1.0.15, ndarray@^1.0.18: +ndarray@^1.0.11, ndarray@^1.0.13, ndarray@^1.0.14, ndarray@^1.0.15, ndarray@^1.0.18, ndarray@^1.0.19: version "1.0.19" resolved "https://registry.yarnpkg.com/ndarray/-/ndarray-1.0.19.tgz#6785b5f5dfa58b83e31ae5b2a058cfd1ab3f694e" integrity sha512-B4JHA4vdyZU30ELBw3g7/p9bZupyew5a7tX1Y/gGeF2hafrPaQZhgrGQfsvgfYbgdFZjYwuEcnaobeM/WMW+HQ== @@ -7773,11 +7607,6 @@ object-inspect@^1.12.3, object-inspect@^1.7.0, object-inspect@^1.9.0: resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9" integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== -object-inspect@~0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-0.4.0.tgz#f5157c116c1455b243b06ee97703392c5ad89fec" - integrity sha1-9RV8EWwUVbJDsG7pdwM5LFrYn+w= - object-inspect@~1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67" @@ -7804,11 +7633,6 @@ object-keys@^1.0.6, object-keys@^1.0.9, object-keys@^1.1.1: resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== -object-keys@~0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-0.4.0.tgz#28a6aae7428dd2c3a92f3d95f21335dd204e0336" - integrity sha1-KKaq50KN0sOpLz2V8hM13SBOAzY= - object-visit@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" @@ -8114,7 +7938,7 @@ path-type@^3.0.0: dependencies: pify "^3.0.0" -pbf@^3.0.5: +pbf@^3.0.5, pbf@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/pbf/-/pbf-3.2.1.tgz#b4c1b9e72af966cd82c6531691115cc0409ffe2a" integrity sha512-ClrV7pNOn7rtmoQVF4TS1vyU0WhYRnP92fzbfF75jAIwpnzdJXf8iTd4CMEqO4yUenH6NDqLiwjqlh6QgZzgLQ== @@ -8233,10 +8057,10 @@ planar-graph-to-polyline@^1.0.0: two-product "^1.0.0" uniq "^1.0.0" -plotly.js@1.52.3: - version "1.52.3" - resolved "https://registry.yarnpkg.com/plotly.js/-/plotly.js-1.52.3.tgz#2ae534811447d053765d9c2a8829878dc1f3c489" - integrity sha512-7szNqbVuhqn4ZgaTpJ9h4+9PzjoXJnSdzjnY5QwHddp/j0xu5kpHCGvkg+WmeF3brK3y8qwEHF/MIFBBa7i0ng== +plotly.js@1.54.4: + version "1.54.4" + resolved "https://registry.yarnpkg.com/plotly.js/-/plotly.js-1.54.4.tgz#b197034eacb784b955bfae3ab3824c04a42bc84f" + integrity sha512-mklqX2dDTIHWmdH7mKFLFJeLz/bMy28JgohAxcXdRYH2hskLQ2wJ14GuOLd5nESpdjw/Edk7ZL6dwL0qTN3mwQ== dependencies: "@plotly/d3-sankey" "0.7.2" "@plotly/d3-sankey-circular" "0.33.1" @@ -8249,47 +8073,47 @@ plotly.js@1.52.3: color-rgba "^2.1.1" convex-hull "^1.0.3" country-regex "^1.1.0" - d3 "^3.5.12" - d3-force "^1.0.6" + d3 "^3.5.17" + d3-force "^1.2.1" d3-hierarchy "^1.1.9" d3-interpolate "^1.4.0" delaunay-triangulate "^1.1.6" - es6-promise "^3.0.2" - fast-isnumeric "^1.1.3" - gl-cone3d "^1.5.1" - gl-contour2d "^1.1.6" - gl-error3d "^1.0.15" - gl-heatmap2d "^1.0.5" - gl-line3d "1.2.0" + es6-promise "^4.2.8" + fast-isnumeric "^1.1.4" + gl-cone3d "^1.5.2" + gl-contour2d "^1.1.7" + gl-error3d "^1.0.16" + gl-heatmap2d "^1.0.6" + gl-line3d "1.2.1" gl-mat4 "^1.2.0" - gl-mesh3d "^2.3.0" - gl-plot2d "^1.4.3" - gl-plot3d "^2.4.4" - gl-pointcloud2d "^1.0.2" - gl-scatter3d "^1.2.2" - gl-select-box "^1.0.3" + gl-mesh3d "^2.3.1" + gl-plot2d "^1.4.5" + gl-plot3d "^2.4.6" + gl-pointcloud2d "^1.0.3" + gl-scatter3d "^1.2.3" + gl-select-box "^1.0.4" gl-spikes2d "^1.0.2" - gl-streamtube3d "^1.4.0" - gl-surface3d "^1.4.6" + gl-streamtube3d "^1.4.1" + gl-surface3d "^1.5.2" gl-text "^1.1.8" glslify "^7.0.0" has-hover "^1.0.1" has-passive-events "^1.0.0" - is-mobile "^2.2.0" - mapbox-gl "1.3.2" + is-mobile "^2.2.1" + mapbox-gl "1.10.1" matrix-camera-controller "^2.1.3" mouse-change "^1.4.0" mouse-event-offset "^3.0.2" mouse-wheel "^1.2.0" - ndarray "^1.0.18" - ndarray-fill "^1.0.2" - ndarray-homography "^1.0.0" + ndarray "^1.0.19" + ndarray-linear-interpolate "^1.0.0" + parse-svg-path "^0.1.2" point-cluster "^3.1.8" polybooljs "^1.2.0" - regl "^1.3.11" + regl "^1.6.1" regl-error2d "^2.0.8" regl-line2d "^3.0.15" - regl-scatter2d "^3.1.7" + regl-scatter2d "^3.1.8" regl-splom "^1.0.8" right-now "^1.0.0" robust-orientation "^1.1.3" @@ -8298,7 +8122,8 @@ plotly.js@1.52.3: superscript-text "^1.0.0" svg-path-sdf "^1.1.3" tinycolor2 "^1.4.1" - topojson-client "^2.1.0" + to-px "1.0.1" + topojson-client "^3.1.0" webgl-context "^2.2.0" world-calendars "^1.0.3" @@ -8581,14 +8406,6 @@ quickselect@^2.0.0: resolved "https://registry.yarnpkg.com/quickselect/-/quickselect-2.0.0.tgz#f19680a486a5eefb581303e023e98faaf25dd018" integrity sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw== -quote-stream@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/quote-stream/-/quote-stream-0.0.0.tgz#cde29e94c409b16e19dc7098b89b6658f9721d3b" - integrity sha1-zeKelMQJsW4Z3HCYuJtmWPlyHTs= - dependencies: - minimist "0.0.8" - through2 "~0.4.1" - raf@^3.4.1: version "3.4.1" resolved "https://registry.yarnpkg.com/raf/-/raf-3.4.1.tgz#0742e99a4a6552f445d73e3ee0328af0ff1ede39" @@ -8695,7 +8512,7 @@ read-pkg@^3.0.0: normalize-package-data "^2.3.2" path-type "^3.0.0" -"readable-stream@>=1.0.33-1 <1.1.0-0", readable-stream@~1.0.17, readable-stream@~1.0.27-1: +"readable-stream@>=1.0.33-1 <1.1.0-0": version "1.0.34" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" integrity sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw= @@ -8727,16 +8544,6 @@ readable-stream@^3.1.1: string_decoder "^1.1.1" util-deprecate "^1.0.1" -readable-stream@~1.1.9: - version "1.1.14" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" - integrity sha1-fPTFTvZI44EwhMY23SB54WbAgdk= - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "0.0.1" - string_decoder "~0.10.x" - readdirp@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" @@ -8780,13 +8587,6 @@ rechoir@^0.8.0: dependencies: resolve "^1.20.0" -redeyed@~0.4.0: - version "0.4.4" - resolved "https://registry.yarnpkg.com/redeyed/-/redeyed-0.4.4.tgz#37e990a6f2b21b2a11c2e6a48fd4135698cba97f" - integrity sha1-N+mQpvKyGyoRwuakj9QTVpjLqX8= - dependencies: - esprima "~1.0.4" - reduce-simplicial-complex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/reduce-simplicial-complex/-/reduce-simplicial-complex-1.0.0.tgz#74d696a2f835f7a6dcd92065fd8c5181f2edf8bc" @@ -8917,7 +8717,7 @@ regl-line2d@^3.0.15: pick-by-alias "^1.2.0" to-float32 "^1.0.1" -regl-scatter2d@^3.1.2, regl-scatter2d@^3.1.7: +regl-scatter2d@^3.1.2: version "3.1.8" resolved "https://registry.yarnpkg.com/regl-scatter2d/-/regl-scatter2d-3.1.8.tgz#5fdf77f9cee7e71497d038dc1b654dc4340b6bfb" integrity sha512-Z9MYAUx9t8e3MsiHBbJAEstbIqauXxzcL9DmuKXQuRWfCMF2DBytYJtE0FpbQU6639wEMAJ54SEIlISWF8sQ2g== @@ -8939,6 +8739,27 @@ regl-scatter2d@^3.1.2, regl-scatter2d@^3.1.7: to-float32 "^1.0.1" update-diff "^1.1.0" +regl-scatter2d@^3.1.8: + version "3.2.9" + resolved "https://registry.yarnpkg.com/regl-scatter2d/-/regl-scatter2d-3.2.9.tgz#cd27b014c355e80d96fb2f273b563fd8f1b094f0" + integrity sha512-PNrXs+xaCClKpiB2b3HZ2j3qXQXhC5kcTh/Nfgx9rLO0EpEhab0BSQDqAsbdbpdf+pSHSJvbgitB7ulbGeQ+Fg== + dependencies: + "@plotly/point-cluster" "^3.1.9" + array-range "^1.0.1" + array-rearrange "^2.2.2" + clamp "^1.0.1" + color-id "^1.1.0" + color-normalize "^1.5.0" + color-rgba "^2.1.1" + flatten-vertex-data "^1.0.2" + glslify "^7.0.0" + is-iexplorer "^1.0.0" + object-assign "^4.1.1" + parse-rect "^1.2.0" + pick-by-alias "^1.2.0" + to-float32 "^1.1.0" + update-diff "^1.1.0" + regl-splom@^1.0.8: version "1.0.8" resolved "https://registry.yarnpkg.com/regl-splom/-/regl-splom-1.0.8.tgz#05f165a6f0b8afc6b6b97fafa775282d44387db3" @@ -8962,6 +8783,11 @@ regl@^1.3.11: resolved "https://registry.yarnpkg.com/regl/-/regl-1.4.2.tgz#6593c38868b569ea68410364048360367a21e813" integrity sha512-wc/kE6kGmGfQk3G9f1Pai4TZ0K1pWxkD1Jeaj6CxJwEiB1jwHgEpqD84G2t7F0DmNXfQh7IUnoG1opxoONJ7Xg== +regl@^1.6.1: + version "1.7.0" + resolved "https://registry.yarnpkg.com/regl/-/regl-1.7.0.tgz#0d185431044a356bf80e9b775b11b935ef2746d3" + integrity sha512-bEAtp/qrtKucxXSJkD4ebopFZYP0q1+3Vb2WECWv/T8yQEgKxDxJ7ztO285tAMaYZVR6mM1GgI6CCn8FROtL1w== + remove-trailing-separator@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" @@ -8972,7 +8798,7 @@ repeat-element@^1.1.2: resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9" integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ== -repeat-string@^1.3.0, repeat-string@^1.5.2, repeat-string@^1.6.1: +repeat-string@^1.3.0, repeat-string@^1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= @@ -9126,13 +8952,6 @@ reusify@^1.0.4: resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== -right-align@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" - integrity sha1-YTObci/mo1FWiSENJOFMlhSGE+8= - dependencies: - align-text "^0.1.1" - right-now@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/right-now/-/right-now-1.0.0.tgz#6e89609deebd7dcdaf8daecc9aea39cf585a0918" @@ -9407,20 +9226,11 @@ shallow-clone@^3.0.0: dependencies: kind-of "^6.0.2" -shallow-copy@0.0.1, shallow-copy@~0.0.1: +shallow-copy@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/shallow-copy/-/shallow-copy-0.0.1.tgz#415f42702d73d810330292cc5ee86eae1a11a170" integrity sha1-QV9CcC1z2BAzApLMXuhurhoRoXA= -sharkdown@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/sharkdown/-/sharkdown-0.1.1.tgz#64484bd0f08f347f8319e9ff947a670f6b48b1b2" - integrity sha512-exwooSpmo5s45lrexgz6Q0rFQM574wYIX3iDZ7RLLqOb7IAoQZu9nxlZODU972g19sR69OIpKP2cpHTzU+PHIg== - dependencies: - cardinal "~0.4.2" - minimist "0.0.5" - split "~0.2.10" - shebang-command@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" @@ -9616,14 +9426,7 @@ source-map-url@^0.4.0: resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== -"source-map@>= 0.1.2", source-map@~0.1.33: - version "0.1.43" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.43.tgz#c24bc146ca517c1471f5dacbe2571b2b7f9e3346" - integrity sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y= - dependencies: - amdefine ">=0.0.4" - -source-map@^0.5.0, source-map@^0.5.6, source-map@~0.5.1: +source-map@^0.5.0, source-map@^0.5.6: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= @@ -9679,13 +9482,6 @@ split-string@^3.0.1, split-string@^3.0.2: dependencies: extend-shallow "^3.0.0" -split@~0.2.10: - version "0.2.10" - resolved "https://registry.yarnpkg.com/split/-/split-0.2.10.tgz#67097c601d697ce1368f418f06cd201cf0521a57" - integrity sha1-Zwl8YB1pfOE2j0GPBs0gHPBSGlc= - dependencies: - through "2" - sprintf-js@^1.0.3: version "1.1.2" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.2.tgz#da1765262bf8c0f571749f2ad6c26300207ae673" @@ -9730,13 +9526,6 @@ static-eval@^2.0.0: dependencies: escodegen "^1.11.1" -static-eval@~0.2.0: - version "0.2.4" - resolved "https://registry.yarnpkg.com/static-eval/-/static-eval-0.2.4.tgz#b7d34d838937b969f9641ca07d48f8ede263ea7b" - integrity sha1-t9NNg4k3uWn5ZBygfUj47eJj6ns= - dependencies: - escodegen "~0.0.24" - static-extend@^0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" @@ -9745,23 +9534,6 @@ static-extend@^0.1.1: define-property "^0.2.5" object-copy "^0.1.0" -static-module@^1.0.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/static-module/-/static-module-1.5.0.tgz#27da9883c41a8cd09236f842f0c1ebc6edf63d86" - integrity sha1-J9qYg8QajNCSNvhC8MHrxu32PYY= - dependencies: - concat-stream "~1.6.0" - duplexer2 "~0.0.2" - escodegen "~1.3.2" - falafel "^2.1.0" - has "^1.0.0" - object-inspect "~0.4.0" - quote-stream "~0.0.0" - readable-stream "~1.0.27-1" - shallow-copy "~0.0.1" - static-eval "~0.2.0" - through2 "~0.4.1" - stealthy-require@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" @@ -9918,10 +9690,10 @@ style-loader@^1.1.4: loader-utils "^2.0.0" schema-utils "^2.6.5" -supercluster@^6.0.1: - version "6.0.2" - resolved "https://registry.yarnpkg.com/supercluster/-/supercluster-6.0.2.tgz#aa2eaae185ef97872f388c683ec29f6991721ee3" - integrity sha512-aa0v2HURjBTOpbcknilcfxGDuArM8khklKSmZ/T8ZXL0BuRwb5aRw95lz+2bmWpFvCXDX/+FzqHxmg0TIaJErw== +supercluster@^7.0.0: + version "7.1.5" + resolved "https://registry.yarnpkg.com/supercluster/-/supercluster-7.1.5.tgz#65a6ce4a037a972767740614c19051b64b8be5a3" + integrity sha512-EulshI3pGUM66o6ZdH3ReiFcvHpM3vAigyK+vcxdjpJyEbIIrtbmBdY23mGgnI24uXiGFvrGq9Gkum/8U7vJWg== dependencies: kdbush "^3.0.0" @@ -10119,15 +9891,7 @@ through2@^2.0.1: readable-stream "~2.3.6" xtend "~4.0.1" -through2@~0.4.1: - version "0.4.2" - resolved "https://registry.yarnpkg.com/through2/-/through2-0.4.2.tgz#dbf5866031151ec8352bb6c4db64a2292a840b9b" - integrity sha1-2/WGYDEVHsg1K7bE22SiKSqEC5s= - dependencies: - readable-stream "~1.0.17" - xtend "~2.1.1" - -through@2, through@~2.3.4, through@~2.3.8: +through@~2.3.4, through@~2.3.8: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= @@ -10137,7 +9901,7 @@ tinycolor2@^1.4.1: resolved "https://registry.yarnpkg.com/tinycolor2/-/tinycolor2-1.4.1.tgz#f4fad333447bc0b07d4dc8e9209d8f39a8ac77e8" integrity sha1-9PrTM0R7wLB9TcjpIJ2POaisd+g= -tinyqueue@^2.0.0: +tinyqueue@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/tinyqueue/-/tinyqueue-2.0.3.tgz#64d8492ebf39e7801d7bd34062e29b45b2035f08" integrity sha512-ppJZNDuKGgxzkHihX8v9v9G5f+18gzaTfrukGrq6ueg0lmH4nqVnA2IPG0AEH3jKEk2GRJCUhDoqpoiw3PHLBA== @@ -10166,6 +9930,11 @@ to-float32@^1.0.1: resolved "https://registry.yarnpkg.com/to-float32/-/to-float32-1.0.1.tgz#22d5921f38183164b9e7e9876158c0c16cb9753a" integrity sha512-nOy2WSwae3xhZbc+05xiCuU3ZPPmH0L4Rg4Q1qiOGFSuNSCTB9nVJaGgGl3ZScxAclX/L8hJuDHJGDAzbfuKCQ== +to-float32@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/to-float32/-/to-float32-1.1.0.tgz#39bd3b11eadccd490c08f5f9171da5127b6f3946" + integrity sha512-keDnAusn/vc+R3iEiSDw8TOF7gPiTLdK1ArvWtYbJQiVfmRg6i/CAvbKq3uIS0vWroAC7ZecN3DjQKw3aSklUg== + to-object-path@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" @@ -10173,6 +9942,13 @@ to-object-path@^0.3.0: dependencies: kind-of "^3.0.2" +to-px@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/to-px/-/to-px-1.0.1.tgz#5bbaed5e5d4f76445bcc903c293a2307dd324646" + integrity sha512-2y3LjBeIZYL19e5gczp14/uRWFDtDUErJPVN3VU9a7SJO+RjGRtYR47aMN2bZgGlxvW4ZcEz2ddUPVHXcMfuXw== + dependencies: + parse-unit "^1.0.1" + to-px@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/to-px/-/to-px-1.1.0.tgz#b6b269ed5db0cc9aefc15272a4c8bcb2ca1e99ca" @@ -10216,10 +9992,10 @@ to-uint8@^1.4.1: is-float-array "^1.0.0" to-array-buffer "^3.0.0" -topojson-client@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/topojson-client/-/topojson-client-2.1.0.tgz#ff9f7bf38991185e0b4284c2b06ae834f0eac6c8" - integrity sha1-/59784mRGF4LQoTCsGroNPDqxsg= +topojson-client@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/topojson-client/-/topojson-client-3.1.0.tgz#22e8b1ed08a2b922feeb4af6f53b6ef09a467b99" + integrity sha512-605uxS6bcYxGXw9qi62XyrV6Q3xwbndjachmNxu8HWTtVPxZfEJN9fd/SZS1Q54Sn2y0TMyMxFj/cJINqGHrKw== dependencies: commander "2" @@ -10396,7 +10172,7 @@ typed-array-length@^1.0.4: for-each "^0.3.3" is-typed-array "^1.1.9" -typedarray-pool@^1.0.0, typedarray-pool@^1.0.2, typedarray-pool@^1.1.0: +typedarray-pool@^1.0.0, typedarray-pool@^1.0.2, typedarray-pool@^1.1.0, typedarray-pool@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/typedarray-pool/-/typedarray-pool-1.2.0.tgz#e7e90720144ba02b9ed660438af6f3aacfe33ac3" integrity sha512-YTSQbzX43yvtpfRtIDAYygoYtgT+Rpjuxy9iOpczrjpXLgGoyG7aS5USJXV2d3nn8uHTeb9rXDvzS27zUg5KYQ== @@ -10424,21 +10200,6 @@ typescript@~4.0.2: resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.0.5.tgz#ae9dddfd1069f1cb5beb3ef3b2170dd7c1332389" integrity sha512-ywmr/VrTVCmNTJ6iV2LwIrfG1P+lv6luD8sUJs+2eI9NLGigaN+nUQc13iHqisq7bra9lnmUSYqbJvegraBOPQ== -uglify-js@^2.6.0: - version "2.8.29" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd" - integrity sha1-KcVzMUgFe7Th913zW3qcty5qWd0= - dependencies: - source-map "~0.5.1" - yargs "~3.10.0" - optionalDependencies: - uglify-to-browserify "~1.0.0" - -uglify-to-browserify@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" - integrity sha1-bgkk1r2mta/jSeOabWMoUKD4grc= - unbox-primitive@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" @@ -10862,11 +10623,6 @@ webpack@^5.88.2: watchpack "^2.4.0" webpack-sources "^3.2.3" -wgs84@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/wgs84/-/wgs84-0.0.0.tgz#34fdc555917b6e57cf2a282ed043710c049cdc76" - integrity sha1-NP3FVZF7blfPKigu0ENxDASc3HY= - whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3: version "1.0.5" resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" @@ -10943,11 +10699,6 @@ wildcard@^2.0.0: resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.1.tgz#5ab10d02487198954836b6349f74fff961e10f67" integrity sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ== -window-size@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" - integrity sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0= - word-wrap@^1.2.3: version "1.2.4" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.4.tgz#cb4b50ec9aca570abd1f52f33cd45b6c61739a9f" @@ -10958,11 +10709,6 @@ word-wrap@~1.2.3: resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== -wordwrap@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" - integrity sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8= - world-calendars@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/world-calendars/-/world-calendars-1.0.3.tgz#b25c5032ba24128ffc41d09faf4a5ec1b9c14335" @@ -11024,13 +10770,6 @@ xtend@^2.1.2: resolved "https://registry.yarnpkg.com/xtend/-/xtend-2.2.0.tgz#eef6b1f198c1c8deafad8b1765a04dad4a01c5a9" integrity sha1-7vax8ZjByN6vrYsXZaBNrUoBxak= -xtend@~2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-2.1.2.tgz#6efecc2a4dad8e6962c4901b337ce7ba87b5d28b" - integrity sha1-bv7MKk2tjmlixJAbM3znuoe10os= - dependencies: - object-keys "~0.4.0" - y18n@^4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" @@ -11095,16 +10834,6 @@ yargs@^15.0.2: y18n "^4.0.0" yargs-parser "^18.1.2" -yargs@~3.10.0: - version "3.10.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" - integrity sha1-9+572FfdfB0tOMDnTvvWgdFDH9E= - dependencies: - camelcase "^1.0.2" - cliui "^2.1.0" - decamelize "^1.0.0" - window-size "0.1.0" - zero-crossings@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/zero-crossings/-/zero-crossings-1.0.1.tgz#c562bd3113643f3443a245d12406b88b69b9a9ff" From 0a4d250268bd982af3281d0ada422404f1f066b8 Mon Sep 17 00:00:00 2001 From: Justin Clift Date: Tue, 25 Jul 2023 09:18:05 +1000 Subject: [PATCH 206/274] Bump request to 2.88.2 (#6273) --- package.json | 2 +- yarn.lock | 649 +++++++++++++++------------------------------------ 2 files changed, 190 insertions(+), 461 deletions(-) diff --git a/package.json b/package.json index be590ad83f..73ee7435a2 100644 --- a/package.json +++ b/package.json @@ -141,7 +141,7 @@ "raw-loader": "^0.5.1", "react-refresh": "^0.14.0", "react-test-renderer": "^16.5.2", - "request": "^2.88.0", + "request": "^2.88.2", "request-cookies": "^1.1.0", "style-loader": "^2.0.0", "typescript": "^4.1.2", diff --git a/yarn.lock b/yarn.lock index 9f418fcc1f..26c71f5c63 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1576,22 +1576,13 @@ resolved "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz#b2ac626d6cb9c8718ab459166d4bb405b8ffa78b" integrity sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A== -"@mapbox/geojson-area@0.2.2": - version "0.2.2" - resolved "https://registry.yarnpkg.com/@mapbox/geojson-area/-/geojson-area-0.2.2.tgz#18d7814aa36bf23fbbcc379f8e26a22927debf10" - integrity sha1-GNeBSqNr8j+7zDefjiaiKSfevxA= - dependencies: - wgs84 "0.0.0" - -"@mapbox/geojson-rewind@^0.4.0": - version "0.4.1" - resolved "https://registry.yarnpkg.com/@mapbox/geojson-rewind/-/geojson-rewind-0.4.1.tgz#357d79300adb7fec7c1f091512988bca6458f068" - integrity sha512-mxo2MEr7izA1uOXcDsw99Kgg6xW3P4H2j4n1lmldsgviIelpssvP+jQDivFKOHrOVJDpTTi5oZJvRcHtU9Uufw== +"@mapbox/geojson-rewind@^0.5.0": + version "0.5.2" + resolved "https://registry.yarnpkg.com/@mapbox/geojson-rewind/-/geojson-rewind-0.5.2.tgz#591a5d71a9cd1da1a0bf3420b3bea31b0fc7946a" + integrity sha512-tJaT+RbYGJYStt7wI3cq4Nl4SXxG8W7JDG5DMJu97V25RnbNg3QtQtf+KD+VLjNpWKYsRvXDNmNrBgEETr1ifA== dependencies: - "@mapbox/geojson-area" "0.2.2" - concat-stream "~1.6.0" - minimist "^1.2.5" - sharkdown "^0.1.0" + get-stream "^6.0.1" + minimist "^1.2.6" "@mapbox/geojson-types@^1.0.2": version "1.0.2" @@ -1603,7 +1594,7 @@ resolved "https://registry.yarnpkg.com/@mapbox/jsonlint-lines-primitives/-/jsonlint-lines-primitives-2.0.2.tgz#ce56e539f83552b58d10d672ea4d6fc9adc7b234" integrity sha1-zlblOfg1UrWNENZy6k1vya3HsjQ= -"@mapbox/mapbox-gl-supported@^1.4.0": +"@mapbox/mapbox-gl-supported@^1.5.0": version "1.5.0" resolved "https://registry.yarnpkg.com/@mapbox/mapbox-gl-supported/-/mapbox-gl-supported-1.5.0.tgz#f60b6a55a5d8e5ee908347d2ce4250b15103dc8e" integrity sha512-/PT1P6DNf7vjEEiPkVIRJkvibbqWtqnyGaBz3nfRdcxclNSnSdaLU5tfAgcD7I8Yt5i+L19s406YLl1koLnLbg== @@ -1613,10 +1604,10 @@ resolved "https://registry.yarnpkg.com/@mapbox/point-geometry/-/point-geometry-0.1.0.tgz#8a83f9335c7860effa2eeeca254332aa0aeed8f2" integrity sha1-ioP5M1x4YO/6Lu7KJUMyqgru2PI= -"@mapbox/tiny-sdf@^1.1.0": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@mapbox/tiny-sdf/-/tiny-sdf-1.1.1.tgz#16a20c470741bfe9191deb336f46e194da4a91ff" - integrity sha512-Ihn1nZcGIswJ5XGbgFAvVumOgWpvIjBX9jiRlIl46uQG9vJOF51ViBYHF95rEZupuyQbEmhLaDPLQlU7fUTsBg== +"@mapbox/tiny-sdf@^1.1.1": + version "1.2.5" + resolved "https://registry.yarnpkg.com/@mapbox/tiny-sdf/-/tiny-sdf-1.2.5.tgz#424c620a96442b20402552be70a7f62a8407cc59" + integrity sha512-cD8A/zJlm6fdJOk6DqPUV8mcpyJkRz2x2R+/fYcWDYG3oWbG7/L7Yl/WqQ1VZCjnL9OTIMAn6c+BC5Eru4sQEw== "@mapbox/unitbezier@^0.0.0": version "0.0.0" @@ -1829,6 +1820,22 @@ d3-collection "1" d3-shape "^1.2.0" +"@plotly/point-cluster@^3.1.9": + version "3.1.9" + resolved "https://registry.yarnpkg.com/@plotly/point-cluster/-/point-cluster-3.1.9.tgz#8ffec77fbf5041bf15401079e4fdf298220291c1" + integrity sha512-MwaI6g9scKf68Orpr1pHZ597pYx9uP8UEFXLPbsCmuw3a84obwz6pnMXGc90VhgDNeNiLEdlmuK7CPo+5PIxXw== + dependencies: + array-bounds "^1.0.1" + binary-search-bounds "^2.0.4" + clamp "^1.0.1" + defined "^1.0.0" + dtype "^2.0.0" + flatten-vertex-data "^1.0.2" + is-obj "^1.0.1" + math-log2 "^1.0.1" + parse-rect "^1.2.0" + pick-by-alias "^1.2.0" + "@pmmmwh/react-refresh-webpack-plugin@^0.5.10": version "0.5.10" resolved "https://registry.yarnpkg.com/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.10.tgz#2eba163b8e7dbabb4ce3609ab5e32ab63dda3ef8" @@ -1869,7 +1876,7 @@ lodash "^4.17.10" moment "^2.19.3" numeral "^2.0.6" - plotly.js "1.52.3" + plotly.js "1.54.4" react-pivottable "^0.9.0" react-sortable-hoc "^1.10.1" tinycolor2 "^1.4.1" @@ -2688,15 +2695,6 @@ ajv@^8.0.0, ajv@^8.9.0: require-from-string "^2.0.2" uri-js "^4.2.2" -align-text@^0.1.1, align-text@^0.1.3: - version "0.1.4" - resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" - integrity sha1-DNkKVhCT810KmSVsIrcGlDP60Rc= - dependencies: - kind-of "^3.0.2" - longest "^1.0.1" - repeat-string "^1.5.2" - almost-equal@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/almost-equal/-/almost-equal-1.1.0.tgz#f851c631138757994276aa2efbe8dfa3066cccdd" @@ -2718,11 +2716,6 @@ alpha-shape@^1.0.0: alpha-complex "^1.0.0" simplicial-complex-boundary "^1.0.0" -amdefine@>=0.0.4: - version "1.0.1" - resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" - integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU= - ansi-colors@^3.0.0: version "3.2.4" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" @@ -2784,11 +2777,6 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0: dependencies: color-convert "^2.0.1" -ansicolors@~0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/ansicolors/-/ansicolors-0.2.1.tgz#be089599097b74a5c9c4a84a0cdbcdb62bd87aef" - integrity sha1-vgiVmQl7dKXJxKhKDNvNtivYeu8= - ansicolors@~0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/ansicolors/-/ansicolors-0.3.2.tgz#665597de86a9ffe3aa9bfbe6cae5c6ea426b4979" @@ -4000,11 +3988,6 @@ camel-case@^4.1.1: pascal-case "^3.1.2" tslib "^2.0.3" -camelcase@^1.0.2: - version "1.2.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" - integrity sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk= - camelcase@^5.0.0, camelcase@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" @@ -4057,14 +4040,6 @@ cardinal@^2.1.1: ansicolors "~0.3.2" redeyed "~2.1.0" -cardinal@~0.4.2: - version "0.4.4" - resolved "https://registry.yarnpkg.com/cardinal/-/cardinal-0.4.4.tgz#ca5bb68a5b511b90fe93b9acea49bdee5c32bfe2" - integrity sha1-ylu2iltRG5D+k7ms6km97lwyv+I= - dependencies: - ansicolors "~0.2.1" - redeyed "~0.4.0" - caseless@~0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" @@ -4084,14 +4059,6 @@ cell-orientation@^1.0.1: resolved "https://registry.yarnpkg.com/cell-orientation/-/cell-orientation-1.0.1.tgz#b504ad96a66ad286d9edd985a2253d03b80d2850" integrity sha1-tQStlqZq0obZ7dmFoiU9A7gNKFA= -center-align@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" - integrity sha1-qg0yYptu6XIgBBHL1EYckHvCt60= - dependencies: - align-text "^0.1.3" - lazy-cache "^1.0.3" - chalk@^1.0.0, chalk@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" @@ -4386,15 +4353,6 @@ cli-width@^2.0.0: resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk= -cliui@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" - integrity sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE= - dependencies: - center-align "^0.1.1" - right-align "^0.1.1" - wordwrap "0.0.2" - cliui@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" @@ -5074,10 +5032,10 @@ css-what@^6.0.1: resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== -csscolorparser@~1.0.2: +csscolorparser@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/csscolorparser/-/csscolorparser-1.0.3.tgz#b34f391eea4da8f3e98231e2ccd8df9c041f171b" - integrity sha1-s085HupNqPPpgjHizNjfnAQfFxs= + integrity sha512-umPSgYwZkdFoUrH5hIq5kf0wPSXiro51nPw0j2K/c83KflkPSTBGMz6NJvMB+07VlL0y7VPo6QJcDjcgKTTm3w== cssesc@^0.1.0: version "0.1.0" @@ -5111,31 +5069,13 @@ cubic-hermite@^1.0.0: resolved "https://registry.yarnpkg.com/cubic-hermite/-/cubic-hermite-1.0.0.tgz#84e3b2f272b31454e8393b99bb6aed45168c14e5" integrity sha1-hOOy8nKzFFToOTuZu2rtRRaMFOU= -cwise-compiler@^1.0.0, cwise-compiler@^1.1.1, cwise-compiler@^1.1.2: +cwise-compiler@^1.0.0, cwise-compiler@^1.1.2: version "1.1.3" resolved "https://registry.yarnpkg.com/cwise-compiler/-/cwise-compiler-1.1.3.tgz#f4d667410e850d3a313a7d2db7b1e505bb034cc5" integrity sha1-9NZnQQ6FDToxOn0tt7HlBbsDTMU= dependencies: uniq "^1.0.0" -cwise-parser@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/cwise-parser/-/cwise-parser-1.0.3.tgz#8e493c17d54f97cb030a9e9854bc86c9dfb354fe" - integrity sha1-jkk8F9VPl8sDCp6YVLyGyd+zVP4= - dependencies: - esprima "^1.0.3" - uniq "^1.0.0" - -cwise@^1.0.10, cwise@^1.0.4: - version "1.0.10" - resolved "https://registry.yarnpkg.com/cwise/-/cwise-1.0.10.tgz#24eee6072ebdfd6b8c6f5dadb17090b649b12bef" - integrity sha1-JO7mBy69/WuMb12tsXCQtkmxK+8= - dependencies: - cwise-compiler "^1.1.1" - cwise-parser "^1.0.0" - static-module "^1.0.0" - uglify-js "^2.6.0" - cyclist@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.2.tgz#673b5f233bf34d8e602b949429f8171d9121bea3" @@ -5212,7 +5152,7 @@ d3-dispatch@1, d3-dispatch@^1.0.3: resolved "https://registry.yarnpkg.com/d3-dispatch/-/d3-dispatch-1.0.6.tgz#00d37bcee4dd8cd97729dd893a0ac29caaba5d58" integrity sha512-fVjoElzjhCEy+Hbn8KygnmMS7Or0a9sI2UzGwoB7cCtvI1XpVN9GpoYlnb3xt2YV66oXYb1fLJ8GMvP4hdU1RA== -d3-force@^1.0.6: +d3-force@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/d3-force/-/d3-force-1.2.1.tgz#fd29a5d1ff181c9e7f0669e4bd72bdb0e914ec0b" integrity sha512-HHvehyaiUlVo5CxBJ0yF/xny4xoaxFxDnBXNvNcfW9adORGZfyNF1dj6DGLKyk4Yh3brP/1h3rnDzdIAwL08zg== @@ -5256,7 +5196,7 @@ d3-timer@1: resolved "https://registry.yarnpkg.com/d3-timer/-/d3-timer-1.0.10.tgz#dfe76b8a91748831b13b6d9c793ffbd508dd9de5" integrity sha512-B1JDm0XDaQC+uvo4DT79H0XmBskgS3l6Ve+1SBCfxgmtIb1AVrPIoqd+nPSv+loMX8szQ0sVUhGngL7D5QPiXw== -d3@^3.5.12, d3@^3.5.17: +d3@^3.5.17: version "3.5.17" resolved "https://registry.yarnpkg.com/d3/-/d3-3.5.17.tgz#bc46748004378b21a360c9fc7cf5231790762fb8" integrity sha1-vEZ0gAQ3iyGjYMn8fPUjF5B2L7g= @@ -5347,7 +5287,7 @@ debug@^4.1.0, debug@^4.1.1: dependencies: ms "2.1.2" -decamelize@^1.0.0, decamelize@^1.2.0: +decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= @@ -5735,13 +5675,6 @@ duplexer2@^0.1.2, duplexer2@~0.1.0, duplexer2@~0.1.2: dependencies: readable-stream "^2.0.2" -duplexer2@~0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.0.2.tgz#c614dcf67e2fb14995a91711e5a617e8a60a31db" - integrity sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds= - dependencies: - readable-stream "~1.1.9" - duplexer@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" @@ -5762,6 +5695,11 @@ earcut@^2.1.5: resolved "https://registry.yarnpkg.com/earcut/-/earcut-2.2.2.tgz#41b0bc35f63e0fe80da7cddff28511e7e2e80d11" integrity sha512-eZoZPPJcUHnfRZ0PjLvx2qBordSiO8ofC3vt+qACLM95u+4DovnbYNpQtJh0DNsWj8RnxrQytD4WA8gj5cRIaQ== +earcut@^2.2.2: + version "2.2.4" + resolved "https://registry.yarnpkg.com/earcut/-/earcut-2.2.4.tgz#6d02fd4d68160c114825d06890a92ecaae60343a" + integrity sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ== + ecc-jsbn@~0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" @@ -6127,10 +6065,10 @@ es6-promise-pool@^2.5.0: resolved "https://registry.yarnpkg.com/es6-promise-pool/-/es6-promise-pool-2.5.0.tgz#147c612b36b47f105027f9d2bf54a598a99d9ccb" integrity sha1-FHxhKza0fxBQJ/nSv1SlmKmdnMs= -es6-promise@^3.0.2: - version "3.3.1" - resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.3.1.tgz#a08cdde84ccdbf34d027a1451bc91d4bcd28a613" - integrity sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM= +es6-promise@^4.2.8: + version "4.2.8" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" + integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== es6-symbol@^3.1.1, es6-symbol@~3.1.3: version "3.1.3" @@ -6204,27 +6142,6 @@ escodegen@^1.9.1: optionalDependencies: source-map "~0.6.1" -escodegen@~0.0.24: - version "0.0.28" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-0.0.28.tgz#0e4ff1715f328775d6cab51ac44a406cd7abffd3" - integrity sha1-Dk/xcV8yh3XWyrUaxEpAbNer/9M= - dependencies: - esprima "~1.0.2" - estraverse "~1.3.0" - optionalDependencies: - source-map ">= 0.1.2" - -escodegen@~1.3.2: - version "1.3.3" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.3.3.tgz#f024016f5a88e046fd12005055e939802e6c5f23" - integrity sha1-8CQBb1qI4Eb9EgBQVek5gC5sXyM= - dependencies: - esprima "~1.1.1" - estraverse "~1.5.0" - esutils "~1.0.0" - optionalDependencies: - source-map "~0.1.33" - eslint-config-prettier@^6.7.0: version "6.7.0" resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.7.0.tgz#9a876952e12df2b284adbd3440994bf1f39dfbb9" @@ -6448,11 +6365,6 @@ espree@^6.1.2: acorn-jsx "^5.1.0" eslint-visitor-keys "^1.1.0" -esprima@^1.0.3: - version "1.2.5" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-1.2.5.tgz#0993502feaf668138325756f30f9a51feeec11e9" - integrity sha1-CZNQL+r2aBODJXVvMPmlH+7sEek= - esprima@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" @@ -6463,16 +6375,6 @@ esprima@^4.0.0, esprima@^4.0.1, esprima@~4.0.0: resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -esprima@~1.0.2, esprima@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-1.0.4.tgz#9f557e08fc3b4d26ece9dd34f8fbf476b62585ad" - integrity sha1-n1V+CPw7TSbs6d00+Pv0drYlha0= - -esprima@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-1.1.1.tgz#5b6f1547f4d102e670e140c509be6771d6aeb549" - integrity sha1-W28VR/TRAuZw4UDFCb5ncdautUk= - esquery@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.1.tgz#406c51658b1f5991a5f9b62b1dc25b00e3e5c708" @@ -6497,16 +6399,6 @@ estraverse@^4.2.0: resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== -estraverse@~1.3.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.3.2.tgz#37c2b893ef13d723f276d878d60d8535152a6c42" - integrity sha1-N8K4k+8T1yPydth41g2FNRUqbEI= - -estraverse@~1.5.0: - version "1.5.1" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.5.1.tgz#867a3e8e58a9f84618afb6c2ddbcd916b7cbaf71" - integrity sha1-hno+jlip+EYYr7bC3bzZFrfLr3E= - esutils@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" @@ -6517,11 +6409,6 @@ esutils@^2.0.2: resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== -esutils@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-1.0.0.tgz#8151d358e20c8acc7fb745e7472c0025fe496570" - integrity sha1-gVHTWOIMisx/t0XnRywAJf5JZXA= - etag@~1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" @@ -6852,7 +6739,7 @@ fast-glob@^3.0.3, fast-glob@^3.1.1: micromatch "^4.0.2" picomatch "^2.2.1" -fast-isnumeric@^1.1.3: +fast-isnumeric@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/fast-isnumeric/-/fast-isnumeric-1.1.4.tgz#e165786ff471c439e9ace2b8c8e66cceb47e2ea4" integrity sha512-1mM8qOr2LYz8zGaUdmiqRDiuue00Dxjgcb1NQR7TnhLVh6sQyngP9xvLo7Sl7LZpP/sk5eb+bcyWXw530NTBZw== @@ -7457,7 +7344,7 @@ get-stream@^5.0.0: dependencies: pump "^3.0.0" -get-stream@^6.0.0: +get-stream@^6.0.0, get-stream@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== @@ -7517,7 +7404,7 @@ gl-buffer@^2.1.1, gl-buffer@^2.1.2: ndarray-ops "^1.1.0" typedarray-pool "^1.0.0" -gl-cone3d@^1.5.1, gl-cone3d@^1.5.2: +gl-cone3d@^1.5.2: version "1.5.2" resolved "https://registry.yarnpkg.com/gl-cone3d/-/gl-cone3d-1.5.2.tgz#66af5c33b7d5174034dfa3654a88e995998d92bc" integrity sha512-1JNeHH4sUtUmDA4ZK7Om8/kShwb8IZVAsnxaaB7IPRJsNGciLj1sTpODrJGeMl41RNkex5kXD2SQFrzyEAR2Rw== @@ -7540,7 +7427,7 @@ gl-constants@^1.0.0: resolved "https://registry.yarnpkg.com/gl-constants/-/gl-constants-1.0.0.tgz#597a504e364750ff50253aa35f8dea7af4a5d233" integrity sha1-WXpQTjZHUP9QJTqjX43qevSl0jM= -gl-contour2d@^1.1.6: +gl-contour2d@^1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/gl-contour2d/-/gl-contour2d-1.1.7.tgz#ca330cf8449673a9ca0b3f6726c83f8d35c7a50c" integrity sha512-GdebvJ9DtT3pJDpoE+eU2q+Wo9S3MijPpPz5arZbhK85w2bARmpFpVfPaDlZqWkB644W3BlH8TVyvAo1KE4Bhw== @@ -7555,7 +7442,7 @@ gl-contour2d@^1.1.6: ndarray "^1.0.18" surface-nets "^1.0.2" -gl-error3d@^1.0.15: +gl-error3d@^1.0.16: version "1.0.16" resolved "https://registry.yarnpkg.com/gl-error3d/-/gl-error3d-1.0.16.tgz#88a94952f5303d9cf5cb86806789a360777c5446" integrity sha512-TGJewnKSp7ZnqGgG3XCF9ldrDbxZrO+OWlx6oIet4OdOM//n8xJ5isArnIV/sdPJnFbhfoLxWrW9f5fxHFRQ1A== @@ -7583,22 +7470,22 @@ gl-format-compiler-error@^1.0.2: glsl-shader-name "^1.0.0" sprintf-js "^1.0.3" -gl-heatmap2d@^1.0.5: - version "1.0.6" - resolved "https://registry.yarnpkg.com/gl-heatmap2d/-/gl-heatmap2d-1.0.6.tgz#d0a2d9e8f5975534224b3b2be2ffe683f6b7e961" - integrity sha512-+agzSv4R5vsaH+AGYVz5RVzBK10amqAa+Bwj205F13JjNSGS91M1L9Yb8zssCv2FIjpP+1Mp73cFBYrQFfS1Jg== +gl-heatmap2d@^1.0.6: + version "1.1.1" + resolved "https://registry.yarnpkg.com/gl-heatmap2d/-/gl-heatmap2d-1.1.1.tgz#dbbb2c288bfe277002fa50985155b0403d87640f" + integrity sha512-6Vo1fPIB1vQFWBA/MR6JAA16XuQuhwvZRbSjYEq++m4QV33iqjGS2HcVIRfJGX+fomd5eiz6bwkVZcKm69zQPw== dependencies: binary-search-bounds "^2.0.4" gl-buffer "^2.1.2" gl-shader "^4.2.1" glslify "^7.0.0" iota-array "^1.0.0" - typedarray-pool "^1.1.0" + typedarray-pool "^1.2.0" -gl-line3d@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/gl-line3d/-/gl-line3d-1.2.0.tgz#038d339b8986e602af90dd9663f83678db64247c" - integrity sha512-du9GDF87DMfllND2pBjySyHhFaza9upw4t2GMoXn11/I38atO6+saiznuhKmfxuDnyxGdmmZF6/HPauk0owKDA== +gl-line3d@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/gl-line3d/-/gl-line3d-1.2.1.tgz#632fc5b931a84a315995322b271aaf497e292609" + integrity sha512-eeb0+RI2ZBRqMYJK85SgsRiJK7c4aiOjcnirxv0830A3jmOc99snY3AbPcV8KvKmW0Yaf3KA4e+qNCbHiTOTnA== dependencies: binary-search-bounds "^2.0.4" gl-buffer "^2.1.2" @@ -7609,36 +7496,22 @@ gl-line3d@1.2.0: glslify "^7.0.0" ndarray "^1.0.18" -gl-mat2@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/gl-mat2/-/gl-mat2-1.0.1.tgz#142505730a5c2fe1e9f25d9ece3d0d6cc2710a30" - integrity sha1-FCUFcwpcL+Hp8l2ezj0NbMJxCjA= - gl-mat3@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/gl-mat3/-/gl-mat3-1.0.0.tgz#89633219ca429379a16b9185d95d41713453b912" integrity sha1-iWMyGcpCk3mha5GF2V1BcTRTuRI= -gl-mat4@^1.0.0, gl-mat4@^1.0.1, gl-mat4@^1.0.2, gl-mat4@^1.0.3, gl-mat4@^1.1.2, gl-mat4@^1.2.0: +gl-mat4@^1.0.1, gl-mat4@^1.0.2, gl-mat4@^1.0.3, gl-mat4@^1.1.2, gl-mat4@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/gl-mat4/-/gl-mat4-1.2.0.tgz#49d8a7636b70aa00819216635f4a3fd3f4669b26" integrity sha512-sT5C0pwB1/e9G9AvAoLsoaJtbMGjfd/jfxo8jMCKqYYEnjZuFvqV5rehqar0538EmssjdDeiEWnKyBSTw7quoA== -gl-matrix-invert@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/gl-matrix-invert/-/gl-matrix-invert-1.0.0.tgz#a36d7bde3654c4590a127ee7c68f6e13fea8c63d" - integrity sha1-o2173jZUxFkKEn7nxo9uE/6oxj0= - dependencies: - gl-mat2 "^1.0.0" - gl-mat3 "^1.0.0" - gl-mat4 "^1.0.0" - -gl-matrix@^3.0.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/gl-matrix/-/gl-matrix-3.3.0.tgz#232eef60b1c8b30a28cbbe75b2caf6c48fd6358b" - integrity sha512-COb7LDz+SXaHtl/h4LeaFcNdJdAQSDeVqjiIihSXNrkWObZLhDI4hIkZC11Aeqp7bcE72clzB0BnDXr2SmslRA== +gl-matrix@^3.2.1: + version "3.4.3" + resolved "https://registry.yarnpkg.com/gl-matrix/-/gl-matrix-3.4.3.tgz#fc1191e8320009fd4d20e9339595c6041ddc22c9" + integrity sha512-wcCp8vu8FT22BnvKVPjXa/ICBWRq/zjFfdofZy1WSpQZpphblv12/bOQLBC1rMM7SGOFS9ltVmKOHil5+Ml7gA== -gl-mesh3d@^2.3.0: +gl-mesh3d@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/gl-mesh3d/-/gl-mesh3d-2.3.1.tgz#087a93c5431df923570ca51cfc691bab0d21a6b8" integrity sha512-pXECamyGgu4/9HeAQSE5OEUuLBGS1aq9V4BCsTcxsND4fNLaajEkYKUz/WY2QSYElqKdsMBVsldGiKRKwlybqA== @@ -7659,30 +7532,30 @@ gl-mesh3d@^2.3.0: simplicial-complex-contour "^1.0.2" typedarray-pool "^1.1.0" -gl-plot2d@^1.4.3: - version "1.4.4" - resolved "https://registry.yarnpkg.com/gl-plot2d/-/gl-plot2d-1.4.4.tgz#2dbe40776051436baf0947f828ee2c8c303d2bdb" - integrity sha512-0UhKiiqeampLtydv6NMNrKEilc0Ui5oaJtvHLbLZ5u/1ttT1XjOY5Yk8LzfqozA/No4a9omxjSKnH+tvSn+rQQ== +gl-plot2d@^1.4.5: + version "1.4.5" + resolved "https://registry.yarnpkg.com/gl-plot2d/-/gl-plot2d-1.4.5.tgz#6412b8b3f8df3e7d89c5955daac7059e04d657d4" + integrity sha512-6GmCN10SWtV+qHFQ1gjdnVubeHFVsm6P4zmo0HrPIl9TcdePCUHDlBKWAuE6XtFhiMKMj7R8rApOX8O8uXUYog== dependencies: binary-search-bounds "^2.0.4" gl-buffer "^2.1.2" - gl-select-static "^2.0.6" + gl-select-static "^2.0.7" gl-shader "^4.2.1" glsl-inverse "^1.0.0" glslify "^7.0.0" text-cache "^4.2.2" -gl-plot3d@^2.4.4: - version "2.4.5" - resolved "https://registry.yarnpkg.com/gl-plot3d/-/gl-plot3d-2.4.5.tgz#962e99c3e55862e0ad77e99114566eadb28bf224" - integrity sha512-cKAqMXFRHTCFxH8r1/ACdk5hyfnA9djfiAM8zVQrqu0qLEttUu0i1fq0pr+d5m0HPuNcK8wEc4F3VjL2hrDcGQ== +gl-plot3d@^2.4.6: + version "2.4.7" + resolved "https://registry.yarnpkg.com/gl-plot3d/-/gl-plot3d-2.4.7.tgz#b66e18c5affdd664f42c884acf7b82c60b41ee78" + integrity sha512-mLDVWrl4Dj0O0druWyHUK5l7cBQrRIJRn2oROEgrRuOgbbrLAzsREKefwMO0bA0YqkiZMFMnV5VvPA9j57X5Xg== dependencies: "3d-view" "^2.0.0" a-big-triangle "^1.0.3" gl-axes3d "^1.5.3" gl-fbo "^2.0.5" gl-mat4 "^1.2.0" - gl-select-static "^2.0.6" + gl-select-static "^2.0.7" gl-shader "^4.2.1" gl-spikes3d "^1.0.10" glslify "^7.0.0" @@ -7691,10 +7564,10 @@ gl-plot3d@^2.4.4: mouse-change "^1.4.0" mouse-event-offset "^3.0.2" mouse-wheel "^1.2.0" - ndarray "^1.0.18" + ndarray "^1.0.19" right-now "^1.0.0" -gl-pointcloud2d@^1.0.2: +gl-pointcloud2d@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/gl-pointcloud2d/-/gl-pointcloud2d-1.0.3.tgz#f37e215f21ccb2e17f0604664e99fc3d6a4e611d" integrity sha512-OS2e1irvJXVRpg/GziXj10xrFJm9kkRfFoB6BLUvkjCQV7ZRNNcs2CD+YSK1r0gvMwTg2T3lfLM3UPwNtz+4Xw== @@ -7713,7 +7586,7 @@ gl-quat@^1.0.0: gl-vec3 "^1.0.3" gl-vec4 "^1.0.0" -gl-scatter3d@^1.2.2: +gl-scatter3d@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/gl-scatter3d/-/gl-scatter3d-1.2.3.tgz#83d63700ec2fe4e95b3d1cd613e86de9a6b5f603" integrity sha512-nXqPlT1w5Qt51dTksj+DUqrZqwWAEWg0PocsKcoDnVNv0X8sGA+LBZ0Y+zrA+KNXUL0PPCX9WR9cF2uJAZl1Sw== @@ -7728,7 +7601,7 @@ gl-scatter3d@^1.2.2: typedarray-pool "^1.1.0" vectorize-text "^3.2.1" -gl-select-box@^1.0.3: +gl-select-box@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/gl-select-box/-/gl-select-box-1.0.4.tgz#47c11caa2b84f81e8bbfde08c6e39eeebb53d3d8" integrity sha512-mKsCnglraSKyBbQiGq0Ila0WF+m6Tr+EWT2yfaMn/Sh9aMHq5Wt0F/l6Cf/Ed3CdERq5jHWAY5yxLviZteYu2w== @@ -7737,13 +7610,12 @@ gl-select-box@^1.0.3: gl-shader "^4.2.1" glslify "^7.0.0" -gl-select-static@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/gl-select-static/-/gl-select-static-2.0.6.tgz#43194a348613a693d4097e5ab9ceb0685003f036" - integrity sha512-p4DmBG1DMo/47/fV3oqPcU6uTqHy0eI1vATH1fm8OVDqlzWnLv3786tdEunZWG6Br7DUdH6NgWhuy4gAlt+TAQ== +gl-select-static@^2.0.7: + version "2.0.7" + resolved "https://registry.yarnpkg.com/gl-select-static/-/gl-select-static-2.0.7.tgz#ce7eb05ae0139009c15e2d2d0d731600b3dae5c0" + integrity sha512-OvpYprd+ngl3liEatBTdXhSyNBjwvjMSvV2rN0KHpTU+BTi4viEETXNZXFgGXY37qARs0L28ybk3UQEW6C5Nnw== dependencies: bit-twiddle "^1.0.2" - cwise "^1.0.10" gl-fbo "^2.0.5" ndarray "^1.0.18" typedarray-pool "^1.1.0" @@ -7778,7 +7650,7 @@ gl-state@^1.0.0: dependencies: uniq "^1.0.0" -gl-streamtube3d@^1.4.0: +gl-streamtube3d@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/gl-streamtube3d/-/gl-streamtube3d-1.4.1.tgz#bd2b725e00aa96989ce34b06ebf66a76f93e35ae" integrity sha512-rH02v00kgwgdpkXVo7KsSoPp38bIAYR9TE1iONjcQ4cQAlDhrGRauqT/P5sUaOIzs17A2DxWGcXM+EpNQs9pUA== @@ -7791,10 +7663,10 @@ gl-streamtube3d@^1.4.0: glsl-specular-cook-torrance "^2.0.1" glslify "^7.0.0" -gl-surface3d@^1.4.6: - version "1.5.2" - resolved "https://registry.yarnpkg.com/gl-surface3d/-/gl-surface3d-1.5.2.tgz#a283b98d3473fca4e8552f0f6ac40a6f0dc88b00" - integrity sha512-rWSQwEQDkB0T5CDEDFJwJc4VgwwJaAyFRSJ92NJlrTSwDlsEsWdzG9+APx6FWJMwkOpIoZGWqv+csswK2kMMLQ== +gl-surface3d@^1.5.2: + version "1.6.0" + resolved "https://registry.yarnpkg.com/gl-surface3d/-/gl-surface3d-1.6.0.tgz#5fc915759a91e9962dcfbf3982296c462a032526" + integrity sha512-x15+u4712ysnB85G55RLJEml6mOB4VaDn0VTlXCc9JcjRl5Es10Tk7lhGGyiPtkCfHwvhnkxzYA1/rHHYN7Y0A== dependencies: binary-search-bounds "^2.0.4" bit-twiddle "^1.0.2" @@ -9177,7 +9049,7 @@ is-installed-globally@^0.3.2: global-dirs "^2.0.1" is-path-inside "^3.0.1" -is-mobile@^2.2.0, is-mobile@^2.2.1: +is-mobile@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/is-mobile/-/is-mobile-2.2.1.tgz#10f2320012c410cc285feecb13406bd586f1b2f8" integrity sha512-6zELsfVFr326eq2CI53yvqq6YBanOxKBybwDT+MbMS2laBnK6Ez8m5XHSuTQQbnKRfpDzCod1CMWW5q3wZYMvA== @@ -10137,11 +10009,6 @@ lazy-ass@^1.6.0: resolved "https://registry.yarnpkg.com/lazy-ass/-/lazy-ass-1.6.0.tgz#7999655e8646c17f089fdd187d150d3324d54513" integrity sha1-eZllXoZGwX8In90YfRUNMyTVRRM= -lazy-cache@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" - integrity sha1-odePw6UEdMuAhF07O24dpJpEbo4= - leaflet-fullscreen@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/leaflet-fullscreen/-/leaflet-fullscreen-1.0.2.tgz#09c61c4bac45f63b2ee126afd87e5cd97650fc1b" @@ -10454,11 +10321,6 @@ logform@^2.2.0: ms "^2.1.1" triple-beam "^1.3.0" -longest@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" - integrity sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc= - loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3.0, loose-envify@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" @@ -10547,33 +10409,33 @@ map-visit@^1.0.0: dependencies: object-visit "^1.0.0" -mapbox-gl@1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/mapbox-gl/-/mapbox-gl-1.3.2.tgz#6e9197485de7c0c71b1fd30e5e8e7e3824bc35dd" - integrity sha512-6Ro7GbTMWxcbc836m6rbBNkesgTncbE1yXWeuHlr89esSqaItKr0+ntOu8rZie3fv+GtitkbODysXzIGCA7G+w== +mapbox-gl@1.10.1: + version "1.10.1" + resolved "https://registry.yarnpkg.com/mapbox-gl/-/mapbox-gl-1.10.1.tgz#7dbd53bdf2f78e45e125c1115e94dea286ef663c" + integrity sha512-0aHt+lFUpYfvh0kMIqXqNXqoYMuhuAsMlw87TbhWrw78Tx2zfuPI0Lx31/YPUgJ+Ire0tzQ4JnuBL7acDNXmMg== dependencies: - "@mapbox/geojson-rewind" "^0.4.0" + "@mapbox/geojson-rewind" "^0.5.0" "@mapbox/geojson-types" "^1.0.2" "@mapbox/jsonlint-lines-primitives" "^2.0.2" - "@mapbox/mapbox-gl-supported" "^1.4.0" + "@mapbox/mapbox-gl-supported" "^1.5.0" "@mapbox/point-geometry" "^0.1.0" - "@mapbox/tiny-sdf" "^1.1.0" + "@mapbox/tiny-sdf" "^1.1.1" "@mapbox/unitbezier" "^0.0.0" "@mapbox/vector-tile" "^1.3.1" "@mapbox/whoots-js" "^3.1.0" - csscolorparser "~1.0.2" - earcut "^2.1.5" + csscolorparser "~1.0.3" + earcut "^2.2.2" geojson-vt "^3.2.1" - gl-matrix "^3.0.0" + gl-matrix "^3.2.1" grid-index "^1.1.0" - minimist "0.0.8" + minimist "^1.2.5" murmurhash-js "^1.0.0" - pbf "^3.0.5" + pbf "^3.2.1" potpack "^1.0.1" quickselect "^2.0.0" rw "^1.3.3" - supercluster "^6.0.1" - tinyqueue "^2.0.0" + supercluster "^7.0.0" + tinyqueue "^2.0.3" vt-pbf "^3.1.1" marching-simplex-table@^1.0.0: @@ -10840,11 +10702,6 @@ minimatch@^3.0.4, minimatch@^3.1.1: dependencies: brace-expansion "^1.1.7" -minimist@0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.5.tgz#d7aa327bcecf518f9106ac6b8f003fa3bcea8566" - integrity sha1-16oye87PUY+RBqxrjwA/o7zqhWY= - minimist@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" @@ -11075,13 +10932,6 @@ ndarray-extract-contour@^1.0.0: dependencies: typedarray-pool "^1.0.0" -ndarray-fill@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/ndarray-fill/-/ndarray-fill-1.0.2.tgz#a30a60f7188e0c9582fcdd58896acdcb522a1ed6" - integrity sha1-owpg9xiODJWC/N1YiWrNy1IqHtY= - dependencies: - cwise "^1.0.10" - ndarray-gradient@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/ndarray-gradient/-/ndarray-gradient-1.0.0.tgz#b7491a515c6a649f19a62324fff6f27fc8c25393" @@ -11090,14 +10940,6 @@ ndarray-gradient@^1.0.0: cwise-compiler "^1.0.0" dup "^1.0.0" -ndarray-homography@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/ndarray-homography/-/ndarray-homography-1.0.0.tgz#c35516ea86bc2862b4e804a236a2707309fe296b" - integrity sha1-w1UW6oa8KGK06ASiNqJwcwn+KWs= - dependencies: - gl-matrix-invert "^1.0.0" - ndarray-warp "^1.0.0" - ndarray-linear-interpolate@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/ndarray-linear-interpolate/-/ndarray-linear-interpolate-1.0.0.tgz#78bc92b85b9abc15b6e67ee65828f9e2137ae72b" @@ -11134,15 +10976,7 @@ ndarray-sort@^1.0.0: dependencies: typedarray-pool "^1.0.0" -ndarray-warp@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ndarray-warp/-/ndarray-warp-1.0.1.tgz#a8a125aaabba0bebf93bd6ca83e6abd6822a34e0" - integrity sha1-qKElqqu6C+v5O9bKg+ar1oIqNOA= - dependencies: - cwise "^1.0.4" - ndarray-linear-interpolate "^1.0.0" - -ndarray@^1.0.11, ndarray@^1.0.13, ndarray@^1.0.14, ndarray@^1.0.15, ndarray@^1.0.18: +ndarray@^1.0.11, ndarray@^1.0.13, ndarray@^1.0.14, ndarray@^1.0.15, ndarray@^1.0.18, ndarray@^1.0.19: version "1.0.19" resolved "https://registry.yarnpkg.com/ndarray/-/ndarray-1.0.19.tgz#6785b5f5dfa58b83e31ae5b2a058cfd1ab3f694e" integrity sha512-B4JHA4vdyZU30ELBw3g7/p9bZupyew5a7tX1Y/gGeF2hafrPaQZhgrGQfsvgfYbgdFZjYwuEcnaobeM/WMW+HQ== @@ -11483,11 +11317,6 @@ object-inspect@^1.7.0, object-inspect@~1.7.0: resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67" integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw== -object-inspect@~0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-0.4.0.tgz#f5157c116c1455b243b06ee97703392c5ad89fec" - integrity sha1-9RV8EWwUVbJDsG7pdwM5LFrYn+w= - object-is@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.0.1.tgz#0aa60ec9989a0b3ed795cf4d06f62cf1ad6539b6" @@ -11503,11 +11332,6 @@ object-keys@^1.0.12, object-keys@^1.1.1: resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== -object-keys@~0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-0.4.0.tgz#28a6aae7428dd2c3a92f3d95f21335dd204e0336" - integrity sha1-KKaq50KN0sOpLz2V8hM13SBOAzY= - object-visit@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" @@ -12065,7 +11889,7 @@ path-type@^4.0.0: resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== -pbf@^3.0.5: +pbf@^3.0.5, pbf@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/pbf/-/pbf-3.2.1.tgz#b4c1b9e72af966cd82c6531691115cc0409ffe2a" integrity sha512-ClrV7pNOn7rtmoQVF4TS1vyU0WhYRnP92fzbfF75jAIwpnzdJXf8iTd4CMEqO4yUenH6NDqLiwjqlh6QgZzgLQ== @@ -12225,10 +12049,10 @@ planar-graph-to-polyline@^1.0.0: two-product "^1.0.0" uniq "^1.0.0" -plotly.js@1.52.3: - version "1.52.3" - resolved "https://registry.yarnpkg.com/plotly.js/-/plotly.js-1.52.3.tgz#2ae534811447d053765d9c2a8829878dc1f3c489" - integrity sha512-7szNqbVuhqn4ZgaTpJ9h4+9PzjoXJnSdzjnY5QwHddp/j0xu5kpHCGvkg+WmeF3brK3y8qwEHF/MIFBBa7i0ng== +plotly.js@1.54.4: + version "1.54.4" + resolved "https://registry.yarnpkg.com/plotly.js/-/plotly.js-1.54.4.tgz#b197034eacb784b955bfae3ab3824c04a42bc84f" + integrity sha512-mklqX2dDTIHWmdH7mKFLFJeLz/bMy28JgohAxcXdRYH2hskLQ2wJ14GuOLd5nESpdjw/Edk7ZL6dwL0qTN3mwQ== dependencies: "@plotly/d3-sankey" "0.7.2" "@plotly/d3-sankey-circular" "0.33.1" @@ -12241,47 +12065,47 @@ plotly.js@1.52.3: color-rgba "^2.1.1" convex-hull "^1.0.3" country-regex "^1.1.0" - d3 "^3.5.12" - d3-force "^1.0.6" + d3 "^3.5.17" + d3-force "^1.2.1" d3-hierarchy "^1.1.9" d3-interpolate "^1.4.0" delaunay-triangulate "^1.1.6" - es6-promise "^3.0.2" - fast-isnumeric "^1.1.3" - gl-cone3d "^1.5.1" - gl-contour2d "^1.1.6" - gl-error3d "^1.0.15" - gl-heatmap2d "^1.0.5" - gl-line3d "1.2.0" + es6-promise "^4.2.8" + fast-isnumeric "^1.1.4" + gl-cone3d "^1.5.2" + gl-contour2d "^1.1.7" + gl-error3d "^1.0.16" + gl-heatmap2d "^1.0.6" + gl-line3d "1.2.1" gl-mat4 "^1.2.0" - gl-mesh3d "^2.3.0" - gl-plot2d "^1.4.3" - gl-plot3d "^2.4.4" - gl-pointcloud2d "^1.0.2" - gl-scatter3d "^1.2.2" - gl-select-box "^1.0.3" + gl-mesh3d "^2.3.1" + gl-plot2d "^1.4.5" + gl-plot3d "^2.4.6" + gl-pointcloud2d "^1.0.3" + gl-scatter3d "^1.2.3" + gl-select-box "^1.0.4" gl-spikes2d "^1.0.2" - gl-streamtube3d "^1.4.0" - gl-surface3d "^1.4.6" + gl-streamtube3d "^1.4.1" + gl-surface3d "^1.5.2" gl-text "^1.1.8" glslify "^7.0.0" has-hover "^1.0.1" has-passive-events "^1.0.0" - is-mobile "^2.2.0" - mapbox-gl "1.3.2" + is-mobile "^2.2.1" + mapbox-gl "1.10.1" matrix-camera-controller "^2.1.3" mouse-change "^1.4.0" mouse-event-offset "^3.0.2" mouse-wheel "^1.2.0" - ndarray "^1.0.18" - ndarray-fill "^1.0.2" - ndarray-homography "^1.0.0" + ndarray "^1.0.19" + ndarray-linear-interpolate "^1.0.0" + parse-svg-path "^0.1.2" point-cluster "^3.1.8" polybooljs "^1.2.0" - regl "^1.3.11" + regl "^1.6.1" regl-error2d "^2.0.8" regl-line2d "^3.0.15" - regl-scatter2d "^3.1.7" + regl-scatter2d "^3.1.8" regl-splom "^1.0.8" right-now "^1.0.0" robust-orientation "^1.1.3" @@ -12290,7 +12114,8 @@ plotly.js@1.52.3: superscript-text "^1.0.0" svg-path-sdf "^1.1.3" tinycolor2 "^1.4.1" - topojson-client "^2.1.0" + to-px "1.0.1" + topojson-client "^3.1.0" webgl-context "^2.2.0" world-calendars "^1.0.3" @@ -12679,14 +12504,6 @@ quickselect@^2.0.0: resolved "https://registry.yarnpkg.com/quickselect/-/quickselect-2.0.0.tgz#f19680a486a5eefb581303e023e98faaf25dd018" integrity sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw== -quote-stream@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/quote-stream/-/quote-stream-0.0.0.tgz#cde29e94c409b16e19dc7098b89b6658f9721d3b" - integrity sha1-zeKelMQJsW4Z3HCYuJtmWPlyHTs= - dependencies: - minimist "0.0.8" - through2 "~0.4.1" - raf@^3.4.0, raf@^3.4.1: version "3.4.1" resolved "https://registry.yarnpkg.com/raf/-/raf-3.4.1.tgz#0742e99a4a6552f445d73e3ee0328af0ff1ede39" @@ -13281,7 +13098,7 @@ read-pkg@^3.0.0: string_decoder "~1.1.1" util-deprecate "~1.0.1" -"readable-stream@>=1.0.33-1 <1.1.0-0", readable-stream@~1.0.17, readable-stream@~1.0.27-1: +"readable-stream@>=1.0.33-1 <1.1.0-0": version "1.0.34" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" integrity sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw= @@ -13335,16 +13152,6 @@ readable-stream@^3.1.1: string_decoder "^1.1.1" util-deprecate "^1.0.1" -readable-stream@~1.1.9: - version "1.1.14" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" - integrity sha1-fPTFTvZI44EwhMY23SB54WbAgdk= - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "0.0.1" - string_decoder "~0.10.x" - readdirp@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" @@ -13375,13 +13182,6 @@ realpath-native@^1.1.0: dependencies: util.promisify "^1.0.0" -redeyed@~0.4.0: - version "0.4.4" - resolved "https://registry.yarnpkg.com/redeyed/-/redeyed-0.4.4.tgz#37e990a6f2b21b2a11c2e6a48fd4135698cba97f" - integrity sha1-N+mQpvKyGyoRwuakj9QTVpjLqX8= - dependencies: - esprima "~1.0.4" - redeyed@~2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/redeyed/-/redeyed-2.1.1.tgz#8984b5815d99cb220469c99eeeffe38913e6cc0b" @@ -13554,7 +13354,7 @@ regl-line2d@^3.0.15: pick-by-alias "^1.2.0" to-float32 "^1.0.1" -regl-scatter2d@^3.1.2, regl-scatter2d@^3.1.7: +regl-scatter2d@^3.1.2: version "3.1.8" resolved "https://registry.yarnpkg.com/regl-scatter2d/-/regl-scatter2d-3.1.8.tgz#5fdf77f9cee7e71497d038dc1b654dc4340b6bfb" integrity sha512-Z9MYAUx9t8e3MsiHBbJAEstbIqauXxzcL9DmuKXQuRWfCMF2DBytYJtE0FpbQU6639wEMAJ54SEIlISWF8sQ2g== @@ -13576,6 +13376,27 @@ regl-scatter2d@^3.1.2, regl-scatter2d@^3.1.7: to-float32 "^1.0.1" update-diff "^1.1.0" +regl-scatter2d@^3.1.8: + version "3.2.9" + resolved "https://registry.yarnpkg.com/regl-scatter2d/-/regl-scatter2d-3.2.9.tgz#cd27b014c355e80d96fb2f273b563fd8f1b094f0" + integrity sha512-PNrXs+xaCClKpiB2b3HZ2j3qXQXhC5kcTh/Nfgx9rLO0EpEhab0BSQDqAsbdbpdf+pSHSJvbgitB7ulbGeQ+Fg== + dependencies: + "@plotly/point-cluster" "^3.1.9" + array-range "^1.0.1" + array-rearrange "^2.2.2" + clamp "^1.0.1" + color-id "^1.1.0" + color-normalize "^1.5.0" + color-rgba "^2.1.1" + flatten-vertex-data "^1.0.2" + glslify "^7.0.0" + is-iexplorer "^1.0.0" + object-assign "^4.1.1" + parse-rect "^1.2.0" + pick-by-alias "^1.2.0" + to-float32 "^1.1.0" + update-diff "^1.1.0" + regl-splom@^1.0.8: version "1.0.8" resolved "https://registry.yarnpkg.com/regl-splom/-/regl-splom-1.0.8.tgz#05f165a6f0b8afc6b6b97fafa775282d44387db3" @@ -13599,6 +13420,11 @@ regl@^1.3.11: resolved "https://registry.yarnpkg.com/regl/-/regl-1.4.2.tgz#6593c38868b569ea68410364048360367a21e813" integrity sha512-wc/kE6kGmGfQk3G9f1Pai4TZ0K1pWxkD1Jeaj6CxJwEiB1jwHgEpqD84G2t7F0DmNXfQh7IUnoG1opxoONJ7Xg== +regl@^1.6.1: + version "1.7.0" + resolved "https://registry.yarnpkg.com/regl/-/regl-1.7.0.tgz#0d185431044a356bf80e9b775b11b935ef2746d3" + integrity sha512-bEAtp/qrtKucxXSJkD4ebopFZYP0q1+3Vb2WECWv/T8yQEgKxDxJ7ztO285tAMaYZVR6mM1GgI6CCn8FROtL1w== + relateurl@^0.2.7: version "0.2.7" resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" @@ -13632,7 +13458,7 @@ repeat-element@^1.1.2: resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9" integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ== -repeat-string@^1.3.0, repeat-string@^1.5.2, repeat-string@^1.6.1: +repeat-string@^1.3.0, repeat-string@^1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= @@ -13677,7 +13503,7 @@ request-promise@^4.2.2: stealthy-require "^1.1.1" tough-cookie "^2.3.3" -request@^2.83.0, request@^2.88.0: +request@^2.83.0: version "2.88.0" resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" integrity sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg== @@ -13703,7 +13529,7 @@ request@^2.83.0, request@^2.88.0: tunnel-agent "^0.6.0" uuid "^3.3.2" -request@^2.87.0: +request@^2.87.0, request@^2.88.2: version "2.88.2" resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== @@ -13899,13 +13725,6 @@ reusify@^1.0.4: resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== -right-align@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" - integrity sha1-YTObci/mo1FWiSENJOFMlhSGE+8= - dependencies: - align-text "^0.1.1" - right-now@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/right-now/-/right-now-1.0.0.tgz#6e89609deebd7dcdaf8daecc9aea39cf585a0918" @@ -14342,7 +14161,7 @@ sha.js@^2.4.0, sha.js@^2.4.8, sha.js@~2.4.4: inherits "^2.0.1" safe-buffer "^5.0.1" -shallow-copy@0.0.1, shallow-copy@~0.0.1: +shallow-copy@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/shallow-copy/-/shallow-copy-0.0.1.tgz#415f42702d73d810330292cc5ee86eae1a11a170" integrity sha1-QV9CcC1z2BAzApLMXuhurhoRoXA= @@ -14352,15 +14171,6 @@ shallowequal@^1.0.2, shallowequal@^1.1.0: resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ== -sharkdown@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/sharkdown/-/sharkdown-0.1.1.tgz#64484bd0f08f347f8319e9ff947a670f6b48b1b2" - integrity sha512-exwooSpmo5s45lrexgz6Q0rFQM574wYIX3iDZ7RLLqOb7IAoQZu9nxlZODU972g19sR69OIpKP2cpHTzU+PHIg== - dependencies: - cardinal "~0.4.2" - minimist "0.0.5" - split "~0.2.10" - shasum-object@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/shasum-object/-/shasum-object-1.0.0.tgz#0b7b74ff5b66ecf9035475522fa05090ac47e29e" @@ -14626,14 +14436,7 @@ source-map-url@^0.4.0: resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== -"source-map@>= 0.1.2", source-map@~0.1.33: - version "0.1.43" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.43.tgz#c24bc146ca517c1471f5dacbe2571b2b7f9e3346" - integrity sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y= - dependencies: - amdefine ">=0.0.4" - -source-map@^0.5.0, source-map@^0.5.6, source-map@~0.5.1, source-map@~0.5.3: +source-map@^0.5.0, source-map@^0.5.6, source-map@~0.5.3: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= @@ -14734,13 +14537,6 @@ split-string@^3.0.1, split-string@^3.0.2: dependencies: extend-shallow "^3.0.0" -split@~0.2.10: - version "0.2.10" - resolved "https://registry.yarnpkg.com/split/-/split-0.2.10.tgz#67097c601d697ce1368f418f06cd201cf0521a57" - integrity sha1-Zwl8YB1pfOE2j0GPBs0gHPBSGlc= - dependencies: - through "2" - sprintf-js@^1.0.3: version "1.1.2" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.2.tgz#da1765262bf8c0f571749f2ad6c26300207ae673" @@ -14803,13 +14599,6 @@ static-eval@^2.0.0: dependencies: escodegen "^1.11.1" -static-eval@~0.2.0: - version "0.2.4" - resolved "https://registry.yarnpkg.com/static-eval/-/static-eval-0.2.4.tgz#b7d34d838937b969f9641ca07d48f8ede263ea7b" - integrity sha1-t9NNg4k3uWn5ZBygfUj47eJj6ns= - dependencies: - escodegen "~0.0.24" - static-extend@^0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" @@ -14818,23 +14607,6 @@ static-extend@^0.1.1: define-property "^0.2.5" object-copy "^0.1.0" -static-module@^1.0.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/static-module/-/static-module-1.5.0.tgz#27da9883c41a8cd09236f842f0c1ebc6edf63d86" - integrity sha1-J9qYg8QajNCSNvhC8MHrxu32PYY= - dependencies: - concat-stream "~1.6.0" - duplexer2 "~0.0.2" - escodegen "~1.3.2" - falafel "^2.1.0" - has "^1.0.0" - object-inspect "~0.4.0" - quote-stream "~0.0.0" - readable-stream "~1.0.27-1" - shallow-copy "~0.0.1" - static-eval "~0.2.0" - through2 "~0.4.1" - statuses@2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" @@ -15177,10 +14949,10 @@ subarg@^1.0.0: dependencies: minimist "^1.1.0" -supercluster@^6.0.1: - version "6.0.2" - resolved "https://registry.yarnpkg.com/supercluster/-/supercluster-6.0.2.tgz#aa2eaae185ef97872f388c683ec29f6991721ee3" - integrity sha512-aa0v2HURjBTOpbcknilcfxGDuArM8khklKSmZ/T8ZXL0BuRwb5aRw95lz+2bmWpFvCXDX/+FzqHxmg0TIaJErw== +supercluster@^7.0.0: + version "7.1.5" + resolved "https://registry.yarnpkg.com/supercluster/-/supercluster-7.1.5.tgz#65a6ce4a037a972767740614c19051b64b8be5a3" + integrity sha512-EulshI3pGUM66o6ZdH3ReiFcvHpM3vAigyK+vcxdjpJyEbIIrtbmBdY23mGgnI24uXiGFvrGq9Gkum/8U7vJWg== dependencies: kdbush "^3.0.0" @@ -15409,15 +15181,7 @@ through2@^2.0.0, through2@^2.0.1: readable-stream "~2.3.6" xtend "~4.0.1" -through2@~0.4.1: - version "0.4.2" - resolved "https://registry.yarnpkg.com/through2/-/through2-0.4.2.tgz#dbf5866031151ec8352bb6c4db64a2292a840b9b" - integrity sha1-2/WGYDEVHsg1K7bE22SiKSqEC5s= - dependencies: - readable-stream "~1.0.17" - xtend "~2.1.1" - -through@2, "through@>=2.2.7 <3", through@^2.3.6, through@~2.3.4, through@~2.3.8: +"through@>=2.2.7 <3", through@^2.3.6, through@~2.3.4, through@~2.3.8: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= @@ -15456,7 +15220,7 @@ tinycolor2@^1.4.1: resolved "https://registry.yarnpkg.com/tinycolor2/-/tinycolor2-1.4.1.tgz#f4fad333447bc0b07d4dc8e9209d8f39a8ac77e8" integrity sha1-9PrTM0R7wLB9TcjpIJ2POaisd+g= -tinyqueue@^2.0.0: +tinyqueue@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/tinyqueue/-/tinyqueue-2.0.3.tgz#64d8492ebf39e7801d7bd34062e29b45b2035f08" integrity sha512-ppJZNDuKGgxzkHihX8v9v9G5f+18gzaTfrukGrq6ueg0lmH4nqVnA2IPG0AEH3jKEk2GRJCUhDoqpoiw3PHLBA== @@ -15509,6 +15273,11 @@ to-float32@^1.0.1: resolved "https://registry.yarnpkg.com/to-float32/-/to-float32-1.0.1.tgz#22d5921f38183164b9e7e9876158c0c16cb9753a" integrity sha512-nOy2WSwae3xhZbc+05xiCuU3ZPPmH0L4Rg4Q1qiOGFSuNSCTB9nVJaGgGl3ZScxAclX/L8hJuDHJGDAzbfuKCQ== +to-float32@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/to-float32/-/to-float32-1.1.0.tgz#39bd3b11eadccd490c08f5f9171da5127b6f3946" + integrity sha512-keDnAusn/vc+R3iEiSDw8TOF7gPiTLdK1ArvWtYbJQiVfmRg6i/CAvbKq3uIS0vWroAC7ZecN3DjQKw3aSklUg== + to-object-path@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" @@ -15516,6 +15285,13 @@ to-object-path@^0.3.0: dependencies: kind-of "^3.0.2" +to-px@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/to-px/-/to-px-1.0.1.tgz#5bbaed5e5d4f76445bcc903c293a2307dd324646" + integrity sha512-2y3LjBeIZYL19e5gczp14/uRWFDtDUErJPVN3VU9a7SJO+RjGRtYR47aMN2bZgGlxvW4ZcEz2ddUPVHXcMfuXw== + dependencies: + parse-unit "^1.0.1" + to-px@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/to-px/-/to-px-1.1.0.tgz#b6b269ed5db0cc9aefc15272a4c8bcb2ca1e99ca" @@ -15569,10 +15345,10 @@ toidentifier@1.0.1: resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== -topojson-client@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/topojson-client/-/topojson-client-2.1.0.tgz#ff9f7bf38991185e0b4284c2b06ae834f0eac6c8" - integrity sha1-/59784mRGF4LQoTCsGroNPDqxsg= +topojson-client@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/topojson-client/-/topojson-client-3.1.0.tgz#22e8b1ed08a2b922feeb4af6f53b6ef09a467b99" + integrity sha512-605uxS6bcYxGXw9qi62XyrV6Q3xwbndjachmNxu8HWTtVPxZfEJN9fd/SZS1Q54Sn2y0TMyMxFj/cJINqGHrKw== dependencies: commander "2" @@ -15782,7 +15558,7 @@ typed-array-length@^1.0.4: for-each "^0.3.3" is-typed-array "^1.1.9" -typedarray-pool@^1.0.0, typedarray-pool@^1.0.2, typedarray-pool@^1.1.0: +typedarray-pool@^1.0.0, typedarray-pool@^1.0.2, typedarray-pool@^1.1.0, typedarray-pool@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/typedarray-pool/-/typedarray-pool-1.2.0.tgz#e7e90720144ba02b9ed660438af6f3aacfe33ac3" integrity sha512-YTSQbzX43yvtpfRtIDAYygoYtgT+Rpjuxy9iOpczrjpXLgGoyG7aS5USJXV2d3nn8uHTeb9rXDvzS27zUg5KYQ== @@ -15807,21 +15583,6 @@ typescript@^4.1.2: resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.1.2.tgz#6369ef22516fe5e10304aae5a5c4862db55380e9" integrity sha512-thGloWsGH3SOxv1SoY7QojKi0tc+8FnOmiarEGMbd/lar7QOEd3hvlx3Fp5y6FlDUGl9L+pd4n2e+oToGMmhRQ== -uglify-js@^2.6.0: - version "2.8.29" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd" - integrity sha1-KcVzMUgFe7Th913zW3qcty5qWd0= - dependencies: - source-map "~0.5.1" - yargs "~3.10.0" - optionalDependencies: - uglify-to-browserify "~1.0.0" - -uglify-to-browserify@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" - integrity sha1-bgkk1r2mta/jSeOabWMoUKD4grc= - umd@^3.0.0: version "3.0.3" resolved "https://registry.yarnpkg.com/umd/-/umd-3.0.3.tgz#aa9fe653c42b9097678489c01000acb69f0b26cf" @@ -16523,11 +16284,6 @@ websocket-extensions@>=0.1.1: resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== -wgs84@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/wgs84/-/wgs84-0.0.0.tgz#34fdc555917b6e57cf2a282ed043710c049cdc76" - integrity sha1-NP3FVZF7blfPKigu0ENxDASc3HY= - whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3: version "1.0.5" resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" @@ -16613,11 +16369,6 @@ widest-line@^3.1.0: dependencies: string-width "^4.0.0" -window-size@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" - integrity sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0= - winston-transport@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/winston-transport/-/winston-transport-4.4.0.tgz#17af518daa690d5b2ecccaa7acf7b20ca7925e59" @@ -16646,11 +16397,6 @@ word-wrap@~1.2.3: resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== -wordwrap@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" - integrity sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8= - worker-farm@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" @@ -16784,13 +16530,6 @@ xtend@^4.0.2, xtend@~4.0.1: resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== -xtend@~2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-2.1.2.tgz#6efecc2a4dad8e6962c4901b337ce7ba87b5d28b" - integrity sha1-bv7MKk2tjmlixJAbM3znuoe10os= - dependencies: - object-keys "~0.4.0" - y18n@^4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" @@ -16855,16 +16594,6 @@ yargs@^15.0.2: y18n "^4.0.0" yargs-parser "^18.1.2" -yargs@~3.10.0: - version "3.10.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" - integrity sha1-9+572FfdfB0tOMDnTvvWgdFDH9E= - dependencies: - camelcase "^1.0.2" - cliui "^2.1.0" - decamelize "^1.0.0" - window-size "0.1.0" - yauzl@^2.10.0: version "2.10.0" resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" From ae10477e508cb8f192b5b1cd20a797c50130290a Mon Sep 17 00:00:00 2001 From: Justin Clift Date: Tue, 25 Jul 2023 11:02:32 +1000 Subject: [PATCH 207/274] Bump request to 2.88.2 in viz-lib (#6275) Had to hand edit the yarn.lock file (!), because I couldn't get the yarn command to do what I was trying to do. --- viz-lib/yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/viz-lib/yarn.lock b/viz-lib/yarn.lock index 2ff495862e..7ef12f2c4c 100644 --- a/viz-lib/yarn.lock +++ b/viz-lib/yarn.lock @@ -6681,7 +6681,7 @@ jsdom@^11.5.1: nwsapi "^2.0.7" parse5 "4.0.0" pn "^1.1.0" - request "^2.87.0" + request "^2.88.2" request-promise-native "^1.0.5" sax "^1.2.4" symbol-tree "^3.2.2" @@ -6870,7 +6870,7 @@ less@^3.11.1: mime "^1.4.1" mkdirp "^0.5.0" promise "^7.1.1" - request "^2.83.0" + request "^2.88.2" source-map "~0.6.0" leven@^3.1.0: @@ -8819,7 +8819,7 @@ request-promise-native@^1.0.5: stealthy-require "^1.1.1" tough-cookie "^2.3.3" -request@^2.83.0, request@^2.87.0: +request@^2.83.0, request@^2.88.2: version "2.88.2" resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== From f172f15c7fbd4d605db45fe6f3dd423e5627b641 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 25 Jul 2023 01:44:48 +0000 Subject: [PATCH 208/274] Bump minimist from 1.2.5 to 1.2.8 in /viz-lib (#6276) Bumps [minimist](https://github.com/minimistjs/minimist) from 1.2.5 to 1.2.8. - [Changelog](https://github.com/minimistjs/minimist/blob/main/CHANGELOG.md) - [Commits](https://github.com/minimistjs/minimist/compare/v1.2.5...v1.2.8) --- updated-dependencies: - dependency-name: minimist dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- viz-lib/yarn.lock | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/viz-lib/yarn.lock b/viz-lib/yarn.lock index 7ef12f2c4c..3438321f51 100644 --- a/viz-lib/yarn.lock +++ b/viz-lib/yarn.lock @@ -7201,16 +7201,11 @@ minimatch@^3.0.2, minimatch@^3.0.4, minimatch@^3.1.1: dependencies: brace-expansion "^1.1.7" -minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6: +minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6, minimist@~1.2.0: version "1.2.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== -minimist@~1.2.0: - version "1.2.5" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" - integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== - mixin-deep@^1.2.0: version "1.3.2" resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" @@ -8819,7 +8814,7 @@ request-promise-native@^1.0.5: stealthy-require "^1.1.1" tough-cookie "^2.3.3" -request@^2.83.0, request@^2.88.2: +request@^2.88.2: version "2.88.2" resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== From ff1531bee46d1a0b789e0e07d20c41d3be46a58b Mon Sep 17 00:00:00 2001 From: Justin Clift Date: Tue, 25 Jul 2023 13:15:28 +1000 Subject: [PATCH 209/274] Bump express to 4.18.2 (#6278) --- yarn.lock | 157 +++++++----------------------------------------------- 1 file changed, 18 insertions(+), 139 deletions(-) diff --git a/yarn.lock b/yarn.lock index 26c71f5c63..7a244fc92f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3531,22 +3531,6 @@ bn.js@^4.11.9: resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== -body-parser@1.18.3, body-parser@^1.18.3: - version "1.18.3" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.3.tgz#5b292198ffdd553b3a0f20ded0592b956955c8b4" - integrity sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ= - dependencies: - bytes "3.0.0" - content-type "~1.0.4" - debug "2.6.9" - depd "~1.1.2" - http-errors "~1.6.3" - iconv-lite "0.4.23" - on-finished "~2.3.0" - qs "6.5.2" - raw-body "2.3.3" - type-is "~1.6.16" - body-parser@1.20.1: version "1.20.1" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668" @@ -3565,6 +3549,22 @@ body-parser@1.20.1: type-is "~1.6.18" unpipe "1.0.0" +body-parser@^1.18.3: + version "1.18.3" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.3.tgz#5b292198ffdd553b3a0f20ded0592b956955c8b4" + integrity sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ= + dependencies: + bytes "3.0.0" + content-type "~1.0.4" + debug "2.6.9" + depd "~1.1.2" + http-errors "~1.6.3" + iconv-lite "0.4.23" + on-finished "~2.3.0" + qs "6.5.2" + raw-body "2.3.3" + type-is "~1.6.16" + bonjour-service@^1.0.11: version "1.1.1" resolved "https://registry.yarnpkg.com/bonjour-service/-/bonjour-service-1.1.1.tgz#960948fa0e0153f5d26743ab15baf8e33752c135" @@ -4705,11 +4705,6 @@ contains-path@^0.1.0: resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo= -content-disposition@0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4" - integrity sha1-DPaLud318r55YcOoUXjLhdunjLQ= - content-disposition@0.5.4: version "0.5.4" resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" @@ -4753,11 +4748,6 @@ cookie-signature@1.0.6: resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= -cookie@0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" - integrity sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s= - cookie@0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" @@ -5419,11 +5409,6 @@ destroy@1.2.0: resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== -destroy@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" - integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= - detect-file@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" @@ -6559,43 +6544,7 @@ expect@^24.9.0: jest-message-util "^24.9.0" jest-regex-util "^24.9.0" -express@^4.16.3: - version "4.16.4" - resolved "https://registry.yarnpkg.com/express/-/express-4.16.4.tgz#fddef61926109e24c515ea97fd2f1bdbf62df12e" - integrity sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg== - dependencies: - accepts "~1.3.5" - array-flatten "1.1.1" - body-parser "1.18.3" - content-disposition "0.5.2" - content-type "~1.0.4" - cookie "0.3.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.1" - fresh "0.5.2" - merge-descriptors "1.0.1" - methods "~1.1.2" - on-finished "~2.3.0" - parseurl "~1.3.2" - path-to-regexp "0.1.7" - proxy-addr "~2.0.4" - qs "6.5.2" - range-parser "~1.2.0" - safe-buffer "5.1.2" - send "0.16.2" - serve-static "1.13.2" - setprototypeof "1.1.0" - statuses "~1.4.0" - type-is "~1.6.16" - utils-merge "1.0.1" - vary "~1.1.2" - -express@^4.17.3: +express@^4.16.3, express@^4.17.3: version "4.18.2" resolved "https://registry.yarnpkg.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59" integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ== @@ -6871,19 +6820,6 @@ filtered-vector@^1.2.1: binary-search-bounds "^1.0.0" cubic-hermite "^1.0.0" -finalhandler@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.1.tgz#eebf4ed840079c83f4249038c9d703008301b105" - integrity sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg== - dependencies: - debug "2.6.9" - encodeurl "~1.0.2" - escape-html "~1.0.3" - on-finished "~2.3.0" - parseurl "~1.3.2" - statuses "~1.4.0" - unpipe "~1.0.0" - finalhandler@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" @@ -7121,11 +7057,6 @@ forwarded@0.2.0: resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== -forwarded@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" - integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= - fragment-cache@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" @@ -8766,11 +8697,6 @@ iota-array@^1.0.0: resolved "https://registry.yarnpkg.com/iota-array/-/iota-array-1.0.0.tgz#81ef57fe5d05814cd58c2483632a99c30a0e8087" integrity sha1-ge9X/l0FgUzVjCSDYyqZwwoOgIc= -ipaddr.js@1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.8.0.tgz#eaa33d6ddd7ace8f7f6fe0c9ca0440e706738b1e" - integrity sha1-6qM9bd16zo9/b+DJygRA5wZzix4= - ipaddr.js@1.9.1: version "1.9.1" resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" @@ -10643,11 +10569,6 @@ mime-types@~2.1.17, mime-types@~2.1.18: dependencies: mime-db "~1.38.0" -mime@1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6" - integrity sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ== - mime@1.6.0, mime@^1.4.1: version "1.6.0" resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" @@ -12328,14 +12249,6 @@ protocol-buffers-schema@^3.3.1: resolved "https://registry.yarnpkg.com/protocol-buffers-schema/-/protocol-buffers-schema-3.4.0.tgz#2f0ea31ca96627d680bf2fefae7ebfa2b6453eae" integrity sha512-G/2kcamPF2S49W5yaMGdIpkG6+5wZF0fzBteLKgEHjbNzqjZQ85aAs1iJGto31EJaSTkNvHs5IXuHSaTLWBAiA== -proxy-addr@~2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.4.tgz#ecfc733bf22ff8c6f407fa275327b9ab67e48b93" - integrity sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA== - dependencies: - forwarded "~0.1.2" - ipaddr.js "1.8.0" - proxy-addr@~2.0.7: version "2.0.7" resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" @@ -12549,11 +12462,6 @@ range-parser@^1.2.1, range-parser@~1.2.1: resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== -range-parser@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" - integrity sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4= - rat-vec@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/rat-vec/-/rat-vec-1.1.1.tgz#0dde2b66b7b34bb1bcd2a23805eac806d87fd17f" @@ -14045,25 +13953,6 @@ semver@^7.3.2: dependencies: lru-cache "^6.0.0" -send@0.16.2: - version "0.16.2" - resolved "https://registry.yarnpkg.com/send/-/send-0.16.2.tgz#6ecca1e0f8c156d141597559848df64730a6bbc1" - integrity sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw== - dependencies: - 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.6.2" - mime "1.4.1" - ms "2.0.0" - on-finished "~2.3.0" - range-parser "~1.2.0" - statuses "~1.4.0" - send@0.18.0: version "0.18.0" resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" @@ -14103,16 +13992,6 @@ serve-index@^1.9.1: mime-types "~2.1.17" parseurl "~1.3.2" -serve-static@1.13.2: - version "1.13.2" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.2.tgz#095e8472fd5b46237db50ce486a43f4b86c6cec1" - integrity sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw== - dependencies: - encodeurl "~1.0.2" - escape-html "~1.0.3" - parseurl "~1.3.2" - send "0.16.2" - serve-static@1.15.0: version "1.15.0" resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" @@ -14612,7 +14491,7 @@ statuses@2.0.1: resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== -"statuses@>= 1.4.0 < 2", statuses@~1.4.0: +"statuses@>= 1.4.0 < 2": version "1.4.0" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087" integrity sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew== From ef7e38de4971457489af73bbf3f2ed888b26bda9 Mon Sep 17 00:00:00 2001 From: Justin Clift Date: Tue, 25 Jul 2023 14:49:59 +1000 Subject: [PATCH 210/274] Bump ts-migrate to 0.1.35 in viz-lib (#6279) --- viz-lib/package.json | 2 +- viz-lib/yarn.lock | 711 ++++++++++++++++++++++++++----------------- 2 files changed, 427 insertions(+), 286 deletions(-) diff --git a/viz-lib/package.json b/viz-lib/package.json index 97fa4ca007..9f8c7c8f73 100644 --- a/viz-lib/package.json +++ b/viz-lib/package.json @@ -65,7 +65,7 @@ "prettier": "^1.19.1", "prop-types": "^15.7.2", "style-loader": "^1.1.4", - "ts-migrate": "^0.1.10", + "ts-migrate": "^0.1.35", "typescript": "^4.1.2", "webpack": "^5.88.2", "webpack-cli": "^5.1.4" diff --git a/viz-lib/yarn.lock b/viz-lib/yarn.lock index 3438321f51..7f59187fa5 100644 --- a/viz-lib/yarn.lock +++ b/viz-lib/yarn.lock @@ -35,6 +35,13 @@ optionalDependencies: chokidar "^2.1.8" +"@babel/code-frame@7.12.11": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" + integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== + dependencies: + "@babel/highlight" "^7.10.4" + "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.22.5", "@babel/code-frame@^7.8.3": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.5.tgz#234d98e1551960604f1246e6475891a570ad5658" @@ -63,7 +70,7 @@ invariant "^2.2.4" semver "^5.5.0" -"@babel/core@^7.1.0": +"@babel/core@^7.1.0", "@babel/core@^7.13.16": version "7.22.9" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.22.9.tgz#bd96492c68822198f33e8a256061da3cf391f58f" integrity sha512-G2EgeufBcYw27U4hhoIwFcgc1XU7TlXJ3mv04oOv1WCuo900U/anZSPzEqNjwdjgffkk2Gs0AN0dW1CKVLcG7w== @@ -125,6 +132,13 @@ "@jridgewell/trace-mapping" "^0.3.17" jsesc "^2.5.1" +"@babel/helper-annotate-as-pure@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz#e7f06737b197d580a01edf75d97e2c8be99d3882" + integrity sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg== + dependencies: + "@babel/types" "^7.22.5" + "@babel/helper-annotate-as-pure@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz#60bc0bc657f63a0924ff9a4b4a0b24a13cf4deee" @@ -190,6 +204,21 @@ "@babel/helper-replace-supers" "^7.12.1" "@babel/helper-split-export-declaration" "^7.10.4" +"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.22.9": + version "7.22.9" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.9.tgz#c36ea240bb3348f942f08b0fbe28d6d979fab236" + integrity sha512-Pwyi89uO4YrGKxL/eNJ8lfEH55DnRloGPOseaA8NFNL6jAUnn+KccaISiFazCj5IolPPDjGSdzQzXVzODVRqUQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-environment-visitor" "^7.22.5" + "@babel/helper-function-name" "^7.22.5" + "@babel/helper-member-expression-to-functions" "^7.22.5" + "@babel/helper-optimise-call-expression" "^7.22.5" + "@babel/helper-replace-supers" "^7.22.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + semver "^6.3.1" + "@babel/helper-create-class-features-plugin@^7.8.3": version "7.8.6" resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.8.6.tgz#243a5b46e2f8f0f674dc1387631eb6b28b851de0" @@ -299,7 +328,7 @@ dependencies: "@babel/types" "^7.22.5" -"@babel/helper-module-transforms@^7.22.9", "@babel/helper-module-transforms@^7.9.0": +"@babel/helper-module-transforms@^7.22.5", "@babel/helper-module-transforms@^7.22.9", "@babel/helper-module-transforms@^7.9.0": version "7.22.9" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.22.9.tgz#92dfcb1fbbb2bc62529024f72d942a8c97142129" integrity sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ== @@ -324,7 +353,7 @@ dependencies: "@babel/types" "^7.22.5" -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.8.0": +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.8.0": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295" integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== @@ -367,6 +396,15 @@ "@babel/traverse" "^7.12.5" "@babel/types" "^7.12.5" +"@babel/helper-replace-supers@^7.22.9", "@babel/helper-replace-supers@^7.8.6": + version "7.22.9" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.22.9.tgz#cbdc27d6d8d18cd22c81ae4293765a5d9afd0779" + integrity sha512-LJIKvvpgPOPUThdYqcX6IXRuIcTkcAub0IaDRGCZH0p5GPUp7PhRU9QVgFcDDd51BaPkk77ZjqFwh6DZTAEmGg== + dependencies: + "@babel/helper-environment-visitor" "^7.22.5" + "@babel/helper-member-expression-to-functions" "^7.22.5" + "@babel/helper-optimise-call-expression" "^7.22.5" + "@babel/helper-replace-supers@^7.8.3": version "7.8.6" resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.8.6.tgz#5ada744fd5ad73203bf1d67459a27dcba67effc8" @@ -377,15 +415,6 @@ "@babel/traverse" "^7.8.6" "@babel/types" "^7.8.6" -"@babel/helper-replace-supers@^7.8.6": - version "7.22.9" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.22.9.tgz#cbdc27d6d8d18cd22c81ae4293765a5d9afd0779" - integrity sha512-LJIKvvpgPOPUThdYqcX6IXRuIcTkcAub0IaDRGCZH0p5GPUp7PhRU9QVgFcDDd51BaPkk77ZjqFwh6DZTAEmGg== - dependencies: - "@babel/helper-environment-visitor" "^7.22.5" - "@babel/helper-member-expression-to-functions" "^7.22.5" - "@babel/helper-optimise-call-expression" "^7.22.5" - "@babel/helper-simple-access@^7.22.5", "@babel/helper-simple-access@^7.8.3": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz#4938357dc7d782b80ed6dbb03a0fba3d22b1d5de" @@ -393,6 +422,13 @@ dependencies: "@babel/types" "^7.22.5" +"@babel/helper-skip-transparent-expression-wrappers@^7.20.0", "@babel/helper-skip-transparent-expression-wrappers@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz#007f15240b5751c537c40e77abb4e89eeaaa8847" + integrity sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q== + dependencies: + "@babel/types" "^7.22.5" + "@babel/helper-split-export-declaration@^7.10.4", "@babel/helper-split-export-declaration@^7.11.0": version "7.11.0" resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz#f8a491244acf6a676158ac42072911ba83ad099f" @@ -469,7 +505,7 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.20.7", "@babel/parser@^7.22.5", "@babel/parser@^7.22.7", "@babel/parser@^7.4.3", "@babel/parser@^7.9.0": +"@babel/parser@^7.1.0", "@babel/parser@^7.13.16", "@babel/parser@^7.20.7", "@babel/parser@^7.22.5", "@babel/parser@^7.22.7", "@babel/parser@^7.4.3", "@babel/parser@^7.9.0": version "7.22.7" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.22.7.tgz#df8cf085ce92ddbdbf668a7f186ce848c9036cae" integrity sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q== @@ -501,6 +537,14 @@ "@babel/helper-create-class-features-plugin" "^7.8.3" "@babel/helper-plugin-utils" "^7.8.3" +"@babel/plugin-proposal-class-properties@^7.13.0": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz#b110f59741895f7ec21a6fff696ec46265c446a3" + integrity sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-proposal-dynamic-import@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.8.3.tgz#38c4fe555744826e97e2ae930b0fb4cc07e66054" @@ -517,6 +561,14 @@ "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-json-strings" "^7.8.0" +"@babel/plugin-proposal-nullish-coalescing-operator@^7.13.8": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz#fdd940a99a740e577d6c753ab6fbb43fdb9467e1" + integrity sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-proposal-nullish-coalescing-operator@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.8.3.tgz#e4572253fdeed65cddeecfdab3f928afeb2fd5d2" @@ -549,6 +601,15 @@ "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" +"@babel/plugin-proposal-optional-chaining@^7.13.12": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz#886f5c8978deb7d30f678b2e24346b287234d3ea" + integrity sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-proposal-optional-chaining@^7.9.0": version "7.9.0" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.9.0.tgz#31db16b154c39d6b8a645292472b98394c292a58" @@ -586,6 +647,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-syntax-flow@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.22.5.tgz#163b820b9e7696ce134df3ee716d9c0c98035859" + integrity sha512-9RdCl0i+q0QExayk2nOS7853w08yLucnnPML6EN9S8fgMPVtdLDCdx/cOQ/i44Lb9UeQX9A35yaqBBOMMZxPxQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-json-strings@^7.8.0": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" @@ -593,6 +661,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" +"@babel/plugin-syntax-jsx@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz#a6b68e84fb76e759fc3b93e901876ffabbe1d918" + integrity sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-jsx@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.8.3.tgz#521b06c83c40480f1e58b4fd33b92eceb1d6ea94" @@ -600,7 +675,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0": +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0", "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== @@ -628,7 +703,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-optional-chaining@^7.8.0": +"@babel/plugin-syntax-optional-chaining@^7.8.0", "@babel/plugin-syntax-optional-chaining@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== @@ -649,6 +724,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-syntax-typescript@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz#aac8d383b062c5072c647a31ef990c1d0af90272" + integrity sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-transform-arrow-functions@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.8.3.tgz#82776c2ed0cd9e1a49956daeb896024c9473b8b6" @@ -739,6 +821,14 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-flow" "^7.12.1" +"@babel/plugin-transform-flow-strip-types@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.22.5.tgz#0bb17110c7bf5b35a60754b2f00c58302381dee2" + integrity sha512-tujNbZdxdG0/54g/oua8ISToaXTFBf8EnSb5PgQSciIXWOWKX3S4+JR7ZE9ol8FZwf9kxitzkGQ+QWeov/mCiA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-flow" "^7.22.5" + "@babel/plugin-transform-for-of@^7.9.0": version "7.9.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.9.0.tgz#0f260e27d3e29cd1bb3128da5e76c761aa6c108e" @@ -777,6 +867,15 @@ "@babel/helper-plugin-utils" "^7.8.3" babel-plugin-dynamic-import-node "^2.3.0" +"@babel/plugin-transform-modules-commonjs@^7.13.8", "@babel/plugin-transform-modules-commonjs@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.22.5.tgz#7d9875908d19b8c0536085af7b053fd5bd651bfa" + integrity sha512-B4pzOXj+ONRmuaQTg05b3y/4DuFz3WcCNAXPLb2Q0GT0TrGKGxNKV4jwsXts+StaM0LQczZbOpj8o1DLPDJIiA== + dependencies: + "@babel/helper-module-transforms" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-simple-access" "^7.22.5" + "@babel/plugin-transform-modules-commonjs@^7.9.0": version "7.9.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.9.0.tgz#e3e72f4cbc9b4a260e30be0ea59bdf5a39748940" @@ -944,6 +1043,16 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-typescript" "^7.12.1" +"@babel/plugin-transform-typescript@^7.22.5": + version "7.22.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.22.9.tgz#91e08ad1eb1028ecc62662a842e93ecfbf3c7234" + integrity sha512-BnVR1CpKiuD0iobHPaM1iLvcwPYN2uVFAqoLVSpEDKWuOikoCv5HbKLxclhKYUXlWkX86DoZGtqI4XhbOsyrMg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-create-class-features-plugin" "^7.22.9" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-typescript" "^7.22.5" + "@babel/plugin-transform-unicode-regex@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.8.3.tgz#0cef36e3ba73e5c57273effb182f46b91a1ecaad" @@ -1026,6 +1135,15 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-transform-flow-strip-types" "^7.12.1" +"@babel/preset-flow@^7.13.13": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.22.5.tgz#876f24ab6b38bd79703a93f32020ca2162312784" + integrity sha512-ta2qZ+LSiGCrP5pgcGt8xMnnkXQrq8Sa4Ulhy06BOlF5QbLw9q5hIx7bn5MrsvyTGAfh6kTOo07Q+Pfld/8Y5Q== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-validator-option" "^7.22.5" + "@babel/plugin-transform-flow-strip-types" "^7.22.5" + "@babel/preset-modules@^0.1.3": version "0.1.3" resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.3.tgz#13242b53b5ef8c883c3cf7dddd55b36ce80fbc72" @@ -1058,6 +1176,17 @@ "@babel/helper-validator-option" "^7.12.1" "@babel/plugin-transform-typescript" "^7.12.1" +"@babel/preset-typescript@^7.13.0": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.22.5.tgz#16367d8b01d640e9a507577ed4ee54e0101e51c8" + integrity sha512-YbPaal9LxztSGhmndR46FmAbkJ/1fAsw293tSU+I5E5h+cnJ3d4GTwyUgGYmOXJYdGA+uNePle4qbaRzj2NISQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-validator-option" "^7.22.5" + "@babel/plugin-syntax-jsx" "^7.22.5" + "@babel/plugin-transform-modules-commonjs" "^7.22.5" + "@babel/plugin-transform-typescript" "^7.22.5" + "@babel/register@^7.0.0": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.12.1.tgz#cdb087bdfc4f7241c03231f22e15d211acf21438" @@ -1069,6 +1198,17 @@ pirates "^4.0.0" source-map-support "^0.5.16" +"@babel/register@^7.13.16": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.22.5.tgz#e4d8d0f615ea3233a27b5c6ada6750ee59559939" + integrity sha512-vV6pm/4CijSQ8Y47RH5SopXzursN35RQINfGJkmOlcpAtGuf94miFvIPhCKGQN7WGIcsgG1BHEX2KVdTYwTwUQ== + dependencies: + clone-deep "^4.0.1" + find-cache-dir "^2.0.0" + make-dir "^2.1.0" + pirates "^4.0.5" + source-map-support "^0.5.16" + "@babel/runtime@^7.2.0": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.5.tgz#8564dd588182ce0047d55d7a75e93921107b57ec" @@ -1194,30 +1334,35 @@ resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== -"@dsherret/to-absolute-glob@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@dsherret/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz#1f6475dc8bd974cea07a2daf3864b317b1dd332c" - integrity sha1-H2R13IvZdM6gei2vOGSzF7HdMyw= - dependencies: - is-absolute "^1.0.0" - is-negated-glob "^1.0.0" - -"@eslint/eslintrc@^0.2.2": - version "0.2.2" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.2.2.tgz#d01fc791e2fc33e88a29d6f3dc7e93d0cd784b76" - integrity sha512-EfB5OHNYp1F4px/LI/FEnGylop7nOqkQ1LRzCM0KccA2U8tvV8w01KBv37LbO7nW4H+YhKyo2LcJhRwjjV17QQ== +"@eslint/eslintrc@^0.4.3": + version "0.4.3" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz#9e42981ef035beb3dd49add17acb96e8ff6f394c" + integrity sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw== dependencies: ajv "^6.12.4" debug "^4.1.1" espree "^7.3.0" - globals "^12.1.0" + globals "^13.9.0" ignore "^4.0.6" import-fresh "^3.2.1" js-yaml "^3.13.1" - lodash "^4.17.19" minimatch "^3.0.4" strip-json-comments "^3.1.1" +"@humanwhocodes/config-array@^0.5.0": + version "0.5.0" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9" + integrity sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg== + dependencies: + "@humanwhocodes/object-schema" "^1.2.0" + debug "^4.1.1" + minimatch "^3.0.4" + +"@humanwhocodes/object-schema@^1.2.0": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" + integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== + "@istanbuljs/load-nyc-config@^1.0.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" @@ -1541,24 +1686,22 @@ parse-rect "^1.2.0" pick-by-alias "^1.2.0" -"@ts-morph/bootstrap@^0.6.0": - version "0.6.0" - resolved "https://registry.yarnpkg.com/@ts-morph/bootstrap/-/bootstrap-0.6.0.tgz#264b51a00070916c5c824d754b7155b8b03f6631" - integrity sha512-ZCrY+57ktsNNe3PFnnS4U98lo95zpl8Rpqhe4NKl1c5lmnOBeBlp168D6bQYH/GCnJpErxrgAgZsSqBSh/Jk7A== +"@ts-morph/bootstrap@^0.16.0": + version "0.16.0" + resolved "https://registry.yarnpkg.com/@ts-morph/bootstrap/-/bootstrap-0.16.0.tgz#c97034175a8fc2b7d3f575526d819877f7ed2d83" + integrity sha512-FYW3bK5EBeAgpHu0qZ57gHbLjzgzC81y5EJmrebzIhXSYg6OgZu5lFHpF5NJ7CwM7ZMhxX1PG+DRA8e+skopKw== dependencies: - "@ts-morph/common" "~0.6.0" + "@ts-morph/common" "~0.16.0" -"@ts-morph/common@~0.6.0": - version "0.6.0" - resolved "https://registry.yarnpkg.com/@ts-morph/common/-/common-0.6.0.tgz#cbd4ee57c5ef971511b9c5778e0bb8eb27de4783" - integrity sha512-pI35nZz5bs3tL3btSVX2cWkAE8rc80F+Fn4TwSC6bQvn7fgn9IyLXVcAfpG6X6NBY5wN9TkSWXn/QYUkBvR/Fw== +"@ts-morph/common@~0.16.0": + version "0.16.0" + resolved "https://registry.yarnpkg.com/@ts-morph/common/-/common-0.16.0.tgz#57e27d4b3fd65a4cd72cb36679ed08acb40fa3ba" + integrity sha512-SgJpzkTgZKLKqQniCjLaE3c2L2sdL7UShvmTmPBejAKd2OKV/yfMpQ2IWpAuA+VY5wy7PkSUaEObIqEK6afFuw== dependencies: - "@dsherret/to-absolute-glob" "^2.0.2" - fast-glob "^3.2.4" - fs-extra "^9.0.1" - is-negated-glob "^1.0.0" - multimatch "^4.0.0" - typescript "~4.0.2" + fast-glob "^3.2.11" + minimatch "^5.1.0" + mkdirp "^1.0.4" + path-browserify "^1.0.1" "@turf/area@^6.0.1": version "6.0.1" @@ -1961,11 +2104,6 @@ dependencies: "@types/geojson" "*" -"@types/minimatch@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" - integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== - "@types/node@*": version "13.13.4" resolved "https://registry.yarnpkg.com/@types/node/-/node-13.13.4.tgz#1581d6c16e3d4803eb079c87d4ac893ee7501c2c" @@ -2304,7 +2442,7 @@ ajv-keywords@^3.5.2: resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== -ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.0, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5: +ajv@^6.10.0, ajv@^6.12.0, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -2314,6 +2452,16 @@ ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.0, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5: json-schema-traverse "^0.4.1" uri-js "^4.2.2" +ajv@^8.0.1: + version "8.12.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1" + integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + almost-equal@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/almost-equal/-/almost-equal-1.1.0.tgz#f851c631138757994276aa2efbe8dfa3066cccdd" @@ -2355,7 +2503,7 @@ ansi-regex@^4.0.0, ansi-regex@^4.1.0: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.1.tgz#164daac87ab2d6f6db3a29875e2d1766582dabed" integrity sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g== -ansi-regex@^5.0.0: +ansi-regex@^5.0.0, ansi-regex@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== @@ -2417,11 +2565,6 @@ array-buffer-byte-length@^1.0.0: call-bind "^1.0.2" is-array-buffer "^3.0.1" -array-differ@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-3.0.0.tgz#3cbb3d0f316810eafcc47624734237d6aee4ae6b" - integrity sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg== - array-equal@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" @@ -2449,11 +2592,6 @@ array-rearrange@^2.2.2: resolved "https://registry.yarnpkg.com/array-rearrange/-/array-rearrange-2.2.2.tgz#fa1a2acf8d02e88dd0c9602aa0e06a79158b2283" integrity sha512-UfobP5N12Qm4Qu4fwLDIi2v6+wZsSf6snYSxAMeKhrh37YGnNWZPRmVEKc/2wfms53TLQnzfpG8wCx2Y/6NG1w== -array-union@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" - integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== - array-unique@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" @@ -2500,11 +2638,6 @@ arraybuffer.prototype.slice@^1.0.1: is-array-buffer "^3.0.2" is-shared-array-buffer "^1.0.2" -arrify@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" - integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== - asap@~2.0.3: version "2.0.6" resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" @@ -2532,16 +2665,23 @@ ast-types@0.11.7: resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.11.7.tgz#f318bf44e339db6a320be0009ded64ec1471f46c" integrity sha512-2mP3TwtkY/aTv5X3ZsMpNAbOnyoC/aMJwJSoaELPkHId0nSQgFcnU4dRW3isxiz7+zBexk0ym3WNVjMiQBnJSw== -ast-types@0.13.3: - version "0.13.3" - resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.13.3.tgz#50da3f28d17bdbc7969a3a2d83a0e4a72ae755a7" - integrity sha512-XTZ7xGML849LkQP86sWdQzfhwbt3YwIO6MqbX9mUNYY98VKaaVZP7YNNm70IpwecbkkxmfC5IYAzOQ/2p29zRA== +ast-types@0.14.2: + version "0.14.2" + resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.14.2.tgz#600b882df8583e3cd4f2df5fa20fa83759d4bdfd" + integrity sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA== + dependencies: + tslib "^2.0.1" astral-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== +astral-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" + integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== + async-each@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" @@ -2557,11 +2697,6 @@ asynckit@^0.4.0: resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== -at-least-node@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" - integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== - atob-lite@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/atob-lite/-/atob-lite-1.0.0.tgz#b88dca6006922b962094f7556826bab31c4a296b" @@ -2831,6 +2966,13 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + braces@^2.3.1, braces@^2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" @@ -2847,7 +2989,7 @@ braces@^2.3.1, braces@^2.3.2: split-string "^3.0.2" to-regex "^3.0.1" -braces@^3.0.1: +braces@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== @@ -3020,6 +3162,14 @@ chalk@^4.0.0: ansi-styles "^4.1.0" supports-color "^7.1.0" +chalk@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + cheerio@^1.0.0-rc.3: version "1.0.0-rc.3" resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.3.tgz#094636d425b2e9c0f4eb91a46c05630c9a1a8bf6" @@ -4185,6 +4335,11 @@ escape-string-regexp@^2.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + escodegen@^1.11.1: version "1.14.1" resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.1.tgz#ba01d0c8278b5e95a9a45350142026659027a457" @@ -4234,29 +4389,32 @@ eslint-visitor-keys@^2.0.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8" integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ== -eslint@^7.8.1: - version "7.15.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.15.0.tgz#eb155fb8ed0865fcf5d903f76be2e5b6cd7e0bc7" - integrity sha512-Vr64xFDT8w30wFll643e7cGrIkPEU50yIiI36OdSIDoSGguIeaLzBo0vpGvzo9RECUqq7htURfwEtKqwytkqzA== +eslint@^7.14.0: + version "7.32.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.32.0.tgz#c6d328a14be3fb08c8d1d21e12c02fdb7a2a812d" + integrity sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA== dependencies: - "@babel/code-frame" "^7.0.0" - "@eslint/eslintrc" "^0.2.2" + "@babel/code-frame" "7.12.11" + "@eslint/eslintrc" "^0.4.3" + "@humanwhocodes/config-array" "^0.5.0" ajv "^6.10.0" chalk "^4.0.0" cross-spawn "^7.0.2" debug "^4.0.1" doctrine "^3.0.0" enquirer "^2.3.5" + escape-string-regexp "^4.0.0" eslint-scope "^5.1.1" eslint-utils "^2.1.0" eslint-visitor-keys "^2.0.0" espree "^7.3.1" - esquery "^1.2.0" + esquery "^1.4.0" esutils "^2.0.2" - file-entry-cache "^6.0.0" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" functional-red-black-tree "^1.0.1" - glob-parent "^5.0.0" - globals "^12.1.0" + glob-parent "^5.1.2" + globals "^13.6.0" ignore "^4.0.6" import-fresh "^3.0.0" imurmurhash "^0.1.4" @@ -4264,7 +4422,7 @@ eslint@^7.8.1: js-yaml "^3.13.1" json-stable-stringify-without-jsonify "^1.0.1" levn "^0.4.1" - lodash "^4.17.19" + lodash.merge "^4.6.2" minimatch "^3.0.4" natural-compare "^1.4.0" optionator "^0.9.1" @@ -4273,7 +4431,7 @@ eslint@^7.8.1: semver "^7.2.1" strip-ansi "^6.0.0" strip-json-comments "^3.1.0" - table "^5.2.3" + table "^6.0.9" text-table "^0.2.0" v8-compile-cache "^2.0.3" @@ -4291,10 +4449,10 @@ esprima@^4.0.0, esprima@^4.0.1, esprima@~4.0.0: resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -esquery@^1.2.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.3.1.tgz#b78b5828aa8e214e29fb74c4d5b752e1c033da57" - integrity sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ== +esquery@^1.4.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" + integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== dependencies: estraverse "^5.1.0" @@ -4444,22 +4602,21 @@ falafel@^2.1.0: isarray "^2.0.1" object-keys "^1.0.6" -fast-deep-equal@^3.1.1: +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== -fast-glob@^3.2.4: - version "3.2.4" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.4.tgz#d20aefbf99579383e7f3cc66529158c9b98554d3" - integrity sha512-kr/Oo6PX51265qeuCYsyGypiO5uJFgBS0jksyG7FUeCyQzNwYnzrNIMR1NXfkZXsMYXYLRAHgISHBz8gQcxKHQ== +fast-glob@^3.2.11: + version "3.3.1" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.1.tgz#784b4e897340f3dbbef17413b3f11acf03c874c4" + integrity sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg== dependencies: "@nodelib/fs.stat" "^2.0.2" "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.0" + glob-parent "^5.1.2" merge2 "^1.3.0" - micromatch "^4.0.2" - picomatch "^2.2.1" + micromatch "^4.0.4" fast-isnumeric@^1.1.4: version "1.1.4" @@ -4504,10 +4661,10 @@ figures@^3.0.0: dependencies: escape-string-regexp "^1.0.5" -file-entry-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.0.tgz#7921a89c391c6d93efec2169ac6bf300c527ea0a" - integrity sha512-fqoO76jZ3ZnYrXLDRxBR1YvOvc0k844kcOg40bgsPrE25LAb/PDqTY+ho64Xh2c8ZXgIKldchCFHczG2UVRcWA== +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== dependencies: flat-cache "^3.0.4" @@ -4689,16 +4846,6 @@ from2@^2.3.0: inherits "^2.0.1" readable-stream "^2.0.0" -fs-extra@^9.0.1: - version "9.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.0.1.tgz#910da0062437ba4c39fedd863f1675ccfefcb9fc" - integrity sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ== - dependencies: - at-least-node "^1.0.0" - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^1.0.0" - fs-readdir-recursive@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27" @@ -5208,10 +5355,10 @@ glob-parent@^3.1.0: is-glob "^3.1.0" path-dirname "^1.0.0" -glob-parent@^5.0.0, glob-parent@^5.1.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" - integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== +glob-parent@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== dependencies: is-glob "^4.0.1" @@ -5249,12 +5396,12 @@ globals@^11.1.0: resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== -globals@^12.1.0: - version "12.4.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8" - integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg== +globals@^13.6.0, globals@^13.9.0: + version "13.20.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.20.0.tgz#ea276a1e508ffd4f1612888f9d1bad1e2717bf82" + integrity sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ== dependencies: - type-fest "^0.8.1" + type-fest "^0.20.2" globalthis@^1.0.3: version "1.0.3" @@ -5432,11 +5579,6 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.2.4 resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== -graceful-fs@^4.1.6, graceful-fs@^4.2.0: - version "4.2.3" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" - integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== - grid-index@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/grid-index/-/grid-index-1.1.0.tgz#97f8221edec1026c8377b86446a7c71e79522ea7" @@ -5746,14 +5888,6 @@ iota-array@^1.0.0: resolved "https://registry.yarnpkg.com/iota-array/-/iota-array-1.0.0.tgz#81ef57fe5d05814cd58c2483632a99c30a0e8087" integrity sha1-ge9X/l0FgUzVjCSDYyqZwwoOgIc= -is-absolute@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-absolute/-/is-absolute-1.0.0.tgz#395e1ae84b11f26ad1795e73c17378e48a301576" - integrity sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA== - dependencies: - is-relative "^1.0.0" - is-windows "^1.0.1" - is-accessor-descriptor@^0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" @@ -5973,11 +6107,6 @@ is-mobile@^2.2.1: resolved "https://registry.yarnpkg.com/is-mobile/-/is-mobile-2.2.1.tgz#10f2320012c410cc285feecb13406bd586f1b2f8" integrity sha512-6zELsfVFr326eq2CI53yvqq6YBanOxKBybwDT+MbMS2laBnK6Ez8m5XHSuTQQbnKRfpDzCod1CMWW5q3wZYMvA== -is-negated-glob@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-negated-glob/-/is-negated-glob-1.0.0.tgz#6910bca5da8c95e784b5751b976cf5a10fee36d2" - integrity sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI= - is-negative-zero@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" @@ -6032,13 +6161,6 @@ is-regex@^1.0.5, is-regex@^1.1.0, is-regex@^1.1.4: call-bind "^1.0.2" has-tostringtag "^1.0.0" -is-relative@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-1.0.0.tgz#a1bb6935ce8c5dba1e8b9754b9b2dcc020e2260d" - integrity sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA== - dependencies: - is-unc-path "^1.0.0" - is-shared-array-buffer@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" @@ -6097,13 +6219,6 @@ is-typedarray@~1.0.0: resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== -is-unc-path@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-unc-path/-/is-unc-path-1.0.0.tgz#d731e8898ed090a12c352ad2eaed5095ad322c9d" - integrity sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ== - dependencies: - unc-path-regex "^0.1.2" - is-weakref@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" @@ -6111,7 +6226,7 @@ is-weakref@^1.0.2: dependencies: call-bind "^1.0.2" -is-windows@^1.0.1, is-windows@^1.0.2: +is-windows@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== @@ -6614,34 +6729,35 @@ jsbn@~0.1.0: resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" integrity sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg== -jscodeshift@^0.6.3: - version "0.6.4" - resolved "https://registry.yarnpkg.com/jscodeshift/-/jscodeshift-0.6.4.tgz#e19ab86214edac86a75c4557fc88b3937d558a8e" - integrity sha512-+NF/tlNbc2WEhXUuc4WEJLsJumF84tnaMUZW2hyJw3jThKKRvsPX4sPJVgO1lPE28z0gNL+gwniLG9d8mYvQCQ== - dependencies: - "@babel/core" "^7.1.6" - "@babel/parser" "^7.1.6" - "@babel/plugin-proposal-class-properties" "^7.1.0" - "@babel/plugin-proposal-object-rest-spread" "^7.0.0" - "@babel/preset-env" "^7.1.6" - "@babel/preset-flow" "^7.0.0" - "@babel/preset-typescript" "^7.1.0" - "@babel/register" "^7.0.0" +jscodeshift@^0.13.0: + version "0.13.1" + resolved "https://registry.yarnpkg.com/jscodeshift/-/jscodeshift-0.13.1.tgz#69bfe51e54c831296380585c6d9e733512aecdef" + integrity sha512-lGyiEbGOvmMRKgWk4vf+lUrCWO/8YR8sUR3FKF1Cq5fovjZDlIcw3Hu5ppLHAnEXshVffvaM0eyuY/AbOeYpnQ== + dependencies: + "@babel/core" "^7.13.16" + "@babel/parser" "^7.13.16" + "@babel/plugin-proposal-class-properties" "^7.13.0" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.13.8" + "@babel/plugin-proposal-optional-chaining" "^7.13.12" + "@babel/plugin-transform-modules-commonjs" "^7.13.8" + "@babel/preset-flow" "^7.13.13" + "@babel/preset-typescript" "^7.13.0" + "@babel/register" "^7.13.16" babel-core "^7.0.0-bridge.0" - colors "^1.1.2" + chalk "^4.1.2" flow-parser "0.*" - graceful-fs "^4.1.11" + graceful-fs "^4.2.4" micromatch "^3.1.10" neo-async "^2.5.0" node-dir "^0.1.17" - recast "^0.16.1" - temp "^0.8.1" + recast "^0.20.4" + temp "^0.8.4" write-file-atomic "^2.3.0" -jscodeshift@^0.7.0: - version "0.7.1" - resolved "https://registry.yarnpkg.com/jscodeshift/-/jscodeshift-0.7.1.tgz#0236ad475d6f0770ca998a0160925d62b57d2507" - integrity sha512-YMkZSyoc8zg5woZL23cmWlnFLPH/mHilonGA7Qbzs7H6M4v4PH0Qsn4jeDyw+CHhVoAnm9UxQyB0Yw1OT+mktA== +jscodeshift@^0.6.3: + version "0.6.4" + resolved "https://registry.yarnpkg.com/jscodeshift/-/jscodeshift-0.6.4.tgz#e19ab86214edac86a75c4557fc88b3937d558a8e" + integrity sha512-+NF/tlNbc2WEhXUuc4WEJLsJumF84tnaMUZW2hyJw3jThKKRvsPX4sPJVgO1lPE28z0gNL+gwniLG9d8mYvQCQ== dependencies: "@babel/core" "^7.1.6" "@babel/parser" "^7.1.6" @@ -6658,7 +6774,7 @@ jscodeshift@^0.7.0: micromatch "^3.1.10" neo-async "^2.5.0" node-dir "^0.1.17" - recast "^0.18.1" + recast "^0.16.1" temp "^0.8.1" write-file-atomic "^2.3.0" @@ -6681,7 +6797,7 @@ jsdom@^11.5.1: nwsapi "^2.0.7" parse5 "4.0.0" pn "^1.1.0" - request "^2.88.2" + request "^2.87.0" request-promise-native "^1.0.5" sax "^1.2.4" symbol-tree "^3.2.2" @@ -6719,7 +6835,12 @@ json-schema-traverse@^0.4.1: resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== -json-schema@0.4.0: +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + +json-schema@0.4.0, json-schema@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== @@ -6765,15 +6886,6 @@ json5@^2.1.2, json5@^2.2.2: resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== -jsonfile@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" - integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== - dependencies: - universalify "^2.0.0" - optionalDependencies: - graceful-fs "^4.1.6" - jsprim@^1.2.2: version "1.4.2" resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.2.tgz#712c65533a15c878ba59e9ed5f0e26d5b77c5feb" @@ -6870,7 +6982,7 @@ less@^3.11.1: mime "^1.4.1" mkdirp "^0.5.0" promise "^7.1.1" - request "^2.88.2" + request "^2.83.0" source-map "~0.6.0" leven@^3.1.0: @@ -6972,12 +7084,22 @@ lodash.isequal@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" integrity sha1-QVxEePK8wwEgwizhDtMib30+GOA= +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + lodash.sortby@^4.7.0: version "4.7.0" resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" integrity sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA== -lodash@^4.15.0, lodash@^4.17.10, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19: +lodash.truncate@^4.4.2: + version "4.4.2" + resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" + integrity sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw== + +lodash@^4.15.0, lodash@^4.17.10, lodash@^4.17.13, lodash@^4.17.15, lodash@^4.17.19: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -7164,13 +7286,13 @@ micromatch@^3.1.10, micromatch@^3.1.4: snapdragon "^0.8.1" to-regex "^3.0.2" -micromatch@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" - integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q== +micromatch@^4.0.4: + version "4.0.5" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== dependencies: - braces "^3.0.1" - picomatch "^2.0.5" + braces "^3.0.2" + picomatch "^2.3.1" mime-db@1.52.0: version "1.52.0" @@ -7201,6 +7323,13 @@ minimatch@^3.0.2, minimatch@^3.0.4, minimatch@^3.1.1: dependencies: brace-expansion "^1.1.7" +minimatch@^5.1.0: + version "5.1.6" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" + integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== + dependencies: + brace-expansion "^2.0.1" + minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6, minimist@~1.2.0: version "1.2.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" @@ -7235,6 +7364,11 @@ mkdirp@^0.5.3: dependencies: minimist "^1.2.5" +mkdirp@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + moment@^2.19.3: version "2.29.4" resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.4.tgz#3dbe052889fe7c1b2ed966fcb3a77328964ef108" @@ -7293,17 +7427,6 @@ ms@^2.1.1: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== -multimatch@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-4.0.0.tgz#8c3c0f6e3e8449ada0af3dd29efb491a375191b3" - integrity sha512-lDmx79y1z6i7RNx0ZGCPq1bzJ6ZoDDKbvh7jxr9SJcWLkShMzXrHbYVpTdnhNM5MXpDUxCQ4DgqVttVXlBgiBQ== - dependencies: - "@types/minimatch" "^3.0.3" - array-differ "^3.0.0" - array-union "^2.1.0" - arrify "^2.0.1" - minimatch "^3.0.4" - mumath@^3.3.4: version "3.3.4" resolved "https://registry.yarnpkg.com/mumath/-/mumath-3.3.4.tgz#48d4a0f0fd8cad4e7b32096ee89b161a63d30bbf" @@ -7857,6 +7980,11 @@ parse-json@^4.0.0: error-ex "^1.3.1" json-parse-better-errors "^1.0.1" +parse-ms@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/parse-ms/-/parse-ms-2.1.0.tgz#348565a753d4391fa524029956b172cb7753097d" + integrity sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA== + parse-rect@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/parse-rect/-/parse-rect-1.2.0.tgz#e0a5b0dbaaaee637a0a1eb9779969e19399d8dec" @@ -7891,6 +8019,11 @@ pascalcase@^0.1.1: resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" integrity sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw== +path-browserify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd" + integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g== + path-dirname@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" @@ -7971,10 +8104,10 @@ picocolors@^1.0.0: resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== -picomatch@^2.0.5, picomatch@^2.2.1: - version "2.2.2" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" - integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== +picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== pidtree@^0.3.0: version "0.3.1" @@ -7998,7 +8131,7 @@ pirates@^4.0.0: dependencies: node-modules-regexp "^1.0.0" -pirates@^4.0.1: +pirates@^4.0.1, pirates@^4.0.5: version "4.0.6" resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9" integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== @@ -8282,6 +8415,13 @@ pretty-format@^26.0.0, pretty-format@^26.6.2: ansi-styles "^4.0.0" react-is "^17.0.1" +pretty-ms@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/pretty-ms/-/pretty-ms-7.0.1.tgz#7d903eaab281f7d8e03c66f867e239dc32fb73e8" + integrity sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q== + dependencies: + parse-ms "^2.1.0" + private@^0.1.8, private@~0.1.5: version "0.1.8" resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" @@ -8565,15 +8705,15 @@ recast@^0.16.1: private "~0.1.5" source-map "~0.6.1" -recast@^0.18.1: - version "0.18.10" - resolved "https://registry.yarnpkg.com/recast/-/recast-0.18.10.tgz#605ebbe621511eb89b6356a7e224bff66ed91478" - integrity sha512-XNvYvkfdAN9QewbrxeTOjgINkdY/odTgTS56ZNEWL9Ml0weT4T3sFtvnTuF+Gxyu46ANcRm1ntrF6F5LAJPAaQ== +recast@^0.20.4: + version "0.20.5" + resolved "https://registry.yarnpkg.com/recast/-/recast-0.20.5.tgz#8e2c6c96827a1b339c634dd232957d230553ceae" + integrity sha512-E5qICoPoNL4yU0H0NoBDntNB0Q5oMSNh9usFctYniLBluTthi3RsQVBXIJNbApOlvSwW/RGxIuokPcAc59J5fQ== dependencies: - ast-types "0.13.3" + ast-types "0.14.2" esprima "~4.0.0" - private "^0.1.8" source-map "~0.6.1" + tslib "^2.0.1" rechoir@^0.8.0: version "0.8.0" @@ -8845,6 +8985,11 @@ require-directory@^2.1.1: resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + require-main-filename@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" @@ -9345,14 +9490,14 @@ slash@^2.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== -slice-ansi@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" - integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== +slice-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" + integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== dependencies: - ansi-styles "^3.2.0" - astral-regex "^1.0.0" - is-fullwidth-code-point "^2.0.0" + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" snapdragon-node@^2.0.1: version "2.1.1" @@ -9580,6 +9725,15 @@ string-width@^4.1.0, string-width@^4.2.0: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.0" +string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + 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" + string.prototype.padend@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.1.0.tgz#dc08f57a8010dc5c153550318f67e13adbb72ac3" @@ -9657,6 +9811,13 @@ strip-ansi@^6.0.0: dependencies: ansi-regex "^5.0.0" +strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + strip-bom@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" @@ -9770,15 +9931,16 @@ symbol-tree@^3.2.2: resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== -table@^5.2.3: - version "5.4.6" - resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" - integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== +table@^6.0.9: + version "6.8.1" + resolved "https://registry.yarnpkg.com/table/-/table-6.8.1.tgz#ea2b71359fe03b017a5fbc296204471158080bdf" + integrity sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA== dependencies: - ajv "^6.10.2" - lodash "^4.17.14" - slice-ansi "^2.1.0" - string-width "^3.0.0" + ajv "^8.0.1" + lodash.truncate "^4.4.2" + slice-ansi "^4.0.0" + string-width "^4.2.3" + strip-ansi "^6.0.1" tapable@^2.1.1, tapable@^2.2.0: version "2.2.1" @@ -9806,7 +9968,7 @@ tape@^4.0.0: string.prototype.trim "~1.2.1" through "~2.3.8" -temp@^0.8.1: +temp@^0.8.1, temp@^0.8.4: version "0.8.4" resolved "https://registry.yarnpkg.com/temp/-/temp-0.8.4.tgz#8c97a33a4770072e0a05f919396c7665a7dd59f2" integrity sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg== @@ -10025,36 +10187,35 @@ triangulate-polyline@^1.0.0: dependencies: cdt2d "^1.0.0" -ts-migrate-plugins@^0.1.10: - version "0.1.10" - resolved "https://registry.yarnpkg.com/ts-migrate-plugins/-/ts-migrate-plugins-0.1.10.tgz#504263f663b01f366aa9551f9c05594bcbdc58f4" - integrity sha512-Tk7dIpSR/fJDNVN2ZemqHAz2jV/6TvD0NgOk5BGuFXkHZQsXz+mRr2LMmxxRHPGtck8Cj9r3hzz6tLhUgyyVBQ== +ts-migrate-plugins@^0.1.35: + version "0.1.35" + resolved "https://registry.yarnpkg.com/ts-migrate-plugins/-/ts-migrate-plugins-0.1.35.tgz#96579e07ba8ffa31ff85dfbdd0220482e641f654" + integrity sha512-DUkx7ClKhxKYPWDha9DJTZ6LhwEUszL90uH5I/O11K/6TbA96ytln1O3HL6Pt83i4mAKOlg0mQ6AMsPtL5FFkQ== dependencies: - eslint "^7.8.1" - jscodeshift "^0.7.0" - ts-migrate-server "^0.1.10" - typescript "4.0.2" + eslint "^7.14.0" + jscodeshift "^0.13.0" + json-schema "^0.4.0" + ts-migrate-server "^0.1.33" -ts-migrate-server@^0.1.10: - version "0.1.10" - resolved "https://registry.yarnpkg.com/ts-migrate-server/-/ts-migrate-server-0.1.10.tgz#d4b34e251a970a054655948d08c2b1320c74f452" - integrity sha512-vwVVgg1fI1aeYmV0/qtgETGnYMl57O2FopSynLHYU8aafa1bha6xDgoBsYa8w8AYVEtyMHt2F8WsHqmnyX/dJQ== +ts-migrate-server@^0.1.33: + version "0.1.33" + resolved "https://registry.yarnpkg.com/ts-migrate-server/-/ts-migrate-server-0.1.33.tgz#7fc38ac9ce6642399dbfbcb8e46a26e45caea8c4" + integrity sha512-MYHy10yzL2fkb2FHFQ9f54gqc5KkaVthTjtpwS4bTroYCONDelp1hbz5nxKWaP3q2oc3kBVeGuAR91RNI+yK+g== dependencies: - "@ts-morph/bootstrap" "^0.6.0" - typescript "4.0.2" + "@ts-morph/bootstrap" "^0.16.0" + pretty-ms "^7.0.1" updatable-log "^0.2.0" -ts-migrate@^0.1.10: - version "0.1.10" - resolved "https://registry.yarnpkg.com/ts-migrate/-/ts-migrate-0.1.10.tgz#4267702dea47d4859bfaf410f1088c327212c051" - integrity sha512-yARvC786gmv+HOw18GIt9PKemVfEINc5hl6Ybrkv/t80w2nxycv1MhQ/NmGNanfuO1xayqiBgoi9TNshzQQm6g== +ts-migrate@^0.1.35: + version "0.1.35" + resolved "https://registry.yarnpkg.com/ts-migrate/-/ts-migrate-0.1.35.tgz#705d65e54b9d4a5a72ee11e276bb5a5856a4b340" + integrity sha512-EmXahqwIP0a6fE1BLKKVMgJEeYn9V+CxJ19qFJ/DzkPL4PjDI/FcgPo8D519amBPy2nnlc/x1V6R6aIeHdD87w== dependencies: create-jest-runner "^0.5.3" json5 "^2.1.1" json5-writer "^0.1.8" - ts-migrate-plugins "^0.1.10" - ts-migrate-server "^0.1.10" - typescript "4.0.2" + ts-migrate-plugins "^0.1.35" + ts-migrate-server "^0.1.33" updatable-log "^0.2.0" yargs "^15.0.2" @@ -10063,6 +10224,11 @@ tslib@^1.10.0, tslib@^1.9.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.11.1.tgz#eb15d128827fbee2841549e171f45ed338ac7e35" integrity sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA== +tslib@^2.0.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.1.tgz#fd8c9a0ff42590b25703c0acb3de3d3f4ede0410" + integrity sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig== + tunnel-agent@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" @@ -10108,10 +10274,10 @@ type-check@~0.3.2: dependencies: prelude-ls "~1.1.2" -type-fest@^0.8.1: - version "0.8.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" - integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== type-name@^2.0.0: version "2.0.2" @@ -10180,21 +10346,11 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= -typescript@4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.0.2.tgz#7ea7c88777c723c681e33bf7988be5d008d05ac2" - integrity sha512-e4ERvRV2wb+rRZ/IQeb3jm2VxBsirQLpQhdxplZ2MEzGvDkkMmPglecnNDfSUBivMjP93vRbngYYDQqQ/78bcQ== - typescript@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.1.2.tgz#6369ef22516fe5e10304aae5a5c4862db55380e9" integrity sha512-thGloWsGH3SOxv1SoY7QojKi0tc+8FnOmiarEGMbd/lar7QOEd3hvlx3Fp5y6FlDUGl9L+pd4n2e+oToGMmhRQ== -typescript@~4.0.2: - version "4.0.5" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.0.5.tgz#ae9dddfd1069f1cb5beb3ef3b2170dd7c1332389" - integrity sha512-ywmr/VrTVCmNTJ6iV2LwIrfG1P+lv6luD8sUJs+2eI9NLGigaN+nUQc13iHqisq7bra9lnmUSYqbJvegraBOPQ== - unbox-primitive@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" @@ -10205,11 +10361,6 @@ unbox-primitive@^1.0.2: has-symbols "^1.0.3" which-boxed-primitive "^1.0.2" -unc-path-regex@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa" - integrity sha1-5z3T17DXxe2G+6xrCufYxqadUPo= - unicode-canonical-property-names-ecmascript@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" @@ -10258,16 +10409,6 @@ uniq@^1.0.0, uniq@^1.0.1: resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= -universalify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-1.0.0.tgz#b61a1da173e8435b2fe3c67d29b9adf8594bd16d" - integrity sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug== - -universalify@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" - integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== - unquote@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" From 0701ee9b28ae4daeaf0f7692803af19b68efafcb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 25 Jul 2023 06:05:34 +0000 Subject: [PATCH 211/274] Bump color-string from 1.5.4 to 1.9.1 (#6280) Bumps [color-string](https://github.com/Qix-/color-string) from 1.5.4 to 1.9.1. - [Release notes](https://github.com/Qix-/color-string/releases) - [Changelog](https://github.com/Qix-/color-string/blob/master/CHANGELOG.md) - [Commits](https://github.com/Qix-/color-string/compare/1.5.4...1.9.1) --- updated-dependencies: - dependency-name: color-string dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 7a244fc92f..d6603ae235 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4486,9 +4486,9 @@ color-space@^1.14.6: mumath "^3.3.4" color-string@^1.5.2: - version "1.5.4" - resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.4.tgz#dd51cd25cfee953d138fe4002372cc3d0e504cb6" - integrity sha512-57yF5yt8Xa3czSEW1jfQDE79Idk0+AkN/4KWad6tbdxUmAs3MvjxlWSWD4deYytcRfoZ9nhKyFl1kj5tBvidbw== + version "1.9.1" + resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.9.1.tgz#4467f9146f036f855b764dfb5bf8582bf342c7a4" + integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg== dependencies: color-name "^1.0.0" simple-swizzle "^0.2.2" From 1b8f0ac2e9b99e77d1d4a80764d318edc574d8a2 Mon Sep 17 00:00:00 2001 From: Justin Clift Date: Tue, 25 Jul 2023 17:29:58 +1000 Subject: [PATCH 212/274] Bump @babel/(various) to latest. Mostly 7.22.x (#6281) --- package.json | 10 +- yarn.lock | 1171 +++++++++++++++++++++++++++++++++++++------------- 2 files changed, 875 insertions(+), 306 deletions(-) diff --git a/package.json b/package.json index 73ee7435a2..61070e80df 100644 --- a/package.json +++ b/package.json @@ -79,13 +79,13 @@ "use-media": "^1.4.0" }, "devDependencies": { - "@babel/cli": "^7.10.4", - "@babel/core": "^7.10.4", - "@babel/plugin-proposal-class-properties": "^7.10.4", + "@babel/cli": "^7.22.9", + "@babel/core": "^7.22.9", + "@babel/plugin-proposal-class-properties": "^7.18.6", "@babel/plugin-transform-object-assign": "^7.2.0", - "@babel/preset-env": "^7.10.4", + "@babel/preset-env": "^7.22.9", "@babel/preset-react": "^7.0.0", - "@babel/preset-typescript": "^7.10.4", + "@babel/preset-typescript": "^7.22.5", "@cypress/code-coverage": "^3.8.1", "@percy/agent": "0.24.3", "@percy/cypress": "2.3.4", diff --git a/yarn.lock b/yarn.lock index d6603ae235..a2c3447ca3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -59,21 +59,21 @@ lodash "^4.17.15" resize-observer-polyfill "^1.5.0" -"@babel/cli@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/cli/-/cli-7.10.4.tgz#ba38ad6d0b4b772a67b106934b7c33d656031896" - integrity sha512-xX99K4V1BzGJdQANK5cwK+EpF1vP9gvqhn+iWvG+TubCjecplW7RSQimJ2jcCvu6fnK5pY6mZMdu6EWTj32QVA== +"@babel/cli@^7.22.9": + version "7.22.9" + resolved "https://registry.yarnpkg.com/@babel/cli/-/cli-7.22.9.tgz#501b3614aeda7399371f6d5991404f069b059986" + integrity sha512-nb2O7AThqRo7/E53EGiuAkMaRbb7J5Qp3RvN+dmua1U+kydm0oznkhqbTEG15yk26G/C3yL6OdZjzgl+DMXVVA== dependencies: + "@jridgewell/trace-mapping" "^0.3.17" commander "^4.0.1" convert-source-map "^1.1.0" fs-readdir-recursive "^1.1.0" - glob "^7.0.0" - lodash "^4.17.13" + glob "^7.2.0" make-dir "^2.1.0" slash "^2.0.0" - source-map "^0.5.0" optionalDependencies: - chokidar "^2.1.8" + "@nicolo-ribaudo/chokidar-2" "2.1.8-no-fsevents.3" + chokidar "^3.4.0" "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.22.5": version "7.22.5" @@ -82,16 +82,7 @@ dependencies: "@babel/highlight" "^7.22.5" -"@babel/compat-data@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.10.4.tgz#706a6484ee6f910b719b696a9194f8da7d7ac241" - integrity sha512-t+rjExOrSVvjQQXNp5zAIYDp00KjdvGl/TpDX5REPr0S9IAIPQMTilcfG6q8c0QFmj9lSTVySV2VTsyggvtNIw== - dependencies: - browserslist "^4.12.0" - invariant "^2.2.4" - semver "^5.5.0" - -"@babel/compat-data@^7.22.9": +"@babel/compat-data@^7.22.5", "@babel/compat-data@^7.22.6", "@babel/compat-data@^7.22.9": version "7.22.9" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.22.9.tgz#71cdb00a1ce3a329ce4cbec3a44f9fef35669730" integrity sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ== @@ -116,7 +107,7 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/core@^7.1.0": +"@babel/core@^7.1.0", "@babel/core@^7.22.9", "@babel/core@^7.7.5": version "7.22.9" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.22.9.tgz#bd96492c68822198f33e8a256061da3cf391f58f" integrity sha512-G2EgeufBcYw27U4hhoIwFcgc1XU7TlXJ3mv04oOv1WCuo900U/anZSPzEqNjwdjgffkk2Gs0AN0dW1CKVLcG7w== @@ -137,29 +128,16 @@ json5 "^2.2.2" semver "^6.3.1" -"@babel/core@^7.10.4", "@babel/core@^7.7.5": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.10.4.tgz#780e8b83e496152f8dd7df63892b2e052bf1d51d" - integrity sha512-3A0tS0HWpy4XujGc7QtOIHTeNwUgWaZc/WuS5YQrfhU67jnVmsD6OGPc1AKHH0LJHQICGncy3+YUjIhVlfDdcA== +"@babel/generator@^7.11.5", "@babel/generator@^7.4.4": + version "7.11.6" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.11.6.tgz#b868900f81b163b4d464ea24545c61cbac4dc620" + integrity sha512-DWtQ1PV3r+cLbySoHrwn9RWEgKMBLLma4OBQloPRyDYvc5msJM9kvTLo1YnlJd1P/ZuKbdli3ijr5q3FvAF3uA== dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/generator" "^7.10.4" - "@babel/helper-module-transforms" "^7.10.4" - "@babel/helpers" "^7.10.4" - "@babel/parser" "^7.10.4" - "@babel/template" "^7.10.4" - "@babel/traverse" "^7.10.4" - "@babel/types" "^7.10.4" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.1" - json5 "^2.1.2" - lodash "^4.17.13" - resolve "^1.3.2" - semver "^5.4.1" + "@babel/types" "^7.11.5" + jsesc "^2.5.1" source-map "^0.5.0" -"@babel/generator@^7.10.4", "@babel/generator@^7.22.7", "@babel/generator@^7.22.9", "@babel/generator@^7.4.0": +"@babel/generator@^7.22.7", "@babel/generator@^7.22.9", "@babel/generator@^7.4.0": version "7.22.9" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.22.9.tgz#572ecfa7a31002fa1de2a9d91621fd895da8493d" integrity sha512-KtLMbmicyuK2Ak/FTCJVbDnkN1SlT8/kceFTiuDiiRUUSMnHMidxSCdG4ndkTOHHpoomWe/4xkvHkEOncwjYIw== @@ -169,15 +147,6 @@ "@jridgewell/trace-mapping" "^0.3.17" jsesc "^2.5.1" -"@babel/generator@^7.11.5", "@babel/generator@^7.4.4": - version "7.11.6" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.11.6.tgz#b868900f81b163b4d464ea24545c61cbac4dc620" - integrity sha512-DWtQ1PV3r+cLbySoHrwn9RWEgKMBLLma4OBQloPRyDYvc5msJM9kvTLo1YnlJd1P/ZuKbdli3ijr5q3FvAF3uA== - dependencies: - "@babel/types" "^7.11.5" - jsesc "^2.5.1" - source-map "^0.5.0" - "@babel/helper-annotate-as-pure@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz#5bf0d495a3f757ac3bda48b5bf3b3ba309c72ba3" @@ -185,6 +154,13 @@ dependencies: "@babel/types" "^7.10.4" +"@babel/helper-annotate-as-pure@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz#e7f06737b197d580a01edf75d97e2c8be99d3882" + integrity sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg== + dependencies: + "@babel/types" "^7.22.5" + "@babel/helper-builder-binary-assignment-operator-visitor@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz#bb0b75f31bf98cbf9ff143c1ae578b87274ae1a3" @@ -193,6 +169,13 @@ "@babel/helper-explode-assignable-expression" "^7.10.4" "@babel/types" "^7.10.4" +"@babel/helper-builder-binary-assignment-operator-visitor@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.5.tgz#a3f4758efdd0190d8927fcffd261755937c71878" + integrity sha512-m1EP3lVOPptR+2DwD125gziZNcmoNSHGmJROKoy87loWUQyJaVXDgpmruWqDARZSmtYQ+Dl25okU8+qhVzuykw== + dependencies: + "@babel/types" "^7.22.5" + "@babel/helper-builder-react-jsx@^7.3.0": version "7.3.0" resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.3.0.tgz#a1ac95a5d2b3e88ae5e54846bf462eeb81b318a4" @@ -201,18 +184,7 @@ "@babel/types" "^7.3.0" esutils "^2.0.0" -"@babel/helper-compilation-targets@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.10.4.tgz#804ae8e3f04376607cc791b9d47d540276332bd2" - integrity sha512-a3rYhlsGV0UHNDvrtOXBg8/OpfV0OKTkxKPzIplS1zpx7CygDcWWxckxZeDd3gzPzC4kUT0A4nVFDK0wGMh4MQ== - dependencies: - "@babel/compat-data" "^7.10.4" - browserslist "^4.12.0" - invariant "^2.2.4" - levenary "^1.1.1" - semver "^5.5.0" - -"@babel/helper-compilation-targets@^7.22.9": +"@babel/helper-compilation-targets@^7.22.5", "@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.22.9": version "7.22.9" resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.9.tgz#f9d0a7aaaa7cd32a3f31c9316a69f5a9bcacb892" integrity sha512-7qYrNM6HjpnPHJbopxmb8hSPoZ0gsX8IvUS32JGVoy+pU9e5N0nLr1VjJoR6kA4d9dmGLxNYOjeB8sUDal2WMw== @@ -223,7 +195,22 @@ lru-cache "^5.1.1" semver "^6.3.1" -"@babel/helper-create-class-features-plugin@^7.10.4", "@babel/helper-create-class-features-plugin@^7.3.0": +"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.22.5", "@babel/helper-create-class-features-plugin@^7.22.9": + version "7.22.9" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.9.tgz#c36ea240bb3348f942f08b0fbe28d6d979fab236" + integrity sha512-Pwyi89uO4YrGKxL/eNJ8lfEH55DnRloGPOseaA8NFNL6jAUnn+KccaISiFazCj5IolPPDjGSdzQzXVzODVRqUQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-environment-visitor" "^7.22.5" + "@babel/helper-function-name" "^7.22.5" + "@babel/helper-member-expression-to-functions" "^7.22.5" + "@babel/helper-optimise-call-expression" "^7.22.5" + "@babel/helper-replace-supers" "^7.22.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + semver "^6.3.1" + +"@babel/helper-create-class-features-plugin@^7.3.0": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.4.tgz#2d4015d0136bd314103a70d84a7183e4b344a355" integrity sha512-9raUiOsXPxzzLjCXeosApJItoMnX3uyT4QdM2UldffuGApNrF8e938MwNpDCK9CPoyxrEoCgT+hObJc3mZa6lQ== @@ -244,6 +231,15 @@ "@babel/helper-regex" "^7.10.4" regexpu-core "^4.7.0" +"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.22.5": + version "7.22.9" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.9.tgz#9d8e61a8d9366fe66198f57c40565663de0825f6" + integrity sha512-+svjVa/tFwsNSG4NEy1h85+HQ5imbT92Q5/bgtS7P0GTQlP8WuFdqsiABmQouhiFGyV66oGxZFpeYHza1rNsKw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + regexpu-core "^5.3.1" + semver "^6.3.1" + "@babel/helper-define-map@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.10.4.tgz#f037ad794264f729eda1889f4ee210b870999092" @@ -253,6 +249,17 @@ "@babel/types" "^7.10.4" lodash "^4.17.13" +"@babel/helper-define-polyfill-provider@^0.4.2": + version "0.4.2" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.2.tgz#82c825cadeeeee7aad237618ebbe8fa1710015d7" + integrity sha512-k0qnnOqHn5dK9pZpfD5XXZ9SojAITdCKRn2Lp6rnDGzIbaP0rHyMPk/4wsSxVBVz4RfN0q6VpXWP2pDGIoQ7hw== + dependencies: + "@babel/helper-compilation-targets" "^7.22.6" + "@babel/helper-plugin-utils" "^7.22.5" + debug "^4.1.1" + lodash.debounce "^4.0.8" + resolve "^1.14.2" + "@babel/helper-environment-visitor@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz#f06dd41b7c1f44e1f8da6c4055b41ab3a09a7e98" @@ -316,7 +323,7 @@ dependencies: "@babel/types" "^7.22.5" -"@babel/helper-module-transforms@^7.10.4", "@babel/helper-module-transforms@^7.22.9": +"@babel/helper-module-transforms@^7.10.4", "@babel/helper-module-transforms@^7.22.5", "@babel/helper-module-transforms@^7.22.9": version "7.22.9" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.22.9.tgz#92dfcb1fbbb2bc62529024f72d942a8c97142129" integrity sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ== @@ -334,7 +341,7 @@ dependencies: "@babel/types" "^7.22.5" -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.8.0": +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295" integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== @@ -362,7 +369,16 @@ "@babel/traverse" "^7.10.4" "@babel/types" "^7.10.4" -"@babel/helper-replace-supers@^7.10.4": +"@babel/helper-remap-async-to-generator@^7.22.5": + version "7.22.9" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.9.tgz#53a25b7484e722d7efb9c350c75c032d4628de82" + integrity sha512-8WWC4oR4Px+tr+Fp0X3RHDVfINGpF3ad1HIbrc8A77epiR6eMMc6jsgozkzT2uDiOOdoS9cLIQ+XD2XvI2WSmQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-environment-visitor" "^7.22.5" + "@babel/helper-wrap-function" "^7.22.9" + +"@babel/helper-replace-supers@^7.10.4", "@babel/helper-replace-supers@^7.22.5", "@babel/helper-replace-supers@^7.22.9": version "7.22.9" resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.22.9.tgz#cbdc27d6d8d18cd22c81ae4293765a5d9afd0779" integrity sha512-LJIKvvpgPOPUThdYqcX6IXRuIcTkcAub0IaDRGCZH0p5GPUp7PhRU9QVgFcDDd51BaPkk77ZjqFwh6DZTAEmGg== @@ -378,6 +394,13 @@ dependencies: "@babel/types" "^7.22.5" +"@babel/helper-skip-transparent-expression-wrappers@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz#007f15240b5751c537c40e77abb4e89eeaaa8847" + integrity sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q== + dependencies: + "@babel/types" "^7.22.5" + "@babel/helper-split-export-declaration@^7.10.4", "@babel/helper-split-export-declaration@^7.11.0", "@babel/helper-split-export-declaration@^7.22.6": version "7.22.6" resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c" @@ -410,7 +433,16 @@ "@babel/traverse" "^7.10.4" "@babel/types" "^7.10.4" -"@babel/helpers@^7.10.4", "@babel/helpers@^7.22.6": +"@babel/helper-wrap-function@^7.22.9": + version "7.22.9" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.22.9.tgz#189937248c45b0182c1dcf32f3444ca153944cb9" + integrity sha512-sZ+QzfauuUEfxSEjKFmi3qDSHgLsTPK/pEpoD/qonZKOtTPTLbf59oabPQ4rKekt9lFcj/hTZaOhWwFYrgjk+Q== + dependencies: + "@babel/helper-function-name" "^7.22.5" + "@babel/template" "^7.22.5" + "@babel/types" "^7.22.5" + +"@babel/helpers@^7.22.6": version "7.22.6" resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.22.6.tgz#8e61d3395a4f0c5a8060f309fb008200969b5ecd" integrity sha512-YjDs6y/fVOYFV8hAf1rxd1QvR9wJe1pDBZ2AREKq/SDayfPzgk0PBnVuTCE5X1acEpMMNOVUqoe+OwiZGJ+OaA== @@ -447,7 +479,23 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.11.5.tgz#c7ff6303df71080ec7a4f5b8c003c58f1cf51037" integrity sha512-X9rD8qqm695vgmeaQ4fvz/o3+Wk4ZzQvSHkDBgpYKxpD4qTAUm88ZKtHkVqIOsYFFbIQ6wQYhC6q7pjqVK0E0Q== -"@babel/plugin-proposal-async-generator-functions@^7.10.4", "@babel/plugin-proposal-async-generator-functions@^7.2.0": +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.5.tgz#87245a21cd69a73b0b81bcda98d443d6df08f05e" + integrity sha512-NP1M5Rf+u2Gw9qfSO4ihjcTGW5zXTi36ITLd4/EoAcEhIZ0yjMqmftDNl3QC19CX7olhrjpyU454g/2W7X0jvQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.5.tgz#fef09f9499b1f1c930da8a0c419db42167d792ca" + integrity sha512-31Bb65aZaUwqCbWMnZPduIZxCBngHFlzyN6Dq6KAJjtx+lx6ohKHubc61OomYi7XwVD4Ol0XCVz4h+pYFR048g== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/plugin-transform-optional-chaining" "^7.22.5" + +"@babel/plugin-proposal-async-generator-functions@^7.2.0": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.4.tgz#4b65abb3d9bacc6c657aaa413e56696f9f170fc6" integrity sha512-MJbxGSmejEFVOANAezdO39SObkURO5o/8b6fSH6D1pi9RZQt+ldppKPXfqgUWpSQ9asM6xaSaSJIaeWMDRP0Zg== @@ -464,23 +512,15 @@ "@babel/helper-create-class-features-plugin" "^7.3.0" "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-proposal-class-properties@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.10.4.tgz#a33bf632da390a59c7a8c570045d1115cd778807" - integrity sha512-vhwkEROxzcHGNu2mzUC0OFFNXdZ4M23ib8aRRcJSsW8BZK9pQMD7QB7csl97NBbgGZO7ZyHUyKDnxzOaP4IrCg== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-proposal-dynamic-import@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.10.4.tgz#ba57a26cb98b37741e9d5bca1b8b0ddf8291f17e" - integrity sha512-up6oID1LeidOOASNXgv/CFbgBqTuKJ0cJjz6An5tWD+NVBNlp3VNSBxv2ZdU7SYl3NxJC7agAQDApZusV6uFwQ== +"@babel/plugin-proposal-class-properties@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz#b110f59741895f7ec21a6fff696ec46265c446a3" + integrity sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-dynamic-import" "^7.8.0" + "@babel/helper-create-class-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-proposal-json-strings@^7.10.4", "@babel/plugin-proposal-json-strings@^7.2.0": +"@babel/plugin-proposal-json-strings@^7.2.0": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.10.4.tgz#593e59c63528160233bd321b1aebe0820c2341db" integrity sha512-fCL7QF0Jo83uy1K0P2YXrfX11tj3lkpN7l4dMv9Y9VkowkhkQDwFHFd8IiwyK5MZjE8UpbgokkgtcReH88Abaw== @@ -488,22 +528,6 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-json-strings" "^7.8.0" -"@babel/plugin-proposal-nullish-coalescing-operator@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.10.4.tgz#02a7e961fc32e6d5b2db0649e01bf80ddee7e04a" - integrity sha512-wq5n1M3ZUlHl9sqT2ok1T2/MTt6AXE0e1Lz4WzWBr95LsAZ5qDXe4KnFuauYyEyLiohvXFMdbsOTMyLZs91Zlw== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" - -"@babel/plugin-proposal-numeric-separator@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.10.4.tgz#ce1590ff0a65ad12970a609d78855e9a4c1aef06" - integrity sha512-73/G7QoRoeNkLZFxsoCCvlg4ezE4eM+57PnOqgaPOozd5myfj7p0muD1mRVJvbUWbOzD+q3No2bWbaKy+DJ8DA== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - "@babel/plugin-proposal-object-rest-spread@7.3.2": version "7.3.2" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.3.2.tgz#6d1859882d4d778578e41f82cc5d7bf3d5daf6c1" @@ -512,15 +536,6 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-object-rest-spread" "^7.2.0" -"@babel/plugin-proposal-object-rest-spread@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.10.4.tgz#50129ac216b9a6a55b3853fdd923e74bf553a4c0" - integrity sha512-6vh4SqRuLLarjgeOf4EaROJAHjvu9Gl+/346PbDH9yWbJyfnJ/ah3jmYKYtswEyCoWZiidvVHjHshd4WgjB9BA== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-object-rest-spread" "^7.8.0" - "@babel/plugin-transform-parameters" "^7.10.4" - "@babel/plugin-proposal-object-rest-spread@^7.4.4": version "7.11.0" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.11.0.tgz#bd81f95a1f746760ea43b6c2d3d62b11790ad0af" @@ -530,7 +545,7 @@ "@babel/plugin-syntax-object-rest-spread" "^7.8.0" "@babel/plugin-transform-parameters" "^7.10.4" -"@babel/plugin-proposal-optional-catch-binding@^7.10.4", "@babel/plugin-proposal-optional-catch-binding@^7.2.0": +"@babel/plugin-proposal-optional-catch-binding@^7.2.0": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.10.4.tgz#31c938309d24a78a49d68fdabffaa863758554dd" integrity sha512-LflT6nPh+GK2MnFiKDyLiqSqVHkQnVf7hdoAvyTnnKj9xB3docGRsdPuxp6qqqW19ifK3xgc9U5/FwrSaCNX5g== @@ -538,23 +553,12 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" -"@babel/plugin-proposal-optional-chaining@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.10.4.tgz#750f1255e930a1f82d8cdde45031f81a0d0adff7" - integrity sha512-ZIhQIEeavTgouyMSdZRap4VPPHqJJ3NEs2cuHs5p0erH+iz6khB0qfgU8g7UuJkG88+fBMy23ZiU+nuHvekJeQ== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-optional-chaining" "^7.8.0" - -"@babel/plugin-proposal-private-methods@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.10.4.tgz#b160d972b8fdba5c7d111a145fc8c421fc2a6909" - integrity sha512-wh5GJleuI8k3emgTg5KkJK6kHNsGEr0uBTDBuQUBJwckk9xs1ez79ioheEVVxMLyPscB0LfkbVHslQqIzWV6Bw== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2": + version "7.21.0-placeholder-for-preset-env.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz#7844f9289546efa9febac2de4cfe358a050bd703" + integrity sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w== -"@babel/plugin-proposal-unicode-property-regex@^7.10.4", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": +"@babel/plugin-proposal-unicode-property-regex@^7.4.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.10.4.tgz#4483cda53041ce3413b7fe2f00022665ddfaa75d" integrity sha512-H+3fOgPnEXFL9zGYtKQe4IDOPKYlZdF1kqFDQRRb8PK4B8af1vAGK04tF5iQAAsui+mHNBQSAtd2/ndEDe9wuA== @@ -562,28 +566,63 @@ "@babel/helper-create-regexp-features-plugin" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-syntax-async-generators@^7.2.0", "@babel/plugin-syntax-async-generators@^7.8.0": +"@babel/plugin-syntax-async-generators@^7.2.0", "@babel/plugin-syntax-async-generators@^7.8.0", "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-class-properties@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.10.4.tgz#6644e6a0baa55a61f9e3231f6c9eeb6ee46c124c" - integrity sha512-GCSBF7iUle6rNugfURwNmCGG3Z/2+opxAMLs1nND4bhEG5PuxTIggDBoeYYSujAlLtsupzOHYJQgPS3pivwXIA== +"@babel/plugin-syntax-class-properties@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" + integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-syntax-dynamic-import@^7.8.0": +"@babel/plugin-syntax-class-static-block@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" + integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-dynamic-import@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-json-strings@^7.2.0", "@babel/plugin-syntax-json-strings@^7.8.0": +"@babel/plugin-syntax-export-namespace-from@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" + integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-import-assertions@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.22.5.tgz#07d252e2aa0bc6125567f742cd58619cb14dce98" + integrity sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-syntax-import-attributes@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.22.5.tgz#ab840248d834410b829f569f5262b9e517555ecb" + integrity sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-syntax-import-meta@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" + integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-json-strings@^7.2.0", "@babel/plugin-syntax-json-strings@^7.8.0", "@babel/plugin-syntax-json-strings@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== @@ -597,7 +636,21 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0": +"@babel/plugin-syntax-jsx@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz#a6b68e84fb76e759fc3b93e901876ffabbe1d918" + integrity sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-syntax-logical-assignment-operators@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" + integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== @@ -611,7 +664,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.8.0": +"@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.8.0", "@babel/plugin-syntax-object-rest-spread@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== @@ -625,42 +678,83 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-syntax-optional-catch-binding@^7.2.0", "@babel/plugin-syntax-optional-catch-binding@^7.8.0": +"@babel/plugin-syntax-optional-catch-binding@^7.2.0", "@babel/plugin-syntax-optional-catch-binding@^7.8.0", "@babel/plugin-syntax-optional-catch-binding@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-optional-chaining@^7.8.0": +"@babel/plugin-syntax-optional-chaining@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-top-level-await@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.10.4.tgz#4bbeb8917b54fcf768364e0a81f560e33a3ef57d" - integrity sha512-ni1brg4lXEmWyafKr0ccFWkJG0CeMt4WV1oyeBW6EFObF4oOHclbkj5cARxAPQyAQ2UTuplJyK4nfkXIMMFvsQ== +"@babel/plugin-syntax-private-property-in-object@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad" + integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-syntax-typescript@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.10.4.tgz#2f55e770d3501e83af217d782cb7517d7bb34d25" - integrity sha512-oSAEz1YkBCAKr5Yiq8/BNtvSAPwkp/IyUnwZogd8p+F0RuYQQrLeRUzIQhueQTTBy/F+a40uS7OFKxnkRvmvFQ== +"@babel/plugin-syntax-top-level-await@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" + integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-typescript@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz#aac8d383b062c5072c647a31ef990c1d0af90272" + integrity sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-syntax-unicode-sets-regex@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz#d49a3b3e6b52e5be6740022317580234a6a47357" + integrity sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-arrow-functions@^7.10.4", "@babel/plugin-transform-arrow-functions@^7.2.0": +"@babel/plugin-transform-arrow-functions@^7.2.0": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.4.tgz#e22960d77e697c74f41c501d44d73dbf8a6a64cd" integrity sha512-9J/oD1jV0ZCBcgnoFWFq1vJd4msoKb/TCpGNFyyLt0zABdcvgK3aYikZ8HjzB14c26bc7E3Q1yugpwGy2aTPNA== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-async-to-generator@^7.10.4", "@babel/plugin-transform-async-to-generator@^7.4.4": +"@babel/plugin-transform-arrow-functions@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.22.5.tgz#e5ba566d0c58a5b2ba2a8b795450641950b71958" + integrity sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-async-generator-functions@^7.22.7": + version "7.22.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.7.tgz#053e76c0a903b72b573cb1ab7d6882174d460a1b" + integrity sha512-7HmE7pk/Fmke45TODvxvkxRMV9RazV+ZZzhOL9AG8G29TLrr3jkjwF7uJfxZ30EoXpO+LJkq4oA8NjO2DTnEDg== + dependencies: + "@babel/helper-environment-visitor" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-remap-async-to-generator" "^7.22.5" + "@babel/plugin-syntax-async-generators" "^7.8.4" + +"@babel/plugin-transform-async-to-generator@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.22.5.tgz#c7a85f44e46f8952f6d27fe57c2ed3cc084c3775" + integrity sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ== + dependencies: + "@babel/helper-module-imports" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-remap-async-to-generator" "^7.22.5" + +"@babel/plugin-transform-async-to-generator@^7.4.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.10.4.tgz#41a5017e49eb6f3cda9392a51eef29405b245a37" integrity sha512-F6nREOan7J5UXTLsDsZG3DXmZSVofr2tGNwfdrVwkDWHfQckbQXnXSPfD7iO+c/2HGqycwyLST3DnZ16n+cBJQ== @@ -669,14 +763,28 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/helper-remap-async-to-generator" "^7.10.4" -"@babel/plugin-transform-block-scoped-functions@^7.10.4", "@babel/plugin-transform-block-scoped-functions@^7.2.0": +"@babel/plugin-transform-block-scoped-functions@^7.2.0": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.10.4.tgz#1afa595744f75e43a91af73b0d998ecfe4ebc2e8" integrity sha512-WzXDarQXYYfjaV1szJvN3AD7rZgZzC1JtjJZ8dMHUyiK8mxPRahynp14zzNjU3VkPqPsO38CzxiWO1c9ARZ8JA== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-block-scoping@^7.10.4", "@babel/plugin-transform-block-scoping@^7.4.4": +"@babel/plugin-transform-block-scoped-functions@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.22.5.tgz#27978075bfaeb9fa586d3cb63a3d30c1de580024" + integrity sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-block-scoping@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.22.5.tgz#8bfc793b3a4b2742c0983fadc1480d843ecea31b" + integrity sha512-EcACl1i5fSQ6bt+YGuU/XGCeZKStLmyVGytWkpyhCLeQVA0eu6Wtiw92V+I1T/hnezUv7j74dA/Ro69gWcU+hg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-block-scoping@^7.4.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.10.4.tgz#a670d1364bb5019a621b9ea2001482876d734787" integrity sha512-J3b5CluMg3hPUii2onJDRiaVbPtKFPLEaV5dOPY5OeAbDi1iU/UbbFFTgwb7WnanaDy7bjU35kc26W3eM5Qa0A== @@ -684,7 +792,39 @@ "@babel/helper-plugin-utils" "^7.10.4" lodash "^4.17.13" -"@babel/plugin-transform-classes@^7.10.4", "@babel/plugin-transform-classes@^7.4.4": +"@babel/plugin-transform-class-properties@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.5.tgz#97a56e31ad8c9dc06a0b3710ce7803d5a48cca77" + integrity sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-class-static-block@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.5.tgz#3e40c46f048403472d6f4183116d5e46b1bff5ba" + integrity sha512-SPToJ5eYZLxlnp1UzdARpOGeC2GbHvr9d/UV0EukuVx8atktg194oe+C5BqQ8jRTkgLRVOPYeXRSBg1IlMoVRA== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + +"@babel/plugin-transform-classes@^7.22.6": + version "7.22.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.6.tgz#e04d7d804ed5b8501311293d1a0e6d43e94c3363" + integrity sha512-58EgM6nuPNG6Py4Z3zSuu0xWu2VfodiMi72Jt5Kj2FECmaYk1RrTXA45z6KBFsu9tRgwQDwIiY4FXTt+YsSFAQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-compilation-targets" "^7.22.6" + "@babel/helper-environment-visitor" "^7.22.5" + "@babel/helper-function-name" "^7.22.5" + "@babel/helper-optimise-call-expression" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-replace-supers" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + globals "^11.1.0" + +"@babel/plugin-transform-classes@^7.4.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.4.tgz#405136af2b3e218bc4a1926228bc917ab1a0adc7" integrity sha512-2oZ9qLjt161dn1ZE0Ms66xBncQH4In8Sqw1YWgBUZuGVJJS5c0OFZXL6dP2MRHrkU/eKhWg8CzFJhRQl50rQxA== @@ -698,21 +838,44 @@ "@babel/helper-split-export-declaration" "^7.10.4" globals "^11.1.0" -"@babel/plugin-transform-computed-properties@^7.10.4", "@babel/plugin-transform-computed-properties@^7.2.0": +"@babel/plugin-transform-computed-properties@^7.2.0": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.10.4.tgz#9ded83a816e82ded28d52d4b4ecbdd810cdfc0eb" integrity sha512-JFwVDXcP/hM/TbyzGq3l/XWGut7p46Z3QvqFMXTfk6/09m7xZHJUN9xHfsv7vqqD4YnfI5ueYdSJtXqqBLyjBw== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-destructuring@^7.10.4", "@babel/plugin-transform-destructuring@^7.4.4": +"@babel/plugin-transform-computed-properties@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.22.5.tgz#cd1e994bf9f316bd1c2dafcd02063ec261bb3869" + integrity sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/template" "^7.22.5" + +"@babel/plugin-transform-destructuring@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.22.5.tgz#d3aca7438f6c26c78cdd0b0ba920a336001b27cc" + integrity sha512-GfqcFuGW8vnEqTUBM7UtPd5A4q797LTvvwKxXTgRsFjoqaJiEg9deBG6kWeQYkVEL569NpnmpC0Pkr/8BLKGnQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-destructuring@^7.4.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.4.tgz#70ddd2b3d1bea83d01509e9bb25ddb3a74fc85e5" integrity sha512-+WmfvyfsyF603iPa6825mq6Qrb7uLjTOsa3XOFzlYcYDHSS4QmpOWOL0NNBY5qMbvrcf3tq0Cw+v4lxswOBpgA== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-dotall-regex@^7.10.4", "@babel/plugin-transform-dotall-regex@^7.4.4": +"@babel/plugin-transform-dotall-regex@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.22.5.tgz#dbb4f0e45766eb544e193fb00e65a1dd3b2a4165" + integrity sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-dotall-regex@^7.4.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.10.4.tgz#469c2062105c1eb6a040eaf4fac4b488078395ee" integrity sha512-ZEAVvUTCMlMFAbASYSVQoxIbHm2OkG2MseW6bV2JjIygOjdVv8tuxrCTzj1+Rynh7ODb8GivUy7dzEXzEhuPaA== @@ -720,14 +883,29 @@ "@babel/helper-create-regexp-features-plugin" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-duplicate-keys@^7.10.4", "@babel/plugin-transform-duplicate-keys@^7.2.0": +"@babel/plugin-transform-duplicate-keys@^7.2.0": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.10.4.tgz#697e50c9fee14380fe843d1f306b295617431e47" integrity sha512-GL0/fJnmgMclHiBTTWXNlYjYsA7rDrtsazHG6mglaGSTh0KsrW04qml+Bbz9FL0LcJIRwBWL5ZqlNHKTkU3xAA== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-exponentiation-operator@^7.10.4", "@babel/plugin-transform-exponentiation-operator@^7.2.0": +"@babel/plugin-transform-duplicate-keys@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.22.5.tgz#b6e6428d9416f5f0bba19c70d1e6e7e0b88ab285" + integrity sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-dynamic-import@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.5.tgz#d6908a8916a810468c4edff73b5b75bda6ad393e" + integrity sha512-0MC3ppTB1AMxd8fXjSrbPa7LT9hrImt+/fcj+Pg5YMD7UQyWp/02+JWpdnCymmsXwIx5Z+sYn1bwCn4ZJNvhqQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + +"@babel/plugin-transform-exponentiation-operator@^7.2.0": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.10.4.tgz#5ae338c57f8cf4001bdb35607ae66b92d665af2e" integrity sha512-S5HgLVgkBcRdyQAHbKj+7KyuWx8C6t5oETmUuwz1pt3WTWJhsUV0WIIXuVvfXMxl/QQyHKlSCNNtaIamG8fysw== @@ -735,14 +913,46 @@ "@babel/helper-builder-binary-assignment-operator-visitor" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-for-of@^7.10.4", "@babel/plugin-transform-for-of@^7.4.4": +"@babel/plugin-transform-exponentiation-operator@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.22.5.tgz#402432ad544a1f9a480da865fda26be653e48f6a" + integrity sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-export-namespace-from@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.5.tgz#57c41cb1d0613d22f548fddd8b288eedb9973a5b" + integrity sha512-X4hhm7FRnPgd4nDA4b/5V280xCx6oL7Oob5+9qVS5C13Zq4bh1qq7LU0GgRU6b5dBWBvhGaXYVB4AcN6+ol6vg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + +"@babel/plugin-transform-for-of@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.5.tgz#ab1b8a200a8f990137aff9a084f8de4099ab173f" + integrity sha512-3kxQjX1dU9uudwSshyLeEipvrLjBCVthCgeTp6CzE/9JYrlAIaeekVxRpCWsDDfYTfRZRoCeZatCQvwo+wvK8A== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-for-of@^7.4.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.4.tgz#c08892e8819d3a5db29031b115af511dbbfebae9" integrity sha512-ItdQfAzu9AlEqmusA/65TqJ79eRcgGmpPPFvBnGILXZH975G0LNjP1yjHvGgfuCxqrPPueXOPe+FsvxmxKiHHQ== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-function-name@^7.10.4", "@babel/plugin-transform-function-name@^7.4.4": +"@babel/plugin-transform-function-name@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.22.5.tgz#935189af68b01898e0d6d99658db6b164205c143" + integrity sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg== + dependencies: + "@babel/helper-compilation-targets" "^7.22.5" + "@babel/helper-function-name" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-function-name@^7.4.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.10.4.tgz#6a467880e0fc9638514ba369111811ddbe2644b7" integrity sha512-OcDCq2y5+E0dVD5MagT5X+yTRbcvFjDI2ZVAottGH6tzqjx/LKpgkUepu3hp/u4tZBzxxpNGwLsAvGBvQ2mJzg== @@ -750,21 +960,51 @@ "@babel/helper-function-name" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-literals@^7.10.4", "@babel/plugin-transform-literals@^7.2.0": +"@babel/plugin-transform-json-strings@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.5.tgz#14b64352fdf7e1f737eed68de1a1468bd2a77ec0" + integrity sha512-DuCRB7fu8MyTLbEQd1ew3R85nx/88yMoqo2uPSjevMj3yoN7CDM8jkgrY0wmVxfJZyJ/B9fE1iq7EQppWQmR5A== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-json-strings" "^7.8.3" + +"@babel/plugin-transform-literals@^7.2.0": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.10.4.tgz#9f42ba0841100a135f22712d0e391c462f571f3c" integrity sha512-Xd/dFSTEVuUWnyZiMu76/InZxLTYilOSr1UlHV+p115Z/Le2Fi1KXkJUYz0b42DfndostYlPub3m8ZTQlMaiqQ== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-member-expression-literals@^7.10.4", "@babel/plugin-transform-member-expression-literals@^7.2.0": +"@babel/plugin-transform-literals@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.22.5.tgz#e9341f4b5a167952576e23db8d435849b1dd7920" + integrity sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-logical-assignment-operators@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.5.tgz#66ae5f068fd5a9a5dc570df16f56c2a8462a9d6c" + integrity sha512-MQQOUW1KL8X0cDWfbwYP+TbVbZm16QmQXJQ+vndPtH/BoO0lOKpVoEDMI7+PskYxH+IiE0tS8xZye0qr1lGzSA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + +"@babel/plugin-transform-member-expression-literals@^7.2.0": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.10.4.tgz#b1ec44fcf195afcb8db2c62cd8e551c881baf8b7" integrity sha512-0bFOvPyAoTBhtcJLr9VcwZqKmSjFml1iVxvPL0ReomGU53CX53HsM4h2SzckNdkQcHox1bpAqzxBI1Y09LlBSw== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-modules-amd@^7.10.4", "@babel/plugin-transform-modules-amd@^7.2.0": +"@babel/plugin-transform-member-expression-literals@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.22.5.tgz#4fcc9050eded981a468347dd374539ed3e058def" + integrity sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-modules-amd@^7.2.0": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.10.4.tgz#cb407c68b862e4c1d13a2fc738c7ec5ed75fc520" integrity sha512-3Fw+H3WLUrTlzi3zMiZWp3AR4xadAEMv6XRCYnd5jAlLM61Rn+CRJaZMaNvIpcJpQ3vs1kyifYvEVPFfoSkKOA== @@ -773,7 +1013,24 @@ "@babel/helper-plugin-utils" "^7.10.4" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-commonjs@^7.10.4", "@babel/plugin-transform-modules-commonjs@^7.4.4": +"@babel/plugin-transform-modules-amd@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.22.5.tgz#4e045f55dcf98afd00f85691a68fc0780704f526" + integrity sha512-R+PTfLTcYEmb1+kK7FNkhQ1gP4KgjpSO6HfH9+f8/yfp2Nt3ggBjiVpRwmwTlfqZLafYKJACy36yDXlEmI9HjQ== + dependencies: + "@babel/helper-module-transforms" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-modules-commonjs@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.22.5.tgz#7d9875908d19b8c0536085af7b053fd5bd651bfa" + integrity sha512-B4pzOXj+ONRmuaQTg05b3y/4DuFz3WcCNAXPLb2Q0GT0TrGKGxNKV4jwsXts+StaM0LQczZbOpj8o1DLPDJIiA== + dependencies: + "@babel/helper-module-transforms" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-simple-access" "^7.22.5" + +"@babel/plugin-transform-modules-commonjs@^7.4.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.4.tgz#66667c3eeda1ebf7896d41f1f16b17105a2fbca0" integrity sha512-Xj7Uq5o80HDLlW64rVfDBhao6OX89HKUmb+9vWYaLXBZOma4gA6tw4Ni1O5qVDoZWUV0fxMYA0aYzOawz0l+1w== @@ -783,7 +1040,17 @@ "@babel/helper-simple-access" "^7.10.4" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-systemjs@^7.10.4", "@babel/plugin-transform-modules-systemjs@^7.4.4": +"@babel/plugin-transform-modules-systemjs@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.22.5.tgz#18c31410b5e579a0092638f95c896c2a98a5d496" + integrity sha512-emtEpoaTMsOs6Tzz+nbmcePl6AKVtS1yC4YNAeMun9U8YCsgadPNxnOPQ8GhHFB2qdx+LZu9LgoC0Lthuu05DQ== + dependencies: + "@babel/helper-hoist-variables" "^7.22.5" + "@babel/helper-module-transforms" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-validator-identifier" "^7.22.5" + +"@babel/plugin-transform-modules-systemjs@^7.4.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.10.4.tgz#8f576afd943ac2f789b35ded0a6312f929c633f9" integrity sha512-Tb28LlfxrTiOTGtZFsvkjpyjCl9IoaRI52AEU/VIwOwvDQWtbNJsAqTXzh+5R7i74e/OZHH2c2w2fsOqAfnQYQ== @@ -793,7 +1060,7 @@ "@babel/helper-plugin-utils" "^7.10.4" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-umd@^7.10.4", "@babel/plugin-transform-modules-umd@^7.2.0": +"@babel/plugin-transform-modules-umd@^7.2.0": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.10.4.tgz#9a8481fe81b824654b3a0b65da3df89f3d21839e" integrity sha512-mohW5q3uAEt8T45YT7Qc5ws6mWgJAaL/8BfWD9Dodo1A3RKWli8wTS+WiQ/knF+tXlPirW/1/MqzzGfCExKECA== @@ -801,20 +1068,59 @@ "@babel/helper-module-transforms" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-named-capturing-groups-regex@^7.10.4", "@babel/plugin-transform-named-capturing-groups-regex@^7.4.5": +"@babel/plugin-transform-modules-umd@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.22.5.tgz#4694ae40a87b1745e3775b6a7fe96400315d4f98" + integrity sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ== + dependencies: + "@babel/helper-module-transforms" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-named-capturing-groups-regex@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz#67fe18ee8ce02d57c855185e27e3dc959b2e991f" + integrity sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-named-capturing-groups-regex@^7.4.5": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.10.4.tgz#78b4d978810b6f3bcf03f9e318f2fc0ed41aecb6" integrity sha512-V6LuOnD31kTkxQPhKiVYzYC/Jgdq53irJC/xBSmqcNcqFGV+PER4l6rU5SH2Vl7bH9mLDHcc0+l9HUOe4RNGKA== dependencies: "@babel/helper-create-regexp-features-plugin" "^7.10.4" -"@babel/plugin-transform-new-target@^7.10.4", "@babel/plugin-transform-new-target@^7.4.4": +"@babel/plugin-transform-new-target@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.5.tgz#1b248acea54ce44ea06dfd37247ba089fcf9758d" + integrity sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-new-target@^7.4.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.10.4.tgz#9097d753cb7b024cb7381a3b2e52e9513a9c6888" integrity sha512-YXwWUDAH/J6dlfwqlWsztI2Puz1NtUAubXhOPLQ5gjR/qmQ5U96DY4FQO8At33JN4XPBhrjB8I4eMmLROjjLjw== dependencies: "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-transform-nullish-coalescing-operator@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.5.tgz#f8872c65776e0b552e0849d7596cddd416c3e381" + integrity sha512-6CF8g6z1dNYZ/VXok5uYkkBBICHZPiGEl7oDnAx2Mt1hlHVHOSIKWJaXHjQJA5VB43KZnXZDIexMchY4y2PGdA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + +"@babel/plugin-transform-numeric-separator@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.5.tgz#57226a2ed9e512b9b446517ab6fa2d17abb83f58" + integrity sha512-NbslED1/6M+sXiwwtcAB/nieypGw02Ejf4KtDeMkCEpP6gWFMX1wI9WKYua+4oBneCCEmulOkRpwywypVZzs/g== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-transform-object-assign@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-assign/-/plugin-transform-object-assign-7.2.0.tgz#6fdeea42be17040f119e38e23ea0f49f31968bde" @@ -822,7 +1128,18 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-object-super@^7.10.4", "@babel/plugin-transform-object-super@^7.2.0": +"@babel/plugin-transform-object-rest-spread@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.5.tgz#9686dc3447df4753b0b2a2fae7e8bc33cdc1f2e1" + integrity sha512-Kk3lyDmEslH9DnvCDA1s1kkd3YWQITiBOHngOtDL9Pt6BZjzqb6hiOlb8VfjiiQJ2unmegBqZu0rx5RxJb5vmQ== + dependencies: + "@babel/compat-data" "^7.22.5" + "@babel/helper-compilation-targets" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.22.5" + +"@babel/plugin-transform-object-super@^7.2.0": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.10.4.tgz#d7146c4d139433e7a6526f888c667e314a093894" integrity sha512-5iTw0JkdRdJvr7sY0vHqTpnruUpTea32JHmq/atIWqsnNussbRzjEDyWep8UNztt1B5IusBYg8Irb0bLbiEBCQ== @@ -830,6 +1147,31 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/helper-replace-supers" "^7.10.4" +"@babel/plugin-transform-object-super@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.22.5.tgz#794a8d2fcb5d0835af722173c1a9d704f44e218c" + integrity sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-replace-supers" "^7.22.5" + +"@babel/plugin-transform-optional-catch-binding@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.5.tgz#842080be3076703be0eaf32ead6ac8174edee333" + integrity sha512-pH8orJahy+hzZje5b8e2QIlBWQvGpelS76C63Z+jhZKsmzfNaPQ+LaW6dcJ9bxTpo1mtXbgHwy765Ro3jftmUg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + +"@babel/plugin-transform-optional-chaining@^7.22.5", "@babel/plugin-transform-optional-chaining@^7.22.6": + version "7.22.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.22.6.tgz#4bacfe37001fe1901117672875e931d439811564" + integrity sha512-Vd5HiWml0mDVtcLHIoEU5sw6HOUW/Zk0acLs/SAeuLzkGNOPc9DB4nkUajemhCmTIz3eiaKREZn2hQQqF79YTg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-transform-parameters@^7.10.4", "@babel/plugin-transform-parameters@^7.4.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.10.4.tgz#7b4d137c87ea7adc2a0f3ebf53266871daa6fced" @@ -838,13 +1180,45 @@ "@babel/helper-get-function-arity" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-property-literals@^7.10.4", "@babel/plugin-transform-property-literals@^7.2.0": +"@babel/plugin-transform-parameters@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.5.tgz#c3542dd3c39b42c8069936e48717a8d179d63a18" + integrity sha512-AVkFUBurORBREOmHRKo06FjHYgjrabpdqRSwq6+C7R5iTCZOsM4QbcB27St0a4U6fffyAOqh3s/qEfybAhfivg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-private-methods@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.22.5.tgz#21c8af791f76674420a147ae62e9935d790f8722" + integrity sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-private-property-in-object@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.5.tgz#07a77f28cbb251546a43d175a1dda4cf3ef83e32" + integrity sha512-/9xnaTTJcVoBtSSmrVyhtSvO3kbqS2ODoh2juEU72c3aYonNF0OMGiaz2gjukyKM2wBBYJP38S4JiE0Wfb5VMQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-create-class-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + +"@babel/plugin-transform-property-literals@^7.2.0": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.10.4.tgz#f6fe54b6590352298785b83edd815d214c42e3c0" integrity sha512-ofsAcKiUxQ8TY4sScgsGeR2vJIsfrzqvFb9GvJ5UdXDzl+MyYCaBj/FGzXuv7qE0aJcjWMILny1epqelnFlz8g== dependencies: "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-transform-property-literals@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.22.5.tgz#b5ddabd73a4f7f26cd0e20f5db48290b88732766" + integrity sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-transform-react-display-name@^7.0.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.2.0.tgz#ebfaed87834ce8dc4279609a4f0c324c156e3eb0" @@ -877,20 +1251,35 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-jsx" "^7.2.0" -"@babel/plugin-transform-regenerator@^7.10.4", "@babel/plugin-transform-regenerator@^7.4.5": +"@babel/plugin-transform-regenerator@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.5.tgz#cd8a68b228a5f75fa01420e8cc2fc400f0fc32aa" + integrity sha512-rR7KePOE7gfEtNTh9Qw+iO3Q/e4DEsoQ+hdvM6QUDH7JRJ5qxq5AA52ZzBWbI5i9lfNuvySgOGP8ZN7LAmaiPw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + regenerator-transform "^0.15.1" + +"@babel/plugin-transform-regenerator@^7.4.5": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.10.4.tgz#2015e59d839074e76838de2159db421966fd8b63" integrity sha512-3thAHwtor39A7C04XucbMg17RcZ3Qppfxr22wYzZNcVIkPHfpM9J0SO8zuCV6SZa265kxBJSrfKTvDCYqBFXGw== dependencies: regenerator-transform "^0.14.2" -"@babel/plugin-transform-reserved-words@^7.10.4", "@babel/plugin-transform-reserved-words@^7.2.0": +"@babel/plugin-transform-reserved-words@^7.2.0": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.10.4.tgz#8f2682bcdcef9ed327e1b0861585d7013f8a54dd" integrity sha512-hGsw1O6Rew1fkFbDImZIEqA8GoidwTAilwCyWqLBM9f+e/u/sQMQu7uX6dyokfOayRuuVfKOW4O7HvaBWM+JlQ== dependencies: "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-transform-reserved-words@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.22.5.tgz#832cd35b81c287c4bcd09ce03e22199641f964fb" + integrity sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-transform-runtime@7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.2.0.tgz#566bc43f7d0aedc880eaddbd29168d0f248966ea" @@ -901,21 +1290,36 @@ resolve "^1.8.1" semver "^5.5.1" -"@babel/plugin-transform-shorthand-properties@^7.10.4", "@babel/plugin-transform-shorthand-properties@^7.2.0": +"@babel/plugin-transform-shorthand-properties@^7.2.0": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.10.4.tgz#9fd25ec5cdd555bb7f473e5e6ee1c971eede4dd6" integrity sha512-AC2K/t7o07KeTIxMoHneyX90v3zkm5cjHJEokrPEAGEy3UCp8sLKfnfOIGdZ194fyN4wfX/zZUWT9trJZ0qc+Q== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-spread@^7.10.4", "@babel/plugin-transform-spread@^7.2.0": +"@babel/plugin-transform-shorthand-properties@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.22.5.tgz#6e277654be82b5559fc4b9f58088507c24f0c624" + integrity sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-spread@^7.2.0": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.10.4.tgz#4e2c85ea0d6abaee1b24dcfbbae426fe8d674cff" integrity sha512-1e/51G/Ni+7uH5gktbWv+eCED9pP8ZpRhZB3jOaI3mmzfvJTWHkuyYTv0Z5PYtyM+Tr2Ccr9kUdQxn60fI5WuQ== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-sticky-regex@^7.10.4", "@babel/plugin-transform-sticky-regex@^7.2.0": +"@babel/plugin-transform-spread@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.22.5.tgz#6487fd29f229c95e284ba6c98d65eafb893fea6b" + integrity sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + +"@babel/plugin-transform-sticky-regex@^7.2.0": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.10.4.tgz#8f3889ee8657581130a29d9cc91d7c73b7c4a28d" integrity sha512-Ddy3QZfIbEV0VYcVtFDCjeE4xwVTJWTmUtorAJkn6u/92Z/nWJNV+mILyqHKrUxXYKA2EoCilgoPePymKL4DvQ== @@ -923,7 +1327,21 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/helper-regex" "^7.10.4" -"@babel/plugin-transform-template-literals@^7.10.4", "@babel/plugin-transform-template-literals@^7.4.4": +"@babel/plugin-transform-sticky-regex@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.22.5.tgz#295aba1595bfc8197abd02eae5fc288c0deb26aa" + integrity sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-template-literals@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.22.5.tgz#8f38cf291e5f7a8e60e9f733193f0bcc10909bff" + integrity sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-template-literals@^7.4.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.10.4.tgz#e6375407b30fcb7fcfdbba3bb98ef3e9d36df7bc" integrity sha512-4NErciJkAYe+xI5cqfS8pV/0ntlY5N5Ske/4ImxAVX7mk9Rxt2bwDTGv1Msc2BRJvWQcmYEC+yoMLdX22aE4VQ== @@ -931,30 +1349,54 @@ "@babel/helper-annotate-as-pure" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-typeof-symbol@^7.10.4", "@babel/plugin-transform-typeof-symbol@^7.2.0": +"@babel/plugin-transform-typeof-symbol@^7.2.0": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.10.4.tgz#9509f1a7eec31c4edbffe137c16cc33ff0bc5bfc" integrity sha512-QqNgYwuuW0y0H+kUE/GWSR45t/ccRhe14Fs/4ZRouNNQsyd4o3PG4OtHiIrepbM2WKUBDAXKCAK/Lk4VhzTaGA== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-typescript@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.10.4.tgz#8b01cb8d77f795422277cc3fcf45af72bc68ba78" - integrity sha512-3WpXIKDJl/MHoAN0fNkSr7iHdUMHZoppXjf2HJ9/ed5Xht5wNIsXllJXdityKOxeA3Z8heYRb1D3p2H5rfCdPw== +"@babel/plugin-transform-typeof-symbol@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.22.5.tgz#5e2ba478da4b603af8673ff7c54f75a97b716b34" + integrity sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA== dependencies: - "@babel/helper-create-class-features-plugin" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-typescript" "^7.10.4" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-unicode-escapes@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.10.4.tgz#feae523391c7651ddac115dae0a9d06857892007" - integrity sha512-y5XJ9waMti2J+e7ij20e+aH+fho7Wb7W8rNuu72aKRwCHFqQdhkdU2lo3uZ9tQuboEJcUFayXdARhcxLQ3+6Fg== +"@babel/plugin-transform-typescript@^7.22.5": + version "7.22.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.22.9.tgz#91e08ad1eb1028ecc62662a842e93ecfbf3c7234" + integrity sha512-BnVR1CpKiuD0iobHPaM1iLvcwPYN2uVFAqoLVSpEDKWuOikoCv5HbKLxclhKYUXlWkX86DoZGtqI4XhbOsyrMg== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-create-class-features-plugin" "^7.22.9" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-typescript" "^7.22.5" + +"@babel/plugin-transform-unicode-escapes@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.5.tgz#ce0c248522b1cb22c7c992d88301a5ead70e806c" + integrity sha512-biEmVg1IYB/raUO5wT1tgfacCef15Fbzhkx493D3urBI++6hpJ+RFG4SrWMn0NEZLfvilqKf3QDrRVZHo08FYg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-unicode-property-regex@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.22.5.tgz#098898f74d5c1e86660dc112057b2d11227f1c81" + integrity sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-unicode-regex@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.22.5.tgz#ce7e7bb3ef208c4ff67e02a22816656256d7a183" + integrity sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-unicode-regex@^7.10.4", "@babel/plugin-transform-unicode-regex@^7.4.4": +"@babel/plugin-transform-unicode-regex@^7.4.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.10.4.tgz#e56d71f9282fac6db09c82742055576d5e6d80a8" integrity sha512-wNfsc4s8N2qnIwpO/WP2ZiSyjfpTamT2C9V9FDH/Ljub9zw6P3SjkXcFmc0RQUt96k2fmIvtla2MMjgTwIAC+A== @@ -962,6 +1404,14 @@ "@babel/helper-create-regexp-features-plugin" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-transform-unicode-sets-regex@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.22.5.tgz#77788060e511b708ffc7d42fdfbc5b37c3004e91" + integrity sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/preset-env@7.4.5": version "7.4.5" resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.4.5.tgz#2fad7f62983d5af563b5f3139242755884998a58" @@ -1016,80 +1466,96 @@ js-levenshtein "^1.1.3" semver "^5.5.0" -"@babel/preset-env@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.10.4.tgz#fbf57f9a803afd97f4f32e4f798bb62e4b2bef5f" - integrity sha512-tcmuQ6vupfMZPrLrc38d0sF2OjLT3/bZ0dry5HchNCQbrokoQi4reXqclvkkAT5b+gWc23meVWpve5P/7+w/zw== +"@babel/preset-env@^7.22.9": + version "7.22.9" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.22.9.tgz#57f17108eb5dfd4c5c25a44c1977eba1df310ac7" + integrity sha512-wNi5H/Emkhll/bqPjsjQorSykrlfY5OWakd6AulLvMEytpKasMVUpVy8RL4qBIBs5Ac6/5i0/Rv0b/Fg6Eag/g== dependencies: - "@babel/compat-data" "^7.10.4" - "@babel/helper-compilation-targets" "^7.10.4" - "@babel/helper-module-imports" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-proposal-async-generator-functions" "^7.10.4" - "@babel/plugin-proposal-class-properties" "^7.10.4" - "@babel/plugin-proposal-dynamic-import" "^7.10.4" - "@babel/plugin-proposal-json-strings" "^7.10.4" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.10.4" - "@babel/plugin-proposal-numeric-separator" "^7.10.4" - "@babel/plugin-proposal-object-rest-spread" "^7.10.4" - "@babel/plugin-proposal-optional-catch-binding" "^7.10.4" - "@babel/plugin-proposal-optional-chaining" "^7.10.4" - "@babel/plugin-proposal-private-methods" "^7.10.4" - "@babel/plugin-proposal-unicode-property-regex" "^7.10.4" - "@babel/plugin-syntax-async-generators" "^7.8.0" - "@babel/plugin-syntax-class-properties" "^7.10.4" - "@babel/plugin-syntax-dynamic-import" "^7.8.0" - "@babel/plugin-syntax-json-strings" "^7.8.0" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + "@babel/compat-data" "^7.22.9" + "@babel/helper-compilation-targets" "^7.22.9" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-validator-option" "^7.22.5" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.22.5" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.22.5" + "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-syntax-import-assertions" "^7.22.5" + "@babel/plugin-syntax-import-attributes" "^7.22.5" + "@babel/plugin-syntax-import-meta" "^7.10.4" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" "@babel/plugin-syntax-numeric-separator" "^7.10.4" - "@babel/plugin-syntax-object-rest-spread" "^7.8.0" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" - "@babel/plugin-syntax-optional-chaining" "^7.8.0" - "@babel/plugin-syntax-top-level-await" "^7.10.4" - "@babel/plugin-transform-arrow-functions" "^7.10.4" - "@babel/plugin-transform-async-to-generator" "^7.10.4" - "@babel/plugin-transform-block-scoped-functions" "^7.10.4" - "@babel/plugin-transform-block-scoping" "^7.10.4" - "@babel/plugin-transform-classes" "^7.10.4" - "@babel/plugin-transform-computed-properties" "^7.10.4" - "@babel/plugin-transform-destructuring" "^7.10.4" - "@babel/plugin-transform-dotall-regex" "^7.10.4" - "@babel/plugin-transform-duplicate-keys" "^7.10.4" - "@babel/plugin-transform-exponentiation-operator" "^7.10.4" - "@babel/plugin-transform-for-of" "^7.10.4" - "@babel/plugin-transform-function-name" "^7.10.4" - "@babel/plugin-transform-literals" "^7.10.4" - "@babel/plugin-transform-member-expression-literals" "^7.10.4" - "@babel/plugin-transform-modules-amd" "^7.10.4" - "@babel/plugin-transform-modules-commonjs" "^7.10.4" - "@babel/plugin-transform-modules-systemjs" "^7.10.4" - "@babel/plugin-transform-modules-umd" "^7.10.4" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.10.4" - "@babel/plugin-transform-new-target" "^7.10.4" - "@babel/plugin-transform-object-super" "^7.10.4" - "@babel/plugin-transform-parameters" "^7.10.4" - "@babel/plugin-transform-property-literals" "^7.10.4" - "@babel/plugin-transform-regenerator" "^7.10.4" - "@babel/plugin-transform-reserved-words" "^7.10.4" - "@babel/plugin-transform-shorthand-properties" "^7.10.4" - "@babel/plugin-transform-spread" "^7.10.4" - "@babel/plugin-transform-sticky-regex" "^7.10.4" - "@babel/plugin-transform-template-literals" "^7.10.4" - "@babel/plugin-transform-typeof-symbol" "^7.10.4" - "@babel/plugin-transform-unicode-escapes" "^7.10.4" - "@babel/plugin-transform-unicode-regex" "^7.10.4" - "@babel/preset-modules" "^0.1.3" - "@babel/types" "^7.10.4" - browserslist "^4.12.0" - core-js-compat "^3.6.2" - invariant "^2.2.2" - levenary "^1.1.1" - semver "^5.5.0" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/plugin-syntax-top-level-await" "^7.14.5" + "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" + "@babel/plugin-transform-arrow-functions" "^7.22.5" + "@babel/plugin-transform-async-generator-functions" "^7.22.7" + "@babel/plugin-transform-async-to-generator" "^7.22.5" + "@babel/plugin-transform-block-scoped-functions" "^7.22.5" + "@babel/plugin-transform-block-scoping" "^7.22.5" + "@babel/plugin-transform-class-properties" "^7.22.5" + "@babel/plugin-transform-class-static-block" "^7.22.5" + "@babel/plugin-transform-classes" "^7.22.6" + "@babel/plugin-transform-computed-properties" "^7.22.5" + "@babel/plugin-transform-destructuring" "^7.22.5" + "@babel/plugin-transform-dotall-regex" "^7.22.5" + "@babel/plugin-transform-duplicate-keys" "^7.22.5" + "@babel/plugin-transform-dynamic-import" "^7.22.5" + "@babel/plugin-transform-exponentiation-operator" "^7.22.5" + "@babel/plugin-transform-export-namespace-from" "^7.22.5" + "@babel/plugin-transform-for-of" "^7.22.5" + "@babel/plugin-transform-function-name" "^7.22.5" + "@babel/plugin-transform-json-strings" "^7.22.5" + "@babel/plugin-transform-literals" "^7.22.5" + "@babel/plugin-transform-logical-assignment-operators" "^7.22.5" + "@babel/plugin-transform-member-expression-literals" "^7.22.5" + "@babel/plugin-transform-modules-amd" "^7.22.5" + "@babel/plugin-transform-modules-commonjs" "^7.22.5" + "@babel/plugin-transform-modules-systemjs" "^7.22.5" + "@babel/plugin-transform-modules-umd" "^7.22.5" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.22.5" + "@babel/plugin-transform-new-target" "^7.22.5" + "@babel/plugin-transform-nullish-coalescing-operator" "^7.22.5" + "@babel/plugin-transform-numeric-separator" "^7.22.5" + "@babel/plugin-transform-object-rest-spread" "^7.22.5" + "@babel/plugin-transform-object-super" "^7.22.5" + "@babel/plugin-transform-optional-catch-binding" "^7.22.5" + "@babel/plugin-transform-optional-chaining" "^7.22.6" + "@babel/plugin-transform-parameters" "^7.22.5" + "@babel/plugin-transform-private-methods" "^7.22.5" + "@babel/plugin-transform-private-property-in-object" "^7.22.5" + "@babel/plugin-transform-property-literals" "^7.22.5" + "@babel/plugin-transform-regenerator" "^7.22.5" + "@babel/plugin-transform-reserved-words" "^7.22.5" + "@babel/plugin-transform-shorthand-properties" "^7.22.5" + "@babel/plugin-transform-spread" "^7.22.5" + "@babel/plugin-transform-sticky-regex" "^7.22.5" + "@babel/plugin-transform-template-literals" "^7.22.5" + "@babel/plugin-transform-typeof-symbol" "^7.22.5" + "@babel/plugin-transform-unicode-escapes" "^7.22.5" + "@babel/plugin-transform-unicode-property-regex" "^7.22.5" + "@babel/plugin-transform-unicode-regex" "^7.22.5" + "@babel/plugin-transform-unicode-sets-regex" "^7.22.5" + "@babel/preset-modules" "^0.1.5" + "@babel/types" "^7.22.5" + babel-plugin-polyfill-corejs2 "^0.4.4" + babel-plugin-polyfill-corejs3 "^0.8.2" + babel-plugin-polyfill-regenerator "^0.5.1" + core-js-compat "^3.31.0" + semver "^6.3.1" -"@babel/preset-modules@^0.1.3": - version "0.1.3" - resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.3.tgz#13242b53b5ef8c883c3cf7dddd55b36ce80fbc72" - integrity sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg== +"@babel/preset-modules@^0.1.5": + version "0.1.6" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.6.tgz#31bcdd8f19538437339d17af00d177d854d9d458" + integrity sha512-ID2yj6K/4lKfhuU3+EX4UvNbIt7eACFbHmNUjzA+ep+B5971CknnA/9DEWKbRokfbbtblxxxXFJJrH47UEAMVg== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" @@ -1108,13 +1574,21 @@ "@babel/plugin-transform-react-jsx-self" "^7.0.0" "@babel/plugin-transform-react-jsx-source" "^7.0.0" -"@babel/preset-typescript@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.10.4.tgz#7d5d052e52a682480d6e2cc5aa31be61c8c25e36" - integrity sha512-SdYnvGPv+bLlwkF2VkJnaX/ni1sMNetcGI1+nThF1gyv6Ph8Qucc4ZZAjM5yZcE/AKRXIOTZz7eSRDWOEjPyRQ== +"@babel/preset-typescript@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.22.5.tgz#16367d8b01d640e9a507577ed4ee54e0101e51c8" + integrity sha512-YbPaal9LxztSGhmndR46FmAbkJ/1fAsw293tSU+I5E5h+cnJ3d4GTwyUgGYmOXJYdGA+uNePle4qbaRzj2NISQ== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-transform-typescript" "^7.10.4" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-validator-option" "^7.22.5" + "@babel/plugin-syntax-jsx" "^7.22.5" + "@babel/plugin-transform-modules-commonjs" "^7.22.5" + "@babel/plugin-transform-typescript" "^7.22.5" + +"@babel/regjsgen@^0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" + integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== "@babel/runtime-corejs3@^7.10.2": version "7.12.13" @@ -1626,6 +2100,11 @@ resolved "https://registry.yarnpkg.com/@mapbox/whoots-js/-/whoots-js-3.1.0.tgz#497c67a1cef50d1a2459ba60f315e448d2ad87fe" integrity sha512-Es6WcD0nO5l+2BOQS4uLfNPYQaNDfbot3X1XUoloz+x0mPDS3eeORZJl06HXjwBG1fOGwCRnzK88LMdxKRrd6Q== +"@nicolo-ribaudo/chokidar-2@2.1.8-no-fsevents.3": + version "2.1.8-no-fsevents.3" + resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.3.tgz#323d72dd25103d0c4fbdce89dadf574a787b1f9b" + integrity sha512-s88O1aVtXftvp5bCPB7WnmXc5IwOZZ7YPuwNPt+GtOOXpPvad1LfbmjYv+qII7zP6RU2QGnqve27dnLycEnyEQ== + "@nodelib/fs.scandir@2.1.3": version "2.1.3" resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz#3a582bdb53804c6ba6d146579c46e52130cf4a3b" @@ -3310,6 +3789,30 @@ babel-plugin-jest-hoist@^24.9.0: dependencies: "@types/babel__traverse" "^7.0.6" +babel-plugin-polyfill-corejs2@^0.4.4: + version "0.4.5" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.5.tgz#8097b4cb4af5b64a1d11332b6fb72ef5e64a054c" + integrity sha512-19hwUH5FKl49JEsvyTcoHakh6BE0wgXLLptIyKZ3PijHc/Ci521wygORCUCCred+E/twuqRyAkE02BAWPmsHOg== + dependencies: + "@babel/compat-data" "^7.22.6" + "@babel/helper-define-polyfill-provider" "^0.4.2" + semver "^6.3.1" + +babel-plugin-polyfill-corejs3@^0.8.2: + version "0.8.3" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.3.tgz#b4f719d0ad9bb8e0c23e3e630c0c8ec6dd7a1c52" + integrity sha512-z41XaniZL26WLrvjy7soabMXrfPWARN25PZoriDEiLMxAp50AUW3t35BGQUMg5xK3UrpVTtagIDklxYa+MhiNA== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.4.2" + core-js-compat "^3.31.0" + +babel-plugin-polyfill-regenerator@^0.5.1: + version "0.5.2" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.2.tgz#80d0f3e1098c080c8b5a65f41e9427af692dc326" + integrity sha512-tAlOptU0Xj34V1Y2PNTL4Y0FOJMDB6bZmoW39FeCQIhigGLkqu3Fj6uiXpxIf6Ij274ENdYx64y6Au+ZKlb1IA== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.4.2" + babel-plugin-transform-builtin-extend@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/babel-plugin-transform-builtin-extend/-/babel-plugin-transform-builtin-extend-1.1.2.tgz#5e96fecf58b8fa1ed74efcad88475b2af3c9116e" @@ -3788,16 +4291,6 @@ browserslist@^1.7.6: caniuse-db "^1.0.30000639" electron-to-chromium "^1.2.7" -browserslist@^4.12.0, browserslist@^4.6.0, browserslist@^4.8.5: - version "4.13.0" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.13.0.tgz#42556cba011e1b0a2775b611cba6a8eca18e940d" - integrity sha512-MINatJ5ZNrLnQ6blGvePd/QOz9Xtu+Ne+x29iQSCHfkU5BugKVJwZKn/iiL8UbpIpa3JhviKjz+XxMo0m2caFQ== - dependencies: - caniuse-lite "^1.0.30001093" - electron-to-chromium "^1.3.488" - escalade "^3.0.1" - node-releases "^1.1.58" - browserslist@^4.21.9: version "4.21.9" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.9.tgz#e11bdd3c313d7e2a9e87e8b4b0c7872b13897635" @@ -3808,6 +4301,16 @@ browserslist@^4.21.9: node-releases "^2.0.12" update-browserslist-db "^1.0.11" +browserslist@^4.6.0, browserslist@^4.8.5: + version "4.13.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.13.0.tgz#42556cba011e1b0a2775b611cba6a8eca18e940d" + integrity sha512-MINatJ5ZNrLnQ6blGvePd/QOz9Xtu+Ne+x29iQSCHfkU5BugKVJwZKn/iiL8UbpIpa3JhviKjz+XxMo0m2caFQ== + dependencies: + caniuse-lite "^1.0.30001093" + electron-to-chromium "^1.3.488" + escalade "^3.0.1" + node-releases "^1.1.58" + browserslist@^4.6.3: version "4.8.1" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.8.1.tgz#df0f50cc4b3255322fae60ae82a946baae69f8c6" @@ -4155,6 +4658,21 @@ chokidar@^2.1.8: optionalDependencies: fsevents "^1.2.7" +chokidar@^3.4.0, chokidar@^3.5.3: + version "3.5.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" + integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.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" + optionalDependencies: + fsevents "~2.3.2" + chokidar@^3.4.1: version "3.4.3" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.3.tgz#c1df38231448e45ca4ac588e6c79573ba6a57d5b" @@ -4170,21 +4688,6 @@ chokidar@^3.4.1: optionalDependencies: fsevents "~2.1.2" -chokidar@^3.5.3: - version "3.5.3" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" - integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== - dependencies: - anymatch "~3.1.2" - braces "~3.0.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" - optionalDependencies: - fsevents "~2.3.2" - chownr@^1.1.1: version "1.1.4" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" @@ -4795,7 +5298,7 @@ copy-webpack-plugin@^5.1.2: serialize-javascript "^4.0.0" webpack-log "^2.0.0" -core-js-compat@^3.1.1, core-js-compat@^3.6.2: +core-js-compat@^3.1.1: version "3.6.5" resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.6.5.tgz#2a51d9a4e25dfd6e690251aa81f99e3c05481f1c" integrity sha512-7ItTKOhOZbznhXAQ2g/slGg1PJV5zDO/WdkTwi7UEOJmkvsE32PWvx6mKtDjiMpjnR2CNf6BAD6sSxIlv7ptng== @@ -4803,6 +5306,13 @@ core-js-compat@^3.1.1, core-js-compat@^3.6.2: browserslist "^4.8.5" semver "7.0.0" +core-js-compat@^3.31.0: + version "3.31.1" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.31.1.tgz#5084ad1a46858df50ff89ace152441a63ba7aae0" + integrity sha512-wIDWd2s5/5aJSdpOJHfSibxNODxoGoWOBHt8JSPB41NOE94M7kuTPZCYLOlTtuoXTsBPKobpJ6T+y0SSy5L9SA== + dependencies: + browserslist "^4.21.9" + core-js-pure@^3.0.0: version "3.4.7" resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.4.7.tgz#c998e1892da9949200c7452cbd33c0df95be9f54" @@ -7207,7 +7717,7 @@ generic-pool@^3.7.1: resolved "https://registry.yarnpkg.com/generic-pool/-/generic-pool-3.7.1.tgz#36fe5bb83e7e0e032e5d32cd05dc00f5ff119aa8" integrity sha512-ug6DAZoNgWm6q5KhPFA+hzXfBLFQu5sTXxPpv44DmE0A2g+CiHoq9LTVdkXpZMkYVMoGw83F6W+WT0h0MFMK/w== -gensync@^1.0.0-beta.1, gensync@^1.0.0-beta.2: +gensync@^1.0.0-beta.2: version "1.0.0-beta.2" resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== @@ -7708,7 +8218,7 @@ glob-parent@~5.1.2: dependencies: is-glob "^4.0.1" -glob@^7.0.0, glob@^7.1.0: +glob@^7.1.0: version "7.1.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== @@ -7720,7 +8230,7 @@ glob@^7.0.0, glob@^7.1.0: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.1.1, glob@^7.1.2, glob@^7.1.3: +glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.2.0: version "7.2.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== @@ -9998,13 +10508,6 @@ leven@^3.1.0: resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== -levenary@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/levenary/-/levenary-1.1.1.tgz#842a9ee98d2075aa7faeedbe32679e9205f46f77" - integrity sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ== - dependencies: - leven "^3.1.0" - levn@^0.3.0, levn@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" @@ -10148,6 +10651,11 @@ lodash.clonedeep@4.5.0: resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= +lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== + lodash.escape@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/lodash.escape/-/lodash.escape-4.0.1.tgz#c9044690c21e04294beaa517712fded1fa88de98" @@ -13106,6 +13614,13 @@ reduce-simplicial-complex@^1.0.0: compare-cell "^1.0.0" compare-oriented-cell "^1.0.1" +regenerate-unicode-properties@^10.1.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz#7c3192cab6dd24e21cb4461e5ddd7dd24fa8374c" + integrity sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ== + dependencies: + regenerate "^1.4.2" + regenerate-unicode-properties@^8.2.0: version "8.2.0" resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec" @@ -13118,6 +13633,11 @@ regenerate@^1.2.1, regenerate@^1.4.0: resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== +regenerate@^1.4.2: + version "1.4.2" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" + integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== + regenerator-runtime@^0.11.0: version "0.11.1" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" @@ -13145,6 +13665,13 @@ regenerator-transform@^0.14.2: dependencies: "@babel/runtime" "^7.8.4" +regenerator-transform@^0.15.1: + version "0.15.1" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.1.tgz#f6c4e99fc1b4591f780db2586328e4d9a9d8dc56" + integrity sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg== + dependencies: + "@babel/runtime" "^7.8.4" + regex-not@^1.0.0, regex-not@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" @@ -13206,6 +13733,18 @@ regexpu-core@^4.5.4, regexpu-core@^4.7.0: unicode-match-property-ecmascript "^1.0.4" unicode-match-property-value-ecmascript "^1.2.0" +regexpu-core@^5.3.1: + version "5.3.2" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.3.2.tgz#11a2b06884f3527aec3e93dbbf4a3b958a95546b" + integrity sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ== + dependencies: + "@babel/regjsgen" "^0.8.0" + regenerate "^1.4.2" + regenerate-unicode-properties "^10.1.0" + regjsparser "^0.9.1" + unicode-match-property-ecmascript "^2.0.0" + unicode-match-property-value-ecmascript "^2.1.0" + regjsgen@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" @@ -13230,6 +13769,13 @@ regjsparser@^0.6.4: dependencies: jsesc "~0.5.0" +regjsparser@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.9.1.tgz#272d05aa10c7c1f67095b1ff0addae8442fc5709" + integrity sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ== + dependencies: + jsesc "~0.5.0" + regl-error2d@^2.0.8: version "2.0.8" resolved "https://registry.yarnpkg.com/regl-error2d/-/regl-error2d-2.0.8.tgz#0f26371ee99c78d42e9c5a197387e32034bcf640" @@ -13552,7 +14098,7 @@ resolve@^1.0.0, resolve@^1.1.4, resolve@^1.1.5, resolve@^1.4.0, resolve@^1.5.0, dependencies: path-parse "^1.0.6" -resolve@^1.10.0, resolve@^1.3.2: +resolve@^1.10.0, resolve@^1.14.2, resolve@^1.3.2: version "1.22.2" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.2.tgz#0ed0943d4e301867955766c9f3e1ae6d01c6845f" integrity sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g== @@ -15493,6 +16039,11 @@ unicode-canonical-property-names-ecmascript@^1.0.4: resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== +unicode-canonical-property-names-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" + integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== + unicode-match-property-ecmascript@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" @@ -15501,16 +16052,34 @@ unicode-match-property-ecmascript@^1.0.4: unicode-canonical-property-names-ecmascript "^1.0.4" unicode-property-aliases-ecmascript "^1.0.4" +unicode-match-property-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" + integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== + dependencies: + unicode-canonical-property-names-ecmascript "^2.0.0" + unicode-property-aliases-ecmascript "^2.0.0" + unicode-match-property-value-ecmascript@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531" integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ== +unicode-match-property-value-ecmascript@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz#cb5fffdcd16a05124f5a4b0bf7c3770208acbbe0" + integrity sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA== + unicode-property-aliases-ecmascript@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.4.tgz#5a533f31b4317ea76f17d807fa0d116546111dd0" integrity sha512-2WSLa6OdYd2ng8oqiGIWnJqyFArvhn+5vgx5GTxMbUYjCYKUcuKS62YLFF0R/BDGlB1yzXjQOLtPAfHsgirEpg== +unicode-property-aliases-ecmascript@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz#43d41e3be698bd493ef911077c9b131f827e8ccd" + integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w== + union-find@^1.0.0, union-find@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/union-find/-/union-find-1.0.2.tgz#292bac415e6ad3a89535d237010db4a536284e58" From 2946713a153c76d4ee2932aa255552b5a218da2f Mon Sep 17 00:00:00 2001 From: Justin Clift Date: Tue, 25 Jul 2023 18:58:13 +1000 Subject: [PATCH 213/274] Bump various @babel in /viz-lib to latest 7.x. Mostly 7.22.x (#6282) --- viz-lib/package.json | 10 +- viz-lib/yarn.lock | 1547 ++++++++++++++++++++---------------------- 2 files changed, 752 insertions(+), 805 deletions(-) diff --git a/viz-lib/package.json b/viz-lib/package.json index 9f8c7c8f73..a3745c8f9f 100644 --- a/viz-lib/package.json +++ b/viz-lib/package.json @@ -31,12 +31,12 @@ "react-dom": ">=16.14.0" }, "devDependencies": { - "@babel/cli": "^7.8.4", - "@babel/core": "^7.9.0", - "@babel/plugin-proposal-class-properties": "^7.8.3", - "@babel/preset-env": "^7.9.0", + "@babel/cli": "^7.22.9", + "@babel/core": "^7.22.9", + "@babel/plugin-proposal-class-properties": "^7.18.6", + "@babel/preset-env": "^7.22.9", "@babel/preset-react": "^7.9.4", - "@babel/preset-typescript": "^7.12.7", + "@babel/preset-typescript": "^7.22.5", "@types/chroma-js": "^2.1.2", "@types/d3": "^6.2.0", "@types/d3-cloud": "^1.2.3", diff --git a/viz-lib/yarn.lock b/viz-lib/yarn.lock index 7f59187fa5..3c4eb04632 100644 --- a/viz-lib/yarn.lock +++ b/viz-lib/yarn.lock @@ -19,21 +19,21 @@ "@jridgewell/gen-mapping" "^0.3.0" "@jridgewell/trace-mapping" "^0.3.9" -"@babel/cli@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/cli/-/cli-7.8.4.tgz#505fb053721a98777b2b175323ea4f090b7d3c1c" - integrity sha512-XXLgAm6LBbaNxaGhMAznXXaxtCWfuv6PIDJ9Alsy9JYTOh+j2jJz+L/162kkfU1j/pTSxK1xGmlwI4pdIMkoag== +"@babel/cli@^7.22.9": + version "7.22.9" + resolved "https://registry.yarnpkg.com/@babel/cli/-/cli-7.22.9.tgz#501b3614aeda7399371f6d5991404f069b059986" + integrity sha512-nb2O7AThqRo7/E53EGiuAkMaRbb7J5Qp3RvN+dmua1U+kydm0oznkhqbTEG15yk26G/C3yL6OdZjzgl+DMXVVA== dependencies: + "@jridgewell/trace-mapping" "^0.3.17" commander "^4.0.1" convert-source-map "^1.1.0" fs-readdir-recursive "^1.1.0" - glob "^7.0.0" - lodash "^4.17.13" + glob "^7.2.0" make-dir "^2.1.0" slash "^2.0.0" - source-map "^0.5.0" optionalDependencies: - chokidar "^2.1.8" + "@nicolo-ribaudo/chokidar-2" "2.1.8-no-fsevents.3" + chokidar "^3.4.0" "@babel/code-frame@7.12.11": version "7.12.11" @@ -42,35 +42,19 @@ dependencies: "@babel/highlight" "^7.10.4" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.22.5", "@babel/code-frame@^7.8.3": +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.5.tgz#234d98e1551960604f1246e6475891a570ad5658" integrity sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ== dependencies: "@babel/highlight" "^7.22.5" -"@babel/code-frame@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a" - integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg== - dependencies: - "@babel/highlight" "^7.10.4" - -"@babel/compat-data@^7.22.9": +"@babel/compat-data@^7.22.5", "@babel/compat-data@^7.22.6", "@babel/compat-data@^7.22.9": version "7.22.9" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.22.9.tgz#71cdb00a1ce3a329ce4cbec3a44f9fef35669730" integrity sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ== -"@babel/compat-data@^7.8.6", "@babel/compat-data@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.9.0.tgz#04815556fc90b0c174abd2c0c1bb966faa036a6c" - integrity sha512-zeFQrr+284Ekvd9e7KAX954LkapWiOmQtsfHirhxqfdlX6MEC32iRE+pqUGlYIBchdevaCwvzxWGSy/YBNI85g== - dependencies: - browserslist "^4.9.1" - invariant "^2.2.4" - semver "^5.5.0" - -"@babel/core@^7.1.0", "@babel/core@^7.13.16": +"@babel/core@^7.1.0", "@babel/core@^7.1.6", "@babel/core@^7.13.16", "@babel/core@^7.22.9", "@babel/core@^7.7.5": version "7.22.9" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.22.9.tgz#bd96492c68822198f33e8a256061da3cf391f58f" integrity sha512-G2EgeufBcYw27U4hhoIwFcgc1XU7TlXJ3mv04oOv1WCuo900U/anZSPzEqNjwdjgffkk2Gs0AN0dW1CKVLcG7w== @@ -91,38 +75,7 @@ json5 "^2.2.2" semver "^6.3.1" -"@babel/core@^7.1.6", "@babel/core@^7.7.5", "@babel/core@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.9.0.tgz#ac977b538b77e132ff706f3b8a4dbad09c03c56e" - integrity sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w== - dependencies: - "@babel/code-frame" "^7.8.3" - "@babel/generator" "^7.9.0" - "@babel/helper-module-transforms" "^7.9.0" - "@babel/helpers" "^7.9.0" - "@babel/parser" "^7.9.0" - "@babel/template" "^7.8.6" - "@babel/traverse" "^7.9.0" - "@babel/types" "^7.9.0" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.1" - json5 "^2.1.2" - lodash "^4.17.13" - resolve "^1.3.2" - semver "^5.4.1" - source-map "^0.5.0" - -"@babel/generator@^7.12.5": - version "7.12.5" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.12.5.tgz#a2c50de5c8b6d708ab95be5e6053936c1884a4de" - integrity sha512-m16TQQJ8hPt7E+OS/XVQg/7U184MLXtvuGbCdA7na61vha+ImkyyNM/9DDA0unYCVZn3ZOhng+qz48/KBOT96A== - dependencies: - "@babel/types" "^7.12.5" - jsesc "^2.5.1" - source-map "^0.5.0" - -"@babel/generator@^7.22.7", "@babel/generator@^7.22.9", "@babel/generator@^7.4.0", "@babel/generator@^7.9.0": +"@babel/generator@^7.22.7", "@babel/generator@^7.22.9", "@babel/generator@^7.4.0": version "7.22.9" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.22.9.tgz#572ecfa7a31002fa1de2a9d91621fd895da8493d" integrity sha512-KtLMbmicyuK2Ak/FTCJVbDnkN1SlT8/kceFTiuDiiRUUSMnHMidxSCdG4ndkTOHHpoomWe/4xkvHkEOncwjYIw== @@ -146,13 +99,12 @@ dependencies: "@babel/types" "^7.8.3" -"@babel/helper-builder-binary-assignment-operator-visitor@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.8.3.tgz#c84097a427a061ac56a1c30ebf54b7b22d241503" - integrity sha512-5eFOm2SyFPK4Rh3XMMRDjN7lBH0orh3ss0g3rTYZnBQ+r6YPj7lgDyCvPphynHvUrobJmeMignBr6Acw9mAPlw== +"@babel/helper-builder-binary-assignment-operator-visitor@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.5.tgz#a3f4758efdd0190d8927fcffd261755937c71878" + integrity sha512-m1EP3lVOPptR+2DwD125gziZNcmoNSHGmJROKoy87loWUQyJaVXDgpmruWqDARZSmtYQ+Dl25okU8+qhVzuykw== dependencies: - "@babel/helper-explode-assignable-expression" "^7.8.3" - "@babel/types" "^7.8.3" + "@babel/types" "^7.22.5" "@babel/helper-builder-react-jsx-experimental@^7.9.0": version "7.9.0" @@ -171,7 +123,7 @@ "@babel/helper-annotate-as-pure" "^7.8.3" "@babel/types" "^7.9.0" -"@babel/helper-compilation-targets@^7.22.9": +"@babel/helper-compilation-targets@^7.22.5", "@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.22.9": version "7.22.9" resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.9.tgz#f9d0a7aaaa7cd32a3f31c9316a69f5a9bcacb892" integrity sha512-7qYrNM6HjpnPHJbopxmb8hSPoZ0gsX8IvUS32JGVoy+pU9e5N0nLr1VjJoR6kA4d9dmGLxNYOjeB8sUDal2WMw== @@ -182,29 +134,7 @@ lru-cache "^5.1.1" semver "^6.3.1" -"@babel/helper-compilation-targets@^7.8.7": - version "7.8.7" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.8.7.tgz#dac1eea159c0e4bd46e309b5a1b04a66b53c1dde" - integrity sha512-4mWm8DCK2LugIS+p1yArqvG1Pf162upsIsjE7cNBjez+NjliQpVhj20obE520nao0o14DaTnFJv+Fw5a0JpoUw== - dependencies: - "@babel/compat-data" "^7.8.6" - browserslist "^4.9.1" - invariant "^2.2.4" - levenary "^1.1.1" - semver "^5.5.0" - -"@babel/helper-create-class-features-plugin@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.12.1.tgz#3c45998f431edd4a9214c5f1d3ad1448a6137f6e" - integrity sha512-hkL++rWeta/OVOBTRJc9a5Azh5mt5WgZUGAKMD8JM141YsE08K//bp1unBBieO6rUKkIPyUE0USQ30jAy3Sk1w== - dependencies: - "@babel/helper-function-name" "^7.10.4" - "@babel/helper-member-expression-to-functions" "^7.12.1" - "@babel/helper-optimise-call-expression" "^7.10.4" - "@babel/helper-replace-supers" "^7.12.1" - "@babel/helper-split-export-declaration" "^7.10.4" - -"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.22.9": +"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.22.5", "@babel/helper-create-class-features-plugin@^7.22.9": version "7.22.9" resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.9.tgz#c36ea240bb3348f942f08b0fbe28d6d979fab236" integrity sha512-Pwyi89uO4YrGKxL/eNJ8lfEH55DnRloGPOseaA8NFNL6jAUnn+KccaISiFazCj5IolPPDjGSdzQzXVzODVRqUQ== @@ -219,17 +149,14 @@ "@babel/helper-split-export-declaration" "^7.22.6" semver "^6.3.1" -"@babel/helper-create-class-features-plugin@^7.8.3": - version "7.8.6" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.8.6.tgz#243a5b46e2f8f0f674dc1387631eb6b28b851de0" - integrity sha512-klTBDdsr+VFFqaDHm5rR69OpEQtO2Qv8ECxHS1mNhJJvaHArR6a1xTf5K/eZW7eZpJbhCx3NW1Yt/sKsLXLblg== +"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.22.5": + version "7.22.9" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.9.tgz#9d8e61a8d9366fe66198f57c40565663de0825f6" + integrity sha512-+svjVa/tFwsNSG4NEy1h85+HQ5imbT92Q5/bgtS7P0GTQlP8WuFdqsiABmQouhiFGyV66oGxZFpeYHza1rNsKw== dependencies: - "@babel/helper-function-name" "^7.8.3" - "@babel/helper-member-expression-to-functions" "^7.8.3" - "@babel/helper-optimise-call-expression" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/helper-replace-supers" "^7.8.6" - "@babel/helper-split-export-declaration" "^7.8.3" + "@babel/helper-annotate-as-pure" "^7.22.5" + regexpu-core "^5.3.1" + semver "^6.3.1" "@babel/helper-create-regexp-features-plugin@^7.8.3", "@babel/helper-create-regexp-features-plugin@^7.8.8": version "7.8.8" @@ -240,38 +167,23 @@ "@babel/helper-regex" "^7.8.3" regexpu-core "^4.7.0" -"@babel/helper-define-map@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.8.3.tgz#a0655cad5451c3760b726eba875f1cd8faa02c15" - integrity sha512-PoeBYtxoZGtct3md6xZOCWPcKuMuk3IHhgxsRRNtnNShebf4C8YonTSblsK4tvDbm+eJAw2HAPOfCr+Q/YRG/g== +"@babel/helper-define-polyfill-provider@^0.4.2": + version "0.4.2" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.2.tgz#82c825cadeeeee7aad237618ebbe8fa1710015d7" + integrity sha512-k0qnnOqHn5dK9pZpfD5XXZ9SojAITdCKRn2Lp6rnDGzIbaP0rHyMPk/4wsSxVBVz4RfN0q6VpXWP2pDGIoQ7hw== dependencies: - "@babel/helper-function-name" "^7.8.3" - "@babel/types" "^7.8.3" - lodash "^4.17.13" + "@babel/helper-compilation-targets" "^7.22.6" + "@babel/helper-plugin-utils" "^7.22.5" + debug "^4.1.1" + lodash.debounce "^4.0.8" + resolve "^1.14.2" "@babel/helper-environment-visitor@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz#f06dd41b7c1f44e1f8da6c4055b41ab3a09a7e98" integrity sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q== -"@babel/helper-explode-assignable-expression@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.8.3.tgz#a728dc5b4e89e30fc2dfc7d04fa28a930653f982" - integrity sha512-N+8eW86/Kj147bO9G2uclsg5pwfs/fqqY5rwgIL7eTBklgXjcOJ3btzS5iM6AitJcftnY7pm2lGsrJVYLGjzIw== - dependencies: - "@babel/traverse" "^7.8.3" - "@babel/types" "^7.8.3" - -"@babel/helper-function-name@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz#d2d3b20c59ad8c47112fa7d2a94bc09d5ef82f1a" - integrity sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ== - dependencies: - "@babel/helper-get-function-arity" "^7.10.4" - "@babel/template" "^7.10.4" - "@babel/types" "^7.10.4" - -"@babel/helper-function-name@^7.22.5", "@babel/helper-function-name@^7.8.3": +"@babel/helper-function-name@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz#ede300828905bb15e582c037162f99d5183af1be" integrity sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ== @@ -279,20 +191,6 @@ "@babel/template" "^7.22.5" "@babel/types" "^7.22.5" -"@babel/helper-get-function-arity@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz#98c1cbea0e2332f33f9a4661b8ce1505b2c19ba2" - integrity sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A== - dependencies: - "@babel/types" "^7.10.4" - -"@babel/helper-get-function-arity@^7.8.3": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz#ea08ac753117a669f1508ba06ebcc49156387419" - integrity sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw== - dependencies: - "@babel/types" "^7.16.7" - "@babel/helper-hoist-variables@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb" @@ -300,21 +198,7 @@ dependencies: "@babel/types" "^7.22.5" -"@babel/helper-hoist-variables@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.8.3.tgz#1dbe9b6b55d78c9b4183fc8cdc6e30ceb83b7134" - integrity sha512-ky1JLOjcDUtSc+xkt0xhYff7Z6ILTAHKmZLHPxAhOP0Nd77O+3nCsd6uSVYur6nJnCI029CrNbYlc0LoPfAPQg== - dependencies: - "@babel/types" "^7.8.3" - -"@babel/helper-member-expression-to-functions@^7.12.1": - version "7.12.7" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.7.tgz#aa77bd0396ec8114e5e30787efa78599d874a855" - integrity sha512-DCsuPyeWxeHgh1Dus7APn7iza42i/qXqiFPWyBDdOFtvS581JQePsc1F/nD+fHrcswhLlRc2UpYS1NwERxZhHw== - dependencies: - "@babel/types" "^7.12.7" - -"@babel/helper-member-expression-to-functions@^7.22.5", "@babel/helper-member-expression-to-functions@^7.8.3": +"@babel/helper-member-expression-to-functions@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.22.5.tgz#0a7c56117cad3372fbf8d2fb4bf8f8d64a1e76b2" integrity sha512-aBiH1NKMG0H2cGZqspNvsaBe6wNGjbJjuLy29aU+eDZjSbbN53BaxlpB02xm9v34pLTZ1nIQPFYn2qMZoa5BQQ== @@ -328,7 +212,7 @@ dependencies: "@babel/types" "^7.22.5" -"@babel/helper-module-transforms@^7.22.5", "@babel/helper-module-transforms@^7.22.9", "@babel/helper-module-transforms@^7.9.0": +"@babel/helper-module-transforms@^7.22.5", "@babel/helper-module-transforms@^7.22.9": version "7.22.9" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.22.9.tgz#92dfcb1fbbb2bc62529024f72d942a8c97142129" integrity sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ== @@ -339,21 +223,14 @@ "@babel/helper-split-export-declaration" "^7.22.6" "@babel/helper-validator-identifier" "^7.22.5" -"@babel/helper-optimise-call-expression@^7.10.4": - version "7.12.7" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.7.tgz#7f94ae5e08721a49467346aa04fd22f750033b9c" - integrity sha512-I5xc9oSJ2h59OwyUqjv95HRyzxj53DAubUERgQMrpcCEYQyToeHA+NEcUEsVWB4j53RDeskeBJ0SgRAYHDBckw== - dependencies: - "@babel/types" "^7.12.7" - -"@babel/helper-optimise-call-expression@^7.22.5", "@babel/helper-optimise-call-expression@^7.8.3": +"@babel/helper-optimise-call-expression@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz#f21531a9ccbff644fdd156b4077c16ff0c3f609e" integrity sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw== dependencies: "@babel/types" "^7.22.5" -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.8.0": +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.8.0": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295" integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== @@ -375,28 +252,16 @@ dependencies: lodash "^4.17.13" -"@babel/helper-remap-async-to-generator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.8.3.tgz#273c600d8b9bf5006142c1e35887d555c12edd86" - integrity sha512-kgwDmw4fCg7AVgS4DukQR/roGp+jP+XluJE5hsRZwxCYGg+Rv9wSGErDWhlI90FODdYfd4xG4AQRiMDjjN0GzA== - dependencies: - "@babel/helper-annotate-as-pure" "^7.8.3" - "@babel/helper-wrap-function" "^7.8.3" - "@babel/template" "^7.8.3" - "@babel/traverse" "^7.8.3" - "@babel/types" "^7.8.3" - -"@babel/helper-replace-supers@^7.12.1": - version "7.12.5" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.12.5.tgz#f009a17543bbbbce16b06206ae73b63d3fca68d9" - integrity sha512-5YILoed0ZyIpF4gKcpZitEnXEJ9UoDRki1Ey6xz46rxOzfNMAhVIJMoune1hmPVxh40LRv1+oafz7UsWX+vyWA== +"@babel/helper-remap-async-to-generator@^7.22.5": + version "7.22.9" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.9.tgz#53a25b7484e722d7efb9c350c75c032d4628de82" + integrity sha512-8WWC4oR4Px+tr+Fp0X3RHDVfINGpF3ad1HIbrc8A77epiR6eMMc6jsgozkzT2uDiOOdoS9cLIQ+XD2XvI2WSmQ== dependencies: - "@babel/helper-member-expression-to-functions" "^7.12.1" - "@babel/helper-optimise-call-expression" "^7.10.4" - "@babel/traverse" "^7.12.5" - "@babel/types" "^7.12.5" + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-environment-visitor" "^7.22.5" + "@babel/helper-wrap-function" "^7.22.9" -"@babel/helper-replace-supers@^7.22.9", "@babel/helper-replace-supers@^7.8.6": +"@babel/helper-replace-supers@^7.22.5", "@babel/helper-replace-supers@^7.22.9": version "7.22.9" resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.22.9.tgz#cbdc27d6d8d18cd22c81ae4293765a5d9afd0779" integrity sha512-LJIKvvpgPOPUThdYqcX6IXRuIcTkcAub0IaDRGCZH0p5GPUp7PhRU9QVgFcDDd51BaPkk77ZjqFwh6DZTAEmGg== @@ -405,17 +270,7 @@ "@babel/helper-member-expression-to-functions" "^7.22.5" "@babel/helper-optimise-call-expression" "^7.22.5" -"@babel/helper-replace-supers@^7.8.3": - version "7.8.6" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.8.6.tgz#5ada744fd5ad73203bf1d67459a27dcba67effc8" - integrity sha512-PeMArdA4Sv/Wf4zXwBKPqVj7n9UF/xg6slNRtZW84FM7JpE1CbG8B612FyM4cxrf4fMAMGO0kR7voy1ForHHFA== - dependencies: - "@babel/helper-member-expression-to-functions" "^7.8.3" - "@babel/helper-optimise-call-expression" "^7.8.3" - "@babel/traverse" "^7.8.6" - "@babel/types" "^7.8.6" - -"@babel/helper-simple-access@^7.22.5", "@babel/helper-simple-access@^7.8.3": +"@babel/helper-simple-access@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz#4938357dc7d782b80ed6dbb03a0fba3d22b1d5de" integrity sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w== @@ -429,14 +284,7 @@ dependencies: "@babel/types" "^7.22.5" -"@babel/helper-split-export-declaration@^7.10.4", "@babel/helper-split-export-declaration@^7.11.0": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz#f8a491244acf6a676158ac42072911ba83ad099f" - integrity sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg== - dependencies: - "@babel/types" "^7.11.0" - -"@babel/helper-split-export-declaration@^7.22.6", "@babel/helper-split-export-declaration@^7.8.3": +"@babel/helper-split-export-declaration@^7.22.6": version "7.22.6" resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c" integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g== @@ -458,27 +306,21 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz#9544ef6a33999343c8740fa51350f30eeaaaf193" integrity sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ== -"@babel/helper-validator-option@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.1.tgz#175567380c3e77d60ff98a54bb015fe78f2178d9" - integrity sha512-YpJabsXlJVWP0USHjnC/AQDTLlZERbON577YUVO/wLpqyj6HAtVYnWaQaN0iUN+1/tWn3c+uKKXjRut5115Y2A== - "@babel/helper-validator-option@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz#de52000a15a177413c8234fa3a8af4ee8102d0ac" integrity sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw== -"@babel/helper-wrap-function@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.8.3.tgz#9dbdb2bb55ef14aaa01fe8c99b629bd5352d8610" - integrity sha512-LACJrbUET9cQDzb6kG7EeD7+7doC3JNvUgTEQOx2qaO1fKlzE/Bf05qs9w1oXQMmXlPO65lC3Tq9S6gZpTErEQ== +"@babel/helper-wrap-function@^7.22.9": + version "7.22.9" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.22.9.tgz#189937248c45b0182c1dcf32f3444ca153944cb9" + integrity sha512-sZ+QzfauuUEfxSEjKFmi3qDSHgLsTPK/pEpoD/qonZKOtTPTLbf59oabPQ4rKekt9lFcj/hTZaOhWwFYrgjk+Q== dependencies: - "@babel/helper-function-name" "^7.8.3" - "@babel/template" "^7.8.3" - "@babel/traverse" "^7.8.3" - "@babel/types" "^7.8.3" + "@babel/helper-function-name" "^7.22.5" + "@babel/template" "^7.22.5" + "@babel/types" "^7.22.5" -"@babel/helpers@^7.22.6", "@babel/helpers@^7.9.0": +"@babel/helpers@^7.22.6": version "7.22.6" resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.22.6.tgz#8e61d3395a4f0c5a8060f309fb008200969b5ecd" integrity sha512-YjDs6y/fVOYFV8hAf1rxd1QvR9wJe1pDBZ2AREKq/SDayfPzgk0PBnVuTCE5X1acEpMMNOVUqoe+OwiZGJ+OaA== @@ -505,7 +347,7 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.13.16", "@babel/parser@^7.20.7", "@babel/parser@^7.22.5", "@babel/parser@^7.22.7", "@babel/parser@^7.4.3", "@babel/parser@^7.9.0": +"@babel/parser@^7.1.0", "@babel/parser@^7.13.16", "@babel/parser@^7.20.7", "@babel/parser@^7.22.5", "@babel/parser@^7.22.7", "@babel/parser@^7.4.3": version "7.22.7" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.22.7.tgz#df8cf085ce92ddbdbf668a7f186ce848c9036cae" integrity sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q== @@ -515,29 +357,23 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.9.4.tgz#68a35e6b0319bbc014465be43828300113f2f2e8" integrity sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA== -"@babel/parser@^7.12.7": - version "7.12.7" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.7.tgz#fee7b39fe809d0e73e5b25eecaf5780ef3d73056" - integrity sha512-oWR02Ubp4xTLCAqPRiNIuMVgNO5Aif/xpXtabhzW2HWUD47XJsAB4Zd/Rg30+XeQA3juXigV7hlquOTmwqLiwg== - -"@babel/plugin-proposal-async-generator-functions@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.8.3.tgz#bad329c670b382589721b27540c7d288601c6e6f" - integrity sha512-NZ9zLv848JsV3hs8ryEh7Uaz/0KsmPLqv0+PdkDJL1cJy0K4kOCFa8zc1E3mp+RHPQcpdfb/6GovEsW4VDrOMw== +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.5.tgz#87245a21cd69a73b0b81bcda98d443d6df08f05e" + integrity sha512-NP1M5Rf+u2Gw9qfSO4ihjcTGW5zXTi36ITLd4/EoAcEhIZ0yjMqmftDNl3QC19CX7olhrjpyU454g/2W7X0jvQ== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/helper-remap-async-to-generator" "^7.8.3" - "@babel/plugin-syntax-async-generators" "^7.8.0" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-proposal-class-properties@^7.1.0", "@babel/plugin-proposal-class-properties@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.8.3.tgz#5e06654af5cd04b608915aada9b2a6788004464e" - integrity sha512-EqFhbo7IosdgPgZggHaNObkmO1kNUe3slaKu54d5OWvy+p9QIKOzK1GAEpAIsZtWVtPXUHSMcT4smvDrCfY4AA== +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.5.tgz#fef09f9499b1f1c930da8a0c419db42167d792ca" + integrity sha512-31Bb65aZaUwqCbWMnZPduIZxCBngHFlzyN6Dq6KAJjtx+lx6ohKHubc61OomYi7XwVD4Ol0XCVz4h+pYFR048g== dependencies: - "@babel/helper-create-class-features-plugin" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/plugin-transform-optional-chaining" "^7.22.5" -"@babel/plugin-proposal-class-properties@^7.13.0": +"@babel/plugin-proposal-class-properties@^7.1.0", "@babel/plugin-proposal-class-properties@^7.13.0", "@babel/plugin-proposal-class-properties@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz#b110f59741895f7ec21a6fff696ec46265c446a3" integrity sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ== @@ -545,22 +381,6 @@ "@babel/helper-create-class-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-proposal-dynamic-import@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.8.3.tgz#38c4fe555744826e97e2ae930b0fb4cc07e66054" - integrity sha512-NyaBbyLFXFLT9FP+zk0kYlUlA8XtCUbehs67F0nnEg7KICgMc2mNkIeu9TYhKzyXMkrapZFwAhXLdnt4IYHy1w== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-dynamic-import" "^7.8.0" - -"@babel/plugin-proposal-json-strings@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.8.3.tgz#da5216b238a98b58a1e05d6852104b10f9a70d6b" - integrity sha512-KGhQNZ3TVCQG/MjRbAUwuH+14y9q0tpxs1nWWs3pbSleRdDro9SAMMDyye8HhY1gqZ7/NqIc8SKhya0wRDgP1Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-json-strings" "^7.8.0" - "@babel/plugin-proposal-nullish-coalescing-operator@^7.13.8": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz#fdd940a99a740e577d6c753ab6fbb43fdb9467e1" @@ -569,23 +389,7 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" -"@babel/plugin-proposal-nullish-coalescing-operator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.8.3.tgz#e4572253fdeed65cddeecfdab3f928afeb2fd5d2" - integrity sha512-TS9MlfzXpXKt6YYomudb/KU7nQI6/xnapG6in1uZxoxDghuSMZsPb6D2fyUwNYSAp4l1iR7QtFOjkqcRYcUsfw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" - -"@babel/plugin-proposal-numeric-separator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.8.3.tgz#5d6769409699ec9b3b68684cd8116cedff93bad8" - integrity sha512-jWioO1s6R/R+wEHizfaScNsAx+xKgwTLNXSh7tTC4Usj3ItsPEhYkEpU4h+lpnBwq7NBVOJXfO6cRFYcX69JUQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.8.3" - -"@babel/plugin-proposal-object-rest-spread@^7.0.0", "@babel/plugin-proposal-object-rest-spread@^7.9.0": +"@babel/plugin-proposal-object-rest-spread@^7.0.0": version "7.9.0" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.9.0.tgz#a28993699fc13df165995362693962ba6b061d6f" integrity sha512-UgqBv6bjq4fDb8uku9f+wcm1J7YxJ5nT7WO/jBr0cl0PLKb7t1O6RNR1kZbjgx2LQtsDI9hwoQVmn0yhXeQyow== @@ -593,14 +397,6 @@ "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-object-rest-spread" "^7.8.0" -"@babel/plugin-proposal-optional-catch-binding@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.8.3.tgz#9dee96ab1650eed88646ae9734ca167ac4a9c5c9" - integrity sha512-0gkX7J7E+AtAw9fcwlVQj8peP61qhdg/89D5swOkjYbkboA2CVckn3kiyum1DE0wskGb7KJJxBdyEBApDLLVdw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" - "@babel/plugin-proposal-optional-chaining@^7.13.12": version "7.21.0" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz#886f5c8978deb7d30f678b2e24346b287234d3ea" @@ -610,15 +406,12 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" "@babel/plugin-syntax-optional-chaining" "^7.8.3" -"@babel/plugin-proposal-optional-chaining@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.9.0.tgz#31db16b154c39d6b8a645292472b98394c292a58" - integrity sha512-NDn5tu3tcv4W30jNhmc2hyD5c56G6cXx4TesJubhxrJeCvuuMpttxr0OnNCqbZGhFjLrg+NIhxxC+BK5F6yS3w== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.0" +"@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2": + version "7.21.0-placeholder-for-preset-env.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz#7844f9289546efa9febac2de4cfe358a050bd703" + integrity sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w== -"@babel/plugin-proposal-unicode-property-regex@^7.4.4", "@babel/plugin-proposal-unicode-property-regex@^7.8.3": +"@babel/plugin-proposal-unicode-property-regex@^7.4.4": version "7.8.8" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.8.tgz#ee3a95e90cdc04fe8cd92ec3279fa017d68a0d1d" integrity sha512-EVhjVsMpbhLw9ZfHWSx2iy13Q8Z/eg8e8ccVWt23sWQK5l1UdkoLJPN5w69UA4uITGBnEZD2JOe4QOHycYKv8A== @@ -626,20 +419,41 @@ "@babel/helper-create-regexp-features-plugin" "^7.8.8" "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-syntax-async-generators@^7.8.0": +"@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-dynamic-import@^7.8.0": +"@babel/plugin-syntax-class-properties@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" + integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-syntax-class-static-block@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" + integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-dynamic-import@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== dependencies: "@babel/helper-plugin-utils" "^7.8.0" +"@babel/plugin-syntax-export-namespace-from@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" + integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-flow@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.12.1.tgz#a77670d9abe6d63e8acadf4c31bb1eb5a506bbdd" @@ -654,7 +468,28 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-syntax-json-strings@^7.8.0": +"@babel/plugin-syntax-import-assertions@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.22.5.tgz#07d252e2aa0bc6125567f742cd58619cb14dce98" + integrity sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-syntax-import-attributes@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.22.5.tgz#ab840248d834410b829f569f5262b9e517555ecb" + integrity sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-syntax-import-meta@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" + integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-json-strings@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== @@ -675,54 +510,61 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0", "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": +"@babel/plugin-syntax-logical-assignment-operators@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" + integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-numeric-separator@^7.8.0", "@babel/plugin-syntax-numeric-separator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.8.3.tgz#0e3fb63e09bea1b11e96467271c8308007e7c41f" - integrity sha512-H7dCMAdN83PcCmqmkHB5dtp+Xa9a6LKSvA2hiFBC/5alSHxM5VgWZXFqDi0YFe8XNGT6iCa+z4V4zSt/PdZ7Dw== +"@babel/plugin-syntax-numeric-separator@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" + integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.8.0": +"@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.8.0", "@babel/plugin-syntax-object-rest-spread@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-optional-catch-binding@^7.8.0": +"@babel/plugin-syntax-optional-catch-binding@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-optional-chaining@^7.8.0", "@babel/plugin-syntax-optional-chaining@^7.8.3": +"@babel/plugin-syntax-optional-chaining@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-top-level-await@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.8.3.tgz#3acdece695e6b13aaf57fc291d1a800950c71391" - integrity sha512-kwj1j9lL/6Wd0hROD3b/OZZ7MSrZLqqn9RAZ5+cYYsflQ9HZBIKCUkr3+uL1MEJ1NePiUbf98jjiMQSv0NMR9g== +"@babel/plugin-syntax-private-property-in-object@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad" + integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-syntax-typescript@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.12.1.tgz#460ba9d77077653803c3dd2e673f76d66b4029e5" - integrity sha512-UZNEcCY+4Dp9yYRCAHrHDU+9ZXLYaY9MgBXSRLkB9WjYFRR6quJBumfVrEkUxrePPBwFcpWfNKXqVRQQtm7mMA== +"@babel/plugin-syntax-top-level-await@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" + integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-typescript@^7.22.5": version "7.22.5" @@ -731,66 +573,110 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-arrow-functions@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.8.3.tgz#82776c2ed0cd9e1a49956daeb896024c9473b8b6" - integrity sha512-0MRF+KC8EqH4dbuITCWwPSzsyO3HIWWlm30v8BbbpOrS1B++isGxPnnuq/IZvOX5J2D/p7DQalQm+/2PnlKGxg== +"@babel/plugin-syntax-unicode-sets-regex@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz#d49a3b3e6b52e5be6740022317580234a6a47357" + integrity sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-async-to-generator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.8.3.tgz#4308fad0d9409d71eafb9b1a6ee35f9d64b64086" - integrity sha512-imt9tFLD9ogt56Dd5CI/6XgpukMwd/fLGSrix2httihVe7LOGVPhyhMh1BU5kDM7iHD08i8uUtmV2sWaBFlHVQ== +"@babel/plugin-transform-arrow-functions@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.22.5.tgz#e5ba566d0c58a5b2ba2a8b795450641950b71958" + integrity sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw== dependencies: - "@babel/helper-module-imports" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/helper-remap-async-to-generator" "^7.8.3" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-block-scoped-functions@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.8.3.tgz#437eec5b799b5852072084b3ae5ef66e8349e8a3" - integrity sha512-vo4F2OewqjbB1+yaJ7k2EJFHlTP3jR634Z9Cj9itpqNjuLXvhlVxgnjsHsdRgASR8xYDrx6onw4vW5H6We0Jmg== +"@babel/plugin-transform-async-generator-functions@^7.22.7": + version "7.22.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.7.tgz#053e76c0a903b72b573cb1ab7d6882174d460a1b" + integrity sha512-7HmE7pk/Fmke45TODvxvkxRMV9RazV+ZZzhOL9AG8G29TLrr3jkjwF7uJfxZ30EoXpO+LJkq4oA8NjO2DTnEDg== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-environment-visitor" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-remap-async-to-generator" "^7.22.5" + "@babel/plugin-syntax-async-generators" "^7.8.4" -"@babel/plugin-transform-block-scoping@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.8.3.tgz#97d35dab66857a437c166358b91d09050c868f3a" - integrity sha512-pGnYfm7RNRgYRi7bids5bHluENHqJhrV4bCZRwc5GamaWIIs07N4rZECcmJL6ZClwjDz1GbdMZFtPs27hTB06w== +"@babel/plugin-transform-async-to-generator@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.22.5.tgz#c7a85f44e46f8952f6d27fe57c2ed3cc084c3775" + integrity sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - lodash "^4.17.13" + "@babel/helper-module-imports" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-remap-async-to-generator" "^7.22.5" -"@babel/plugin-transform-classes@^7.9.0": - version "7.9.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.9.2.tgz#8603fc3cc449e31fdbdbc257f67717536a11af8d" - integrity sha512-TC2p3bPzsfvSsqBZo0kJnuelnoK9O3welkUpqSqBQuBF6R5MN2rysopri8kNvtlGIb2jmUO7i15IooAZJjZuMQ== +"@babel/plugin-transform-block-scoped-functions@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.22.5.tgz#27978075bfaeb9fa586d3cb63a3d30c1de580024" + integrity sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA== dependencies: - "@babel/helper-annotate-as-pure" "^7.8.3" - "@babel/helper-define-map" "^7.8.3" - "@babel/helper-function-name" "^7.8.3" - "@babel/helper-optimise-call-expression" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/helper-replace-supers" "^7.8.6" - "@babel/helper-split-export-declaration" "^7.8.3" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-block-scoping@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.22.5.tgz#8bfc793b3a4b2742c0983fadc1480d843ecea31b" + integrity sha512-EcACl1i5fSQ6bt+YGuU/XGCeZKStLmyVGytWkpyhCLeQVA0eu6Wtiw92V+I1T/hnezUv7j74dA/Ro69gWcU+hg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-class-properties@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.5.tgz#97a56e31ad8c9dc06a0b3710ce7803d5a48cca77" + integrity sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-class-static-block@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.5.tgz#3e40c46f048403472d6f4183116d5e46b1bff5ba" + integrity sha512-SPToJ5eYZLxlnp1UzdARpOGeC2GbHvr9d/UV0EukuVx8atktg194oe+C5BqQ8jRTkgLRVOPYeXRSBg1IlMoVRA== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + +"@babel/plugin-transform-classes@^7.22.6": + version "7.22.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.6.tgz#e04d7d804ed5b8501311293d1a0e6d43e94c3363" + integrity sha512-58EgM6nuPNG6Py4Z3zSuu0xWu2VfodiMi72Jt5Kj2FECmaYk1RrTXA45z6KBFsu9tRgwQDwIiY4FXTt+YsSFAQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-compilation-targets" "^7.22.6" + "@babel/helper-environment-visitor" "^7.22.5" + "@babel/helper-function-name" "^7.22.5" + "@babel/helper-optimise-call-expression" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-replace-supers" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" globals "^11.1.0" -"@babel/plugin-transform-computed-properties@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.8.3.tgz#96d0d28b7f7ce4eb5b120bb2e0e943343c86f81b" - integrity sha512-O5hiIpSyOGdrQZRQ2ccwtTVkgUDBBiCuK//4RJ6UfePllUTCENOzKxfh6ulckXKc0DixTFLCfb2HVkNA7aDpzA== +"@babel/plugin-transform-computed-properties@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.22.5.tgz#cd1e994bf9f316bd1c2dafcd02063ec261bb3869" + integrity sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/template" "^7.22.5" -"@babel/plugin-transform-destructuring@^7.8.3": - version "7.8.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.8.8.tgz#fadb2bc8e90ccaf5658de6f8d4d22ff6272a2f4b" - integrity sha512-eRJu4Vs2rmttFCdhPUM3bV0Yo/xPSdPw6ML9KHs/bjB4bLA5HXlbvYXPOD5yASodGod+krjYx21xm1QmL8dCJQ== +"@babel/plugin-transform-destructuring@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.22.5.tgz#d3aca7438f6c26c78cdd0b0ba920a336001b27cc" + integrity sha512-GfqcFuGW8vnEqTUBM7UtPd5A4q797LTvvwKxXTgRsFjoqaJiEg9deBG6kWeQYkVEL569NpnmpC0Pkr/8BLKGnQ== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-dotall-regex@^7.4.4", "@babel/plugin-transform-dotall-regex@^7.8.3": +"@babel/plugin-transform-dotall-regex@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.22.5.tgz#dbb4f0e45766eb544e193fb00e65a1dd3b2a4165" + integrity sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-dotall-regex@^7.4.4": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.8.3.tgz#c3c6ec5ee6125c6993c5cbca20dc8621a9ea7a6e" integrity sha512-kLs1j9Nn4MQoBYdRXH6AeaXMbEJFaFu/v1nQkvib6QzTj8MZI5OQzqmD83/2jEM1z0DLilra5aWO5YpyC0ALIw== @@ -798,20 +684,36 @@ "@babel/helper-create-regexp-features-plugin" "^7.8.3" "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-duplicate-keys@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.8.3.tgz#8d12df309aa537f272899c565ea1768e286e21f1" - integrity sha512-s8dHiBUbcbSgipS4SMFuWGqCvyge5V2ZeAWzR6INTVC3Ltjig/Vw1G2Gztv0vU/hRG9X8IvKvYdoksnUfgXOEQ== +"@babel/plugin-transform-duplicate-keys@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.22.5.tgz#b6e6428d9416f5f0bba19c70d1e6e7e0b88ab285" + integrity sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-exponentiation-operator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.8.3.tgz#581a6d7f56970e06bf51560cd64f5e947b70d7b7" - integrity sha512-zwIpuIymb3ACcInbksHaNcR12S++0MDLKkiqXHl3AzpgdKlFNhog+z/K0+TGW+b0w5pgTq4H6IwV/WhxbGYSjQ== +"@babel/plugin-transform-dynamic-import@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.5.tgz#d6908a8916a810468c4edff73b5b75bda6ad393e" + integrity sha512-0MC3ppTB1AMxd8fXjSrbPa7LT9hrImt+/fcj+Pg5YMD7UQyWp/02+JWpdnCymmsXwIx5Z+sYn1bwCn4ZJNvhqQ== dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + +"@babel/plugin-transform-exponentiation-operator@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.22.5.tgz#402432ad544a1f9a480da865fda26be653e48f6a" + integrity sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-export-namespace-from@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.5.tgz#57c41cb1d0613d22f548fddd8b288eedb9973a5b" + integrity sha512-X4hhm7FRnPgd4nDA4b/5V280xCx6oL7Oob5+9qVS5C13Zq4bh1qq7LU0GgRU6b5dBWBvhGaXYVB4AcN6+ol6vg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" "@babel/plugin-transform-flow-strip-types@^7.12.1": version "7.12.1" @@ -829,117 +731,185 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-flow" "^7.22.5" -"@babel/plugin-transform-for-of@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.9.0.tgz#0f260e27d3e29cd1bb3128da5e76c761aa6c108e" - integrity sha512-lTAnWOpMwOXpyDx06N+ywmF3jNbafZEqZ96CGYabxHrxNX8l5ny7dt4bK/rGwAh9utyP2b2Hv7PlZh1AAS54FQ== +"@babel/plugin-transform-for-of@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.5.tgz#ab1b8a200a8f990137aff9a084f8de4099ab173f" + integrity sha512-3kxQjX1dU9uudwSshyLeEipvrLjBCVthCgeTp6CzE/9JYrlAIaeekVxRpCWsDDfYTfRZRoCeZatCQvwo+wvK8A== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-function-name@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.8.3.tgz#279373cb27322aaad67c2683e776dfc47196ed8b" - integrity sha512-rO/OnDS78Eifbjn5Py9v8y0aR+aSYhDhqAwVfsTl0ERuMZyr05L1aFSCJnbv2mmsLkit/4ReeQ9N2BgLnOcPCQ== +"@babel/plugin-transform-function-name@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.22.5.tgz#935189af68b01898e0d6d99658db6b164205c143" + integrity sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg== dependencies: - "@babel/helper-function-name" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-compilation-targets" "^7.22.5" + "@babel/helper-function-name" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-json-strings@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.5.tgz#14b64352fdf7e1f737eed68de1a1468bd2a77ec0" + integrity sha512-DuCRB7fu8MyTLbEQd1ew3R85nx/88yMoqo2uPSjevMj3yoN7CDM8jkgrY0wmVxfJZyJ/B9fE1iq7EQppWQmR5A== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-json-strings" "^7.8.3" + +"@babel/plugin-transform-literals@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.22.5.tgz#e9341f4b5a167952576e23db8d435849b1dd7920" + integrity sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-logical-assignment-operators@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.5.tgz#66ae5f068fd5a9a5dc570df16f56c2a8462a9d6c" + integrity sha512-MQQOUW1KL8X0cDWfbwYP+TbVbZm16QmQXJQ+vndPtH/BoO0lOKpVoEDMI7+PskYxH+IiE0tS8xZye0qr1lGzSA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + +"@babel/plugin-transform-member-expression-literals@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.22.5.tgz#4fcc9050eded981a468347dd374539ed3e058def" + integrity sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-modules-amd@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.22.5.tgz#4e045f55dcf98afd00f85691a68fc0780704f526" + integrity sha512-R+PTfLTcYEmb1+kK7FNkhQ1gP4KgjpSO6HfH9+f8/yfp2Nt3ggBjiVpRwmwTlfqZLafYKJACy36yDXlEmI9HjQ== + dependencies: + "@babel/helper-module-transforms" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-modules-commonjs@^7.13.8", "@babel/plugin-transform-modules-commonjs@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.22.5.tgz#7d9875908d19b8c0536085af7b053fd5bd651bfa" + integrity sha512-B4pzOXj+ONRmuaQTg05b3y/4DuFz3WcCNAXPLb2Q0GT0TrGKGxNKV4jwsXts+StaM0LQczZbOpj8o1DLPDJIiA== + dependencies: + "@babel/helper-module-transforms" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-simple-access" "^7.22.5" + +"@babel/plugin-transform-modules-systemjs@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.22.5.tgz#18c31410b5e579a0092638f95c896c2a98a5d496" + integrity sha512-emtEpoaTMsOs6Tzz+nbmcePl6AKVtS1yC4YNAeMun9U8YCsgadPNxnOPQ8GhHFB2qdx+LZu9LgoC0Lthuu05DQ== + dependencies: + "@babel/helper-hoist-variables" "^7.22.5" + "@babel/helper-module-transforms" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-validator-identifier" "^7.22.5" + +"@babel/plugin-transform-modules-umd@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.22.5.tgz#4694ae40a87b1745e3775b6a7fe96400315d4f98" + integrity sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ== + dependencies: + "@babel/helper-module-transforms" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-literals@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.8.3.tgz#aef239823d91994ec7b68e55193525d76dbd5dc1" - integrity sha512-3Tqf8JJ/qB7TeldGl+TT55+uQei9JfYaregDcEAyBZ7akutriFrt6C/wLYIer6OYhleVQvH/ntEhjE/xMmy10A== +"@babel/plugin-transform-named-capturing-groups-regex@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz#67fe18ee8ce02d57c855185e27e3dc959b2e991f" + integrity sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-create-regexp-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-member-expression-literals@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.8.3.tgz#963fed4b620ac7cbf6029c755424029fa3a40410" - integrity sha512-3Wk2EXhnw+rP+IDkK6BdtPKsUE5IeZ6QOGrPYvw52NwBStw9V1ZVzxgK6fSKSxqUvH9eQPR3tm3cOq79HlsKYA== +"@babel/plugin-transform-new-target@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.5.tgz#1b248acea54ce44ea06dfd37247ba089fcf9758d" + integrity sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-modules-amd@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.9.0.tgz#19755ee721912cf5bb04c07d50280af3484efef4" - integrity sha512-vZgDDF003B14O8zJy0XXLnPH4sg+9X5hFBBGN1V+B2rgrB+J2xIypSN6Rk9imB2hSTHQi5OHLrFWsZab1GMk+Q== +"@babel/plugin-transform-nullish-coalescing-operator@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.5.tgz#f8872c65776e0b552e0849d7596cddd416c3e381" + integrity sha512-6CF8g6z1dNYZ/VXok5uYkkBBICHZPiGEl7oDnAx2Mt1hlHVHOSIKWJaXHjQJA5VB43KZnXZDIexMchY4y2PGdA== dependencies: - "@babel/helper-module-transforms" "^7.9.0" - "@babel/helper-plugin-utils" "^7.8.3" - babel-plugin-dynamic-import-node "^2.3.0" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" -"@babel/plugin-transform-modules-commonjs@^7.13.8", "@babel/plugin-transform-modules-commonjs@^7.22.5": +"@babel/plugin-transform-numeric-separator@^7.22.5": version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.22.5.tgz#7d9875908d19b8c0536085af7b053fd5bd651bfa" - integrity sha512-B4pzOXj+ONRmuaQTg05b3y/4DuFz3WcCNAXPLb2Q0GT0TrGKGxNKV4jwsXts+StaM0LQczZbOpj8o1DLPDJIiA== + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.5.tgz#57226a2ed9e512b9b446517ab6fa2d17abb83f58" + integrity sha512-NbslED1/6M+sXiwwtcAB/nieypGw02Ejf4KtDeMkCEpP6gWFMX1wI9WKYua+4oBneCCEmulOkRpwywypVZzs/g== dependencies: - "@babel/helper-module-transforms" "^7.22.5" "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-simple-access" "^7.22.5" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@babel/plugin-transform-modules-commonjs@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.9.0.tgz#e3e72f4cbc9b4a260e30be0ea59bdf5a39748940" - integrity sha512-qzlCrLnKqio4SlgJ6FMMLBe4bySNis8DFn1VkGmOcxG9gqEyPIOzeQrA//u0HAKrWpJlpZbZMPB1n/OPa4+n8g== +"@babel/plugin-transform-object-rest-spread@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.5.tgz#9686dc3447df4753b0b2a2fae7e8bc33cdc1f2e1" + integrity sha512-Kk3lyDmEslH9DnvCDA1s1kkd3YWQITiBOHngOtDL9Pt6BZjzqb6hiOlb8VfjiiQJ2unmegBqZu0rx5RxJb5vmQ== dependencies: - "@babel/helper-module-transforms" "^7.9.0" - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/helper-simple-access" "^7.8.3" - babel-plugin-dynamic-import-node "^2.3.0" + "@babel/compat-data" "^7.22.5" + "@babel/helper-compilation-targets" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.22.5" -"@babel/plugin-transform-modules-systemjs@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.9.0.tgz#e9fd46a296fc91e009b64e07ddaa86d6f0edeb90" - integrity sha512-FsiAv/nao/ud2ZWy4wFacoLOm5uxl0ExSQ7ErvP7jpoihLR6Cq90ilOFyX9UXct3rbtKsAiZ9kFt5XGfPe/5SQ== +"@babel/plugin-transform-object-super@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.22.5.tgz#794a8d2fcb5d0835af722173c1a9d704f44e218c" + integrity sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw== dependencies: - "@babel/helper-hoist-variables" "^7.8.3" - "@babel/helper-module-transforms" "^7.9.0" - "@babel/helper-plugin-utils" "^7.8.3" - babel-plugin-dynamic-import-node "^2.3.0" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-replace-supers" "^7.22.5" -"@babel/plugin-transform-modules-umd@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.9.0.tgz#e909acae276fec280f9b821a5f38e1f08b480697" - integrity sha512-uTWkXkIVtg/JGRSIABdBoMsoIeoHQHPTL0Y2E7xf5Oj7sLqwVsNXOkNk0VJc7vF0IMBsPeikHxFjGe+qmwPtTQ== +"@babel/plugin-transform-optional-catch-binding@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.5.tgz#842080be3076703be0eaf32ead6ac8174edee333" + integrity sha512-pH8orJahy+hzZje5b8e2QIlBWQvGpelS76C63Z+jhZKsmzfNaPQ+LaW6dcJ9bxTpo1mtXbgHwy765Ro3jftmUg== dependencies: - "@babel/helper-module-transforms" "^7.9.0" - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" -"@babel/plugin-transform-named-capturing-groups-regex@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.8.3.tgz#a2a72bffa202ac0e2d0506afd0939c5ecbc48c6c" - integrity sha512-f+tF/8UVPU86TrCb06JoPWIdDpTNSGGcAtaD9mLP0aYGA0OS0j7j7DHJR0GTFrUZPUU6loZhbsVZgTh0N+Qdnw== +"@babel/plugin-transform-optional-chaining@^7.22.5", "@babel/plugin-transform-optional-chaining@^7.22.6": + version "7.22.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.22.6.tgz#4bacfe37001fe1901117672875e931d439811564" + integrity sha512-Vd5HiWml0mDVtcLHIoEU5sw6HOUW/Zk0acLs/SAeuLzkGNOPc9DB4nkUajemhCmTIz3eiaKREZn2hQQqF79YTg== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.8.3" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" -"@babel/plugin-transform-new-target@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.8.3.tgz#60cc2ae66d85c95ab540eb34babb6434d4c70c43" - integrity sha512-QuSGysibQpyxexRyui2vca+Cmbljo8bcRckgzYV4kRIsHpVeyeC3JDO63pY+xFZ6bWOBn7pfKZTqV4o/ix9sFw== +"@babel/plugin-transform-parameters@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.5.tgz#c3542dd3c39b42c8069936e48717a8d179d63a18" + integrity sha512-AVkFUBurORBREOmHRKo06FjHYgjrabpdqRSwq6+C7R5iTCZOsM4QbcB27St0a4U6fffyAOqh3s/qEfybAhfivg== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-object-super@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.8.3.tgz#ebb6a1e7a86ffa96858bd6ac0102d65944261725" - integrity sha512-57FXk+gItG/GejofIyLIgBKTas4+pEU47IXKDBWFTxdPd7F80H8zybyAY7UoblVfBhBGs2EKM+bJUu2+iUYPDQ== +"@babel/plugin-transform-private-methods@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.22.5.tgz#21c8af791f76674420a147ae62e9935d790f8722" + integrity sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/helper-replace-supers" "^7.8.3" + "@babel/helper-create-class-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-parameters@^7.8.7": - version "7.9.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.9.3.tgz#3028d0cc20ddc733166c6e9c8534559cee09f54a" - integrity sha512-fzrQFQhp7mIhOzmOtPiKffvCYQSK10NR8t6BBz2yPbeUHb9OLW8RZGtgDRBn8z2hGcwvKDL3vC7ojPTLNxmqEg== +"@babel/plugin-transform-private-property-in-object@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.5.tgz#07a77f28cbb251546a43d175a1dda4cf3ef83e32" + integrity sha512-/9xnaTTJcVoBtSSmrVyhtSvO3kbqS2ODoh2juEU72c3aYonNF0OMGiaz2gjukyKM2wBBYJP38S4JiE0Wfb5VMQ== dependencies: - "@babel/helper-get-function-arity" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-create-class-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" -"@babel/plugin-transform-property-literals@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.8.3.tgz#33194300d8539c1ed28c62ad5087ba3807b98263" - integrity sha512-uGiiXAZMqEoQhRWMK17VospMZh5sXWg+dlh2soffpkAl96KAm+WZuJfa6lcELotSRmooLqg0MWdH6UUq85nmmg== +"@babel/plugin-transform-property-literals@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.22.5.tgz#b5ddabd73a4f7f26cd0e20f5db48290b88732766" + integrity sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-transform-react-display-name@^7.8.3": version "7.8.3" @@ -983,65 +953,56 @@ "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-jsx" "^7.8.3" -"@babel/plugin-transform-regenerator@^7.8.7": - version "7.8.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.7.tgz#5e46a0dca2bee1ad8285eb0527e6abc9c37672f8" - integrity sha512-TIg+gAl4Z0a3WmD3mbYSk+J9ZUH6n/Yc57rtKRnlA/7rcCvpekHXe0CMZHP1gYp7/KLe9GHTuIba0vXmls6drA== - dependencies: - regenerator-transform "^0.14.2" - -"@babel/plugin-transform-reserved-words@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.8.3.tgz#9a0635ac4e665d29b162837dd3cc50745dfdf1f5" - integrity sha512-mwMxcycN3omKFDjDQUl+8zyMsBfjRFr0Zn/64I41pmjv4NJuqcYlEtezwYtw9TFd9WR1vN5kiM+O0gMZzO6L0A== +"@babel/plugin-transform-regenerator@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.5.tgz#cd8a68b228a5f75fa01420e8cc2fc400f0fc32aa" + integrity sha512-rR7KePOE7gfEtNTh9Qw+iO3Q/e4DEsoQ+hdvM6QUDH7JRJ5qxq5AA52ZzBWbI5i9lfNuvySgOGP8ZN7LAmaiPw== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-plugin-utils" "^7.22.5" + regenerator-transform "^0.15.1" -"@babel/plugin-transform-shorthand-properties@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.8.3.tgz#28545216e023a832d4d3a1185ed492bcfeac08c8" - integrity sha512-I9DI6Odg0JJwxCHzbzW08ggMdCezoWcuQRz3ptdudgwaHxTjxw5HgdFJmZIkIMlRymL6YiZcped4TTCB0JcC8w== +"@babel/plugin-transform-reserved-words@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.22.5.tgz#832cd35b81c287c4bcd09ce03e22199641f964fb" + integrity sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-spread@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.8.3.tgz#9c8ffe8170fdfb88b114ecb920b82fb6e95fe5e8" - integrity sha512-CkuTU9mbmAoFOI1tklFWYYbzX5qCIZVXPVy0jpXgGwkplCndQAa58s2jr66fTeQnA64bDox0HL4U56CFYoyC7g== +"@babel/plugin-transform-shorthand-properties@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.22.5.tgz#6e277654be82b5559fc4b9f58088507c24f0c624" + integrity sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-sticky-regex@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.8.3.tgz#be7a1290f81dae767475452199e1f76d6175b100" - integrity sha512-9Spq0vGCD5Bb4Z/ZXXSK5wbbLFMG085qd2vhL1JYu1WcQ5bXqZBAYRzU1d+p79GcHs2szYv5pVQCX13QgldaWw== +"@babel/plugin-transform-spread@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.22.5.tgz#6487fd29f229c95e284ba6c98d65eafb893fea6b" + integrity sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/helper-regex" "^7.8.3" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" -"@babel/plugin-transform-template-literals@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.8.3.tgz#7bfa4732b455ea6a43130adc0ba767ec0e402a80" - integrity sha512-820QBtykIQOLFT8NZOcTRJ1UNuztIELe4p9DCgvj4NK+PwluSJ49we7s9FB1HIGNIYT7wFUJ0ar2QpCDj0escQ== +"@babel/plugin-transform-sticky-regex@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.22.5.tgz#295aba1595bfc8197abd02eae5fc288c0deb26aa" + integrity sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw== dependencies: - "@babel/helper-annotate-as-pure" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-typeof-symbol@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.8.4.tgz#ede4062315ce0aaf8a657a920858f1a2f35fc412" - integrity sha512-2QKyfjGdvuNfHsb7qnBBlKclbD4CfshH2KvDabiijLMGXPHJXGxtDzwIF7bQP+T0ysw8fYTtxPafgfs/c1Lrqg== +"@babel/plugin-transform-template-literals@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.22.5.tgz#8f38cf291e5f7a8e60e9f733193f0bcc10909bff" + integrity sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-typescript@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.12.1.tgz#d92cc0af504d510e26a754a7dbc2e5c8cd9c7ab4" - integrity sha512-VrsBByqAIntM+EYMqSm59SiMEf7qkmI9dqMt6RbD/wlwueWmYcI0FFK5Fj47pP6DRZm+3teXjosKlwcZJ5lIMw== +"@babel/plugin-transform-typeof-symbol@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.22.5.tgz#5e2ba478da4b603af8673ff7c54f75a97b716b34" + integrity sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA== dependencies: - "@babel/helper-create-class-features-plugin" "^7.12.1" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-typescript" "^7.12.1" + "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-transform-typescript@^7.22.5": version "7.22.9" @@ -1053,79 +1014,122 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-typescript" "^7.22.5" -"@babel/plugin-transform-unicode-regex@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.8.3.tgz#0cef36e3ba73e5c57273effb182f46b91a1ecaad" - integrity sha512-+ufgJjYdmWfSQ+6NS9VGUR2ns8cjJjYbrbi11mZBTaWm+Fui/ncTLFF28Ei1okavY+xkojGr1eJxNsWYeA5aZw== +"@babel/plugin-transform-unicode-escapes@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.5.tgz#ce0c248522b1cb22c7c992d88301a5ead70e806c" + integrity sha512-biEmVg1IYB/raUO5wT1tgfacCef15Fbzhkx493D3urBI++6hpJ+RFG4SrWMn0NEZLfvilqKf3QDrRVZHo08FYg== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/preset-env@^7.1.6", "@babel/preset-env@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.9.0.tgz#a5fc42480e950ae8f5d9f8f2bbc03f52722df3a8" - integrity sha512-712DeRXT6dyKAM/FMbQTV/FvRCms2hPCx+3weRjZ8iQVQWZejWWk1wwG6ViWMyqb/ouBbGOl5b6aCk0+j1NmsQ== +"@babel/plugin-transform-unicode-property-regex@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.22.5.tgz#098898f74d5c1e86660dc112057b2d11227f1c81" + integrity sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A== dependencies: - "@babel/compat-data" "^7.9.0" - "@babel/helper-compilation-targets" "^7.8.7" - "@babel/helper-module-imports" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-proposal-async-generator-functions" "^7.8.3" - "@babel/plugin-proposal-dynamic-import" "^7.8.3" - "@babel/plugin-proposal-json-strings" "^7.8.3" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-proposal-numeric-separator" "^7.8.3" - "@babel/plugin-proposal-object-rest-spread" "^7.9.0" - "@babel/plugin-proposal-optional-catch-binding" "^7.8.3" - "@babel/plugin-proposal-optional-chaining" "^7.9.0" - "@babel/plugin-proposal-unicode-property-regex" "^7.8.3" - "@babel/plugin-syntax-async-generators" "^7.8.0" - "@babel/plugin-syntax-dynamic-import" "^7.8.0" - "@babel/plugin-syntax-json-strings" "^7.8.0" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" - "@babel/plugin-syntax-numeric-separator" "^7.8.0" - "@babel/plugin-syntax-object-rest-spread" "^7.8.0" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" - "@babel/plugin-syntax-optional-chaining" "^7.8.0" - "@babel/plugin-syntax-top-level-await" "^7.8.3" - "@babel/plugin-transform-arrow-functions" "^7.8.3" - "@babel/plugin-transform-async-to-generator" "^7.8.3" - "@babel/plugin-transform-block-scoped-functions" "^7.8.3" - "@babel/plugin-transform-block-scoping" "^7.8.3" - "@babel/plugin-transform-classes" "^7.9.0" - "@babel/plugin-transform-computed-properties" "^7.8.3" - "@babel/plugin-transform-destructuring" "^7.8.3" - "@babel/plugin-transform-dotall-regex" "^7.8.3" - "@babel/plugin-transform-duplicate-keys" "^7.8.3" - "@babel/plugin-transform-exponentiation-operator" "^7.8.3" - "@babel/plugin-transform-for-of" "^7.9.0" - "@babel/plugin-transform-function-name" "^7.8.3" - "@babel/plugin-transform-literals" "^7.8.3" - "@babel/plugin-transform-member-expression-literals" "^7.8.3" - "@babel/plugin-transform-modules-amd" "^7.9.0" - "@babel/plugin-transform-modules-commonjs" "^7.9.0" - "@babel/plugin-transform-modules-systemjs" "^7.9.0" - "@babel/plugin-transform-modules-umd" "^7.9.0" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.8.3" - "@babel/plugin-transform-new-target" "^7.8.3" - "@babel/plugin-transform-object-super" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.8.7" - "@babel/plugin-transform-property-literals" "^7.8.3" - "@babel/plugin-transform-regenerator" "^7.8.7" - "@babel/plugin-transform-reserved-words" "^7.8.3" - "@babel/plugin-transform-shorthand-properties" "^7.8.3" - "@babel/plugin-transform-spread" "^7.8.3" - "@babel/plugin-transform-sticky-regex" "^7.8.3" - "@babel/plugin-transform-template-literals" "^7.8.3" - "@babel/plugin-transform-typeof-symbol" "^7.8.4" - "@babel/plugin-transform-unicode-regex" "^7.8.3" - "@babel/preset-modules" "^0.1.3" - "@babel/types" "^7.9.0" - browserslist "^4.9.1" - core-js-compat "^3.6.2" - invariant "^2.2.2" - levenary "^1.1.1" - semver "^5.5.0" + "@babel/helper-create-regexp-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-unicode-regex@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.22.5.tgz#ce7e7bb3ef208c4ff67e02a22816656256d7a183" + integrity sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-unicode-sets-regex@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.22.5.tgz#77788060e511b708ffc7d42fdfbc5b37c3004e91" + integrity sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/preset-env@^7.1.6", "@babel/preset-env@^7.22.9": + version "7.22.9" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.22.9.tgz#57f17108eb5dfd4c5c25a44c1977eba1df310ac7" + integrity sha512-wNi5H/Emkhll/bqPjsjQorSykrlfY5OWakd6AulLvMEytpKasMVUpVy8RL4qBIBs5Ac6/5i0/Rv0b/Fg6Eag/g== + dependencies: + "@babel/compat-data" "^7.22.9" + "@babel/helper-compilation-targets" "^7.22.9" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-validator-option" "^7.22.5" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.22.5" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.22.5" + "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-syntax-import-assertions" "^7.22.5" + "@babel/plugin-syntax-import-attributes" "^7.22.5" + "@babel/plugin-syntax-import-meta" "^7.10.4" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/plugin-syntax-top-level-await" "^7.14.5" + "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" + "@babel/plugin-transform-arrow-functions" "^7.22.5" + "@babel/plugin-transform-async-generator-functions" "^7.22.7" + "@babel/plugin-transform-async-to-generator" "^7.22.5" + "@babel/plugin-transform-block-scoped-functions" "^7.22.5" + "@babel/plugin-transform-block-scoping" "^7.22.5" + "@babel/plugin-transform-class-properties" "^7.22.5" + "@babel/plugin-transform-class-static-block" "^7.22.5" + "@babel/plugin-transform-classes" "^7.22.6" + "@babel/plugin-transform-computed-properties" "^7.22.5" + "@babel/plugin-transform-destructuring" "^7.22.5" + "@babel/plugin-transform-dotall-regex" "^7.22.5" + "@babel/plugin-transform-duplicate-keys" "^7.22.5" + "@babel/plugin-transform-dynamic-import" "^7.22.5" + "@babel/plugin-transform-exponentiation-operator" "^7.22.5" + "@babel/plugin-transform-export-namespace-from" "^7.22.5" + "@babel/plugin-transform-for-of" "^7.22.5" + "@babel/plugin-transform-function-name" "^7.22.5" + "@babel/plugin-transform-json-strings" "^7.22.5" + "@babel/plugin-transform-literals" "^7.22.5" + "@babel/plugin-transform-logical-assignment-operators" "^7.22.5" + "@babel/plugin-transform-member-expression-literals" "^7.22.5" + "@babel/plugin-transform-modules-amd" "^7.22.5" + "@babel/plugin-transform-modules-commonjs" "^7.22.5" + "@babel/plugin-transform-modules-systemjs" "^7.22.5" + "@babel/plugin-transform-modules-umd" "^7.22.5" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.22.5" + "@babel/plugin-transform-new-target" "^7.22.5" + "@babel/plugin-transform-nullish-coalescing-operator" "^7.22.5" + "@babel/plugin-transform-numeric-separator" "^7.22.5" + "@babel/plugin-transform-object-rest-spread" "^7.22.5" + "@babel/plugin-transform-object-super" "^7.22.5" + "@babel/plugin-transform-optional-catch-binding" "^7.22.5" + "@babel/plugin-transform-optional-chaining" "^7.22.6" + "@babel/plugin-transform-parameters" "^7.22.5" + "@babel/plugin-transform-private-methods" "^7.22.5" + "@babel/plugin-transform-private-property-in-object" "^7.22.5" + "@babel/plugin-transform-property-literals" "^7.22.5" + "@babel/plugin-transform-regenerator" "^7.22.5" + "@babel/plugin-transform-reserved-words" "^7.22.5" + "@babel/plugin-transform-shorthand-properties" "^7.22.5" + "@babel/plugin-transform-spread" "^7.22.5" + "@babel/plugin-transform-sticky-regex" "^7.22.5" + "@babel/plugin-transform-template-literals" "^7.22.5" + "@babel/plugin-transform-typeof-symbol" "^7.22.5" + "@babel/plugin-transform-unicode-escapes" "^7.22.5" + "@babel/plugin-transform-unicode-property-regex" "^7.22.5" + "@babel/plugin-transform-unicode-regex" "^7.22.5" + "@babel/plugin-transform-unicode-sets-regex" "^7.22.5" + "@babel/preset-modules" "^0.1.5" + "@babel/types" "^7.22.5" + babel-plugin-polyfill-corejs2 "^0.4.4" + babel-plugin-polyfill-corejs3 "^0.8.2" + babel-plugin-polyfill-regenerator "^0.5.1" + core-js-compat "^3.31.0" + semver "^6.3.1" "@babel/preset-flow@^7.0.0": version "7.12.1" @@ -1144,10 +1148,10 @@ "@babel/helper-validator-option" "^7.22.5" "@babel/plugin-transform-flow-strip-types" "^7.22.5" -"@babel/preset-modules@^0.1.3": - version "0.1.3" - resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.3.tgz#13242b53b5ef8c883c3cf7dddd55b36ce80fbc72" - integrity sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg== +"@babel/preset-modules@^0.1.5": + version "0.1.6" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.6.tgz#31bcdd8f19538437339d17af00d177d854d9d458" + integrity sha512-ID2yj6K/4lKfhuU3+EX4UvNbIt7eACFbHmNUjzA+ep+B5971CknnA/9DEWKbRokfbbtblxxxXFJJrH47UEAMVg== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" @@ -1167,16 +1171,7 @@ "@babel/plugin-transform-react-jsx-self" "^7.9.0" "@babel/plugin-transform-react-jsx-source" "^7.9.0" -"@babel/preset-typescript@^7.1.0", "@babel/preset-typescript@^7.12.7": - version "7.12.7" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.12.7.tgz#fc7df8199d6aae747896f1e6c61fc872056632a3" - integrity sha512-nOoIqIqBmHBSEgBXWR4Dv/XBehtIFcw9PqZw6rFYuKrzsZmOQm3PR5siLBnKZFEsDb03IegG8nSjU/iXXXYRmw== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-validator-option" "^7.12.1" - "@babel/plugin-transform-typescript" "^7.12.1" - -"@babel/preset-typescript@^7.13.0": +"@babel/preset-typescript@^7.1.0", "@babel/preset-typescript@^7.13.0", "@babel/preset-typescript@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.22.5.tgz#16367d8b01d640e9a507577ed4ee54e0101e51c8" integrity sha512-YbPaal9LxztSGhmndR46FmAbkJ/1fAsw293tSU+I5E5h+cnJ3d4GTwyUgGYmOXJYdGA+uNePle4qbaRzj2NISQ== @@ -1209,6 +1204,11 @@ pirates "^4.0.5" source-map-support "^0.5.16" +"@babel/regjsgen@^0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" + integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== + "@babel/runtime@^7.2.0": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.5.tgz#8564dd588182ce0047d55d7a75e93921107b57ec" @@ -1223,16 +1223,7 @@ dependencies: regenerator-runtime "^0.13.4" -"@babel/template@^7.10.4": - version "7.12.7" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.12.7.tgz#c817233696018e39fbb6c491d2fb684e05ed43bc" - integrity sha512-GkDzmHS6GV7ZeXfJZ0tLRBhZcMcY0/Lnb+eEbXDBfCAcZCjrZKe6p3J4we/D24O9Y8enxWAg1cWwof59yLh2ow== - dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/parser" "^7.12.7" - "@babel/types" "^7.12.7" - -"@babel/template@^7.22.5", "@babel/template@^7.4.0", "@babel/template@^7.8.3", "@babel/template@^7.8.6": +"@babel/template@^7.22.5", "@babel/template@^7.4.0": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.5.tgz#0c8c4d944509875849bd0344ff0050756eefc6ec" integrity sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw== @@ -1241,7 +1232,7 @@ "@babel/parser" "^7.22.5" "@babel/types" "^7.22.5" -"@babel/traverse@^7.1.0", "@babel/traverse@^7.22.6", "@babel/traverse@^7.22.8", "@babel/traverse@^7.4.3", "@babel/traverse@^7.8.6", "@babel/traverse@^7.9.0": +"@babel/traverse@^7.1.0", "@babel/traverse@^7.22.6", "@babel/traverse@^7.22.8", "@babel/traverse@^7.4.3": version "7.22.8" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.22.8.tgz#4d4451d31bc34efeae01eac222b514a77aa4000e" integrity sha512-y6LPR+wpM2I3qJrsheCTwhIinzkETbplIgPBbwvqPKc+uljeA5gP+3nP8irdYt1mjQaDnlIcG+dw8OjAco4GXw== @@ -1257,37 +1248,7 @@ debug "^4.1.0" globals "^11.1.0" -"@babel/traverse@^7.12.5": - version "7.12.9" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.12.9.tgz#fad26c972eabbc11350e0b695978de6cc8e8596f" - integrity sha512-iX9ajqnLdoU1s1nHt36JDI9KG4k+vmI8WgjK5d+aDTwQbL2fUnzedNedssA645Ede3PM2ma1n8Q4h2ohwXgMXw== - dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/generator" "^7.12.5" - "@babel/helper-function-name" "^7.10.4" - "@babel/helper-split-export-declaration" "^7.11.0" - "@babel/parser" "^7.12.7" - "@babel/types" "^7.12.7" - debug "^4.1.0" - globals "^11.1.0" - lodash "^4.17.19" - -"@babel/traverse@^7.8.3": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.9.0.tgz#d3882c2830e513f4fe4cec9fe76ea1cc78747892" - integrity sha512-jAZQj0+kn4WTHO5dUZkZKhbFrqZE7K5LAQ5JysMnmvGij+wOdr+8lWqPeW0BcF4wFwrEXXtdGO7wcV6YPJcf3w== - dependencies: - "@babel/code-frame" "^7.8.3" - "@babel/generator" "^7.9.0" - "@babel/helper-function-name" "^7.8.3" - "@babel/helper-split-export-declaration" "^7.8.3" - "@babel/parser" "^7.9.0" - "@babel/types" "^7.9.0" - debug "^4.1.0" - globals "^11.1.0" - lodash "^4.17.13" - -"@babel/types@^7.0.0", "@babel/types@^7.16.7", "@babel/types@^7.20.7", "@babel/types@^7.22.5", "@babel/types@^7.4.0", "@babel/types@^7.8.3", "@babel/types@^7.8.6", "@babel/types@^7.9.0": +"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.22.5", "@babel/types@^7.4.0", "@babel/types@^7.8.3", "@babel/types@^7.9.0": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.22.5.tgz#cd93eeaab025880a3a47ec881f4b096a5b786fbe" integrity sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA== @@ -1296,15 +1257,6 @@ "@babel/helper-validator-identifier" "^7.22.5" to-fast-properties "^2.0.0" -"@babel/types@^7.10.4", "@babel/types@^7.11.0", "@babel/types@^7.12.5", "@babel/types@^7.12.7": - version "7.12.7" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.7.tgz#6039ff1e242640a29452c9ae572162ec9a8f5d13" - integrity sha512-MNyI92qZq6jrQkXvtIiykvl4WtoRrVV9MPn+ZfsoEENjiWcBQ3ZSHrkxnJWgWtLX3XXqX5hrSQ+X69wkmesXuQ== - dependencies: - "@babel/helper-validator-identifier" "^7.10.4" - lodash "^4.17.19" - to-fast-properties "^2.0.0" - "@babel/types@^7.4.4": version "7.9.0" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.9.0.tgz#00b064c3df83ad32b2dbf5ff07312b15c7f1efb5" @@ -1630,6 +1582,11 @@ resolved "https://registry.yarnpkg.com/@mapbox/whoots-js/-/whoots-js-3.1.0.tgz#497c67a1cef50d1a2459ba60f315e448d2ad87fe" integrity sha512-Es6WcD0nO5l+2BOQS4uLfNPYQaNDfbot3X1XUoloz+x0mPDS3eeORZJl06HXjwBG1fOGwCRnzK88LMdxKRrd6Q== +"@nicolo-ribaudo/chokidar-2@2.1.8-no-fsevents.3": + version "2.1.8-no-fsevents.3" + resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.3.tgz#323d72dd25103d0c4fbdce89dadf574a787b1f9b" + integrity sha512-s88O1aVtXftvp5bCPB7WnmXc5IwOZZ7YPuwNPt+GtOOXpPvad1LfbmjYv+qII7zP6RU2QGnqve27dnLycEnyEQ== + "@nodelib/fs.scandir@2.1.3": version "2.1.3" resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz#3a582bdb53804c6ba6d146579c46e52130cf4a3b" @@ -2530,6 +2487,14 @@ anymatch@^2.0.0: micromatch "^3.1.4" normalize-path "^2.1.1" +anymatch@~3.1.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + argparse@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" @@ -2682,11 +2647,6 @@ astral-regex@^2.0.0: resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== -async-each@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" - integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== - async-limiter@~1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" @@ -2781,13 +2741,6 @@ babel-loader@^8.1.0: pify "^4.0.1" schema-utils "^2.6.5" -babel-plugin-dynamic-import-node@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz#f00f507bdaa3c3e3ff6e7e5e98d90a7acab96f7f" - integrity sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ== - dependencies: - object.assign "^4.1.0" - babel-plugin-istanbul@^5.1.0: version "5.2.0" resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz#df4ade83d897a92df069c4d9a25cf2671293c854" @@ -2827,6 +2780,30 @@ babel-plugin-module-resolver@^4.0.0: reselect "^4.0.0" resolve "^1.13.1" +babel-plugin-polyfill-corejs2@^0.4.4: + version "0.4.5" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.5.tgz#8097b4cb4af5b64a1d11332b6fb72ef5e64a054c" + integrity sha512-19hwUH5FKl49JEsvyTcoHakh6BE0wgXLLptIyKZ3PijHc/Ci521wygORCUCCred+E/twuqRyAkE02BAWPmsHOg== + dependencies: + "@babel/compat-data" "^7.22.6" + "@babel/helper-define-polyfill-provider" "^0.4.2" + semver "^6.3.1" + +babel-plugin-polyfill-corejs3@^0.8.2: + version "0.8.3" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.3.tgz#b4f719d0ad9bb8e0c23e3e630c0c8ec6dd7a1c52" + integrity sha512-z41XaniZL26WLrvjy7soabMXrfPWARN25PZoriDEiLMxAp50AUW3t35BGQUMg5xK3UrpVTtagIDklxYa+MhiNA== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.4.2" + core-js-compat "^3.31.0" + +babel-plugin-polyfill-regenerator@^0.5.1: + version "0.5.2" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.2.tgz#80d0f3e1098c080c8b5a65f41e9427af692dc326" + integrity sha512-tAlOptU0Xj34V1Y2PNTL4Y0FOJMDB6bZmoW39FeCQIhigGLkqu3Fj6uiXpxIf6Ij274ENdYx64y6Au+ZKlb1IA== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.4.2" + babel-preset-jest@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-24.9.0.tgz#192b521e2217fb1d1f67cf73f70c336650ad3cdc" @@ -2886,10 +2863,10 @@ big.js@^5.2.2: resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== -binary-extensions@^1.0.0: - version "1.13.1" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" - integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== binary-search-bounds@^1.0.0: version "1.0.0" @@ -2973,7 +2950,7 @@ brace-expansion@^2.0.1: dependencies: balanced-match "^1.0.0" -braces@^2.3.1, braces@^2.3.2: +braces@^2.3.1: version "2.3.2" resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== @@ -2989,7 +2966,7 @@ braces@^2.3.1, braces@^2.3.2: split-string "^3.0.2" to-regex "^3.0.1" -braces@^3.0.2: +braces@^3.0.2, braces@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== @@ -3026,16 +3003,6 @@ browserslist@^4.14.5, browserslist@^4.21.9: node-releases "^2.0.12" update-browserslist-db "^1.0.11" -browserslist@^4.8.3, browserslist@^4.9.1: - version "4.11.1" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.11.1.tgz#92f855ee88d6e050e7e7311d987992014f1a1f1b" - integrity sha512-DCTr3kDrKEYNw6Jb9HFxVLQNaue8z+0ZfRBRjmCunKDEXEBajKDj2Y+Uelg+Pi29OnvaSGwjOsnRyNEkXzHg5g== - dependencies: - caniuse-lite "^1.0.30001038" - electron-to-chromium "^1.3.390" - node-releases "^1.1.53" - pkg-up "^2.0.0" - bser@2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" @@ -3102,7 +3069,7 @@ camelcase@^5.0.0, camelcase@^5.3.1: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== -caniuse-lite@^1.0.30000844, caniuse-lite@^1.0.30000864, caniuse-lite@^1.0.30001038: +caniuse-lite@^1.0.30000844, caniuse-lite@^1.0.30000864: version "1.0.30001039" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001039.tgz#b3814a1c38ffeb23567f8323500c09526a577bbe" integrity sha512-SezbWCTT34eyFoWHgx8UWso7YtvtM7oosmFoXbCkdC6qJzRfBTeTgE9REtKtiuKXuMwWTZEvdnFNGAyVMorv8Q== @@ -3182,24 +3149,20 @@ cheerio@^1.0.0-rc.3: lodash "^4.15.0" parse5 "^3.0.1" -chokidar@^2.1.8: - version "2.1.8" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" - integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== - dependencies: - anymatch "^2.0.0" - async-each "^1.0.1" - braces "^2.3.2" - glob-parent "^3.1.0" - inherits "^2.0.3" - is-binary-path "^1.0.0" - is-glob "^4.0.0" - normalize-path "^3.0.0" - path-is-absolute "^1.0.0" - readdirp "^2.2.1" - upath "^1.1.1" +chokidar@^3.4.0: + version "3.5.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" + integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.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" optionalDependencies: - fsevents "^1.2.7" + fsevents "~2.3.2" chroma-js@^1.3.6: version "1.4.1" @@ -3526,13 +3489,12 @@ copy-descriptor@^0.1.0: resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" integrity sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw== -core-js-compat@^3.6.2: - version "3.6.4" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.6.4.tgz#938476569ebb6cda80d339bcf199fae4f16fff17" - integrity sha512-zAa3IZPvsJ0slViBQ2z+vgyyTuhd3MFn1rBQjZSKVEgB0UMYhUkCj9jJUVPgGTGqWvsBVmfnruXgTcNyTlEiSA== +core-js-compat@^3.31.0: + version "3.31.1" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.31.1.tgz#5084ad1a46858df50ff89ace152441a63ba7aae0" + integrity sha512-wIDWd2s5/5aJSdpOJHfSibxNODxoGoWOBHt8JSPB41NOE94M7kuTPZCYLOlTtuoXTsBPKobpJ6T+y0SSy5L9SA== dependencies: - browserslist "^4.8.3" - semver "7.0.0" + browserslist "^4.21.9" core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" @@ -4036,7 +3998,7 @@ edges-to-adjacency-list@^1.0.0: dependencies: uniq "^1.0.0" -electron-to-chromium@^1.3.390, electron-to-chromium@^1.3.47: +electron-to-chromium@^1.3.47: version "1.3.397" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.397.tgz#db640c2e67b08d590a504c20b56904537aa2bafa" integrity sha512-zcUd1p/7yzTSdWkCTrqGvbnEOASy96d0RJL/lc5BDJoO23Z3G/VHd0yIPbguDU9n8QNUTCigLO7oEdtOb7fp2A== @@ -4715,13 +4677,6 @@ find-cache-dir@^2.0.0, find-cache-dir@^2.1.0: make-dir "^2.0.0" pkg-dir "^3.0.0" -find-up@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" - integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= - dependencies: - locate-path "^2.0.0" - find-up@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" @@ -4864,6 +4819,11 @@ fsevents@^1.2.7: bindings "^1.5.0" nan "^2.12.1" +fsevents@~2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + function-bind@^1.1.1, function-bind@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" @@ -4908,7 +4868,7 @@ gamma@^0.1.0: resolved "https://registry.yarnpkg.com/gamma/-/gamma-0.1.0.tgz#3315643403bf27906ca80ab37c36ece9440ef330" integrity sha1-MxVkNAO/J5BsqAqzfDbs6UQO8zA= -gensync@^1.0.0-beta.1, gensync@^1.0.0-beta.2: +gensync@^1.0.0-beta.2: version "1.0.0-beta.2" resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== @@ -5347,15 +5307,7 @@ gl-vec4@^1.0.0, gl-vec4@^1.0.1: resolved "https://registry.yarnpkg.com/gl-vec4/-/gl-vec4-1.0.1.tgz#97d96878281b14b532cbce101785dfd1cb340964" integrity sha1-l9loeCgbFLUyy84QF4Xf0cs0CWQ= -glob-parent@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" - integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= - dependencies: - is-glob "^3.1.0" - path-dirname "^1.0.0" - -glob-parent@^5.1.2: +glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== @@ -5367,27 +5319,27 @@ glob-to-regexp@^0.4.1: resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== -glob@^7.0.0, glob@^7.1.4, glob@^7.1.6, glob@~7.1.6: - version "7.1.6" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" - integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== +glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.2.0: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" inherits "2" - minimatch "^3.0.4" + minimatch "^3.1.1" once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.1.1, glob@^7.1.2, glob@^7.1.3: - version "7.2.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" - integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== +glob@^7.1.4, glob@^7.1.6, glob@~7.1.6: + version "7.1.6" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" inherits "2" - minimatch "^3.1.1" + minimatch "^3.0.4" once "^1.3.0" path-is-absolute "^1.0.0" @@ -5871,7 +5823,7 @@ interval-tree-1d@^1.0.1: dependencies: binary-search-bounds "^1.0.0" -invariant@^2.2.0, invariant@^2.2.2, invariant@^2.2.4: +invariant@^2.2.0, invariant@^2.2.4: version "2.2.4" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== @@ -5933,12 +5885,12 @@ is-bigint@^1.0.1: dependencies: has-bigints "^1.0.1" -is-binary-path@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" - integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== dependencies: - binary-extensions "^1.0.0" + binary-extensions "^2.0.0" is-blob@^2.0.1: version "2.1.0" @@ -6048,7 +6000,7 @@ is-extendable@^1.0.1: dependencies: is-plain-object "^2.0.4" -is-extglob@^2.1.0, is-extglob@^2.1.1: +is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= @@ -6083,13 +6035,6 @@ is-generator-fn@^2.0.0: resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== -is-glob@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" - integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= - dependencies: - is-extglob "^2.1.0" - is-glob@^4.0.0, is-glob@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" @@ -6097,6 +6042,13 @@ is-glob@^4.0.0, is-glob@^4.0.1: dependencies: is-extglob "^2.1.1" +is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + is-iexplorer@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-iexplorer/-/is-iexplorer-1.0.0.tgz#1d72bc66d3fe22eaf6170dda8cf10943248cfc76" @@ -6990,13 +6942,6 @@ leven@^3.1.0: resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== -levenary@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/levenary/-/levenary-1.1.1.tgz#842a9ee98d2075aa7faeedbe32679e9205f46f77" - integrity sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ== - dependencies: - leven "^3.1.0" - levn@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" @@ -7046,14 +6991,6 @@ loader-utils@^2.0.0: emojis-list "^3.0.0" json5 "^2.1.2" -locate-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" - integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= - dependencies: - p-locate "^2.0.0" - path-exists "^3.0.0" - locate-path@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" @@ -7069,6 +7006,11 @@ locate-path@^5.0.0: dependencies: p-locate "^4.1.0" +lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== + lodash.escape@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/lodash.escape/-/lodash.escape-4.0.1.tgz#c9044690c21e04294beaa517712fded1fa88de98" @@ -7591,11 +7533,6 @@ node-notifier@^5.4.2: shellwords "^0.1.1" which "^1.3.0" -node-releases@^1.1.53: - version "1.1.53" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.53.tgz#2d821bfa499ed7c5dffc5e2f28c88e78a08ee3f4" - integrity sha512-wp8zyQVwef2hpZ/dJH7SfSrIPD6YoJz6BDQDpGEkcA0s3LpAQoxBIYmfIq6QAhC1DhwsyCgTaTTcONwX8qzCuQ== - node-releases@^2.0.12: version "2.0.12" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.12.tgz#35627cc224a23bfb06fb3380f2b3afaaa7eb1039" @@ -7618,7 +7555,7 @@ normalize-path@^2.1.1: dependencies: remove-trailing-separator "^1.0.1" -normalize-path@^3.0.0: +normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== @@ -7903,13 +7840,6 @@ p-finally@^1.0.0: resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== -p-limit@^1.1.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" - integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== - dependencies: - p-try "^1.0.0" - p-limit@^2.0.0, p-limit@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" @@ -7917,13 +7847,6 @@ p-limit@^2.0.0, p-limit@^2.2.0: dependencies: p-try "^2.0.0" -p-locate@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" - integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= - dependencies: - p-limit "^1.1.0" - p-locate@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" @@ -7943,11 +7866,6 @@ p-reduce@^1.0.0: resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-1.0.0.tgz#18c2b0dd936a4690a529f8231f58a0fdb6a47dfa" integrity sha512-3Tx1T3oM1xO/Y8Gj0sWyE78EIJZ+t+aEmXUdvQgvGmSMri7aPTHoovbXEreWKkL5j21Er60XAWLTzKbAKYOujQ== -p-try@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" - integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= - p-try@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" @@ -8024,11 +7942,6 @@ path-browserify@^1.0.1: resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd" integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g== -path-dirname@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" - integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= - path-exists@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" @@ -8104,7 +8017,7 @@ picocolors@^1.0.0: resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== -picomatch@^2.3.1: +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== @@ -8150,13 +8063,6 @@ pkg-dir@^4.2.0: dependencies: find-up "^4.0.0" -pkg-up@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-2.0.0.tgz#c819ac728059a461cab1c3889a2be3c49a004d7f" - integrity sha1-yBmscoBZpGHKscOImivjxJoATX8= - dependencies: - find-up "^2.1.0" - pkg-up@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5" @@ -8422,7 +8328,7 @@ pretty-ms@^7.0.1: dependencies: parse-ms "^2.1.0" -private@^0.1.8, private@~0.1.5: +private@~0.1.5: version "0.1.8" resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== @@ -8657,7 +8563,7 @@ read-pkg@^3.0.0: isarray "0.0.1" string_decoder "~0.10.x" -readable-stream@^2.0.0, readable-stream@^2.0.2, readable-stream@^2.2.2, readable-stream@^2.3.5, readable-stream@~2.3.6: +readable-stream@^2.0.0, readable-stream@^2.2.2, readable-stream@^2.3.5, readable-stream@~2.3.6: version "2.3.7" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== @@ -8679,14 +8585,12 @@ readable-stream@^3.1.1: string_decoder "^1.1.1" util-deprecate "^1.0.1" -readdirp@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" - integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== dependencies: - graceful-fs "^4.1.11" - micromatch "^3.1.10" - readable-stream "^2.0.2" + picomatch "^2.2.1" realpath-native@^1.1.0: version "1.1.0" @@ -8736,6 +8640,13 @@ reflect.ownkeys@^0.2.0: resolved "https://registry.yarnpkg.com/reflect.ownkeys/-/reflect.ownkeys-0.2.0.tgz#749aceec7f3fdf8b63f927a04809e90c5c0b3460" integrity sha1-dJrO7H8/34tj+SegSAnpDFwLNGA= +regenerate-unicode-properties@^10.1.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz#7c3192cab6dd24e21cb4461e5ddd7dd24fa8374c" + integrity sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ== + dependencies: + regenerate "^1.4.2" + regenerate-unicode-properties@^8.2.0: version "8.2.0" resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec" @@ -8748,18 +8659,22 @@ regenerate@^1.4.0: resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== +regenerate@^1.4.2: + version "1.4.2" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" + integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== + regenerator-runtime@^0.13.11, regenerator-runtime@^0.13.4: version "0.13.11" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== -regenerator-transform@^0.14.2: - version "0.14.4" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.4.tgz#5266857896518d1616a78a0479337a30ea974cc7" - integrity sha512-EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw== +regenerator-transform@^0.15.1: + version "0.15.1" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.1.tgz#f6c4e99fc1b4591f780db2586328e4d9a9d8dc56" + integrity sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg== dependencies: "@babel/runtime" "^7.8.4" - private "^0.1.8" regex-not@^1.0.0, regex-not@^1.0.2: version "1.0.2" @@ -8808,6 +8723,18 @@ regexpu-core@^4.5.4, regexpu-core@^4.7.0: unicode-match-property-ecmascript "^1.0.4" unicode-match-property-value-ecmascript "^1.2.0" +regexpu-core@^5.3.1: + version "5.3.2" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.3.2.tgz#11a2b06884f3527aec3e93dbbf4a3b958a95546b" + integrity sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ== + dependencies: + "@babel/regjsgen" "^0.8.0" + regenerate "^1.4.2" + regenerate-unicode-properties "^10.1.0" + regjsparser "^0.9.1" + unicode-match-property-ecmascript "^2.0.0" + unicode-match-property-value-ecmascript "^2.1.0" + regjsgen@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.1.tgz#48f0bf1a5ea205196929c0d9798b42d1ed98443c" @@ -8820,6 +8747,13 @@ regjsparser@^0.6.4: dependencies: jsesc "~0.5.0" +regjsparser@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.9.1.tgz#272d05aa10c7c1f67095b1ff0addae8442fc5709" + integrity sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ== + dependencies: + jsesc "~0.5.0" + regl-error2d@^2.0.8: version "2.0.8" resolved "https://registry.yarnpkg.com/regl-error2d/-/regl-error2d-2.0.8.tgz#0f26371ee99c78d42e9c5a197387e32034bcf640" @@ -8954,7 +8888,7 @@ request-promise-native@^1.0.5: stealthy-require "^1.1.1" tough-cookie "^2.3.3" -request@^2.88.2: +request@^2.83.0, request@^2.87.0: version "2.88.2" resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== @@ -9058,7 +8992,7 @@ resolve@^1.0.0, resolve@^1.1.5, resolve@^1.13.1, resolve@~1.15.1: dependencies: path-parse "^1.0.6" -resolve@^1.10.0, resolve@^1.20.0, resolve@^1.3.2: +resolve@^1.10.0, resolve@^1.14.2, resolve@^1.20.0: version "1.22.2" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.2.tgz#0ed0943d4e301867955766c9f3e1ae6d01c6845f" integrity sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g== @@ -9320,11 +9254,6 @@ schema-utils@^3.1.1, schema-utils@^3.2.0: resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== -semver@7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" - integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== - semver@^6.0.0, semver@^6.2.0, semver@^6.3.0, semver@^6.3.1: version "6.3.1" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" @@ -9566,7 +9495,7 @@ source-map-url@^0.4.0: resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== -source-map@^0.5.0, source-map@^0.5.6: +source-map@^0.5.6: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= @@ -10366,6 +10295,11 @@ unicode-canonical-property-names-ecmascript@^1.0.4: resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== +unicode-canonical-property-names-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" + integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== + unicode-match-property-ecmascript@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" @@ -10374,16 +10308,34 @@ unicode-match-property-ecmascript@^1.0.4: unicode-canonical-property-names-ecmascript "^1.0.4" unicode-property-aliases-ecmascript "^1.0.4" +unicode-match-property-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" + integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== + dependencies: + unicode-canonical-property-names-ecmascript "^2.0.0" + unicode-property-aliases-ecmascript "^2.0.0" + unicode-match-property-value-ecmascript@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531" integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ== +unicode-match-property-value-ecmascript@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz#cb5fffdcd16a05124f5a4b0bf7c3770208acbbe0" + integrity sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA== + unicode-property-aliases-ecmascript@^1.0.4: version "1.1.0" resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4" integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== +unicode-property-aliases-ecmascript@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz#43d41e3be698bd493ef911077c9b131f827e8ccd" + integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w== + union-find@^1.0.0, union-find@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/union-find/-/union-find-1.0.2.tgz#292bac415e6ad3a89535d237010db4a536284e58" @@ -10422,11 +10374,6 @@ unset-value@^1.0.0: has-value "^0.3.1" isobject "^3.0.0" -upath@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" - integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== - updatable-log@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/updatable-log/-/updatable-log-0.2.0.tgz#8adfe35dd744bd87e8bf217425e4e8bb81b6f3c6" From 93a2901f6d1cd99bf9ded01046966266787f0940 Mon Sep 17 00:00:00 2001 From: Justin Clift Date: Tue, 25 Jul 2023 20:22:32 +1000 Subject: [PATCH 214/274] Bump @cypress/code-coverage to 3.11.0 (#6283) --- package.json | 2 +- yarn.lock | 1288 +++++--------------------------------------------- 2 files changed, 130 insertions(+), 1160 deletions(-) diff --git a/package.json b/package.json index 61070e80df..762600f184 100644 --- a/package.json +++ b/package.json @@ -86,7 +86,7 @@ "@babel/preset-env": "^7.22.9", "@babel/preset-react": "^7.0.0", "@babel/preset-typescript": "^7.22.5", - "@cypress/code-coverage": "^3.8.1", + "@cypress/code-coverage": "^3.11.0", "@percy/agent": "0.24.3", "@percy/cypress": "2.3.4", "@pmmmwh/react-refresh-webpack-plugin": "^0.5.10", diff --git a/yarn.lock b/yarn.lock index a2c3447ca3..c281452863 100644 --- a/yarn.lock +++ b/yarn.lock @@ -87,26 +87,6 @@ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.22.9.tgz#71cdb00a1ce3a329ce4cbec3a44f9fef35669730" integrity sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ== -"@babel/core@7.4.5": - version "7.4.5" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.4.5.tgz#081f97e8ffca65a9b4b0fdc7e274e703f000c06a" - integrity sha512-OvjIh6aqXtlsA8ujtGKfC7LYWksYSX8yQcM8Ay3LuvVeQ63lcOKgoZWVqcpFwkd29aYU9rVx7jxhfhiEDV9MZA== - dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/generator" "^7.4.4" - "@babel/helpers" "^7.4.4" - "@babel/parser" "^7.4.5" - "@babel/template" "^7.4.4" - "@babel/traverse" "^7.4.5" - "@babel/types" "^7.4.4" - convert-source-map "^1.1.0" - debug "^4.1.0" - json5 "^2.1.0" - lodash "^4.17.11" - resolve "^1.3.2" - semver "^5.4.1" - source-map "^0.5.0" - "@babel/core@^7.1.0", "@babel/core@^7.22.9", "@babel/core@^7.7.5": version "7.22.9" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.22.9.tgz#bd96492c68822198f33e8a256061da3cf391f58f" @@ -128,15 +108,6 @@ json5 "^2.2.2" semver "^6.3.1" -"@babel/generator@^7.11.5", "@babel/generator@^7.4.4": - version "7.11.6" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.11.6.tgz#b868900f81b163b4d464ea24545c61cbac4dc620" - integrity sha512-DWtQ1PV3r+cLbySoHrwn9RWEgKMBLLma4OBQloPRyDYvc5msJM9kvTLo1YnlJd1P/ZuKbdli3ijr5q3FvAF3uA== - dependencies: - "@babel/types" "^7.11.5" - jsesc "^2.5.1" - source-map "^0.5.0" - "@babel/generator@^7.22.7", "@babel/generator@^7.22.9", "@babel/generator@^7.4.0": version "7.22.9" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.22.9.tgz#572ecfa7a31002fa1de2a9d91621fd895da8493d" @@ -161,14 +132,6 @@ dependencies: "@babel/types" "^7.22.5" -"@babel/helper-builder-binary-assignment-operator-visitor@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz#bb0b75f31bf98cbf9ff143c1ae578b87274ae1a3" - integrity sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg== - dependencies: - "@babel/helper-explode-assignable-expression" "^7.10.4" - "@babel/types" "^7.10.4" - "@babel/helper-builder-binary-assignment-operator-visitor@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.5.tgz#a3f4758efdd0190d8927fcffd261755937c71878" @@ -210,18 +173,6 @@ "@babel/helper-split-export-declaration" "^7.22.6" semver "^6.3.1" -"@babel/helper-create-class-features-plugin@^7.3.0": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.4.tgz#2d4015d0136bd314103a70d84a7183e4b344a355" - integrity sha512-9raUiOsXPxzzLjCXeosApJItoMnX3uyT4QdM2UldffuGApNrF8e938MwNpDCK9CPoyxrEoCgT+hObJc3mZa6lQ== - dependencies: - "@babel/helper-function-name" "^7.10.4" - "@babel/helper-member-expression-to-functions" "^7.10.4" - "@babel/helper-optimise-call-expression" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-replace-supers" "^7.10.4" - "@babel/helper-split-export-declaration" "^7.10.4" - "@babel/helper-create-regexp-features-plugin@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.10.4.tgz#fdd60d88524659a0b6959c0579925e425714f3b8" @@ -240,15 +191,6 @@ regexpu-core "^5.3.1" semver "^6.3.1" -"@babel/helper-define-map@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.10.4.tgz#f037ad794264f729eda1889f4ee210b870999092" - integrity sha512-nIij0oKErfCnLUCWaCaHW0Bmtl2RO9cN7+u2QT8yqTywgALKlyUVOvHDElh+b5DwVC6YB1FOYFOTWcN/+41EDA== - dependencies: - "@babel/helper-function-name" "^7.10.4" - "@babel/types" "^7.10.4" - lodash "^4.17.13" - "@babel/helper-define-polyfill-provider@^0.4.2": version "0.4.2" resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.2.tgz#82c825cadeeeee7aad237618ebbe8fa1710015d7" @@ -265,15 +207,7 @@ resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz#f06dd41b7c1f44e1f8da6c4055b41ab3a09a7e98" integrity sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q== -"@babel/helper-explode-assignable-expression@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.10.4.tgz#40a1cd917bff1288f699a94a75b37a1a2dbd8c7c" - integrity sha512-4K71RyRQNPRrR85sr5QY4X3VwG4wtVoXZB9+L3r1Gp38DhELyHCtovqydRi7c1Ovb17eRGiQ/FD5s8JdU0Uy5A== - dependencies: - "@babel/traverse" "^7.10.4" - "@babel/types" "^7.10.4" - -"@babel/helper-function-name@^7.10.4", "@babel/helper-function-name@^7.22.5": +"@babel/helper-function-name@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz#ede300828905bb15e582c037162f99d5183af1be" integrity sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ== @@ -281,20 +215,6 @@ "@babel/template" "^7.22.5" "@babel/types" "^7.22.5" -"@babel/helper-get-function-arity@^7.10.4": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz#ea08ac753117a669f1508ba06ebcc49156387419" - integrity sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw== - dependencies: - "@babel/types" "^7.16.7" - -"@babel/helper-hoist-variables@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz#d49b001d1d5a68ca5e6604dda01a6297f7c9381e" - integrity sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA== - dependencies: - "@babel/types" "^7.10.4" - "@babel/helper-hoist-variables@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb" @@ -302,28 +222,21 @@ dependencies: "@babel/types" "^7.22.5" -"@babel/helper-member-expression-to-functions@^7.10.4", "@babel/helper-member-expression-to-functions@^7.22.5": +"@babel/helper-member-expression-to-functions@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.22.5.tgz#0a7c56117cad3372fbf8d2fb4bf8f8d64a1e76b2" integrity sha512-aBiH1NKMG0H2cGZqspNvsaBe6wNGjbJjuLy29aU+eDZjSbbN53BaxlpB02xm9v34pLTZ1nIQPFYn2qMZoa5BQQ== dependencies: "@babel/types" "^7.22.5" -"@babel/helper-module-imports@^7.0.0": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz#4c5c54be04bd31670a7382797d75b9fa2e5b5620" - integrity sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw== - dependencies: - "@babel/types" "^7.10.4" - -"@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.22.5": +"@babel/helper-module-imports@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz#1a8f4c9f4027d23f520bd76b364d44434a72660c" integrity sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg== dependencies: "@babel/types" "^7.22.5" -"@babel/helper-module-transforms@^7.10.4", "@babel/helper-module-transforms@^7.22.5", "@babel/helper-module-transforms@^7.22.9": +"@babel/helper-module-transforms@^7.22.5", "@babel/helper-module-transforms@^7.22.9": version "7.22.9" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.22.9.tgz#92dfcb1fbbb2bc62529024f72d942a8c97142129" integrity sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ== @@ -334,7 +247,7 @@ "@babel/helper-split-export-declaration" "^7.22.6" "@babel/helper-validator-identifier" "^7.22.5" -"@babel/helper-optimise-call-expression@^7.10.4", "@babel/helper-optimise-call-expression@^7.22.5": +"@babel/helper-optimise-call-expression@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz#f21531a9ccbff644fdd156b4077c16ff0c3f609e" integrity sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw== @@ -358,17 +271,6 @@ dependencies: lodash "^4.17.13" -"@babel/helper-remap-async-to-generator@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.10.4.tgz#fce8bea4e9690bbe923056ded21e54b4e8b68ed5" - integrity sha512-86Lsr6NNw3qTNl+TBcF1oRZMaVzJtbWTyTko+CQL/tvNvcGYEFKbLXDPxtW0HKk3McNOk4KzY55itGWCAGK5tg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.10.4" - "@babel/helper-wrap-function" "^7.10.4" - "@babel/template" "^7.10.4" - "@babel/traverse" "^7.10.4" - "@babel/types" "^7.10.4" - "@babel/helper-remap-async-to-generator@^7.22.5": version "7.22.9" resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.9.tgz#53a25b7484e722d7efb9c350c75c032d4628de82" @@ -378,7 +280,7 @@ "@babel/helper-environment-visitor" "^7.22.5" "@babel/helper-wrap-function" "^7.22.9" -"@babel/helper-replace-supers@^7.10.4", "@babel/helper-replace-supers@^7.22.5", "@babel/helper-replace-supers@^7.22.9": +"@babel/helper-replace-supers@^7.22.5", "@babel/helper-replace-supers@^7.22.9": version "7.22.9" resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.22.9.tgz#cbdc27d6d8d18cd22c81ae4293765a5d9afd0779" integrity sha512-LJIKvvpgPOPUThdYqcX6IXRuIcTkcAub0IaDRGCZH0p5GPUp7PhRU9QVgFcDDd51BaPkk77ZjqFwh6DZTAEmGg== @@ -387,7 +289,7 @@ "@babel/helper-member-expression-to-functions" "^7.22.5" "@babel/helper-optimise-call-expression" "^7.22.5" -"@babel/helper-simple-access@^7.10.4", "@babel/helper-simple-access@^7.22.5": +"@babel/helper-simple-access@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz#4938357dc7d782b80ed6dbb03a0fba3d22b1d5de" integrity sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w== @@ -401,7 +303,7 @@ dependencies: "@babel/types" "^7.22.5" -"@babel/helper-split-export-declaration@^7.10.4", "@babel/helper-split-export-declaration@^7.11.0", "@babel/helper-split-export-declaration@^7.22.6": +"@babel/helper-split-export-declaration@^7.22.6": version "7.22.6" resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c" integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g== @@ -423,16 +325,6 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz#de52000a15a177413c8234fa3a8af4ee8102d0ac" integrity sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw== -"@babel/helper-wrap-function@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.10.4.tgz#8a6f701eab0ff39f765b5a1cfef409990e624b87" - integrity sha512-6py45WvEF0MhiLrdxtRjKjufwLL1/ob2qDJgg5JgNdojBAZSAKnAjkyOCNug6n+OBl4VW76XjvgSFTdaMcW0Ug== - dependencies: - "@babel/helper-function-name" "^7.10.4" - "@babel/template" "^7.10.4" - "@babel/traverse" "^7.10.4" - "@babel/types" "^7.10.4" - "@babel/helper-wrap-function@^7.22.9": version "7.22.9" resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.22.9.tgz#189937248c45b0182c1dcf32f3444ca153944cb9" @@ -451,15 +343,6 @@ "@babel/traverse" "^7.22.6" "@babel/types" "^7.22.5" -"@babel/helpers@^7.4.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.10.4.tgz#2abeb0d721aff7c0a97376b9e1f6f65d7a475044" - integrity sha512-L2gX/XeUONeEbI78dXSrJzGdz4GQ+ZTA/aazfUsFaWjSe95kiCuOZ5HsXvkiw3iwF+mFHSRUfJU8t6YavocdXA== - dependencies: - "@babel/template" "^7.10.4" - "@babel/traverse" "^7.10.4" - "@babel/types" "^7.10.4" - "@babel/highlight@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.22.5.tgz#aa6c05c5407a67ebce408162b7ede789b4d22031" @@ -469,16 +352,11 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.0.0", "@babel/parser@^7.1.0", "@babel/parser@^7.10.4", "@babel/parser@^7.20.7", "@babel/parser@^7.22.5", "@babel/parser@^7.22.7", "@babel/parser@^7.4.3": +"@babel/parser@^7.0.0", "@babel/parser@^7.1.0", "@babel/parser@^7.20.7", "@babel/parser@^7.22.5", "@babel/parser@^7.22.7", "@babel/parser@^7.4.3": version "7.22.7" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.22.7.tgz#df8cf085ce92ddbdbf668a7f186ce848c9036cae" integrity sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q== -"@babel/parser@^7.11.5", "@babel/parser@^7.4.5": - version "7.11.5" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.11.5.tgz#c7ff6303df71080ec7a4f5b8c003c58f1cf51037" - integrity sha512-X9rD8qqm695vgmeaQ4fvz/o3+Wk4ZzQvSHkDBgpYKxpD4qTAUm88ZKtHkVqIOsYFFbIQ6wQYhC6q7pjqVK0E0Q== - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.5.tgz#87245a21cd69a73b0b81bcda98d443d6df08f05e" @@ -495,23 +373,6 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" "@babel/plugin-transform-optional-chaining" "^7.22.5" -"@babel/plugin-proposal-async-generator-functions@^7.2.0": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.4.tgz#4b65abb3d9bacc6c657aaa413e56696f9f170fc6" - integrity sha512-MJbxGSmejEFVOANAezdO39SObkURO5o/8b6fSH6D1pi9RZQt+ldppKPXfqgUWpSQ9asM6xaSaSJIaeWMDRP0Zg== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-remap-async-to-generator" "^7.10.4" - "@babel/plugin-syntax-async-generators" "^7.8.0" - -"@babel/plugin-proposal-class-properties@7.3.0": - version "7.3.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.3.0.tgz#272636bc0fa19a0bc46e601ec78136a173ea36cd" - integrity sha512-wNHxLkEKTQ2ay0tnsam2z7fGZUi+05ziDJflEt3AZTP3oXLKHJp9HqhfroB/vdMvt3sda9fAbq7FsG8QPDrZBg== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.3.0" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-proposal-class-properties@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz#b110f59741895f7ec21a6fff696ec46265c446a3" @@ -520,39 +381,6 @@ "@babel/helper-create-class-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-proposal-json-strings@^7.2.0": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.10.4.tgz#593e59c63528160233bd321b1aebe0820c2341db" - integrity sha512-fCL7QF0Jo83uy1K0P2YXrfX11tj3lkpN7l4dMv9Y9VkowkhkQDwFHFd8IiwyK5MZjE8UpbgokkgtcReH88Abaw== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-json-strings" "^7.8.0" - -"@babel/plugin-proposal-object-rest-spread@7.3.2": - version "7.3.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.3.2.tgz#6d1859882d4d778578e41f82cc5d7bf3d5daf6c1" - integrity sha512-DjeMS+J2+lpANkYLLO+m6GjoTMygYglKmRe6cDTbFv3L9i6mmiE8fe6B8MtCSLZpVXscD5kn7s6SgtHrDoBWoA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-object-rest-spread" "^7.2.0" - -"@babel/plugin-proposal-object-rest-spread@^7.4.4": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.11.0.tgz#bd81f95a1f746760ea43b6c2d3d62b11790ad0af" - integrity sha512-wzch41N4yztwoRw0ak+37wxwJM2oiIiy6huGCoqkvSTA9acYWcPfn9Y4aJqmFFJ70KTJUu29f3DQ43uJ9HXzEA== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-object-rest-spread" "^7.8.0" - "@babel/plugin-transform-parameters" "^7.10.4" - -"@babel/plugin-proposal-optional-catch-binding@^7.2.0": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.10.4.tgz#31c938309d24a78a49d68fdabffaa863758554dd" - integrity sha512-LflT6nPh+GK2MnFiKDyLiqSqVHkQnVf7hdoAvyTnnKj9xB3docGRsdPuxp6qqqW19ifK3xgc9U5/FwrSaCNX5g== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" - "@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2": version "7.21.0-placeholder-for-preset-env.2" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz#7844f9289546efa9febac2de4cfe358a050bd703" @@ -566,7 +394,7 @@ "@babel/helper-create-regexp-features-plugin" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-syntax-async-generators@^7.2.0", "@babel/plugin-syntax-async-generators@^7.8.0", "@babel/plugin-syntax-async-generators@^7.8.4": +"@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== @@ -622,7 +450,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-syntax-json-strings@^7.2.0", "@babel/plugin-syntax-json-strings@^7.8.0", "@babel/plugin-syntax-json-strings@^7.8.3": +"@babel/plugin-syntax-json-strings@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== @@ -664,21 +492,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.8.0", "@babel/plugin-syntax-object-rest-spread@^7.8.3": +"@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-object-rest-spread@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz#3b7a3e733510c57e820b9142a6579ac8b0dfad2e" - integrity sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-syntax-optional-catch-binding@^7.2.0", "@babel/plugin-syntax-optional-catch-binding@^7.8.0", "@babel/plugin-syntax-optional-catch-binding@^7.8.3": +"@babel/plugin-syntax-optional-catch-binding@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== @@ -721,13 +542,6 @@ "@babel/helper-create-regexp-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-arrow-functions@^7.2.0": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.4.tgz#e22960d77e697c74f41c501d44d73dbf8a6a64cd" - integrity sha512-9J/oD1jV0ZCBcgnoFWFq1vJd4msoKb/TCpGNFyyLt0zABdcvgK3aYikZ8HjzB14c26bc7E3Q1yugpwGy2aTPNA== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-transform-arrow-functions@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.22.5.tgz#e5ba566d0c58a5b2ba2a8b795450641950b71958" @@ -754,22 +568,6 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-remap-async-to-generator" "^7.22.5" -"@babel/plugin-transform-async-to-generator@^7.4.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.10.4.tgz#41a5017e49eb6f3cda9392a51eef29405b245a37" - integrity sha512-F6nREOan7J5UXTLsDsZG3DXmZSVofr2tGNwfdrVwkDWHfQckbQXnXSPfD7iO+c/2HGqycwyLST3DnZ16n+cBJQ== - dependencies: - "@babel/helper-module-imports" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-remap-async-to-generator" "^7.10.4" - -"@babel/plugin-transform-block-scoped-functions@^7.2.0": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.10.4.tgz#1afa595744f75e43a91af73b0d998ecfe4ebc2e8" - integrity sha512-WzXDarQXYYfjaV1szJvN3AD7rZgZzC1JtjJZ8dMHUyiK8mxPRahynp14zzNjU3VkPqPsO38CzxiWO1c9ARZ8JA== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-transform-block-scoped-functions@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.22.5.tgz#27978075bfaeb9fa586d3cb63a3d30c1de580024" @@ -784,14 +582,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-block-scoping@^7.4.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.10.4.tgz#a670d1364bb5019a621b9ea2001482876d734787" - integrity sha512-J3b5CluMg3hPUii2onJDRiaVbPtKFPLEaV5dOPY5OeAbDi1iU/UbbFFTgwb7WnanaDy7bjU35kc26W3eM5Qa0A== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - lodash "^4.17.13" - "@babel/plugin-transform-class-properties@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.5.tgz#97a56e31ad8c9dc06a0b3710ce7803d5a48cca77" @@ -824,27 +614,6 @@ "@babel/helper-split-export-declaration" "^7.22.6" globals "^11.1.0" -"@babel/plugin-transform-classes@^7.4.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.4.tgz#405136af2b3e218bc4a1926228bc917ab1a0adc7" - integrity sha512-2oZ9qLjt161dn1ZE0Ms66xBncQH4In8Sqw1YWgBUZuGVJJS5c0OFZXL6dP2MRHrkU/eKhWg8CzFJhRQl50rQxA== - dependencies: - "@babel/helper-annotate-as-pure" "^7.10.4" - "@babel/helper-define-map" "^7.10.4" - "@babel/helper-function-name" "^7.10.4" - "@babel/helper-optimise-call-expression" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-replace-supers" "^7.10.4" - "@babel/helper-split-export-declaration" "^7.10.4" - globals "^11.1.0" - -"@babel/plugin-transform-computed-properties@^7.2.0": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.10.4.tgz#9ded83a816e82ded28d52d4b4ecbdd810cdfc0eb" - integrity sha512-JFwVDXcP/hM/TbyzGq3l/XWGut7p46Z3QvqFMXTfk6/09m7xZHJUN9xHfsv7vqqD4YnfI5ueYdSJtXqqBLyjBw== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-transform-computed-properties@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.22.5.tgz#cd1e994bf9f316bd1c2dafcd02063ec261bb3869" @@ -860,13 +629,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-destructuring@^7.4.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.4.tgz#70ddd2b3d1bea83d01509e9bb25ddb3a74fc85e5" - integrity sha512-+WmfvyfsyF603iPa6825mq6Qrb7uLjTOsa3XOFzlYcYDHSS4QmpOWOL0NNBY5qMbvrcf3tq0Cw+v4lxswOBpgA== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-transform-dotall-regex@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.22.5.tgz#dbb4f0e45766eb544e193fb00e65a1dd3b2a4165" @@ -883,13 +645,6 @@ "@babel/helper-create-regexp-features-plugin" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-duplicate-keys@^7.2.0": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.10.4.tgz#697e50c9fee14380fe843d1f306b295617431e47" - integrity sha512-GL0/fJnmgMclHiBTTWXNlYjYsA7rDrtsazHG6mglaGSTh0KsrW04qml+Bbz9FL0LcJIRwBWL5ZqlNHKTkU3xAA== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-transform-duplicate-keys@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.22.5.tgz#b6e6428d9416f5f0bba19c70d1e6e7e0b88ab285" @@ -905,14 +660,6 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-dynamic-import" "^7.8.3" -"@babel/plugin-transform-exponentiation-operator@^7.2.0": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.10.4.tgz#5ae338c57f8cf4001bdb35607ae66b92d665af2e" - integrity sha512-S5HgLVgkBcRdyQAHbKj+7KyuWx8C6t5oETmUuwz1pt3WTWJhsUV0WIIXuVvfXMxl/QQyHKlSCNNtaIamG8fysw== - dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-transform-exponentiation-operator@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.22.5.tgz#402432ad544a1f9a480da865fda26be653e48f6a" @@ -936,13 +683,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-for-of@^7.4.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.4.tgz#c08892e8819d3a5db29031b115af511dbbfebae9" - integrity sha512-ItdQfAzu9AlEqmusA/65TqJ79eRcgGmpPPFvBnGILXZH975G0LNjP1yjHvGgfuCxqrPPueXOPe+FsvxmxKiHHQ== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-transform-function-name@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.22.5.tgz#935189af68b01898e0d6d99658db6b164205c143" @@ -952,14 +692,6 @@ "@babel/helper-function-name" "^7.22.5" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-function-name@^7.4.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.10.4.tgz#6a467880e0fc9638514ba369111811ddbe2644b7" - integrity sha512-OcDCq2y5+E0dVD5MagT5X+yTRbcvFjDI2ZVAottGH6tzqjx/LKpgkUepu3hp/u4tZBzxxpNGwLsAvGBvQ2mJzg== - dependencies: - "@babel/helper-function-name" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-transform-json-strings@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.5.tgz#14b64352fdf7e1f737eed68de1a1468bd2a77ec0" @@ -968,13 +700,6 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-json-strings" "^7.8.3" -"@babel/plugin-transform-literals@^7.2.0": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.10.4.tgz#9f42ba0841100a135f22712d0e391c462f571f3c" - integrity sha512-Xd/dFSTEVuUWnyZiMu76/InZxLTYilOSr1UlHV+p115Z/Le2Fi1KXkJUYz0b42DfndostYlPub3m8ZTQlMaiqQ== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-transform-literals@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.22.5.tgz#e9341f4b5a167952576e23db8d435849b1dd7920" @@ -990,13 +715,6 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" -"@babel/plugin-transform-member-expression-literals@^7.2.0": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.10.4.tgz#b1ec44fcf195afcb8db2c62cd8e551c881baf8b7" - integrity sha512-0bFOvPyAoTBhtcJLr9VcwZqKmSjFml1iVxvPL0ReomGU53CX53HsM4h2SzckNdkQcHox1bpAqzxBI1Y09LlBSw== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-transform-member-expression-literals@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.22.5.tgz#4fcc9050eded981a468347dd374539ed3e058def" @@ -1004,15 +722,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-modules-amd@^7.2.0": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.10.4.tgz#cb407c68b862e4c1d13a2fc738c7ec5ed75fc520" - integrity sha512-3Fw+H3WLUrTlzi3zMiZWp3AR4xadAEMv6XRCYnd5jAlLM61Rn+CRJaZMaNvIpcJpQ3vs1kyifYvEVPFfoSkKOA== - dependencies: - "@babel/helper-module-transforms" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - babel-plugin-dynamic-import-node "^2.3.3" - "@babel/plugin-transform-modules-amd@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.22.5.tgz#4e045f55dcf98afd00f85691a68fc0780704f526" @@ -1030,16 +739,6 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-simple-access" "^7.22.5" -"@babel/plugin-transform-modules-commonjs@^7.4.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.4.tgz#66667c3eeda1ebf7896d41f1f16b17105a2fbca0" - integrity sha512-Xj7Uq5o80HDLlW64rVfDBhao6OX89HKUmb+9vWYaLXBZOma4gA6tw4Ni1O5qVDoZWUV0fxMYA0aYzOawz0l+1w== - dependencies: - "@babel/helper-module-transforms" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-simple-access" "^7.10.4" - babel-plugin-dynamic-import-node "^2.3.3" - "@babel/plugin-transform-modules-systemjs@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.22.5.tgz#18c31410b5e579a0092638f95c896c2a98a5d496" @@ -1050,24 +749,6 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-validator-identifier" "^7.22.5" -"@babel/plugin-transform-modules-systemjs@^7.4.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.10.4.tgz#8f576afd943ac2f789b35ded0a6312f929c633f9" - integrity sha512-Tb28LlfxrTiOTGtZFsvkjpyjCl9IoaRI52AEU/VIwOwvDQWtbNJsAqTXzh+5R7i74e/OZHH2c2w2fsOqAfnQYQ== - dependencies: - "@babel/helper-hoist-variables" "^7.10.4" - "@babel/helper-module-transforms" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - babel-plugin-dynamic-import-node "^2.3.3" - -"@babel/plugin-transform-modules-umd@^7.2.0": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.10.4.tgz#9a8481fe81b824654b3a0b65da3df89f3d21839e" - integrity sha512-mohW5q3uAEt8T45YT7Qc5ws6mWgJAaL/8BfWD9Dodo1A3RKWli8wTS+WiQ/knF+tXlPirW/1/MqzzGfCExKECA== - dependencies: - "@babel/helper-module-transforms" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-transform-modules-umd@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.22.5.tgz#4694ae40a87b1745e3775b6a7fe96400315d4f98" @@ -1084,13 +765,6 @@ "@babel/helper-create-regexp-features-plugin" "^7.22.5" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-named-capturing-groups-regex@^7.4.5": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.10.4.tgz#78b4d978810b6f3bcf03f9e318f2fc0ed41aecb6" - integrity sha512-V6LuOnD31kTkxQPhKiVYzYC/Jgdq53irJC/xBSmqcNcqFGV+PER4l6rU5SH2Vl7bH9mLDHcc0+l9HUOe4RNGKA== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.10.4" - "@babel/plugin-transform-new-target@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.5.tgz#1b248acea54ce44ea06dfd37247ba089fcf9758d" @@ -1098,13 +772,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-new-target@^7.4.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.10.4.tgz#9097d753cb7b024cb7381a3b2e52e9513a9c6888" - integrity sha512-YXwWUDAH/J6dlfwqlWsztI2Puz1NtUAubXhOPLQ5gjR/qmQ5U96DY4FQO8At33JN4XPBhrjB8I4eMmLROjjLjw== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-transform-nullish-coalescing-operator@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.5.tgz#f8872c65776e0b552e0849d7596cddd416c3e381" @@ -1139,14 +806,6 @@ "@babel/plugin-syntax-object-rest-spread" "^7.8.3" "@babel/plugin-transform-parameters" "^7.22.5" -"@babel/plugin-transform-object-super@^7.2.0": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.10.4.tgz#d7146c4d139433e7a6526f888c667e314a093894" - integrity sha512-5iTw0JkdRdJvr7sY0vHqTpnruUpTea32JHmq/atIWqsnNussbRzjEDyWep8UNztt1B5IusBYg8Irb0bLbiEBCQ== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-replace-supers" "^7.10.4" - "@babel/plugin-transform-object-super@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.22.5.tgz#794a8d2fcb5d0835af722173c1a9d704f44e218c" @@ -1172,14 +831,6 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" "@babel/plugin-syntax-optional-chaining" "^7.8.3" -"@babel/plugin-transform-parameters@^7.10.4", "@babel/plugin-transform-parameters@^7.4.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.10.4.tgz#7b4d137c87ea7adc2a0f3ebf53266871daa6fced" - integrity sha512-RurVtZ/D5nYfEg0iVERXYKEgDFeesHrHfx8RT05Sq57ucj2eOYAP6eu5fynL4Adju4I/mP/I6SO0DqNWAXjfLQ== - dependencies: - "@babel/helper-get-function-arity" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-transform-parameters@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.5.tgz#c3542dd3c39b42c8069936e48717a8d179d63a18" @@ -1205,13 +856,6 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-private-property-in-object" "^7.14.5" -"@babel/plugin-transform-property-literals@^7.2.0": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.10.4.tgz#f6fe54b6590352298785b83edd815d214c42e3c0" - integrity sha512-ofsAcKiUxQ8TY4sScgsGeR2vJIsfrzqvFb9GvJ5UdXDzl+MyYCaBj/FGzXuv7qE0aJcjWMILny1epqelnFlz8g== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-transform-property-literals@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.22.5.tgz#b5ddabd73a4f7f26cd0e20f5db48290b88732766" @@ -1259,20 +903,6 @@ "@babel/helper-plugin-utils" "^7.22.5" regenerator-transform "^0.15.1" -"@babel/plugin-transform-regenerator@^7.4.5": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.10.4.tgz#2015e59d839074e76838de2159db421966fd8b63" - integrity sha512-3thAHwtor39A7C04XucbMg17RcZ3Qppfxr22wYzZNcVIkPHfpM9J0SO8zuCV6SZa265kxBJSrfKTvDCYqBFXGw== - dependencies: - regenerator-transform "^0.14.2" - -"@babel/plugin-transform-reserved-words@^7.2.0": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.10.4.tgz#8f2682bcdcef9ed327e1b0861585d7013f8a54dd" - integrity sha512-hGsw1O6Rew1fkFbDImZIEqA8GoidwTAilwCyWqLBM9f+e/u/sQMQu7uX6dyokfOayRuuVfKOW4O7HvaBWM+JlQ== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-transform-reserved-words@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.22.5.tgz#832cd35b81c287c4bcd09ce03e22199641f964fb" @@ -1280,23 +910,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-runtime@7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.2.0.tgz#566bc43f7d0aedc880eaddbd29168d0f248966ea" - integrity sha512-jIgkljDdq4RYDnJyQsiWbdvGeei/0MOTtSHKO/rfbd/mXBxNpdlulMx49L0HQ4pug1fXannxoqCI+fYSle9eSw== - dependencies: - "@babel/helper-module-imports" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" - resolve "^1.8.1" - semver "^5.5.1" - -"@babel/plugin-transform-shorthand-properties@^7.2.0": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.10.4.tgz#9fd25ec5cdd555bb7f473e5e6ee1c971eede4dd6" - integrity sha512-AC2K/t7o07KeTIxMoHneyX90v3zkm5cjHJEokrPEAGEy3UCp8sLKfnfOIGdZ194fyN4wfX/zZUWT9trJZ0qc+Q== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-transform-shorthand-properties@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.22.5.tgz#6e277654be82b5559fc4b9f58088507c24f0c624" @@ -1304,13 +917,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-spread@^7.2.0": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.10.4.tgz#4e2c85ea0d6abaee1b24dcfbbae426fe8d674cff" - integrity sha512-1e/51G/Ni+7uH5gktbWv+eCED9pP8ZpRhZB3jOaI3mmzfvJTWHkuyYTv0Z5PYtyM+Tr2Ccr9kUdQxn60fI5WuQ== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-transform-spread@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.22.5.tgz#6487fd29f229c95e284ba6c98d65eafb893fea6b" @@ -1319,14 +925,6 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" -"@babel/plugin-transform-sticky-regex@^7.2.0": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.10.4.tgz#8f3889ee8657581130a29d9cc91d7c73b7c4a28d" - integrity sha512-Ddy3QZfIbEV0VYcVtFDCjeE4xwVTJWTmUtorAJkn6u/92Z/nWJNV+mILyqHKrUxXYKA2EoCilgoPePymKL4DvQ== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-regex" "^7.10.4" - "@babel/plugin-transform-sticky-regex@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.22.5.tgz#295aba1595bfc8197abd02eae5fc288c0deb26aa" @@ -1341,21 +939,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-template-literals@^7.4.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.10.4.tgz#e6375407b30fcb7fcfdbba3bb98ef3e9d36df7bc" - integrity sha512-4NErciJkAYe+xI5cqfS8pV/0ntlY5N5Ske/4ImxAVX7mk9Rxt2bwDTGv1Msc2BRJvWQcmYEC+yoMLdX22aE4VQ== - dependencies: - "@babel/helper-annotate-as-pure" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-typeof-symbol@^7.2.0": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.10.4.tgz#9509f1a7eec31c4edbffe137c16cc33ff0bc5bfc" - integrity sha512-QqNgYwuuW0y0H+kUE/GWSR45t/ccRhe14Fs/4ZRouNNQsyd4o3PG4OtHiIrepbM2WKUBDAXKCAK/Lk4VhzTaGA== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-transform-typeof-symbol@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.22.5.tgz#5e2ba478da4b603af8673ff7c54f75a97b716b34" @@ -1396,14 +979,6 @@ "@babel/helper-create-regexp-features-plugin" "^7.22.5" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-unicode-regex@^7.4.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.10.4.tgz#e56d71f9282fac6db09c82742055576d5e6d80a8" - integrity sha512-wNfsc4s8N2qnIwpO/WP2ZiSyjfpTamT2C9V9FDH/Ljub9zw6P3SjkXcFmc0RQUt96k2fmIvtla2MMjgTwIAC+A== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-transform-unicode-sets-regex@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.22.5.tgz#77788060e511b708ffc7d42fdfbc5b37c3004e91" @@ -1412,60 +987,6 @@ "@babel/helper-create-regexp-features-plugin" "^7.22.5" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/preset-env@7.4.5": - version "7.4.5" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.4.5.tgz#2fad7f62983d5af563b5f3139242755884998a58" - integrity sha512-f2yNVXM+FsR5V8UwcFeIHzHWgnhXg3NpRmy0ADvALpnhB0SLbCvrCRr4BLOUYbQNLS+Z0Yer46x9dJXpXewI7w== - dependencies: - "@babel/helper-module-imports" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-proposal-async-generator-functions" "^7.2.0" - "@babel/plugin-proposal-json-strings" "^7.2.0" - "@babel/plugin-proposal-object-rest-spread" "^7.4.4" - "@babel/plugin-proposal-optional-catch-binding" "^7.2.0" - "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" - "@babel/plugin-syntax-async-generators" "^7.2.0" - "@babel/plugin-syntax-json-strings" "^7.2.0" - "@babel/plugin-syntax-object-rest-spread" "^7.2.0" - "@babel/plugin-syntax-optional-catch-binding" "^7.2.0" - "@babel/plugin-transform-arrow-functions" "^7.2.0" - "@babel/plugin-transform-async-to-generator" "^7.4.4" - "@babel/plugin-transform-block-scoped-functions" "^7.2.0" - "@babel/plugin-transform-block-scoping" "^7.4.4" - "@babel/plugin-transform-classes" "^7.4.4" - "@babel/plugin-transform-computed-properties" "^7.2.0" - "@babel/plugin-transform-destructuring" "^7.4.4" - "@babel/plugin-transform-dotall-regex" "^7.4.4" - "@babel/plugin-transform-duplicate-keys" "^7.2.0" - "@babel/plugin-transform-exponentiation-operator" "^7.2.0" - "@babel/plugin-transform-for-of" "^7.4.4" - "@babel/plugin-transform-function-name" "^7.4.4" - "@babel/plugin-transform-literals" "^7.2.0" - "@babel/plugin-transform-member-expression-literals" "^7.2.0" - "@babel/plugin-transform-modules-amd" "^7.2.0" - "@babel/plugin-transform-modules-commonjs" "^7.4.4" - "@babel/plugin-transform-modules-systemjs" "^7.4.4" - "@babel/plugin-transform-modules-umd" "^7.2.0" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.4.5" - "@babel/plugin-transform-new-target" "^7.4.4" - "@babel/plugin-transform-object-super" "^7.2.0" - "@babel/plugin-transform-parameters" "^7.4.4" - "@babel/plugin-transform-property-literals" "^7.2.0" - "@babel/plugin-transform-regenerator" "^7.4.5" - "@babel/plugin-transform-reserved-words" "^7.2.0" - "@babel/plugin-transform-shorthand-properties" "^7.2.0" - "@babel/plugin-transform-spread" "^7.2.0" - "@babel/plugin-transform-sticky-regex" "^7.2.0" - "@babel/plugin-transform-template-literals" "^7.4.4" - "@babel/plugin-transform-typeof-symbol" "^7.2.0" - "@babel/plugin-transform-unicode-regex" "^7.4.4" - "@babel/types" "^7.4.4" - browserslist "^4.6.0" - core-js-compat "^3.1.1" - invariant "^2.2.2" - js-levenshtein "^1.1.3" - semver "^5.5.0" - "@babel/preset-env@^7.22.9": version "7.22.9" resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.22.9.tgz#57f17108eb5dfd4c5c25a44c1977eba1df310ac7" @@ -1563,7 +1084,7 @@ "@babel/types" "^7.4.4" esutils "^2.0.2" -"@babel/preset-react@7.0.0", "@babel/preset-react@^7.0.0": +"@babel/preset-react@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.0.0.tgz#e86b4b3d99433c7b3e9e91747e2653958bc6b3c0" integrity sha512-oayxyPS4Zj+hF6Et11BwuBkmpgT/zMxyuZgFrMeZID6Hdh3dGlk4sHCAhdBCpuCKW2ppBfl2uCCetlrUIJRY3w== @@ -1598,13 +1119,6 @@ core-js-pure "^3.0.0" regenerator-runtime "^0.13.4" -"@babel/runtime@7.3.1": - version "7.3.1" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.3.1.tgz#574b03e8e8a9898eaf4a872a92ea20b7846f6f2a" - integrity sha512-7jGW8ppV0ant637pIqAcFfQDDH1orEPGJb8aXfUozuCU3QqX7rX4DA8iwrbPrR1hcH0FTTHz47yQnk+bl5xHQA== - dependencies: - regenerator-runtime "^0.12.0" - "@babel/runtime@^7.1.2", "@babel/runtime@^7.2.0": version "7.7.7" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.7.7.tgz#194769ca8d6d7790ec23605af9ee3e42a0aa79cf" @@ -1647,7 +1161,7 @@ dependencies: regenerator-runtime "^0.13.2" -"@babel/template@^7.10.4", "@babel/template@^7.22.5", "@babel/template@^7.4.0": +"@babel/template@^7.22.5", "@babel/template@^7.4.0": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.5.tgz#0c8c4d944509875849bd0344ff0050756eefc6ec" integrity sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw== @@ -1656,16 +1170,7 @@ "@babel/parser" "^7.22.5" "@babel/types" "^7.22.5" -"@babel/template@^7.4.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.10.4.tgz#3251996c4200ebc71d1a8fc405fba940f36ba278" - integrity sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA== - dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/parser" "^7.10.4" - "@babel/types" "^7.10.4" - -"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.10.4", "@babel/traverse@^7.22.6", "@babel/traverse@^7.22.8", "@babel/traverse@^7.4.3": +"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.22.6", "@babel/traverse@^7.22.8", "@babel/traverse@^7.4.3": version "7.22.8" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.22.8.tgz#4d4451d31bc34efeae01eac222b514a77aa4000e" integrity sha512-y6LPR+wpM2I3qJrsheCTwhIinzkETbplIgPBbwvqPKc+uljeA5gP+3nP8irdYt1mjQaDnlIcG+dw8OjAco4GXw== @@ -1681,22 +1186,7 @@ debug "^4.1.0" globals "^11.1.0" -"@babel/traverse@^7.4.5": - version "7.11.5" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.11.5.tgz#be777b93b518eb6d76ee2e1ea1d143daa11e61c3" - integrity sha512-EjiPXt+r7LiCZXEfRpSJd+jUMnBd4/9OUv7Nx3+0u9+eimMwJmG0Q98lw4/289JCoxSE8OolDMNZaaF/JZ69WQ== - dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/generator" "^7.11.5" - "@babel/helper-function-name" "^7.10.4" - "@babel/helper-split-export-declaration" "^7.11.0" - "@babel/parser" "^7.11.5" - "@babel/types" "^7.11.5" - debug "^4.1.0" - globals "^11.1.0" - lodash "^4.17.19" - -"@babel/types@^7.0.0", "@babel/types@^7.10.4", "@babel/types@^7.16.7", "@babel/types@^7.20.7", "@babel/types@^7.22.5", "@babel/types@^7.4.0": +"@babel/types@^7.0.0", "@babel/types@^7.10.4", "@babel/types@^7.20.7", "@babel/types@^7.22.5", "@babel/types@^7.4.0": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.22.5.tgz#cd93eeaab025880a3a47ec881f4b096a5b786fbe" integrity sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA== @@ -1705,15 +1195,6 @@ "@babel/helper-validator-identifier" "^7.22.5" to-fast-properties "^2.0.0" -"@babel/types@^7.11.5", "@babel/types@^7.4.4": - version "7.11.5" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.11.5.tgz#d9de577d01252d77c6800cee039ee64faf75662d" - integrity sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q== - dependencies: - "@babel/helper-validator-identifier" "^7.10.4" - lodash "^4.17.19" - to-fast-properties "^2.0.0" - "@babel/types@^7.3.0": version "7.3.4" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.3.4.tgz#bf482eaeaffb367a28abbf9357a94963235d90ed" @@ -1723,6 +1204,15 @@ lodash "^4.17.11" to-fast-properties "^2.0.0" +"@babel/types@^7.4.4": + version "7.11.5" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.11.5.tgz#d9de577d01252d77c6800cee039ee64faf75662d" + integrity sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q== + dependencies: + "@babel/helper-validator-identifier" "^7.10.4" + lodash "^4.17.19" + to-fast-properties "^2.0.0" + "@choojs/findup@^0.2.0": version "0.2.1" resolved "https://registry.yarnpkg.com/@choojs/findup/-/findup-0.2.1.tgz#ac13c59ae7be6e1da64de0779a0a7f03d75615a3" @@ -1738,41 +1228,19 @@ exec-sh "^0.3.2" minimist "^1.2.0" -"@cypress/browserify-preprocessor@3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@cypress/browserify-preprocessor/-/browserify-preprocessor-3.0.0.tgz#2d1fa6a96ed7130a1b172c540448a5955cbc1264" - integrity sha512-8CXLCKlXVUnad5TjwVswq4nwwWVyt5Z+HMgrFaD2yF7A62AA6OYDrShTQnG6M6+hr1cq1X4zYbo7VT4oxex5hA== - dependencies: - "@babel/core" "7.4.5" - "@babel/plugin-proposal-class-properties" "7.3.0" - "@babel/plugin-proposal-object-rest-spread" "7.3.2" - "@babel/plugin-transform-runtime" "7.2.0" - "@babel/preset-env" "7.4.5" - "@babel/preset-react" "7.0.0" - "@babel/runtime" "7.3.1" - babel-plugin-add-module-exports "1.0.2" - babelify "10.0.0" - bluebird "3.5.3" - browserify "16.2.3" - coffeeify "3.0.1" - coffeescript "1.12.7" - debug "4.1.1" - fs-extra "9.0.0" - lodash.clonedeep "4.5.0" - through2 "^2.0.0" - watchify "3.11.1" - -"@cypress/code-coverage@^3.8.1": - version "3.8.1" - resolved "https://registry.yarnpkg.com/@cypress/code-coverage/-/code-coverage-3.8.1.tgz#913f34b1063423cc881988fa3b452da170aea5b6" - integrity sha512-XkecqM/4xHZdAPUMOxOUi5yf2TDWUycqIi6Z6zdGiO9j04CxkRoVTOJYsE14i7uG7orudYSLcLFJEeJv237qXQ== - dependencies: - "@cypress/browserify-preprocessor" "3.0.0" - debug "4.1.1" - execa "4.0.2" - globby "11.0.0" +"@cypress/code-coverage@^3.11.0": + version "3.11.0" + resolved "https://registry.yarnpkg.com/@cypress/code-coverage/-/code-coverage-3.11.0.tgz#f695b53f5e2b89144ca418fd6608a63720e2880f" + integrity sha512-ihSO1s03gmLRE224oIjrbdG1ey63vw/UY+VSqQ5m/TKkAvyz6GIiniq6juk3AV/+0vQC1Eb4UWFu8ndtji4M1g== + dependencies: + "@cypress/webpack-preprocessor" "^5.11.0" + chalk "4.1.2" + dayjs "1.11.9" + debug "4.3.4" + execa "4.1.0" + globby "11.0.4" istanbul-lib-coverage "3.0.0" - js-yaml "3.14.0" + js-yaml "4.1.0" nyc "15.1.0" "@cypress/listr-verbose-renderer@^0.4.1": @@ -1811,6 +1279,15 @@ tunnel-agent "^0.6.0" uuid "^3.3.2" +"@cypress/webpack-preprocessor@^5.11.0": + version "5.17.1" + resolved "https://registry.yarnpkg.com/@cypress/webpack-preprocessor/-/webpack-preprocessor-5.17.1.tgz#19c3f6ceb89e156824917b4ec31717ade34592ec" + integrity sha512-FE/e8ikPc8z4EVopJCaior3RGy0jd2q9Xcp5NtiwNG4XnLfEnUFTZlAGwXe75sEh4fNMPrBJW1KIz77PX5vGAw== + dependencies: + bluebird "3.7.1" + debug "^4.3.4" + lodash "^4.17.20" + "@cypress/xvfb@^1.2.4": version "1.2.4" resolved "https://registry.yarnpkg.com/@cypress/xvfb/-/xvfb-1.2.4.tgz#2daf42e8275b39f4aa53c14214e557bd14e7748a" @@ -2978,14 +2455,6 @@ resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== -JSONStream@^1.0.3: - version "1.3.5" - resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" - integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== - dependencies: - jsonparse "^1.2.0" - through ">=2.2.7 <3" - a-big-triangle@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/a-big-triangle/-/a-big-triangle-1.0.3.tgz#eefd30b02a8f525e8b1f72bb6bb1b0c16751c794" @@ -3049,25 +2518,11 @@ acorn-jsx@^5.0.1, acorn-jsx@^5.1.0: resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.1.0.tgz#294adb71b57398b0680015f0a38c563ee1db5384" integrity sha512-tMUqwBWfLFbJbizRmEcWSLw6HnFzfdJs2sOJEOwwtVPMoH/0Ay+E703oZz78VSXZiiDcZrQ5XKjPIUQixhmgVw== -acorn-node@^1.2.0, acorn-node@^1.3.0, acorn-node@^1.5.2, acorn-node@^1.6.1: - version "1.8.2" - resolved "https://registry.yarnpkg.com/acorn-node/-/acorn-node-1.8.2.tgz#114c95d64539e53dede23de8b9d96df7c7ae2af8" - integrity sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A== - dependencies: - acorn "^7.0.0" - acorn-walk "^7.0.0" - xtend "^4.0.2" - acorn-walk@^6.0.1: version "6.2.0" resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.2.0.tgz#123cb8f3b84c2171f1f7fb252615b1c78a6b1a8c" integrity sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA== -acorn-walk@^7.0.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" - integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== - acorn-walk@^8.0.0: version "8.2.0" resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" @@ -3083,7 +2538,7 @@ acorn@^6.0.1, acorn@^6.1.1, acorn@^6.4.1: resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== -acorn@^7.0.0, acorn@^7.1.0, acorn@^7.1.1: +acorn@^7.1.0, acorn@^7.1.1: version "7.4.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== @@ -3368,6 +2823,11 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + aria-query@^4.2.2: version "4.2.2" resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-4.2.2.tgz#0d2ca6c9aceb56b8977e9fed6aed7e15bbd2f83b" @@ -3545,7 +3005,7 @@ assert-plus@1.0.0, assert-plus@^1.0.0: resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== -assert@^1.1.1, assert@^1.4.0: +assert@^1.1.1: version "1.4.1" resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91" integrity sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE= @@ -3742,20 +3202,6 @@ babel-messages@^6.23.0: dependencies: babel-runtime "^6.22.0" -babel-plugin-add-module-exports@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/babel-plugin-add-module-exports/-/babel-plugin-add-module-exports-1.0.2.tgz#96cd610d089af664f016467fc4567c099cce2d9c" - integrity sha512-4paN7RivvU3Rzju1vGSHWPjO8Y0rI6droWvSFKI6dvEQ4mvoV0zGojnlzVRfI6N8zISo6VERXt3coIuVmzuvNg== - optionalDependencies: - chokidar "^2.0.4" - -babel-plugin-dynamic-import-node@^2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" - integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== - dependencies: - object.assign "^4.1.0" - babel-plugin-istanbul@^5.1.0: version "5.2.0" resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz#df4ade83d897a92df069c4d9a25cf2671293c854" @@ -3881,11 +3327,6 @@ babel-types@^6.26.0: lodash "^4.17.4" to-fast-properties "^1.0.3" -babelify@10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/babelify/-/babelify-10.0.0.tgz#fe73b1a22583f06680d8d072e25a1e0d1d1d7fb5" - integrity sha512-X40FaxyH7t3X+JFAKvb1H9wooWKLRCi8pg3m8poqtdZaIng+bjzp9RvKQCvRjF9isHiPkXspbbXT/zwXLtwgwg== - babylon@^6.18.0: version "6.18.0" resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" @@ -4014,7 +3455,12 @@ bluebird-retry@^0.11.0: resolved "https://registry.yarnpkg.com/bluebird-retry/-/bluebird-retry-0.11.0.tgz#1289ab22cbbc3a02587baad35595351dd0c1c047" integrity sha1-EomrIsu8OgJYe6rTVZU1HdDBwEc= -bluebird@3.5.3, bluebird@^3.5.0: +bluebird@3.7.1: + version "3.7.1" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.1.tgz#df70e302b471d7473489acf26a93d63b53f874de" + integrity sha512-DdmyoGCleJnkbp3nkbxTLJ18rjDsE4yCggEwKNXkeV123sPNfOCYeDoeuOY+F2FrSjO1YXcTU+dsy96KMy+gcg== + +bluebird@^3.5.0: version "3.5.3" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.3.tgz#7d01c6f9616c9a51ab0f8c549a79dfe6ec33efa7" integrity sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw== @@ -4139,37 +3585,18 @@ brorand@^1.0.1, brorand@^1.1.0: resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= -browser-pack@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/browser-pack/-/browser-pack-6.1.0.tgz#c34ba10d0b9ce162b5af227c7131c92c2ecd5774" - integrity sha512-erYug8XoqzU3IfcU8fUgyHqyOXqIE4tUTTQ+7mqUjQlvnXkOO6OlT9c/ZoJVHYoAaqGxr09CN53G7XIsO4KtWA== - dependencies: - JSONStream "^1.0.3" - combine-source-map "~0.8.0" - defined "^1.0.0" - safe-buffer "^5.1.1" - through2 "^2.0.0" - umd "^3.0.0" - browser-process-hrtime@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== -browser-resolve@^1.11.0, browser-resolve@^1.11.3: +browser-resolve@^1.11.3: version "1.11.3" resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.3.tgz#9b7cbb3d0f510e4cb86bdbd796124d28b5890af6" integrity sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ== dependencies: resolve "1.1.7" -browser-resolve@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-2.0.0.tgz#99b7304cb392f8d73dba741bb2d7da28c6d7842b" - integrity sha512-7sWsQlYL2rGLy2IWm8WL8DCTJvYLc/qlOnsakDac87SOoCd16WLsaAMdCiAqsTNHIe+SXfaqyxyo6THoWqs8WQ== - dependencies: - resolve "^1.17.0" - browserify-aes@^1.0.0, browserify-aes@^1.0.4: version "1.2.0" resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" @@ -4222,67 +3649,13 @@ browserify-sign@^4.0.0: inherits "^2.0.1" parse-asn1 "^5.0.0" -browserify-zlib@^0.2.0, browserify-zlib@~0.2.0: +browserify-zlib@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== dependencies: pako "~1.0.5" -browserify@16.2.3, browserify@^16.1.0: - version "16.2.3" - resolved "https://registry.yarnpkg.com/browserify/-/browserify-16.2.3.tgz#7ee6e654ba4f92bce6ab3599c3485b1cc7a0ad0b" - integrity sha512-zQt/Gd1+W+IY+h/xX2NYMW4orQWhqSwyV+xsblycTtpOuB27h1fZhhNQuipJ4t79ohw4P4mMem0jp/ZkISQtjQ== - dependencies: - JSONStream "^1.0.3" - assert "^1.4.0" - browser-pack "^6.0.1" - browser-resolve "^1.11.0" - browserify-zlib "~0.2.0" - buffer "^5.0.2" - cached-path-relative "^1.0.0" - concat-stream "^1.6.0" - console-browserify "^1.1.0" - constants-browserify "~1.0.0" - crypto-browserify "^3.0.0" - defined "^1.0.0" - deps-sort "^2.0.0" - domain-browser "^1.2.0" - duplexer2 "~0.1.2" - events "^2.0.0" - glob "^7.1.0" - has "^1.0.0" - htmlescape "^1.1.0" - https-browserify "^1.0.0" - inherits "~2.0.1" - insert-module-globals "^7.0.0" - labeled-stream-splicer "^2.0.0" - mkdirp "^0.5.0" - module-deps "^6.0.0" - os-browserify "~0.3.0" - parents "^1.0.1" - path-browserify "~0.0.0" - process "~0.11.0" - punycode "^1.3.2" - querystring-es3 "~0.2.0" - read-only-stream "^2.0.0" - readable-stream "^2.0.2" - resolve "^1.1.4" - shasum "^1.0.0" - shell-quote "^1.6.1" - stream-browserify "^2.0.0" - stream-http "^2.0.0" - string_decoder "^1.1.1" - subarg "^1.0.0" - syntax-error "^1.1.1" - through2 "^2.0.0" - timers-browserify "^1.0.1" - tty-browserify "0.0.1" - url "~0.11.0" - util "~0.10.1" - vm-browserify "^1.0.0" - xtend "^4.0.0" - browserslist@^1.7.6: version "1.7.7" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-1.7.7.tgz#0bd76704258be829b2398bb50e4b62d1a166b0b9" @@ -4301,16 +3674,6 @@ browserslist@^4.21.9: node-releases "^2.0.12" update-browserslist-db "^1.0.11" -browserslist@^4.6.0, browserslist@^4.8.5: - version "4.13.0" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.13.0.tgz#42556cba011e1b0a2775b611cba6a8eca18e940d" - integrity sha512-MINatJ5ZNrLnQ6blGvePd/QOz9Xtu+Ne+x29iQSCHfkU5BugKVJwZKn/iiL8UbpIpa3JhviKjz+XxMo0m2caFQ== - dependencies: - caniuse-lite "^1.0.30001093" - electron-to-chromium "^1.3.488" - escalade "^3.0.1" - node-releases "^1.1.58" - browserslist@^4.6.3: version "4.8.1" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.8.1.tgz#df0f50cc4b3255322fae60ae82a946baae69f8c6" @@ -4372,14 +3735,6 @@ buffer@^4.3.0: ieee754 "^1.1.4" isarray "^1.0.0" -buffer@^5.0.2: - version "5.6.0" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.6.0.tgz#a31749dc7d81d84db08abf937b6b8c4033f62786" - integrity sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw== - dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" - builtin-status-codes@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" @@ -4431,11 +3786,6 @@ cache-base@^1.0.1: union-value "^1.0.0" unset-value "^1.0.0" -cached-path-relative@^1.0.0, cached-path-relative@^1.0.2: - version "1.1.0" - resolved "https://registry.yarnpkg.com/cached-path-relative/-/cached-path-relative-1.1.0.tgz#865576dfef39c0d6a7defde794d078f5308e3ef3" - integrity sha512-WF0LihfemtesFcJgO7xfOoOcnWzY/QHR4qeDqV44jPU3HTI54+LnfXK3SA27AVVGCdZFgjjFFaqUA9Jx7dMJZA== - cachedir@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/cachedir/-/cachedir-2.3.0.tgz#0c75892a052198f0b21c7c1804d8331edfcae0e8" @@ -4511,11 +3861,6 @@ caniuse-lite@^1.0.30001015: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001015.tgz#15a7ddf66aba786a71d99626bc8f2b91c6f0f5f0" integrity sha512-/xL2AbW/XWHNu1gnIrO8UitBGoFthcsDgU9VLK1/dpsoxbaD5LscHozKze05R6WLsBvLhqv78dAPozMFQBYLbQ== -caniuse-lite@^1.0.30001093: - version "1.0.30001097" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001097.tgz#1129c40c9f5ee3282158da08fd915d301f4a9bd8" - integrity sha512-TeuSleKt/vWXaPkLVFqGDnbweYfq4IaZ6rUugFf3rWY6dlII8StUZ8Ddin0PkADfgYZ4wRqCdO2ORl4Rn5eZIA== - caniuse-lite@^1.0.30001503: version "1.0.30001517" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001517.tgz#90fabae294215c3495807eb24fc809e11dc2f0a8" @@ -4562,6 +3907,14 @@ cell-orientation@^1.0.1: resolved "https://registry.yarnpkg.com/cell-orientation/-/cell-orientation-1.0.1.tgz#b504ad96a66ad286d9edd985a2253d03b80d2850" integrity sha1-tQStlqZq0obZ7dmFoiU9A7gNKFA= +chalk@4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + chalk@^1.0.0, chalk@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" @@ -4620,25 +3973,6 @@ cheerio@^1.0.0-rc.2: lodash "^4.15.0" parse5 "^3.0.1" -chokidar@^2.0.4, chokidar@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.2.tgz#9c23ea40b01638439e0513864d362aeacc5ad058" - integrity sha512-IwXUx0FXc5ibYmPC2XeEj5mpXoV66sR+t3jqu2NS2GYwCktt3KF1/Qqjws/NkegajBA4RbZ5+DDwlOiJsxDHEg== - dependencies: - anymatch "^2.0.0" - async-each "^1.0.1" - braces "^2.3.2" - glob-parent "^3.1.0" - inherits "^2.0.3" - is-binary-path "^1.0.0" - is-glob "^4.0.0" - normalize-path "^3.0.0" - path-is-absolute "^1.0.0" - readdirp "^2.2.1" - upath "^1.1.0" - optionalDependencies: - fsevents "^1.2.7" - chokidar@^2.1.8: version "2.1.8" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" @@ -4894,19 +4228,6 @@ code-point-at@^1.0.0: resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" integrity sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA== -coffeeify@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/coffeeify/-/coffeeify-3.0.1.tgz#5e2753000c50bd24c693115f33864248dd11136c" - integrity sha512-Qjnr7UX6ldK1PHV7wCnv7AuCd4q19KTUtwJnu/6JRJB4rfm12zvcXtKdacUoePOKr1I4ka/ydKiwWpNAdsQb0g== - dependencies: - convert-source-map "^1.3.0" - through2 "^2.0.0" - -coffeescript@1.12.7: - version "1.12.7" - resolved "https://registry.yarnpkg.com/coffeescript/-/coffeescript-1.12.7.tgz#e57ee4c4867cf7f606bfc4a0f2d550c0981ddd27" - integrity sha512-pLXHFxQMPklVoEekowk8b3erNynC+DVJzChxS/LCBBgR6/8AJkHivkm//zbowcfc7BTCAjryuhx6gPqPRfsFoA== - collection-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" @@ -5034,16 +4355,6 @@ colorspace@1.1.x: color "3.0.x" text-hex "1.0.x" -combine-source-map@^0.8.0, combine-source-map@~0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/combine-source-map/-/combine-source-map-0.8.0.tgz#a58d0df042c186fcf822a8e8015f5450d2d79a8b" - integrity sha1-pY0N8ELBhvz4IqjoAV9UUNLXmos= - dependencies: - convert-source-map "~1.1.0" - inline-source-map "~0.6.0" - lodash.memoize "~3.0.3" - source-map "~0.5.3" - combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: version "1.0.8" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" @@ -5161,7 +4472,7 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== -concat-stream@^1.5.0, concat-stream@^1.5.2, concat-stream@^1.6.0, concat-stream@^1.6.1, concat-stream@^1.6.2, concat-stream@~1.6.0: +concat-stream@^1.5.0, concat-stream@^1.5.2, concat-stream@^1.6.2: version "1.6.2" resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== @@ -5198,7 +4509,7 @@ const-pinf-float64@^1.0.0: resolved "https://registry.yarnpkg.com/const-pinf-float64/-/const-pinf-float64-1.0.0.tgz#f6efb0d79f9c0986d3e79f2923abf9b70b63d726" integrity sha1-9u+w15+cCYbT558pI6v5twtj1yY= -constants-browserify@^1.0.0, constants-browserify@~1.0.0: +constants-browserify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= @@ -5220,7 +4531,7 @@ content-type@~1.0.4: resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== -convert-source-map@^1.1.0, convert-source-map@^1.3.0: +convert-source-map@^1.1.0: version "1.6.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20" integrity sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A== @@ -5232,11 +4543,6 @@ convert-source-map@^1.4.0, convert-source-map@^1.7.0: resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== -convert-source-map@~1.1.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.1.3.tgz#4829c877e9fe49b3161f3bf3673888e204699860" - integrity sha1-SCnId+n+SbMWHzvzZziI4gRpmGA= - convex-hull@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/convex-hull/-/convex-hull-1.0.3.tgz#20a3aa6ce87f4adea2ff7d17971c9fc1c67e1fff" @@ -5298,14 +4604,6 @@ copy-webpack-plugin@^5.1.2: serialize-javascript "^4.0.0" webpack-log "^2.0.0" -core-js-compat@^3.1.1: - version "3.6.5" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.6.5.tgz#2a51d9a4e25dfd6e690251aa81f99e3c05481f1c" - integrity sha512-7ItTKOhOZbznhXAQ2g/slGg1PJV5zDO/WdkTwi7UEOJmkvsE32PWvx6mKtDjiMpjnR2CNf6BAD6sSxIlv7ptng== - dependencies: - browserslist "^4.8.5" - semver "7.0.0" - core-js-compat@^3.31.0: version "3.31.1" resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.31.1.tgz#5084ad1a46858df50ff89ace152441a63ba7aae0" @@ -5412,7 +4710,7 @@ cross-spawn@^7.0.0, cross-spawn@^7.0.3: shebang-command "^2.0.0" which "^2.0.1" -crypto-browserify@^3.0.0, crypto-browserify@^3.11.0: +crypto-browserify@^3.11.0: version "3.12.0" resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== @@ -5714,11 +5012,6 @@ damerau-levenshtein@^1.0.6: resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.6.tgz#143c1641cb3d85c60c32329e26899adea8701791" integrity sha512-JVrozIeElnj3QzfUIt8tB8YMluBJom4Vw9qTPpjGYQ9fYlB3D/rb6OordUxf3xeFB35LKWs0xqcO5U6ySvBtug== -dash-ast@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/dash-ast/-/dash-ast-1.0.0.tgz#12029ba5fb2f8aa6f0a861795b23c1b4b6c27d37" - integrity sha512-Vy4dx7gquTeMcQR/hDkYLGUnwVil6vk4FOOct+djUnHOUWt+zJPJAaRIXaAFkPXtJjvlY7o3rfRu0/3hpnwoUA== - dashdash@^1.12.0: version "1.14.1" resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" @@ -5745,6 +5038,11 @@ date-now@^0.1.4: resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" integrity sha1-6vQ5/U1ISK105cx9vvIAZyueNFs= +dayjs@1.11.9: + version "1.11.9" + resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.9.tgz#9ca491933fadd0a60a2c19f6c237c03517d71d1a" + integrity sha512-QvzAURSbQ0pKdIye2txOzNaHmxtUBXerpY0FJsFXUMKbIZeFm5ht1LS/jFsrncjnmtv8HsG0W2g6c0zUjZWmpA== + debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" @@ -5759,12 +5057,12 @@ debug@4: dependencies: ms "2.1.2" -debug@4.1.1, debug@^4.0.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" - integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== +debug@4.3.4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.4: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== dependencies: - ms "^2.1.1" + ms "2.1.2" debug@=3.1.0: version "3.1.0" @@ -5780,12 +5078,12 @@ debug@^3.0.0, debug@^3.1.0: dependencies: ms "^2.1.1" -debug@^4.1.0, debug@^4.1.1: - version "4.3.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== +debug@^4.0.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" + integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== dependencies: - ms "2.1.2" + ms "^2.1.1" decamelize@^1.2.0: version "1.2.0" @@ -5896,16 +5194,6 @@ depd@~1.1.2: resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= -deps-sort@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/deps-sort/-/deps-sort-2.0.1.tgz#9dfdc876d2bcec3386b6829ac52162cda9fa208d" - integrity sha512-1orqXQr5po+3KI6kQb9A4jnXT1PBwggGl2d7Sq2xsnOeI9GPcE/tGcF9UiSZtZBM7MukY4cAh7MemS6tZYipfw== - dependencies: - JSONStream "^1.0.3" - shasum-object "^1.0.0" - subarg "^1.0.0" - through2 "^2.0.0" - des.js@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc" @@ -5939,15 +5227,6 @@ detect-node@^2.0.4: resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c" integrity sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw== -detective@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/detective/-/detective-5.2.0.tgz#feb2a77e85b904ecdea459ad897cc90a99bd2a7b" - integrity sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg== - dependencies: - acorn-node "^1.6.1" - defined "^1.0.0" - minimist "^1.1.1" - diff-match-patch@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/diff-match-patch/-/diff-match-patch-1.0.5.tgz#abb584d5f10cd1196dfc55aa03701592ae3f7b37" @@ -6062,7 +5341,7 @@ dom-serializer@^1.0.1: domhandler "^4.2.0" entities "^2.0.0" -domain-browser@^1.1.1, domain-browser@^1.2.0: +domain-browser@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== @@ -6163,13 +5442,6 @@ dup@^1.0.0: resolved "https://registry.yarnpkg.com/dup/-/dup-1.0.0.tgz#51fc5ac685f8196469df0b905e934b20af5b4029" integrity sha1-UfxaxoX4GWRp3wuQXpNLIK9bQCk= -duplexer2@^0.1.2, duplexer2@~0.1.0, duplexer2@~0.1.2: - version "0.1.4" - resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1" - integrity sha1-ixLauHjA1p4+eJEFFmKjL8a93ME= - dependencies: - readable-stream "^2.0.2" - duplexer@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" @@ -6225,11 +5497,6 @@ electron-to-chromium@^1.3.322: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.322.tgz#a6f7e1c79025c2b05838e8e344f6e89eb83213a8" integrity sha512-Tc8JQEfGQ1MzfSzI/bTlSr7btJv/FFO7Yh6tanqVmIWOuNCu6/D1MilIEgLtmWqIrsv+o4IjpLAhgMBr/ncNAA== -electron-to-chromium@^1.3.488: - version "1.3.496" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.496.tgz#3f43d32930481d82ad3663d79658e7c59a58af0b" - integrity sha512-TXY4mwoyowwi4Lsrq9vcTUYBThyc1b2hXaTZI13p8/FRhY2CTaq5lK+DVjhYkKiTLsKt569Xes+0J5JsVXFurQ== - electron-to-chromium@^1.4.431: version "1.4.468" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.468.tgz#3cbf64ad67d9f12bfe69fefe5eb1935ec4f6ab7a" @@ -6583,11 +5850,6 @@ es6-weak-map@^2.0.3: es6-iterator "^2.0.3" es6-symbol "^3.1.1" -escalade@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.0.1.tgz#52568a77443f6927cd0ab9c73129137533c965ed" - integrity sha512-DR6NO3h9niOT+MZs7bjxlj2a1k+POu5RN8CLTPX2+i78bRi9eLe7+0zXgUHMnGXWybYcL61E9hGhPKqedy8tQA== - escalade@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" @@ -6924,11 +6186,6 @@ events@^1.0.2: resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" integrity sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ= -events@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/events/-/events-2.1.0.tgz#2a9a1e18e6106e0e812aa9ebd4a819b3c29c0ba5" - integrity sha512-3Zmiobend8P9DjmKAty0Era4jV8oJ0yGYe2nJJAxgymF9+N8F2m0hhZiMoWtcfepExzNKZumFU3ksdQbInGWCg== - events@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/events/-/events-3.2.0.tgz#93b87c18f8efcd4202a461aec4dfc0556b639379" @@ -6947,10 +6204,10 @@ exec-sh@^0.3.2: resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.6.tgz#ff264f9e325519a60cb5e273692943483cca63bc" integrity sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w== -execa@4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/execa/-/execa-4.0.2.tgz#ad87fb7b2d9d564f70d2b62d511bee41d5cbb240" - integrity sha512-QI2zLa6CjGWdiQsmSkZoGtDx2N+cQIGb3yNolGTdjSQzydzLgYYf8LRuagp7S7fPimjcrzUDSUFd/MgzELMi4Q== +execa@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" + integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== dependencies: cross-spawn "^7.0.0" get-stream "^5.0.0" @@ -7215,7 +6472,7 @@ fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== -fast-safe-stringify@^2.0.4, fast-safe-stringify@^2.0.7: +fast-safe-stringify@^2.0.4: version "2.0.7" resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz#124aa885899261f68aedb42a7c080de9da608743" integrity sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA== @@ -7592,16 +6849,6 @@ fromentries@^1.2.0: resolved "https://registry.yarnpkg.com/fromentries/-/fromentries-1.2.1.tgz#64c31665630479bc993cd800d53387920dc61b4d" integrity sha512-Xu2Qh8yqYuDhQGOhD5iJGninErSfI9A3FrriD3tjUgV5VbJFeH8vfgZ9HnC6jWN80QDVNQK5vmxRAmEAp7Mevw== -fs-extra@9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.0.0.tgz#b6afc31036e247b2466dc99c29ae797d5d4580a3" - integrity sha512-pmEYSk3vYsG/bF651KPUXZ+hvjpgWYw/Gc7W9NFUe3ZVLczKKWIij3IKpOrQcdw4TILtibFslZ0UmR8Vvzig4g== - dependencies: - at-least-node "^1.0.0" - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^1.0.0" - fs-extra@^7.0.0: version "7.0.1" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" @@ -7727,11 +6974,6 @@ geojson-vt@^3.2.1: resolved "https://registry.yarnpkg.com/geojson-vt/-/geojson-vt-3.2.1.tgz#f8adb614d2c1d3f6ee7c4265cad4bbf3ad60c8b7" integrity sha512-EvGQQi/zPrDA6zr6BnJD/YhwAkBP8nnJ9emh3EnHQKVMfg/MRVtPbMYdgVy/IaEmn4UfagD2a6fafPDL5hbtwg== -get-assigned-identifiers@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/get-assigned-identifiers/-/get-assigned-identifiers-1.2.0.tgz#6dbf411de648cbaf8d9169ebb0d2d576191e2ff1" - integrity sha512-mBBwmeGTrxEMO4pMaaf/uUEFHnYtwr8FTe8Y/mer4rcV/bye0qGm6pw1bGZFGStxC5O76c5ZAVBGnqHmOaJpdQ== - get-caller-file@^2.0.1: version "2.0.5" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" @@ -8218,18 +7460,6 @@ glob-parent@~5.1.2: dependencies: is-glob "^4.0.1" -glob@^7.1.0: - version "7.1.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" - integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.2.0: version "7.2.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" @@ -8326,10 +7556,10 @@ globalthis@^1.0.3: dependencies: define-properties "^1.1.3" -globby@11.0.0: - version "11.0.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.0.tgz#56fd0e9f0d4f8fb0c456f1ab0dee96e1380bc154" - integrity sha512-iuehFnR3xu5wBBtm4xi0dMe92Ob87ufyu/dHwpDYfbcpYpIbrO5OnS8M1vWvrBhSGEJ3/Ecj7gnX76P8YxpPEg== +globby@11.0.4: + version "11.0.4" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.4.tgz#2cbaff77c2f2a62e71e9b2813a67b97a3a3001a5" + integrity sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg== dependencies: array-union "^2.1.0" dir-glob "^3.0.1" @@ -8691,7 +7921,7 @@ has-values@^1.0.0: is-number "^3.0.0" kind-of "^4.0.0" -has@^1.0.0, has@^1.0.1, has@^1.0.3, has@~1.0.3: +has@^1.0.1, has@^1.0.3, has@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== @@ -8841,11 +8071,6 @@ html-webpack-plugin@^4.5.2: tapable "^1.1.3" util.promisify "1.0.0" -htmlescape@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/htmlescape/-/htmlescape-1.1.1.tgz#3a03edc2214bca3b66424a3e7959349509cb0351" - integrity sha1-OgPtwiFLyjtmQko+eVk0lQnLA1E= - htmlparser2@^3.9.1: version "3.10.1" resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f" @@ -9122,13 +8347,6 @@ ini@^1.3.4, ini@^1.3.5: resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== -inline-source-map@~0.6.0: - version "0.6.2" - resolved "https://registry.yarnpkg.com/inline-source-map/-/inline-source-map-0.6.2.tgz#f9393471c18a79d1724f863fa38b586370ade2a5" - integrity sha1-+Tk0ccGKedFyT4Y/o4tYY3Ct4qU= - dependencies: - source-map "~0.5.3" - inquirer@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.0.0.tgz#9e2b032dde77da1db5db804758b8fea3a970519a" @@ -9153,22 +8371,6 @@ insert-css@^2.0.0: resolved "https://registry.yarnpkg.com/insert-css/-/insert-css-2.0.0.tgz#eb5d1097b7542f4c79ea3060d3aee07d053880f4" integrity sha1-610Ql7dUL0x56jBg067gfQU4gPQ= -insert-module-globals@^7.0.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/insert-module-globals/-/insert-module-globals-7.2.0.tgz#ec87e5b42728479e327bd5c5c71611ddfb4752ba" - integrity sha512-VE6NlW+WGn2/AeOMd496AHFYmE7eLKkUY6Ty31k4og5vmA3Fjuwe9v6ifH6Xx/Hz27QvdoMoviw1/pqWRB09Sw== - dependencies: - JSONStream "^1.0.3" - acorn-node "^1.5.2" - combine-source-map "^0.8.0" - concat-stream "^1.6.1" - is-buffer "^1.1.0" - path-is-absolute "^1.0.1" - process "~0.11.0" - through2 "^2.0.0" - undeclared-identifiers "^1.1.2" - xtend "^4.0.0" - internal-slot@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.5.tgz#f2a2ee21f668f8627a4667f309dc0f4fb6674986" @@ -9304,7 +8506,7 @@ is-browser@^2.0.1, is-browser@^2.1.0: resolved "https://registry.yarnpkg.com/is-browser/-/is-browser-2.1.0.tgz#fc084d59a5fced307d6708c59356bad7007371a9" integrity sha512-F5rTJxDQ2sW81fcfOR1GnCXT6sVJC104fCyfj+mjpwNEwaPYSn5fte5jiHmBg3DHsIoL/l8Kvw5VN5SsTRcRFQ== -is-buffer@^1.0.2, is-buffer@^1.1.0, is-buffer@^1.1.5: +is-buffer@^1.0.2, is-buffer@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== @@ -10175,11 +9377,6 @@ js-base64@^2.1.9: resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.5.1.tgz#1efa39ef2c5f7980bb1784ade4a8af2de3291121" integrity sha512-M7kLczedRMYX4L8Mdh4MzyAMM9O5osx+4FcOQuTvr3A9F2D9S5JXheN0ewNbrvK2UatkTRhL5ejGmGSjNMiZuw== -js-levenshtein@^1.1.3: - version "1.1.6" - resolved "https://registry.yarnpkg.com/js-levenshtein/-/js-levenshtein-1.1.6.tgz#c6cee58eb3550372df8deb85fad5ce66ce01d59d" - integrity sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g== - "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" @@ -10190,13 +9387,12 @@ js-tokens@^3.0.2: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= -js-yaml@3.14.0: - version "3.14.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482" - integrity sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A== +js-yaml@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== dependencies: - argparse "^1.0.7" - esprima "^4.0.0" + argparse "^2.0.1" js-yaml@^3.13.1: version "3.14.1" @@ -10278,13 +9474,6 @@ json-stable-stringify-without-jsonify@^1.0.1: resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= -json-stable-stringify@~0.0.0: - version "0.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz#611c23e814db375527df851193db59dd2af27f45" - integrity sha1-YRwj6BTbN1Un34URk9tZ3Sryf0U= - dependencies: - jsonify "~0.0.0" - json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" @@ -10304,13 +9493,6 @@ json5@^1.0.1: dependencies: minimist "^1.2.0" -json5@^2.1.0: - version "2.1.3" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43" - integrity sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA== - dependencies: - minimist "^1.2.5" - json5@^2.1.2, json5@^2.2.2: version "2.2.3" resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" @@ -10332,16 +9514,6 @@ jsonfile@^6.0.1: optionalDependencies: graceful-fs "^4.1.6" -jsonify@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" - integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM= - -jsonparse@^1.2.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" - integrity sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA= - jsprim@^1.2.2: version "1.4.2" resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.2.tgz#712c65533a15c878ba59e9ed5f0e26d5b77c5feb" @@ -10412,14 +9584,6 @@ kuler@^2.0.0: resolved "https://registry.yarnpkg.com/kuler/-/kuler-2.0.0.tgz#e2c570a3800388fb44407e851531c1d670b061b3" integrity sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A== -labeled-stream-splicer@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/labeled-stream-splicer/-/labeled-stream-splicer-2.0.2.tgz#42a41a16abcd46fd046306cf4f2c3576fffb1c21" - integrity sha512-Ca4LSXFFZUjPScRaqOcFxneA0VpKZr4MMYCljyQr4LIewTLb3Y0IUTIsnBBsVubIeEfxeSZpSjSsRM8APEQaAw== - dependencies: - inherits "^2.0.1" - stream-splicer "^2.0.0" - language-subtag-registry@~0.3.2: version "0.3.21" resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.21.tgz#04ac218bea46f04cb039084602c6da9e788dd45a" @@ -10646,11 +9810,6 @@ lodash._reinterpolate@^3.0.0: resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= -lodash.clonedeep@4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" - integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= - lodash.debounce@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" @@ -10681,11 +9840,6 @@ lodash.memoize@4.1.2: resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= -lodash.memoize@~3.0.3: - version "3.0.4" - resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-3.0.4.tgz#2dcbd2c287cbc0a55cc42328bd0c736150d53e3f" - integrity sha1-LcvSwofLwKVcxCMovQxzYVDVPj8= - lodash.once@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" @@ -11136,16 +10290,16 @@ minimist@0.0.8: resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= -minimist@^1.1.0, minimist@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" - integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= - minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6: version "1.2.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== +minimist@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" + integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= + mississippi@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" @@ -11196,27 +10350,6 @@ mockdate@^2.0.2: resolved "https://registry.yarnpkg.com/mockdate/-/mockdate-2.0.2.tgz#5ae0c0eaf8fe23e009cd01f9889b42c4f634af12" integrity sha1-WuDA6vj+I+AJzQH5iJtCxPY0rxI= -module-deps@^6.0.0: - version "6.2.3" - resolved "https://registry.yarnpkg.com/module-deps/-/module-deps-6.2.3.tgz#15490bc02af4b56cf62299c7c17cba32d71a96ee" - integrity sha512-fg7OZaQBcL4/L+AK5f4iVqf9OMbCclXfy/znXRxTVhJSeW5AIlS9AwheYwDaXM3lVW7OBeaeUEY3gbaC6cLlSA== - dependencies: - JSONStream "^1.0.3" - browser-resolve "^2.0.0" - cached-path-relative "^1.0.2" - concat-stream "~1.6.0" - defined "^1.0.0" - detective "^5.2.0" - duplexer2 "^0.1.2" - inherits "^2.0.1" - parents "^1.0.0" - readable-stream "^2.0.2" - resolve "^1.4.0" - stream-combiner2 "^1.1.1" - subarg "^1.0.0" - through2 "^2.0.0" - xtend "^4.0.0" - moment@^2.19.3, moment@^2.24.0, moment@^2.25.3, moment@^2.27.0, moment@^2.29.4: version "2.29.4" resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.4.tgz#3dbe052889fe7c1b2ed966fcb3a77328964ef108" @@ -11538,11 +10671,6 @@ node-releases@^1.1.42: dependencies: semver "^6.3.0" -node-releases@^1.1.58: - version "1.1.59" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.59.tgz#4d648330641cec704bff10f8e4fe28e453ab8e8e" - integrity sha512-H3JrdUczbdiwxN5FuJPyCHnGHIFqQ0wWxo+9j1kAXAzqNMAHlo+4I/sYYxpyK0irQ73HgdiyzD32oqQDcU2Osw== - node-releases@^2.0.12: version "2.0.13" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.13.tgz#d5ed1627c23e3461e819b02e57b75e4899b1c81d" @@ -11959,7 +11087,7 @@ orbit-camera-controller@^4.0.0: filtered-vector "^1.2.1" gl-mat4 "^1.0.3" -os-browserify@^0.3.0, os-browserify@~0.3.0: +os-browserify@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= @@ -11979,13 +11107,6 @@ ospath@^1.2.2: resolved "https://registry.yarnpkg.com/ospath/-/ospath-1.2.2.tgz#1276639774a3f8ef2572f7fe4280e0ea4550c07b" integrity sha1-EnZjl3Sj+O8lcvf+QoDg6kVQwHs= -outpipe@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/outpipe/-/outpipe-1.1.1.tgz#50cf8616365e87e031e29a5ec9339a3da4725fa2" - integrity sha1-UM+GFjZeh+Ax4ppeyTOaPaRyX6I= - dependencies: - shell-quote "^1.4.2" - p-each-series@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-1.0.0.tgz#930f3d12dd1f50e7434457a22cd6f04ac6ad7f71" @@ -12133,13 +11254,6 @@ parenthesis@^3.1.5: resolved "https://registry.yarnpkg.com/parenthesis/-/parenthesis-3.1.7.tgz#01c89b603a2a6a262ec47554e74ed154a9be2aa6" integrity sha512-iMtu+HCbLXVrpf6Ys/4YKhcFxbux3xK4ZVB9r+a2kMSqeeQWQoDNYlXIsOjwlT2ldYXZ3k5PVeBnYn7fbAo/Bg== -parents@^1.0.0, parents@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parents/-/parents-1.0.1.tgz#fedd4d2bf193a77745fe71e371d73c3307d9c751" - integrity sha1-/t1NK/GTp3dF/nHjcdc8MwfZx1E= - dependencies: - path-platform "~0.11.15" - parse-asn1@^5.0.0: version "5.1.4" resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.4.tgz#37f6628f823fbdeb2273b4d540434a22f3ef1fcc" @@ -12237,11 +11351,6 @@ path-browserify@0.0.1: resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== -path-browserify@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a" - integrity sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo= - path-dirname@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" @@ -12264,7 +11373,7 @@ path-exists@^4.0.0: resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== -path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: +path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== @@ -12284,11 +11393,6 @@ path-parse@^1.0.6, path-parse@^1.0.7: resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== -path-platform@~0.11.15: - version "0.11.15" - resolved "https://registry.yarnpkg.com/path-platform/-/path-platform-0.11.15.tgz#e864217f74c36850f0852b78dc7bf7d4a5721bf2" - integrity sha1-6GQhf3TDaFDwhSt43Hv31KVyG/I= - path-to-regexp@0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" @@ -12713,7 +11817,7 @@ process-on-spawn@^1.0.0: dependencies: fromentries "^1.2.0" -process@^0.11.10, process@~0.11.0: +process@^0.11.10: version "0.11.10" resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= @@ -12827,7 +11931,7 @@ punycode@>=0.2.0: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== -punycode@^1.2.4, punycode@^1.3.2, punycode@^1.4.1: +punycode@^1.2.4, punycode@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= @@ -12903,7 +12007,7 @@ query-string@^6.9.0: split-on-first "^1.0.0" strict-uri-encode "^2.0.0" -querystring-es3@^0.2.0, querystring-es3@~0.2.0: +querystring-es3@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= @@ -13460,13 +12564,6 @@ react@16.14.0: object-assign "^4.1.1" prop-types "^15.6.2" -read-only-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/read-only-stream/-/read-only-stream-2.0.0.tgz#2724fd6a8113d73764ac288d4386270c1dbf17f0" - integrity sha1-JyT9aoET1zdkrCiNQ4YnDB2/F/A= - dependencies: - readable-stream "^2.0.2" - read-pkg-up@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" @@ -13643,11 +12740,6 @@ regenerator-runtime@^0.11.0: resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== -regenerator-runtime@^0.12.0: - version "0.12.1" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz#fa1a71544764c036f8c49b13a08b2594c9f8a0de" - integrity sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg== - regenerator-runtime@^0.13.1, regenerator-runtime@^0.13.4: version "0.13.7" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55" @@ -13658,13 +12750,6 @@ regenerator-runtime@^0.13.2: resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz#7cf6a77d8f5c6f60eb73c5fc1955b2ceb01e6bf5" integrity sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw== -regenerator-transform@^0.14.2: - version "0.14.5" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.5.tgz#c98da154683671c9c4dcb16ece736517e1b7feb4" - integrity sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw== - dependencies: - "@babel/runtime" "^7.8.4" - regenerator-transform@^0.15.1: version "0.15.1" resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.1.tgz#f6c4e99fc1b4591f780db2586328e4d9a9d8dc56" @@ -14091,14 +13176,14 @@ resolve@^0.6.1: resolved "https://registry.yarnpkg.com/resolve/-/resolve-0.6.3.tgz#dd957982e7e736debdf53b58a4dd91754575dd46" integrity sha1-3ZV5gufnNt699TtYpN2RdUV13UY= -resolve@^1.0.0, resolve@^1.1.4, resolve@^1.1.5, resolve@^1.4.0, resolve@^1.5.0, resolve@^1.8.1: +resolve@^1.0.0, resolve@^1.1.5, resolve@^1.5.0: version "1.10.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.10.0.tgz#3bdaaeaf45cc07f375656dfd2e54ed0810b101ba" integrity sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg== dependencies: path-parse "^1.0.6" -resolve@^1.10.0, resolve@^1.14.2, resolve@^1.3.2: +resolve@^1.10.0, resolve@^1.14.2: version "1.22.2" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.2.tgz#0ed0943d4e301867955766c9f3e1ae6d01c6845f" integrity sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g== @@ -14114,13 +13199,6 @@ resolve@^1.11.0, resolve@^1.12.0, resolve@^1.13.1: dependencies: path-parse "^1.0.6" -resolve@^1.17.0: - version "1.17.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" - integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== - dependencies: - path-parse "^1.0.6" - resolve@~1.15.1: version "1.15.1" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.15.1.tgz#27bdcdeffeaf2d6244b95bb0f9f4b4653451f3e8" @@ -14477,16 +13555,11 @@ selfsigned@^2.1.1: dependencies: node-forge "^1" -"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: +"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.6.0: version "5.7.2" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== -semver@7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" - integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== - semver@^6.0.0, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0, semver@^6.3.1: version "6.3.1" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" @@ -14578,7 +13651,7 @@ setprototypeof@1.2.0: resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== -sha.js@^2.4.0, sha.js@^2.4.8, sha.js@~2.4.4: +sha.js@^2.4.0, sha.js@^2.4.8: version "2.4.11" resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== @@ -14596,21 +13669,6 @@ shallowequal@^1.0.2, shallowequal@^1.1.0: resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ== -shasum-object@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/shasum-object/-/shasum-object-1.0.0.tgz#0b7b74ff5b66ecf9035475522fa05090ac47e29e" - integrity sha512-Iqo5rp/3xVi6M4YheapzZhhGPVs0yZwHj7wvwQ1B9z8H6zk+FEnI7y3Teq7qwnekfEhu8WmG2z0z4iWZaxLWVg== - dependencies: - fast-safe-stringify "^2.0.7" - -shasum@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/shasum/-/shasum-1.0.2.tgz#e7012310d8f417f4deb5712150e5678b87ae565f" - integrity sha1-5wEjENj0F/TetXEhUOVni4euVl8= - dependencies: - json-stable-stringify "~0.0.0" - sha.js "~2.4.4" - shebang-command@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" @@ -14635,7 +13693,7 @@ shebang-regex@^3.0.0: resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== -shell-quote@^1.4.2, shell-quote@^1.6.1: +shell-quote@^1.6.1: version "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== @@ -14674,11 +13732,6 @@ signum@^1.0.0: resolved "https://registry.yarnpkg.com/signum/-/signum-1.0.0.tgz#74a7d2bf2a20b40eba16a92b152124f1d559fa77" integrity sha1-dKfSvyogtA66FqkrFSEk8dVZ+nc= -simple-concat@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" - integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== - simple-swizzle@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" @@ -14861,7 +13914,7 @@ source-map-url@^0.4.0: resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== -source-map@^0.5.0, source-map@^0.5.6, source-map@~0.5.3: +source-map@^0.5.6: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= @@ -15047,7 +14100,7 @@ stealthy-require@^1.1.1: resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" integrity sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g== -stream-browserify@^2.0.0, stream-browserify@^2.0.1: +stream-browserify@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== @@ -15055,14 +14108,6 @@ stream-browserify@^2.0.0, stream-browserify@^2.0.1: inherits "~2.0.1" readable-stream "^2.0.2" -stream-combiner2@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/stream-combiner2/-/stream-combiner2-1.1.1.tgz#fb4d8a1420ea362764e21ad4780397bebcb41cbe" - integrity sha1-+02KFCDqNidk4hrUeAOXvry0HL4= - dependencies: - duplexer2 "~0.1.0" - readable-stream "^2.0.2" - stream-each@^1.1.0: version "1.2.3" resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" @@ -15071,7 +14116,7 @@ stream-each@^1.1.0: end-of-stream "^1.1.0" stream-shift "^1.0.0" -stream-http@^2.0.0, stream-http@^2.7.2: +stream-http@^2.7.2: version "2.8.3" resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== @@ -15087,14 +14132,6 @@ stream-shift@^1.0.0: resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== -stream-splicer@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/stream-splicer/-/stream-splicer-2.0.1.tgz#0b13b7ee2b5ac7e0609a7463d83899589a363fcd" - integrity sha512-Xizh4/NPuYSyAXyT7g8IvdJ9HJpxIGL9PjyhtywCZvvP0OPIdqyrr4dMikeuvY8xahpdKEBlBTySe583totajg== - dependencies: - inherits "^2.0.1" - readable-stream "^2.0.2" - strict-uri-encode@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546" @@ -15367,13 +14404,6 @@ style-loader@^2.0.0: loader-utils "^2.0.0" schema-utils "^3.0.0" -subarg@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/subarg/-/subarg-1.0.0.tgz#f62cf17581e996b48fc965699f54c06ae268b8d2" - integrity sha1-9izxdYHplrSPyWVpn1TAauJouNI= - dependencies: - minimist "^1.1.0" - supercluster@^7.0.0: version "7.1.5" resolved "https://registry.yarnpkg.com/supercluster/-/supercluster-7.1.5.tgz#65a6ce4a037a972767740614c19051b64b8be5a3" @@ -15477,13 +14507,6 @@ symbol-tree@^3.2.2: resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== -syntax-error@^1.1.1: - version "1.4.0" - resolved "https://registry.yarnpkg.com/syntax-error/-/syntax-error-1.4.0.tgz#2d9d4ff5c064acb711594a3e3b95054ad51d907c" - integrity sha512-YPPlu67mdnHGTup2A8ff7BC2Pjq0e0Yp/IyTFN03zWO0RcK07uLcbi7C2KpGR2FvWbaB0+bfE27a+sBKebSo7w== - dependencies: - acorn-node "^1.2.0" - table@^5.2.3: version "5.4.6" resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" @@ -15606,7 +14629,7 @@ through2@^2.0.0, through2@^2.0.1: readable-stream "~2.3.6" xtend "~4.0.1" -"through@>=2.2.7 <3", through@^2.3.6, through@~2.3.4, through@~2.3.8: +through@^2.3.6, through@~2.3.4, through@~2.3.8: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= @@ -15616,13 +14639,6 @@ thunky@^1.0.2: resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== -timers-browserify@^1.0.1: - version "1.4.2" - resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-1.4.2.tgz#c9c58b575be8407375cb5e2462dacee74359f41d" - integrity sha1-ycWLV1voQHN1y14kYtrO50NZ9B0= - dependencies: - process "~0.11.0" - timers-browserify@^2.0.4: version "2.0.12" resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee" @@ -15865,11 +14881,6 @@ tty-browserify@0.0.0: resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= -tty-browserify@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.1.tgz#3f05251ee17904dfd0677546670db9651682b811" - integrity sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw== - tunnel-agent@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" @@ -16008,11 +15019,6 @@ typescript@^4.1.2: resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.1.2.tgz#6369ef22516fe5e10304aae5a5c4862db55380e9" integrity sha512-thGloWsGH3SOxv1SoY7QojKi0tc+8FnOmiarEGMbd/lar7QOEd3hvlx3Fp5y6FlDUGl9L+pd4n2e+oToGMmhRQ== -umd@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/umd/-/umd-3.0.3.tgz#aa9fe653c42b9097678489c01000acb69f0b26cf" - integrity sha512-4IcGSufhFshvLNcMCV80UnQVlZ5pMOC8mvNPForqwA4+lzYQuetTESLDQkeLmihq8bRcnpbQa48Wb8Lh16/xow== - unbox-primitive@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" @@ -16023,17 +15029,6 @@ unbox-primitive@^1.0.2: has-symbols "^1.0.3" which-boxed-primitive "^1.0.2" -undeclared-identifiers@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/undeclared-identifiers/-/undeclared-identifiers-1.1.3.tgz#9254c1d37bdac0ac2b52de4b6722792d2a91e30f" - integrity sha512-pJOW4nxjlmfwKApE4zvxLScM/njmwj/DiUBv7EabwE4O8kRUy+HIwxQtZLBPll/jx1LJyBcqNfB3/cpv9EZwOw== - dependencies: - acorn-node "^1.3.0" - dash-ast "^1.0.0" - get-assigned-identifiers "^1.2.0" - simple-concat "^1.0.0" - xtend "^4.0.1" - unicode-canonical-property-names-ecmascript@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" @@ -16159,11 +15154,6 @@ untildify@^4.0.0: resolved "https://registry.yarnpkg.com/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b" integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw== -upath@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.0.tgz#35256597e46a581db4793d0ce47fa9aebfc9fabd" - integrity sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw== - upath@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" @@ -16203,7 +15193,7 @@ url-loader@^1.1.2: mime "^2.0.3" schema-utils "^1.0.0" -url@^0.11.0, url@~0.11.0: +url@^0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= @@ -16271,13 +15261,6 @@ util@^0.11.0: dependencies: inherits "2.0.3" -util@~0.10.1: - version "0.10.4" - resolved "https://registry.yarnpkg.com/util/-/util-0.10.4.tgz#3aa0125bfe668a4672de58857d3ace27ecb76901" - integrity sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A== - dependencies: - inherits "2.0.3" - utila@~0.4: version "0.4.0" resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" @@ -16458,7 +15441,7 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" -vm-browserify@^1.0.0, vm-browserify@^1.0.1: +vm-browserify@^1.0.1: version "1.1.2" resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== @@ -16500,19 +15483,6 @@ warning@^4.0.1, warning@^4.0.3: dependencies: loose-envify "^1.0.0" -watchify@3.11.1: - version "3.11.1" - resolved "https://registry.yarnpkg.com/watchify/-/watchify-3.11.1.tgz#8e4665871fff1ef64c0430d1a2c9d084d9721881" - integrity sha512-WwnUClyFNRMB2NIiHgJU9RQPQNqVeFk7OmZaWf5dC5EnNa0Mgr7imBydbaJ7tGTuPM2hz1Cb4uiBvK9NVxMfog== - dependencies: - anymatch "^2.0.0" - browserify "^16.1.0" - chokidar "^2.1.1" - defined "^1.0.0" - outpipe "^1.1.0" - through2 "^2.0.0" - xtend "^4.0.0" - watchpack-chokidar2@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz#38500072ee6ece66f3769936950ea1771be1c957" @@ -16963,7 +15933,7 @@ xml-name-validator@^3.0.0: resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== -"xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.0, xtend@^4.0.1: +"xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" integrity sha1-pcbVMr5lbiPbgg77lDofBJmNY68= @@ -16973,7 +15943,7 @@ xtend@^2.1.2: resolved "https://registry.yarnpkg.com/xtend/-/xtend-2.2.0.tgz#eef6b1f198c1c8deafad8b1765a04dad4a01c5a9" integrity sha1-7vax8ZjByN6vrYsXZaBNrUoBxak= -xtend@^4.0.2, xtend@~4.0.1: +xtend@~4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== From 34d380d427958616e2df46ff1bfcd1285081f8b4 Mon Sep 17 00:00:00 2001 From: Justin Clift Date: Tue, 25 Jul 2023 21:44:40 +1000 Subject: [PATCH 215/274] Bump babel-plugin-istanbul to 6.1.1 (#6284) --- package.json | 2 +- viz-lib/package.json | 2 +- viz-lib/yarn.lock | 35 ++++++++++++++++++----------------- yarn.lock | 30 +++++++++++++++++++++++------- 4 files changed, 43 insertions(+), 26 deletions(-) diff --git a/package.json b/package.json index 762600f184..a579d6f37d 100644 --- a/package.json +++ b/package.json @@ -104,7 +104,7 @@ "babel-eslint": "^10.0.3", "babel-jest": "^24.1.0", "babel-loader": "^8.0.5", - "babel-plugin-istanbul": "^6.0.0", + "babel-plugin-istanbul": "^6.1.1", "babel-plugin-transform-builtin-extend": "^1.1.2", "copy-webpack-plugin": "^5.1.2", "css-loader": "^1.0.1", diff --git a/viz-lib/package.json b/viz-lib/package.json index a3745c8f9f..244ee1f8ac 100644 --- a/viz-lib/package.json +++ b/viz-lib/package.json @@ -51,7 +51,7 @@ "@types/react-dom": "^17.0.0", "@types/tinycolor2": "^1.4.2", "babel-loader": "^8.1.0", - "babel-plugin-istanbul": "^6.0.0", + "babel-plugin-istanbul": "^6.1.1", "babel-plugin-module-resolver": "^4.0.0", "css-loader": "^3.5.2", "enzyme": "^3.8.0", diff --git a/viz-lib/yarn.lock b/viz-lib/yarn.lock index 3c4eb04632..80042f1513 100644 --- a/viz-lib/yarn.lock +++ b/viz-lib/yarn.lock @@ -54,7 +54,7 @@ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.22.9.tgz#71cdb00a1ce3a329ce4cbec3a44f9fef35669730" integrity sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ== -"@babel/core@^7.1.0", "@babel/core@^7.1.6", "@babel/core@^7.13.16", "@babel/core@^7.22.9", "@babel/core@^7.7.5": +"@babel/core@^7.1.0", "@babel/core@^7.1.6", "@babel/core@^7.12.3", "@babel/core@^7.13.16", "@babel/core@^7.22.9": version "7.22.9" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.22.9.tgz#bd96492c68822198f33e8a256061da3cf391f58f" integrity sha512-G2EgeufBcYw27U4hhoIwFcgc1XU7TlXJ3mv04oOv1WCuo900U/anZSPzEqNjwdjgffkk2Gs0AN0dW1CKVLcG7w== @@ -347,7 +347,7 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.13.16", "@babel/parser@^7.20.7", "@babel/parser@^7.22.5", "@babel/parser@^7.22.7", "@babel/parser@^7.4.3": +"@babel/parser@^7.1.0", "@babel/parser@^7.13.16", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.22.5", "@babel/parser@^7.22.7", "@babel/parser@^7.4.3": version "7.22.7" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.22.7.tgz#df8cf085ce92ddbdbf668a7f186ce848c9036cae" integrity sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q== @@ -2751,15 +2751,15 @@ babel-plugin-istanbul@^5.1.0: istanbul-lib-instrument "^3.3.0" test-exclude "^5.2.3" -babel-plugin-istanbul@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz#e159ccdc9af95e0b570c75b4573b7c34d671d765" - integrity sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ== +babel-plugin-istanbul@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" + integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@istanbuljs/load-nyc-config" "^1.0.0" "@istanbuljs/schema" "^0.1.2" - istanbul-lib-instrument "^4.0.0" + istanbul-lib-instrument "^5.0.4" test-exclude "^6.0.0" babel-plugin-jest-hoist@^24.9.0: @@ -6230,10 +6230,10 @@ istanbul-lib-coverage@^2.0.2, istanbul-lib-coverage@^2.0.5: resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz#675f0ab69503fad4b1d849f736baaca803344f49" integrity sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA== -istanbul-lib-coverage@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec" - integrity sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg== +istanbul-lib-coverage@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" + integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== istanbul-lib-instrument@^3.0.1, istanbul-lib-instrument@^3.3.0: version "3.3.0" @@ -6248,14 +6248,15 @@ istanbul-lib-instrument@^3.0.1, istanbul-lib-instrument@^3.3.0: istanbul-lib-coverage "^2.0.5" semver "^6.0.0" -istanbul-lib-instrument@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz#873c6fff897450118222774696a3f28902d77c1d" - integrity sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ== +istanbul-lib-instrument@^5.0.4: + version "5.2.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz#d10c8885c2125574e1c231cacadf955675e1ce3d" + integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg== dependencies: - "@babel/core" "^7.7.5" + "@babel/core" "^7.12.3" + "@babel/parser" "^7.14.7" "@istanbuljs/schema" "^0.1.2" - istanbul-lib-coverage "^3.0.0" + istanbul-lib-coverage "^3.2.0" semver "^6.3.0" istanbul-lib-report@^2.0.4: diff --git a/yarn.lock b/yarn.lock index c281452863..1b19d7026a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -87,7 +87,7 @@ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.22.9.tgz#71cdb00a1ce3a329ce4cbec3a44f9fef35669730" integrity sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ== -"@babel/core@^7.1.0", "@babel/core@^7.22.9", "@babel/core@^7.7.5": +"@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.22.9", "@babel/core@^7.7.5": version "7.22.9" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.22.9.tgz#bd96492c68822198f33e8a256061da3cf391f58f" integrity sha512-G2EgeufBcYw27U4hhoIwFcgc1XU7TlXJ3mv04oOv1WCuo900U/anZSPzEqNjwdjgffkk2Gs0AN0dW1CKVLcG7w== @@ -352,7 +352,7 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.0.0", "@babel/parser@^7.1.0", "@babel/parser@^7.20.7", "@babel/parser@^7.22.5", "@babel/parser@^7.22.7", "@babel/parser@^7.4.3": +"@babel/parser@^7.0.0", "@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.22.5", "@babel/parser@^7.22.7", "@babel/parser@^7.4.3": version "7.22.7" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.22.7.tgz#df8cf085ce92ddbdbf668a7f186ce848c9036cae" integrity sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q== @@ -3212,15 +3212,15 @@ babel-plugin-istanbul@^5.1.0: istanbul-lib-instrument "^3.3.0" test-exclude "^5.2.3" -babel-plugin-istanbul@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz#e159ccdc9af95e0b570c75b4573b7c34d671d765" - integrity sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ== +babel-plugin-istanbul@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" + integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@istanbuljs/load-nyc-config" "^1.0.0" "@istanbuljs/schema" "^0.1.2" - istanbul-lib-instrument "^4.0.0" + istanbul-lib-instrument "^5.0.4" test-exclude "^6.0.0" babel-plugin-jest-hoist@^24.1.0: @@ -8922,6 +8922,11 @@ istanbul-lib-coverage@^2.0.2, istanbul-lib-coverage@^2.0.5: resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz#675f0ab69503fad4b1d849f736baaca803344f49" integrity sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA== +istanbul-lib-coverage@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" + integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== + istanbul-lib-hook@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz#8f84c9434888cc6b1d0a9d7092a76d239ebf0cc6" @@ -8952,6 +8957,17 @@ istanbul-lib-instrument@^4.0.0: istanbul-lib-coverage "^3.0.0" semver "^6.3.0" +istanbul-lib-instrument@^5.0.4: + version "5.2.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz#d10c8885c2125574e1c231cacadf955675e1ce3d" + integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg== + dependencies: + "@babel/core" "^7.12.3" + "@babel/parser" "^7.14.7" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-coverage "^3.2.0" + semver "^6.3.0" + istanbul-lib-processinfo@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.2.tgz#e1426514662244b2f25df728e8fd1ba35fe53b9c" From 2eed83bd7c6919e68e367913e888127955e7be00 Mon Sep 17 00:00:00 2001 From: Justin Clift Date: Tue, 25 Jul 2023 22:32:02 +1000 Subject: [PATCH 216/274] Bump copy-webpack-plugin to 6.4.1 (#6285) --- package.json | 2 +- webpack.config.js | 16 +-- yarn.lock | 280 +++++++++++++++++++++++++++++++--------------- 3 files changed, 200 insertions(+), 98 deletions(-) diff --git a/package.json b/package.json index a579d6f37d..3468eaeefc 100644 --- a/package.json +++ b/package.json @@ -106,7 +106,7 @@ "babel-loader": "^8.0.5", "babel-plugin-istanbul": "^6.1.1", "babel-plugin-transform-builtin-extend": "^1.1.2", - "copy-webpack-plugin": "^5.1.2", + "copy-webpack-plugin": "^6.4.1", "css-loader": "^1.0.1", "cypress": "6.0.1", "enzyme": "^3.8.0", diff --git a/webpack.config.js b/webpack.config.js index 5aa2a49afc..efc5d8dd0f 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -109,13 +109,15 @@ const config = { fileName: "asset-manifest.json", publicPath: "" }), - new CopyWebpackPlugin([ - { from: "client/app/assets/robots.txt" }, - { from: "client/app/unsupported.html" }, - { from: "client/app/unsupportedRedirect.js" }, - { from: "client/app/assets/css/*.css", to: "styles/", flatten: true }, - { from: "client/app/assets/fonts", to: "fonts/" } - ]), + new CopyWebpackPlugin({ + patterns: [ + { from: "client/app/assets/robots.txt" }, + { from: "client/app/unsupported.html" }, + { from: "client/app/unsupportedRedirect.js" }, + { from: "client/app/assets/css/*.css", to: "styles/", flatten: true }, + { from: "client/app/assets/fonts", to: "fonts/" } + ], + }), isHotReloadingEnabled && new ReactRefreshWebpackPlugin({ overlay: false }) ].filter(Boolean), optimization: { diff --git a/yarn.lock b/yarn.lock index 1b19d7026a..e71c1d066d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1310,6 +1310,11 @@ resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== +"@gar/promisify@^1.0.1": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6" + integrity sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw== + "@istanbuljs/load-nyc-config@^1.0.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" @@ -1603,6 +1608,22 @@ "@nodelib/fs.scandir" "2.1.3" fastq "^1.6.0" +"@npmcli/fs@^1.0.0": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-1.1.1.tgz#72f719fe935e687c56a4faecf3c03d06ba593257" + integrity sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ== + dependencies: + "@gar/promisify" "^1.0.1" + semver "^7.3.5" + +"@npmcli/move-file@^1.0.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-1.1.2.tgz#1a82c3e372f7cae9253eb66d72543d6b8685c674" + integrity sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg== + dependencies: + mkdirp "^1.0.4" + rimraf "^3.0.2" + "@oclif/color@^0.x": version "0.1.2" resolved "https://registry.yarnpkg.com/@oclif/color/-/color-0.1.2.tgz#28b07e2850d9ce814d0b587ce3403b7ad8f7d987" @@ -2650,11 +2671,6 @@ alpha-shape@^1.0.0: alpha-complex "^1.0.0" simplicial-complex-boundary "^1.0.0" -ansi-colors@^3.0.0: - version "3.2.4" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" - integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== - ansi-escapes@^3.0.0, ansi-escapes@^3.1.0: version "3.2.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" @@ -2925,23 +2941,11 @@ array-tree-filter@^2.1.0: resolved "https://registry.yarnpkg.com/array-tree-filter/-/array-tree-filter-2.1.0.tgz#873ac00fec83749f255ac8dd083814b4f6329190" integrity sha512-4ROwICNlNw/Hqa9v+rk5h22KjmzB1JGTMVKP2AKJBOCgb0yL0ASf0+YvCcLNNwquOHNX48jkeZIJ3a+oOQqKcw== -array-union@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" - integrity sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng== - dependencies: - array-uniq "^1.0.1" - array-union@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== -array-uniq@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" - integrity sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q== - array-unique@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" @@ -3573,7 +3577,7 @@ braces@^2.3.1, braces@^2.3.2: split-string "^3.0.2" to-regex "^3.0.1" -braces@^3.0.1, braces@~3.0.2: +braces@^3.0.1, braces@^3.0.2, braces@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== @@ -3750,7 +3754,7 @@ bytes@3.1.2: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== -cacache@^12.0.2, cacache@^12.0.3: +cacache@^12.0.2: version "12.0.4" resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c" integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ== @@ -3771,6 +3775,30 @@ cacache@^12.0.2, cacache@^12.0.3: unique-filename "^1.1.1" y18n "^4.0.0" +cacache@^15.0.5: + version "15.3.0" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.3.0.tgz#dc85380fb2f556fe3dda4c719bfa0ec875a7f1eb" + integrity sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ== + 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" + cache-base@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" @@ -4027,6 +4055,11 @@ chownr@^1.1.1: resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== +chownr@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" + integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== + chroma-js@^1.3.6: version "1.4.1" resolved "https://registry.yarnpkg.com/chroma-js/-/chroma-js-1.4.1.tgz#eb2d9c4d1ff24616be84b35119f4d26f8205f134" @@ -4586,23 +4619,22 @@ copy-to-clipboard@^3.2.0: dependencies: toggle-selection "^1.0.6" -copy-webpack-plugin@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-5.1.2.tgz#8a889e1dcafa6c91c6cd4be1ad158f1d3823bae2" - integrity sha512-Uh7crJAco3AjBvgAy9Z75CjK8IG+gxaErro71THQ+vv/bl4HaQcpkexAY8KVW/T6D2W2IRr+couF/knIRkZMIQ== +copy-webpack-plugin@^6.4.1: + version "6.4.1" + resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-6.4.1.tgz#138cd9b436dbca0a6d071720d5414848992ec47e" + integrity sha512-MXyPCjdPVx5iiWyl40Va3JGh27bKzOTNY3NjUTrosD2q7dR/cLD0013uqJ3BpFbUjyONINjb6qI7nDIJujrMbA== dependencies: - cacache "^12.0.3" - find-cache-dir "^2.1.0" - glob-parent "^3.1.0" - globby "^7.1.1" - is-glob "^4.0.1" - loader-utils "^1.2.3" - minimatch "^3.0.4" + cacache "^15.0.5" + fast-glob "^3.2.4" + find-cache-dir "^3.3.1" + glob-parent "^5.1.1" + globby "^11.0.1" + loader-utils "^2.0.0" normalize-path "^3.0.0" - p-limit "^2.2.1" - schema-utils "^1.0.0" - serialize-javascript "^4.0.0" - webpack-log "^2.0.0" + p-limit "^3.0.2" + schema-utils "^3.0.0" + serialize-javascript "^5.0.1" + webpack-sources "^1.4.3" core-js-compat@^3.31.0: version "3.31.1" @@ -5246,13 +5278,6 @@ diffie-hellman@^5.0.0: miller-rabin "^4.0.0" randombytes "^2.0.0" -dir-glob@^2.0.0: - version "2.2.2" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.2.2.tgz#fa09f0694153c8918b18ba0deafae94769fc50c4" - integrity sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw== - dependencies: - path-type "^3.0.0" - dir-glob@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" @@ -6455,6 +6480,17 @@ fast-glob@^3.0.3, fast-glob@^3.1.1: micromatch "^4.0.2" picomatch "^2.2.1" +fast-glob@^3.2.4: + version "3.3.1" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.1.tgz#784b4e897340f3dbbef17413b3f11acf03c874c4" + integrity sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg== + dependencies: + "@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-isnumeric@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/fast-isnumeric/-/fast-isnumeric-1.1.4.tgz#e165786ff471c439e9ace2b8c8e66cceb47e2ea4" @@ -6636,6 +6672,15 @@ find-cache-dir@^3.2.0: make-dir "^3.0.2" pkg-dir "^4.1.0" +find-cache-dir@^3.3.1: + version "3.3.2" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b" + integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig== + dependencies: + commondir "^1.0.1" + make-dir "^3.0.2" + pkg-dir "^4.1.0" + find-up@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" @@ -6877,6 +6922,13 @@ fs-extra@^9.0.1: jsonfile "^6.0.1" universalify "^1.0.0" +fs-minipass@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" + integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== + dependencies: + minipass "^3.0.0" + fs-monkey@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.4.tgz#ee8c1b53d3fe8bb7e5d2c5c5dfc0168afdd2f747" @@ -7439,21 +7491,7 @@ glob-parent@^3.1.0: is-glob "^3.1.0" path-dirname "^1.0.0" -glob-parent@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.0.tgz#5f4c1d1e748d30cd73ad2944b3577a81b081e8c2" - integrity sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw== - dependencies: - is-glob "^4.0.1" - -glob-parent@^5.1.0, glob-parent@~5.1.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" - integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== - dependencies: - is-glob "^4.0.1" - -glob-parent@~5.1.2: +glob-parent@^5.0.0, glob-parent@^5.1.0, glob-parent@~5.1.0, glob-parent@^5.1.1, glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== @@ -7594,18 +7632,6 @@ globby@^11.0.1: merge2 "^1.3.0" slash "^3.0.0" -globby@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/globby/-/globby-7.1.1.tgz#fb2ccff9401f8600945dfada97440cca972b8680" - integrity sha512-yANWAN2DUcBtuus5Cpd+SKROzXHs2iVXFZt/Ykrfz6SAXqacLX25NZpltE+39ceMexYF4TtEadjuSTw8+3wX4g== - dependencies: - array-union "^1.0.1" - dir-glob "^2.0.0" - glob "^7.1.2" - ignore "^3.3.5" - pify "^3.0.0" - slash "^1.0.0" - glsl-inject-defines@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/glsl-inject-defines/-/glsl-inject-defines-1.0.3.tgz#dd1aacc2c17fcb2bd3fc32411c6633d0d7b60fd4" @@ -8224,11 +8250,6 @@ iferr@^0.1.5: resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" integrity sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA== -ignore@^3.3.5: - version "3.3.10" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" - integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== - ignore@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" @@ -8314,7 +8335,7 @@ indent-string@^4.0.0: resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== -infer-owner@^1.0.3: +infer-owner@^1.0.3, infer-owner@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== @@ -10198,6 +10219,14 @@ micromatch@^4.0.2: braces "^3.0.1" picomatch "^2.0.5" +micromatch@^4.0.4: + version "4.0.5" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + dependencies: + braces "^3.0.2" + picomatch "^2.3.1" + miller-rabin@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" @@ -10316,6 +10345,47 @@ minimist@~1.2.0: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= +minipass-collect@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" + integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== + dependencies: + minipass "^3.0.0" + +minipass-flush@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" + integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== + dependencies: + minipass "^3.0.0" + +minipass-pipeline@^1.2.2: + version "1.2.4" + resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" + integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== + dependencies: + minipass "^3.0.0" + +minipass@^3.0.0, minipass@^3.1.1: + version "3.3.6" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.6.tgz#7bba384db3a1520d18c9c0e5251c3444e95dd94a" + integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw== + dependencies: + yallist "^4.0.0" + +minipass@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d" + integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== + +minizlib@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" + integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== + dependencies: + minipass "^3.0.0" + yallist "^4.0.0" + mississippi@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" @@ -10361,6 +10431,11 @@ mkdirp@^0.5.1: dependencies: minimist "^1.2.6" +mkdirp@^1.0.3, mkdirp@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + mockdate@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/mockdate/-/mockdate-2.0.2.tgz#5ae0c0eaf8fe23e009cd01f9889b42c4f634af12" @@ -11142,7 +11217,7 @@ p-limit@^1.1.0: dependencies: p-try "^1.0.0" -p-limit@^2.0.0, p-limit@^2.2.0, p-limit@^2.2.1: +p-limit@^2.0.0, p-limit@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== @@ -11196,6 +11271,13 @@ p-map@^3.0.0: dependencies: aggregate-error "^3.0.0" +p-map@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" + integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== + dependencies: + aggregate-error "^3.0.0" + p-reduce@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-1.0.0.tgz#18c2b0dd936a4690a529f8231f58a0fdb6a47dfa" @@ -11512,6 +11594,11 @@ picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1: resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== +picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + pidtree@^0.3.0: version "0.3.1" resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.3.1.tgz#ef09ac2cc0533df1f3250ccf2c4d366b0d12114a" @@ -13581,7 +13668,7 @@ semver@^6.0.0, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0, semver@^6.3.1: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.3.2: +semver@^7.3.2, semver@^7.3.5: version "7.5.4" resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== @@ -13614,6 +13701,13 @@ serialize-javascript@^4.0.0: dependencies: randombytes "^2.1.0" +serialize-javascript@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-5.0.1.tgz#7886ec848049a462467a97d3d918ebb2aaf934f4" + integrity sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA== + dependencies: + randombytes "^2.1.0" + serve-index@^1.9.1: version "1.9.1" resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" @@ -13820,11 +13914,6 @@ slab-decomposition@^1.0.1: functional-red-black-tree "^1.0.0" robust-orientation "^1.1.3" -slash@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" - integrity sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg== - slash@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" @@ -14069,6 +14158,13 @@ ssri@^6.0.1: dependencies: figgy-pudding "^3.5.1" +ssri@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.1.tgz#638e4e439e2ffbd2cd289776d5ca457c4f51a2af" + integrity sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ== + dependencies: + minipass "^3.1.1" + stack-trace@0.0.9, stack-trace@0.0.x: version "0.0.9" resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.9.tgz#a8f6eaeca90674c333e7c43953f275b451510695" @@ -14559,6 +14655,18 @@ tape@^4.0.0: string.prototype.trim "~1.2.1" through "~2.3.8" +tar@^6.0.2: + version "6.1.15" + resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.15.tgz#c9738b0b98845a3b344d334b8fa3041aaba53a69" + integrity sha512-/zKt9UyngnxIT/EAGYuxaMYgOIJiP81ab9ZfkILq4oNLPFX50qyYmu7jRj9qeXoxmJHjGlbH0+cm2uy1WCs10A== + dependencies: + chownr "^2.0.0" + fs-minipass "^2.0.0" + minipass "^5.0.0" + minizlib "^2.1.1" + mkdirp "^1.0.3" + yallist "^4.0.0" + terser-webpack-plugin@^1.4.3: version "1.4.5" resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz#a217aefaea330e734ffacb6120ec1fa312d6040b" @@ -15635,14 +15743,6 @@ webpack-dev-server@^4.15.1: webpack-dev-middleware "^5.3.1" ws "^8.13.0" -webpack-log@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-2.0.0.tgz#5b7928e0637593f119d32f6227c1e0ac31e1b47f" - integrity sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg== - dependencies: - ansi-colors "^3.0.0" - uuid "^3.3.2" - webpack-manifest-plugin@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/webpack-manifest-plugin/-/webpack-manifest-plugin-2.0.4.tgz#e4ca2999b09557716b8ba4475fb79fab5986f0cd" @@ -15660,7 +15760,7 @@ webpack-sources@^1.1.0: source-list-map "^2.0.0" source-map "~0.6.1" -webpack-sources@^1.4.0, webpack-sources@^1.4.1: +webpack-sources@^1.4.0, webpack-sources@^1.4.1, webpack-sources@^1.4.3: version "1.4.3" resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== From 4a847388fe65071b4a40f3a0d151d1aa7267d599 Mon Sep 17 00:00:00 2001 From: Justin Clift Date: Tue, 25 Jul 2023 23:15:44 +1000 Subject: [PATCH 217/274] Bump style-loader to 3.3.3 in viz-lib (#6286) --- viz-lib/package.json | 2 +- viz-lib/yarn.lock | 22 +++++----------------- 2 files changed, 6 insertions(+), 18 deletions(-) diff --git a/viz-lib/package.json b/viz-lib/package.json index 244ee1f8ac..6bcacb40be 100644 --- a/viz-lib/package.json +++ b/viz-lib/package.json @@ -64,7 +64,7 @@ "npm-run-all": "^4.1.5", "prettier": "^1.19.1", "prop-types": "^15.7.2", - "style-loader": "^1.1.4", + "style-loader": "^3.3.3", "ts-migrate": "^0.1.35", "typescript": "^4.1.2", "webpack": "^5.88.2", diff --git a/viz-lib/yarn.lock b/viz-lib/yarn.lock index 80042f1513..f921dfdf6a 100644 --- a/viz-lib/yarn.lock +++ b/viz-lib/yarn.lock @@ -6834,7 +6834,7 @@ json5@^2.1.1: dependencies: minimist "^1.2.5" -json5@^2.1.2, json5@^2.2.2: +json5@^2.2.2: version "2.2.3" resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== @@ -6983,15 +6983,6 @@ loader-utils@^1.2.3, loader-utils@^1.4.0: emojis-list "^3.0.0" json5 "^1.0.1" -loader-utils@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.4.tgz#8b5cb38b5c34a9a018ee1fc0e6a066d1dfcc528c" - integrity sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw== - dependencies: - big.js "^5.2.2" - emojis-list "^3.0.0" - json5 "^2.1.2" - locate-path@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" @@ -9768,13 +9759,10 @@ strongly-connected-components@^1.0.1: resolved "https://registry.yarnpkg.com/strongly-connected-components/-/strongly-connected-components-1.0.1.tgz#0920e2b4df67c8eaee96c6b6234fe29e873dba99" integrity sha1-CSDitN9nyOrulsa2I0/inoc9upk= -style-loader@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-1.1.4.tgz#1ad81283cefe51096756fd62697258edad933230" - integrity sha512-SbBHRD8fwK3pX+4UDF4ETxUF0+rCvk29LWTTI7Rt0cgsDjAj3SWM76ByTe6u2+4IlJ/WwluB7wuslWETCoPQdg== - dependencies: - loader-utils "^2.0.0" - schema-utils "^2.6.5" +style-loader@^3.3.3: + version "3.3.3" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-3.3.3.tgz#bba8daac19930169c0c9c96706749a597ae3acff" + integrity sha512-53BiGLXAcll9maCYtZi2RCQZKa8NQQai5C4horqKyRmHj9H7QmcUyucrH+4KW/gBQbXM2AsB0axoEcFZPlfPcw== supercluster@^7.0.0: version "7.1.5" From 2795e1b7a08320849e86c36f94dad70ce69038a5 Mon Sep 17 00:00:00 2001 From: Eric Radman Date: Wed, 26 Jul 2023 00:07:16 -0400 Subject: [PATCH 218/274] Render counter widgets using relative font size (#6191) Using `transform` scales contents in in height and width, resulting in text wrapping even if there is horizontal space. --- .../app/components/dashboards/dashboard-grid.less | 1 - viz-lib/src/visualizations/counter/Renderer.tsx | 15 ++++++++------- viz-lib/src/visualizations/counter/render.less | 4 +--- 3 files changed, 9 insertions(+), 11 deletions(-) diff --git a/client/app/components/dashboards/dashboard-grid.less b/client/app/components/dashboards/dashboard-grid.less index 1f5d0b39bf..c76a05e08a 100644 --- a/client/app/components/dashboards/dashboard-grid.less +++ b/client/app/components/dashboards/dashboard-grid.less @@ -123,7 +123,6 @@ right: 10px; bottom: 15px; height: auto; - overflow: hidden; padding: 0; } } diff --git a/viz-lib/src/visualizations/counter/Renderer.tsx b/viz-lib/src/visualizations/counter/Renderer.tsx index 3c925e423e..6f22ac22e8 100644 --- a/viz-lib/src/visualizations/counter/Renderer.tsx +++ b/viz-lib/src/visualizations/counter/Renderer.tsx @@ -10,17 +10,18 @@ import "./render.less"; function getCounterStyles(scale: any) { return { - msTransform: `scale(${scale})`, - MozTransform: `scale(${scale})`, - WebkitTransform: `scale(${scale})`, - transform: `scale(${scale})`, + fontSize: `${scale}px`, }; } function getCounterScale(container: any) { - const inner = container.firstChild; - const scale = Math.min(container.offsetWidth / inner.offsetWidth, container.offsetHeight / inner.offsetHeight); - return Number(isFinite(scale) ? scale : 1).toFixed(2); // keep only two decimal places + // size of font in base container + // children use a relative font size (em) + if (container.closest('.visualization-preview')) { + return "60"; + } + const fontSize = container.clientHeight / 4.5; + return fontSize > 60 ? "60" : fontSize < 12 ? "12" : fontSize.toFixed(); } export default function Renderer({ data, options, visualizationName }: any) { diff --git a/viz-lib/src/visualizations/counter/render.less b/viz-lib/src/visualizations/counter/render.less index db19ccb723..253fac6fe8 100755 --- a/viz-lib/src/visualizations/counter/render.less +++ b/viz-lib/src/visualizations/counter/render.less @@ -2,15 +2,13 @@ display: block; text-align: center; padding: 15px 10px; - overflow: hidden; position: relative; .counter-visualization-content { margin: 0; padding: 0; - font-size: 80px; + font-size: 2em; line-height: normal; - overflow: hidden; display: flex; flex-direction: column; align-items: center; From 239f8abf704a1cf5b484fe39e2c4b321b507cb14 Mon Sep 17 00:00:00 2001 From: Justin Clift Date: Wed, 26 Jul 2023 20:33:58 +1000 Subject: [PATCH 219/274] Bump Cypress to 7.7.0 (#6289) --- .../integration/query/parameter_spec.js | 15 +- client/cypress/plugins/index.js | 10 - cypress.json | 2 +- package.json | 8 +- viz-lib/package.json | 1 - viz-lib/yarn.lock | 5 - yarn.lock | 772 +++++++++--------- 7 files changed, 411 insertions(+), 402 deletions(-) delete mode 100644 client/cypress/plugins/index.js diff --git a/client/cypress/integration/query/parameter_spec.js b/client/cypress/integration/query/parameter_spec.js index 0b4cc9f60c..93fcecb1de 100644 --- a/client/cypress/integration/query/parameter_spec.js +++ b/client/cypress/integration/query/parameter_spec.js @@ -1,4 +1,5 @@ import { dragParam } from "../../support/parameters"; +import dayjs from "dayjs"; function openAndSearchAntdDropdown(testId, paramOption) { cy.getByTestId(testId) @@ -310,7 +311,7 @@ describe("Parameter", () => { cy.getByTestId("ParameterApplyButton").click(); - cy.getByTestId("TableVisualization").should("contain", Cypress.moment(this.now).format("15/MM/YY")); + cy.getByTestId("TableVisualization").should("contain", dayjs(this.now).format("15/MM/YY")); }); it("allows picking a dynamic date", function() { @@ -322,7 +323,7 @@ describe("Parameter", () => { cy.getByTestId("ParameterApplyButton").click(); - cy.getByTestId("TableVisualization").should("contain", Cypress.moment(this.now).format("DD/MM/YY")); + cy.getByTestId("TableVisualization").should("contain", dayjs(this.now).format("DD/MM/YY")); }); it("sets dirty state when edited", () => { @@ -364,7 +365,7 @@ describe("Parameter", () => { cy.getByTestId("ParameterApplyButton").click(); - cy.getByTestId("TableVisualization").should("contain", Cypress.moment(this.now).format("YYYY-MM-15 HH:mm")); + cy.getByTestId("TableVisualization").should("contain", dayjs(this.now).format("YYYY-MM-15 HH:mm")); }); it("shows the current datetime after clicking in Now", function() { @@ -379,7 +380,7 @@ describe("Parameter", () => { cy.getByTestId("ParameterApplyButton").click(); - cy.getByTestId("TableVisualization").should("contain", Cypress.moment(this.now).format("YYYY-MM-DD HH:mm")); + cy.getByTestId("TableVisualization").should("contain", dayjs(this.now).format("YYYY-MM-DD HH:mm")); }); it("allows picking a dynamic date", function() { @@ -391,7 +392,7 @@ describe("Parameter", () => { cy.getByTestId("ParameterApplyButton").click(); - cy.getByTestId("TableVisualization").should("contain", Cypress.moment(this.now).format("YYYY-MM-DD HH:mm")); + cy.getByTestId("TableVisualization").should("contain", dayjs(this.now).format("YYYY-MM-DD HH:mm")); }); it("sets dirty state when edited", () => { @@ -449,7 +450,7 @@ describe("Parameter", () => { cy.getByTestId("ParameterApplyButton").click(); - const now = Cypress.moment(this.now); + const now = dayjs(this.now); cy.getByTestId("TableVisualization").should( "contain", now.format("YYYY-MM-15") + " - " + now.format("YYYY-MM-20") @@ -465,7 +466,7 @@ describe("Parameter", () => { cy.getByTestId("ParameterApplyButton").click(); - const lastMonth = Cypress.moment(this.now).subtract(1, "month"); + const lastMonth = dayjs(this.now).subtract(1, "month"); cy.getByTestId("TableVisualization").should( "contain", lastMonth.startOf("month").format("YYYY-MM-DD") + " - " + lastMonth.endOf("month").format("YYYY-MM-DD") diff --git a/client/cypress/plugins/index.js b/client/cypress/plugins/index.js deleted file mode 100644 index a11c0619e7..0000000000 --- a/client/cypress/plugins/index.js +++ /dev/null @@ -1,10 +0,0 @@ -const percyHealthCheck = require("@percy/cypress/task"); // eslint-disable-line import/no-extraneous-dependencies, import/no-unresolved - -module.exports = (on, config) => { - if (config.env.coverage) { - require("@cypress/code-coverage/task")(on, config); - } - on("task", percyHealthCheck); - - return config; -}; diff --git a/cypress.json b/cypress.json index 0eb1397b87..4d43b97289 100644 --- a/cypress.json +++ b/cypress.json @@ -4,7 +4,7 @@ "videoUploadOnPasses": false, "fixturesFolder": "client/cypress/fixtures", "integrationFolder": "client/cypress/integration", - "pluginsFile": "client/cypress/plugins/index.js", + "pluginsFile": false, "screenshotsFolder": "client/cypress/screenshots", "videosFolder": "client/cypress/videos", "supportFile": "client/cypress/support/index.js", diff --git a/package.json b/package.json index 3468eaeefc..eaecc1038c 100644 --- a/package.json +++ b/package.json @@ -60,7 +60,6 @@ "hoist-non-react-statics": "^3.3.0", "markdown": "0.5.0", "material-design-iconic-font": "^2.2.0", - "moment": "^2.29.4", "mousetrap": "^1.6.1", "mustache": "^2.3.0", "numeral": "^2.0.6", @@ -88,9 +87,9 @@ "@babel/preset-typescript": "^7.22.5", "@cypress/code-coverage": "^3.11.0", "@percy/agent": "0.24.3", - "@percy/cypress": "2.3.4", + "@percy/cypress": "^3.1.2", "@pmmmwh/react-refresh-webpack-plugin": "^0.5.10", - "@testing-library/cypress": "^7.0.2", + "@testing-library/cypress": "^8.0.7", "@types/classnames": "^2.2.10", "@types/hoist-non-react-statics": "^3.3.1", "@types/lodash": "^4.14.157", @@ -108,7 +107,8 @@ "babel-plugin-transform-builtin-extend": "^1.1.2", "copy-webpack-plugin": "^6.4.1", "css-loader": "^1.0.1", - "cypress": "6.0.1", + "cypress": "7.7.0", + "dayjs": "^1.11.9", "enzyme": "^3.8.0", "enzyme-adapter-react-16": "^1.7.1", "enzyme-to-json": "^3.3.5", diff --git a/viz-lib/package.json b/viz-lib/package.json index 6bcacb40be..199e09f410 100644 --- a/viz-lib/package.json +++ b/viz-lib/package.json @@ -90,7 +90,6 @@ "leaflet-fullscreen": "^1.0.2", "leaflet.markercluster": "^1.1.0", "lodash": "^4.17.10", - "moment": "^2.19.3", "numeral": "^2.0.6", "plotly.js": "1.54.4", "react-pivottable": "^0.9.0", diff --git a/viz-lib/yarn.lock b/viz-lib/yarn.lock index f921dfdf6a..cc84727123 100644 --- a/viz-lib/yarn.lock +++ b/viz-lib/yarn.lock @@ -7303,11 +7303,6 @@ mkdirp@^1.0.4: resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== -moment@^2.19.3: - version "2.29.4" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.4.tgz#3dbe052889fe7c1b2ed966fcb3a77328964ef108" - integrity sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w== - monotone-convex-hull-2d@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/monotone-convex-hull-2d/-/monotone-convex-hull-2d-1.0.1.tgz#47f5daeadf3c4afd37764baa1aa8787a40eee08c" diff --git a/yarn.lock b/yarn.lock index e71c1d066d..9acfd43086 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1147,6 +1147,13 @@ dependencies: regenerator-runtime "^0.13.4" +"@babel/runtime@^7.14.6": + version "7.22.6" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.6.tgz#57d64b9ae3cff1d67eb067ae117dac087f5bd438" + integrity sha512-wDb5pWm4WDdF6LFUde3Jl8WzPA+3ZbxYqkC6xAXuD3irdEHN1k0NfTRrJD8ZD378SJ61miMLCqIOXYhd8x+AJQ== + dependencies: + regenerator-runtime "^0.13.11" + "@babel/runtime@^7.4.5": version "7.7.4" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.7.4.tgz#b23a856751e4bf099262f867767889c0e3fe175b" @@ -1243,16 +1250,6 @@ js-yaml "4.1.0" nyc "15.1.0" -"@cypress/listr-verbose-renderer@^0.4.1": - version "0.4.1" - resolved "https://registry.yarnpkg.com/@cypress/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz#a77492f4b11dcc7c446a34b3e28721afd33c642a" - integrity sha1-p3SS9LEdzHxEajSz4ochr9M8ZCo= - dependencies: - chalk "^1.1.3" - cli-cursor "^1.0.2" - date-fns "^1.27.2" - figures "^1.7.0" - "@cypress/request@^2.88.5": version "2.88.5" resolved "https://registry.yarnpkg.com/@cypress/request/-/request-2.88.5.tgz#8d7ecd17b53a849cfd5ab06d5abe7d84976375d7" @@ -1479,17 +1476,6 @@ "@types/istanbul-reports" "^1.1.1" "@types/yargs" "^13.0.0" -"@jest/types@^26.6.2": - version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-26.6.2.tgz#bef5a532030e1d88a2f5a6d933f84e97226ed48e" - integrity sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^15.0.0" - chalk "^4.0.0" - "@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": version "0.3.3" resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098" @@ -1742,7 +1728,7 @@ resolved "https://registry.yarnpkg.com/@oclif/screen/-/screen-1.0.4.tgz#b740f68609dfae8aa71c3a6cab15d816407ba493" integrity sha512-60CHpq+eqnTxLZQ4PGHYNwUX572hgpMHGPtTWMjdTMsAvlm69lZV/4ly6O3sAYkomo4NggGcomrDpBe34rxUqw== -"@percy/agent@0.24.3", "@percy/agent@~0": +"@percy/agent@0.24.3": version "0.24.3" resolved "https://registry.yarnpkg.com/@percy/agent/-/agent-0.24.3.tgz#7f40dc1d8e72a2318a119c6cdfa3ce4049726c2d" integrity sha512-gSx1qqtTMLix/ZzGo9taz02zKR9CGAt5megYW3jPW+DhyTaHSHoQgGcEI41el7T7BqB4FbfS0rkeG2B991mNcw== @@ -1770,13 +1756,17 @@ which "^2.0.1" winston "^3.0.0" -"@percy/cypress@2.3.4": - version "2.3.4" - resolved "https://registry.yarnpkg.com/@percy/cypress/-/cypress-2.3.4.tgz#9605fd848ab27aab795515a22a8868078ba57838" - integrity sha512-UiVnLdcgRnOD1C5orkQiCQC1OFcb/Kt4CWSOVg61JkWNgeWb03os9HN2vjlwgb11eCR8gLHBs+O7T9MRMy28Qg== +"@percy/cypress@^3.1.2": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@percy/cypress/-/cypress-3.1.2.tgz#a087d3c59a6b155eab5fdb4c237526b9cfacbc22" + integrity sha512-JXrGDZbqwkzQd2h5T5D7PvqoucNaiMh4ChPp8cLQiEtRuLHta9nf1lEuXH+jnatGL2j+3jJFIHJ0L7XrgVnvQA== dependencies: - "@percy/agent" "~0" - axios "^0.21.0" + "@percy/sdk-utils" "^1.3.1" + +"@percy/sdk-utils@^1.3.1": + version "1.26.2" + resolved "https://registry.yarnpkg.com/@percy/sdk-utils/-/sdk-utils-1.26.2.tgz#1a02b00f63c6244b10c0c5151901d5b41ea7ca47" + integrity sha512-sqxex+UnUoKN046jZS8UHB1YnQuJ0/lzMQaCdNKrF1F/U/1j/LrGywjXI9+NsGa29FdcZfU17530qt961sPgow== "@plotly/d3-sankey-circular@0.33.1": version "0.33.1" @@ -1851,7 +1841,6 @@ leaflet-fullscreen "^1.0.2" leaflet.markercluster "^1.1.0" lodash "^4.17.10" - moment "^2.19.3" numeral "^2.0.6" plotly.js "1.54.4" react-pivottable "^0.9.0" @@ -1860,34 +1849,27 @@ use-debounce "^3.4.1" use-media "^1.4.0" -"@samverschueren/stream-to-observable@^0.3.0": - version "0.3.1" - resolved "https://registry.yarnpkg.com/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.1.tgz#a21117b19ee9be70c379ec1877537ef2e1c63301" - integrity sha512-c/qwwcHyafOQuVQJj0IlBjf5yYgBI7YPJ77k4fOJYesb41jio65eaJODRUmfYKhTOFBrIZ66kgvGPlNbjuoRdQ== +"@testing-library/cypress@^8.0.7": + version "8.0.7" + resolved "https://registry.yarnpkg.com/@testing-library/cypress/-/cypress-8.0.7.tgz#18315eba3cf8852808afadf122e4858406384015" + integrity sha512-3HTV725rOS+YHve/gD9coZp/UcPK5xhr4H0GMnq/ni6USdtzVtSOG9WBFtd8rYnrXk8rrGD+0toRFYouJNIG0Q== dependencies: - any-observable "^0.3.0" + "@babel/runtime" "^7.14.6" + "@testing-library/dom" "^8.1.0" -"@testing-library/cypress@^7.0.2": - version "7.0.2" - resolved "https://registry.yarnpkg.com/@testing-library/cypress/-/cypress-7.0.2.tgz#a97bc7dee8756aff195e5be57db2889fe292f923" - integrity sha512-avBCbcCMPFHvWg4BBCA/pIh3MCwcKoJ+rc3XyZdKC5mFYPV7edjW3s4KZx/x3klXuttyuM/UesRhbSj4l5aQbw== - dependencies: - "@babel/runtime" "^7.12.5" - "@testing-library/dom" "^7.26.6" - -"@testing-library/dom@^7.26.6": - version "7.28.1" - resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-7.28.1.tgz#dea78be6e1e6db32ddcb29a449e94d9700c79eb9" - integrity sha512-acv3l6kDwZkQif/YqJjstT3ks5aaI33uxGNVIQmdKzbZ2eMKgg3EV2tB84GDdc72k3Kjhl6mO8yUt6StVIdRDg== +"@testing-library/dom@^8.1.0": + version "8.20.1" + resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-8.20.1.tgz#2e52a32e46fc88369eef7eef634ac2a192decd9f" + integrity sha512-/DiOQ5xBxgdYRC8LNk7U+RWat0S3qRLeIw3ZIkMQ9kkVlRmwD/Eg8k8CqIpD6GW7u20JIUOfMKbxtiLutpjQ4g== dependencies: "@babel/code-frame" "^7.10.4" "@babel/runtime" "^7.12.5" - "@types/aria-query" "^4.2.0" - aria-query "^4.2.2" + "@types/aria-query" "^5.0.1" + aria-query "5.1.3" chalk "^4.1.0" - dom-accessibility-api "^0.5.4" - lz-string "^1.4.4" - pretty-format "^26.6.2" + dom-accessibility-api "^0.5.9" + lz-string "^1.5.0" + pretty-format "^27.0.2" "@turf/area@^6.0.1": version "6.0.1" @@ -1925,10 +1907,10 @@ dependencies: "@turf/helpers" "6.x" -"@types/aria-query@^4.2.0": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@types/aria-query/-/aria-query-4.2.0.tgz#14264692a9d6e2fa4db3df5e56e94b5e25647ac0" - integrity sha512-iIgQNzCm0v7QMhhe4Jjn9uRh+I6GoPmt03CbEtwx3ao8/EfoQcmgtqH4vQ5Db/lxiIGaWDv6nwvunuh0RyX0+A== +"@types/aria-query@^5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@types/aria-query/-/aria-query-5.0.1.tgz#3286741fb8f1e1580ac28784add4c7a1d49bdfbc" + integrity sha512-XTIieEY+gvJ39ChLcB4If5zHtPxt3Syj5rgZR+e1ctpmK8NjPf0zFqsz4JpLJT0xla9GFDKjy8Cpu331nrmE1Q== "@types/babel__core@^7.1.0": version "7.20.1" @@ -2076,13 +2058,6 @@ "@types/istanbul-lib-coverage" "*" "@types/istanbul-lib-report" "*" -"@types/istanbul-reports@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz#508b13aa344fa4976234e75dddcc34925737d821" - integrity sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA== - dependencies: - "@types/istanbul-lib-report" "*" - "@types/json-schema@^7.0.3": version "7.0.3" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.3.tgz#bdfd69d61e464dcc81b25159c270d75a73c1a636" @@ -2128,6 +2103,11 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-11.9.5.tgz#011eece9d3f839a806b63973e228f85967b79ed3" integrity sha512-vVjM0SVzgaOUpflq4GYBvCpozes8OgIIS5gVXVka+OfK3hvnkC1i93U8WiY2OtNE4XUWyyy/86Kf6e0IHTQw1Q== +"@types/node@^14.14.31": + version "14.18.54" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.18.54.tgz#fc304bd66419030141fa997dc5a9e0e374029ae8" + integrity sha512-uq7O52wvo2Lggsx1x21tKZgqkJpvwCseBBPtX/nKQfpVlEsLOb11zZ1CRsWUKvJF0+lzuA9jwvA7Pr2Wt7i3xw== + "@types/prop-types@*", "@types/prop-types@^15.7.3": version "15.7.3" resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.3.tgz#2ab0d5da2e5815f94b0b9d4b95d1e5f243ab2ca7" @@ -2187,10 +2167,10 @@ "@types/mime" "*" "@types/node" "*" -"@types/sinonjs__fake-timers@^6.0.1": - version "6.0.2" - resolved "https://registry.yarnpkg.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-6.0.2.tgz#3a84cf5ec3249439015e14049bd3161419bf9eae" - integrity sha512-dIPoZ3g5gcx9zZEszaxLSVTvMReD3xxyyDnQUjA6IYDG9Ba2AV0otMPs+77sG9ojB4Qr2N2Vk5RnKeuA0X/0bg== +"@types/sinonjs__fake-timers@^6.0.2": + version "6.0.4" + resolved "https://registry.yarnpkg.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-6.0.4.tgz#0ecc1b9259b76598ef01942f547904ce61a6a77d" + integrity sha512-IFQTJARgMUBF+xVd2b+hIgXWrZEjND3vJtRCvIelcFB5SIXfjV4bOHbHJ0eXKh+0COrBRc8MqteKAz/j88rE0A== "@types/sizzle@^2.3.2": version "2.3.2" @@ -2271,12 +2251,12 @@ dependencies: "@types/yargs-parser" "*" -"@types/yargs@^15.0.0": - version "15.0.11" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.11.tgz#361d7579ecdac1527687bcebf9946621c12ab78c" - integrity sha512-jfcNBxHFYJ4nPIacsi3woz1+kvUO6s1CyeEhtnDHBjHUMNj5UlW2GynmnSgiJJEdNg9yW5C8lfoNRZrHGv5EqA== +"@types/yauzl@^2.9.1": + version "2.10.0" + resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.10.0.tgz#b3248295276cf8c6f153ebe6a9aba0c988cb2599" + integrity sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw== dependencies: - "@types/yargs-parser" "*" + "@types/node" "*" "@typescript-eslint/eslint-plugin@^2.10.0": version "2.10.0" @@ -2671,6 +2651,11 @@ alpha-shape@^1.0.0: alpha-complex "^1.0.0" simplicial-complex-boundary "^1.0.0" +ansi-colors@^4.1.1: + version "4.1.3" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" + integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== + ansi-escapes@^3.0.0, ansi-escapes@^3.1.0: version "3.2.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" @@ -2683,6 +2668,13 @@ ansi-escapes@^4.2.1: dependencies: type-fest "^0.8.1" +ansi-escapes@^4.3.0: + version "4.3.2" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== + dependencies: + type-fest "^0.21.3" + ansi-html-community@^0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz#69fbc4d6ccbe383f9736934ae34c3f8290f1bf41" @@ -2708,6 +2700,11 @@ ansi-regex@^5.0.0: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" @@ -2727,6 +2724,11 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0: dependencies: color-convert "^2.0.1" +ansi-styles@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" + integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== + ansicolors@~0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/ansicolors/-/ansicolors-0.3.2.tgz#665597de86a9ffe3aa9bfbe6cae5c6ea426b4979" @@ -2781,11 +2783,6 @@ antd@^4.4.3: scroll-into-view-if-needed "^2.2.25" warning "^4.0.3" -any-observable@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/any-observable/-/any-observable-0.3.0.tgz#af933475e5806a67d0d7df090dd5e8bef65d119b" - integrity sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog== - anymatch@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" @@ -2822,10 +2819,10 @@ aproba@^1.1.1: resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== -arch@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/arch/-/arch-2.1.2.tgz#0c52bbe7344bb4fa260c443d2cbad9c00ff2f0bf" - integrity sha512-NTBIIbAfkJeIletyABbVtdPgeKfDafR+1mZV/AyyfC1UkVkp9iUjV+wwmqtUgphHYajbI86jejBJp5e+jkGTiQ== +arch@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/arch/-/arch-2.2.0.tgz#1bc47818f305764f23ab3306b0bfc086c5a29d11" + integrity sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ== archy@^1.0.0: version "1.0.0" @@ -2844,6 +2841,13 @@ argparse@^2.0.1: resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== +aria-query@5.1.3: + version "5.1.3" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.1.3.tgz#19db27cd101152773631396f7a95a3b58c22c35e" + integrity sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ== + dependencies: + deep-equal "^2.0.5" + aria-query@^4.2.2: version "4.2.2" resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-4.2.2.tgz#0d2ca6c9aceb56b8977e9fed6aed7e15bbd2f83b" @@ -3036,6 +3040,11 @@ astral-regex@^1.0.0: resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== +astral-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" + integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== + async-each@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" @@ -3133,13 +3142,6 @@ axios@^0.19.0: dependencies: follow-redirects "1.5.10" -axios@^0.21.0: - version "0.21.4" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575" - integrity sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg== - dependencies: - follow-redirects "^1.14.0" - axobject-query@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be" @@ -3449,7 +3451,7 @@ bl@^1.0.0: readable-stream "^2.3.5" safe-buffer "^5.1.1" -blob-util@2.0.2: +blob-util@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/blob-util/-/blob-util-2.0.2.tgz#3b4e3c281111bb7f11128518006cdc60b403a1eb" integrity sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ== @@ -3943,7 +3945,7 @@ chalk@4.1.2: ansi-styles "^4.1.0" supports-color "^7.1.0" -chalk@^1.0.0, chalk@^1.1.3: +chalk@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= @@ -4077,6 +4079,11 @@ ci-info@^2.0.0: resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== +ci-info@^3.2.0: + version "3.8.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.8.0.tgz#81408265a5380c929f0bc665d62256628ce9ef91" + integrity sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw== + cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" @@ -4152,20 +4159,6 @@ clean-stack@^3.0.0: dependencies: escape-string-regexp "4.0.0" -cli-cursor@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987" - integrity sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc= - dependencies: - restore-cursor "^1.0.1" - -cli-cursor@^2.0.0, cli-cursor@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" - integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= - dependencies: - restore-cursor "^2.0.0" - cli-cursor@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" @@ -4183,13 +4176,13 @@ cli-table3@~0.6.0: optionalDependencies: colors "^1.1.2" -cli-truncate@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-0.2.1.tgz#9f15cfbb0705005369216c626ac7d05ab90dd574" - integrity sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ= +cli-truncate@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7" + integrity sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg== dependencies: - slice-ansi "0.0.4" - string-width "^1.0.1" + slice-ansi "^3.0.0" + string-width "^4.2.0" cli-ux@^4.9.0: version "4.9.3" @@ -4256,11 +4249,6 @@ co@^4.6.0: resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== -code-point-at@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" - integrity sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA== - collection-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" @@ -4358,7 +4346,7 @@ color@3.0.x: color-convert "^1.9.1" color-string "^1.5.2" -colorette@^2.0.10: +colorette@^2.0.10, colorette@^2.0.16: version "2.0.20" resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== @@ -4911,45 +4899,48 @@ cyclist@^1.0.1: resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.2.tgz#673b5f233bf34d8e602b949429f8171d9121bea3" integrity sha512-0sVXIohTfLqVIW3kb/0n6IiWF3Ifj5nm2XaSrLq2DI6fKIGa2fYAZdk917rUneaeLVpYfFcyXE2ft0fe3remsA== -cypress@6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/cypress/-/cypress-6.0.1.tgz#86857ca2f527c3723575737deab42fd8f2a209df" - integrity sha512-3xtQZ0YM65soLgKQUgn2wg2IbWsM6A2yBg6L4RF31mZHr5LNKdO2/9sgiwxEVMKu2C2m6+IQ75zHP41kZP5rPg== +cypress@7.7.0: + version "7.7.0" + resolved "https://registry.yarnpkg.com/cypress/-/cypress-7.7.0.tgz#0839ae28e5520536f9667d6c9ae81496b3836e64" + integrity sha512-uYBYXNoI5ym0UxROwhQXWTi8JbUEjpC6l/bzoGZNxoKGsLrC1SDPgIDJMgLX/MeEdPL0UInXLDUWN/rSyZUCjQ== dependencies: - "@cypress/listr-verbose-renderer" "^0.4.1" "@cypress/request" "^2.88.5" "@cypress/xvfb" "^1.2.4" - "@types/sinonjs__fake-timers" "^6.0.1" + "@types/node" "^14.14.31" + "@types/sinonjs__fake-timers" "^6.0.2" "@types/sizzle" "^2.3.2" - arch "^2.1.2" - blob-util "2.0.2" + arch "^2.2.0" + blob-util "^2.0.2" bluebird "^3.7.2" cachedir "^2.3.0" chalk "^4.1.0" check-more-types "^2.24.0" + cli-cursor "^3.1.0" cli-table3 "~0.6.0" commander "^5.1.0" common-tags "^1.8.0" - debug "^4.1.1" - eventemitter2 "^6.4.2" - execa "^4.0.2" + dayjs "^1.10.4" + debug "^4.3.2" + enquirer "^2.3.6" + eventemitter2 "^6.4.3" + execa "4.1.0" executable "^4.1.1" - extract-zip "^1.7.0" - fs-extra "^9.0.1" + extract-zip "2.0.1" + figures "^3.2.0" + fs-extra "^9.1.0" getos "^3.2.1" - is-ci "^2.0.0" - is-installed-globally "^0.3.2" + is-ci "^3.0.0" + is-installed-globally "~0.4.0" lazy-ass "^1.6.0" - listr "^0.14.3" - lodash "^4.17.19" + listr2 "^3.8.3" + lodash "^4.17.21" log-symbols "^4.0.0" minimist "^1.2.5" - moment "^2.27.0" ospath "^1.2.2" - pretty-bytes "^5.4.1" - ramda "~0.26.1" + pretty-bytes "^5.6.0" + ramda "~0.27.1" request-progress "^3.0.0" - supports-color "^7.2.0" + supports-color "^8.1.1" tmp "~0.2.1" untildify "^4.0.0" url "^0.11.0" @@ -5060,17 +5051,12 @@ data-urls@^1.0.0: whatwg-mimetype "^2.2.0" whatwg-url "^7.0.0" -date-fns@^1.27.2: - version "1.30.1" - resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.30.1.tgz#2e71bf0b119153dbb4cc4e88d9ea5acfb50dc05c" - integrity sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw== - date-now@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" integrity sha1-6vQ5/U1ISK105cx9vvIAZyueNFs= -dayjs@1.11.9: +dayjs@1.11.9, dayjs@^1.10.4, dayjs@^1.11.9: version "1.11.9" resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.9.tgz#9ca491933fadd0a60a2c19f6c237c03517d71d1a" integrity sha512-QvzAURSbQ0pKdIye2txOzNaHmxtUBXerpY0FJsFXUMKbIZeFm5ht1LS/jFsrncjnmtv8HsG0W2g6c0zUjZWmpA== @@ -5089,7 +5075,7 @@ debug@4: dependencies: ms "2.1.2" -debug@4.3.4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.4: +debug@4.3.4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.4: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== @@ -5127,6 +5113,30 @@ decode-uri-component@^0.2.0: resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9" integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ== +deep-equal@^2.0.5: + version "2.2.2" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.2.2.tgz#9b2635da569a13ba8e1cc159c2f744071b115daa" + integrity sha512-xjVyBf0w5vH0I42jdAZzOKVldmPgSulmiyPRywoyq7HXC9qdgo17kxJE+rdnif5Tz6+pIrpJI8dCpMNLIGkUiA== + dependencies: + array-buffer-byte-length "^1.0.0" + call-bind "^1.0.2" + es-get-iterator "^1.1.3" + get-intrinsic "^1.2.1" + is-arguments "^1.1.1" + is-array-buffer "^3.0.2" + is-date-object "^1.0.5" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.2" + isarray "^2.0.5" + object-is "^1.1.5" + object-keys "^1.1.1" + object.assign "^4.1.4" + regexp.prototype.flags "^1.5.0" + side-channel "^1.0.4" + which-boxed-primitive "^1.0.2" + which-collection "^1.0.1" + which-typed-array "^1.1.9" + deep-equal@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" @@ -5324,10 +5334,10 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" -dom-accessibility-api@^0.5.4: - version "0.5.4" - resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.5.4.tgz#b06d059cdd4a4ad9a79275f9d414a5c126241166" - integrity sha512-TvrjBckDy2c6v6RLxPv5QXOnU+SmF9nBII5621Ve5fu6Z/BDrENurBEvlC1f44lKEUVqOpK4w9E5Idc5/EgkLQ== +dom-accessibility-api@^0.5.9: + version "0.5.16" + resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz#5a7429e6066eb3664d911e33fb0e45de8eb08453" + integrity sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg== dom-align@^1.7.0: version "1.12.0" @@ -5527,11 +5537,6 @@ electron-to-chromium@^1.4.431: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.468.tgz#3cbf64ad67d9f12bfe69fefe5eb1935ec4f6ab7a" integrity sha512-6M1qyhaJOt7rQtNti1lBA0GwclPH+oKCmsra/hkcWs5INLxfXXD/dtdnaKUYQu/pjOBP/8Osoe4mAcNvvzoFag== -elegant-spinner@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/elegant-spinner/-/elegant-spinner-1.0.1.tgz#db043521c95d7e303fd8f345bedc3349cfb0729e" - integrity sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4= - element-size@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/element-size/-/element-size-1.1.1.tgz#64e5f159d97121631845bcbaecaf279c39b5e34e" @@ -5603,6 +5608,13 @@ enhanced-resolve@^4.1.1, enhanced-resolve@^4.5.0: memory-fs "^0.5.0" tapable "^1.0.0" +enquirer@^2.3.6: + version "2.3.6" + resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" + integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== + dependencies: + ansi-colors "^4.1.1" + entities@^1.1.1, entities@~1.1.1: version "1.1.2" resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" @@ -5806,6 +5818,21 @@ es-array-method-boxes-properly@^1.0.0: resolved "https://registry.yarnpkg.com/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz#873f3e84418de4ee19c5be752990b2e44718d09e" integrity sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA== +es-get-iterator@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.3.tgz#3ef87523c5d464d41084b2c3c9c214f1199763d6" + integrity sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.3" + has-symbols "^1.0.3" + is-arguments "^1.1.1" + is-map "^2.0.2" + is-set "^2.0.2" + is-string "^1.0.7" + isarray "^2.0.5" + stop-iteration-iterator "^1.0.0" + es-set-tostringtag@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz#338d502f6f674301d710b80c8592de8a15f09cd8" @@ -6196,10 +6223,10 @@ etag@~1.8.1: resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= -eventemitter2@^6.4.2: - version "6.4.3" - resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-6.4.3.tgz#35c563619b13f3681e7eb05cbdaf50f56ba58820" - integrity sha512-t0A2msp6BzOf+QAcI6z9XMktLj52OjGQg+8SJH6v5+3uxNpWYRR3wQmfA+6xtMU9kOC59qk9licus5dYcrYkMQ== +eventemitter2@^6.4.3: + version "6.4.9" + resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-6.4.9.tgz#41f2750781b4230ed58827bc119d293471ecb125" + integrity sha512-JEPTiaOt9f04oa6NOkc4aH+nVp5I3wEjpHbIPqfgCdD5v5bUzy7xQqwcVO2aDQgOWhI28da57HksMrzK9HlRxg== eventemitter3@^4.0.0: version "4.0.7" @@ -6257,21 +6284,6 @@ execa@^1.0.0: signal-exit "^3.0.0" strip-eof "^1.0.0" -execa@^4.0.2: - version "4.0.3" - resolved "https://registry.yarnpkg.com/execa/-/execa-4.0.3.tgz#0a34dabbad6d66100bd6f2c576c8669403f317f2" - integrity sha512-WFDXGHckXPWZX19t1kCsXzOpqX9LWYNqn4C+HqZlk/V0imTkzJZqf87ZBhvpHaftERYknpk0fjSylnXVlVgI0A== - dependencies: - cross-spawn "^7.0.0" - get-stream "^5.0.0" - human-signals "^1.1.1" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^4.0.0" - onetime "^5.1.0" - signal-exit "^3.0.2" - strip-final-newline "^2.0.0" - execa@^5.0.0: version "5.1.1" resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" @@ -6294,11 +6306,6 @@ executable@^4.1.1: dependencies: pify "^2.2.0" -exit-hook@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8" - integrity sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g= - exit@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" @@ -6433,7 +6440,18 @@ extract-stack@^1.0.0: resolved "https://registry.yarnpkg.com/extract-stack/-/extract-stack-1.0.0.tgz#b97acaf9441eea2332529624b732fc5a1c8165fa" integrity sha1-uXrK+UQe6iMyUpYktzL8WhyBZfo= -extract-zip@^1.6.6, extract-zip@^1.7.0: +extract-zip@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-2.0.1.tgz#663dca56fe46df890d5f131ef4a06d22bb8ba13a" + integrity sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg== + dependencies: + debug "^4.1.1" + get-stream "^5.1.0" + yauzl "^2.10.0" + optionalDependencies: + "@types/yauzl" "^2.9.1" + +extract-zip@^1.6.6: version "1.7.0" resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-1.7.0.tgz#556cc3ae9df7f452c493a0cfb51cc30277940927" integrity sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA== @@ -6556,21 +6574,6 @@ figgy-pudding@^3.5.1: resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== -figures@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" - integrity sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4= - dependencies: - escape-string-regexp "^1.0.5" - object-assign "^4.1.0" - -figures@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" - integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= - dependencies: - escape-string-regexp "^1.0.5" - figures@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/figures/-/figures-3.1.0.tgz#4b198dd07d8d71530642864af2d45dd9e459c4ec" @@ -6578,6 +6581,13 @@ figures@^3.0.0: dependencies: escape-string-regexp "^1.0.5" +figures@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" + integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== + dependencies: + escape-string-regexp "^1.0.5" + file-entry-cache@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" @@ -6787,7 +6797,7 @@ follow-redirects@^1.0.0: resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.5.tgz#f09a5848981d3c772b5392309778523f8d85c381" integrity sha512-wtphSXy7d4/OR+MvIFbCVBDzZ5520qV8XfPklSN5QtxuMUJZ+b0Wnst1e1lCDocfzuCkHqj8k0FpZqO+UIaKNA== -follow-redirects@^1.14.0, follow-redirects@^1.14.9: +follow-redirects@^1.14.9: version "1.15.2" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== @@ -6922,6 +6932,16 @@ fs-extra@^9.0.1: jsonfile "^6.0.1" universalify "^1.0.0" +fs-extra@^9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + fs-minipass@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" @@ -7072,7 +7092,7 @@ get-stream@^4.0.0: dependencies: pump "^3.0.0" -get-stream@^5.0.0: +get-stream@^5.0.0, get-stream@^5.1.0: version "5.2.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== @@ -7491,7 +7511,7 @@ glob-parent@^3.1.0: is-glob "^3.1.0" path-dirname "^1.0.0" -glob-parent@^5.0.0, glob-parent@^5.1.0, glob-parent@~5.1.0, glob-parent@^5.1.1, glob-parent@^5.1.2, glob-parent@~5.1.2: +glob-parent@^5.0.0, glob-parent@^5.1.0, glob-parent@^5.1.1, glob-parent@^5.1.2, glob-parent@~5.1.0, glob-parent@~5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== @@ -7522,12 +7542,12 @@ glob@^7.1.4, glob@^7.1.6, glob@~7.1.6: once "^1.3.0" path-is-absolute "^1.0.0" -global-dirs@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-2.0.1.tgz#acdf3bb6685bcd55cb35e8a052266569e9469201" - integrity sha512-5HqUqdhkEovj2Of/ms3IeS/EekcO54ytHRLV4PEY2rhRwrHXLQjeVEES0Lhka0xwNDtGYn58wyC4s5+MHsOO6A== +global-dirs@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-3.0.1.tgz#0c488971f066baceda21447aecb1a8b911d22485" + integrity sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA== dependencies: - ini "^1.3.5" + ini "2.0.0" global-modules@^1.0.0: version "1.0.0" @@ -8325,7 +8345,7 @@ incremental-convex-hull@^1.0.1: robust-orientation "^1.1.2" simplicial-complex "^1.0.0" -indent-string@^3.0.0, indent-string@^3.2.0: +indent-string@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" integrity sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok= @@ -8363,6 +8383,11 @@ inherits@2.0.3: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= +ini@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5" + integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA== + ini@^1.3.4, ini@^1.3.5: version "1.3.8" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" @@ -8392,7 +8417,7 @@ insert-css@^2.0.0: resolved "https://registry.yarnpkg.com/insert-css/-/insert-css-2.0.0.tgz#eb5d1097b7542f4c79ea3060d3aee07d053880f4" integrity sha1-610Ql7dUL0x56jBg067gfQU4gPQ= -internal-slot@^1.0.5: +internal-slot@^1.0.4, internal-slot@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.5.tgz#f2a2ee21f668f8627a4667f309dc0f4fb6674986" integrity sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ== @@ -8459,6 +8484,14 @@ is-arguments@^1.0.4: resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3" integrity sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA== +is-arguments@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" + integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.2.tgz#f2653ced8412081638ecb0ebbd0c41c6e0aecbbe" @@ -8559,6 +8592,13 @@ is-ci@^2.0.0: dependencies: ci-info "^2.0.0" +is-ci@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-3.0.1.tgz#db6ecbed1bd659c43dac0f45661e7674103d1867" + integrity sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ== + dependencies: + ci-info "^3.2.0" + is-core-module@^2.11.0: version "2.12.1" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.12.1.tgz#0c0b6885b6f80011c71541ce15c8d66cf5a4f9fd" @@ -8580,7 +8620,7 @@ is-data-descriptor@^1.0.0: dependencies: kind-of "^6.0.0" -is-date-object@^1.0.1: +is-date-object@^1.0.1, is-date-object@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== @@ -8652,13 +8692,6 @@ is-float-array@^1.0.0: resolved "https://registry.yarnpkg.com/is-float-array/-/is-float-array-1.0.0.tgz#96d67b1cbadf47ab1e05be208933acd386978a09" integrity sha512-4ew1Sx6B6kEAl3T3NOM0yB94J3NZnBdNt4paw0e8nY73yHHTeTEhyQ3Lj7EQEnv5LD+GxNTaT4L46jcKjjpLiQ== -is-fullwidth-code-point@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" - integrity sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw== - dependencies: - number-is-nan "^1.0.0" - is-fullwidth-code-point@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" @@ -8700,13 +8733,18 @@ is-iexplorer@^1.0.0: resolved "https://registry.yarnpkg.com/is-iexplorer/-/is-iexplorer-1.0.0.tgz#1d72bc66d3fe22eaf6170dda8cf10943248cfc76" integrity sha1-HXK8ZtP+Iur2Fw3ajPEJQySM/HY= -is-installed-globally@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.3.2.tgz#fd3efa79ee670d1187233182d5b0a1dd00313141" - integrity sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g== +is-installed-globally@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.4.0.tgz#9a0fd407949c30f86eb6959ef1b7994ed0b7b520" + integrity sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ== dependencies: - global-dirs "^2.0.1" - is-path-inside "^3.0.1" + global-dirs "^3.0.0" + is-path-inside "^3.0.2" + +is-map@^2.0.1, is-map@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.2.tgz#00922db8c9bf73e81b7a335827bc2a43f2b91127" + integrity sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg== is-mobile@^2.2.1: version "2.2.1" @@ -8752,17 +8790,10 @@ is-obj@^1.0.1: resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= -is-observable@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-observable/-/is-observable-1.1.0.tgz#b3e986c8f44de950867cab5403f5a3465005975e" - integrity sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA== - dependencies: - symbol-observable "^1.1.0" - -is-path-inside@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.2.tgz#f5220fc82a3e233757291dddc9c5877f2a1f3017" - integrity sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg== +is-path-inside@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== is-plain-obj@^1.1.0: version "1.1.0" @@ -8809,6 +8840,11 @@ is-regex@^1.1.1: call-bind "^1.0.2" has-symbols "^1.0.1" +is-set@^2.0.1, is-set@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.2.tgz#90755fa4c2562dc1c5d4024760d6119b94ca18ec" + integrity sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g== + is-shared-array-buffer@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" @@ -8872,6 +8908,11 @@ is-typedarray@^1.0.0, is-typedarray@~1.0.0: resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= +is-weakmap@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.1.tgz#5008b59bdc43b698201d18f62b37b2ca243e8cf2" + integrity sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA== + is-weakref@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" @@ -8879,6 +8920,14 @@ is-weakref@^1.0.2: dependencies: call-bind "^1.0.2" +is-weakset@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-weakset/-/is-weakset-2.0.2.tgz#4569d67a747a1ce5a994dfd4ef6dcea76e7c0a1d" + integrity sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.1" + is-windows@^1.0.1, is-windows@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" @@ -9717,49 +9766,19 @@ levn@^0.3.0, levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" -listr-silent-renderer@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz#924b5a3757153770bf1a8e3fbf74b8bbf3f9242e" - integrity sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4= - -listr-update-renderer@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/listr-update-renderer/-/listr-update-renderer-0.5.0.tgz#4ea8368548a7b8aecb7e06d8c95cb45ae2ede6a2" - integrity sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA== - dependencies: - chalk "^1.1.3" - cli-truncate "^0.2.1" - elegant-spinner "^1.0.1" - figures "^1.7.0" - indent-string "^3.0.0" - log-symbols "^1.0.2" - log-update "^2.3.0" - strip-ansi "^3.0.1" - -listr-verbose-renderer@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/listr-verbose-renderer/-/listr-verbose-renderer-0.5.0.tgz#f1132167535ea4c1261102b9f28dac7cba1e03db" - integrity sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw== - dependencies: - chalk "^2.4.1" - cli-cursor "^2.1.0" - date-fns "^1.27.2" - figures "^2.0.0" - -listr@^0.14.3: - version "0.14.3" - resolved "https://registry.yarnpkg.com/listr/-/listr-0.14.3.tgz#2fea909604e434be464c50bddba0d496928fa586" - integrity sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA== +listr2@^3.8.3: + version "3.14.0" + resolved "https://registry.yarnpkg.com/listr2/-/listr2-3.14.0.tgz#23101cc62e1375fd5836b248276d1d2b51fdbe9e" + integrity sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g== dependencies: - "@samverschueren/stream-to-observable" "^0.3.0" - is-observable "^1.1.0" - is-promise "^2.1.0" - is-stream "^1.1.0" - listr-silent-renderer "^1.1.1" - listr-update-renderer "^0.5.0" - listr-verbose-renderer "^0.5.0" - p-map "^2.0.0" - rxjs "^6.3.3" + cli-truncate "^2.1.0" + colorette "^2.0.16" + log-update "^4.0.0" + p-map "^4.0.0" + rfdc "^1.3.0" + rxjs "^7.5.1" + through "^2.3.8" + wrap-ansi "^7.0.0" load-json-file@^2.0.0: version "2.0.0" @@ -9912,13 +9931,6 @@ lodash.unescape@4.0.1: resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== -log-symbols@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18" - integrity sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg= - dependencies: - chalk "^1.0.0" - log-symbols@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.0.0.tgz#69b3cc46d20f448eccdb75ea1fa733d9e821c920" @@ -9926,14 +9938,15 @@ log-symbols@^4.0.0: dependencies: chalk "^4.0.0" -log-update@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/log-update/-/log-update-2.3.0.tgz#88328fd7d1ce7938b29283746f0b1bc126b24708" - integrity sha1-iDKP19HOeTiykoN0bwsbwSayRwg= +log-update@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/log-update/-/log-update-4.0.0.tgz#589ecd352471f2a1c0c570287543a64dfd20e0a1" + integrity sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg== dependencies: - ansi-escapes "^3.0.0" - cli-cursor "^2.0.0" - wrap-ansi "^3.0.1" + ansi-escapes "^4.3.0" + cli-cursor "^3.1.0" + slice-ansi "^4.0.0" + wrap-ansi "^6.2.0" logform@^2.2.0: version "2.2.0" @@ -9974,10 +9987,10 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" -lz-string@^1.4.4: - version "1.4.4" - resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.4.4.tgz#c0d8eaf36059f705796e1e344811cf4c498d3a26" - integrity sha1-wNjq82BZ9wV5bh40SBHPTEmNOiY= +lz-string@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.5.0.tgz#c1ab50f77887b712621201ba9fd4e3a6ed099941" + integrity sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ== magic-string@^0.25.3: version "0.25.7" @@ -10286,11 +10299,6 @@ mime@^2.0.3: resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.6.tgz#e5b407c90db442f2beb5b162373d07b69affa4d1" integrity sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA== -mimic-fn@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" - integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== - mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" @@ -10441,7 +10449,7 @@ mockdate@^2.0.2: resolved "https://registry.yarnpkg.com/mockdate/-/mockdate-2.0.2.tgz#5ae0c0eaf8fe23e009cd01f9889b42c4f634af12" integrity sha1-WuDA6vj+I+AJzQH5iJtCxPY0rxI= -moment@^2.19.3, moment@^2.24.0, moment@^2.25.3, moment@^2.27.0, moment@^2.29.4: +moment@^2.24.0, moment@^2.25.3: version "2.29.4" resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.4.tgz#3dbe052889fe7c1b2ed966fcb3a77328964ef108" integrity sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w== @@ -10873,11 +10881,6 @@ number-is-integer@^1.0.1: dependencies: is-finite "^1.0.1" -number-is-nan@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - integrity sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ== - numeral@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/numeral/-/numeral-2.0.6.tgz#4ad080936d443c2561aed9f2197efffe25f4e506" @@ -10970,6 +10973,14 @@ object-is@^1.0.1: resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.0.1.tgz#0aa60ec9989a0b3ed795cf4d06f62cf1ad6539b6" integrity sha1-CqYOyZiaCz7Xlc9NBvYs8a1lObY= +object-is@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" + integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + object-keys@^1.0.11, object-keys@^1.0.6, object-keys@^1.0.9: version "1.1.0" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.0.tgz#11bd22348dd2e096a045ab06f6c85bcc340fa032" @@ -11125,18 +11136,6 @@ one-time@^1.0.0: dependencies: fn.name "1.x.x" -onetime@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789" - integrity sha1-ofeDj4MUxRbwXs78vEzP4EtO14k= - -onetime@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" - integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= - dependencies: - mimic-fn "^1.0.0" - onetime@^5.1.0, onetime@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" @@ -11259,11 +11258,6 @@ p-locate@^5.0.0: dependencies: p-limit "^3.0.2" -p-map@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" - integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== - p-map@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/p-map/-/p-map-3.0.0.tgz#d704d9af8a2ba684e2600d9a215983d4141a979d" @@ -11875,7 +11869,7 @@ prettier@^1.19.1: resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb" integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew== -pretty-bytes@^5.4.1: +pretty-bytes@^5.6.0: version "5.6.0" resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== @@ -11898,14 +11892,13 @@ pretty-format@^24.9.0: ansi-styles "^3.2.0" react-is "^16.8.4" -pretty-format@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.6.2.tgz#e35c2705f14cb7fe2fe94fa078345b444120fc93" - integrity sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg== +pretty-format@^27.0.2: + version "27.5.1" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.5.1.tgz#2181879fdea51a7a5851fb39d920faa63f01d88e" + integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ== dependencies: - "@jest/types" "^26.6.2" - ansi-regex "^5.0.0" - ansi-styles "^4.0.0" + ansi-regex "^5.0.1" + ansi-styles "^5.0.0" react-is "^17.0.1" process-nextick-args@~2.0.0: @@ -12144,10 +12137,10 @@ railroad-diagrams@^1.0.0: resolved "https://registry.yarnpkg.com/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz#eb7e6267548ddedfb899c1b90e57374559cddb7e" integrity sha1-635iZ1SN3t+4mcG5Dlc3RVnN234= -ramda@~0.26.1: - version "0.26.1" - resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.26.1.tgz#8d41351eb8111c55353617fc3bbffad8e4d35d06" - integrity sha512-hLWjpy7EnsDBb0p+Z3B7rPi3GDeRG5ZtiI33kJhTt+ORCd38AbAIjB/9zRIUoeTbE/AVX5ZkU7m6bznsvrf8eQ== +ramda@~0.27.1: + version "0.27.2" + resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.27.2.tgz#84463226f7f36dc33592f6f4ed6374c48306c3f1" + integrity sha512-SbiLPU40JuJniHexQSAgad32hfwd+DRUdwF2PlVuI5RZD0/vahUco7R8vD86J/tcEKKF9vZrUVwgtmGCqlCKyA== randexp@0.4.6: version "0.4.6" @@ -12848,6 +12841,11 @@ regenerator-runtime@^0.13.1, regenerator-runtime@^0.13.4: resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55" integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew== +regenerator-runtime@^0.13.11: + version "0.13.11" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" + integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== + regenerator-runtime@^0.13.2: version "0.13.3" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz#7cf6a77d8f5c6f60eb73c5fc1955b2ceb01e6bf5" @@ -13309,22 +13307,6 @@ resolve@~1.15.1: dependencies: path-parse "^1.0.6" -restore-cursor@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541" - integrity sha1-NGYfRohjJ/7SmRR5FSJS35LapUE= - dependencies: - exit-hook "^1.0.0" - onetime "^1.0.0" - -restore-cursor@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" - integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= - dependencies: - onetime "^2.0.0" - signal-exit "^3.0.2" - restore-cursor@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" @@ -13360,6 +13342,11 @@ reusify@^1.0.4: resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== +rfdc@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.0.tgz#d0b7c441ab2720d05dc4cf26e01c89631d9da08b" + integrity sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA== + right-now@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/right-now/-/right-now-1.0.0.tgz#6e89609deebd7dcdaf8daecc9aea39cf585a0918" @@ -13514,13 +13501,20 @@ rw@^1.3.3: resolved "https://registry.yarnpkg.com/rw/-/rw-1.3.3.tgz#3f862dfa91ab766b14885ef4d01124bfda074fb4" integrity sha1-P4Yt+pGrdmsUiF700BEkv9oHT7Q= -rxjs@^6.3.3, rxjs@^6.4.0: +rxjs@^6.4.0: version "6.4.0" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.4.0.tgz#f3bb0fe7bda7fb69deac0c16f17b50b0b8790504" integrity sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw== dependencies: tslib "^1.9.0" +rxjs@^7.5.1: + version "7.8.1" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.1.tgz#6f6f3d99ea8044291efd92e7c7fcf562c4057543" + integrity sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg== + dependencies: + tslib "^2.1.0" + safe-array-concat@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.0.0.tgz#2064223cba3c08d2ee05148eedbc563cd6d84060" @@ -13924,11 +13918,6 @@ slash@^3.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== -slice-ansi@0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" - integrity sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU= - slice-ansi@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" @@ -13938,6 +13927,24 @@ slice-ansi@^2.1.0: astral-regex "^1.0.0" is-fullwidth-code-point "^2.0.0" +slice-ansi@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-3.0.0.tgz#31ddc10930a1b7e0b67b08c96c2f49b77a789787" + integrity sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" + +slice-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" + integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" + snapdragon-node@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" @@ -14212,6 +14219,13 @@ stealthy-require@^1.1.1: resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" integrity sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g== +stop-iteration-iterator@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz#6a60be0b4ee757d1ed5254858ec66b10c49285e4" + integrity sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ== + dependencies: + internal-slot "^1.0.4" + stream-browserify@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" @@ -14277,15 +14291,6 @@ string-to-arraybuffer@^1.0.0: atob-lite "^2.0.0" is-base64 "^0.1.0" -string-width@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - integrity sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw== - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.0" - string-width@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" @@ -14554,13 +14559,20 @@ supports-color@^6.1.0: dependencies: has-flag "^3.0.0" -supports-color@^7.1.0, supports-color@^7.2.0: +supports-color@^7.1.0: version "7.2.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== dependencies: has-flag "^4.0.0" +supports-color@^8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + supports-hyperlinks@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-1.0.1.tgz#71daedf36cc1060ac5100c351bb3da48c29c0ef7" @@ -14609,11 +14621,6 @@ svg-path-sdf@^1.1.3: parse-svg-path "^0.1.2" svg-path-bounds "^1.0.1" -symbol-observable@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" - integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== - symbol-tree@^3.2.2: version "3.2.4" resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" @@ -14753,7 +14760,7 @@ through2@^2.0.0, through2@^2.0.1: readable-stream "~2.3.6" xtend "~4.0.1" -through@^2.3.6, through@~2.3.4, through@~2.3.8: +through@^2.3.6, through@^2.3.8, through@~2.3.4, through@~2.3.8: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= @@ -14993,6 +15000,11 @@ tslib@^2.0.3: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.0.tgz#b295854684dbda164e181d259a22cd779dcd7bc3" integrity sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA== +tslib@^2.1.0: + version "2.6.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.1.tgz#fd8c9a0ff42590b25703c0acb3de3d3f4ede0410" + integrity sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig== + tsutils@^3.17.1: version "3.17.1" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.17.1.tgz#ed719917f11ca0dee586272b2ac49e015a2dd759" @@ -15043,6 +15055,11 @@ type-check@~0.3.2: dependencies: prelude-ls "~1.1.2" +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== + type-fest@^0.8.0, type-fest@^0.8.1: version "0.8.1" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" @@ -15255,6 +15272,11 @@ universalify@^1.0.0: resolved "https://registry.yarnpkg.com/universalify/-/universalify-1.0.0.tgz#b61a1da173e8435b2fe3c67d29b9adf8594bd16d" integrity sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug== +universalify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" @@ -15859,12 +15881,22 @@ which-boxed-primitive@^1.0.2: is-string "^1.0.5" is-symbol "^1.0.3" +which-collection@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.1.tgz#70eab71ebbbd2aefaf32f917082fc62cdcb70906" + integrity sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A== + dependencies: + is-map "^2.0.1" + is-set "^2.0.1" + is-weakmap "^2.0.1" + is-weakset "^2.0.1" + which-module@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.1.tgz#776b1fe35d90aebe99e8ac15eb24093389a4a409" integrity sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ== -which-typed-array@^1.1.10, which-typed-array@^1.1.11: +which-typed-array@^1.1.10, which-typed-array@^1.1.11, which-typed-array@^1.1.9: version "1.1.11" resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.11.tgz#99d691f23c72aab6768680805a271b69761ed61a" integrity sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew== @@ -15945,14 +15977,6 @@ world-calendars@^1.0.3: dependencies: object-assign "^4.1.0" -wrap-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-3.0.1.tgz#288a04d87eda5c286e060dfe8f135ce8d007f8ba" - integrity sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo= - dependencies: - string-width "^2.1.1" - strip-ansi "^4.0.0" - wrap-ansi@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-4.0.0.tgz#b3570d7c70156159a2d42be5cc942e957f7b1131" From 050b9e8716c78c3b9e0869f56ec122ead8d610f5 Mon Sep 17 00:00:00 2001 From: Justin Clift Date: Wed, 26 Jul 2023 22:24:27 +1000 Subject: [PATCH 220/274] Bump babel-loader to 8.3.0 (#6291) --- package.json | 2 +- yarn.lock | 57 ++++++++++++++++++---------------------------------- 2 files changed, 21 insertions(+), 38 deletions(-) diff --git a/package.json b/package.json index eaecc1038c..7c66b2d305 100644 --- a/package.json +++ b/package.json @@ -102,7 +102,7 @@ "atob": "^2.1.2", "babel-eslint": "^10.0.3", "babel-jest": "^24.1.0", - "babel-loader": "^8.0.5", + "babel-loader": "^8.3.0", "babel-plugin-istanbul": "^6.1.1", "babel-plugin-transform-builtin-extend": "^1.1.2", "copy-webpack-plugin": "^6.4.1", diff --git a/yarn.lock b/yarn.lock index 9acfd43086..5d4b246674 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2058,17 +2058,7 @@ "@types/istanbul-lib-coverage" "*" "@types/istanbul-lib-report" "*" -"@types/json-schema@^7.0.3": - version "7.0.3" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.3.tgz#bdfd69d61e464dcc81b25159c270d75a73c1a636" - integrity sha512-Il2DtDVRGDcqjDtE+rF8iqg1CArehSK84HZJCT7AMITlyXRBpuPhqGLDQMowraqqu1coEaimg4ZOqggt6L6L+A== - -"@types/json-schema@^7.0.6": - version "7.0.6" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.6.tgz#f4c7ec43e81b319a9815115031709f26987891f0" - integrity sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw== - -"@types/json-schema@^7.0.9": +"@types/json-schema@^7.0.3", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.6", "@types/json-schema@^7.0.9": version "7.0.12" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.12.tgz#d70faba7039d5fca54c83c7dbab41051d2b6f6cb" integrity sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA== @@ -2610,7 +2600,7 @@ ajv-keywords@^5.1.0: dependencies: fast-deep-equal "^3.1.3" -ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.5: +ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -3191,15 +3181,15 @@ babel-jest@^24.9.0: chalk "^2.4.2" slash "^2.0.0" -babel-loader@^8.0.5: - version "8.0.5" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.0.5.tgz#225322d7509c2157655840bba52e46b6c2f2fe33" - integrity sha512-NTnHnVRd2JnRqPC0vW+iOQWU5pchDbYXsG2E6DMXEpMfUcQKclF9gmf3G3ZMhzG7IG9ji4coL0cm+FxeWxDpnw== +babel-loader@^8.3.0: + version "8.3.0" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.3.0.tgz#124936e841ba4fe8176786d6ff28add1f134d6a8" + integrity sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q== dependencies: - find-cache-dir "^2.0.0" - loader-utils "^1.0.2" - mkdirp "^0.5.1" - util.promisify "^1.0.0" + find-cache-dir "^3.3.1" + loader-utils "^2.0.0" + make-dir "^3.1.0" + schema-utils "^2.6.5" babel-messages@^6.23.0: version "6.23.0" @@ -6655,15 +6645,6 @@ find-cache-dir@^0.1.1: mkdirp "^0.5.1" pkg-dir "^1.0.0" -find-cache-dir@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.0.0.tgz#4c1faed59f45184530fb9d7fa123a4d04a98472d" - integrity sha512-LDUY6V1Xs5eFskUVYtIwatojt6+9xC9Chnlk/jYOOvn3FAFfSaWddxahDGyNHh0b2dMXa6YW2m0tk8TdVaXHlA== - dependencies: - commondir "^1.0.1" - make-dir "^1.0.0" - pkg-dir "^3.0.0" - find-cache-dir@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" @@ -9999,13 +9980,6 @@ magic-string@^0.25.3: dependencies: sourcemap-codec "^1.4.4" -make-dir@^1.0.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" - integrity sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ== - dependencies: - pify "^3.0.0" - make-dir@^2.0.0, make-dir@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" @@ -10014,7 +9988,7 @@ make-dir@^2.0.0, make-dir@^2.1.0: pify "^4.0.1" semver "^5.6.0" -make-dir@^3.0.0, make-dir@^3.0.2: +make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== @@ -13614,6 +13588,15 @@ schema-utils@^2.6.1: ajv "^6.10.2" ajv-keywords "^3.4.1" +schema-utils@^2.6.5: + version "2.7.1" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" + integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== + dependencies: + "@types/json-schema" "^7.0.5" + ajv "^6.12.4" + ajv-keywords "^3.5.2" + schema-utils@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.0.0.tgz#67502f6aa2b66a2d4032b4279a2944978a0913ef" From ba1b496f51111c80c54be6c8c749a5b1a5ec9578 Mon Sep 17 00:00:00 2001 From: Justin Clift Date: Wed, 26 Jul 2023 23:40:49 +1000 Subject: [PATCH 221/274] Bump webpack-cli to 4.10.0 (#6292) --- package.json | 2 +- yarn.lock | 225 +++++++++++++++++++++++++-------------------------- 2 files changed, 109 insertions(+), 118 deletions(-) diff --git a/package.json b/package.json index 7c66b2d305..1f67481136 100644 --- a/package.json +++ b/package.json @@ -149,7 +149,7 @@ "webpack": "^4.46.0", "webpack-build-notifier": "^0.1.30", "webpack-bundle-analyzer": "^4.9.0", - "webpack-cli": "^3.3.12", + "webpack-cli": "^4.10.0", "webpack-dev-server": "^4.15.1", "webpack-manifest-plugin": "^2.0.4" }, diff --git a/yarn.lock b/yarn.lock index 5d4b246674..d92faf13e4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1302,7 +1302,7 @@ enabled "2.0.x" kuler "^2.0.0" -"@discoveryjs/json-ext@0.5.7": +"@discoveryjs/json-ext@0.5.7", "@discoveryjs/json-ext@^0.5.0": version "0.5.7" resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== @@ -2436,6 +2436,23 @@ "@webassemblyjs/wast-parser" "1.9.0" "@xtuc/long" "4.2.2" +"@webpack-cli/configtest@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-1.2.0.tgz#7b20ce1c12533912c3b217ea68262365fa29a6f5" + integrity sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg== + +"@webpack-cli/info@^1.5.0": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-1.5.0.tgz#6c78c13c5874852d6e2dd17f08a41f3fe4c261b1" + integrity sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ== + dependencies: + envinfo "^7.7.3" + +"@webpack-cli/serve@^1.7.0": + version "1.7.0" + resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-1.7.0.tgz#e1993689ac42d2b16e9194376cfb6753f6254db1" + integrity sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q== + "@xtuc/ieee754@^1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" @@ -4224,6 +4241,15 @@ cliui@^6.0.0: strip-ansi "^6.0.0" wrap-ansi "^6.2.0" +clone-deep@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" + integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== + dependencies: + is-plain-object "^2.0.4" + kind-of "^6.0.2" + shallow-clone "^3.0.0" + clone@^2.1.1, clone@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" @@ -4336,7 +4362,7 @@ color@3.0.x: color-convert "^1.9.1" color-string "^1.5.2" -colorette@^2.0.10, colorette@^2.0.16: +colorette@^2.0.10, colorette@^2.0.14, colorette@^2.0.16: version "2.0.20" resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== @@ -4393,7 +4419,7 @@ commander@^5.1.0: resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== -commander@^7.2.0: +commander@^7.0.0, commander@^7.2.0: version "7.2.0" resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== @@ -5239,11 +5265,6 @@ destroy@1.2.0: resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== -detect-file@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" - integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc= - detect-kerning@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/detect-kerning/-/detect-kerning-2.1.2.tgz#4ecd548e4a5a3fc880fe2a50609312d000fa9fc2" @@ -5589,7 +5610,7 @@ end-of-stream@^1.0.0, end-of-stream@^1.1.0: dependencies: once "^1.4.0" -enhanced-resolve@^4.1.1, enhanced-resolve@^4.5.0: +enhanced-resolve@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz#2f3cfd84dbe3b487f18f2db2ef1e064a571ca5ec" integrity sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg== @@ -5615,6 +5636,11 @@ entities@^2.0.0: resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== +envinfo@^7.7.3: + version "7.10.0" + resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.10.0.tgz#55146e3909cc5fe63c22da63fb15b05aeac35b13" + integrity sha512-ZtUjZO6l5mwTHvc1L9+1q5p/R3wTopcfqMW8r5t8SJSKqeVI/LtajORwRFEKpEFuekjD0VBjwu1HMxL4UalIRw== + enzyme-adapter-react-16@^1.7.1: version "1.10.0" resolved "https://registry.yarnpkg.com/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.10.0.tgz#12e5b6f4be84f9a2ef374acc2555f829f351fc6e" @@ -6314,13 +6340,6 @@ expand-brackets@^2.1.4: snapdragon "^0.8.1" to-regex "^3.0.1" -expand-tilde@^2.0.0, expand-tilde@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" - integrity sha1-l+gBqgUt8CRU3kawK/YhZCzchQI= - dependencies: - homedir-polyfill "^1.0.1" - expect@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/expect/-/expect-24.9.0.tgz#b75165b4817074fa4a157794f46fe9f1ba15b6ca" @@ -6521,6 +6540,11 @@ fast-safe-stringify@^2.0.4: resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz#124aa885899261f68aedb42a7c080de9da608743" integrity sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA== +fastest-levenshtein@^1.0.12: + version "1.0.16" + resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz#210e61b6ff181de91ea9b3d1b84fdedd47e034e5" + integrity sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg== + fastparse@^1.1.1: version "1.1.2" resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.2.tgz#91728c5a5942eced8531283c79441ee4122c35a9" @@ -6710,16 +6734,6 @@ find-up@^5.0.0: locate-path "^6.0.0" path-exists "^4.0.0" -findup-sync@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-3.0.0.tgz#17b108f9ee512dfb7a5c7f3c8b27ea9e1a9c08d1" - integrity sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg== - dependencies: - detect-file "^1.0.0" - is-glob "^4.0.0" - micromatch "^3.0.4" - resolve-dir "^1.0.1" - flat-cache@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" @@ -7530,42 +7544,6 @@ global-dirs@^3.0.0: dependencies: ini "2.0.0" -global-modules@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" - integrity sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg== - dependencies: - global-prefix "^1.0.1" - is-windows "^1.0.1" - resolve-dir "^1.0.0" - -global-modules@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" - integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== - dependencies: - global-prefix "^3.0.0" - -global-prefix@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" - integrity sha1-2/dDxsFJklk8ZVVoy2btMsASLr4= - dependencies: - expand-tilde "^2.0.2" - homedir-polyfill "^1.0.1" - ini "^1.3.4" - is-windows "^1.0.1" - which "^1.2.14" - -global-prefix@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97" - integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== - dependencies: - ini "^1.3.5" - kind-of "^6.0.2" - which "^1.3.1" - globals@^11.0.1: version "11.11.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.11.0.tgz#dcf93757fa2de5486fbeed7118538adf789e9c2e" @@ -8019,13 +7997,6 @@ hoist-non-react-statics@^3.3.2: dependencies: react-is "^16.7.0" -homedir-polyfill@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" - integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA== - dependencies: - parse-passwd "^1.0.0" - hosted-git-info@^2.1.4: version "2.8.9" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" @@ -8313,6 +8284,14 @@ import-local@^2.0.0: pkg-dir "^3.0.0" resolve-cwd "^2.0.0" +import-local@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" + integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== + dependencies: + pkg-dir "^4.2.0" + resolve-cwd "^3.0.0" + imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" @@ -8369,11 +8348,6 @@ ini@2.0.0: resolved "https://registry.yarnpkg.com/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5" integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA== -ini@^1.3.4, ini@^1.3.5: - version "1.3.8" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" - integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== - inquirer@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.0.0.tgz#9e2b032dde77da1db5db804758b8fea3a970519a" @@ -8407,10 +8381,10 @@ internal-slot@^1.0.4, internal-slot@^1.0.5: has "^1.0.3" side-channel "^1.0.4" -interpret@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" - integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== +interpret@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9" + integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw== interval-tree-1d@^1.0.1: version "1.0.3" @@ -8909,7 +8883,7 @@ is-weakset@^2.0.1: call-bind "^1.0.2" get-intrinsic "^1.1.1" -is-windows@^1.0.1, is-windows@^1.0.2: +is-windows@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== @@ -9794,7 +9768,7 @@ loader-runner@^2.4.0: resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== -loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4.0: +loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3: version "1.4.2" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.2.tgz#29a957f3a63973883eb684f10ffd3d151fec01a3" integrity sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg== @@ -10179,7 +10153,7 @@ methods@~1.1.2: resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= -micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4: +micromatch@^3.1.10, micromatch@^3.1.4: version "3.1.10" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== @@ -11347,11 +11321,6 @@ parse-json@^4.0.0: error-ex "^1.3.1" json-parse-better-errors "^1.0.1" -parse-passwd@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" - integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= - parse-rect@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/parse-rect/-/parse-rect-1.2.0.tgz#e0a5b0dbaaaee637a0a1eb9779969e19399d8dec" @@ -11625,7 +11594,7 @@ pkg-dir@^3.0.0: dependencies: find-up "^3.0.0" -pkg-dir@^4.1.0: +pkg-dir@^4.1.0, pkg-dir@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== @@ -12765,6 +12734,13 @@ realpath-native@^1.1.0: dependencies: util.promisify "^1.0.0" +rechoir@^0.7.0: + version "0.7.1" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.7.1.tgz#9478a96a1ca135b5e88fc027f03ee92d6c645686" + integrity sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg== + dependencies: + resolve "^1.9.0" + redeyed@~2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/redeyed/-/redeyed-2.1.1.tgz#8984b5815d99cb220469c99eeeffe38913e6cc0b" @@ -13201,13 +13177,12 @@ resolve-cwd@^2.0.0: dependencies: resolve-from "^3.0.0" -resolve-dir@^1.0.0, resolve-dir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" - integrity sha1-eaQGRMNivoLybv/nOcm7U4IEb0M= +resolve-cwd@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" + integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== dependencies: - expand-tilde "^2.0.0" - global-modules "^1.0.0" + resolve-from "^5.0.0" resolve-from@^3.0.0: version "3.0.0" @@ -13258,7 +13233,7 @@ resolve@^1.0.0, resolve@^1.1.5, resolve@^1.5.0: dependencies: path-parse "^1.0.6" -resolve@^1.10.0, resolve@^1.14.2: +resolve@^1.10.0, resolve@^1.14.2, resolve@^1.9.0: version "1.22.2" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.2.tgz#0ed0943d4e301867955766c9f3e1ae6d01c6845f" integrity sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g== @@ -13746,6 +13721,13 @@ sha.js@^2.4.0, sha.js@^2.4.8: inherits "^2.0.1" safe-buffer "^5.0.1" +shallow-clone@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" + integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== + dependencies: + kind-of "^6.0.2" + shallow-copy@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/shallow-copy/-/shallow-copy-0.0.1.tgz#415f42702d73d810330292cc5ee86eae1a11a170" @@ -15454,11 +15436,6 @@ v8-compile-cache@^2.0.3: resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e" integrity sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g== -v8-compile-cache@^2.1.1: - version "2.3.0" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" - integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== - validate-npm-package-license@^3.0.1: version "3.0.4" resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" @@ -15684,22 +15661,23 @@ webpack-bundle-analyzer@^4.9.0: sirv "^1.0.7" ws "^7.3.1" -webpack-cli@^3.3.12: - version "3.3.12" - resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.3.12.tgz#94e9ada081453cd0aa609c99e500012fd3ad2d4a" - integrity sha512-NVWBaz9k839ZH/sinurM+HcDvJOTXwSjYp1ku+5XKeOC03z8v5QitnK/x+lAxGXFyhdayoIf/GOpv85z3/xPag== - dependencies: - chalk "^2.4.2" - cross-spawn "^6.0.5" - enhanced-resolve "^4.1.1" - findup-sync "^3.0.0" - global-modules "^2.0.0" - import-local "^2.0.0" - interpret "^1.4.0" - loader-utils "^1.4.0" - supports-color "^6.1.0" - v8-compile-cache "^2.1.1" - yargs "^13.3.2" +webpack-cli@^4.10.0: + version "4.10.0" + resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-4.10.0.tgz#37c1d69c8d85214c5a65e589378f53aec64dab31" + integrity sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w== + dependencies: + "@discoveryjs/json-ext" "^0.5.0" + "@webpack-cli/configtest" "^1.2.0" + "@webpack-cli/info" "^1.5.0" + "@webpack-cli/serve" "^1.7.0" + colorette "^2.0.14" + commander "^7.0.0" + cross-spawn "^7.0.3" + fastest-levenshtein "^1.0.12" + import-local "^3.0.2" + interpret "^2.2.0" + rechoir "^0.7.0" + webpack-merge "^5.7.3" webpack-dev-middleware@^5.3.1: version "5.3.3" @@ -15757,6 +15735,14 @@ webpack-manifest-plugin@^2.0.4: lodash ">=3.5 <5" tapable "^1.0.0" +webpack-merge@^5.7.3: + version "5.9.0" + resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.9.0.tgz#dc160a1c4cf512ceca515cc231669e9ddb133826" + integrity sha512-6NbRQw4+Sy50vYNTw7EyOn41OZItPiXB8GNv3INSoe3PSFaHJEz3SHTrYVaRm2LilNGnFUzh0FAwqPEmU/CwDg== + dependencies: + clone-deep "^4.0.1" + wildcard "^2.0.0" + webpack-sources@^1.1.0: version "1.3.0" resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.3.0.tgz#2a28dcb9f1f45fe960d8f1493252b5ee6530fa85" @@ -15890,7 +15876,7 @@ which-typed-array@^1.1.10, which-typed-array@^1.1.11, which-typed-array@^1.1.9: gopd "^1.0.1" has-tostringtag "^1.0.0" -which@^1.2.14, which@^1.2.9, which@^1.3.0, which@^1.3.1: +which@^1.2.9, which@^1.3.0: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== @@ -15918,6 +15904,11 @@ widest-line@^3.1.0: dependencies: string-width "^4.0.0" +wildcard@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.1.tgz#5ab10d02487198954836b6349f74fff961e10f67" + integrity sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ== + winston-transport@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/winston-transport/-/winston-transport-4.4.0.tgz#17af518daa690d5b2ecccaa7acf7b20ca7925e59" @@ -16102,7 +16093,7 @@ yargs-parser@^18.1.2: camelcase "^5.0.0" decamelize "^1.2.0" -yargs@^13.3.0, yargs@^13.3.2: +yargs@^13.3.0: version "13.3.2" resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== From f572d88d8e5121badcac463e9d0225c6c5d1f5a2 Mon Sep 17 00:00:00 2001 From: Justin Clift Date: Thu, 27 Jul 2023 01:30:43 +1000 Subject: [PATCH 222/274] Bump less to 3.13.1 in main repo, and to 4.1.3 in viz-lib (#6293) Also bumps some of the less related dependencies in the main repo: * less-loader to 5.0.0 * less-plugin-autoprefix to 2.0.0 --- package.json | 6 +- viz-lib/package.json | 2 +- viz-lib/yarn.lock | 90 +++++++++++-------- yarn.lock | 205 +++++++++++++++---------------------------- 4 files changed, 128 insertions(+), 175 deletions(-) diff --git a/package.json b/package.json index 1f67481136..1c4d9e25f0 100644 --- a/package.json +++ b/package.json @@ -130,9 +130,9 @@ "html-webpack-plugin": "^4.5.2", "identity-obj-proxy": "^3.0.0", "jest": "^24.1.0", - "less": "^3.9.0", - "less-loader": "^4.1.0", - "less-plugin-autoprefix": "^1.5.1", + "less": "^3.13.1", + "less-loader": "^5.0.0", + "less-plugin-autoprefix": "^2.0.0", "lodash": "^4.17.21", "mini-css-extract-plugin": "^0.4.4", "mockdate": "^2.0.2", diff --git a/viz-lib/package.json b/viz-lib/package.json index 199e09f410..8ea9cce924 100644 --- a/viz-lib/package.json +++ b/viz-lib/package.json @@ -58,7 +58,7 @@ "enzyme-adapter-react-16": "^1.15.7", "enzyme-to-json": "^3.3.5", "jest": "^24.1.0", - "less": "^3.11.1", + "less": "^4.1.3", "less-loader": "^11.1.3", "less-plugin-autoprefix": "^2.0.0", "npm-run-all": "^4.1.5", diff --git a/viz-lib/yarn.lock b/viz-lib/yarn.lock index cc84727123..7ed0491dbc 100644 --- a/viz-lib/yarn.lock +++ b/viz-lib/yarn.lock @@ -2603,11 +2603,6 @@ arraybuffer.prototype.slice@^1.0.1: is-array-buffer "^3.0.2" is-shared-array-buffer "^1.0.2" -asap@~2.0.3: - version "2.0.6" - resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" - integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= - asn1@~0.2.3: version "0.2.6" resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d" @@ -3263,11 +3258,6 @@ clone-deep@^4.0.1: kind-of "^6.0.2" shallow-clone "^3.0.0" -clone@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" - integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= - co@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" @@ -3484,6 +3474,13 @@ convex-hull@^1.0.3: incremental-convex-hull "^1.0.1" monotone-convex-hull-2d "^1.0.1" +copy-anything@^2.0.1: + version "2.0.6" + resolved "https://registry.yarnpkg.com/copy-anything/-/copy-anything-2.0.6.tgz#092454ea9584a7b7ad5573062b2a87f5900fc480" + integrity sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw== + dependencies: + is-what "^3.14.1" + copy-descriptor@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" @@ -3767,6 +3764,13 @@ debug@^3.1.0: dependencies: ms "^2.1.1" +debug@^3.2.6: + version "3.2.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + debug@^4.0.1: version "4.3.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" @@ -5709,6 +5713,13 @@ iconv-lite@0.4.24: dependencies: safer-buffer ">= 2.1.2 < 3" +iconv-lite@^0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + icss-utils@^4.0.0, icss-utils@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-4.1.1.tgz#21170b53789ee27447c2f47dd683081403f9a467" @@ -6178,6 +6189,11 @@ is-weakref@^1.0.2: dependencies: call-bind "^1.0.2" +is-what@^3.14.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/is-what/-/is-what-3.14.1.tgz#e1222f46ddda85dead0fd1c9df131760e77755c1" + integrity sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA== + is-windows@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" @@ -6921,21 +6937,21 @@ less-plugin-autoprefix@^2.0.0: autoprefixer "^8.6.3" postcss "^6.0.22" -less@^3.11.1: - version "3.11.1" - resolved "https://registry.yarnpkg.com/less/-/less-3.11.1.tgz#c6bf08e39e02404fe6b307a3dfffafdc55bd36e2" - integrity sha512-tlWX341RECuTOvoDIvtFqXsKj072hm3+9ymRBe76/mD6O5ZZecnlAOVDlWAleF2+aohFrxNidXhv2773f6kY7g== +less@^4.1.3: + version "4.1.3" + resolved "https://registry.yarnpkg.com/less/-/less-4.1.3.tgz#175be9ddcbf9b250173e0a00b4d6920a5b770246" + integrity sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA== dependencies: - clone "^2.1.2" - tslib "^1.10.0" + copy-anything "^2.0.1" + parse-node-version "^1.0.1" + tslib "^2.3.0" optionalDependencies: errno "^0.1.1" graceful-fs "^4.1.2" image-size "~0.5.0" + make-dir "^2.1.0" mime "^1.4.1" - mkdirp "^0.5.0" - promise "^7.1.1" - request "^2.83.0" + needle "^3.1.0" source-map "~0.6.0" leven@^3.1.0: @@ -7277,13 +7293,6 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" -mkdirp@^0.5.0: - version "0.5.3" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.3.tgz#5a514b7179259287952881e94410ec5465659f8c" - integrity sha512-P+2gwrFqx8lhew375MQHHeTlY8AuOJSrGf0R5ddkEndUkmwpgUob/vQuBD1V22/Cw1/lJr4x+EjllSezBThzBg== - dependencies: - minimist "^1.2.5" - mkdirp@^0.5.1: version "0.5.6" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" @@ -7465,6 +7474,15 @@ nearley@^2.7.10: randexp "0.4.6" semver "^5.4.1" +needle@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/needle/-/needle-3.2.0.tgz#07d240ebcabfd65c76c03afae7f6defe6469df44" + integrity sha512-oUvzXnyLiVyVGoianLijF9O/RecZUf7TkBfimjGrLM4eQhXyeJwM6GeAWccwfQ9aa4gMCZKqhAOuLaMIcQxajQ== + dependencies: + debug "^3.2.6" + iconv-lite "^0.6.3" + sax "^1.2.4" + neo-async@^2.5.0: version "2.6.1" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" @@ -7890,6 +7908,11 @@ parse-ms@^2.1.0: resolved "https://registry.yarnpkg.com/parse-ms/-/parse-ms-2.1.0.tgz#348565a753d4391fa524029956b172cb7753097d" integrity sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA== +parse-node-version@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parse-node-version/-/parse-node-version-1.0.1.tgz#e2b5dbede00e7fa9bc363607f53327e8b073189b" + integrity sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA== + parse-rect@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/parse-rect/-/parse-rect-1.2.0.tgz#e0a5b0dbaaaee637a0a1eb9779969e19399d8dec" @@ -8330,13 +8353,6 @@ progress@^2.0.0: resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== -promise@^7.1.1: - version "7.3.1" - resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" - integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg== - dependencies: - asap "~2.0.3" - prompts@^2.0.1: version "2.4.2" resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" @@ -8875,7 +8891,7 @@ request-promise-native@^1.0.5: stealthy-require "^1.1.1" tough-cookie "^2.3.3" -request@^2.83.0, request@^2.87.0: +request@^2.87.0: version "2.88.2" resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== @@ -9181,7 +9197,7 @@ safe-regex@^1.1.0: dependencies: ret "~0.1.10" -"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: +"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== @@ -10132,12 +10148,12 @@ ts-migrate@^0.1.35: updatable-log "^0.2.0" yargs "^15.0.2" -tslib@^1.10.0, tslib@^1.9.0: +tslib@^1.9.0: version "1.11.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.11.1.tgz#eb15d128827fbee2841549e171f45ed338ac7e35" integrity sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA== -tslib@^2.0.1: +tslib@^2.0.1, tslib@^2.3.0: version "2.6.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.1.tgz#fd8c9a0ff42590b25703c0acb3de3d3f4ede0410" integrity sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig== diff --git a/yarn.lock b/yarn.lock index d92faf13e4..27e933f007 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2994,11 +2994,6 @@ arraybuffer.prototype.slice@^1.0.1: is-array-buffer "^3.0.2" is-shared-array-buffer "^1.0.2" -asap@~2.0.3: - version "2.0.6" - resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" - integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= - asn1.js@^4.0.0: version "4.10.1" resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" @@ -3097,16 +3092,16 @@ atob@^2.1.2: resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== -autoprefixer@^6.0.0: - version "6.7.7" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-6.7.7.tgz#1dbd1c835658e35ce3f9984099db00585c782014" - integrity sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ= +autoprefixer@^8.6.3: + version "8.6.5" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-8.6.5.tgz#343f3d193ed568b3208e00117a1b96eb691d4ee9" + integrity sha512-PLWJN3Xo/rycNkx+mp8iBDMTm3FeWe4VmYaZDSqL5QQB9sLsQkG5k8n+LNDFnhh9kdq2K+egL/icpctOmDHwig== dependencies: - browserslist "^1.7.6" - caniuse-db "^1.0.30000634" + browserslist "^3.2.8" + caniuse-lite "^1.0.30000864" normalize-range "^0.1.2" num2fraction "^1.2.2" - postcss "^5.2.16" + postcss "^6.0.23" postcss-value-parser "^3.2.3" available-typed-arrays@^1.0.5: @@ -3669,13 +3664,13 @@ browserify-zlib@^0.2.0: dependencies: pako "~1.0.5" -browserslist@^1.7.6: - version "1.7.7" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-1.7.7.tgz#0bd76704258be829b2398bb50e4b62d1a166b0b9" - integrity sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk= +browserslist@^3.2.8: + version "3.2.8" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-3.2.8.tgz#b0005361d6471f0f5952797a76fc985f1f978fc6" + integrity sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ== dependencies: - caniuse-db "^1.0.30000639" - electron-to-chromium "^1.2.7" + caniuse-lite "^1.0.30000844" + electron-to-chromium "^1.3.47" browserslist@^4.21.9: version "4.21.9" @@ -3883,26 +3878,21 @@ camelcase@^5.0.0, camelcase@^5.3.1: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== -caniuse-db@^1.0.30000634, caniuse-db@^1.0.30000639: - version "1.0.30000939" - resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000939.tgz#8cb54a9868fe040fbf2e2441408c68b7008912e8" - integrity sha512-nB5tLf3hOs+biXl1lhKjHRgNC0J1I7H52h/t1FP7qxARKKwpB0z+P/JewJLYAlxCBP/q7rxJzQzHHrQMl0viKg== - caniuse-db@^1.0.30000977: version "1.0.30001015" resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30001015.tgz#9f1b4fa158c747dcc04b15f9c5359ddcf0390d90" integrity sha512-+Fqdu7tOxSD0HDs922QPxseHlwnUzdjLC1Oq32HZ1/LWrMfYNt8JaUWnoiIAR+G4fRzM3tdgc4Lrqo5Nx76UsQ== +caniuse-lite@^1.0.30000844, caniuse-lite@^1.0.30000864, caniuse-lite@^1.0.30001503: + version "1.0.30001517" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001517.tgz#90fabae294215c3495807eb24fc809e11dc2f0a8" + integrity sha512-Vdhm5S11DaFVLlyiKu4hiUTkpZu+y1KA/rZZqVQfOD5YdDT/eQKlkt7NaE0WGOFgX32diqt9MiP9CAiFeRklaA== + caniuse-lite@^1.0.30001015: version "1.0.30001015" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001015.tgz#15a7ddf66aba786a71d99626bc8f2b91c6f0f5f0" integrity sha512-/xL2AbW/XWHNu1gnIrO8UitBGoFthcsDgU9VLK1/dpsoxbaD5LscHozKze05R6WLsBvLhqv78dAPozMFQBYLbQ== -caniuse-lite@^1.0.30001503: - version "1.0.30001517" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001517.tgz#90fabae294215c3495807eb24fc809e11dc2f0a8" - integrity sha512-Vdhm5S11DaFVLlyiKu4hiUTkpZu+y1KA/rZZqVQfOD5YdDT/eQKlkt7NaE0WGOFgX32diqt9MiP9CAiFeRklaA== - canvas-fit@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/canvas-fit/-/canvas-fit-1.5.0.tgz#ae13be66ade42f5be0e487e345fce30a5e5b5e5f" @@ -4250,10 +4240,10 @@ clone-deep@^4.0.1: kind-of "^6.0.2" shallow-clone "^3.0.0" -clone@^2.1.1, clone@^2.1.2: +clone@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" - integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= + integrity sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w== clsx@^1.0.1: version "1.0.4" @@ -4599,6 +4589,13 @@ cookie@0.5.0: resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== +copy-anything@^2.0.1: + version "2.0.6" + resolved "https://registry.yarnpkg.com/copy-anything/-/copy-anything-2.0.6.tgz#092454ea9584a7b7ad5573062b2a87f5900fc480" + integrity sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw== + dependencies: + is-what "^3.14.1" + copy-concurrently@^1.0.0: version "1.0.5" resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" @@ -5533,16 +5530,16 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= -electron-to-chromium@^1.2.7: - version "1.3.113" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.113.tgz#b1ccf619df7295aea17bc6951dc689632629e4a9" - integrity sha512-De+lPAxEcpxvqPTyZAXELNpRZXABRxf+uL/rSykstQhzj/B0l1150G/ExIIxKc16lI89Hgz81J0BHAcbTqK49g== - electron-to-chromium@^1.3.322: version "1.3.322" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.322.tgz#a6f7e1c79025c2b05838e8e344f6e89eb83213a8" integrity sha512-Tc8JQEfGQ1MzfSzI/bTlSr7btJv/FFO7Yh6tanqVmIWOuNCu6/D1MilIEgLtmWqIrsv+o4IjpLAhgMBr/ncNAA== +electron-to-chromium@^1.3.47: + version "1.4.471" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.471.tgz#14cb056d0ce4bfa99df57946d57fe46c2330dac3" + integrity sha512-GpmGRC1vTl60w/k6YpQ18pSiqnmr0j3un//5TV1idPi6aheNfkT1Ye71tMEabWyNDO6sBMgAR+95Eb0eUUr1tA== + electron-to-chromium@^1.4.431: version "1.4.468" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.468.tgz#3cbf64ad67d9f12bfe69fefe5eb1935ec4f6ab7a" @@ -7812,7 +7809,7 @@ har-schema@^2.0.0: resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" integrity sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q== -har-validator@~5.1.0, har-validator@~5.1.3: +har-validator@~5.1.3: version "5.1.5" resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== @@ -7837,11 +7834,6 @@ has-bigints@^1.0.1, has-bigints@^1.0.2: resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== -has-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" - integrity sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo= - has-flag@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" @@ -8883,6 +8875,11 @@ is-weakset@^2.0.1: call-bind "^1.0.2" get-intrinsic "^1.1.1" +is-what@^3.14.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/is-what/-/is-what-3.14.1.tgz#e1222f46ddda85dead0fd1c9df131760e77755c1" + integrity sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA== + is-windows@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" @@ -9413,11 +9410,6 @@ jest@^24.1.0: import-local "^2.0.0" jest-cli "^24.9.0" -js-base64@^2.1.9: - version "2.5.1" - resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.5.1.tgz#1efa39ef2c5f7980bb1784ade4a8af2de3291121" - integrity sha512-M7kLczedRMYX4L8Mdh4MzyAMM9O5osx+4FcOQuTvr3A9F2D9S5JXheN0ewNbrvK2UatkTRhL5ejGmGSjNMiZuw== - "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" @@ -9675,37 +9667,37 @@ lerp@^1.0.3: resolved "https://registry.yarnpkg.com/lerp/-/lerp-1.0.3.tgz#a18c8968f917896de15ccfcc28d55a6b731e776e" integrity sha1-oYyJaPkXiW3hXM/MKNVaa3Med24= -less-loader@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/less-loader/-/less-loader-4.1.0.tgz#2c1352c5b09a4f84101490274fd51674de41363e" - integrity sha512-KNTsgCE9tMOM70+ddxp9yyt9iHqgmSs0yTZc5XH5Wo+g80RWRIYNqE58QJKm/yMud5wZEvz50ugRDuzVIkyahg== +less-loader@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/less-loader/-/less-loader-5.0.0.tgz#498dde3a6c6c4f887458ee9ed3f086a12ad1b466" + integrity sha512-bquCU89mO/yWLaUq0Clk7qCsKhsF/TZpJUzETRvJa9KSVEL9SO3ovCvdEHISBhrC81OwC8QSVX7E0bzElZj9cg== dependencies: clone "^2.1.1" loader-utils "^1.1.0" - pify "^3.0.0" + pify "^4.0.1" -less-plugin-autoprefix@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/less-plugin-autoprefix/-/less-plugin-autoprefix-1.5.1.tgz#bca4e5b2e48cac6965a1783142e3b32c3c00ce07" - integrity sha1-vKTlsuSMrGlloXgxQuOzLDwAzgc= +less-plugin-autoprefix@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/less-plugin-autoprefix/-/less-plugin-autoprefix-2.0.0.tgz#778e6f2fe56884381c4fc3c747b0879e944f8481" + integrity sha512-UktaMtHAhCVTIQxjlceo1MiiQiUZws7gi3hfcpxkCLn1CJdVdlRGCb4n1/M64hniw2DLd7YzOl7ojshs1tWYcQ== dependencies: - autoprefixer "^6.0.0" - postcss "^5.0.0" + autoprefixer "^8.6.3" + postcss "^6.0.22" -less@^3.9.0: - version "3.9.0" - resolved "https://registry.yarnpkg.com/less/-/less-3.9.0.tgz#b7511c43f37cf57dc87dffd9883ec121289b1474" - integrity sha512-31CmtPEZraNUtuUREYjSqRkeETFdyEHSEPAGq4erDlUXtda7pzNmctdljdIagSb589d/qXGWiiP31R5JVf+v0w== +less@^3.13.1: + version "3.13.1" + resolved "https://registry.yarnpkg.com/less/-/less-3.13.1.tgz#0ebc91d2a0e9c0c6735b83d496b0ab0583077909" + integrity sha512-SwA1aQXGUvp+P5XdZslUOhhLnClSLIjWvJhmd+Vgib5BFIr9lMNlQwmwUNOjXThF/A0x+MCYYPeWEfeWiLRnTw== dependencies: - clone "^2.1.2" + copy-anything "^2.0.1" + tslib "^1.10.0" optionalDependencies: errno "^0.1.1" graceful-fs "^4.1.2" image-size "~0.5.0" + make-dir "^2.1.0" mime "^1.4.1" - mkdirp "^0.5.0" - promise "^7.1.1" - request "^2.83.0" + native-request "^1.0.5" source-map "~0.6.0" leven@^3.1.0: @@ -10373,14 +10365,7 @@ mkdirp@0.5.1: dependencies: minimist "0.0.8" -mkdirp@^0.5.0, mkdirp@^0.5.3, mkdirp@^0.5.4: - version "0.5.5" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" - integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== - dependencies: - minimist "^1.2.5" - -mkdirp@^0.5.1: +mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.4: version "0.5.6" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== @@ -10529,6 +10514,11 @@ nanomatch@^1.2.9: snapdragon "^0.8.1" to-regex "^3.0.1" +native-request@^1.0.5: + version "1.1.0" + resolved "https://registry.yarnpkg.com/native-request/-/native-request-1.1.0.tgz#acdb30fe2eefa3e1bc8c54b3a6852e9c5c0d3cb0" + integrity sha512-uZ5rQaeRn15XmpgE0xoPL8YWqcX90VtCFglYwAgkvKM5e8fog+vePLAhHxuuv/gRkrQxIeh5U3q9sMNUrENqWw== + natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" @@ -11778,17 +11768,7 @@ postcss-value-parser@^3.2.3, postcss-value-parser@^3.3.0: resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== -postcss@^5.0.0, postcss@^5.2.16: - version "5.2.18" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.18.tgz#badfa1497d46244f6390f58b319830d9107853c5" - integrity sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg== - dependencies: - chalk "^1.1.3" - js-base64 "^2.1.9" - source-map "^0.5.6" - supports-color "^3.2.3" - -postcss@^6.0.1, postcss@^6.0.23: +postcss@^6.0.1, postcss@^6.0.22, postcss@^6.0.23: version "6.0.23" resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.23.tgz#61c82cc328ac60e677645f979054eb98bc0e3324" integrity sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag== @@ -11871,13 +11851,6 @@ promise-inflight@^1.0.1: resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" integrity sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g== -promise@^7.1.1: - version "7.3.1" - resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" - integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg== - dependencies: - asap "~2.0.3" - prompts@^2.0.1: version "2.4.2" resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" @@ -11918,7 +11891,7 @@ prr@~1.0.1: resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= -psl@^1.1.24, psl@^1.1.28: +psl@^1.1.28: version "1.9.0" resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== @@ -11970,7 +11943,7 @@ punycode@>=0.2.0: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== -punycode@^1.2.4, punycode@^1.4.1: +punycode@^1.2.4: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= @@ -13093,32 +13066,6 @@ request-promise@^4.2.2: stealthy-require "^1.1.1" tough-cookie "^2.3.3" -request@^2.83.0: - version "2.88.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" - integrity sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg== - dependencies: - aws-sign2 "~0.7.0" - aws4 "^1.8.0" - caseless "~0.12.0" - combined-stream "~1.0.6" - extend "~3.0.2" - forever-agent "~0.6.1" - form-data "~2.3.2" - har-validator "~5.1.0" - http-signature "~1.2.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.19" - oauth-sign "~0.9.0" - performance-now "^2.1.0" - qs "~6.5.2" - safe-buffer "^5.1.2" - tough-cookie "~2.4.3" - tunnel-agent "^0.6.0" - uuid "^3.3.2" - request@^2.87.0, request@^2.88.2: version "2.88.2" resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" @@ -14503,13 +14450,6 @@ supports-color@^2.0.0: resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= -supports-color@^3.2.3: - version "3.2.3" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" - integrity sha1-ZawFBLOVQXHYpklGsq48u4pfVPY= - dependencies: - has-flag "^1.0.0" - supports-color@^5.0.0, supports-color@^5.3.0, supports-color@^5.4.0, supports-color@^5.5.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" @@ -14909,14 +14849,6 @@ tough-cookie@^2.3.3, tough-cookie@^2.3.4, tough-cookie@~2.5.0: psl "^1.1.28" punycode "^2.1.1" -tough-cookie@~2.4.3: - version "2.4.3" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781" - integrity sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ== - dependencies: - psl "^1.1.24" - punycode "^1.4.1" - tr46@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" @@ -14955,6 +14887,11 @@ tslib@^1, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ== +tslib@^1.10.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + tslib@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.0.3.tgz#8e0741ac45fc0c226e58a17bfc3e64b9bc6ca61c" From a8e1077bb77f97c2bf01fcde1bd0ff0685d1c9e0 Mon Sep 17 00:00:00 2001 From: Justin Clift Date: Thu, 27 Jul 2023 02:49:45 +1000 Subject: [PATCH 223/274] Some manual dedupes of yarn.lock (#6294) Yarn seems to miss a lot of deduplication opportunities, regardless of what the docs claim. This can leave old, insecure versions of some dependencies in use when they shouldn't be. --- yarn.lock | 210 ++++++------------------------------------------------ 1 file changed, 21 insertions(+), 189 deletions(-) diff --git a/yarn.lock b/yarn.lock index 27e933f007..780d88960b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2702,12 +2702,7 @@ ansi-regex@^4.0.0, ansi-regex@^4.1.0: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.1.tgz#164daac87ab2d6f6db3a29875e2d1766582dabed" integrity sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g== -ansi-regex@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" - integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== - -ansi-regex@^5.0.1: +ansi-regex@^5.0.0, ansi-regex@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== @@ -2806,14 +2801,6 @@ anymatch@^3.0.0, anymatch@~3.1.2: normalize-path "^3.0.0" picomatch "^2.0.4" -anymatch@~3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" - integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - append-transform@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-2.0.0.tgz#99d9d29c7b38391e6f428d28ce136551f0b77e12" @@ -2911,15 +2898,7 @@ array-flatten@^2.1.2: resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== -array-includes@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.0.3.tgz#184b48f62d92d7452bb31b323165c7f8bd02266d" - integrity sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0= - dependencies: - define-properties "^1.1.2" - es-abstract "^1.7.0" - -array-includes@^3.1.1, array-includes@^3.1.2: +array-includes@^3.0.3, array-includes@^3.1.1, array-includes@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.2.tgz#a8db03e0b88c8c6aeddc49cb132f9bcab4ebf9c8" integrity sha512-w2GspexNQpx+PutG3QpT437/BenZBj0M/MZGn5mzv/MofYqo0xmRHzn4lFsoDlWJ+THYsGJmFlW68WlDFx7VRw== @@ -3170,17 +3149,7 @@ babel-eslint@^10.0.3: eslint-visitor-keys "^1.0.0" resolve "^1.12.0" -babel-jest@^24.1.0: - version "24.1.0" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-24.1.0.tgz#441e23ef75ded3bd547e300ac3194cef87b55190" - integrity sha512-MLcagnVrO9ybQGLEfZUqnOzv36iQzU7Bj4elm39vCukumLVSfoX+tRy3/jW7lUKc7XdpRmB/jech6L/UCsSZjw== - dependencies: - babel-plugin-istanbul "^5.1.0" - babel-preset-jest "^24.1.0" - chalk "^2.4.2" - slash "^2.0.0" - -babel-jest@^24.9.0: +babel-jest@^24.1.0, babel-jest@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-24.9.0.tgz#3fc327cb8467b89d14d7bc70e315104a783ccd54" integrity sha512-ntuddfyiN+EhMw58PTNL1ph4C9rECiQXjI4nMMBKBaNjXvqLdkXpPRcMSr4iyBrJg/+wz9brFUD6RhOAT6r4Iw== @@ -3231,11 +3200,6 @@ babel-plugin-istanbul@^6.1.1: istanbul-lib-instrument "^5.0.4" test-exclude "^6.0.0" -babel-plugin-jest-hoist@^24.1.0: - version "24.1.0" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.1.0.tgz#dfecc491fb15e2668abbd690a697a8fd1411a7f8" - integrity sha512-gljYrZz8w1b6fJzKcsfKsipSru2DU2DmQ39aB6nV3xQ0DDv3zpIzKGortA5gknrhNnPN8DweaEgrnZdmbGmhnw== - babel-plugin-jest-hoist@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.9.0.tgz#4f837091eb407e01447c8843cbec546d0002d756" @@ -3275,14 +3239,6 @@ babel-plugin-transform-builtin-extend@^1.1.2: babel-runtime "^6.2.0" babel-template "^6.3.0" -babel-preset-jest@^24.1.0: - version "24.1.0" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-24.1.0.tgz#83bc564fdcd4903641af65ec63f2f5de6b04132e" - integrity sha512-FfNLDxFWsNX9lUmtwY7NheGlANnagvxq8LZdl5PKnVG3umP+S/g0XbVBfwtA4Ai3Ri/IMkWabBz3Tyk9wdspcw== - dependencies: - "@babel/plugin-syntax-object-rest-spread" "^7.0.0" - babel-plugin-jest-hoist "^24.1.0" - babel-preset-jest@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-24.9.0.tgz#192b521e2217fb1d1f67cf73f70c336650ad3cdc" @@ -3468,27 +3424,17 @@ bluebird@3.7.1: resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.1.tgz#df70e302b471d7473489acf26a93d63b53f874de" integrity sha512-DdmyoGCleJnkbp3nkbxTLJ18rjDsE4yCggEwKNXkeV123sPNfOCYeDoeuOY+F2FrSjO1YXcTU+dsy96KMy+gcg== -bluebird@^3.5.0: - version "3.5.3" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.3.tgz#7d01c6f9616c9a51ab0f8c549a79dfe6ec33efa7" - integrity sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw== - -bluebird@^3.5.1, bluebird@^3.5.5, bluebird@^3.7.2: +bluebird@^3.5.0, bluebird@^3.5.1, bluebird@^3.5.5, bluebird@^3.7.2: version "3.7.2" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== -bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.11.6: - version "4.11.8" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" - integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA== - -bn.js@^4.11.9: +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.11.6, bn.js@^4.11.9: version "4.12.0" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== -body-parser@1.20.1: +body-parser@1.20.1, body-parser@^1.18.3: version "1.20.1" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668" integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw== @@ -3506,22 +3452,6 @@ body-parser@1.20.1: type-is "~1.6.18" unpipe "1.0.0" -body-parser@^1.18.3: - version "1.18.3" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.3.tgz#5b292198ffdd553b3a0f20ded0592b956955c8b4" - integrity sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ= - dependencies: - bytes "3.0.0" - content-type "~1.0.4" - debug "2.6.9" - depd "~1.1.2" - http-errors "~1.6.3" - iconv-lite "0.4.23" - on-finished "~2.3.0" - qs "6.5.2" - raw-body "2.3.3" - type-is "~1.6.16" - bonjour-service@^1.0.11: version "1.1.1" resolved "https://registry.yarnpkg.com/bonjour-service/-/bonjour-service-1.1.1.tgz#960948fa0e0153f5d26743ab15baf8e33752c135" @@ -3672,7 +3602,7 @@ browserslist@^3.2.8: caniuse-lite "^1.0.30000844" electron-to-chromium "^1.3.47" -browserslist@^4.21.9: +browserslist@^4.21.9, browserslist@^4.6.3: version "4.21.9" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.9.tgz#e11bdd3c313d7e2a9e87e8b4b0c7872b13897635" integrity sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg== @@ -3682,15 +3612,6 @@ browserslist@^4.21.9: node-releases "^2.0.12" update-browserslist-db "^1.0.11" -browserslist@^4.6.3: - version "4.8.1" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.8.1.tgz#df0f50cc4b3255322fae60ae82a946baae69f8c6" - integrity sha512-X/lIDboA5bvFg9SOhHN7OBgHHlaZQWcwTXBLBGgrB8+6Iy1dL0wmUfHRe7OdETRTuD2d6f5JPa7iTEcbVyVf6Q== - dependencies: - caniuse-lite "^1.0.30001015" - electron-to-chromium "^1.3.322" - node-releases "^1.1.42" - bser@2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" @@ -3888,11 +3809,6 @@ caniuse-lite@^1.0.30000844, caniuse-lite@^1.0.30000864, caniuse-lite@^1.0.300015 resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001517.tgz#90fabae294215c3495807eb24fc809e11dc2f0a8" integrity sha512-Vdhm5S11DaFVLlyiKu4hiUTkpZu+y1KA/rZZqVQfOD5YdDT/eQKlkt7NaE0WGOFgX32diqt9MiP9CAiFeRklaA== -caniuse-lite@^1.0.30001015: - version "1.0.30001015" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001015.tgz#15a7ddf66aba786a71d99626bc8f2b91c6f0f5f0" - integrity sha512-/xL2AbW/XWHNu1gnIrO8UitBGoFthcsDgU9VLK1/dpsoxbaD5LscHozKze05R6WLsBvLhqv78dAPozMFQBYLbQ== - canvas-fit@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/canvas-fit/-/canvas-fit-1.5.0.tgz#ae13be66ade42f5be0e487e345fce30a5e5b5e5f" @@ -3934,7 +3850,7 @@ cell-orientation@^1.0.1: resolved "https://registry.yarnpkg.com/cell-orientation/-/cell-orientation-1.0.1.tgz#b504ad96a66ad286d9edd985a2253d03b80d2850" integrity sha1-tQStlqZq0obZ7dmFoiU9A7gNKFA= -chalk@4.1.2: +chalk@4.1.2, chalk@^4.0.0, chalk@^4.1.0: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== @@ -3970,14 +3886,6 @@ chalk@^3.0.0: ansi-styles "^4.1.0" supports-color "^7.1.0" -chalk@^4.0.0, chalk@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" - integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - chardet@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" @@ -4019,7 +3927,7 @@ chokidar@^2.1.8: optionalDependencies: fsevents "^1.2.7" -chokidar@^3.4.0, chokidar@^3.5.3: +chokidar@^3.4.0, chokidar@^3.4.1, chokidar@^3.5.3: version "3.5.3" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== @@ -4034,21 +3942,6 @@ chokidar@^3.4.0, chokidar@^3.5.3: optionalDependencies: fsevents "~2.3.2" -chokidar@^3.4.1: - version "3.4.3" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.3.tgz#c1df38231448e45ca4ac588e6c79573ba6a57d5b" - integrity sha512-DtM3g7juCXQxFVSNPNByEC2+NImtBuxQQvWlHunpJIS5Ocr0lG306cC7FCi7cEA0fzmybPUIl4txBIobk1gGOQ== - dependencies: - anymatch "~3.1.1" - braces "~3.0.2" - glob-parent "~5.1.0" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.5.0" - optionalDependencies: - fsevents "~2.1.2" - chownr@^1.1.1: version "1.1.4" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" @@ -5530,11 +5423,6 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= -electron-to-chromium@^1.3.322: - version "1.3.322" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.322.tgz#a6f7e1c79025c2b05838e8e344f6e89eb83213a8" - integrity sha512-Tc8JQEfGQ1MzfSzI/bTlSr7btJv/FFO7Yh6tanqVmIWOuNCu6/D1MilIEgLtmWqIrsv+o4IjpLAhgMBr/ncNAA== - electron-to-chromium@^1.3.47: version "1.4.471" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.471.tgz#14cb056d0ce4bfa99df57946d57fe46c2330dac3" @@ -5716,7 +5604,7 @@ error-stack-parser@^2.0.6: dependencies: stackframe "^1.1.1" -es-abstract@^1.10.0, es-abstract@^1.11.0, es-abstract@^1.12.0, es-abstract@^1.5.0, es-abstract@^1.7.0: +es-abstract@^1.10.0, es-abstract@^1.11.0, es-abstract@^1.12.0, es-abstract@^1.5.0: version "1.13.0" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.13.0.tgz#ac86145fdd5099d8dd49558ccba2eaf9b88e24e9" integrity sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg== @@ -6979,11 +6867,6 @@ fsevents@^2.3.2, fsevents@~2.3.2: resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== -fsevents@~2.1.2: - version "2.1.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" - integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== - function-bind@^1.0.2, function-bind@^1.1.1, function-bind@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" @@ -7503,7 +7386,7 @@ glob-parent@^3.1.0: is-glob "^3.1.0" path-dirname "^1.0.0" -glob-parent@^5.0.0, glob-parent@^5.1.0, glob-parent@^5.1.1, glob-parent@^5.1.2, glob-parent@~5.1.0, glob-parent@~5.1.2: +glob-parent@^5.0.0, glob-parent@^5.1.0, glob-parent@^5.1.1, glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== @@ -8088,16 +7971,6 @@ http-deceiver@^1.2.7: resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc= -http-errors@1.6.3, http-errors@~1.6.2, http-errors@~1.6.3: - version "1.6.3" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" - integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.0" - statuses ">= 1.4.0 < 2" - http-errors@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" @@ -8109,6 +7982,16 @@ http-errors@2.0.0: statuses "2.0.1" toidentifier "1.0.1" +http-errors@~1.6.2: + version "1.6.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" + integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" + http-parser-js@>=0.5.1: version "0.5.8" resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.8.tgz#af23090d9ac4e24573de6f6aecc9d84a48bf20e3" @@ -8171,13 +8054,6 @@ hyperlinker@^1.0.0: resolved "https://registry.yarnpkg.com/hyperlinker/-/hyperlinker-1.0.0.tgz#23dc9e38a206b208ee49bc2d6c8ef47027df0c0e" integrity sha512-Ty8UblRWFEcfSuIaajM34LdPXIhbs1ajEX/BBPv24J+enSVaEVY63xQ6lTO9VRYS5LAoghIG0IDJ+p+IPzKUQQ== -iconv-lite@0.4.23: - version "0.4.23" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63" - integrity sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - iconv-lite@0.4.24, iconv-lite@^0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" @@ -10701,13 +10577,6 @@ node-preload@^0.2.1: dependencies: process-on-spawn "^1.0.0" -node-releases@^1.1.42: - version "1.1.42" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.42.tgz#a999f6a62f8746981f6da90627a8d2fc090bbad7" - integrity sha512-OQ/ESmUqGawI2PRX+XIRao44qWYBBfN54ImQYdWVTQqUckuejOg76ysSqDBK8NG3zwySRVnX36JwDQ6x+9GxzA== - dependencies: - semver "^6.3.0" - node-releases@^2.0.12: version "2.0.13" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.13.tgz#d5ed1627c23e3461e819b02e57b75e4899b1c81d" @@ -11041,13 +10910,6 @@ on-finished@2.4.1: dependencies: ee-first "1.1.1" -on-finished@~2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" - integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= - dependencies: - ee-first "1.1.1" - on-headers@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" @@ -11988,11 +11850,6 @@ qs@6.11.0: dependencies: side-channel "^1.0.4" -qs@6.5.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" - integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== - qs@~6.5.2: version "6.5.3" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" @@ -12093,16 +11950,6 @@ rat-vec@^1.1.1: dependencies: big-rat "^1.0.3" -raw-body@2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.3.tgz#1b324ece6b5706e153855bc1148c65bb7f6ea0c3" - integrity sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw== - dependencies: - bytes "3.0.0" - http-errors "1.6.3" - iconv-lite "0.4.23" - unpipe "1.0.0" - raw-body@2.5.1: version "2.5.1" resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" @@ -12686,13 +12533,6 @@ readdirp@^2.2.1: micromatch "^3.1.10" readable-stream "^2.0.2" -readdirp@~3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e" - integrity sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ== - dependencies: - picomatch "^2.2.1" - readdirp@~3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" @@ -14967,14 +14807,6 @@ type-fest@^0.8.0, type-fest@^0.8.1: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== -type-is@~1.6.16: - version "1.6.16" - resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.16.tgz#f89ce341541c672b25ee7ae3c73dee3b2be50194" - integrity sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q== - dependencies: - media-typer "0.3.0" - mime-types "~2.1.18" - type-is@~1.6.18: version "1.6.18" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" From 5cd38b14b023e0fcb21c0618f80805eb19650a25 Mon Sep 17 00:00:00 2001 From: Justin Clift Date: Thu, 27 Jul 2023 04:01:42 +1000 Subject: [PATCH 224/274] Bump file-loader to 6.2.0 (#6295) --- package.json | 2 +- yarn.lock | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index 1c4d9e25f0..9aed411579 100644 --- a/package.json +++ b/package.json @@ -126,7 +126,7 @@ "eslint-plugin-no-only-tests": "^2.4.0", "eslint-plugin-react": "^7.17.0", "eslint-plugin-react-hooks": "^1.7.0", - "file-loader": "^2.0.0", + "file-loader": "^6.2.0", "html-webpack-plugin": "^4.5.2", "identity-obj-proxy": "^3.0.0", "jest": "^24.1.0", diff --git a/yarn.lock b/yarn.lock index 780d88960b..8c938baf91 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6494,13 +6494,13 @@ file-entry-cache@^5.0.1: dependencies: flat-cache "^2.0.1" -file-loader@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-2.0.0.tgz#39749c82f020b9e85901dcff98e8004e6401cfde" - integrity sha512-YCsBfd1ZGCyonOKLxPiKPdu+8ld9HAaMEvJewzz+b2eTF7uL5Zm/HdBF6FjCrpCMRq25Mi0U1gl4pwn2TlH7hQ== +file-loader@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.2.0.tgz#baef7cf8e1840df325e4390b4484879480eebe4d" + integrity sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw== dependencies: - loader-utils "^1.0.2" - schema-utils "^1.0.0" + loader-utils "^2.0.0" + schema-utils "^3.0.0" file-uri-to-path@1.0.0: version "1.0.0" From fbe2f4d80895ea3a450dc3193c5fa45e81700812 Mon Sep 17 00:00:00 2001 From: Justin Clift Date: Thu, 27 Jul 2023 05:35:41 +1000 Subject: [PATCH 225/274] Update NodeJS in our CI to 16.20.x (#6297) --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 53b2d6751a..9c2886da5b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -5,7 +5,7 @@ on: - master pull_request: env: - NODE_VERSION: 14.17 + NODE_VERSION: 16.20.1 jobs: backend-lint: runs-on: ubuntu-22.04 From 03d54d3313aef13d1e90c63a26a3835b541eb3e5 Mon Sep 17 00:00:00 2001 From: Justin Clift Date: Thu, 27 Jul 2023 06:48:45 +1000 Subject: [PATCH 226/274] Update Netlify to NodeJS 16.20.1 and Yarn 1.22.19 (#6298) Also, Netlify doesn't seem to need yarn force installed any more --- netlify.toml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/netlify.toml b/netlify.toml index fe9220230d..a752dd0fc2 100644 --- a/netlify.toml +++ b/netlify.toml @@ -3,12 +3,12 @@ publish = "client/dist" # Netlify doesn't seem to install Yarn even though NETLIFY_USE_YARN is set below # command = "cd ../ && npm i -g yarn@1.22.19 && yarn --frozen-lockfile --force && cd viz-lib && yarn build:babel && cd .. && rm -r ./node_modules/@redash/viz && cp -r ./viz-lib/. ./node_modules/@redash/viz && yarn build && cd ./client" - command = "cd ../ && npm i -g yarn@1.22.19 && yarn cache clean && yarn --frozen-lockfile --network-concurrency 1 && yarn build && cd ./client" + command = "cd ../ && yarn cache clean && yarn --frozen-lockfile --network-concurrency 1 && yarn build && cd ./client" [build.environment] - NODE_VERSION = "14.16.1" + NODE_VERSION = "16.20.1" NETLIFY_USE_YARN = "true" - YARN_VERSION = "1.22.10" + YARN_VERSION = "1.22.19" CYPRESS_INSTALL_BINARY = "0" PUPPETEER_SKIP_CHROMIUM_DOWNLOAD = "1" From a7c15b078af0f756d24addac29d4c68c0e23d1f6 Mon Sep 17 00:00:00 2001 From: Justin Clift Date: Thu, 27 Jul 2023 07:26:33 +1000 Subject: [PATCH 227/274] Bump babel-plugin-module-resolver to 5.0.0 in viz-lib (#6296) --- viz-lib/package.json | 2 +- viz-lib/yarn.lock | 60 ++++++++++++++++++++++++-------------------- 2 files changed, 34 insertions(+), 28 deletions(-) diff --git a/viz-lib/package.json b/viz-lib/package.json index 8ea9cce924..5c6d747f20 100644 --- a/viz-lib/package.json +++ b/viz-lib/package.json @@ -52,7 +52,7 @@ "@types/tinycolor2": "^1.4.2", "babel-loader": "^8.1.0", "babel-plugin-istanbul": "^6.1.1", - "babel-plugin-module-resolver": "^4.0.0", + "babel-plugin-module-resolver": "^5.0.0", "css-loader": "^3.5.2", "enzyme": "^3.8.0", "enzyme-adapter-react-16": "^1.15.7", diff --git a/viz-lib/yarn.lock b/viz-lib/yarn.lock index 7ed0491dbc..0b03abcaff 100644 --- a/viz-lib/yarn.lock +++ b/viz-lib/yarn.lock @@ -2764,16 +2764,16 @@ babel-plugin-jest-hoist@^24.9.0: dependencies: "@types/babel__traverse" "^7.0.6" -babel-plugin-module-resolver@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/babel-plugin-module-resolver/-/babel-plugin-module-resolver-4.0.0.tgz#8f3a3d9d48287dc1d3b0d5595113adabd36a847f" - integrity sha512-3pdEq3PXALilSJ6dnC4wMWr0AZixHRM4utpdpBR9g5QG7B7JwWyukQv7a9hVxkbGFl+nQbrHDqqQOIBtTXTP/Q== +babel-plugin-module-resolver@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/babel-plugin-module-resolver/-/babel-plugin-module-resolver-5.0.0.tgz#2b7fc176bd55da25f516abf96015617b4f70fc73" + integrity sha512-g0u+/ChLSJ5+PzYwLwP8Rp8Rcfowz58TJNCe+L/ui4rpzE/mg//JVX0EWBUYoxaextqnwuGHzfGp2hh0PPV25Q== dependencies: - find-babel-config "^1.2.0" - glob "^7.1.6" + find-babel-config "^2.0.0" + glob "^8.0.3" pkg-up "^3.1.0" - reselect "^4.0.0" - resolve "^1.13.1" + reselect "^4.1.7" + resolve "^1.22.1" babel-plugin-polyfill-corejs2@^0.4.4: version "0.4.5" @@ -4664,13 +4664,13 @@ filtered-vector@^1.2.1: binary-search-bounds "^1.0.0" cubic-hermite "^1.0.0" -find-babel-config@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/find-babel-config/-/find-babel-config-1.2.0.tgz#a9b7b317eb5b9860cda9d54740a8c8337a2283a2" - integrity sha512-jB2CHJeqy6a820ssiqwrKMeyC6nNdmrcgkKWJWmpoxpE8RKciYJXCcXRq1h2AzCo5I5BJeN2tkGEO3hLTuePRA== +find-babel-config@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/find-babel-config/-/find-babel-config-2.0.0.tgz#a8216f825415a839d0f23f4d18338a1cc966f701" + integrity sha512-dOKT7jvF3hGzlW60Gc3ONox/0rRZ/tz7WCil0bqA1In/3I8f1BctpXahRnEKDySZqci7u+dqq93sZST9fOJpFw== dependencies: - json5 "^0.5.1" - path-exists "^3.0.0" + json5 "^2.1.1" + path-exists "^4.0.0" find-cache-dir@^2.0.0, find-cache-dir@^2.1.0: version "2.1.0" @@ -5335,7 +5335,7 @@ glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.2.0: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.1.4, glob@^7.1.6, glob@~7.1.6: +glob@^7.1.4, glob@~7.1.6: version "7.1.6" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== @@ -5347,6 +5347,17 @@ glob@^7.1.4, glob@^7.1.6, glob@~7.1.6: once "^1.3.0" path-is-absolute "^1.0.0" +glob@^8.0.3: + version "8.1.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" + integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^5.0.1" + once "^1.3.0" + globals@^11.1.0: version "11.12.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" @@ -6831,11 +6842,6 @@ json5-writer@^0.1.8: dependencies: jscodeshift "^0.6.3" -json5@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" - integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= - json5@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" @@ -7273,7 +7279,7 @@ minimatch@^3.0.2, minimatch@^3.0.4, minimatch@^3.1.1: dependencies: brace-expansion "^1.1.7" -minimatch@^5.1.0: +minimatch@^5.0.1, minimatch@^5.1.0: version "5.1.6" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== @@ -8932,10 +8938,10 @@ require-main-filename@^2.0.0: resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== -reselect@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/reselect/-/reselect-4.0.0.tgz#f2529830e5d3d0e021408b246a206ef4ea4437f7" - integrity sha512-qUgANli03jjAyGlnbYVAV5vvnOmJnODyABz51RdBN7M4WaVu8mecZWgyQNkG8Yqe3KRGRt0l4K4B3XVEULC4CA== +reselect@^4.1.7: + version "4.1.8" + resolved "https://registry.yarnpkg.com/reselect/-/reselect-4.1.8.tgz#3f5dc671ea168dccdeb3e141236f69f02eaec524" + integrity sha512-ab9EmR80F/zQTMNeneUr4cv+jSwPJgIlvEmVwLerwrWVbpLlBuls9XHzIeTFy4cegU2NHBp3va0LKOzU5qFEYQ== resolve-cwd@^2.0.0: version "2.0.0" @@ -8988,14 +8994,14 @@ resolve@^0.6.1: resolved "https://registry.yarnpkg.com/resolve/-/resolve-0.6.3.tgz#dd957982e7e736debdf53b58a4dd91754575dd46" integrity sha1-3ZV5gufnNt699TtYpN2RdUV13UY= -resolve@^1.0.0, resolve@^1.1.5, resolve@^1.13.1, resolve@~1.15.1: +resolve@^1.0.0, resolve@^1.1.5, resolve@~1.15.1: version "1.15.1" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.15.1.tgz#27bdcdeffeaf2d6244b95bb0f9f4b4653451f3e8" integrity sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w== dependencies: path-parse "^1.0.6" -resolve@^1.10.0, resolve@^1.14.2, resolve@^1.20.0: +resolve@^1.10.0, resolve@^1.14.2, resolve@^1.20.0, resolve@^1.22.1: version "1.22.2" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.2.tgz#0ed0943d4e301867955766c9f3e1ae6d01c6845f" integrity sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g== From 58b505536f173bc9e29849300900abc0914e65cb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 26 Jul 2023 22:01:44 +0000 Subject: [PATCH 228/274] Bump json5 from 1.0.1 to 1.0.2 in /viz-lib (#6299) Bumps [json5](https://github.com/json5/json5) from 1.0.1 to 1.0.2. - [Release notes](https://github.com/json5/json5/releases) - [Changelog](https://github.com/json5/json5/blob/main/CHANGELOG.md) - [Commits](https://github.com/json5/json5/compare/v1.0.1...v1.0.2) --- updated-dependencies: - dependency-name: json5 dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- viz-lib/yarn.lock | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/viz-lib/yarn.lock b/viz-lib/yarn.lock index 0b03abcaff..c903e7fc52 100644 --- a/viz-lib/yarn.lock +++ b/viz-lib/yarn.lock @@ -6843,20 +6843,13 @@ json5-writer@^0.1.8: jscodeshift "^0.6.3" json5@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" - integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== + version "1.0.2" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" + integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== dependencies: minimist "^1.2.0" -json5@^2.1.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43" - integrity sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA== - dependencies: - minimist "^1.2.5" - -json5@^2.2.2: +json5@^2.1.1, json5@^2.2.2: version "2.2.3" resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== From 7a421cf6d09b302e705871697d88f4b8d092c20f Mon Sep 17 00:00:00 2001 From: Justin Clift Date: Thu, 27 Jul 2023 09:13:26 +1000 Subject: [PATCH 229/274] Bump plotly.js to 1.58.5 in viz-lib (#6300) --- viz-lib/package.json | 4 +- viz-lib/yarn.lock | 492 +++++++++++-------------------------------- 2 files changed, 120 insertions(+), 376 deletions(-) diff --git a/viz-lib/package.json b/viz-lib/package.json index 5c6d747f20..cc0ef525aa 100644 --- a/viz-lib/package.json +++ b/viz-lib/package.json @@ -46,7 +46,7 @@ "@types/jest": "^26.0.18", "@types/leaflet": "^1.5.19", "@types/numeral": "0.0.28", - "@types/plotly.js": "^1.54.4", + "@types/plotly.js": "^1.54.22", "@types/react": "^17.0.0", "@types/react-dom": "^17.0.0", "@types/tinycolor2": "^1.4.2", @@ -91,7 +91,7 @@ "leaflet.markercluster": "^1.1.0", "lodash": "^4.17.10", "numeral": "^2.0.6", - "plotly.js": "1.54.4", + "plotly.js": "1.58.5", "react-pivottable": "^0.9.0", "react-sortable-hoc": "^1.10.1", "tinycolor2": "^1.4.1", diff --git a/viz-lib/yarn.lock b/viz-lib/yarn.lock index c903e7fc52..e1c9344926 100644 --- a/viz-lib/yarn.lock +++ b/viz-lib/yarn.lock @@ -2071,10 +2071,10 @@ resolved "https://registry.yarnpkg.com/@types/numeral/-/numeral-0.0.28.tgz#e43928f0bda10b169b6f7ecf99e3ddf836b8ebe4" integrity sha512-Sjsy10w6XFHDktJJdXzBJmoondAKW+LcGpRFH+9+zXEDj0cOH8BxJuZA9vUDSMAzU1YRJlsPKmZEEiTYDlICLw== -"@types/plotly.js@^1.54.4": - version "1.54.4" - resolved "https://registry.yarnpkg.com/@types/plotly.js/-/plotly.js-1.54.4.tgz#ede63dbc48c9d37fb1b9b65afa0e8f59225ecee2" - integrity sha512-qKqNIw09Huuzz3/vkHXQeObLPMf7jbe99uTK246ZSh502xpldJxFuOmubPgSgq3bchRVJeR+mM0Dm6/FctL6tg== +"@types/plotly.js@^1.54.22": + version "1.54.22" + resolved "https://registry.yarnpkg.com/@types/plotly.js/-/plotly.js-1.54.22.tgz#001b9cfafc5e0bdf133bc6ab6e30ff0af39e584d" + integrity sha512-/xL9++eA7VnIIZqNQOw6sZ7DtEmfoHj5rAD2CjU2LCOqem/BxTA1KlpdUWEHOiou6za4HKnM+Nvho3jTBPYJ/w== dependencies: "@types/d3" "^3" @@ -2297,11 +2297,6 @@ abs-svg-path@^0.1.1, abs-svg-path@~0.1.1: resolved "https://registry.yarnpkg.com/abs-svg-path/-/abs-svg-path-0.1.1.tgz#df601c8e8d2ba10d4a76d625e236a9a39c2723bf" integrity sha1-32Acjo0roQ1KdtYl4japo5wnI78= -acorn-dynamic-import@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz#482210140582a36b83c3e342e1cfebcaa9240948" - integrity sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw== - acorn-globals@^4.1.0: version "4.3.4" resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.4.tgz#9fa1926addc11c97308c4e66d7add0d40c3272e7" @@ -2315,11 +2310,6 @@ acorn-import-assertions@^1.9.0: resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz#507276249d684797c84e0734ef84860334cfb1ac" integrity sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA== -acorn-jsx@^5.0.1: - version "5.2.0" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.2.0.tgz#4c66069173d6fdd68ed85239fc256226182b2ebe" - integrity sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ== - acorn-jsx@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" @@ -2340,11 +2330,6 @@ acorn@^6.0.1: resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== -acorn@^6.1.1: - version "6.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474" - integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA== - acorn@^7.1.1: version "7.1.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.1.tgz#e35668de0b402f359de515c5482a1ab9f89a69bf" @@ -2540,6 +2525,11 @@ array-filter@^1.0.0: resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-1.0.0.tgz#baf79e62e6ef4c2a4c0b831232daffec251f9d83" integrity sha1-uveeYubvTCpMC4MSMtr/7CUfnYM= +array-find-index@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" + integrity sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw== + array-normalize@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/array-normalize/-/array-normalize-1.1.4.tgz#d75cec57383358af38efdf6a78071aa36ae4174c" @@ -2657,11 +2647,6 @@ atob-lite@^1.0.0: resolved "https://registry.yarnpkg.com/atob-lite/-/atob-lite-1.0.0.tgz#b88dca6006922b962094f7556826bab31c4a296b" integrity sha1-uI3KYAaSK5YglPdVaCa6sxxKKWs= -atob-lite@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/atob-lite/-/atob-lite-2.0.0.tgz#0fef5ad46f1bd7a8502c65727f0367d5ee43d696" - integrity sha1-D+9a1G8b16hQLGVyfwNn1e5D1pY= - atob@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" @@ -2905,6 +2890,14 @@ bl@^1.0.0: readable-stream "^2.3.5" safe-buffer "^5.1.1" +bl@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/bl/-/bl-2.2.1.tgz#8c11a7b730655c5d56898cdc871224f40fd901d5" + integrity sha512-6Pesp1w0DEX1N550i/uGV/TqucVL4AM/pgThFSN/Qq9si1/DF9aIHs1BxD8V/QU0HoeHO6cQRTAuYnLPKq1e4g== + dependencies: + readable-stream "^2.3.5" + safe-buffer "^5.1.1" + bn.js@^4.11.6: version "4.11.8" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" @@ -3005,27 +2998,6 @@ bser@2.1.1: dependencies: node-int64 "^0.4.0" -buble@^0.19.3: - version "0.19.8" - resolved "https://registry.yarnpkg.com/buble/-/buble-0.19.8.tgz#d642f0081afab66dccd897d7b6360d94030b9d3d" - integrity sha512-IoGZzrUTY5fKXVkgGHw3QeXFMUNBFv+9l8a4QJKG1JhG3nCMHTdEX1DCOg8568E2Q9qvAQIiSokv6Jsgx8p2cA== - 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" - os-homedir "^2.0.0" - regexpu-core "^4.5.4" - -bubleify@^1.1.0, bubleify@^1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/bubleify/-/bubleify-1.2.1.tgz#c11fa33fa59d5b9b747d4e486f43889084257f37" - integrity sha512-vp3NHmaQVoKaKWvi15FTMinPNjfp+47+/kFJ9ifezdMF/CBLArCxDVUh+FQE3qRxCRj1qyjJqilTBHHqlM8MaQ== - dependencies: - buble "^0.19.3" - buffer-from@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" @@ -3271,7 +3243,7 @@ collection-visit@^1.0.0: map-visit "^1.0.0" object-visit "^1.0.0" -color-alpha@^1.0.4: +color-alpha@1.0.4, color-alpha@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/color-alpha/-/color-alpha-1.0.4.tgz#c141dc926e95fc3db647d0e14e5bc3651c29e040" integrity sha512-lr8/t5NPozTSqli+duAN+x+no/2WaKTeWvxhHGN+aXT6AJ8vPlzLa7UriyjWak0pSC2jHol9JgjBYnnHsGha9A== @@ -3318,7 +3290,7 @@ color-normalize@1.5.0, color-normalize@^1.5.0: color-rgba "^2.1.1" dtype "^2.0.0" -color-parse@^1.3.8: +color-parse@1.3.8, color-parse@^1.3.8: version "1.3.8" resolved "https://registry.yarnpkg.com/color-parse/-/color-parse-1.3.8.tgz#eaf54cd385cb34c0681f18c218aca38478082fa3" integrity sha512-1Y79qFv0n1xair3lNMTNeoFvmc3nirMVBij24zbs1f13+7fPpQClMg5b4AuKXLt3szj7BRlHMCXHplkce6XlmA== @@ -3327,7 +3299,7 @@ color-parse@^1.3.8: defined "^1.0.0" is-plain-obj "^1.1.0" -color-rgba@^2.1.1: +color-rgba@2.1.1, color-rgba@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/color-rgba/-/color-rgba-2.1.1.tgz#4633b83817c7406c90b3d7bf4d1acfa48dde5c83" integrity sha512-VaX97wsqrMwLSOR6H7rU1Doa2zyVdmShabKrPEIFywLlHoibgD3QW9Dw6fSqM4+H/LfjprDNAUUW31qEQcGzNw== @@ -3417,17 +3389,6 @@ component-emitter@^1.2.1: resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== -compute-dims@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/compute-dims/-/compute-dims-1.1.0.tgz#6d5b712929b6c531af3b4d580ed5adacbbd77e0c" - integrity sha512-YHMiIKjH/8Eom8zATk3g8/lH3HxGCZcVQyEfEoVrfWI7od/WRpTgRGShnei3jArYSx77mQqPxZNokjGHCdLfxg== - dependencies: - utils-copy "^1.0.0" - validate.io-array "^1.0.6" - validate.io-matrix-like "^1.0.2" - validate.io-ndarray-like "^1.0.0" - validate.io-positive-integer "^1.0.0" - concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" @@ -3443,16 +3404,6 @@ concat-stream@^1.5.2: readable-stream "^2.2.2" typedarray "^0.0.6" -const-max-uint32@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/const-max-uint32/-/const-max-uint32-1.0.2.tgz#f009bb6230e678ed874dd2d6a9cd9e3cbfabb676" - integrity sha1-8Am7YjDmeO2HTdLWqc2ePL+rtnY= - -const-pinf-float64@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/const-pinf-float64/-/const-pinf-float64-1.0.0.tgz#f6efb0d79f9c0986d3e79f2923abf9b70b63d726" - integrity sha1-9u+w15+cCYbT558pI6v5twtj1yY= - convert-source-map@^1.1.0: version "1.7.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" @@ -3716,6 +3667,18 @@ d3-shape@^1.2.0: dependencies: d3-path "1" +d3-time-format@^2.2.3: + version "2.3.0" + resolved "https://registry.yarnpkg.com/d3-time-format/-/d3-time-format-2.3.0.tgz#107bdc028667788a8924ba040faf1fbccd5a7850" + integrity sha512-guv6b2H37s2Uq/GefleCDtbe0XZAuy7Wa49VGkPVPMfLL9qObgBST3lEHJBMUp8S7NdLQAGIvr2KXk8Hc98iKQ== + dependencies: + d3-time "1" + +d3-time@1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/d3-time/-/d3-time-1.1.0.tgz#b1e19d307dae9c900b7e5b25ffc5dcc249a8a0f1" + integrity sha512-Xh0isrZ5rPYYdqhAVk8VLnMEidhz5aP7htAADH6MfzgmmicPkTo8LhkLxci61/lCB7n7UmE3bN0leRt+qvkLxA== + d3-timer@1: version "1.0.10" resolved "https://registry.yarnpkg.com/d3-timer/-/d3-timer-1.0.10.tgz#dfe76b8a91748831b13b6d9c793ffbd508dd9de5" @@ -4716,11 +4679,6 @@ flatten-vertex-data@^1.0.2: dependencies: dtype "^2.0.0" -flip-pixels@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/flip-pixels/-/flip-pixels-1.0.2.tgz#aad7b7d9fc65932d5f27e2e4dac4b494140845e4" - integrity sha512-oXbJGbjDnfJRWPC7Va38EFhd+A8JWE5/hCiKcK8qjCdbLj9DTpsq6MEudwpRTH+V4qq+Jw7d3pUgQdSr3x3mTA== - flow-parser@0.*: version "0.139.0" resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.139.0.tgz#c046779114487175f2b1e8aa639bf977d4c7dd9f" @@ -5033,7 +4991,7 @@ gl-format-compiler-error@^1.0.2: glsl-shader-name "^1.0.0" sprintf-js "^1.0.3" -gl-heatmap2d@^1.0.6: +gl-heatmap2d@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/gl-heatmap2d/-/gl-heatmap2d-1.1.1.tgz#dbbb2c288bfe277002fa50985155b0403d87640f" integrity sha512-6Vo1fPIB1vQFWBA/MR6JAA16XuQuhwvZRbSjYEq++m4QV33iqjGS2HcVIRfJGX+fomd5eiz6bwkVZcKm69zQPw== @@ -5108,7 +5066,7 @@ gl-plot2d@^1.4.5: glslify "^7.0.0" text-cache "^4.2.2" -gl-plot3d@^2.4.6: +gl-plot3d@^2.4.7: version "2.4.7" resolved "https://registry.yarnpkg.com/gl-plot3d/-/gl-plot3d-2.4.7.tgz#b66e18c5affdd664f42c884acf7b82c60b41ee78" integrity sha512-mLDVWrl4Dj0O0druWyHUK5l7cBQrRIJRn2oROEgrRuOgbbrLAzsREKefwMO0bA0YqkiZMFMnV5VvPA9j57X5Xg== @@ -5226,7 +5184,7 @@ gl-streamtube3d@^1.4.1: glsl-specular-cook-torrance "^2.0.1" glslify "^7.0.0" -gl-surface3d@^1.5.2: +gl-surface3d@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/gl-surface3d/-/gl-surface3d-1.6.0.tgz#5fc915759a91e9962dcfbf3982296c462a032526" integrity sha512-x15+u4712ysnB85G55RLJEml6mOB4VaDn0VTlXCc9JcjRl5Es10Tk7lhGGyiPtkCfHwvhnkxzYA1/rHHYN7Y0A== @@ -5534,6 +5492,27 @@ glslify@^7.0.0: through2 "^2.0.1" xtend "^4.0.0" +glslify@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/glslify/-/glslify-7.1.1.tgz#454d9172b410cb49864029c86d5613947fefd30b" + integrity sha512-bud98CJ6kGZcP9Yxcsi7Iz647wuDz3oN+IZsjCRi5X1PI7t/xPKeL0mOwXJjo+CRZMqvq0CkSJiywCcY7kVYog== + dependencies: + bl "^2.2.1" + concat-stream "^1.5.2" + duplexify "^3.4.5" + falafel "^2.1.0" + from2 "^2.3.0" + glsl-resolve "0.0.1" + glsl-token-whitespace-trim "^1.0.0" + glslify-bundle "^5.0.0" + glslify-deps "^1.2.5" + minimist "^1.2.5" + resolve "^1.1.5" + stack-trace "0.0.9" + static-eval "^2.0.5" + through2 "^2.0.1" + xtend "^4.0.0" + gopd@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" @@ -5748,14 +5727,10 @@ ignore@^4.0.6: resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== -image-palette@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/image-palette/-/image-palette-2.1.0.tgz#d976525a1df75964ca125d2dba2741e92905547f" - integrity sha512-3ImSEWD26+xuQFdP0RWR4WSXadZwvgrFhjGNpMEapTG1tf2XrBFS2dlKK5hNgH4UIaSQlSUFRn1NeA+zULIWbQ== - dependencies: - color-id "^1.1.0" - pxls "^2.0.0" - quantize "^1.0.2" +image-size@^0.7.5: + version "0.7.5" + resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.7.5.tgz#269f357cf5797cb44683dfa99790e54c705ead04" + integrity sha512-Hiyv+mXHfFEP7LzUL/llg9RwFxxY+o9N3JVLIeG5E7iFIFAalxvRU9UZthBdYDEVnzHMgjnKJPPpay5BWf1g9g== image-size@~0.5.0: version "0.5.5" @@ -5895,11 +5870,6 @@ is-arrayish@^0.2.1: resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== -is-base64@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/is-base64/-/is-base64-0.1.0.tgz#a6f20610c6ef4863a51cba32bc0222544b932622" - integrity sha512-WRRyllsGXJM7ZN7gPTCCQ/6wNPTRDwiWdPK66l5sJzcU/oOzcIcRRf0Rux8bkpox/1yjt0F6VJRsQOIG2qz5sg== - is-bigint@^1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" @@ -5914,11 +5884,6 @@ is-binary-path@~2.1.0: dependencies: binary-extensions "^2.0.0" -is-blob@^2.0.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-blob/-/is-blob-2.1.0.tgz#e36cd82c90653f1e1b930f11baf9c64216a05385" - integrity sha512-SZ/fTft5eUhQM6oF/ZaASFDEdbFVe89Imltn9uZr03wdKMcWNVYSMjQPFtg05QuNkt5l5c135ElvXEQG0rk4tw== - is-boolean-object@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.0.1.tgz#10edc0900dd127697a92f6f9807c7617d68ac48e" @@ -5932,7 +5897,7 @@ is-boolean-object@^1.1.0: call-bind "^1.0.2" has-tostringtag "^1.0.0" -is-browser@^2.0.1, is-browser@^2.1.0: +is-browser@^2.0.1: version "2.1.0" resolved "https://registry.yarnpkg.com/is-browser/-/is-browser-2.1.0.tgz#fc084d59a5fced307d6708c59356bad7007371a9" integrity sha512-F5rTJxDQ2sW81fcfOR1GnCXT6sVJC104fCyfj+mjpwNEwaPYSn5fte5jiHmBg3DHsIoL/l8Kvw5VN5SsTRcRFQ== @@ -5942,11 +5907,6 @@ is-buffer@^1.0.2, is-buffer@^1.1.5: resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== -is-buffer@^2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.4.tgz#3e572f23c8411a5cfd9557c849e3665e0b290623" - integrity sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A== - is-callable@^1.1.3: version "1.1.5" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.5.tgz#f7e46b596890456db74e7f6e976cb3273d06faab" @@ -6037,11 +5997,6 @@ is-firefox@^1.0.3: resolved "https://registry.yarnpkg.com/is-firefox/-/is-firefox-1.0.3.tgz#2a2a1567783a417f6e158323108f3861b0918562" integrity sha1-KioVZ3g6QX9uFYMjEI84YbCRhWI= -is-float-array@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-float-array/-/is-float-array-1.0.0.tgz#96d67b1cbadf47ab1e05be208933acd386978a09" - integrity sha512-4ew1Sx6B6kEAl3T3NOM0yB94J3NZnBdNt4paw0e8nY73yHHTeTEhyQ3Lj7EQEnv5LD+GxNTaT4L46jcKjjpLiQ== - is-fullwidth-code-point@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" @@ -6081,6 +6036,11 @@ is-mobile@^2.2.1: resolved "https://registry.yarnpkg.com/is-mobile/-/is-mobile-2.2.1.tgz#10f2320012c410cc285feecb13406bd586f1b2f8" integrity sha512-6zELsfVFr326eq2CI53yvqq6YBanOxKBybwDT+MbMS2laBnK6Ez8m5XHSuTQQbnKRfpDzCod1CMWW5q3wZYMvA== +is-mobile@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/is-mobile/-/is-mobile-2.2.2.tgz#f6c9c5d50ee01254ce05e739bdd835f1ed4e9954" + integrity sha512-wW/SXnYJkTjs++tVK5b6kVITZpAZPtUrt9SF80vvxGiF/Oywal+COk1jlRkiVq15RFNEQKQY31TkV24/1T5cVg== + is-negative-zero@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" @@ -7083,13 +7043,6 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" -magic-string@^0.25.3: - version "0.25.7" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051" - integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA== - dependencies: - sourcemap-codec "^1.4.4" - make-dir@^2.0.0, make-dir@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" @@ -7687,7 +7640,7 @@ object-is@^1.1.2, object-is@^1.1.5: call-bind "^1.0.2" define-properties "^1.1.3" -object-keys@^1.0.6, object-keys@^1.0.9, object-keys@^1.1.1: +object-keys@^1.0.6, object-keys@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== @@ -7827,11 +7780,6 @@ orbit-camera-controller@^4.0.0: filtered-vector "^1.2.1" gl-mat4 "^1.0.3" -os-homedir@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-2.0.0.tgz#a0c76bb001a8392a503cbd46e7e650b3423a923c" - integrity sha512-saRNz0DSC5C/I++gFIaJTXoFJMRwiP5zHar5vV3xQ2TkgEw6hDCcU5F272JjUylpiVgBrZNQHnfjkLabTfb92Q== - p-each-series@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-1.0.0.tgz#930f3d12dd1f50e7434457a22cd6f04ac6ad7f71" @@ -8100,49 +8048,54 @@ planar-graph-to-polyline@^1.0.0: two-product "^1.0.0" uniq "^1.0.0" -plotly.js@1.54.4: - version "1.54.4" - resolved "https://registry.yarnpkg.com/plotly.js/-/plotly.js-1.54.4.tgz#b197034eacb784b955bfae3ab3824c04a42bc84f" - integrity sha512-mklqX2dDTIHWmdH7mKFLFJeLz/bMy28JgohAxcXdRYH2hskLQ2wJ14GuOLd5nESpdjw/Edk7ZL6dwL0qTN3mwQ== +plotly.js@1.58.5: + version "1.58.5" + resolved "https://registry.yarnpkg.com/plotly.js/-/plotly.js-1.58.5.tgz#8f98ddce32c8333fe1e51d22b926324be059db95" + integrity sha512-ChTlnFXB4tB0CzcG1mqgUKYnrJsZ8REDGox8BHAa/ltsd48MOAhOmFgjyDxwsXyjjgwOI296GeYDft8g4ftLHQ== dependencies: "@plotly/d3-sankey" "0.7.2" "@plotly/d3-sankey-circular" "0.33.1" + "@plotly/point-cluster" "^3.1.9" "@turf/area" "^6.0.1" "@turf/bbox" "^6.0.1" "@turf/centroid" "^6.0.2" alpha-shape "^1.0.0" canvas-fit "^1.5.0" - color-normalize "^1.5.0" - color-rgba "^2.1.1" + color-alpha "1.0.4" + color-normalize "1.5.0" + color-parse "1.3.8" + color-rgba "2.1.1" convex-hull "^1.0.3" country-regex "^1.1.0" d3 "^3.5.17" d3-force "^1.2.1" d3-hierarchy "^1.1.9" d3-interpolate "^1.4.0" + d3-time-format "^2.2.3" delaunay-triangulate "^1.1.6" es6-promise "^4.2.8" fast-isnumeric "^1.1.4" gl-cone3d "^1.5.2" gl-contour2d "^1.1.7" gl-error3d "^1.0.16" - gl-heatmap2d "^1.0.6" + gl-heatmap2d "^1.1.0" gl-line3d "1.2.1" gl-mat4 "^1.2.0" gl-mesh3d "^2.3.1" gl-plot2d "^1.4.5" - gl-plot3d "^2.4.6" + gl-plot3d "^2.4.7" gl-pointcloud2d "^1.0.3" gl-scatter3d "^1.2.3" gl-select-box "^1.0.4" gl-spikes2d "^1.0.2" gl-streamtube3d "^1.4.1" - gl-surface3d "^1.5.2" + gl-surface3d "^1.6.0" gl-text "^1.1.8" - glslify "^7.0.0" + glslify "^7.1.1" has-hover "^1.0.1" has-passive-events "^1.0.0" - is-mobile "^2.2.1" + image-size "^0.7.5" + is-mobile "^2.2.2" mapbox-gl "1.10.1" matrix-camera-controller "^2.1.3" mouse-change "^1.4.0" @@ -8151,20 +8104,19 @@ plotly.js@1.54.4: ndarray "^1.0.19" ndarray-linear-interpolate "^1.0.0" parse-svg-path "^0.1.2" - point-cluster "^3.1.8" polybooljs "^1.2.0" regl "^1.6.1" - regl-error2d "^2.0.8" - regl-line2d "^3.0.15" - regl-scatter2d "^3.1.8" - regl-splom "^1.0.8" + regl-error2d "^2.0.11" + regl-line2d "^3.0.18" + regl-scatter2d "^3.2.1" + regl-splom "^1.0.12" right-now "^1.0.0" robust-orientation "^1.1.3" sane-topojson "^4.0.0" strongly-connected-components "^1.0.1" superscript-text "^1.0.0" svg-path-sdf "^1.1.3" - tinycolor2 "^1.4.1" + tinycolor2 "^1.4.2" to-px "1.0.1" topojson-client "^3.1.0" webgl-context "^2.2.0" @@ -8175,24 +8127,6 @@ pn@^1.1.0: resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" integrity sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA== -point-cluster@^3.1.8: - version "3.1.8" - resolved "https://registry.yarnpkg.com/point-cluster/-/point-cluster-3.1.8.tgz#a63625fd8964f2a5b446025a1acf8bcac42500c0" - integrity sha512-7klIr45dpMeZuqjIK9+qBg3m2IhyZJNJkdqjJFw0Olq75FM8ojrTMjClVUrMjNYRVqtwztxCHH71Fyjhg+YwyQ== - dependencies: - array-bounds "^1.0.1" - array-normalize "^1.1.4" - binary-search-bounds "^2.0.4" - bubleify "^1.1.0" - clamp "^1.0.1" - defined "^1.0.0" - dtype "^2.0.0" - flatten-vertex-data "^1.0.2" - is-obj "^1.0.1" - math-log2 "^1.0.1" - parse-rect "^1.2.0" - pick-by-alias "^1.2.0" - point-in-big-polygon@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/point-in-big-polygon/-/point-in-big-polygon-2.0.0.tgz#39b613ea6cf17d6b43e188f77f34c44c6b33ba55" @@ -8415,28 +8349,11 @@ punycode@^2.1.0, punycode@^2.1.1: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== -pxls@^2.0.0: - version "2.3.2" - resolved "https://registry.yarnpkg.com/pxls/-/pxls-2.3.2.tgz#79100d2cc95089fc6e00053a9d93c1ddddb2c7b4" - integrity sha512-pQkwgbLqWPcuES5iEmGa10OlCf5xG0blkIF3dg7PpRZShbTYcvAdfFfGL03SMrkaSUaa/V0UpN9HWg40O2AIIw== - dependencies: - arr-flatten "^1.1.0" - compute-dims "^1.1.0" - flip-pixels "^1.0.2" - is-browser "^2.1.0" - is-buffer "^2.0.3" - to-uint8 "^1.4.1" - qs@~6.5.2: version "6.5.3" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== -quantize@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/quantize/-/quantize-1.0.2.tgz#d25ac200a77b6d70f40127ca171a10e33c8546de" - integrity sha1-0lrCAKd7bXD0ASfKFxoQ4zyFRt4= - quat-slerp@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/quat-slerp/-/quat-slerp-1.0.1.tgz#2baa15ce3a6bbdc3241d972eb17283139ed69f29" @@ -8686,11 +8603,6 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" -regex-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/regex-regex/-/regex-regex-1.0.0.tgz#9048a1eaeb870f4d480dabc76fc42cdcc0bc3a72" - integrity sha1-kEih6uuHD01IDavHb8Qs3MC8OnI= - regexp.prototype.flags@^1.2.0: version "1.3.0" resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz#7aba89b3c13a64509dabcf3ca8d9fbb9bdf5cb75" @@ -8713,7 +8625,7 @@ regexpp@^3.1.0: resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== -regexpu-core@^4.5.4, regexpu-core@^4.7.0: +regexpu-core@^4.7.0: version "4.7.0" resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.0.tgz#fcbf458c50431b0bb7b45d6967b8192d91f3d938" integrity sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ== @@ -8756,28 +8668,27 @@ regjsparser@^0.9.1: dependencies: jsesc "~0.5.0" -regl-error2d@^2.0.8: - version "2.0.8" - resolved "https://registry.yarnpkg.com/regl-error2d/-/regl-error2d-2.0.8.tgz#0f26371ee99c78d42e9c5a197387e32034bcf640" - integrity sha512-5nszdicXbimRUnYB42i+O7KPcla7PzI62nZLCP6qVRKlQCf3rSrWbikMNd1S84LE8+deWHWcb8rZ/v7rZ9qmmw== +regl-error2d@^2.0.11: + version "2.0.12" + resolved "https://registry.yarnpkg.com/regl-error2d/-/regl-error2d-2.0.12.tgz#3b976e13fe641d5242a154fcacc80aecfa0a9881" + integrity sha512-r7BUprZoPO9AbyqM5qlJesrSRkl+hZnVKWKsVp7YhOl/3RIpi4UDGASGJY0puQ96u5fBYw/OlqV24IGcgJ0McA== dependencies: array-bounds "^1.0.1" - bubleify "^1.2.0" color-normalize "^1.5.0" flatten-vertex-data "^1.0.2" object-assign "^4.1.1" pick-by-alias "^1.2.0" - to-float32 "^1.0.1" + to-float32 "^1.1.0" update-diff "^1.1.0" -regl-line2d@^3.0.15: - version "3.0.15" - resolved "https://registry.yarnpkg.com/regl-line2d/-/regl-line2d-3.0.15.tgz#5baf2a0ed5024cec2ec038c6ada601c98ac579e3" - integrity sha512-RuQbg9iZ6MyuInG8izF6zjQ/2g4qL6sg1egiuFalWzaGSvuve/IWBsIcqKTlwpiEsRt9b4cHu9NYs2fLt1gYJw== +regl-line2d@^3.0.18: + version "3.1.2" + resolved "https://registry.yarnpkg.com/regl-line2d/-/regl-line2d-3.1.2.tgz#2bedef7f44c1f7fae75c90f9918258723ca84c1c" + integrity sha512-nmT7WWS/WxmXAQMkgaMKWXaVmwJ65KCrjbqHGOUjjqQi6shfT96YbBOvelXwO9hG7/hjvbzjtQ2UO0L3e7YaXQ== dependencies: array-bounds "^1.0.1" + array-find-index "^1.0.2" array-normalize "^1.1.4" - bubleify "^1.2.0" color-normalize "^1.5.0" earcut "^2.1.5" es6-weak-map "^2.0.3" @@ -8786,31 +8697,9 @@ regl-line2d@^3.0.15: object-assign "^4.1.1" parse-rect "^1.2.0" pick-by-alias "^1.2.0" - to-float32 "^1.0.1" - -regl-scatter2d@^3.1.2: - version "3.1.8" - resolved "https://registry.yarnpkg.com/regl-scatter2d/-/regl-scatter2d-3.1.8.tgz#5fdf77f9cee7e71497d038dc1b654dc4340b6bfb" - integrity sha512-Z9MYAUx9t8e3MsiHBbJAEstbIqauXxzcL9DmuKXQuRWfCMF2DBytYJtE0FpbQU6639wEMAJ54SEIlISWF8sQ2g== - dependencies: - array-range "^1.0.1" - array-rearrange "^2.2.2" - clamp "^1.0.1" - color-id "^1.1.0" - color-normalize "1.5.0" - color-rgba "^2.1.1" - flatten-vertex-data "^1.0.2" - glslify "^7.0.0" - image-palette "^2.1.0" - is-iexplorer "^1.0.0" - object-assign "^4.1.1" - parse-rect "^1.2.0" - pick-by-alias "^1.2.0" - point-cluster "^3.1.8" - to-float32 "^1.0.1" - update-diff "^1.1.0" + to-float32 "^1.1.0" -regl-scatter2d@^3.1.8: +regl-scatter2d@^3.2.1, regl-scatter2d@^3.2.3: version "3.2.9" resolved "https://registry.yarnpkg.com/regl-scatter2d/-/regl-scatter2d-3.2.9.tgz#cd27b014c355e80d96fb2f273b563fd8f1b094f0" integrity sha512-PNrXs+xaCClKpiB2b3HZ2j3qXQXhC5kcTh/Nfgx9rLO0EpEhab0BSQDqAsbdbpdf+pSHSJvbgitB7ulbGeQ+Fg== @@ -8831,23 +8720,19 @@ regl-scatter2d@^3.1.8: to-float32 "^1.1.0" update-diff "^1.1.0" -regl-splom@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/regl-splom/-/regl-splom-1.0.8.tgz#05f165a6f0b8afc6b6b97fafa775282d44387db3" - integrity sha512-4GQTgcArCbGLsXhgalWVBxeW7OXllnu+Gvil/4SbQQmtiqLCl+xgF79pISKY9mLXTlobxiX7cVKdjGjp25559A== +regl-splom@^1.0.12: + version "1.0.14" + resolved "https://registry.yarnpkg.com/regl-splom/-/regl-splom-1.0.14.tgz#58800b7bbd7576aa323499a1966868a6c9ea1456" + integrity sha512-OiLqjmPRYbd7kDlHC6/zDf6L8lxgDC65BhC8JirhP4ykrK4x22ZyS+BnY8EUinXKDeMgmpRwCvUmk7BK4Nweuw== dependencies: array-bounds "^1.0.1" array-range "^1.0.1" - bubleify "^1.2.0" color-alpha "^1.0.4" - defined "^1.0.0" flatten-vertex-data "^1.0.2" - left-pad "^1.3.0" parse-rect "^1.2.0" pick-by-alias "^1.2.0" - point-cluster "^3.1.8" raf "^3.4.1" - regl-scatter2d "^3.1.2" + regl-scatter2d "^3.2.3" regl@^1.3.11: version "1.4.2" @@ -9507,11 +9392,6 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -sourcemap-codec@^1.4.4: - version "1.4.8" - resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" - integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== - spdx-correct@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.2.0.tgz#4f5ab0668f0059e34f9c00dce331784a12de4e9c" @@ -9597,6 +9477,13 @@ static-eval@^2.0.0: dependencies: escodegen "^1.11.1" +static-eval@^2.0.5: + version "2.1.0" + resolved "https://registry.yarnpkg.com/static-eval/-/static-eval-2.1.0.tgz#a16dbe54522d7fa5ef1389129d813fd47b148014" + integrity sha512-agtxZ/kWSsCkI5E4QifRwsaPs0P0JmZV6dkLz6ILYfFYQGn+5plctanRN+IC8dJRiFkyXHrwEE3W9Wmx67uDbw== + dependencies: + escodegen "^1.11.1" + static-extend@^0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" @@ -9630,14 +9517,6 @@ string-split-by@^1.0.0: dependencies: parenthesis "^3.1.5" -string-to-arraybuffer@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-to-arraybuffer/-/string-to-arraybuffer-1.0.2.tgz#161147fbadea02e28b0935002cec4c40f1ca7f0a" - integrity sha512-DaGZidzi93dwjQen5I2osxR9ERS/R7B1PFyufNMnzhj+fmlDQAc1DSDIJVJhgI8Oq221efIMbABUBdPHDRt43Q== - dependencies: - atob-lite "^2.0.0" - is-base64 "^0.1.0" - string-width@^3.0.0, string-width@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" @@ -9986,6 +9865,11 @@ tinycolor2@^1.4.1: resolved "https://registry.yarnpkg.com/tinycolor2/-/tinycolor2-1.4.1.tgz#f4fad333447bc0b07d4dc8e9209d8f39a8ac77e8" integrity sha1-9PrTM0R7wLB9TcjpIJ2POaisd+g= +tinycolor2@^1.4.2: + version "1.6.0" + resolved "https://registry.yarnpkg.com/tinycolor2/-/tinycolor2-1.6.0.tgz#f98007460169b0263b97072c5ae92484ce02d09e" + integrity sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw== + tinyqueue@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/tinyqueue/-/tinyqueue-2.0.3.tgz#64d8492ebf39e7801d7bd34062e29b45b2035f08" @@ -9996,25 +9880,11 @@ tmpl@1.0.5: resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== -to-array-buffer@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/to-array-buffer/-/to-array-buffer-3.2.0.tgz#cb684dd691a7368c3b249c2348d75227f7d4dbb4" - integrity sha512-zN33mwi0gpL+7xW1ITLfJ48CEj6ZQW0ZAP0MU+2W3kEY0PAIncyuxmD4OqkUVhPAbTP7amq9j/iwvZKYS+lzSQ== - dependencies: - flatten-vertex-data "^1.0.2" - is-blob "^2.0.1" - string-to-arraybuffer "^1.0.0" - to-fast-properties@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== -to-float32@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/to-float32/-/to-float32-1.0.1.tgz#22d5921f38183164b9e7e9876158c0c16cb9753a" - integrity sha512-nOy2WSwae3xhZbc+05xiCuU3ZPPmH0L4Rg4Q1qiOGFSuNSCTB9nVJaGgGl3ZScxAclX/L8hJuDHJGDAzbfuKCQ== - to-float32@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/to-float32/-/to-float32-1.1.0.tgz#39bd3b11eadccd490c08f5f9171da5127b6f3946" @@ -10066,17 +9936,6 @@ to-regex@^3.0.1, to-regex@^3.0.2: regex-not "^1.0.2" safe-regex "^1.1.0" -to-uint8@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/to-uint8/-/to-uint8-1.4.1.tgz#9f45694905b827f247d37bc8ec83b2818d81fac9" - integrity sha512-o+ochsMlTZyucbww8It401FC2Rx+OP2RpDeYbA6h+y9HgedDl1UjdsJ9CmzKEG7AFP9es5PmJ4eDWeeeXihESg== - dependencies: - arr-flatten "^1.1.0" - clamp "^1.0.1" - is-base64 "^0.1.0" - is-float-array "^1.0.0" - to-array-buffer "^3.0.0" - topojson-client@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/topojson-client/-/topojson-client-3.1.0.tgz#22e8b1ed08a2b922feeb4af6f53b6ef09a467b99" @@ -10207,11 +10066,6 @@ type-fest@^0.20.2: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== -type-name@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/type-name/-/type-name-2.0.2.tgz#efe7d4123d8ac52afff7f40c7e4dec5266008fb4" - integrity sha1-7+fUEj2KxSr/9/QMfk3sUmYAj7Q= - type@^1.0.1: version "1.2.0" resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" @@ -10440,45 +10294,6 @@ util.promisify@^1.0.0: object.getownpropertydescriptors "^2.1.6" safe-array-concat "^1.0.0" -utils-copy-error@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/utils-copy-error/-/utils-copy-error-1.0.1.tgz#791de393c0f09890afd59f3cbea635f079a94fa5" - integrity sha1-eR3jk8DwmJCv1Z88vqY18HmpT6U= - dependencies: - object-keys "^1.0.9" - utils-copy "^1.1.0" - -utils-copy@^1.0.0, utils-copy@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/utils-copy/-/utils-copy-1.1.1.tgz#6e2b97982aa8cd73e1182a3e6f8bec3c0f4058a7" - integrity sha1-biuXmCqozXPhGCo+b4vsPA9AWKc= - dependencies: - const-pinf-float64 "^1.0.0" - object-keys "^1.0.9" - type-name "^2.0.0" - utils-copy-error "^1.0.0" - utils-indexof "^1.0.0" - utils-regex-from-string "^1.0.0" - validate.io-array "^1.0.3" - validate.io-buffer "^1.0.1" - validate.io-nonnegative-integer "^1.0.0" - -utils-indexof@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/utils-indexof/-/utils-indexof-1.0.0.tgz#20feabf09ef1018b523643e8380e7bc83ec61b5c" - integrity sha1-IP6r8J7xAYtSNkPoOA57yD7GG1w= - dependencies: - validate.io-array-like "^1.0.1" - validate.io-integer-primitive "^1.0.0" - -utils-regex-from-string@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/utils-regex-from-string/-/utils-regex-from-string-1.0.0.tgz#fe1a2909f8de0ff0d5182c80fbc654d6a687d189" - integrity sha1-/hopCfjeD/DVGCyA+8ZU1qaH0Yk= - dependencies: - regex-regex "^1.0.0" - validate.io-string-primitive "^1.0.0" - uuid@^3.3.2: version "3.4.0" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" @@ -10497,77 +10312,6 @@ validate-npm-package-license@^3.0.1: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" -validate.io-array-like@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/validate.io-array-like/-/validate.io-array-like-1.0.2.tgz#7af9f7eb7b51715beb2215668ec5cce54faddb5a" - integrity sha1-evn363tRcVvrIhVmjsXM5U+t21o= - dependencies: - const-max-uint32 "^1.0.2" - validate.io-integer-primitive "^1.0.0" - -validate.io-array@^1.0.3, validate.io-array@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/validate.io-array/-/validate.io-array-1.0.6.tgz#5b5a2cafd8f8b85abb2f886ba153f2d93a27774d" - integrity sha1-W1osr9j4uFq7L4hroVPy2Tond00= - -validate.io-buffer@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/validate.io-buffer/-/validate.io-buffer-1.0.2.tgz#852d6734021914d5d13afc32531761e3720ed44e" - integrity sha1-hS1nNAIZFNXROvwyUxdh43IO1E4= - -validate.io-integer-primitive@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/validate.io-integer-primitive/-/validate.io-integer-primitive-1.0.0.tgz#a9aa010355fe8681c0fea6c1a74ad2419cadddc6" - integrity sha1-qaoBA1X+hoHA/qbBp0rSQZyt3cY= - dependencies: - validate.io-number-primitive "^1.0.0" - -validate.io-integer@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/validate.io-integer/-/validate.io-integer-1.0.5.tgz#168496480b95be2247ec443f2233de4f89878068" - integrity sha1-FoSWSAuVviJH7EQ/IjPeT4mHgGg= - dependencies: - validate.io-number "^1.0.3" - -validate.io-matrix-like@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/validate.io-matrix-like/-/validate.io-matrix-like-1.0.2.tgz#5ec32a75d0889dac736dea68bdd6145b155edfc3" - integrity sha1-XsMqddCInaxzbepovdYUWxVe38M= - -validate.io-ndarray-like@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/validate.io-ndarray-like/-/validate.io-ndarray-like-1.0.0.tgz#d8a3b0ed165bbf1d2fc0d0073270cfa552295919" - integrity sha1-2KOw7RZbvx0vwNAHMnDPpVIpWRk= - -validate.io-nonnegative-integer@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/validate.io-nonnegative-integer/-/validate.io-nonnegative-integer-1.0.0.tgz#8069243a08c5f98e95413c929dfd7b18f3f6f29f" - integrity sha1-gGkkOgjF+Y6VQTySnf17GPP28p8= - dependencies: - validate.io-integer "^1.0.5" - -validate.io-number-primitive@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/validate.io-number-primitive/-/validate.io-number-primitive-1.0.0.tgz#d2e01f202989369dcf1155449564203afe584e55" - integrity sha1-0uAfICmJNp3PEVVElWQgOv5YTlU= - -validate.io-number@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/validate.io-number/-/validate.io-number-1.0.3.tgz#f63ffeda248bf28a67a8d48e0e3b461a1665baf8" - integrity sha1-9j/+2iSL8opnqNSODjtGGhZluvg= - -validate.io-positive-integer@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/validate.io-positive-integer/-/validate.io-positive-integer-1.0.0.tgz#7ed2d03b4c27558cc66a00aab0f0e921814a6582" - integrity sha1-ftLQO0wnVYzGagCqsPDpIYFKZYI= - dependencies: - validate.io-integer "^1.0.5" - -validate.io-string-primitive@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/validate.io-string-primitive/-/validate.io-string-primitive-1.0.1.tgz#b8135b9fb1372bde02fdd53ad1d0ccd6de798fee" - integrity sha1-uBNbn7E3K94C/dU60dDM1t55j+4= - vectorize-text@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/vectorize-text/-/vectorize-text-3.2.1.tgz#85921abd9685af775fd20a01041a2837fe51bdb5" From e012d2558587c02dbd91a20d10d9716aaf1d58d5 Mon Sep 17 00:00:00 2001 From: Justin Clift Date: Fri, 28 Jul 2023 00:55:20 +1000 Subject: [PATCH 230/274] Add yarn.lock missing from PR #6300 (#6302) --- yarn.lock | 480 +++++++++++++----------------------------------------- 1 file changed, 117 insertions(+), 363 deletions(-) diff --git a/yarn.lock b/yarn.lock index 8c938baf91..ec061fd9de 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1842,7 +1842,7 @@ leaflet.markercluster "^1.1.0" lodash "^4.17.10" numeral "^2.0.6" - plotly.js "1.54.4" + plotly.js "1.58.5" react-pivottable "^0.9.0" react-sortable-hoc "^1.10.1" tinycolor2 "^1.4.1" @@ -2508,11 +2508,6 @@ ace-builds@^1.4.12, ace-builds@^1.4.6: resolved "https://registry.yarnpkg.com/ace-builds/-/ace-builds-1.4.12.tgz#888efa386e36f4345f40b5233fcc4fe4c588fae7" integrity sha512-G+chJctFPiiLGvs3+/Mly3apXTcfgE45dT5yp12BcWZ1kUs+gm0qd3/fv4gsz6fVag4mM0moHVpjHDIgph6Psg== -acorn-dynamic-import@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz#482210140582a36b83c3e342e1cfebcaa9240948" - integrity sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw== - acorn-globals@^4.1.0: version "4.3.4" resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.4.tgz#9fa1926addc11c97308c4e66d7add0d40c3272e7" @@ -2521,7 +2516,7 @@ acorn-globals@^4.1.0: acorn "^6.0.1" acorn-walk "^6.0.1" -acorn-jsx@^5.0.1, acorn-jsx@^5.1.0: +acorn-jsx@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.1.0.tgz#294adb71b57398b0680015f0a38c563ee1db5384" integrity sha512-tMUqwBWfLFbJbizRmEcWSLw6HnFzfdJs2sOJEOwwtVPMoH/0Ay+E703oZz78VSXZiiDcZrQ5XKjPIUQixhmgVw== @@ -2541,7 +2536,7 @@ acorn@^5.5.3: resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.4.tgz#3e8d8a9947d0599a1796d10225d7432f4a4acf5e" integrity sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg== -acorn@^6.0.1, acorn@^6.1.1, acorn@^6.4.1: +acorn@^6.0.1, acorn@^6.4.1: version "6.4.2" resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== @@ -2888,6 +2883,11 @@ array-filter@^1.0.0: resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-1.0.0.tgz#baf79e62e6ef4c2a4c0b831232daffec251f9d83" integrity sha1-uveeYubvTCpMC4MSMtr/7CUfnYM= +array-find-index@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" + integrity sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw== + array-flatten@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" @@ -3061,11 +3061,6 @@ atob-lite@^1.0.0: resolved "https://registry.yarnpkg.com/atob-lite/-/atob-lite-1.0.0.tgz#b88dca6006922b962094f7556826bab31c4a296b" integrity sha1-uI3KYAaSK5YglPdVaCa6sxxKKWs= -atob-lite@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/atob-lite/-/atob-lite-2.0.0.tgz#0fef5ad46f1bd7a8502c65727f0367d5ee43d696" - integrity sha1-D+9a1G8b16hQLGVyfwNn1e5D1pY= - atob@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" @@ -3409,6 +3404,14 @@ bl@^1.0.0: readable-stream "^2.3.5" safe-buffer "^5.1.1" +bl@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/bl/-/bl-2.2.1.tgz#8c11a7b730655c5d56898cdc871224f40fd901d5" + integrity sha512-6Pesp1w0DEX1N550i/uGV/TqucVL4AM/pgThFSN/Qq9si1/DF9aIHs1BxD8V/QU0HoeHO6cQRTAuYnLPKq1e4g== + dependencies: + readable-stream "^2.3.5" + safe-buffer "^5.1.1" + blob-util@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/blob-util/-/blob-util-2.0.2.tgz#3b4e3c281111bb7f11128518006cdc60b403a1eb" @@ -3619,27 +3622,6 @@ bser@2.1.1: dependencies: node-int64 "^0.4.0" -buble@^0.19.3: - version "0.19.8" - resolved "https://registry.yarnpkg.com/buble/-/buble-0.19.8.tgz#d642f0081afab66dccd897d7b6360d94030b9d3d" - integrity sha512-IoGZzrUTY5fKXVkgGHw3QeXFMUNBFv+9l8a4QJKG1JhG3nCMHTdEX1DCOg8568E2Q9qvAQIiSokv6Jsgx8p2cA== - 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" - os-homedir "^2.0.0" - regexpu-core "^4.5.4" - -bubleify@^1.1.0, bubleify@^1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/bubleify/-/bubleify-1.2.1.tgz#c11fa33fa59d5b9b747d4e486f43889084257f37" - integrity sha512-vp3NHmaQVoKaKWvi15FTMinPNjfp+47+/kFJ9ifezdMF/CBLArCxDVUh+FQE3qRxCRj1qyjJqilTBHHqlM8MaQ== - dependencies: - buble "^0.19.3" - buffer-crc32@~0.2.3: version "0.2.13" resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" @@ -4156,7 +4138,7 @@ collection-visit@^1.0.0: map-visit "^1.0.0" object-visit "^1.0.0" -color-alpha@^1.0.4: +color-alpha@1.0.4, color-alpha@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/color-alpha/-/color-alpha-1.0.4.tgz#c141dc926e95fc3db647d0e14e5bc3651c29e040" integrity sha512-lr8/t5NPozTSqli+duAN+x+no/2WaKTeWvxhHGN+aXT6AJ8vPlzLa7UriyjWak0pSC2jHol9JgjBYnnHsGha9A== @@ -4203,7 +4185,7 @@ color-normalize@1.5.0, color-normalize@^1.5.0: color-rgba "^2.1.1" dtype "^2.0.0" -color-parse@^1.3.8: +color-parse@1.3.8, color-parse@^1.3.8: version "1.3.8" resolved "https://registry.yarnpkg.com/color-parse/-/color-parse-1.3.8.tgz#eaf54cd385cb34c0681f18c218aca38478082fa3" integrity sha512-1Y79qFv0n1xair3lNMTNeoFvmc3nirMVBij24zbs1f13+7fPpQClMg5b4AuKXLt3szj7BRlHMCXHplkce6XlmA== @@ -4212,7 +4194,7 @@ color-parse@^1.3.8: defined "^1.0.0" is-plain-obj "^1.1.0" -color-rgba@^2.1.1: +color-rgba@2.1.1, color-rgba@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/color-rgba/-/color-rgba-2.1.1.tgz#4633b83817c7406c90b3d7bf4d1acfa48dde5c83" integrity sha512-VaX97wsqrMwLSOR6H7rU1Doa2zyVdmShabKrPEIFywLlHoibgD3QW9Dw6fSqM4+H/LfjprDNAUUW31qEQcGzNw== @@ -4371,17 +4353,6 @@ compression@^1.7.4: safe-buffer "5.1.2" vary "~1.1.2" -compute-dims@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/compute-dims/-/compute-dims-1.1.0.tgz#6d5b712929b6c531af3b4d580ed5adacbbd77e0c" - integrity sha512-YHMiIKjH/8Eom8zATk3g8/lH3HxGCZcVQyEfEoVrfWI7od/WRpTgRGShnei3jArYSx77mQqPxZNokjGHCdLfxg== - dependencies: - utils-copy "^1.0.0" - validate.io-array "^1.0.6" - validate.io-matrix-like "^1.0.2" - validate.io-ndarray-like "^1.0.0" - validate.io-positive-integer "^1.0.0" - compute-scroll-into-view@^1.0.14: version "1.0.14" resolved "https://registry.yarnpkg.com/compute-scroll-into-view/-/compute-scroll-into-view-1.0.14.tgz#80e3ebb25d6aa89f42e533956cb4b16a04cfe759" @@ -4419,16 +4390,6 @@ console-browserify@^1.1.0: dependencies: date-now "^0.1.4" -const-max-uint32@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/const-max-uint32/-/const-max-uint32-1.0.2.tgz#f009bb6230e678ed874dd2d6a9cd9e3cbfabb676" - integrity sha1-8Am7YjDmeO2HTdLWqc2ePL+rtnY= - -const-pinf-float64@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/const-pinf-float64/-/const-pinf-float64-1.0.0.tgz#f6efb0d79f9c0986d3e79f2923abf9b70b63d726" - integrity sha1-9u+w15+cCYbT558pI6v5twtj1yY= - constants-browserify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" @@ -4918,6 +4879,18 @@ d3-shape@^1.2.0: dependencies: d3-path "1" +d3-time-format@^2.2.3: + version "2.3.0" + resolved "https://registry.yarnpkg.com/d3-time-format/-/d3-time-format-2.3.0.tgz#107bdc028667788a8924ba040faf1fbccd5a7850" + integrity sha512-guv6b2H37s2Uq/GefleCDtbe0XZAuy7Wa49VGkPVPMfLL9qObgBST3lEHJBMUp8S7NdLQAGIvr2KXk8Hc98iKQ== + dependencies: + d3-time "1" + +d3-time@1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/d3-time/-/d3-time-1.1.0.tgz#b1e19d307dae9c900b7e5b25ffc5dcc249a8a0f1" + integrity sha512-Xh0isrZ5rPYYdqhAVk8VLnMEidhz5aP7htAADH6MfzgmmicPkTo8LhkLxci61/lCB7n7UmE3bN0leRt+qvkLxA== + d3-timer@1: version "1.0.10" resolved "https://registry.yarnpkg.com/d3-timer/-/d3-timer-1.0.10.tgz#dfe76b8a91748831b13b6d9c793ffbd508dd9de5" @@ -6640,11 +6613,6 @@ flatten-vertex-data@^1.0.2: dependencies: dtype "^2.0.0" -flip-pixels@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/flip-pixels/-/flip-pixels-1.0.2.tgz#aad7b7d9fc65932d5f27e2e4dac4b494140845e4" - integrity sha512-oXbJGbjDnfJRWPC7Va38EFhd+A8JWE5/hCiKcK8qjCdbLj9DTpsq6MEudwpRTH+V4qq+Jw7d3pUgQdSr3x3mTA== - flush-write-stream@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" @@ -7100,7 +7068,7 @@ gl-format-compiler-error@^1.0.2: glsl-shader-name "^1.0.0" sprintf-js "^1.0.3" -gl-heatmap2d@^1.0.6: +gl-heatmap2d@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/gl-heatmap2d/-/gl-heatmap2d-1.1.1.tgz#dbbb2c288bfe277002fa50985155b0403d87640f" integrity sha512-6Vo1fPIB1vQFWBA/MR6JAA16XuQuhwvZRbSjYEq++m4QV33iqjGS2HcVIRfJGX+fomd5eiz6bwkVZcKm69zQPw== @@ -7175,7 +7143,7 @@ gl-plot2d@^1.4.5: glslify "^7.0.0" text-cache "^4.2.2" -gl-plot3d@^2.4.6: +gl-plot3d@^2.4.7: version "2.4.7" resolved "https://registry.yarnpkg.com/gl-plot3d/-/gl-plot3d-2.4.7.tgz#b66e18c5affdd664f42c884acf7b82c60b41ee78" integrity sha512-mLDVWrl4Dj0O0druWyHUK5l7cBQrRIJRn2oROEgrRuOgbbrLAzsREKefwMO0bA0YqkiZMFMnV5VvPA9j57X5Xg== @@ -7293,7 +7261,7 @@ gl-streamtube3d@^1.4.1: glsl-specular-cook-torrance "^2.0.1" glslify "^7.0.0" -gl-surface3d@^1.5.2: +gl-surface3d@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/gl-surface3d/-/gl-surface3d-1.6.0.tgz#5fc915759a91e9962dcfbf3982296c462a032526" integrity sha512-x15+u4712ysnB85G55RLJEml6mOB4VaDn0VTlXCc9JcjRl5Es10Tk7lhGGyiPtkCfHwvhnkxzYA1/rHHYN7Y0A== @@ -7648,6 +7616,27 @@ glslify@^7.0.0: through2 "^2.0.1" xtend "^4.0.0" +glslify@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/glslify/-/glslify-7.1.1.tgz#454d9172b410cb49864029c86d5613947fefd30b" + integrity sha512-bud98CJ6kGZcP9Yxcsi7Iz647wuDz3oN+IZsjCRi5X1PI7t/xPKeL0mOwXJjo+CRZMqvq0CkSJiywCcY7kVYog== + dependencies: + bl "^2.2.1" + concat-stream "^1.5.2" + duplexify "^3.4.5" + falafel "^2.1.0" + from2 "^2.3.0" + glsl-resolve "0.0.1" + glsl-token-whitespace-trim "^1.0.0" + glslify-bundle "^5.0.0" + glslify-deps "^1.2.5" + minimist "^1.2.5" + resolve "^1.1.5" + stack-trace "0.0.9" + static-eval "^2.0.5" + through2 "^2.0.1" + xtend "^4.0.0" + gopd@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" @@ -8100,14 +8089,10 @@ ignore@^5.1.1, ignore@^5.1.4: resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== -image-palette@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/image-palette/-/image-palette-2.1.0.tgz#d976525a1df75964ca125d2dba2741e92905547f" - integrity sha512-3ImSEWD26+xuQFdP0RWR4WSXadZwvgrFhjGNpMEapTG1tf2XrBFS2dlKK5hNgH4UIaSQlSUFRn1NeA+zULIWbQ== - dependencies: - color-id "^1.1.0" - pxls "^2.0.0" - quantize "^1.0.2" +image-size@^0.7.5: + version "0.7.5" + resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.7.5.tgz#269f357cf5797cb44683dfa99790e54c705ead04" + integrity sha512-Hiyv+mXHfFEP7LzUL/llg9RwFxxY+o9N3JVLIeG5E7iFIFAalxvRU9UZthBdYDEVnzHMgjnKJPPpay5BWf1g9g== image-size@^0.8.2: version "0.8.3" @@ -8334,11 +8319,6 @@ is-arrayish@^0.3.1: resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== -is-base64@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/is-base64/-/is-base64-0.1.0.tgz#a6f20610c6ef4863a51cba32bc0222544b932622" - integrity sha512-WRRyllsGXJM7ZN7gPTCCQ/6wNPTRDwiWdPK66l5sJzcU/oOzcIcRRf0Rux8bkpox/1yjt0F6VJRsQOIG2qz5sg== - is-bigint@^1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" @@ -8360,11 +8340,6 @@ is-binary-path@~2.1.0: dependencies: binary-extensions "^2.0.0" -is-blob@^2.0.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-blob/-/is-blob-2.1.0.tgz#e36cd82c90653f1e1b930f11baf9c64216a05385" - integrity sha512-SZ/fTft5eUhQM6oF/ZaASFDEdbFVe89Imltn9uZr03wdKMcWNVYSMjQPFtg05QuNkt5l5c135ElvXEQG0rk4tw== - is-boolean-object@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.0.0.tgz#98f8b28030684219a95f375cfbd88ce3405dff93" @@ -8378,7 +8353,7 @@ is-boolean-object@^1.1.0: call-bind "^1.0.2" has-tostringtag "^1.0.0" -is-browser@^2.0.1, is-browser@^2.1.0: +is-browser@^2.0.1: version "2.1.0" resolved "https://registry.yarnpkg.com/is-browser/-/is-browser-2.1.0.tgz#fc084d59a5fced307d6708c59356bad7007371a9" integrity sha512-F5rTJxDQ2sW81fcfOR1GnCXT6sVJC104fCyfj+mjpwNEwaPYSn5fte5jiHmBg3DHsIoL/l8Kvw5VN5SsTRcRFQ== @@ -8388,11 +8363,6 @@ is-buffer@^1.0.2, is-buffer@^1.1.5: resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== -is-buffer@^2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.4.tgz#3e572f23c8411a5cfd9557c849e3665e0b290623" - integrity sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A== - is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: version "1.2.7" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" @@ -8510,11 +8480,6 @@ is-firefox@^1.0.3: resolved "https://registry.yarnpkg.com/is-firefox/-/is-firefox-1.0.3.tgz#2a2a1567783a417f6e158323108f3861b0918562" integrity sha1-KioVZ3g6QX9uFYMjEI84YbCRhWI= -is-float-array@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-float-array/-/is-float-array-1.0.0.tgz#96d67b1cbadf47ab1e05be208933acd386978a09" - integrity sha512-4ew1Sx6B6kEAl3T3NOM0yB94J3NZnBdNt4paw0e8nY73yHHTeTEhyQ3Lj7EQEnv5LD+GxNTaT4L46jcKjjpLiQ== - is-fullwidth-code-point@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" @@ -8574,6 +8539,11 @@ is-mobile@^2.2.1: resolved "https://registry.yarnpkg.com/is-mobile/-/is-mobile-2.2.1.tgz#10f2320012c410cc285feecb13406bd586f1b2f8" integrity sha512-6zELsfVFr326eq2CI53yvqq6YBanOxKBybwDT+MbMS2laBnK6Ez8m5XHSuTQQbnKRfpDzCod1CMWW5q3wZYMvA== +is-mobile@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/is-mobile/-/is-mobile-2.2.2.tgz#f6c9c5d50ee01254ce05e739bdd835f1ed4e9954" + integrity sha512-wW/SXnYJkTjs++tVK5b6kVITZpAZPtUrt9SF80vvxGiF/Oywal+COk1jlRkiVq15RFNEQKQY31TkV24/1T5cVg== + is-negative-zero@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" @@ -9815,13 +9785,6 @@ lz-string@^1.5.0: resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.5.0.tgz#c1ab50f77887b712621201ba9fd4e3a6ed099941" integrity sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ== -magic-string@^0.25.3: - version "0.25.7" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051" - integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA== - dependencies: - sourcemap-codec "^1.4.4" - make-dir@^2.0.0, make-dir@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" @@ -10788,7 +10751,7 @@ object-is@^1.1.5: call-bind "^1.0.2" define-properties "^1.1.3" -object-keys@^1.0.11, object-keys@^1.0.6, object-keys@^1.0.9: +object-keys@^1.0.11, object-keys@^1.0.6: version "1.1.0" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.0.tgz#11bd22348dd2e096a045ab06f6c85bcc340fa032" integrity sha512-6OO5X1+2tYkNyNEx6TsCxEqFfRWaqx6EtMiSbGrw8Ob8v9Ne+Hl8rBAgLBZn5wjEz3s/s6U1WXFUFOcxxAwUpg== @@ -10982,11 +10945,6 @@ os-browserify@^0.3.0: resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= -os-homedir@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-2.0.0.tgz#a0c76bb001a8392a503cbd46e7e650b3423a923c" - integrity sha512-saRNz0DSC5C/I++gFIaJTXoFJMRwiP5zHar5vV3xQ2TkgEw6hDCcU5F272JjUylpiVgBrZNQHnfjkLabTfb92Q== - os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" @@ -11474,49 +11432,54 @@ planar-graph-to-polyline@^1.0.0: two-product "^1.0.0" uniq "^1.0.0" -plotly.js@1.54.4: - version "1.54.4" - resolved "https://registry.yarnpkg.com/plotly.js/-/plotly.js-1.54.4.tgz#b197034eacb784b955bfae3ab3824c04a42bc84f" - integrity sha512-mklqX2dDTIHWmdH7mKFLFJeLz/bMy28JgohAxcXdRYH2hskLQ2wJ14GuOLd5nESpdjw/Edk7ZL6dwL0qTN3mwQ== +plotly.js@1.58.5: + version "1.58.5" + resolved "https://registry.yarnpkg.com/plotly.js/-/plotly.js-1.58.5.tgz#8f98ddce32c8333fe1e51d22b926324be059db95" + integrity sha512-ChTlnFXB4tB0CzcG1mqgUKYnrJsZ8REDGox8BHAa/ltsd48MOAhOmFgjyDxwsXyjjgwOI296GeYDft8g4ftLHQ== dependencies: "@plotly/d3-sankey" "0.7.2" "@plotly/d3-sankey-circular" "0.33.1" + "@plotly/point-cluster" "^3.1.9" "@turf/area" "^6.0.1" "@turf/bbox" "^6.0.1" "@turf/centroid" "^6.0.2" alpha-shape "^1.0.0" canvas-fit "^1.5.0" - color-normalize "^1.5.0" - color-rgba "^2.1.1" + color-alpha "1.0.4" + color-normalize "1.5.0" + color-parse "1.3.8" + color-rgba "2.1.1" convex-hull "^1.0.3" country-regex "^1.1.0" d3 "^3.5.17" d3-force "^1.2.1" d3-hierarchy "^1.1.9" d3-interpolate "^1.4.0" + d3-time-format "^2.2.3" delaunay-triangulate "^1.1.6" es6-promise "^4.2.8" fast-isnumeric "^1.1.4" gl-cone3d "^1.5.2" gl-contour2d "^1.1.7" gl-error3d "^1.0.16" - gl-heatmap2d "^1.0.6" + gl-heatmap2d "^1.1.0" gl-line3d "1.2.1" gl-mat4 "^1.2.0" gl-mesh3d "^2.3.1" gl-plot2d "^1.4.5" - gl-plot3d "^2.4.6" + gl-plot3d "^2.4.7" gl-pointcloud2d "^1.0.3" gl-scatter3d "^1.2.3" gl-select-box "^1.0.4" gl-spikes2d "^1.0.2" gl-streamtube3d "^1.4.1" - gl-surface3d "^1.5.2" + gl-surface3d "^1.6.0" gl-text "^1.1.8" - glslify "^7.0.0" + glslify "^7.1.1" has-hover "^1.0.1" has-passive-events "^1.0.0" - is-mobile "^2.2.1" + image-size "^0.7.5" + is-mobile "^2.2.2" mapbox-gl "1.10.1" matrix-camera-controller "^2.1.3" mouse-change "^1.4.0" @@ -11525,20 +11488,19 @@ plotly.js@1.54.4: ndarray "^1.0.19" ndarray-linear-interpolate "^1.0.0" parse-svg-path "^0.1.2" - point-cluster "^3.1.8" polybooljs "^1.2.0" regl "^1.6.1" - regl-error2d "^2.0.8" - regl-line2d "^3.0.15" - regl-scatter2d "^3.1.8" - regl-splom "^1.0.8" + regl-error2d "^2.0.11" + regl-line2d "^3.0.18" + regl-scatter2d "^3.2.1" + regl-splom "^1.0.12" right-now "^1.0.0" robust-orientation "^1.1.3" sane-topojson "^4.0.0" strongly-connected-components "^1.0.1" superscript-text "^1.0.0" svg-path-sdf "^1.1.3" - tinycolor2 "^1.4.1" + tinycolor2 "^1.4.2" to-px "1.0.1" topojson-client "^3.1.0" webgl-context "^2.2.0" @@ -11549,24 +11511,6 @@ pn@^1.1.0: resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" integrity sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA== -point-cluster@^3.1.8: - version "3.1.8" - resolved "https://registry.yarnpkg.com/point-cluster/-/point-cluster-3.1.8.tgz#a63625fd8964f2a5b446025a1acf8bcac42500c0" - integrity sha512-7klIr45dpMeZuqjIK9+qBg3m2IhyZJNJkdqjJFw0Olq75FM8ojrTMjClVUrMjNYRVqtwztxCHH71Fyjhg+YwyQ== - dependencies: - array-bounds "^1.0.1" - array-normalize "^1.1.4" - binary-search-bounds "^2.0.4" - bubleify "^1.1.0" - clamp "^1.0.1" - defined "^1.0.0" - dtype "^2.0.0" - flatten-vertex-data "^1.0.2" - is-obj "^1.0.1" - math-log2 "^1.0.1" - parse-rect "^1.2.0" - pick-by-alias "^1.2.0" - point-in-big-polygon@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/point-in-big-polygon/-/point-in-big-polygon-2.0.0.tgz#39b613ea6cf17d6b43e188f77f34c44c6b33ba55" @@ -11831,18 +11775,6 @@ puppeteer@^2.0.0: rimraf "^2.6.1" ws "^6.1.0" -pxls@^2.0.0: - version "2.3.2" - resolved "https://registry.yarnpkg.com/pxls/-/pxls-2.3.2.tgz#79100d2cc95089fc6e00053a9d93c1ddddb2c7b4" - integrity sha512-pQkwgbLqWPcuES5iEmGa10OlCf5xG0blkIF3dg7PpRZShbTYcvAdfFfGL03SMrkaSUaa/V0UpN9HWg40O2AIIw== - dependencies: - arr-flatten "^1.1.0" - compute-dims "^1.1.0" - flip-pixels "^1.0.2" - is-browser "^2.1.0" - is-buffer "^2.0.3" - to-uint8 "^1.4.1" - qs@6.11.0: version "6.11.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" @@ -11855,11 +11787,6 @@ qs@~6.5.2: resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== -quantize@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/quantize/-/quantize-1.0.2.tgz#d25ac200a77b6d70f40127ca171a10e33c8546de" - integrity sha1-0lrCAKd7bXD0ASfKFxoQ4zyFRt4= - quat-slerp@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/quat-slerp/-/quat-slerp-1.0.1.tgz#2baa15ce3a6bbdc3241d972eb17283139ed69f29" @@ -12629,11 +12556,6 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" -regex-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/regex-regex/-/regex-regex-1.0.0.tgz#9048a1eaeb870f4d480dabc76fc42cdcc0bc3a72" - integrity sha1-kEih6uuHD01IDavHb8Qs3MC8OnI= - regexp.prototype.flags@^1.2.0: version "1.3.0" resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz#7aba89b3c13a64509dabcf3ca8d9fbb9bdf5cb75" @@ -12670,7 +12592,7 @@ regexpu-core@^1.0.0: regjsgen "^0.2.0" regjsparser "^0.1.4" -regexpu-core@^4.5.4, regexpu-core@^4.7.0: +regexpu-core@^4.7.0: version "4.7.0" resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.0.tgz#fcbf458c50431b0bb7b45d6967b8192d91f3d938" integrity sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ== @@ -12725,28 +12647,27 @@ regjsparser@^0.9.1: dependencies: jsesc "~0.5.0" -regl-error2d@^2.0.8: - version "2.0.8" - resolved "https://registry.yarnpkg.com/regl-error2d/-/regl-error2d-2.0.8.tgz#0f26371ee99c78d42e9c5a197387e32034bcf640" - integrity sha512-5nszdicXbimRUnYB42i+O7KPcla7PzI62nZLCP6qVRKlQCf3rSrWbikMNd1S84LE8+deWHWcb8rZ/v7rZ9qmmw== +regl-error2d@^2.0.11: + version "2.0.12" + resolved "https://registry.yarnpkg.com/regl-error2d/-/regl-error2d-2.0.12.tgz#3b976e13fe641d5242a154fcacc80aecfa0a9881" + integrity sha512-r7BUprZoPO9AbyqM5qlJesrSRkl+hZnVKWKsVp7YhOl/3RIpi4UDGASGJY0puQ96u5fBYw/OlqV24IGcgJ0McA== dependencies: array-bounds "^1.0.1" - bubleify "^1.2.0" color-normalize "^1.5.0" flatten-vertex-data "^1.0.2" object-assign "^4.1.1" pick-by-alias "^1.2.0" - to-float32 "^1.0.1" + to-float32 "^1.1.0" update-diff "^1.1.0" -regl-line2d@^3.0.15: - version "3.0.15" - resolved "https://registry.yarnpkg.com/regl-line2d/-/regl-line2d-3.0.15.tgz#5baf2a0ed5024cec2ec038c6ada601c98ac579e3" - integrity sha512-RuQbg9iZ6MyuInG8izF6zjQ/2g4qL6sg1egiuFalWzaGSvuve/IWBsIcqKTlwpiEsRt9b4cHu9NYs2fLt1gYJw== +regl-line2d@^3.0.18: + version "3.1.2" + resolved "https://registry.yarnpkg.com/regl-line2d/-/regl-line2d-3.1.2.tgz#2bedef7f44c1f7fae75c90f9918258723ca84c1c" + integrity sha512-nmT7WWS/WxmXAQMkgaMKWXaVmwJ65KCrjbqHGOUjjqQi6shfT96YbBOvelXwO9hG7/hjvbzjtQ2UO0L3e7YaXQ== dependencies: array-bounds "^1.0.1" + array-find-index "^1.0.2" array-normalize "^1.1.4" - bubleify "^1.2.0" color-normalize "^1.5.0" earcut "^2.1.5" es6-weak-map "^2.0.3" @@ -12755,31 +12676,9 @@ regl-line2d@^3.0.15: object-assign "^4.1.1" parse-rect "^1.2.0" pick-by-alias "^1.2.0" - to-float32 "^1.0.1" - -regl-scatter2d@^3.1.2: - version "3.1.8" - resolved "https://registry.yarnpkg.com/regl-scatter2d/-/regl-scatter2d-3.1.8.tgz#5fdf77f9cee7e71497d038dc1b654dc4340b6bfb" - integrity sha512-Z9MYAUx9t8e3MsiHBbJAEstbIqauXxzcL9DmuKXQuRWfCMF2DBytYJtE0FpbQU6639wEMAJ54SEIlISWF8sQ2g== - dependencies: - array-range "^1.0.1" - array-rearrange "^2.2.2" - clamp "^1.0.1" - color-id "^1.1.0" - color-normalize "1.5.0" - color-rgba "^2.1.1" - flatten-vertex-data "^1.0.2" - glslify "^7.0.0" - image-palette "^2.1.0" - is-iexplorer "^1.0.0" - object-assign "^4.1.1" - parse-rect "^1.2.0" - pick-by-alias "^1.2.0" - point-cluster "^3.1.8" - to-float32 "^1.0.1" - update-diff "^1.1.0" + to-float32 "^1.1.0" -regl-scatter2d@^3.1.8: +regl-scatter2d@^3.2.1, regl-scatter2d@^3.2.3: version "3.2.9" resolved "https://registry.yarnpkg.com/regl-scatter2d/-/regl-scatter2d-3.2.9.tgz#cd27b014c355e80d96fb2f273b563fd8f1b094f0" integrity sha512-PNrXs+xaCClKpiB2b3HZ2j3qXQXhC5kcTh/Nfgx9rLO0EpEhab0BSQDqAsbdbpdf+pSHSJvbgitB7ulbGeQ+Fg== @@ -12800,23 +12699,19 @@ regl-scatter2d@^3.1.8: to-float32 "^1.1.0" update-diff "^1.1.0" -regl-splom@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/regl-splom/-/regl-splom-1.0.8.tgz#05f165a6f0b8afc6b6b97fafa775282d44387db3" - integrity sha512-4GQTgcArCbGLsXhgalWVBxeW7OXllnu+Gvil/4SbQQmtiqLCl+xgF79pISKY9mLXTlobxiX7cVKdjGjp25559A== +regl-splom@^1.0.12: + version "1.0.14" + resolved "https://registry.yarnpkg.com/regl-splom/-/regl-splom-1.0.14.tgz#58800b7bbd7576aa323499a1966868a6c9ea1456" + integrity sha512-OiLqjmPRYbd7kDlHC6/zDf6L8lxgDC65BhC8JirhP4ykrK4x22ZyS+BnY8EUinXKDeMgmpRwCvUmk7BK4Nweuw== dependencies: array-bounds "^1.0.1" array-range "^1.0.1" - bubleify "^1.2.0" color-alpha "^1.0.4" - defined "^1.0.0" flatten-vertex-data "^1.0.2" - left-pad "^1.3.0" parse-rect "^1.2.0" pick-by-alias "^1.2.0" - point-cluster "^3.1.8" raf "^3.4.1" - regl-scatter2d "^3.1.2" + regl-scatter2d "^3.2.3" regl@^1.3.11: version "1.4.2" @@ -13793,11 +13688,6 @@ source-map@^0.7.3: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== -sourcemap-codec@^1.4.4: - version "1.4.8" - resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" - integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== - spawn-wrap@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/spawn-wrap/-/spawn-wrap-2.0.0.tgz#103685b8b8f9b79771318827aa78650a610d457e" @@ -13948,6 +13838,13 @@ static-eval@^2.0.0: dependencies: escodegen "^1.11.1" +static-eval@^2.0.5: + version "2.1.0" + resolved "https://registry.yarnpkg.com/static-eval/-/static-eval-2.1.0.tgz#a16dbe54522d7fa5ef1389129d813fd47b148014" + integrity sha512-agtxZ/kWSsCkI5E4QifRwsaPs0P0JmZV6dkLz6ILYfFYQGn+5plctanRN+IC8dJRiFkyXHrwEE3W9Wmx67uDbw== + dependencies: + escodegen "^1.11.1" + static-extend@^0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" @@ -14035,14 +13932,6 @@ string-split-by@^1.0.0: dependencies: parenthesis "^3.1.5" -string-to-arraybuffer@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-to-arraybuffer/-/string-to-arraybuffer-1.0.2.tgz#161147fbadea02e28b0935002cec4c40f1ca7f0a" - integrity sha512-DaGZidzi93dwjQen5I2osxR9ERS/R7B1PFyufNMnzhj+fmlDQAc1DSDIJVJhgI8Oq221efIMbABUBdPHDRt43Q== - dependencies: - atob-lite "^2.0.0" - is-base64 "^0.1.0" - string-width@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" @@ -14537,6 +14426,11 @@ tinycolor2@^1.4.1: resolved "https://registry.yarnpkg.com/tinycolor2/-/tinycolor2-1.4.1.tgz#f4fad333447bc0b07d4dc8e9209d8f39a8ac77e8" integrity sha1-9PrTM0R7wLB9TcjpIJ2POaisd+g= +tinycolor2@^1.4.2: + version "1.6.0" + resolved "https://registry.yarnpkg.com/tinycolor2/-/tinycolor2-1.6.0.tgz#f98007460169b0263b97072c5ae92484ce02d09e" + integrity sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw== + tinyqueue@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/tinyqueue/-/tinyqueue-2.0.3.tgz#64d8492ebf39e7801d7bd34062e29b45b2035f08" @@ -14561,15 +14455,6 @@ tmpl@1.0.5: resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== -to-array-buffer@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/to-array-buffer/-/to-array-buffer-3.2.0.tgz#cb684dd691a7368c3b249c2348d75227f7d4dbb4" - integrity sha512-zN33mwi0gpL+7xW1ITLfJ48CEj6ZQW0ZAP0MU+2W3kEY0PAIncyuxmD4OqkUVhPAbTP7amq9j/iwvZKYS+lzSQ== - dependencies: - flatten-vertex-data "^1.0.2" - is-blob "^2.0.1" - string-to-arraybuffer "^1.0.0" - to-arraybuffer@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" @@ -14585,11 +14470,6 @@ to-fast-properties@^2.0.0: resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== -to-float32@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/to-float32/-/to-float32-1.0.1.tgz#22d5921f38183164b9e7e9876158c0c16cb9753a" - integrity sha512-nOy2WSwae3xhZbc+05xiCuU3ZPPmH0L4Rg4Q1qiOGFSuNSCTB9nVJaGgGl3ZScxAclX/L8hJuDHJGDAzbfuKCQ== - to-float32@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/to-float32/-/to-float32-1.1.0.tgz#39bd3b11eadccd490c08f5f9171da5127b6f3946" @@ -14641,17 +14521,6 @@ to-regex@^3.0.1, to-regex@^3.0.2: regex-not "^1.0.2" safe-regex "^1.1.0" -to-uint8@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/to-uint8/-/to-uint8-1.4.1.tgz#9f45694905b827f247d37bc8ec83b2818d81fac9" - integrity sha512-o+ochsMlTZyucbww8It401FC2Rx+OP2RpDeYbA6h+y9HgedDl1UjdsJ9CmzKEG7AFP9es5PmJ4eDWeeeXihESg== - dependencies: - arr-flatten "^1.1.0" - clamp "^1.0.1" - is-base64 "^0.1.0" - is-float-array "^1.0.0" - to-array-buffer "^3.0.0" - toggle-selection@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/toggle-selection/-/toggle-selection-1.0.6.tgz#6e45b1263f2017fa0acc7d89d78b15b8bf77da32" @@ -14815,11 +14684,6 @@ type-is@~1.6.18: media-typer "0.3.0" mime-types "~2.1.24" -type-name@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/type-name/-/type-name-2.0.2.tgz#efe7d4123d8ac52afff7f40c7e4dec5266008fb4" - integrity sha1-7+fUEj2KxSr/9/QMfk3sUmYAj7Q= - type@^1.0.1: version "1.2.0" resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" @@ -15146,50 +15010,11 @@ utila@~0.4: resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" integrity sha1-ihagXURWV6Oupe7MWxKk+lN5dyw= -utils-copy-error@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/utils-copy-error/-/utils-copy-error-1.0.1.tgz#791de393c0f09890afd59f3cbea635f079a94fa5" - integrity sha1-eR3jk8DwmJCv1Z88vqY18HmpT6U= - dependencies: - object-keys "^1.0.9" - utils-copy "^1.1.0" - -utils-copy@^1.0.0, utils-copy@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/utils-copy/-/utils-copy-1.1.1.tgz#6e2b97982aa8cd73e1182a3e6f8bec3c0f4058a7" - integrity sha1-biuXmCqozXPhGCo+b4vsPA9AWKc= - dependencies: - const-pinf-float64 "^1.0.0" - object-keys "^1.0.9" - type-name "^2.0.0" - utils-copy-error "^1.0.0" - utils-indexof "^1.0.0" - utils-regex-from-string "^1.0.0" - validate.io-array "^1.0.3" - validate.io-buffer "^1.0.1" - validate.io-nonnegative-integer "^1.0.0" - -utils-indexof@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/utils-indexof/-/utils-indexof-1.0.0.tgz#20feabf09ef1018b523643e8380e7bc83ec61b5c" - integrity sha1-IP6r8J7xAYtSNkPoOA57yD7GG1w= - dependencies: - validate.io-array-like "^1.0.1" - validate.io-integer-primitive "^1.0.0" - utils-merge@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= -utils-regex-from-string@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/utils-regex-from-string/-/utils-regex-from-string-1.0.0.tgz#fe1a2909f8de0ff0d5182c80fbc654d6a687d189" - integrity sha1-/hopCfjeD/DVGCyA+8ZU1qaH0Yk= - dependencies: - regex-regex "^1.0.0" - validate.io-string-primitive "^1.0.0" - uuid@^3.3.2, uuid@^3.3.3: version "3.4.0" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" @@ -15213,77 +15038,6 @@ validate-npm-package-license@^3.0.1: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" -validate.io-array-like@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/validate.io-array-like/-/validate.io-array-like-1.0.2.tgz#7af9f7eb7b51715beb2215668ec5cce54faddb5a" - integrity sha1-evn363tRcVvrIhVmjsXM5U+t21o= - dependencies: - const-max-uint32 "^1.0.2" - validate.io-integer-primitive "^1.0.0" - -validate.io-array@^1.0.3, validate.io-array@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/validate.io-array/-/validate.io-array-1.0.6.tgz#5b5a2cafd8f8b85abb2f886ba153f2d93a27774d" - integrity sha1-W1osr9j4uFq7L4hroVPy2Tond00= - -validate.io-buffer@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/validate.io-buffer/-/validate.io-buffer-1.0.2.tgz#852d6734021914d5d13afc32531761e3720ed44e" - integrity sha1-hS1nNAIZFNXROvwyUxdh43IO1E4= - -validate.io-integer-primitive@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/validate.io-integer-primitive/-/validate.io-integer-primitive-1.0.0.tgz#a9aa010355fe8681c0fea6c1a74ad2419cadddc6" - integrity sha1-qaoBA1X+hoHA/qbBp0rSQZyt3cY= - dependencies: - validate.io-number-primitive "^1.0.0" - -validate.io-integer@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/validate.io-integer/-/validate.io-integer-1.0.5.tgz#168496480b95be2247ec443f2233de4f89878068" - integrity sha1-FoSWSAuVviJH7EQ/IjPeT4mHgGg= - dependencies: - validate.io-number "^1.0.3" - -validate.io-matrix-like@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/validate.io-matrix-like/-/validate.io-matrix-like-1.0.2.tgz#5ec32a75d0889dac736dea68bdd6145b155edfc3" - integrity sha1-XsMqddCInaxzbepovdYUWxVe38M= - -validate.io-ndarray-like@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/validate.io-ndarray-like/-/validate.io-ndarray-like-1.0.0.tgz#d8a3b0ed165bbf1d2fc0d0073270cfa552295919" - integrity sha1-2KOw7RZbvx0vwNAHMnDPpVIpWRk= - -validate.io-nonnegative-integer@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/validate.io-nonnegative-integer/-/validate.io-nonnegative-integer-1.0.0.tgz#8069243a08c5f98e95413c929dfd7b18f3f6f29f" - integrity sha1-gGkkOgjF+Y6VQTySnf17GPP28p8= - dependencies: - validate.io-integer "^1.0.5" - -validate.io-number-primitive@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/validate.io-number-primitive/-/validate.io-number-primitive-1.0.0.tgz#d2e01f202989369dcf1155449564203afe584e55" - integrity sha1-0uAfICmJNp3PEVVElWQgOv5YTlU= - -validate.io-number@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/validate.io-number/-/validate.io-number-1.0.3.tgz#f63ffeda248bf28a67a8d48e0e3b461a1665baf8" - integrity sha1-9j/+2iSL8opnqNSODjtGGhZluvg= - -validate.io-positive-integer@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/validate.io-positive-integer/-/validate.io-positive-integer-1.0.0.tgz#7ed2d03b4c27558cc66a00aab0f0e921814a6582" - integrity sha1-ftLQO0wnVYzGagCqsPDpIYFKZYI= - dependencies: - validate.io-integer "^1.0.5" - -validate.io-string-primitive@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/validate.io-string-primitive/-/validate.io-string-primitive-1.0.1.tgz#b8135b9fb1372bde02fdd53ad1d0ccd6de798fee" - integrity sha1-uBNbn7E3K94C/dU60dDM1t55j+4= - value-equal@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/value-equal/-/value-equal-1.0.1.tgz#1e0b794c734c5c0cade179c437d356d931a34d6c" From 6d495bc83d03534009bf585172e588cffa78271d Mon Sep 17 00:00:00 2001 From: Justin Clift Date: Fri, 28 Jul 2023 04:22:02 +1000 Subject: [PATCH 231/274] Bump mini-css-extract-plugin to 1.6.2 (#6304) --- package.json | 2 +- yarn.lock | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index 9aed411579..8a4c1ede8c 100644 --- a/package.json +++ b/package.json @@ -134,7 +134,7 @@ "less-loader": "^5.0.0", "less-plugin-autoprefix": "^2.0.0", "lodash": "^4.17.21", - "mini-css-extract-plugin": "^0.4.4", + "mini-css-extract-plugin": "^1.6.2", "mockdate": "^2.0.2", "npm-run-all": "^4.1.5", "prettier": "^1.19.1", diff --git a/yarn.lock b/yarn.lock index ec061fd9de..0d9a2a685f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10083,13 +10083,13 @@ mimic-fn@^2.1.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== -mini-css-extract-plugin@^0.4.4: - version "0.4.5" - resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.4.5.tgz#c99e9e78d54f3fa775633aee5933aeaa4e80719a" - integrity sha512-dqBanNfktnp2hwL2YguV9Jh91PFX7gu7nRLs4TGsbAfAG6WOtlynFRYzwDwmmeSb5uIwHo9nx1ta0f7vAZVp2w== +mini-css-extract-plugin@^1.6.2: + version "1.6.2" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-1.6.2.tgz#83172b4fd812f8fc4a09d6f6d16f924f53990ca8" + integrity sha512-WhDvO3SjGm40oV5y26GjMJYjd2UMqrLAGKy5YS2/3QKJy2F7jgynuHTir/tgUUOiNQu5saXHdc8reo7YuhhT4Q== dependencies: - loader-utils "^1.1.0" - schema-utils "^1.0.0" + loader-utils "^2.0.0" + schema-utils "^3.0.0" webpack-sources "^1.1.0" mini-store@^3.0.1: From d0f5215cd80e85abf6123091c722b716c0e2fe13 Mon Sep 17 00:00:00 2001 From: Justin Clift Date: Fri, 28 Jul 2023 05:17:19 +1000 Subject: [PATCH 232/274] Bump eslint-loader to 4.0.2 (#6305) --- package.json | 2 +- yarn.lock | 95 +++++++--------------------------------------------- 2 files changed, 13 insertions(+), 84 deletions(-) diff --git a/package.json b/package.json index 8a4c1ede8c..45cc36f46b 100644 --- a/package.json +++ b/package.json @@ -115,7 +115,7 @@ "eslint": "^6.7.2", "eslint-config-prettier": "^6.7.0", "eslint-config-react-app": "^5.1.0", - "eslint-loader": "^3.0.3", + "eslint-loader": "^4.0.2", "eslint-plugin-chai-friendly": "^0.5.0", "eslint-plugin-compat": "^3.3.0", "eslint-plugin-cypress": "^2.0.1", diff --git a/yarn.lock b/yarn.lock index 0d9a2a685f..383c3391d7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5847,16 +5847,16 @@ eslint-import-resolver-node@^0.3.2: debug "^2.6.9" resolve "^1.5.0" -eslint-loader@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/eslint-loader/-/eslint-loader-3.0.3.tgz#e018e3d2722381d982b1201adb56819c73b480ca" - integrity sha512-+YRqB95PnNvxNp1HEjQmvf9KNvCin5HXYYseOXVC2U0KEcw4IkQ2IQEBG46j7+gW39bMzeu0GsUhVbBY3Votpw== +eslint-loader@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/eslint-loader/-/eslint-loader-4.0.2.tgz#386a1e21bcb613b3cf2d252a3b708023ccfb41ec" + integrity sha512-EDpXor6lsjtTzZpLUn7KmXs02+nIjGcgees9BYjNkWra3jVq5vVa8IoCKgzT2M7dNNeoMBtaSG83Bd40N3poLw== dependencies: + find-cache-dir "^3.3.1" fs-extra "^8.1.0" - loader-fs-cache "^1.0.2" - loader-utils "^1.2.3" - object-hash "^2.0.1" - schema-utils "^2.6.1" + loader-utils "^2.0.0" + object-hash "^2.0.3" + schema-utils "^2.6.5" eslint-module-utils@^2.4.0: version "2.4.1" @@ -6518,15 +6518,6 @@ finalhandler@1.2.0: statuses "2.0.1" unpipe "~1.0.0" -find-cache-dir@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-0.1.1.tgz#c8defae57c8a52a8a784f9e31c57c742e993a0b9" - integrity sha1-yN765XyKUqinhPnjHFfHQumToLk= - dependencies: - commondir "^1.0.1" - mkdirp "^0.5.1" - pkg-dir "^1.0.0" - find-cache-dir@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" @@ -6554,14 +6545,6 @@ find-cache-dir@^3.3.1: make-dir "^3.0.2" pkg-dir "^4.1.0" -find-up@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" - integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8= - dependencies: - path-exists "^2.0.0" - pinkie-promise "^2.0.0" - find-up@^2.0.0, find-up@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" @@ -9593,14 +9576,6 @@ load-json-file@^4.0.0: pify "^3.0.0" strip-bom "^3.0.0" -loader-fs-cache@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/loader-fs-cache/-/loader-fs-cache-1.0.2.tgz#54cedf6b727e1779fd8f01205f05f6e88706f086" - integrity sha512-70IzT/0/L+M20jUlEqZhZyArTU6VKLRTYRDAYN26g4jfzpJqjipLL3/hgYpySqI9PwsVRHHFja0LfEmsx9X2Cw== - dependencies: - find-cache-dir "^0.1.1" - mkdirp "0.5.1" - loader-runner@^2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" @@ -10117,11 +10092,6 @@ minimatch@^3.0.4, minimatch@^3.1.1: dependencies: brace-expansion "^1.1.7" -minimist@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" - integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= - minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6: version "1.2.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" @@ -10197,13 +10167,6 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" -mkdirp@0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" - integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= - dependencies: - minimist "0.0.8" - mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.4: version "0.5.6" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" @@ -10718,10 +10681,10 @@ object-copy@^0.1.0: define-property "^0.2.5" kind-of "^3.0.3" -object-hash@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-2.0.1.tgz#cef18a0c940cc60aa27965ecf49b782cbf101d96" - integrity sha512-HgcGMooY4JC2PBt9sdUdJ6PMzpin+YtY3r/7wg0uTifP+HJWW8rammseSEHuyt0UeShI183UGssCJqm1bJR7QA== +object-hash@^2.0.3: + version "2.2.0" + resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-2.2.0.tgz#5ad518581eefc443bd763472b8ff2e9c2c0d54a5" + integrity sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw== object-inspect@^1.12.3, object-inspect@^1.9.0: version "1.12.3" @@ -11201,13 +11164,6 @@ path-dirname@^1.0.0: resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= -path-exists@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" - integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s= - dependencies: - pinkie-promise "^2.0.0" - path-exists@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" @@ -11366,30 +11322,11 @@ pify@^4.0.1: resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== -pinkie-promise@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" - integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= - dependencies: - pinkie "^2.0.0" - -pinkie@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" - integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= - pirates@^4.0.1: version "4.0.6" resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9" integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== -pkg-dir@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-1.0.0.tgz#7a4b508a8d5bb2d629d447056ff4e9c9314cf3d4" - integrity sha1-ektQio1bstYp1EcFb/TpyTFM89Q= - dependencies: - find-up "^1.0.0" - pkg-dir@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" @@ -13237,14 +13174,6 @@ schema-utils@^1.0.0: ajv-errors "^1.0.0" ajv-keywords "^3.1.0" -schema-utils@^2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.6.1.tgz#eb78f0b945c7bcfa2082b3565e8db3548011dc4f" - integrity sha512-0WXHDs1VDJyo+Zqs9TKLKyD/h7yDpHUhEFsM2CzkICFdoX1av+GBq/J2xRTFfsQO5kBfhZzANf2VcIm84jqDbg== - dependencies: - ajv "^6.10.2" - ajv-keywords "^3.4.1" - schema-utils@^2.6.5: version "2.7.1" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" From ffbf0fbe456ac61a38552251e700bcf178601bbb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 27 Jul 2023 19:52:29 +0000 Subject: [PATCH 233/274] Bump minimist from 1.2.0 to 1.2.8 (#6306) Bumps [minimist](https://github.com/minimistjs/minimist) from 1.2.0 to 1.2.8. - [Changelog](https://github.com/minimistjs/minimist/blob/main/CHANGELOG.md) - [Commits](https://github.com/minimistjs/minimist/compare/v1.2.0...v1.2.8) --- updated-dependencies: - dependency-name: minimist dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/yarn.lock b/yarn.lock index 383c3391d7..280dd58e72 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10092,16 +10092,11 @@ minimatch@^3.0.4, minimatch@^3.1.1: dependencies: brace-expansion "^1.1.7" -minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6: +minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6, minimist@~1.2.0: version "1.2.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== -minimist@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" - integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= - minipass-collect@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" From 72db9757f879efc86e0e7a774f6338847f1ef963 Mon Sep 17 00:00:00 2001 From: Justin Clift Date: Fri, 28 Jul 2023 06:49:35 +1000 Subject: [PATCH 234/274] Bump @percy/agent to 0.28.7 (#6307) --- package.json | 2 +- yarn.lock | 234 ++++++++++++++++++++++++++++++++------------------- 2 files changed, 148 insertions(+), 88 deletions(-) diff --git a/package.json b/package.json index 45cc36f46b..2a73e8f810 100644 --- a/package.json +++ b/package.json @@ -86,7 +86,7 @@ "@babel/preset-react": "^7.0.0", "@babel/preset-typescript": "^7.22.5", "@cypress/code-coverage": "^3.11.0", - "@percy/agent": "0.24.3", + "@percy/agent": "^0.28.7", "@percy/cypress": "^3.1.2", "@pmmmwh/react-refresh-webpack-plugin": "^0.5.10", "@testing-library/cypress": "^8.0.7", diff --git a/yarn.lock b/yarn.lock index 280dd58e72..09ab66dd19 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1728,30 +1728,30 @@ resolved "https://registry.yarnpkg.com/@oclif/screen/-/screen-1.0.4.tgz#b740f68609dfae8aa71c3a6cab15d816407ba493" integrity sha512-60CHpq+eqnTxLZQ4PGHYNwUX572hgpMHGPtTWMjdTMsAvlm69lZV/4ly6O3sAYkomo4NggGcomrDpBe34rxUqw== -"@percy/agent@0.24.3": - version "0.24.3" - resolved "https://registry.yarnpkg.com/@percy/agent/-/agent-0.24.3.tgz#7f40dc1d8e72a2318a119c6cdfa3ce4049726c2d" - integrity sha512-gSx1qqtTMLix/ZzGo9taz02zKR9CGAt5megYW3jPW+DhyTaHSHoQgGcEI41el7T7BqB4FbfS0rkeG2B991mNcw== +"@percy/agent@^0.28.7": + version "0.28.7" + resolved "https://registry.yarnpkg.com/@percy/agent/-/agent-0.28.7.tgz#babacf424e7e011b0c79a760ecf9a555761521b0" + integrity sha512-mJTaoc6ocxetfMcxFMKzBB23N5gxf/v8v1AT4WK59AibP4KHDRSr+j67q6GkrRjYeEJuWEZGwUrE6Kx2hOi8MA== dependencies: "@oclif/command" "1.5.19" "@oclif/config" "^1" "@oclif/plugin-help" "^2" "@oclif/plugin-not-found" "^1.2" - axios "^0.19.0" + axios "^0.21.1" body-parser "^1.18.3" - colors "^1.3.2" + colors "1.4.0" cors "^2.8.4" cosmiconfig "^5.2.1" - cross-spawn "^6.0.5" + cross-spawn "^7.0.2" deepmerge "^4.0.0" express "^4.16.3" - follow-redirects "1.9.0" + follow-redirects "1.12.1" generic-pool "^3.7.1" globby "^10.0.1" image-size "^0.8.2" js-yaml "^3.13.1" percy-client "^3.2.0" - puppeteer "^2.0.0" + puppeteer "^5.3.1" retry-axios "^1.0.1" which "^2.0.1" winston "^3.0.0" @@ -2068,11 +2068,6 @@ resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.157.tgz#fdac1c52448861dfde1a2e1515dbc46e54926dc8" integrity sha512-Ft5BNFmv2pHDgxV5JDsndOWTRJ+56zte0ZpYLowp03tW+K+t8u8YMOzAnpuqPgzX6WO1XpDIUm7u04M8vdDiVQ== -"@types/mime-types@^2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@types/mime-types/-/mime-types-2.1.0.tgz#9ca52cda363f699c69466c2a6ccdaad913ea7a73" - integrity sha1-nKUs2jY/aZxpRmwqbM2q2RPqenM= - "@types/mime@*": version "3.0.1" resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.1.tgz#5f8f2bca0a5863cb69bc0b0acd88c96cb1d4ae10" @@ -3111,12 +3106,12 @@ axios@0.27.2: follow-redirects "^1.14.9" form-data "^4.0.0" -axios@^0.19.0: - version "0.19.2" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.19.2.tgz#3ea36c5d8818d0d5f8a8a97a6d36b86cdc00cb27" - integrity sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA== +axios@^0.21.1: + version "0.21.4" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575" + integrity sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg== dependencies: - follow-redirects "1.5.10" + follow-redirects "^1.14.0" axobject-query@^2.2.0: version "2.2.0" @@ -3308,6 +3303,11 @@ base64-js@^1.0.2: resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.0.tgz#cab1e6118f051095e58b5281aea8c1cd22bfc0e3" integrity sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw== +base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + base@^0.11.1: version "0.11.2" resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" @@ -3412,6 +3412,15 @@ bl@^2.2.1: readable-stream "^2.3.5" safe-buffer "^5.1.1" +bl@^4.0.3: + version "4.1.0" + resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" + integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== + dependencies: + buffer "^5.5.0" + inherits "^2.0.4" + readable-stream "^3.4.0" + blob-util@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/blob-util/-/blob-util-2.0.2.tgz#3b4e3c281111bb7f11128518006cdc60b403a1eb" @@ -3646,6 +3655,14 @@ buffer@^4.3.0: ieee754 "^1.1.4" isarray "^1.0.0" +buffer@^5.2.1, buffer@^5.5.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.1.13" + builtin-status-codes@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" @@ -4239,16 +4256,16 @@ colormap@^2.3.1: dependencies: lerp "^1.0.3" +colors@1.4.0, colors@^1.2.1: + version "1.4.0" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" + integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== + colors@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" integrity sha1-FopHAXVran9RoSzgyXv6KMCE7WM= -colors@^1.2.1, colors@^1.3.2: - version "1.4.0" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" - integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== - colorspace@1.1.x: version "1.1.2" resolved "https://registry.yarnpkg.com/colorspace/-/colorspace-1.1.2.tgz#e0128950d082b86a2168580796a0aa5d6c68d8c5" @@ -4363,7 +4380,7 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== -concat-stream@^1.5.0, concat-stream@^1.5.2, concat-stream@^1.6.2: +concat-stream@^1.5.0, concat-stream@^1.5.2: version "1.6.2" resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== @@ -4588,7 +4605,7 @@ cross-spawn@^6.0.0, cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^7.0.0, cross-spawn@^7.0.3: +cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== @@ -4961,14 +4978,7 @@ debug@4.3.4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.4: dependencies: ms "2.1.2" -debug@=3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" - integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== - dependencies: - ms "2.0.0" - -debug@^3.0.0, debug@^3.1.0: +debug@^3.1.0: version "3.2.6" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== @@ -5143,6 +5153,11 @@ detect-node@^2.0.4: resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c" integrity sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw== +devtools-protocol@0.0.818844: + version "0.0.818844" + resolved "https://registry.yarnpkg.com/devtools-protocol/-/devtools-protocol-0.0.818844.tgz#d1947278ec85b53e4c8ca598f607a28fa785ba9e" + integrity sha512-AD1hi7iVJ8OD0aMLQU5VK0XH9LDlA1+BcPIgrAxPfaibx2DbWucuyOhc4oyQCbnvDDO68nN6/LcKfqTP343Jjg== + diff-match-patch@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/diff-match-patch/-/diff-match-patch-1.0.5.tgz#abb584d5f10cd1196dfc55aa03701592ae3f7b37" @@ -5461,7 +5476,7 @@ encodeurl@~1.0.2: resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= -end-of-stream@^1.0.0, end-of-stream@^1.1.0: +end-of-stream@^1.0.0, end-of-stream@^1.1.0, end-of-stream@^1.4.1: version "1.4.4" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== @@ -6307,7 +6322,7 @@ extract-stack@^1.0.0: resolved "https://registry.yarnpkg.com/extract-stack/-/extract-stack-1.0.0.tgz#b97acaf9441eea2332529624b732fc5a1c8165fa" integrity sha1-uXrK+UQe6iMyUpYktzL8WhyBZfo= -extract-zip@2.0.1: +extract-zip@2.0.1, extract-zip@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-2.0.1.tgz#663dca56fe46df890d5f131ef4a06d22bb8ba13a" integrity sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg== @@ -6318,16 +6333,6 @@ extract-zip@2.0.1: optionalDependencies: "@types/yauzl" "^2.9.1" -extract-zip@^1.6.6: - version "1.7.0" - resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-1.7.0.tgz#556cc3ae9df7f452c493a0cfb51cc30277940927" - integrity sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA== - dependencies: - concat-stream "^1.6.2" - debug "^2.6.9" - mkdirp "^0.5.4" - yauzl "^2.10.0" - extsprintf@1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" @@ -6609,26 +6614,17 @@ fn.name@1.x.x: resolved "https://registry.yarnpkg.com/fn.name/-/fn.name-1.1.0.tgz#26cad8017967aea8731bc42961d04a3d5988accc" integrity sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw== -follow-redirects@1.5.10: - version "1.5.10" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a" - integrity sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ== - dependencies: - debug "=3.1.0" - -follow-redirects@1.9.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.9.0.tgz#8d5bcdc65b7108fe1508649c79c12d732dcedb4f" - integrity sha512-CRcPzsSIbXyVDl0QI01muNDu69S8trU4jArW9LpOt2WtC6LyUJetcIrmfHsRBx7/Jb6GHJUiuqyYxPooFfNt6A== - dependencies: - debug "^3.0.0" +follow-redirects@1.12.1: + version "1.12.1" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.12.1.tgz#de54a6205311b93d60398ebc01cf7015682312b6" + integrity sha512-tmRv0AVuR7ZyouUHLeNSiO6pqulF7dYa3s19c6t+wz9LD69/uSzdMxJ2S91nTI9U3rt/IldxpzMOFejp6f0hjg== follow-redirects@^1.0.0: version "1.14.5" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.5.tgz#f09a5848981d3c772b5392309778523f8d85c381" integrity sha512-wtphSXy7d4/OR+MvIFbCVBDzZ5520qV8XfPklSN5QtxuMUJZ+b0Wnst1e1lCDocfzuCkHqj8k0FpZqO+UIaKNA== -follow-redirects@^1.14.9: +follow-redirects@^1.14.0, follow-redirects@^1.14.9: version "1.15.2" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== @@ -6735,6 +6731,11 @@ fromentries@^1.2.0: resolved "https://registry.yarnpkg.com/fromentries/-/fromentries-1.2.1.tgz#64c31665630479bc993cd800d53387920dc61b4d" integrity sha512-Xu2Qh8yqYuDhQGOhD5iJGninErSfI9A3FrriD3tjUgV5VbJFeH8vfgZ9HnC6jWN80QDVNQK5vmxRAmEAp7Mevw== +fs-constants@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" + integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== + fs-extra@^7.0.0: version "7.0.1" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" @@ -8057,6 +8058,11 @@ ieee754@^1.1.12, ieee754@^1.1.4: resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.12.tgz#50bf24e5b9c8bb98af4964c941cdb0918da7b60b" integrity sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA== +ieee754@^1.1.13: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + iferr@^0.1.5: version "0.1.5" resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" @@ -10029,13 +10035,6 @@ mime-types@^2.1.12, mime-types@^2.1.31, mime-types@~2.1.19, mime-types@~2.1.34: dependencies: mime-db "1.52.0" -mime-types@^2.1.25, mime-types@~2.1.24: - version "2.1.27" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f" - integrity sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w== - dependencies: - mime-db "1.44.0" - mime-types@~2.1.17, mime-types@~2.1.18: version "2.1.22" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.22.tgz#fe6b355a190926ab7698c9a0556a11199b2199bd" @@ -10043,6 +10042,13 @@ mime-types@~2.1.17, mime-types@~2.1.18: dependencies: mime-db "~1.38.0" +mime-types@~2.1.24: + version "2.1.27" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f" + integrity sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w== + dependencies: + mime-db "1.44.0" + mime@1.6.0, mime@^1.4.1: version "1.6.0" resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" @@ -10162,7 +10168,12 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" -mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.4: +mkdirp-classic@^0.5.2: + version "0.5.3" + resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" + integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== + +mkdirp@^0.5.1, mkdirp@^0.5.3: version "0.5.6" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== @@ -10431,6 +10442,13 @@ no-case@^3.0.4: lower-case "^2.0.2" tslib "^2.0.3" +node-fetch@^2.6.1: + version "2.6.12" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.12.tgz#02eb8e22074018e3d5a83016649d04df0e348fba" + integrity sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g== + dependencies: + whatwg-url "^5.0.0" + node-forge@^1: version "1.3.1" resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3" @@ -11691,21 +11709,23 @@ punycode@^2.1.0, punycode@^2.1.1: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== -puppeteer@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/puppeteer/-/puppeteer-2.1.1.tgz#ccde47c2a688f131883b50f2d697bd25189da27e" - integrity sha512-LWzaDVQkk1EPiuYeTOj+CZRIjda4k2s5w4MK4xoH2+kgWV/SDlkYHmxatDdtYrciHUKSXTsGgPgPP8ILVdBsxg== +puppeteer@^5.3.1: + version "5.5.0" + resolved "https://registry.yarnpkg.com/puppeteer/-/puppeteer-5.5.0.tgz#331a7edd212ca06b4a556156435f58cbae08af00" + integrity sha512-OM8ZvTXAhfgFA7wBIIGlPQzvyEETzDjeRa4mZRCRHxYL+GNH5WAuYUQdja3rpWZvkX/JKqmuVgbsxDNsDFjMEg== dependencies: - "@types/mime-types" "^2.1.0" debug "^4.1.0" - extract-zip "^1.6.6" + devtools-protocol "0.0.818844" + extract-zip "^2.0.0" https-proxy-agent "^4.0.0" - mime "^2.0.3" - mime-types "^2.1.25" + node-fetch "^2.6.1" + pkg-dir "^4.2.0" progress "^2.0.1" proxy-from-env "^1.0.0" - rimraf "^2.6.1" - ws "^6.1.0" + rimraf "^3.0.2" + tar-fs "^2.0.0" + unbzip2-stream "^1.3.3" + ws "^7.2.3" qs@6.11.0: version "6.11.0" @@ -12922,7 +12942,7 @@ rimraf@2.6.3: dependencies: glob "^7.1.3" -rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.3: +rimraf@^2.5.4, rimraf@^2.6.3: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== @@ -14220,6 +14240,27 @@ tape@^4.0.0: string.prototype.trim "~1.2.1" through "~2.3.8" +tar-fs@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784" + integrity sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng== + dependencies: + chownr "^1.1.1" + mkdirp-classic "^0.5.2" + pump "^3.0.0" + tar-stream "^2.1.4" + +tar-stream@^2.1.4: + version "2.2.0" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" + integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== + dependencies: + bl "^4.0.3" + end-of-stream "^1.4.1" + fs-constants "^1.0.0" + inherits "^2.0.3" + readable-stream "^3.1.1" + tar@^6.0.2: version "6.1.15" resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.15.tgz#c9738b0b98845a3b344d334b8fa3041aaba53a69" @@ -14489,6 +14530,11 @@ tr46@^1.0.1: dependencies: punycode "^2.1.0" +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== + treeify@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/treeify/-/treeify-1.1.0.tgz#4e31c6a463accd0943879f30667c4fdaff411bb8" @@ -14692,6 +14738,14 @@ unbox-primitive@^1.0.2: has-symbols "^1.0.3" which-boxed-primitive "^1.0.2" +unbzip2-stream@^1.3.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz#b0da04c4371311df771cdc215e87f2130991ace7" + integrity sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg== + dependencies: + buffer "^5.2.1" + through "^2.3.8" + unicode-canonical-property-names-ecmascript@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" @@ -15078,6 +15132,11 @@ webgl-context@^2.2.0: dependencies: get-canvas-context "^1.0.1" +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== + webidl-conversions@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" @@ -15268,6 +15327,14 @@ whatwg-mimetype@^2.1.0, whatwg-mimetype@^2.2.0: resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + whatwg-url@^6.4.1: version "6.5.0" resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-6.5.0.tgz#f2df02bff176fd65070df74ad5ccbb5a199965a8" @@ -15472,14 +15539,7 @@ ws@^5.2.0: dependencies: async-limiter "~1.0.0" -ws@^6.1.0: - version "6.2.2" - resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.2.tgz#dd5cdbd57a9979916097652d78f1cc5faea0c32e" - integrity sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw== - dependencies: - async-limiter "~1.0.0" - -ws@^7.3.1: +ws@^7.2.3, ws@^7.3.1: version "7.5.9" resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== From a5a9be352db39271bcd772b61f97f821a28f7477 Mon Sep 17 00:00:00 2001 From: Justin Clift Date: Fri, 28 Jul 2023 08:32:02 +1000 Subject: [PATCH 235/274] Bump webpack-build-notifier to 2.3.0 (#6308) --- package.json | 2 +- yarn.lock | 31 ++++++++++++++++--------------- 2 files changed, 17 insertions(+), 16 deletions(-) diff --git a/package.json b/package.json index 2a73e8f810..3926e29d1c 100644 --- a/package.json +++ b/package.json @@ -147,7 +147,7 @@ "typescript": "^4.1.2", "url-loader": "^1.1.2", "webpack": "^4.46.0", - "webpack-build-notifier": "^0.1.30", + "webpack-build-notifier": "^2.3.0", "webpack-bundle-analyzer": "^4.9.0", "webpack-cli": "^4.10.0", "webpack-dev-server": "^4.15.1", diff --git a/yarn.lock b/yarn.lock index 09ab66dd19..ca509970ad 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10488,15 +10488,17 @@ node-libs-browser@^2.2.1: util "^0.11.0" vm-browserify "^1.0.1" -node-notifier@5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.2.1.tgz#fa313dd08f5517db0e2502e5758d664ac69f9dea" - integrity sha512-MIBs+AAd6dJ2SklbbE8RUDRlIVhU8MaNLh1A9SUZDUHPiZkWLFde6UNwG41yQHZEToHgJMXqyVZ9UcS/ReOVTg== +node-notifier@9.0.1: + version "9.0.1" + resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-9.0.1.tgz#cea837f4c5e733936c7b9005e6545cea825d1af4" + integrity sha512-fPNFIp2hF/Dq7qLDzSg4vZ0J4e9v60gJR+Qx7RbjbWqzPDdEqeVpEx5CFeDAELIl+A/woaaNn1fQ5nEVerMxJg== dependencies: growly "^1.3.0" - semver "^5.4.1" + is-wsl "^2.2.0" + semver "^7.3.2" shellwords "^0.1.1" - which "^1.3.0" + uuid "^8.3.0" + which "^2.0.2" node-notifier@^5.4.2: version "5.4.5" @@ -14998,7 +15000,7 @@ uuid@^3.3.2, uuid@^3.3.3: resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== -uuid@^8.3.2: +uuid@^8.3.0, uuid@^8.3.2: version "8.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== @@ -15142,14 +15144,13 @@ webidl-conversions@^4.0.2: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== -webpack-build-notifier@^0.1.30: - version "0.1.30" - resolved "https://registry.yarnpkg.com/webpack-build-notifier/-/webpack-build-notifier-0.1.30.tgz#837e9002d13c1d76bdf954ccafe0b824b38bb789" - integrity sha512-HeZ4Wr8XP7W0kSmPQkZCXARQVIjVFNPyJBdUqkqcE0ySYNjr6vOH3ufHESLPuy5KmMRUjHJdqJ6y3McDfCjJxQ== +webpack-build-notifier@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/webpack-build-notifier/-/webpack-build-notifier-2.3.0.tgz#cb314fbe85b2684e00443b465c08026e812b83f5" + integrity sha512-+/s6GrvSRwP0CHqHOqZcta7EcqjL1MUR9KmBSlkJj6xJVZtFB/z68CTeLPrHnMED/umlXN9hcFV8wmGjeI/K2A== dependencies: - ansi-regex "^2.0.0" - node-notifier "5.2.1" - strip-ansi "^3.0.1" + node-notifier "9.0.1" + strip-ansi "^6.0.0" webpack-bundle-analyzer@^4.9.0: version "4.9.0" @@ -15397,7 +15398,7 @@ which@^1.2.9, which@^1.3.0: dependencies: isexe "^2.0.0" -which@^2.0.1: +which@^2.0.1, which@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== From 55690db1d8a66b9077601189514a6636509be4d6 Mon Sep 17 00:00:00 2001 From: Justin Clift Date: Fri, 28 Jul 2023 09:40:00 +1000 Subject: [PATCH 236/274] Bump Cypress to 9.7.0 (#6309) * Bump Cypress to 9.7.0 * Initial fixes for Cypress 9.7.0 * Restyled by prettier (#6310) Co-authored-by: Restyled.io --------- Co-authored-by: restyled-io[bot] <32688539+restyled-io[bot]@users.noreply.github.com> Co-authored-by: Restyled.io --- .../integration/dashboard/textbox_spec.js | 2 +- .../data-source/create_data_source_spec.js | 2 +- package.json | 2 +- yarn.lock | 106 +++++++++++------- 4 files changed, 68 insertions(+), 44 deletions(-) diff --git a/client/cypress/integration/dashboard/textbox_spec.js b/client/cypress/integration/dashboard/textbox_spec.js index 0c8463587e..669e73e912 100644 --- a/client/cypress/integration/dashboard/textbox_spec.js +++ b/client/cypress/integration/dashboard/textbox_spec.js @@ -141,7 +141,7 @@ describe("Textbox", () => { }) .should($el => { const { top, left } = $el.offset(); - expect(top).to.eq(162); + expect(top).to.be.oneOf([162, 162.015625]); expect(left).to.eq(282); expect($el.width()).to.eq(545); expect($el.height()).to.eq(185); diff --git a/client/cypress/integration/data-source/create_data_source_spec.js b/client/cypress/integration/data-source/create_data_source_spec.js index 0453dd5d62..1549cef6b1 100644 --- a/client/cypress/integration/data-source/create_data_source_spec.js +++ b/client/cypress/integration/data-source/create_data_source_spec.js @@ -47,7 +47,7 @@ describe("Create Data Source", () => { cy.getByTestId("User").type("postgres"); cy.getByTestId("Password").type("postgres"); cy.getByTestId("Database Name").type("postgres{enter}"); - cy.getByTestId("CreateSourceSaveButton").click(); + cy.getByTestId("CreateSourceSaveButton").click({ force: true }); cy.contains("Saved."); }); diff --git a/package.json b/package.json index 3926e29d1c..3cbf349582 100644 --- a/package.json +++ b/package.json @@ -107,7 +107,7 @@ "babel-plugin-transform-builtin-extend": "^1.1.2", "copy-webpack-plugin": "^6.4.1", "css-loader": "^1.0.1", - "cypress": "7.7.0", + "cypress": "^9.7.0", "dayjs": "^1.11.9", "enzyme": "^3.8.0", "enzyme-adapter-react-16": "^1.7.1", diff --git a/yarn.lock b/yarn.lock index ca509970ad..0217e544d0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1235,6 +1235,11 @@ exec-sh "^0.3.2" minimist "^1.2.0" +"@colors/colors@1.5.0": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" + integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== + "@cypress/code-coverage@^3.11.0": version "3.11.0" resolved "https://registry.yarnpkg.com/@cypress/code-coverage/-/code-coverage-3.11.0.tgz#f695b53f5e2b89144ca418fd6608a63720e2880f" @@ -1250,10 +1255,10 @@ js-yaml "4.1.0" nyc "15.1.0" -"@cypress/request@^2.88.5": - version "2.88.5" - resolved "https://registry.yarnpkg.com/@cypress/request/-/request-2.88.5.tgz#8d7ecd17b53a849cfd5ab06d5abe7d84976375d7" - integrity sha512-TzEC1XMi1hJkywWpRfD2clreTa/Z+lOrXDCxxBTBPEcY5azdPi56A6Xw+O4tWJnaJH3iIE7G5aDXZC6JgRZLcA== +"@cypress/request@^2.88.10": + version "2.88.11" + resolved "https://registry.yarnpkg.com/@cypress/request/-/request-2.88.11.tgz#5a4c7399bc2d7e7ed56e92ce5acb620c8b187047" + integrity sha512-M83/wfQ1EkspjkE2lNWNV5ui2Cv7UCv1swW1DqljahbzLVWltcsexQh8jYtuS/vzFXP+HySntGM83ZXA9fn17w== dependencies: aws-sign2 "~0.7.0" aws4 "^1.8.0" @@ -1262,19 +1267,17 @@ extend "~3.0.2" forever-agent "~0.6.1" form-data "~2.3.2" - har-validator "~5.1.3" - http-signature "~1.2.0" + http-signature "~1.3.6" is-typedarray "~1.0.0" isstream "~0.1.2" json-stringify-safe "~5.0.1" mime-types "~2.1.19" - oauth-sign "~0.9.0" performance-now "^2.1.0" - qs "~6.5.2" + qs "~6.10.3" safe-buffer "^5.1.2" tough-cookie "~2.5.0" tunnel-agent "^0.6.0" - uuid "^3.3.2" + uuid "^8.3.2" "@cypress/webpack-preprocessor@^5.11.0": version "5.17.1" @@ -2152,10 +2155,10 @@ "@types/mime" "*" "@types/node" "*" -"@types/sinonjs__fake-timers@^6.0.2": - version "6.0.4" - resolved "https://registry.yarnpkg.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-6.0.4.tgz#0ecc1b9259b76598ef01942f547904ce61a6a77d" - integrity sha512-IFQTJARgMUBF+xVd2b+hIgXWrZEjND3vJtRCvIelcFB5SIXfjV4bOHbHJ0eXKh+0COrBRc8MqteKAz/j88rE0A== +"@types/sinonjs__fake-timers@8.1.1": + version "8.1.1" + resolved "https://registry.yarnpkg.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.1.tgz#b49c2c70150141a15e0fa7e79cf1f92a72934ce3" + integrity sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g== "@types/sizzle@^2.3.2": version "2.3.2" @@ -3655,7 +3658,7 @@ buffer@^4.3.0: ieee754 "^1.1.4" isarray "^1.0.0" -buffer@^5.2.1, buffer@^5.5.0: +buffer@^5.2.1, buffer@^5.5.0, buffer@^5.6.0: version "5.7.1" resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== @@ -4055,15 +4058,14 @@ cli-cursor@^3.1.0: dependencies: restore-cursor "^3.1.0" -cli-table3@~0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.0.tgz#b7b1bc65ca8e7b5cef9124e13dc2b21e2ce4faee" - integrity sha512-gnB85c3MGC7Nm9I/FkiasNBOKjOiO1RNuXXarQms37q4QMpWdlbBgD/VnOStA2faG1dpXMv31RFApjX1/QdgWQ== +cli-table3@~0.6.1: + version "0.6.3" + resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.3.tgz#61ab765aac156b52f222954ffc607a6f01dbeeb2" + integrity sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg== dependencies: - object-assign "^4.1.0" string-width "^4.2.0" optionalDependencies: - colors "^1.1.2" + "@colors/colors" "1.5.0" cli-truncate@^2.1.0: version "2.1.0" @@ -4261,11 +4263,6 @@ colors@1.4.0, colors@^1.2.1: resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== -colors@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" - integrity sha1-FopHAXVran9RoSzgyXv6KMCE7WM= - colorspace@1.1.x: version "1.1.2" resolved "https://registry.yarnpkg.com/colorspace/-/colorspace-1.1.2.tgz#e0128950d082b86a2168580796a0aa5d6c68d8c5" @@ -4783,24 +4780,25 @@ cyclist@^1.0.1: resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.2.tgz#673b5f233bf34d8e602b949429f8171d9121bea3" integrity sha512-0sVXIohTfLqVIW3kb/0n6IiWF3Ifj5nm2XaSrLq2DI6fKIGa2fYAZdk917rUneaeLVpYfFcyXE2ft0fe3remsA== -cypress@7.7.0: - version "7.7.0" - resolved "https://registry.yarnpkg.com/cypress/-/cypress-7.7.0.tgz#0839ae28e5520536f9667d6c9ae81496b3836e64" - integrity sha512-uYBYXNoI5ym0UxROwhQXWTi8JbUEjpC6l/bzoGZNxoKGsLrC1SDPgIDJMgLX/MeEdPL0UInXLDUWN/rSyZUCjQ== +cypress@^9.7.0: + version "9.7.0" + resolved "https://registry.yarnpkg.com/cypress/-/cypress-9.7.0.tgz#bf55b2afd481f7a113ef5604aa8b693564b5e744" + integrity sha512-+1EE1nuuuwIt/N1KXRR2iWHU+OiIt7H28jJDyyI4tiUftId/DrXYEwoDa5+kH2pki1zxnA0r6HrUGHV5eLbF5Q== dependencies: - "@cypress/request" "^2.88.5" + "@cypress/request" "^2.88.10" "@cypress/xvfb" "^1.2.4" "@types/node" "^14.14.31" - "@types/sinonjs__fake-timers" "^6.0.2" + "@types/sinonjs__fake-timers" "8.1.1" "@types/sizzle" "^2.3.2" arch "^2.2.0" blob-util "^2.0.2" bluebird "^3.7.2" + buffer "^5.6.0" cachedir "^2.3.0" chalk "^4.1.0" check-more-types "^2.24.0" cli-cursor "^3.1.0" - cli-table3 "~0.6.0" + cli-table3 "~0.6.1" commander "^5.1.0" common-tags "^1.8.0" dayjs "^1.10.4" @@ -4819,15 +4817,15 @@ cypress@7.7.0: listr2 "^3.8.3" lodash "^4.17.21" log-symbols "^4.0.0" - minimist "^1.2.5" + minimist "^1.2.6" ospath "^1.2.2" pretty-bytes "^5.6.0" - ramda "~0.27.1" + proxy-from-env "1.0.0" request-progress "^3.0.0" + semver "^7.3.2" supports-color "^8.1.1" tmp "~0.2.1" untildify "^4.0.0" - url "^0.11.0" yauzl "^2.10.0" d3-array@1, d3-array@^1.2.1: @@ -7999,6 +7997,15 @@ http-signature@~1.2.0: jsprim "^1.2.2" sshpk "^1.7.0" +http-signature@~1.3.6: + version "1.3.6" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.3.6.tgz#cb6fbfdf86d1c974f343be94e87f7fc128662cf9" + integrity sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw== + dependencies: + assert-plus "^1.0.0" + jsprim "^2.0.2" + sshpk "^1.14.1" + https-browserify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" @@ -9392,6 +9399,16 @@ jsprim@^1.2.2: json-schema "0.4.0" verror "1.10.0" +jsprim@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-2.0.2.tgz#77ca23dbcd4135cd364800d22ff82c2185803d4d" + integrity sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ== + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.4.0" + verror "1.10.0" + jssha@^2.1.0: version "2.4.2" resolved "https://registry.yarnpkg.com/jssha/-/jssha-2.4.2.tgz#d950b095634928bd6b2bda1d42da9a3a762d65e9" @@ -11639,6 +11656,11 @@ proxy-addr@~2.0.7: forwarded "0.2.0" ipaddr.js "1.9.1" +proxy-from-env@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.0.0.tgz#33c50398f70ea7eb96d21f7b817630a55791c7ee" + integrity sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A== + proxy-from-env@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" @@ -11736,6 +11758,13 @@ qs@6.11.0: dependencies: side-channel "^1.0.4" +qs@~6.10.3: + version "6.10.5" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.5.tgz#974715920a80ff6a262264acd2c7e6c2a53282b4" + integrity sha512-O5RlPh0VFtR78y79rgcgKK4wbAI0C5zGVLztOIdpWX6ep368q5Hv6XRxDvXuZ9q3C6v+e3n8UfZZJw7IIG27eQ== + dependencies: + side-channel "^1.0.4" + qs@~6.5.2: version "6.5.3" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" @@ -11791,11 +11820,6 @@ railroad-diagrams@^1.0.0: resolved "https://registry.yarnpkg.com/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz#eb7e6267548ddedfb899c1b90e57374559cddb7e" integrity sha1-635iZ1SN3t+4mcG5Dlc3RVnN234= -ramda@~0.27.1: - version "0.27.2" - resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.27.2.tgz#84463226f7f36dc33592f6f4ed6374c48306c3f1" - integrity sha512-SbiLPU40JuJniHexQSAgad32hfwd+DRUdwF2PlVuI5RZD0/vahUco7R8vD86J/tcEKKF9vZrUVwgtmGCqlCKyA== - randexp@0.4.6: version "0.4.6" resolved "https://registry.yarnpkg.com/randexp/-/randexp-0.4.6.tgz#e986ad5e5e31dae13ddd6f7b3019aa7c87f60ca3" @@ -13731,7 +13755,7 @@ sprintf-js@~1.0.2: dependencies: lodash "^4.16.0" -sshpk@^1.7.0: +sshpk@^1.14.1, sshpk@^1.7.0: version "1.17.0" resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.17.0.tgz#578082d92d4fe612b13007496e543fa0fbcbe4c5" integrity sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ== From 1b064da901701b09f29ce19e281837322a2f7131 Mon Sep 17 00:00:00 2001 From: Shunsuke Ohashi Date: Fri, 28 Jul 2023 10:29:22 +0900 Subject: [PATCH 237/274] return project id as str, not bytes (#6303) --- redash/query_runner/big_query_gce.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/redash/query_runner/big_query_gce.py b/redash/query_runner/big_query_gce.py index fed0eefe5d..ddc9a9e2ef 100644 --- a/redash/query_runner/big_query_gce.py +++ b/redash/query_runner/big_query_gce.py @@ -63,7 +63,7 @@ def _get_project_id(self): return requests.get( "http://metadata/computeMetadata/v1/project/project-id", headers={"Metadata-Flavor": "Google"}, - ).content + ).text def _get_bigquery_service(self): credentials = gce.AppAssertionCredentials(scope="https://www.googleapis.com/auth/bigquery") From 875973bfcd2c71ff41bfa62d2aa0085cca034972 Mon Sep 17 00:00:00 2001 From: Justin Clift Date: Fri, 28 Jul 2023 12:56:03 +1000 Subject: [PATCH 238/274] Bump Cypress to 10.11.0 (#6311) --- cypress.config.js | 22 ++++++++++++++++++++++ cypress.json | 18 ------------------ package.json | 2 +- yarn.lock | 18 +++++++++--------- 4 files changed, 32 insertions(+), 28 deletions(-) create mode 100644 cypress.config.js delete mode 100644 cypress.json diff --git a/cypress.config.js b/cypress.config.js new file mode 100644 index 0000000000..292af0d4cb --- /dev/null +++ b/cypress.config.js @@ -0,0 +1,22 @@ +const { defineConfig } = require('cypress') + +module.exports = defineConfig({ + e2e: { + baseUrl: 'http://localhost:5001', + defaultCommandTimeout: 20000, + downloadsFolder: 'client/cypress/downloads', + fixturesFolder: 'client/cypress/fixtures', + requestTimeout: 15000, + screenshotsFolder: 'client/cypress/screenshots', + specPattern: 'client/cypress/integration/', + supportFile: 'client/cypress/support/index.js', + video: true, + videoUploadOnPasses: false, + videosFolder: 'client/cypress/videos', + viewportHeight: 1024, + viewportWidth: 1280, + env: { + coverage: false + } + }, +}) diff --git a/cypress.json b/cypress.json deleted file mode 100644 index 4d43b97289..0000000000 --- a/cypress.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "baseUrl": "http://localhost:5001", - "video": true, - "videoUploadOnPasses": false, - "fixturesFolder": "client/cypress/fixtures", - "integrationFolder": "client/cypress/integration", - "pluginsFile": false, - "screenshotsFolder": "client/cypress/screenshots", - "videosFolder": "client/cypress/videos", - "supportFile": "client/cypress/support/index.js", - "defaultCommandTimeout": 20000, - "requestTimeout": 15000, - "viewportWidth": 1280, - "viewportHeight": 1024, - "env": { - "coverage": false - } -} diff --git a/package.json b/package.json index 3cbf349582..a01b8aee13 100644 --- a/package.json +++ b/package.json @@ -107,7 +107,7 @@ "babel-plugin-transform-builtin-extend": "^1.1.2", "copy-webpack-plugin": "^6.4.1", "css-loader": "^1.0.1", - "cypress": "^9.7.0", + "cypress": "^10.11.0", "dayjs": "^1.11.9", "enzyme": "^3.8.0", "enzyme-adapter-react-16": "^1.7.1", diff --git a/yarn.lock b/yarn.lock index 0217e544d0..2ef7f93d97 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4780,10 +4780,10 @@ cyclist@^1.0.1: resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.2.tgz#673b5f233bf34d8e602b949429f8171d9121bea3" integrity sha512-0sVXIohTfLqVIW3kb/0n6IiWF3Ifj5nm2XaSrLq2DI6fKIGa2fYAZdk917rUneaeLVpYfFcyXE2ft0fe3remsA== -cypress@^9.7.0: - version "9.7.0" - resolved "https://registry.yarnpkg.com/cypress/-/cypress-9.7.0.tgz#bf55b2afd481f7a113ef5604aa8b693564b5e744" - integrity sha512-+1EE1nuuuwIt/N1KXRR2iWHU+OiIt7H28jJDyyI4tiUftId/DrXYEwoDa5+kH2pki1zxnA0r6HrUGHV5eLbF5Q== +cypress@^10.11.0: + version "10.11.0" + resolved "https://registry.yarnpkg.com/cypress/-/cypress-10.11.0.tgz#e9fbdd7638bae3d8fb7619fd75a6330d11ebb4e8" + integrity sha512-lsaE7dprw5DoXM00skni6W5ElVVLGAdRUUdZjX2dYsGjbY/QnpzWZ95Zom1mkGg0hAaO/QVTZoFVS7Jgr/GUPA== dependencies: "@cypress/request" "^2.88.10" "@cypress/xvfb" "^1.2.4" @@ -4804,7 +4804,7 @@ cypress@^9.7.0: dayjs "^1.10.4" debug "^4.3.2" enquirer "^2.3.6" - eventemitter2 "^6.4.3" + eventemitter2 "6.4.7" execa "4.1.0" executable "^4.1.1" extract-zip "2.0.1" @@ -6110,10 +6110,10 @@ etag@~1.8.1: resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= -eventemitter2@^6.4.3: - version "6.4.9" - resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-6.4.9.tgz#41f2750781b4230ed58827bc119d293471ecb125" - integrity sha512-JEPTiaOt9f04oa6NOkc4aH+nVp5I3wEjpHbIPqfgCdD5v5bUzy7xQqwcVO2aDQgOWhI28da57HksMrzK9HlRxg== +eventemitter2@6.4.7: + version "6.4.7" + resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-6.4.7.tgz#a7f6c4d7abf28a14c1ef3442f21cb306a054271d" + integrity sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg== eventemitter3@^4.0.0: version "4.0.7" From b43cb1797e46b00e15fdec8791cbaa4ac99b6673 Mon Sep 17 00:00:00 2001 From: Justin Clift Date: Fri, 28 Jul 2023 14:24:28 +1000 Subject: [PATCH 239/274] Bump Cypress to 11.2.0 (#6312) --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index a01b8aee13..0c74f2b6e5 100644 --- a/package.json +++ b/package.json @@ -107,7 +107,7 @@ "babel-plugin-transform-builtin-extend": "^1.1.2", "copy-webpack-plugin": "^6.4.1", "css-loader": "^1.0.1", - "cypress": "^10.11.0", + "cypress": "^11.2.0", "dayjs": "^1.11.9", "enzyme": "^3.8.0", "enzyme-adapter-react-16": "^1.7.1", diff --git a/yarn.lock b/yarn.lock index 2ef7f93d97..ae180f1abe 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4780,10 +4780,10 @@ cyclist@^1.0.1: resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.2.tgz#673b5f233bf34d8e602b949429f8171d9121bea3" integrity sha512-0sVXIohTfLqVIW3kb/0n6IiWF3Ifj5nm2XaSrLq2DI6fKIGa2fYAZdk917rUneaeLVpYfFcyXE2ft0fe3remsA== -cypress@^10.11.0: - version "10.11.0" - resolved "https://registry.yarnpkg.com/cypress/-/cypress-10.11.0.tgz#e9fbdd7638bae3d8fb7619fd75a6330d11ebb4e8" - integrity sha512-lsaE7dprw5DoXM00skni6W5ElVVLGAdRUUdZjX2dYsGjbY/QnpzWZ95Zom1mkGg0hAaO/QVTZoFVS7Jgr/GUPA== +cypress@^11.2.0: + version "11.2.0" + resolved "https://registry.yarnpkg.com/cypress/-/cypress-11.2.0.tgz#63edef8c387b687066c5493f6f0ad7b9ced4b2b7" + integrity sha512-u61UGwtu7lpsNWLUma/FKNOsrjcI6wleNmda/TyKHe0dOBcVjbCPlp1N6uwFZ0doXev7f/91YDpU9bqDCFeBLA== dependencies: "@cypress/request" "^2.88.10" "@cypress/xvfb" "^1.2.4" From ea4ee7ce9b1f0fa022b12193b88f2fe41822e820 Mon Sep 17 00:00:00 2001 From: Justin Clift Date: Fri, 28 Jul 2023 15:54:35 +1000 Subject: [PATCH 240/274] Remove request from the declared dependencies (#6313) --- package.json | 1 - yarn.lock | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/package.json b/package.json index 0c74f2b6e5..8774d9c2d2 100644 --- a/package.json +++ b/package.json @@ -141,7 +141,6 @@ "raw-loader": "^0.5.1", "react-refresh": "^0.14.0", "react-test-renderer": "^16.5.2", - "request": "^2.88.2", "request-cookies": "^1.1.0", "style-loader": "^2.0.0", "typescript": "^4.1.2", diff --git a/yarn.lock b/yarn.lock index ae180f1abe..68a74b82cd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12779,7 +12779,7 @@ request-promise@^4.2.2: stealthy-require "^1.1.1" tough-cookie "^2.3.3" -request@^2.87.0, request@^2.88.2: +request@^2.87.0: version "2.88.2" resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== From 5561b5fc5508fb38515ee3b26d72f1c3727cbbcd Mon Sep 17 00:00:00 2001 From: Justin Clift Date: Sat, 29 Jul 2023 06:52:41 +1000 Subject: [PATCH 241/274] Fix the peer dep warning about leaflet in viz-lib (#6315) --- viz-lib/package.json | 2 +- viz-lib/yarn.lock | 8 ++++---- yarn.lock | 10 +++++----- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/viz-lib/package.json b/viz-lib/package.json index cc0ef525aa..c583df82d9 100644 --- a/viz-lib/package.json +++ b/viz-lib/package.json @@ -86,7 +86,7 @@ "dompurify": "^2.0.7", "font-awesome": "^4.7.0", "hoist-non-react-statics": "^3.3.0", - "leaflet": "^1.2.0", + "leaflet": "~1.3.1", "leaflet-fullscreen": "^1.0.2", "leaflet.markercluster": "^1.1.0", "lodash": "^4.17.10", diff --git a/viz-lib/yarn.lock b/viz-lib/yarn.lock index e1c9344926..53de94b710 100644 --- a/viz-lib/yarn.lock +++ b/viz-lib/yarn.lock @@ -6868,10 +6868,10 @@ leaflet.markercluster@^1.1.0: resolved "https://registry.yarnpkg.com/leaflet.markercluster/-/leaflet.markercluster-1.4.1.tgz#b53f2c4f2ca7306ddab1dbb6f1861d5e8aa6c5e5" integrity sha512-ZSEpE/EFApR0bJ1w/dUGwTSUvWlpalKqIzkaYdYB7jaftQA/Y2Jav+eT4CMtEYFj+ZK4mswP13Q2acnPBnhGOw== -leaflet@^1.2.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/leaflet/-/leaflet-1.6.0.tgz#aecbb044b949ec29469eeb31c77a88e2f448f308" - integrity sha512-CPkhyqWUKZKFJ6K8umN5/D2wrJ2+/8UIpXppY7QDnUZW5bZL5+SEI2J7GBpwh4LIupOKqbNSQXgqmrEJopHVNQ== +leaflet@~1.3.1: + version "1.3.4" + resolved "https://registry.yarnpkg.com/leaflet/-/leaflet-1.3.4.tgz#7f006ea5832603b53d7269ef5c595fd773060a40" + integrity sha512-FYL1LGFdj6v+2Ifpw+AcFIuIOqjNggfoLUwuwQv6+3sS21Za7Wvapq+LhbSE4NDXrEj6eYnW3y7LsaBICpyXtw== left-pad@^1.3.0: version "1.3.0" diff --git a/yarn.lock b/yarn.lock index 68a74b82cd..93ce22651f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1840,7 +1840,7 @@ dompurify "^2.0.7" font-awesome "^4.7.0" hoist-non-react-statics "^3.3.0" - leaflet "^1.2.0" + leaflet "~1.3.1" leaflet-fullscreen "^1.0.2" leaflet.markercluster "^1.1.0" lodash "^4.17.10" @@ -9504,10 +9504,10 @@ leaflet.markercluster@^1.1.0: resolved "https://registry.yarnpkg.com/leaflet.markercluster/-/leaflet.markercluster-1.4.1.tgz#b53f2c4f2ca7306ddab1dbb6f1861d5e8aa6c5e5" integrity sha512-ZSEpE/EFApR0bJ1w/dUGwTSUvWlpalKqIzkaYdYB7jaftQA/Y2Jav+eT4CMtEYFj+ZK4mswP13Q2acnPBnhGOw== -leaflet@^1.2.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/leaflet/-/leaflet-1.6.0.tgz#aecbb044b949ec29469eeb31c77a88e2f448f308" - integrity sha512-CPkhyqWUKZKFJ6K8umN5/D2wrJ2+/8UIpXppY7QDnUZW5bZL5+SEI2J7GBpwh4LIupOKqbNSQXgqmrEJopHVNQ== +leaflet@~1.3.1: + version "1.3.4" + resolved "https://registry.yarnpkg.com/leaflet/-/leaflet-1.3.4.tgz#7f006ea5832603b53d7269ef5c595fd773060a40" + integrity sha512-FYL1LGFdj6v+2Ifpw+AcFIuIOqjNggfoLUwuwQv6+3sS21Za7Wvapq+LhbSE4NDXrEj6eYnW3y7LsaBICpyXtw== left-pad@^1.3.0: version "1.3.0" From 8f71e14887447aa91733d24b0121ec4b8d94f180 Mon Sep 17 00:00:00 2001 From: Bryan Yang Date: Sat, 29 Jul 2023 09:40:16 +0800 Subject: [PATCH 242/274] Fixed python query runner and add unittest for python query runner (#4731) * add test for python runner * fixed CustomPrint * remove print * Reformatted to pass our backend lint tests Reformatted using: $ make format --------- Co-authored-by: Justin Clift --- tests/query_runner/test_python.py | 69 +++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) diff --git a/tests/query_runner/test_python.py b/tests/query_runner/test_python.py index ae2e15071f..2839924513 100644 --- a/tests/query_runner/test_python.py +++ b/tests/query_runner/test_python.py @@ -1,8 +1,77 @@ +from datetime import datetime from unittest import TestCase +import mock + from redash.query_runner.python import Python +class TestPythonQueryRunner(TestCase): + def setUp(self): + self.python = Python({}) + + @mock.patch("datetime.datetime") + def test_print_in_query_string_success(self, mock_dt): + query_string = "print('test')" + mock_dt.utcnow = mock.Mock(return_value=datetime(1901, 12, 21)) + result = self.python.run_query(query_string, "user") + self.assertEqual(result[0], '{"rows": [], "columns": [], "log": ["[1901-12-21T00:00:00] test"]}') + + def test_empty_result(self): + query_string = "result={}" + result = self.python.run_query(query_string, "user") + self.assertEqual(result[0], '{"log": []}') + + def test_invalidate_result_type_string(self): + query_string = "result='string'" + result = self.python.run_query(query_string, "user") + self.assertEqual(result[0], None) + + def test_invalidate_result_type_int(self): + query_string = "result=100" + result = self.python.run_query(query_string, "user") + self.assertEqual(result[0], None) + + def test_validate_result_type(self): + query_string = ( + "result=" + '{"columns": [{"name": "col1", "type": TYPE_STRING},' + '{"name": "col2", "type": TYPE_INTEGER}],' + '"rows": [{"col1": "foo", "col2": 100},' + '{"col1": "bar", "col2": 200}]}' + ) + result = self.python.run_query(query_string, "user") + self.assertEqual( + result[0], + '{"columns": [{"name": "col1", "type": "string"},' + ' {"name": "col2", "type": "integer"}],' + ' "rows": [{"col1": "foo", "col2": 100},' + ' {"col1": "bar", "col2": 200}],' + ' "log": []}', + ) + + @mock.patch("datetime.datetime") + def test_validate_result_type_with_print(self, mock_dt): + mock_dt.utcnow = mock.Mock(return_value=datetime(1901, 12, 21)) + query_string = ( + 'print("test")\n' + "result=" + '{"columns": [{"name": "col1", "type": TYPE_STRING},' + '{"name": "col2", "type": TYPE_INTEGER}],' + '"rows": [{"col1": "foo", "col2": 100},' + '{"col1": "bar", "col2": 200}]}' + ) + result = self.python.run_query(query_string, "user") + self.assertEqual( + result[0], + '{"columns": [{"name": "col1", "type": "string"},' + ' {"name": "col2", "type": "integer"}],' + ' "rows": [{"col1": "foo", "col2": 100},' + ' {"col1": "bar", "col2": 200}],' + ' "log": ["[1901-12-21T00:00:00] test"]}', + ) + + class TestPython(TestCase): def test_sorted_safe_builtins(self): src = list(Python.safe_builtins) From 0d699328b8272e35d8113c2405d2666910433d32 Mon Sep 17 00:00:00 2001 From: Eric Radman Date: Sat, 29 Jul 2023 05:20:18 -0400 Subject: [PATCH 243/274] Allow RSA key used for JWT to be specified as a file path (#6271) - auth_jwt_auth_public_certs_url may file:// in addition to http/https - Log an error if payload does not contain an email address --- redash/authentication/__init__.py | 4 ++ redash/authentication/jwt_auth.py | 49 ++++++++++++++------ requirements_dev.txt | 1 + tests/test_authentication.py | 75 ++++++++++++++++++++++++++++++- 4 files changed, 114 insertions(+), 15 deletions(-) diff --git a/redash/authentication/__init__.py b/redash/authentication/__init__.py index 9c41b286ce..c7fa638085 100644 --- a/redash/authentication/__init__.py +++ b/redash/authentication/__init__.py @@ -187,6 +187,10 @@ def jwt_token_load_user_from_request(request): if not payload: return + if "email" not in payload: + logger.info("No email field in token, refusing to login") + return + try: user = models.User.get_by_email_and_org(payload["email"], org) except models.NoResultFound: diff --git a/redash/authentication/jwt_auth.py b/redash/authentication/jwt_auth.py index 9d4d80abe8..1713bf9e5b 100644 --- a/redash/authentication/jwt_auth.py +++ b/redash/authentication/jwt_auth.py @@ -6,6 +6,34 @@ logger = logging.getLogger("jwt_auth") +FILE_SCHEME_PREFIX = "file://" + + +def get_public_key_from_file(url): + file_path = url[len(FILE_SCHEME_PREFIX) :] + with open(file_path) as key_file: + key_str = key_file.read() + + get_public_keys.key_cache[url] = [key_str] + return key_str + + +def get_public_key_from_net(url): + r = requests.get(url) + r.raise_for_status() + data = r.json() + if "keys" in data: + public_keys = [] + for key_dict in data["keys"]: + public_key = jwt.algorithms.RSAAlgorithm.from_jwk(simplejson.dumps(key_dict)) + public_keys.append(public_key) + + get_public_keys.key_cache[url] = public_keys + return public_keys + else: + get_public_keys.key_cache[url] = data + return data + def get_public_keys(url): """ @@ -13,23 +41,15 @@ def get_public_keys(url): List of RSA public keys usable by PyJWT. """ key_cache = get_public_keys.key_cache + keys = {} if url in key_cache: - return key_cache[url] + keys = key_cache[url] else: - r = requests.get(url) - r.raise_for_status() - data = r.json() - if "keys" in data: - public_keys = [] - for key_dict in data["keys"]: - public_key = jwt.algorithms.RSAAlgorithm.from_jwk(simplejson.dumps(key_dict)) - public_keys.append(public_key) - - get_public_keys.key_cache[url] = public_keys - return public_keys + if url.startswith(FILE_SCHEME_PREFIX): + keys = [get_public_key_from_file(url)] else: - get_public_keys.key_cache[url] = data - return data + keys = get_public_key_from_net(url) + return keys get_public_keys.key_cache = {} @@ -58,4 +78,5 @@ def verify_jwt_token(jwt_token, expected_issuer, expected_audience, algorithms, break except Exception as e: logging.exception(e) + return payload, valid_token diff --git a/requirements_dev.txt b/requirements_dev.txt index 0c674efcae..3a78a85e19 100644 --- a/requirements_dev.txt +++ b/requirements_dev.txt @@ -1,3 +1,4 @@ +jwcrypto==1.5.0 pytest==7.4.0 pytest-cov==4.1.0 coverage==7.2.7 diff --git a/tests/test_authentication.py b/tests/test_authentication.py index 04275669f0..8cfbef69eb 100644 --- a/tests/test_authentication.py +++ b/tests/test_authentication.py @@ -1,9 +1,14 @@ import importlib +import json import os +import subprocess import time +import jwcrypto.jwk +import jwt +import requests from flask import request -from mock import patch +from mock import Mock, patch from sqlalchemy.orm.exc import NoResultFound from redash import models, settings @@ -11,6 +16,8 @@ api_key_load_user_from_request, get_login_url, hmac_load_user_from_request, + jwt_auth, + org_settings, sign, ) from redash.authentication.google_oauth import ( @@ -405,3 +412,69 @@ def test_disabled_user_should_not_receive_password_reset_link(self): self.assertEqual(response.status_code, 200) send_password_reset_email_mock.assert_not_called() send_user_disabled_email_mock.assert_called_with(user) + + +class TestJWTAuthentication(BaseTestCase): + def setUp(self): + super(TestJWTAuthentication, self).setUp() + self.auth_audience = "My Org" + self.auth_issuer = "Admin" + self.token_name = "jwt-token" + self.rsa_private_key = "/tmp/jwtRS256.key" + self.rsa_public_key = "/tmp/jwtRS256.pem" + + if not os.path.exists(self.rsa_public_key): + subprocess.check_output(["openssl", "genrsa", "-out", self.rsa_private_key, "4096"]) + subprocess.check_output( + ["openssl", "rsa", "-pubout", "-in", self.rsa_private_key, "-out", self.rsa_public_key] + ) + + org_settings["auth_jwt_login_enabled"] = True + org_settings["auth_jwt_auth_public_certs_url"] = "file://{}".format(self.rsa_public_key) + org_settings["auth_jwt_auth_issuer"] = self.auth_issuer + org_settings["auth_jwt_auth_audience"] = self.auth_audience + org_settings["auth_jwt_auth_header_name"] = self.token_name + + def tearDown(self): + org_settings["auth_jwt_login_enabled"] = False + org_settings["auth_jwt_auth_public_certs_url"] = "" + org_settings["auth_jwt_auth_issuer"] = "" + org_settings["auth_jwt_auth_audience"] = "" + org_settings["auth_jwt_auth_header_name"] = "" + + def test_jwt_no_token(self): + response = self.get_request("/data_sources", org=self.factory.org) + self.assertEqual(response.status_code, 302) + + def test_jwt_from_pem_file(self): + user = self.factory.create_user() + + issued_at_timestamp = time.time() + expiration_timestamp = issued_at_timestamp + 60 + + data = { + "aud": self.auth_audience, + "email": user.email, + "exp": expiration_timestamp, + "iat": issued_at_timestamp, + "iss": self.auth_issuer, + } + with open(self.rsa_private_key) as keyfile: + sign_key = keyfile.read().strip() + token_data = jwt.encode(data, sign_key, algorithm="RS256") + + response = self.get_request("/data_sources", org=self.factory.org, headers={self.token_name: token_data}) + self.assertEqual(response.status_code, 200) + + @patch.object(requests, "get") + def test_jwk_decode(self, mock_get): + with open(self.rsa_public_key, "rb") as keyfile: + public_key = jwcrypto.jwk.JWK.from_pem(keyfile.read()) + jwk_keys = {"keys": [json.loads(public_key.export())]} + + mockresponse = Mock() + mockresponse.json = lambda: jwk_keys + mock_get.return_value = mockresponse + + keys = jwt_auth.get_public_keys("http://localhost/key.jwt") + self.assertEqual(keys[0].key_size, 4096) From ea3d825a788a1d5faeae911b561169cac96675b3 Mon Sep 17 00:00:00 2001 From: mattdjones Date: Sat, 29 Jul 2023 21:33:09 +1200 Subject: [PATCH 244/274] Commit the transaction for MS SQL inserts & Updates (#2538) As discussed here https://discuss.redash.io/t/insert-or-update-query-does-not-apply-in-sql-server/1233 We have made the change to our local installation, it would be great if we can have this included. @arikfr --- redash/query_runner/mssql.py | 1 + 1 file changed, 1 insertion(+) diff --git a/redash/query_runner/mssql.py b/redash/query_runner/mssql.py index 09504fac25..3d17fee596 100644 --- a/redash/query_runner/mssql.py +++ b/redash/query_runner/mssql.py @@ -147,6 +147,7 @@ def run_query(self, query, user): json_data = None cursor.close() + connection.commit() except pymssql.Error as e: try: # Query errors are at `args[1]` From ae29eb3dfbb5278d88f05389e68ede7f8a9c360a Mon Sep 17 00:00:00 2001 From: Justin Clift Date: Sat, 29 Jul 2023 22:27:29 +1000 Subject: [PATCH 245/274] Bump react-test-renderer to 16.14.0 (#6316) --- package.json | 2 +- viz-lib/yarn.lock | 6 +++--- yarn.lock | 24 ++++++++---------------- 3 files changed, 12 insertions(+), 20 deletions(-) diff --git a/package.json b/package.json index 8774d9c2d2..24579bb4fe 100644 --- a/package.json +++ b/package.json @@ -140,7 +140,7 @@ "prettier": "^1.19.1", "raw-loader": "^0.5.1", "react-refresh": "^0.14.0", - "react-test-renderer": "^16.5.2", + "react-test-renderer": "^16.14.0", "request-cookies": "^1.1.0", "style-loader": "^2.0.0", "typescript": "^4.1.2", diff --git a/viz-lib/yarn.lock b/viz-lib/yarn.lock index 53de94b710..f93193f4d7 100644 --- a/viz-lib/yarn.lock +++ b/viz-lib/yarn.lock @@ -8446,9 +8446,9 @@ react-sortablejs@^1.3.4: prop-types ">=15.0.0" react-test-renderer@^16.0.0-0: - version "16.13.1" - resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-16.13.1.tgz#de25ea358d9012606de51e012d9742e7f0deabc1" - integrity sha512-Sn2VRyOK2YJJldOqoh8Tn/lWQ+ZiKhyZTPtaO0Q6yNj+QDbmRkVFap6pZPy3YQk8DScRDfyqm/KxKYP9gCMRiQ== + version "16.14.0" + resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-16.14.0.tgz#e98360087348e260c56d4fe2315e970480c228ae" + integrity sha512-L8yPjqPE5CZO6rKsKXRO/rVPiaCOy0tQQJbC+UjPNlobl5mad59lvPjwFsQHTvL03caVDIVr9x9/OSgDe6I5Eg== dependencies: object-assign "^4.1.1" prop-types "^15.6.2" diff --git a/yarn.lock b/yarn.lock index 93ce22651f..32ace0d1a9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12237,12 +12237,12 @@ react-grid-layout@^0.18.2: react-draggable "^4.0.0" react-resizable "^1.9.0" -react-is@^16.12.0, react-is@^16.8.4: +react-is@^16.12.0, react-is@^16.8.4, react-is@^16.8.6: version "16.13.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== -react-is@^16.7.0, react-is@^16.8.1, react-is@^16.8.3: +react-is@^16.7.0, react-is@^16.8.1: version "16.8.3" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.8.3.tgz#4ad8b029c2a718fc0cfc746c8d4e1b7221e5387d" integrity sha512-Y4rC1ZJmsxxkkPuMLwvKvlL1Zfpbcu+Bf4ZigkHup3v9EfdYhAlWAaVyA19olXq2o2mGn0w+dFKvk3pVVlYcIA== @@ -12297,15 +12297,15 @@ react-sortablejs@^1.3.4: dependencies: prop-types ">=15.0.0" -react-test-renderer@^16.0.0-0, react-test-renderer@^16.5.2: - version "16.8.3" - resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-16.8.3.tgz#230006af264cc46aeef94392e04747c21839e05e" - integrity sha512-rjJGYebduKNZH0k1bUivVrRLX04JfIQ0FKJLPK10TAb06XWhfi4gTobooF9K/DEFNW98iGac3OSxkfIJUN9Mdg== +react-test-renderer@^16.0.0-0, react-test-renderer@^16.14.0: + version "16.14.0" + resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-16.14.0.tgz#e98360087348e260c56d4fe2315e970480c228ae" + integrity sha512-L8yPjqPE5CZO6rKsKXRO/rVPiaCOy0tQQJbC+UjPNlobl5mad59lvPjwFsQHTvL03caVDIVr9x9/OSgDe6I5Eg== dependencies: object-assign "^4.1.1" prop-types "^15.6.2" - react-is "^16.8.3" - scheduler "^0.13.3" + react-is "^16.8.6" + scheduler "^0.19.1" react-virtualized@^9.21.2: version "9.21.2" @@ -13190,14 +13190,6 @@ sax@^1.2.4: resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== -scheduler@^0.13.3: - version "0.13.3" - resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.13.3.tgz#bed3c5850f62ea9c716a4d781f9daeb9b2a58896" - integrity sha512-UxN5QRYWtpR1egNWzJcVLk8jlegxAugswQc984lD3kU7NuobsO37/sRfbpTdBjtnD5TBNFA2Q2oLV5+UmPSmEQ== - dependencies: - loose-envify "^1.1.0" - object-assign "^4.1.1" - scheduler@^0.19.1: version "0.19.1" resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.19.1.tgz#4f3e2ed2c1a7d65681f4c854fa8c5a1ccb40f196" From f6ba9501da125b308f8e475b5bb303d709d228b8 Mon Sep 17 00:00:00 2001 From: Konstantin Smirnov <46676677+konnectr@users.noreply.github.com> Date: Sun, 30 Jul 2023 22:58:15 +0500 Subject: [PATCH 246/274] fix flake8 (#6321) --- .github/workflows/ci.yml | 2 +- .pre-commit-config.yaml | 5 +++++ redash/query_runner/__init__.py | 2 +- redash/query_runner/python.py | 4 ++-- 4 files changed, 9 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9c2886da5b..1987b50d11 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -16,7 +16,7 @@ jobs: - uses: actions/setup-python@v4 with: python-version: '3.8' - - run: sudo pip install flake8 black isort + - run: sudo pip install flake8==6.1.0 black==23.1.0 isort==5.12.0 - run: flake8 . - run: black --check . - run: isort --check-only --diff . diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 8fc1b0d323..020db4120e 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -8,3 +8,8 @@ repos: hooks: - id: black language_version: python3 + - repo: https://github.com/pycqa/flake8 + rev: 6.1.0 + hooks: + - id: flake8 + diff --git a/redash/query_runner/__init__.py b/redash/query_runner/__init__.py index a259247367..0e3b3ddfe5 100644 --- a/redash/query_runner/__init__.py +++ b/redash/query_runner/__init__.py @@ -278,7 +278,7 @@ def _get_tables(self, schema_dict): def _get_tables_stats(self, tables_dict): for t in tables_dict.keys(): - if type(tables_dict[t]) == dict: + if isinstance(tables_dict[t], dict): res = self._run_query_internal("select count(*) as cnt from %s" % t) tables_dict[t]["size"] = res[0]["cnt"] diff --git a/redash/query_runner/python.py b/redash/query_runner/python.py index 78af53140c..830d120c5f 100644 --- a/redash/query_runner/python.py +++ b/redash/query_runner/python.py @@ -213,7 +213,7 @@ def execute_query(data_source_name_or_id, query, result_type=None): :query string: Query to run """ try: - if type(data_source_name_or_id) == int: + if isinstance(data_source_name_or_id, int): data_source = models.DataSource.get_by_id(data_source_name_or_id) else: data_source = models.DataSource.get_by_name(data_source_name_or_id) @@ -241,7 +241,7 @@ def get_source_schema(data_source_name_or_id): :return: """ try: - if type(data_source_name_or_id) == int: + if isinstance(data_source_name_or_id, int): data_source = models.DataSource.get_by_id(data_source_name_or_id) else: data_source = models.DataSource.get_by_name(data_source_name_or_id) From 41555076952d6ec02af0aa48e9cfab8fed792377 Mon Sep 17 00:00:00 2001 From: Justin Clift Date: Mon, 31 Jul 2023 12:33:00 +1000 Subject: [PATCH 247/274] Use exclude list with flake8 pre-commit check (#6322) --- .pre-commit-config.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 020db4120e..cbc306ba51 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -12,4 +12,5 @@ repos: rev: 6.1.0 hooks: - id: flake8 + exclude: "migration/.*|.git|viz-lib|node_modules|migrations|bin/upgrade" From a9a348cd64481e009e2bee7eb82baec0b629ab66 Mon Sep 17 00:00:00 2001 From: Jay Chung Date: Mon, 31 Jul 2023 16:24:49 +0800 Subject: [PATCH 248/274] Use set in fetch_columns for efficient (#5336) Change list to set --- redash/query_runner/__init__.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/redash/query_runner/__init__.py b/redash/query_runner/__init__.py index 0e3b3ddfe5..3f7199a936 100644 --- a/redash/query_runner/__init__.py +++ b/redash/query_runner/__init__.py @@ -212,7 +212,7 @@ def run_query(self, query, user): raise NotImplementedError() def fetch_columns(self, columns): - column_names = [] + column_names = set() duplicates_counter = 1 new_columns = [] @@ -222,7 +222,7 @@ def fetch_columns(self, columns): column_name = "{}{}".format(column_name, duplicates_counter) duplicates_counter += 1 - column_names.append(column_name) + column_names.add(column_name) new_columns.append({"name": column_name, "friendly_name": column_name, "type": col[1]}) return new_columns From ad39059558ca390e414b317fc89e508370a5d296 Mon Sep 17 00:00:00 2001 From: Justin Clift Date: Mon, 31 Jul 2023 21:12:37 +1000 Subject: [PATCH 249/274] Fix webpack error in viz-lib (#6324) The config file format for webpack has changed slightly, so webpack was throwing this error: Invalid options object. Less Loader has been initialized using an options object that does not match the API schema. This commit updates the config file format so webpack works again. --- viz-lib/webpack.config.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/viz-lib/webpack.config.js b/viz-lib/webpack.config.js index 5b4096502e..d716ecd153 100644 --- a/viz-lib/webpack.config.js +++ b/viz-lib/webpack.config.js @@ -39,8 +39,10 @@ module.exports = { { loader: "less-loader", options: { - plugins: [new LessPluginAutoPrefix({ browsers: ["last 3 versions"] })], - javascriptEnabled: true, + lessOptions: { + plugins: [new LessPluginAutoPrefix({ browsers: ["last 3 versions"] })], + javascriptEnabled: true, + }, }, }, ], From 7dfacfc531cdb2e12272df6a61312ddbbc4d9a61 Mon Sep 17 00:00:00 2001 From: Justin Clift Date: Mon, 31 Jul 2023 23:47:05 +1000 Subject: [PATCH 250/274] Update package.json so `yarn watch` works again (#6328) For some unknown reason the `--colors` and `-d` options are no longer recognised by webpack (v4) in our configuration. This is likely due to some other non-obvious problem in our configuration, as those options should exist (they're documented). For now though, this gets things working again. --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 24579bb4fe..07bd1245f0 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "build:viz": "(cd viz-lib && yarn build:babel)", "build": "yarn clean && yarn build:viz && NODE_ENV=production webpack", "build:old-node-version": "yarn clean && NODE_ENV=production node --max-old-space-size=4096 node_modules/.bin/webpack", - "watch:app": "webpack --watch --progress --colors -d", + "watch:app": "webpack watch --progress", "watch:viz": "(cd viz-lib && yarn watch:babel)", "watch": "npm-run-all --parallel watch:*", "webpack-dev-server": "webpack-dev-server", From 353ea868ffb28b42ff7fdf17ffda684e8640abff Mon Sep 17 00:00:00 2001 From: Jay Chung Date: Mon, 31 Jul 2023 23:16:34 +0800 Subject: [PATCH 251/274] Unused qr should respect env setting (#5337) * Monitor unused qr respect env setting * style --- redash/monitor.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/redash/monitor.py b/redash/monitor.py index 7a98072ffb..77521975c5 100644 --- a/redash/monitor.py +++ b/redash/monitor.py @@ -20,7 +20,7 @@ def get_object_counts(): status["queries_count"] = Query.query.count() if settings.FEATURE_SHOW_QUERY_RESULTS_COUNT: status["query_results_count"] = QueryResult.query.count() - status["unused_query_results_count"] = QueryResult.unused().count() + status["unused_query_results_count"] = QueryResult.unused(settings.QUERY_RESULTS_CLEANUP_MAX_AGE).count() status["dashboards_count"] = Dashboard.query.count() status["widgets_count"] = Widget.query.count() return status From 39477c73ad3a7d5494dd9ce939451db3f22d5e0f Mon Sep 17 00:00:00 2001 From: Justin Clift Date: Tue, 1 Aug 2023 07:12:33 +1000 Subject: [PATCH 252/274] Webpack-dev-server seems to require the dev-middleware config (#6329) --- webpack.config.js | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/webpack.config.js b/webpack.config.js index efc5d8dd0f..7498014cd3 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -240,14 +240,18 @@ const config = { ignored: /\.sw.$/ }, devServer: { - inline: true, - index: "/static/index.html", + devMiddleware: { + index: "/static/index.html", + publicPath: staticPath, + stats: { + modules: false, + chunkModules: false + }, + }, historyApiFallback: { index: "/static/index.html", rewrites: [{ from: /./, to: "/static/index.html" }] }, - contentBase: false, - publicPath: staticPath, proxy: [ { context: [ @@ -273,10 +277,6 @@ const config = { secure: false } ], - stats: { - modules: false, - chunkModules: false - }, hot: isHotReloadingEnabled }, performance: { From 2b8aa5cb32ca41052c26c3a4b08acecbebab901b Mon Sep 17 00:00:00 2001 From: Justin Clift Date: Tue, 1 Aug 2023 10:47:58 +1000 Subject: [PATCH 253/274] Bump snowflake-connector-python to 3.1.0 (#6330) --- requirements_all_ds.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements_all_ds.txt b/requirements_all_ds.txt index d937abea19..eced339810 100644 --- a/requirements_all_ds.txt +++ b/requirements_all_ds.txt @@ -24,7 +24,7 @@ qds-sdk>=1.9.6 # ibm-db>=2.0.9 pydruid==0.5.7 requests_aws_sign==0.1.5 -snowflake-connector-python==3.0.4 +snowflake-connector-python==3.1.0 phoenixdb==0.7 # certifi is needed to support MongoDB and SSL: certifi>=2019.9.11 From 9a7d2cdc02106c27cd0662ec39a534efc306ee02 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 1 Aug 2023 01:37:26 +0000 Subject: [PATCH 254/274] Bump cryptography from 40.0.2 to 41.0.2 (#6188) Bumps [cryptography](https://github.com/pyca/cryptography) from 40.0.2 to 41.0.2. - [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst) - [Commits](https://github.com/pyca/cryptography/compare/40.0.2...41.0.2) --- updated-dependencies: - dependency-name: cryptography dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Justin Clift --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 992552361a..8f42f2e2fb 100644 --- a/requirements.txt +++ b/requirements.txt @@ -43,7 +43,7 @@ xlsxwriter==1.2.2 pystache==0.6.0 parsedatetime==2.4 PyJWT==2.4.0 -cryptography==40.0.2 +cryptography==41.0.2 simplejson==3.16.0 ua-parser==0.18.0 user-agents==2.0 From afc6d878c20c2987f860d35ebc44652d3379c5f7 Mon Sep 17 00:00:00 2001 From: Konstantin Smirnov <46676677+konnectr@users.noreply.github.com> Date: Tue, 1 Aug 2023 13:57:09 +0500 Subject: [PATCH 255/274] replace hmset -> hset (#6331) --- redash/models/__init__.py | 2 +- redash/tasks/queries/maintenance.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/redash/models/__init__.py b/redash/models/__init__.py index f8859f9f3d..49821662ae 100644 --- a/redash/models/__init__.py +++ b/redash/models/__init__.py @@ -90,7 +90,7 @@ def refresh(self): self.executions = redis_connection.hgetall(self.KEY_NAME) def update(self, query_id): - redis_connection.hmset(self.KEY_NAME, {query_id: time.time()}) + redis_connection.hset(self.KEY_NAME, mapping={query_id: time.time()}) def get(self, query_id): timestamp = self.executions.get(str(query_id)) diff --git a/redash/tasks/queries/maintenance.py b/redash/tasks/queries/maintenance.py index 9c8dcd6985..d92ec184ae 100644 --- a/redash/tasks/queries/maintenance.py +++ b/redash/tasks/queries/maintenance.py @@ -112,7 +112,7 @@ def refresh_queries(): "query_ids": json_dumps([q.id for q in enqueued]), } - redis_connection.hmset("redash:status", status) + redis_connection.hset("redash:status", mapping=status) logger.info("Done refreshing queries: %s" % status) From 1726aef0fc46431dbd52d5f631a1b92a91b80a31 Mon Sep 17 00:00:00 2001 From: Peter Lee Date: Tue, 1 Aug 2023 18:49:34 +0800 Subject: [PATCH 256/274] add pg types map (#6333) * add pg types map * Update pg.py --- redash/query_runner/pg.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/redash/query_runner/pg.py b/redash/query_runner/pg.py index 82f6a8bef3..e6e5d0ece8 100644 --- a/redash/query_runner/pg.py +++ b/redash/query_runner/pg.py @@ -40,13 +40,19 @@ 701: TYPE_FLOAT, 16: TYPE_BOOLEAN, 1082: TYPE_DATE, + 1182: TYPE_DATE, 1114: TYPE_DATETIME, 1184: TYPE_DATETIME, + 1115: TYPE_DATETIME, + 1185: TYPE_DATETIME, 1014: TYPE_STRING, 1015: TYPE_STRING, 1008: TYPE_STRING, 1009: TYPE_STRING, 2951: TYPE_STRING, + 1043: TYPE_STRING, + 1002: TYPE_STRING, + 1003: TYPE_STRING, } From 196bfece300cf2afdae650cbb248abd9be19524b Mon Sep 17 00:00:00 2001 From: Konstantin Smirnov <46676677+konnectr@users.noreply.github.com> Date: Tue, 1 Aug 2023 15:57:22 +0500 Subject: [PATCH 257/274] Fix warning test query (#6335) * replace assertDictContainsSubset -> asserLessEqual * refactor definition set --- tests/handlers/test_queries.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/tests/handlers/test_queries.py b/tests/handlers/test_queries.py index 691858b9a0..7fbf51128c 100644 --- a/tests/handlers/test_queries.py +++ b/tests/handlers/test_queries.py @@ -231,7 +231,7 @@ def test_returns_queries(self): rv = self.make_request("get", "/api/queries") assert len(rv.json["results"]) == 3 - assert set([result["id"] for result in rv.json["results"]]) == set([q1.id, q2.id, q3.id]) + assert set([result["id"] for result in rv.json["results"]]) == {q1.id, q2.id, q3.id} def test_filters_with_tags(self): q1 = self.factory.create_query(tags=["test"]) @@ -240,7 +240,7 @@ def test_filters_with_tags(self): rv = self.make_request("get", "/api/queries?tags=test") assert len(rv.json["results"]) == 1 - assert set([result["id"] for result in rv.json["results"]]) == set([q1.id]) + assert set([result["id"] for result in rv.json["results"]]) == {q1.id} def test_search_term(self): q1 = self.factory.create_query(name="Sales") @@ -249,7 +249,7 @@ def test_search_term(self): rv = self.make_request("get", "/api/queries?q=sales") assert len(rv.json["results"]) == 2 - assert set([result["id"] for result in rv.json["results"]]) == set([q1.id, q2.id]) + assert set([result["id"] for result in rv.json["results"]]) == {q1.id, q2.id} class TestQueryListResourcePost(BaseTestCase): @@ -264,7 +264,7 @@ def test_create_query(self): rv = self.make_request("post", "/api/queries", data=query_data) self.assertEqual(rv.status_code, 200) - self.assertDictContainsSubset(query_data, rv.json) + self.assertLessEqual(query_data.items(), rv.json.items()) self.assertEqual(rv.json["user"]["id"], self.factory.user.id) self.assertIsNotNone(rv.json["api_key"]) self.assertIsNotNone(rv.json["query_hash"]) @@ -335,7 +335,7 @@ def test_returns_queries(self): rv = self.make_request("get", "/api/queries/archive") assert len(rv.json["results"]) == 2 - assert set([result["id"] for result in rv.json["results"]]) == set([q1.id, q2.id]) + assert set([result["id"] for result in rv.json["results"]]) == {q1.id, q2.id} def test_search_term(self): q1 = self.factory.create_query(name="Sales", is_archived=True) @@ -344,7 +344,7 @@ def test_search_term(self): rv = self.make_request("get", "/api/queries/archive?q=sales") assert len(rv.json["results"]) == 2 - assert set([result["id"] for result in rv.json["results"]]) == set([q1.id, q2.id]) + assert set([result["id"] for result in rv.json["results"]]) == {q1.id, q2.id} class QueryRefreshTest(BaseTestCase): From f4ee891d689cb475eb2423030b6a15ff8d70ba33 Mon Sep 17 00:00:00 2001 From: snickerjp Date: Tue, 1 Aug 2023 21:04:45 +0900 Subject: [PATCH 258/274] Do not makedsn for query_runner/oracle.py (#6332) * Do not makedsn. instead self.configuration["servicename"] in host == "_donotmakedsn" * add comment * mod properties in `host` * mod properties in `host` * mod word. in host == "_donotmakedsn" to "_useservicename" * mod properties in `host` * fix format --- redash/query_runner/oracle.py | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/redash/query_runner/oracle.py b/redash/query_runner/oracle.py index 4e1e7ae887..fbc1b0f2c2 100644 --- a/redash/query_runner/oracle.py +++ b/redash/query_runner/oracle.py @@ -66,7 +66,10 @@ def configuration_schema(cls): "properties": { "user": {"type": "string"}, "password": {"type": "string"}, - "host": {"type": "string"}, + "host": { + "type": "string", + "title": "Host: To use a DSN Service Name instead, use the text string `_useservicename` in the host name field.", + }, "port": {"type": "number"}, "servicename": {"type": "string", "title": "DSN Service Name"}, "encoding": {"type": "string"}, @@ -138,11 +141,15 @@ def run_query(self, query, user): if self.configuration.get("encoding"): os.environ["NLS_LANG"] = self.configuration["encoding"] - dsn = cx_Oracle.makedsn( - self.configuration["host"], - self.configuration["port"], - service_name=self.configuration["servicename"], - ) + # To use a DSN Service Name instead, use the text string `_useservicename` in the host name field. + if self.configuration["host"].lower() == "_useservicename": + dsn = self.configuration["servicename"] + else: + dsn = cx_Oracle.makedsn( + self.configuration["host"], + self.configuration["port"], + service_name=self.configuration["servicename"], + ) connection = cx_Oracle.connect( user=self.configuration["user"], From 37fa1ec057df448f2a99c704ff24ea8e176b31ef Mon Sep 17 00:00:00 2001 From: Justin Clift Date: Tue, 1 Aug 2023 22:05:43 +1000 Subject: [PATCH 259/274] Update `make env` to not run multiple times (#6336) --- Makefile | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 00e9232f2f..c15b9f60e7 100644 --- a/Makefile +++ b/Makefile @@ -22,9 +22,11 @@ clean: down: docker-compose down -env: +.env: printf "REDASH_COOKIE_SECRET=`pwgen -1s 32`\nREDASH_SECRET_KEY=`pwgen -1s 32`\n" >> .env +env: .env + format: pre-commit run --all-files From 204e5c1fb9db805e7f4b833296285d0889992572 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 2 Aug 2023 14:19:27 +1000 Subject: [PATCH 260/274] Bump cryptography from 41.0.2 to 41.0.3 (#6338) Bumps [cryptography](https://github.com/pyca/cryptography) from 41.0.2 to 41.0.3. - [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst) - [Commits](https://github.com/pyca/cryptography/compare/41.0.2...41.0.3) --- updated-dependencies: - dependency-name: cryptography dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 8f42f2e2fb..d58dfb6fa7 100644 --- a/requirements.txt +++ b/requirements.txt @@ -43,7 +43,7 @@ xlsxwriter==1.2.2 pystache==0.6.0 parsedatetime==2.4 PyJWT==2.4.0 -cryptography==41.0.2 +cryptography==41.0.3 simplejson==3.16.0 ua-parser==0.18.0 user-agents==2.0 From 71bf65b49602e4486868fddd8d6b5e5ed8a4362d Mon Sep 17 00:00:00 2001 From: Justin Clift Date: Wed, 2 Aug 2023 20:42:58 +1000 Subject: [PATCH 261/274] Have `make compose_build` create .env if its missing (#6339) --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index c15b9f60e7..1288a8ed11 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ .PHONY: compose_build up test_db create_database clean down tests lint backend-unit-tests frontend-unit-tests test build watch start redis-cli bash -compose_build: +compose_build: .env COMPOSE_DOCKER_CLI_BUILD=1 DOCKER_BUILDKIT=1 docker-compose build up: From acf77f85ffd75317ca6528bfe68b411755543cdf Mon Sep 17 00:00:00 2001 From: Justin Clift Date: Thu, 3 Aug 2023 01:56:51 +1000 Subject: [PATCH 262/274] Fix the broken icon loading (#6340) --- package.json | 4 +- webpack.config.js | 10 +-- yarn.lock | 194 +++++++++++++++++++++------------------------- 3 files changed, 91 insertions(+), 117 deletions(-) diff --git a/package.json b/package.json index 07bd1245f0..07fc0bb09d 100644 --- a/package.json +++ b/package.json @@ -106,7 +106,7 @@ "babel-plugin-istanbul": "^6.1.1", "babel-plugin-transform-builtin-extend": "^1.1.2", "copy-webpack-plugin": "^6.4.1", - "css-loader": "^1.0.1", + "css-loader": "^5.2.7", "cypress": "^11.2.0", "dayjs": "^1.11.9", "enzyme": "^3.8.0", @@ -144,7 +144,7 @@ "request-cookies": "^1.1.0", "style-loader": "^2.0.0", "typescript": "^4.1.2", - "url-loader": "^1.1.2", + "url-loader": "^4.1.1", "webpack": "^4.46.0", "webpack-build-notifier": "^2.3.0", "webpack-bundle-analyzer": "^4.9.0", diff --git a/webpack.config.js b/webpack.config.js index 7498014cd3..e256019fb6 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -160,10 +160,7 @@ const config = { loader: isProduction ? MiniCssExtractPlugin.loader : "style-loader" }, { - loader: "css-loader", - options: { - minimize: process.env.NODE_ENV === "production" - } + loader: "css-loader" } ] }, @@ -174,10 +171,7 @@ const config = { loader: isProduction ? MiniCssExtractPlugin.loader : "style-loader" }, { - loader: "css-loader", - options: { - minimize: isProduction - } + loader: "css-loader" }, { loader: "less-loader", diff --git a/yarn.lock b/yarn.lock index 32ace0d1a9..a659fb4613 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4668,23 +4668,21 @@ css-global-keywords@^1.0.1: resolved "https://registry.yarnpkg.com/css-global-keywords/-/css-global-keywords-1.0.1.tgz#72a9aea72796d019b1d2a3252de4e5aaa37e4a69" integrity sha1-cqmupyeW0Bmx0qMlLeTlqqN+Smk= -css-loader@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-1.0.1.tgz#6885bb5233b35ec47b006057da01cc640b6b79fe" - integrity sha512-+ZHAZm/yqvJ2kDtPne3uX0C+Vr3Zn5jFn2N4HywtS5ujwvsVkyg0VArEXpl3BgczDA8anieki1FIzhchX4yrDw== +css-loader@^5.2.7: + version "5.2.7" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-5.2.7.tgz#9b9f111edf6fb2be5dc62525644cbc9c232064ae" + integrity sha512-Q7mOvpBNBG7YrVGMxRxcBJZFL75o+cH2abNASdibkj/fffYD8qWbInZrD0S9ccI6vZclF3DsHE7njGlLtaHbhg== dependencies: - babel-code-frame "^6.26.0" - css-selector-tokenizer "^0.7.0" - icss-utils "^2.1.0" - loader-utils "^1.0.2" - lodash "^4.17.11" - postcss "^6.0.23" - postcss-modules-extract-imports "^1.2.0" - postcss-modules-local-by-default "^1.2.0" - postcss-modules-scope "^1.1.0" - postcss-modules-values "^1.3.0" - postcss-value-parser "^3.3.0" - source-list-map "^2.0.0" + icss-utils "^5.1.0" + loader-utils "^2.0.0" + postcss "^8.2.15" + 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.1.0" + schema-utils "^3.0.0" + semver "^7.3.5" css-select@^4.1.3: version "4.3.0" @@ -4707,15 +4705,6 @@ css-select@~1.2.0: domutils "1.5.1" nth-check "~1.0.1" -css-selector-tokenizer@^0.7.0: - version "0.7.1" - resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.7.1.tgz#a177271a8bca5019172f4f891fc6eed9cbf68d5d" - integrity sha512-xYL0AMZJ4gFzJQsHUKa5jiWWi2vH77WVNg7JYRyewwj6oPh4yb/y6Y9ZCw9dsj/9UauMhtuxR+ogQd//EdEVNA== - dependencies: - cssesc "^0.1.0" - fastparse "^1.1.1" - regexpu-core "^1.0.0" - css-system-font-keywords@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/css-system-font-keywords/-/css-system-font-keywords-1.0.0.tgz#85c6f086aba4eb32c571a3086affc434b84823ed" @@ -4736,10 +4725,10 @@ csscolorparser@~1.0.3: resolved "https://registry.yarnpkg.com/csscolorparser/-/csscolorparser-1.0.3.tgz#b34f391eea4da8f3e98231e2ccd8df9c041f171b" integrity sha512-umPSgYwZkdFoUrH5hIq5kf0wPSXiro51nPw0j2K/c83KflkPSTBGMz6NJvMB+07VlL0y7VPo6QJcDjcgKTTm3w== -cssesc@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4" - integrity sha1-yBSQPkViM3GgR3tAEJqq++6t27Q= +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0": version "0.3.8" @@ -6406,11 +6395,6 @@ fastest-levenshtein@^1.0.12: resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz#210e61b6ff181de91ea9b3d1b84fdedd47e034e5" integrity sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg== -fastparse@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.2.tgz#91728c5a5942eced8531283c79441ee4122c35a9" - integrity sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ== - fastq@^1.6.0: version "1.8.0" resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.8.0.tgz#550e1f9f59bbc65fe185cb6a9b4d95357107f481" @@ -8041,17 +8025,10 @@ iconv-lite@0.4.24, iconv-lite@^0.4.24: dependencies: safer-buffer ">= 2.1.2 < 3" -icss-replace-symbols@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded" - integrity sha1-Bupvg2ead0njhs/h/oEq5dsiPe0= - -icss-utils@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-2.1.0.tgz#83f0a0ec378bf3246178b6c2ad9136f135b1c962" - integrity sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI= - dependencies: - postcss "^6.0.1" +icss-utils@^5.0.0, icss-utils@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" + integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== identity-obj-proxy@^3.0.0: version "3.0.0" @@ -9604,7 +9581,7 @@ loader-runner@^2.4.0: resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== -loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3: +loader-utils@^1.1.0, loader-utils@^1.2.3: version "1.4.2" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.2.tgz#29a957f3a63973883eb684f10ffd3d151fec01a3" integrity sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg== @@ -10045,7 +10022,7 @@ mime-db@~1.38.0: resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.38.0.tgz#1a2aab16da9eb167b49c6e4df2d9c68d63d8e2ad" integrity sha512-bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg== -mime-types@^2.1.12, mime-types@^2.1.31, mime-types@~2.1.19, mime-types@~2.1.34: +mime-types@^2.1.12, mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.19, mime-types@~2.1.34: version "2.1.35" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== @@ -10071,11 +10048,6 @@ mime@1.6.0, mime@^1.4.1: resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== -mime@^2.0.3: - version "2.4.6" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.6.tgz#e5b407c90db442f2beb5b162373d07b69affa4d1" - integrity sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA== - mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" @@ -10322,6 +10294,11 @@ nan@^2.12.1: resolved "https://registry.yarnpkg.com/nan/-/nan-2.17.0.tgz#c0150a2368a182f033e9aa5195ec76ea41a199cb" integrity sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ== +nanoid@^3.3.6: + version "3.3.6" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" + integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== + nanomatch@^1.2.9: version "1.2.13" resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" @@ -11507,43 +11484,53 @@ posix-character-classes@^0.1.0: resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" integrity sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg== -postcss-modules-extract-imports@^1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.1.tgz#dc87e34148ec7eab5f791f7cd5849833375b741a" - integrity sha512-6jt9XZwUhwmRUhb/CkyJY020PYaPJsCyt3UjbaWo6XEbH/94Hmv6MP7fG2C5NDU/BcHzyGYxNtHvM+LTf9HrYw== +postcss-modules-extract-imports@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz#cda1f047c0ae80c97dbe28c3e76a43b88025741d" + integrity sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw== + +postcss-modules-local-by-default@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.3.tgz#b08eb4f083050708998ba2c6061b50c2870ca524" + integrity sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA== dependencies: - postcss "^6.0.1" + icss-utils "^5.0.0" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.1.0" -postcss-modules-local-by-default@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz#f7d80c398c5a393fa7964466bd19500a7d61c069" - integrity sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk= +postcss-modules-scope@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz#9ef3151456d3bbfa120ca44898dfca6f2fa01f06" + integrity sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg== dependencies: - css-selector-tokenizer "^0.7.0" - postcss "^6.0.1" + postcss-selector-parser "^6.0.4" -postcss-modules-scope@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz#d6ea64994c79f97b62a72b426fbe6056a194bb90" - integrity sha1-1upkmUx5+XtipytCb75gVqGUu5A= +postcss-modules-values@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz#d7c5e7e68c3bb3c9b27cbf48ca0bb3ffb4602c9c" + integrity sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ== dependencies: - css-selector-tokenizer "^0.7.0" - postcss "^6.0.1" + icss-utils "^5.0.0" -postcss-modules-values@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz#ecffa9d7e192518389f42ad0e83f72aec456ea20" - integrity sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA= +postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4: + version "6.0.13" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz#d05d8d76b1e8e173257ef9d60b706a8e5e99bf1b" + integrity sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ== dependencies: - icss-replace-symbols "^1.1.0" - postcss "^6.0.1" + cssesc "^3.0.0" + util-deprecate "^1.0.2" -postcss-value-parser@^3.2.3, postcss-value-parser@^3.3.0: +postcss-value-parser@^3.2.3: version "3.3.1" resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== -postcss@^6.0.1, postcss@^6.0.22, postcss@^6.0.23: +postcss-value-parser@^4.1.0: + version "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@^6.0.22, postcss@^6.0.23: version "6.0.23" resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.23.tgz#61c82cc328ac60e677645f979054eb98bc0e3324" integrity sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag== @@ -11552,6 +11539,15 @@ postcss@^6.0.1, postcss@^6.0.22, postcss@^6.0.23: source-map "^0.6.1" supports-color "^5.4.0" +postcss@^8.2.15: + version "8.4.27" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.27.tgz#234d7e4b72e34ba5a92c29636734349e0d9c3057" + integrity sha512-gY/ACJtJPSmUFPDCHtX78+01fHa64FaU4zaaWfuh1MhGJISufJAH4cun6k/8fwsHYeK4UQmENQK+tRLCFJE8JQ== + dependencies: + nanoid "^3.3.6" + picocolors "^1.0.0" + source-map-js "^1.0.2" + potpack@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/potpack/-/potpack-1.0.1.tgz#d1b1afd89e4c8f7762865ec30bd112ab767e2ebf" @@ -12489,7 +12485,7 @@ regenerate-unicode-properties@^8.2.0: dependencies: regenerate "^1.4.0" -regenerate@^1.2.1, regenerate@^1.4.0: +regenerate@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== @@ -12561,15 +12557,6 @@ regexpp@^3.0.0: resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.0.0.tgz#dd63982ee3300e67b41c1956f850aa680d9d330e" integrity sha512-Z+hNr7RAVWxznLPuA7DIh8UNX1j9CDrUQxskw9IrBE1Dxue2lyXT+shqEIeLUjrokxIP8CMy1WkjgG3rTsd5/g== -regexpu-core@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-1.0.0.tgz#86a763f58ee4d7c2f6b102e4764050de7ed90c6b" - integrity sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs= - dependencies: - regenerate "^1.2.1" - regjsgen "^0.2.0" - regjsparser "^0.1.4" - regexpu-core@^4.7.0: version "4.7.0" resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.0.tgz#fcbf458c50431b0bb7b45d6967b8192d91f3d938" @@ -12594,23 +12581,11 @@ regexpu-core@^5.3.1: unicode-match-property-ecmascript "^2.0.0" unicode-match-property-value-ecmascript "^2.1.0" -regjsgen@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" - integrity sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc= - regjsgen@^0.5.1: version "0.5.2" resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733" integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A== -regjsparser@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" - integrity sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw= - dependencies: - jsesc "~0.5.0" - regjsparser@^0.6.4: version "0.6.4" resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.4.tgz#a769f8684308401a66e9b529d2436ff4d0666272" @@ -13603,6 +13578,11 @@ source-list-map@^2.0.0: resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== +source-map-js@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" + integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== + source-map-resolve@^0.5.0: version "0.5.3" resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" @@ -14924,14 +14904,14 @@ urix@^0.1.0: resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" integrity sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg== -url-loader@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-1.1.2.tgz#b971d191b83af693c5e3fea4064be9e1f2d7f8d8" - integrity sha512-dXHkKmw8FhPqu8asTc1puBfe3TehOCo2+RmOOev5suNCIYBcT626kxiWg1NBVkwc4rO8BGa7gP70W7VXuqHrjg== +url-loader@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-4.1.1.tgz#28505e905cae158cf07c92ca622d7f237e70a4e2" + integrity sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA== dependencies: - loader-utils "^1.1.0" - mime "^2.0.3" - schema-utils "^1.0.0" + loader-utils "^2.0.0" + mime-types "^2.1.27" + schema-utils "^3.0.0" url@^0.11.0: version "0.11.0" @@ -14961,7 +14941,7 @@ use@^3.1.0: resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== -util-deprecate@^1.0.1, util-deprecate@~1.0.1: +util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== From 0d1ce4d98c67d3a3318cb47f3c31d65e3ed4295f Mon Sep 17 00:00:00 2001 From: Konstantin Smirnov <46676677+konnectr@users.noreply.github.com> Date: Thu, 3 Aug 2023 02:31:18 +0500 Subject: [PATCH 263/274] Incomplete URL substring sanitization (#6342) * Incomplete URL substring sanitization * fix hostname * Only match on the exact host name --------- Co-authored-by: Justin Clift --- bin/release_manager.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/bin/release_manager.py b/bin/release_manager.py index a3f38e5f8a..bd2200d523 100644 --- a/bin/release_manager.py +++ b/bin/release_manager.py @@ -3,6 +3,7 @@ import re import subprocess import sys +from urllib.parse import urlparse import requests import simplejson @@ -13,7 +14,7 @@ def _github_request(method, path, params=None, headers={}): - if not path.startswith("https://api.github.com"): + if urlparse(path).hostname != "api.github.com": url = "https://api.github.com/{}".format(path) else: url = path From 126fe9310f97bcc27e25967928ca3553f1afd2b7 Mon Sep 17 00:00:00 2001 From: Justin Clift Date: Fri, 4 Aug 2023 02:35:03 +1000 Subject: [PATCH 264/274] Have `make create_database` create .env if its missing (#6345) --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 1288a8ed11..ec864cb049 100644 --- a/Makefile +++ b/Makefile @@ -13,7 +13,7 @@ test_db: done docker-compose exec postgres sh -c 'psql -U postgres -c "drop database if exists tests;" && psql -U postgres -c "create database tests;"' -create_database: +create_database: .env docker-compose run server create_db clean: From 113146e4b8b12813d181bca5fe9267afebf47dde Mon Sep 17 00:00:00 2001 From: Konstantin Smirnov <46676677+konnectr@users.noreply.github.com> Date: Sat, 5 Aug 2023 16:07:43 +0500 Subject: [PATCH 265/274] Add data type info into schemas of Trino tables (#6348) The current get_schema method of Trino query runner is missing table columns' data types information, so these data types won't be seen in Queries editing GUI. After the modification, these info are back. Co-authored-by: V <4979571+vnnw@users.noreply.github.com> --- redash/query_runner/trino.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/redash/query_runner/trino.py b/redash/query_runner/trino.py index fc7c43d2d2..aba1a7a01d 100644 --- a/redash/query_runner/trino.py +++ b/redash/query_runner/trino.py @@ -84,7 +84,7 @@ def type(cls): def get_schema(self, get_stats=False): query = """ - SELECT table_schema, table_name, column_name + SELECT table_schema, table_name, column_name, data_type FROM information_schema.columns WHERE table_schema NOT IN ('pg_catalog', 'information_schema') """ @@ -101,7 +101,8 @@ def get_schema(self, get_stats=False): if table_name not in schema: schema[table_name] = {"name": table_name, "columns": []} - schema[table_name]["columns"].append(row["column_name"]) + column = {"name": row["column_name"], "type": row["data_type"]} + schema[table_name]["columns"].append(column) return list(schema.values()) From f4a930ddeba756fc67dc237fb7523e4d8889b9b5 Mon Sep 17 00:00:00 2001 From: Manik Somayaji <32429285+manikBS@users.noreply.github.com> Date: Mon, 7 Aug 2023 00:15:21 +0530 Subject: [PATCH 266/274] Fix: Query results in public dashboard not loading when query ends with semicolon (#6351) * Fix: Query results in public dashboard not loading when query ends with semicolon * fix flake8 error for commit 7a50b18d3 --------- Co-authored-by: Alexander Strickner --- redash/query_runner/__init__.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/redash/query_runner/__init__.py b/redash/query_runner/__init__.py index 3f7199a936..361b7863df 100644 --- a/redash/query_runner/__init__.py +++ b/redash/query_runner/__init__.py @@ -308,15 +308,13 @@ def add_limit_to_query(self, query): return str(parsed_query) def apply_auto_limit(self, query_text, should_apply_auto_limit): + queries = split_sql_statements(query_text) if should_apply_auto_limit: - queries = split_sql_statements(query_text) # we only check for last one in the list because it is the one that we show result last_query = queries[-1] if self.query_is_select_no_limit(last_query): queries[-1] = self.add_limit_to_query(last_query) - return combine_sql_statements(queries) - else: - return query_text + return combine_sql_statements(queries) class BaseHTTPQueryRunner(BaseQueryRunner): From d33366047304b498609e6221fb783a911147cf82 Mon Sep 17 00:00:00 2001 From: Harry C Date: Tue, 8 Aug 2023 00:03:12 +0800 Subject: [PATCH 267/274] =?UTF-8?q?Fix=20python=20query=20runner=20crashin?= =?UTF-8?q?g=20the=20GUI=20due=20to=20missing=20'rows'=20and/or=E2=80=A6?= =?UTF-8?q?=20(#5749)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Fix python query runner crashing the GUI due to missing 'rows' and/or 'columns' in the JSON returned data. * Fix typo of previous commit. * Throw exception when python query runner has invalid result. * Update test_python.py --------- Co-authored-by: YuhengChen --- redash/query_runner/python.py | 20 ++++++++++++++++++ tests/query_runner/test_python.py | 35 ++++++++++++++++++++++++++----- 2 files changed, 50 insertions(+), 5 deletions(-) diff --git a/redash/query_runner/python.py b/redash/query_runner/python.py index 830d120c5f..400d0f18d3 100644 --- a/redash/query_runner/python.py +++ b/redash/query_runner/python.py @@ -298,6 +298,25 @@ def get_current_user(self): def test_connection(self): pass + def validate_result(self, result): + """Validate the result after executing the query. + + Parameters: + :result dict: The result dict. + """ + if not result: + raise Exception("local variable `result` should not be empty.") + if not isinstance(result, dict): + raise Exception("local variable `result` should be of type `dict`.") + if "rows" not in result: + raise Exception("Missing `rows` field in `result` dict.") + if "columns" not in result: + raise Exception("Missing `columns` field in `result` dict.") + if not isinstance(result["rows"], list): + raise Exception("`rows` field should be of type `list`.") + if not isinstance(result["columns"], list): + raise Exception("`columns` field should be of type `list`.") + def run_query(self, query, user): self._current_user = user @@ -352,6 +371,7 @@ def run_query(self, query, user): exec(code, restricted_globals, self._script_locals) result = self._script_locals["result"] + self.validate_result(result) result["log"] = self._custom_print.lines json_data = json_dumps(result) except Exception as e: diff --git a/tests/query_runner/test_python.py b/tests/query_runner/test_python.py index 2839924513..66e4afc470 100644 --- a/tests/query_runner/test_python.py +++ b/tests/query_runner/test_python.py @@ -20,19 +20,44 @@ def test_print_in_query_string_success(self, mock_dt): def test_empty_result(self): query_string = "result={}" result = self.python.run_query(query_string, "user") - self.assertEqual(result[0], '{"log": []}') + self.assertEqual(result[0], None) + + def test_none_result(self): + query_string = "result=None" + result = self.python.run_query(query_string, "user") + self.assertEqual(result[0], None) - def test_invalidate_result_type_string(self): + def test_invalid_result_type_string(self): query_string = "result='string'" result = self.python.run_query(query_string, "user") self.assertEqual(result[0], None) - def test_invalidate_result_type_int(self): + def test_invalid_result_type_int(self): query_string = "result=100" result = self.python.run_query(query_string, "user") self.assertEqual(result[0], None) - def test_validate_result_type(self): + def test_invalid_result_missing_rows(self): + query_string = "result={'columns': []}" + result = self.python.run_query(query_string, "user") + self.assertEqual(result[0], None) + + def test_invalid_result_not_list_rows(self): + query_string = "result={'rows': {}, 'columns': []}" + result = self.python.run_query(query_string, "user") + self.assertEqual(result[0], None) + + def test_invalid_result_missing_columns(self): + query_string = "result={'rows': []}" + result = self.python.run_query(query_string, "user") + self.assertEqual(result[0], None) + + def test_invalid_result_not_list_columns(self): + query_string = "result={'rows': [], 'columns': {}}" + result = self.python.run_query(query_string, "user") + self.assertEqual(result[0], None) + + def test_valid_result_type(self): query_string = ( "result=" '{"columns": [{"name": "col1", "type": TYPE_STRING},' @@ -51,7 +76,7 @@ def test_validate_result_type(self): ) @mock.patch("datetime.datetime") - def test_validate_result_type_with_print(self, mock_dt): + def test_valid_result_type_with_print(self, mock_dt): mock_dt.utcnow = mock.Mock(return_value=datetime(1901, 12, 21)) query_string = ( 'print("test")\n' From f8934b83126261ae5639d35843518e7ceabaae87 Mon Sep 17 00:00:00 2001 From: Eric Radman Date: Tue, 15 Aug 2023 07:59:18 -0400 Subject: [PATCH 268/274] Switch from numeral to numbro (#6344) numeraljs is no longer maintained, and incorrectly parses high-precision floats (such as 1.2e-7) as NaN. --- package.json | 2 +- viz-lib/package.json | 3 +-- viz-lib/src/lib/value-format.tsx | 6 ++---- .../fixtures/prepareData/bar/normalized.json | 4 ++-- .../line-area/normalized-stacked.json | 4 ++-- .../prepareData/line-area/normalized.json | 4 ++-- .../chart/plotly/preparePieData.ts | 2 +- .../visualizations/chart/plotly/updateData.ts | 2 +- .../src/visualizations/cohort/Cornelius.tsx | 4 ++-- viz-lib/src/visualizations/counter/utils.ts | 14 ++++++------- .../funnel/Renderer/FunnelBar.tsx | 2 +- .../visualizations/funnel/Renderer/index.tsx | 2 +- .../funnel/Renderer/prepareData.ts | 4 ++-- viz-lib/yarn.lock | 20 ++++++++++--------- yarn.lock | 17 +++++++++++----- 15 files changed, 48 insertions(+), 42 deletions(-) diff --git a/package.json b/package.json index 07fc0bb09d..e5d4db43b6 100644 --- a/package.json +++ b/package.json @@ -62,7 +62,7 @@ "material-design-iconic-font": "^2.2.0", "mousetrap": "^1.6.1", "mustache": "^2.3.0", - "numeral": "^2.0.6", + "numbro": "^2.3.6", "path-to-regexp": "^3.1.0", "prop-types": "^15.6.1", "query-string": "^6.9.0", diff --git a/viz-lib/package.json b/viz-lib/package.json index c583df82d9..55c9100b1b 100644 --- a/viz-lib/package.json +++ b/viz-lib/package.json @@ -45,7 +45,6 @@ "@types/enzyme": "^3.10.8", "@types/jest": "^26.0.18", "@types/leaflet": "^1.5.19", - "@types/numeral": "0.0.28", "@types/plotly.js": "^1.54.22", "@types/react": "^17.0.0", "@types/react-dom": "^17.0.0", @@ -90,7 +89,7 @@ "leaflet-fullscreen": "^1.0.2", "leaflet.markercluster": "^1.1.0", "lodash": "^4.17.10", - "numeral": "^2.0.6", + "numbro": "^2.3.6", "plotly.js": "1.58.5", "react-pivottable": "^0.9.0", "react-sortable-hoc": "^1.10.1", diff --git a/viz-lib/src/lib/value-format.tsx b/viz-lib/src/lib/value-format.tsx index 96693d2d3b..4754a37ea7 100644 --- a/viz-lib/src/lib/value-format.tsx +++ b/viz-lib/src/lib/value-format.tsx @@ -1,12 +1,10 @@ import React from "react"; import ReactDOMServer from "react-dom/server"; import moment from "moment/moment"; -import numeral from "numeral"; +import numbro from "numbro"; import { isString, isArray, isUndefined, isFinite, isNil, toString } from "lodash"; import { visualizationsSettings } from "@/visualizations/visualizationsSettings"; -numeral.options.scalePercentBy100 = false; - // eslint-disable-next-line const urlPattern = /(^|[\s\n]|)((?:https?|ftp):\/\/[\-A-Z0-9+\u0026\u2019@#\/%?=()~_|!:,.;]*[\-A-Z0-9+\u0026@#\/%=~()_|])/gi; @@ -78,7 +76,7 @@ export function createBooleanFormatter(values: any) { export function createNumberFormatter(format: any) { if (isString(format) && format !== "") { - const n = numeral(0); // cache `numeral` instance + const n = numbro(0); // cache `numbro` instance return (value: any) => (value === null || value === "" ? "" : n.set(value).format(format)); } return (value: any) => toString(value); diff --git a/viz-lib/src/visualizations/chart/plotly/fixtures/prepareData/bar/normalized.json b/viz-lib/src/visualizations/chart/plotly/fixtures/prepareData/bar/normalized.json index 3ab34e8e8c..13bfeaf99f 100644 --- a/viz-lib/src/visualizations/chart/plotly/fixtures/prepareData/bar/normalized.json +++ b/viz-lib/src/visualizations/chart/plotly/fixtures/prepareData/bar/normalized.json @@ -52,7 +52,7 @@ "type": "bar", "name": "a", "x": ["x1", "x2", "x3", "x4"], - "y": [20, 40, 60, 80], + "y": [0.2, 0.4, 0.6, 0.8], "error_y": { "array": [0, 0, 0, 0], "color": "red" }, "hoverinfo": "text+x+name", "hover": [], @@ -68,7 +68,7 @@ "type": "bar", "name": "b", "x": ["x1", "x2", "x3", "x4"], - "y": [80, 60, 40, 20], + "y": [0.8, 0.6, 0.4, 0.2], "error_y": { "array": [0, 0, 0, 0], "color": "blue" }, "hoverinfo": "text+x+name", "hover": [], diff --git a/viz-lib/src/visualizations/chart/plotly/fixtures/prepareData/line-area/normalized-stacked.json b/viz-lib/src/visualizations/chart/plotly/fixtures/prepareData/line-area/normalized-stacked.json index 17776da789..e4541dd0bc 100644 --- a/viz-lib/src/visualizations/chart/plotly/fixtures/prepareData/line-area/normalized-stacked.json +++ b/viz-lib/src/visualizations/chart/plotly/fixtures/prepareData/line-area/normalized-stacked.json @@ -51,7 +51,7 @@ "name": "a", "mode": "lines+text", "x": ["x1", "x2", "x3", "x4"], - "y": [20, 40, 60, 80], + "y": [0.2, 0.4, 0.6, 0.8], "error_y": { "array": [0, 0, 0, 0], "color": "red" }, "hoverinfo": "text+x+name", "hover": [], @@ -65,7 +65,7 @@ "name": "b", "mode": "lines+text", "x": ["x1", "x2", "x3", "x4"], - "y": [100, 100, 100, 100], + "y": [1, 1, 1, 1], "error_y": { "array": [0, 0, 0, 0], "color": "blue" }, "hoverinfo": "text+x+name", "hover": [], diff --git a/viz-lib/src/visualizations/chart/plotly/fixtures/prepareData/line-area/normalized.json b/viz-lib/src/visualizations/chart/plotly/fixtures/prepareData/line-area/normalized.json index 40e8b03c28..7db38a5334 100644 --- a/viz-lib/src/visualizations/chart/plotly/fixtures/prepareData/line-area/normalized.json +++ b/viz-lib/src/visualizations/chart/plotly/fixtures/prepareData/line-area/normalized.json @@ -51,7 +51,7 @@ "name": "a", "mode": "lines+text", "x": ["x1", "x2", "x3", "x4"], - "y": [20, 40, 60, 80], + "y": [0.2, 0.4, 0.6, 0.8], "error_y": { "array": [0, 0, 0, 0], "color": "red" }, "hoverinfo": "text+x+name", "hover": [], @@ -65,7 +65,7 @@ "name": "b", "mode": "lines+text", "x": ["x1", "x2", "x3", "x4"], - "y": [80, 60, 40, 20], + "y": [0.8, 0.6, 0.4, 0.2], "error_y": { "array": [0, 0, 0, 0], "color": "blue" }, "hoverinfo": "text+x+name", "hover": [], diff --git a/viz-lib/src/visualizations/chart/plotly/preparePieData.ts b/viz-lib/src/visualizations/chart/plotly/preparePieData.ts index 80101f0729..702b92b2f6 100644 --- a/viz-lib/src/visualizations/chart/plotly/preparePieData.ts +++ b/viz-lib/src/visualizations/chart/plotly/preparePieData.ts @@ -60,7 +60,7 @@ function prepareSeries(series: any, options: any, additionalOptions: any) { sourceData.set(x, { x, y, - yPercent: (y / seriesTotal) * 100, + yPercent: (y / seriesTotal), row, }); }); diff --git a/viz-lib/src/visualizations/chart/plotly/updateData.ts b/viz-lib/src/visualizations/chart/plotly/updateData.ts index c9cc6b912e..03557683dc 100644 --- a/viz-lib/src/visualizations/chart/plotly/updateData.ts +++ b/viz-lib/src/visualizations/chart/plotly/updateData.ts @@ -119,7 +119,7 @@ function updatePercentValues(seriesList: any, options: any) { item.yPercent = null; } else { const sum = sumOfCorrespondingPoints.get(item.x); - item.yPercent = (item.y / sum) * 100; + item.yPercent = (item.y / sum); } yValues.push(item.yPercent); }); diff --git a/viz-lib/src/visualizations/cohort/Cornelius.tsx b/viz-lib/src/visualizations/cohort/Cornelius.tsx index 7d5c8eb783..dfc022ac71 100644 --- a/viz-lib/src/visualizations/cohort/Cornelius.tsx +++ b/viz-lib/src/visualizations/cohort/Cornelius.tsx @@ -65,7 +65,7 @@ function prepareOptions(options: any) { getColorForValue: chroma .scale([options.colors.min, options.colors.max]) .mode("hsl") - .domain([0, 100]) + .domain([0, 1]) .classes(options.colors.steps), }); } @@ -117,7 +117,7 @@ function CorneliusRow({ options, data, index, maxRowLength }: any) { const cells = []; for (let i = 1; i < maxRowLength; i += 1) { const value = data[i]; - const percentageValue = isFinite(value / baseValue) ? (value / baseValue) * 100 : null; + const percentageValue = isFinite(value / baseValue) ? (value / baseValue) : null; const cellProps = { key: `col${i}` }; if (isNil(percentageValue)) { diff --git a/viz-lib/src/visualizations/counter/utils.ts b/viz-lib/src/visualizations/counter/utils.ts index 1f433fffe7..6f9c8fe265 100644 --- a/viz-lib/src/visualizations/counter/utils.ts +++ b/viz-lib/src/visualizations/counter/utils.ts @@ -1,12 +1,12 @@ import { isNumber, isFinite, toString } from "lodash"; -import numeral from "numeral"; +import numbro from "numbro"; // TODO: allow user to specify number format string instead of delimiters only // It will allow to remove this function (move all that weird formatting logic to a migration // that will set number format for all existing counter visualization) function numberFormat(value: any, decimalPoints: any, decimalDelimiter: any, thousandsDelimiter: any) { // Temporarily update locale data (restore defaults after formatting) - const locale = numeral.localeData(); + const locale = numbro.languageData(); const savedDelimiters = locale.delimiters; // Mimic old behavior - AngularJS `number` filter defaults: @@ -33,7 +33,7 @@ function numberFormat(value: any, decimalPoints: any, decimalDelimiter: any, tho } } } - const result = numeral(value).format(formatString); + const result = numbro(value).format(formatString); locale.delimiters = savedDelimiters; return result; @@ -61,7 +61,7 @@ function formatValue(value: any, { stringPrefix, stringSuffix, stringDecimal, st function formatTooltip(value: any, formatString: any) { if (isNumber(value)) { - return numeral(value).format(formatString); + return numbro(value).format(formatString); } return toString(value); } @@ -109,9 +109,9 @@ export function getCounterData(rows: any, options: any, visualizationName: any) } // @ts-expect-error ts-migrate(2339) FIXME: Property 'counterValueTooltip' does not exist on t... Remove this comment to see the full error message - result.counterValueTooltip = formatTooltip(result.counterValue, options.tooltipFormat); + result.counterValueTooltip = formatTooltip(result.counterValue, options.tooltipFormat || "0,0"); // @ts-expect-error ts-migrate(2339) FIXME: Property 'targetValueTooltip' does not exist on ty... Remove this comment to see the full error message - result.targetValueTooltip = formatTooltip(result.targetValue, options.tooltipFormat); + result.targetValueTooltip = formatTooltip(result.targetValue, options.tooltipFormat || "0,0"); // @ts-expect-error ts-migrate(2339) FIXME: Property 'counterValue' does not exist on type '{}... Remove this comment to see the full error message result.counterValue = formatValue(result.counterValue, options); @@ -123,7 +123,7 @@ export function getCounterData(rows: any, options: any, visualizationName: any) // @ts-expect-error ts-migrate(2339) FIXME: Property 'targetValue' does not exist on type '{}'... Remove this comment to see the full error message if (isFinite(result.targetValue)) { // @ts-expect-error ts-migrate(2339) FIXME: Property 'targetValue' does not exist on type '{}'... Remove this comment to see the full error message - result.targetValue = numeral(result.targetValue).format("0[.]00[0]"); + result.targetValue = numbro(result.targetValue).format("0[.]00[0]"); } } } diff --git a/viz-lib/src/visualizations/funnel/Renderer/FunnelBar.tsx b/viz-lib/src/visualizations/funnel/Renderer/FunnelBar.tsx index 9ac317dce1..226dbf95ee 100644 --- a/viz-lib/src/visualizations/funnel/Renderer/FunnelBar.tsx +++ b/viz-lib/src/visualizations/funnel/Renderer/FunnelBar.tsx @@ -16,7 +16,7 @@ type Props = OwnProps & typeof FunnelBar.defaultProps; export default function FunnelBar({ color, value, align, className, children }: Props) { return (
-
+
{children}
); diff --git a/viz-lib/src/visualizations/funnel/Renderer/index.tsx b/viz-lib/src/visualizations/funnel/Renderer/index.tsx index 9a56bdeb5b..a98aa62a00 100644 --- a/viz-lib/src/visualizations/funnel/Renderer/index.tsx +++ b/viz-lib/src/visualizations/funnel/Renderer/index.tsx @@ -79,7 +79,7 @@ export default function Renderer({ data, options }: any) { align: "center", render: (value: any) => ( // @ts-expect-error ts-migrate(2745) FIXME: This JSX tag's 'children' prop expects type 'never... Remove this comment to see the full error message - + {formatPercentValue(value)} ), diff --git a/viz-lib/src/visualizations/funnel/Renderer/prepareData.ts b/viz-lib/src/visualizations/funnel/Renderer/prepareData.ts index 718d594fe3..215e26316b 100644 --- a/viz-lib/src/visualizations/funnel/Renderer/prepareData.ts +++ b/viz-lib/src/visualizations/funnel/Renderer/prepareData.ts @@ -32,9 +32,9 @@ export default function prepareData(rows: any, options: any) { const maxVal = maxBy(data, d => d.value).value; data.forEach((d, i) => { // @ts-expect-error ts-migrate(2339) FIXME: Property 'pctMax' does not exist on type '{ step: ... Remove this comment to see the full error message - d.pctMax = (d.value / maxVal) * 100.0; + d.pctMax = (d.value / maxVal); // @ts-expect-error ts-migrate(2339) FIXME: Property 'pctPrevious' does not exist on type '{ s... Remove this comment to see the full error message - d.pctPrevious = i === 0 || d.value === data[i - 1].value ? 100.0 : (d.value / data[i - 1].value) * 100.0; + d.pctPrevious = i === 0 || d.value === data[i - 1].value ? 1.0 : (d.value / data[i - 1].value); }); return data.slice(0, options.itemsLimit); diff --git a/viz-lib/yarn.lock b/viz-lib/yarn.lock index f93193f4d7..10e6e988d0 100644 --- a/viz-lib/yarn.lock +++ b/viz-lib/yarn.lock @@ -2066,11 +2066,6 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-13.13.4.tgz#1581d6c16e3d4803eb079c87d4ac893ee7501c2c" integrity sha512-x26ur3dSXgv5AwKS0lNfbjpCakGIduWU1DU91Zz58ONRWrIKGunmZBNv4P7N+e27sJkiGDsw/3fT4AtsqQBrBA== -"@types/numeral@0.0.28": - version "0.0.28" - resolved "https://registry.yarnpkg.com/@types/numeral/-/numeral-0.0.28.tgz#e43928f0bda10b169b6f7ecf99e3ddf836b8ebe4" - integrity sha512-Sjsy10w6XFHDktJJdXzBJmoondAKW+LcGpRFH+9+zXEDj0cOH8BxJuZA9vUDSMAzU1YRJlsPKmZEEiTYDlICLw== - "@types/plotly.js@^1.54.22": version "1.54.22" resolved "https://registry.yarnpkg.com/@types/plotly.js/-/plotly.js-1.54.22.tgz#001b9cfafc5e0bdf133bc6ab6e30ff0af39e584d" @@ -2843,6 +2838,11 @@ big.js@^5.2.2: resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== +bignumber.js@^8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-8.1.1.tgz#4b072ae5aea9c20f6730e4e5d529df1271c4d885" + integrity sha512-QD46ppGintwPGuL1KqmwhR0O+N2cZUg8JG/VzwI2e28sM9TqHjQB10lI4QAaMHVbLzwVLLAwEglpKPViWX+5NQ== + binary-extensions@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" @@ -7580,10 +7580,12 @@ number-is-integer@^1.0.1: dependencies: is-finite "^1.0.1" -numeral@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/numeral/-/numeral-2.0.6.tgz#4ad080936d443c2561aed9f2197efffe25f4e506" - integrity sha1-StCAk21EPCVhrtnyGX7//iX05QY= +numbro@^2.3.6: + version "2.3.6" + resolved "https://registry.yarnpkg.com/numbro/-/numbro-2.3.6.tgz#4bd622ebe59ccbc49dad365c5b9eed200781fa21" + integrity sha512-pxpoTT3hVxQGaOA2RTzXR/muonQNd1K1HPJbWo7QOmxPwiPmoFCFfsG9XXgW3uqjyzezJ0P9IvCPDXUtJexjwg== + dependencies: + bignumber.js "^8.1.1" numeric@^1.2.6: version "1.2.6" diff --git a/yarn.lock b/yarn.lock index a659fb4613..1171e7bf06 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1844,7 +1844,7 @@ leaflet-fullscreen "^1.0.2" leaflet.markercluster "^1.1.0" lodash "^4.17.10" - numeral "^2.0.6" + numbro "^2.3.6" plotly.js "1.58.5" react-pivottable "^0.9.0" react-sortable-hoc "^1.10.1" @@ -3355,6 +3355,11 @@ big.js@^5.2.2: resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== +bignumber.js@^8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-8.1.1.tgz#4b072ae5aea9c20f6730e4e5d529df1271c4d885" + integrity sha512-QD46ppGintwPGuL1KqmwhR0O+N2cZUg8JG/VzwI2e28sM9TqHjQB10lI4QAaMHVbLzwVLLAwEglpKPViWX+5NQ== + binary-extensions@^1.0.0: version "1.13.0" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.0.tgz#9523e001306a32444b907423f1de2164222f6ab1" @@ -10623,10 +10628,12 @@ number-is-integer@^1.0.1: dependencies: is-finite "^1.0.1" -numeral@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/numeral/-/numeral-2.0.6.tgz#4ad080936d443c2561aed9f2197efffe25f4e506" - integrity sha1-StCAk21EPCVhrtnyGX7//iX05QY= +numbro@^2.3.6: + version "2.3.6" + resolved "https://registry.yarnpkg.com/numbro/-/numbro-2.3.6.tgz#4bd622ebe59ccbc49dad365c5b9eed200781fa21" + integrity sha512-pxpoTT3hVxQGaOA2RTzXR/muonQNd1K1HPJbWo7QOmxPwiPmoFCFfsG9XXgW3uqjyzezJ0P9IvCPDXUtJexjwg== + dependencies: + bignumber.js "^8.1.1" numeric@^1.2.6: version "1.2.6" From 4a5c9c2630cee2694bb9959a28cd4aee5645003a Mon Sep 17 00:00:00 2001 From: Evgeny <83959978+evgenyx00@users.noreply.github.com> Date: Wed, 16 Aug 2023 06:20:19 +0300 Subject: [PATCH 269/274] Scheduled queries should include origin Username (#6368) --- redash/handlers/query_results.py | 2 +- redash/models/users.py | 3 +++ redash/tasks/queries/maintenance.py | 2 +- tests/tasks/test_refresh_queries.py | 8 ++++---- 4 files changed, 9 insertions(+), 6 deletions(-) diff --git a/redash/handlers/query_results.py b/redash/handlers/query_results.py index f4d2584441..59ef9d88d4 100644 --- a/redash/handlers/query_results.py +++ b/redash/handlers/query_results.py @@ -105,7 +105,7 @@ def run_query(query, parameters, data_source, query_id, should_apply_auto_limit, current_user.id, current_user.is_api_user(), metadata={ - "Username": repr(current_user) if current_user.is_api_user() else current_user.email, + "Username": current_user.get_actual_user(), "query_id": query_id, }, ) diff --git a/redash/models/users.py b/redash/models/users.py index af92492781..cfc9f18281 100644 --- a/redash/models/users.py +++ b/redash/models/users.py @@ -236,6 +236,9 @@ def get_id(self): identity = hashlib.md5("{},{}".format(self.email, self.password_hash).encode()).hexdigest() return "{0}-{1}".format(self.id, identity) + def get_actual_user(self): + return repr(self) if self.is_api_user() else self.email + @generic_repr("id", "name", "type", "org_id") class Group(db.Model, BelongsToOrgMixin): diff --git a/redash/tasks/queries/maintenance.py b/redash/tasks/queries/maintenance.py index d92ec184ae..bbfebd053f 100644 --- a/redash/tasks/queries/maintenance.py +++ b/redash/tasks/queries/maintenance.py @@ -96,7 +96,7 @@ def refresh_queries(): query.data_source, query.user_id, scheduled_query=query, - metadata={"query_id": query.id, "Username": "Scheduled"}, + metadata={"query_id": query.id, "Username": query.user.get_actual_user()}, ) enqueued.append(query) except Exception as e: diff --git a/tests/tasks/test_refresh_queries.py b/tests/tasks/test_refresh_queries.py index 8cd4a163d8..6a306be18d 100644 --- a/tests/tasks/test_refresh_queries.py +++ b/tests/tasks/test_refresh_queries.py @@ -30,14 +30,14 @@ def test_enqueues_outdated_queries_for_sqlquery(self): query1.data_source, query1.user_id, scheduled_query=query1, - metadata={"query_id": query1.id, "Username": "Scheduled"}, + metadata={"query_id": query1.id, "Username": query1.user.get_actual_user()}, ), call( "select 42 LIMIT 1000", query2.data_source, query2.user_id, scheduled_query=query2, - metadata={"query_id": query2.id, "Username": "Scheduled"}, + metadata={"query_id": query2.id, "Username": query2.user.get_actual_user()}, ), ], any_order=True, @@ -62,14 +62,14 @@ def test_enqueues_outdated_queries_for_non_sqlquery(self): query1.data_source, query1.user_id, scheduled_query=query1, - metadata={"query_id": query1.id, "Username": "Scheduled"}, + metadata={"query_id": query1.id, "Username": query1.user.get_actual_user()}, ), call( query2.query_text, query2.data_source, query2.user_id, scheduled_query=query2, - metadata={"query_id": query2.id, "Username": "Scheduled"}, + metadata={"query_id": query2.id, "Username": query2.user.get_actual_user()}, ), ], any_order=True, From 0f88a2383572e7a8e8a5958ee7c1d14f88379fa2 Mon Sep 17 00:00:00 2001 From: Eric Radman Date: Wed, 16 Aug 2023 12:09:33 -0400 Subject: [PATCH 270/274] Allow the X and Y tick format to be customized using a D3 format string (#6370) Numbers: https://d3-wiki.readthedocs.io/zh_CN/master/Formatting/ Date/Time: https://d3-wiki.readthedocs.io/zh_CN/master/Time-Formatting/ --- .../cypress/support/visualizations/chart.js | 4 ++++ .../visualizations/editor/ContextHelp.tsx | 13 ++++++++++++ .../chart/Editor/AxisSettings.tsx | 20 ++++++++++++++++++- .../chart/Editor/XAxisSettings.test.tsx | 14 +++++++++++++ .../chart/Editor/YAxisSettings.test.tsx | 14 +++++++++++++ .../__snapshots__/XAxisSettings.test.tsx.snap | 12 +++++++++++ .../__snapshots__/YAxisSettings.test.tsx.snap | 15 ++++++++++++++ .../chart/plotly/prepareLayout.ts | 2 ++ 8 files changed, 93 insertions(+), 1 deletion(-) diff --git a/client/cypress/support/visualizations/chart.js b/client/cypress/support/visualizations/chart.js index a18375daee..e6d7d8b585 100644 --- a/client/cypress/support/visualizations/chart.js +++ b/client/cypress/support/visualizations/chart.js @@ -80,6 +80,10 @@ export function assertAxesAndAddLabels(xaxisLabel, yaxisLabel) { .clear() .type(yaxisLabel); + cy.getByTestId("Chart.LeftYAxis.TickFormat") + .clear() + .type("+"); + cy.getByTestId("VisualizationEditor.Tabs.General").click(); } diff --git a/viz-lib/src/components/visualizations/editor/ContextHelp.tsx b/viz-lib/src/components/visualizations/editor/ContextHelp.tsx index d523820e57..10780e62d2 100644 --- a/viz-lib/src/components/visualizations/editor/ContextHelp.tsx +++ b/viz-lib/src/components/visualizations/editor/ContextHelp.tsx @@ -53,5 +53,18 @@ function DateTimeFormatSpecs() { ); } +function TickFormatSpecs() { + const { HelpTriggerComponent } = visualizationsSettings; + return ( + + {ContextHelp.defaultIcon} + + ); +} + ContextHelp.NumberFormatSpecs = NumberFormatSpecs; ContextHelp.DateTimeFormatSpecs = DateTimeFormatSpecs; +ContextHelp.TickFormatSpecs = TickFormatSpecs; diff --git a/viz-lib/src/visualizations/chart/Editor/AxisSettings.tsx b/viz-lib/src/visualizations/chart/Editor/AxisSettings.tsx index 84c7de2b9c..7db3a1a50f 100644 --- a/viz-lib/src/visualizations/chart/Editor/AxisSettings.tsx +++ b/viz-lib/src/visualizations/chart/Editor/AxisSettings.tsx @@ -2,7 +2,7 @@ import { isString, isObject, isFinite, isNumber, merge } from "lodash"; import React from "react"; import { useDebouncedCallback } from "use-debounce"; import * as Grid from "antd/lib/grid"; -import { Section, Select, Input, InputNumber } from "@/components/visualizations/editor"; +import { Section, Select, Input, InputNumber, ContextHelp } from "@/components/visualizations/editor"; function toNumber(value: any) { value = isNumber(value) ? value : parseFloat(value); @@ -18,6 +18,7 @@ type OwnProps = { }; rangeMin?: number; rangeMax?: number; + tickFormat?: string; }; features?: { autoDetectType?: boolean; @@ -40,6 +41,8 @@ export default function AxisSettings({ id, options, features, onChange }: Props) const [handleMinMaxChange] = useDebouncedCallback(opts => optionsChanged(opts), 200); + const [handleTickFormatChange] = useDebouncedCallback(opts => optionsChanged(opts), 200); + return ( {/* @ts-expect-error ts-migrate(2745) FIXME: This JSX tag's 'children' prop expects type 'never... Remove this comment to see the full error message */} @@ -89,6 +92,21 @@ export default function AxisSettings({ id, options, features, onChange }: Props) /> + {/* @ts-expect-error ts-migrate(2745) FIXME: This JSX tag's 'children' prop expects type 'never... Remove this comment to see the full error message */} +
+ + Tick Format + + + } + data-test={`Chart.${id}.TickFormat`} + defaultValue={options.tickFormat} + onChange={(event: any) => handleTickFormatChange({ tickFormat: event.target.value })} + /> +
+ {features.range && ( // @ts-expect-error ts-migrate(2745) FIXME: This JSX tag's 'children' prop expects type 'never... Remove this comment to see the full error message
diff --git a/viz-lib/src/visualizations/chart/Editor/XAxisSettings.test.tsx b/viz-lib/src/visualizations/chart/Editor/XAxisSettings.test.tsx index 5f310dc38b..5766479204 100644 --- a/viz-lib/src/visualizations/chart/Editor/XAxisSettings.test.tsx +++ b/viz-lib/src/visualizations/chart/Editor/XAxisSettings.test.tsx @@ -55,6 +55,20 @@ describe("Visualizations -> Chart -> Editor -> X-Axis Settings", () => { .simulate("change", { target: { value: "test" } }); }); + test("Changes axis tick format", done => { + const el = mount( + { + globalSeriesType: "column", + xAxis: { }, + }, + done + ); + + findByTestID(el, "Chart.XAxis.TickFormat") + .last() + .simulate("change", { target: { value: "%B" } }); + }); + test("Sets Show Labels option", done => { const el = mount( { diff --git a/viz-lib/src/visualizations/chart/Editor/YAxisSettings.test.tsx b/viz-lib/src/visualizations/chart/Editor/YAxisSettings.test.tsx index f8a40b9c3a..ad1912605b 100644 --- a/viz-lib/src/visualizations/chart/Editor/YAxisSettings.test.tsx +++ b/viz-lib/src/visualizations/chart/Editor/YAxisSettings.test.tsx @@ -59,6 +59,20 @@ describe("Visualizations -> Chart -> Editor -> Y-Axis Settings", () => { .simulate("change", { target: { value: "test" } }); }); + test("Changes axis tick format", done => { + const el = mount( + { + globalSeriesType: "column", + yAxis: [], + }, + done + ); + + findByTestID(el, "Chart.LeftYAxis.TickFormat") + .last() + .simulate("change", { target: { value: "s" } }); + }); + test("Changes axis min value", done => { const el = mount( { diff --git a/viz-lib/src/visualizations/chart/Editor/__snapshots__/XAxisSettings.test.tsx.snap b/viz-lib/src/visualizations/chart/Editor/__snapshots__/XAxisSettings.test.tsx.snap index 4e5fbe197b..ab2774f811 100644 --- a/viz-lib/src/visualizations/chart/Editor/__snapshots__/XAxisSettings.test.tsx.snap +++ b/viz-lib/src/visualizations/chart/Editor/__snapshots__/XAxisSettings.test.tsx.snap @@ -14,6 +14,18 @@ Object { } `; +exports[`Visualizations -> Chart -> Editor -> X-Axis Settings Changes axis tick format 1`] = ` +Object { + "xAxis": Object { + "labels": Object { + "enabled": true, + }, + "tickFormat": "%B", + "type": "-", + }, +} +`; + exports[`Visualizations -> Chart -> Editor -> X-Axis Settings Changes axis type 1`] = ` Object { "xAxis": Object { diff --git a/viz-lib/src/visualizations/chart/Editor/__snapshots__/YAxisSettings.test.tsx.snap b/viz-lib/src/visualizations/chart/Editor/__snapshots__/YAxisSettings.test.tsx.snap index b9364b20fa..93c2d9edb6 100644 --- a/viz-lib/src/visualizations/chart/Editor/__snapshots__/YAxisSettings.test.tsx.snap +++ b/viz-lib/src/visualizations/chart/Editor/__snapshots__/YAxisSettings.test.tsx.snap @@ -47,6 +47,21 @@ Object { } `; +exports[`Visualizations -> Chart -> Editor -> Y-Axis Settings Changes axis tick format 1`] = ` +Object { + "yAxis": Array [ + Object { + "tickFormat": "s", + "type": "linear", + }, + Object { + "opposite": true, + "type": "linear", + }, + ], +} +`; + exports[`Visualizations -> Chart -> Editor -> Y-Axis Settings Changes axis type 1`] = ` Object { "yAxis": Array [ diff --git a/viz-lib/src/visualizations/chart/plotly/prepareLayout.ts b/viz-lib/src/visualizations/chart/plotly/prepareLayout.ts index f79912a2fd..097a51e285 100644 --- a/viz-lib/src/visualizations/chart/plotly/prepareLayout.ts +++ b/viz-lib/src/visualizations/chart/plotly/prepareLayout.ts @@ -21,6 +21,7 @@ function prepareXAxis(axisOptions: any, additionalOptions: any) { title: getAxisTitle(axisOptions), type: getAxisScaleType(axisOptions), automargin: true, + tickformat: axisOptions.tickFormat, }; if (additionalOptions.sortX && axis.type === "category") { @@ -48,6 +49,7 @@ function prepareYAxis(axisOptions: any) { automargin: true, autorange: true, range: null, + tickformat: axisOptions.tickFormat, }; } From 0586b43b756a62bab479ad2a1d61e64108142f51 Mon Sep 17 00:00:00 2001 From: snickerjp Date: Sun, 20 Aug 2023 04:16:35 +0900 Subject: [PATCH 271/274] Add offset for query_runner/oracle.py Error Message. (#6373) --- redash/query_runner/oracle.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/redash/query_runner/oracle.py b/redash/query_runner/oracle.py index fbc1b0f2c2..a71b1352ee 100644 --- a/redash/query_runner/oracle.py +++ b/redash/query_runner/oracle.py @@ -176,7 +176,10 @@ def run_query(self, query, user): json_data = json_dumps(data) connection.commit() except cx_Oracle.DatabaseError as err: - error = "Query failed. {}.".format(str(err)) + (err_args,) = err.args + line_number = query.count("\n", 0, err_args.offset) + 1 + column_number = err_args.offset - query.rfind("\n", 0, err_args.offset) - 1 + error = "Query failed at line {}, column {}: {}".format(str(line_number), str(column_number), str(err)) json_data = None except (KeyboardInterrupt, JobTimeoutException): connection.cancel() From 772680bbd2a0e38cc1c32b3dadfbbe680a30ea63 Mon Sep 17 00:00:00 2001 From: Jesse Date: Sun, 20 Aug 2023 22:03:47 -0400 Subject: [PATCH 272/274] New cypress test: sorting dashboard list does not crash page. (#5702) * New cypress test: sorting dashboard list does not crash page. * Restyled by prettier (#5703) Co-authored-by: Restyled.io --------- Co-authored-by: restyled-io[bot] <32688539+restyled-io[bot]@users.noreply.github.com> Co-authored-by: Restyled.io --- .../integration/dashboard/dashboard_list.js | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 client/cypress/integration/dashboard/dashboard_list.js diff --git a/client/cypress/integration/dashboard/dashboard_list.js b/client/cypress/integration/dashboard/dashboard_list.js new file mode 100644 index 0000000000..3573f68dc4 --- /dev/null +++ b/client/cypress/integration/dashboard/dashboard_list.js @@ -0,0 +1,24 @@ +describe("Dashboard list sort", () => { + beforeEach(() => { + cy.login(); + }); + + it("creates one dashboard", () => { + cy.visit("/dashboards"); + cy.getByTestId("CreateButton").click(); + cy.getByTestId("CreateDashboardMenuItem").click(); + cy.getByTestId("CreateDashboardDialog").within(() => { + cy.get("input").type("A Foo Bar"); + cy.getByTestId("DashboardSaveButton").click(); + }); + }); + + describe("Sorting table does not crash page ", () => { + it("sorts", () => { + cy.visit("/dashboards"); + cy.contains("Name").click(); + cy.wait(1000); // eslint-disable-line cypress/no-unnecessary-waiting + cy.getByTestId("ErrorMessage").should("not.exist"); + }); + }); +}); From f49075bada4af690c72e7ca0448d89c3166abca6 Mon Sep 17 00:00:00 2001 From: Peter Chen Date: Sun, 20 Aug 2023 20:37:59 -0700 Subject: [PATCH 273/274] add ssl_config to redshift iam class (#5465) Co-authored-by: peterxichen Co-authored-by: Justin Clift --- redash/query_runner/pg.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/redash/query_runner/pg.py b/redash/query_runner/pg.py index e6e5d0ece8..ea5bd7e2f0 100644 --- a/redash/query_runner/pg.py +++ b/redash/query_runner/pg.py @@ -485,6 +485,8 @@ def configuration_schema(cls): } def _get_connection(self): + self.ssl_config = {} + sslrootcert_path = os.path.join(os.path.dirname(__file__), "./files/redshift-ca-bundle.crt") login_method = self._login_method_selection() From 9751678c446efa985d8b89835e068821a83f216b Mon Sep 17 00:00:00 2001 From: Stephen Darlington Date: Tue, 22 Aug 2023 18:47:10 +0100 Subject: [PATCH 274/274] Add Apache ignite Query Runner (#5767) --- client/app/assets/images/db-logos/ignite.png | Bin 0 -> 18667 bytes redash/query_runner/ignite.py | 177 +++++++++++++++++++ redash/settings/__init__.py | 1 + requirements_all_ds.txt | 2 + tests/query_runner/test_ignite.py | 61 +++++++ 5 files changed, 241 insertions(+) create mode 100644 client/app/assets/images/db-logos/ignite.png create mode 100644 redash/query_runner/ignite.py create mode 100644 tests/query_runner/test_ignite.py diff --git a/client/app/assets/images/db-logos/ignite.png b/client/app/assets/images/db-logos/ignite.png new file mode 100644 index 0000000000000000000000000000000000000000..046e381012847ef652ea43e46eee09b22ed5b685 GIT binary patch literal 18667 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.15 nzalchemy python-arango==6.1.0 pinotdb>=0.4.5 +pygridgain==1.4.0 +pyignite==0.6.1 diff --git a/tests/query_runner/test_ignite.py b/tests/query_runner/test_ignite.py new file mode 100644 index 0000000000..1c3985ed8a --- /dev/null +++ b/tests/query_runner/test_ignite.py @@ -0,0 +1,61 @@ +import datetime +from unittest import TestCase + +from redash.query_runner.ignite import Ignite + + +class TestIgnite(TestCase): + def test_server_to_connection(self): + config = { + "server": "localhost,localhost:10801,invalid:port:100", + } + ignite = Ignite(config) + + server = ignite.configuration.get("server", "127.0.0.1:10800") + + server_list = [ignite.server_to_connection(s) for s in server.split(",")] + + self.assertTupleEqual(server_list[0], ("localhost", 10800)) + self.assertTupleEqual(server_list[1], ("localhost", 10801)) + self.assertTupleEqual(server_list[2], ("unknown", 10800)) + + def test_normalise_row(self): + config = { + "server": "localhost,localhost:10801,invalid:port:100", + } + ignite = Ignite(config) + + row = [1, 1.0, "string", True, datetime.datetime(2014, 10, 3, 0, 0), (datetime.datetime(2014, 10, 3, 0, 0), 0)] + + converted = ignite.normalise_row(row) + + self.assertListEqual( + converted, + [1, 1.0, "string", True, datetime.datetime(2014, 10, 3, 0, 0), datetime.datetime(2014, 10, 3, 0, 0)], + ) + + def test_parse_query_results(self): + config = { + "server": "localhost,localhost:10801,invalid:port:100", + } + ignite = Ignite(config) + + results = ignite._parse_results( + iter([["col1", "col2", "col3", "col4"], [1, 2.0, "three", (datetime.datetime(2014, 10, 3, 0, 0), 0)]]) + ) + + self.assertListEqual( + results[0], + [ + {"name": "col1", "friendly_name": "col1"}, + {"name": "col2", "friendly_name": "col2"}, + {"name": "col3", "friendly_name": "col3"}, + {"name": "col4", "friendly_name": "col4"}, + ], + ) + self.assertListEqual( + results[1], + [ + {"col1": 1, "col2": 2.0, "col3": "three", "col4": datetime.datetime(2014, 10, 3, 0, 0)}, + ], + )