From 343ee86294aa1a12eb1fbe4e0e2dcb26a4838e21 Mon Sep 17 00:00:00 2001 From: Angelo Date: Wed, 18 May 2022 17:46:07 +0800 Subject: [PATCH 1/2] refactor(applied treebeard model): MP_Node for menu/dictionary & AL_Node for sysconfig/dept --- backend/application/dispatch.py | 62 +- backend/dev/_venv.py | 19 + backend/dev/init_data_export.py | 118 ++ backend/dev/list2tree.py | 24 + backend/dvadmin/system/init_data.py | 2234 +++++++++++--------- backend/dvadmin/system/models.py | 554 +++-- backend/dvadmin/system/views/dictionary.py | 29 +- backend/dvadmin/system/views/menu.py | 45 +- backend/dvadmin/utils/core_initialize.py | 41 +- backend/dvadmin/utils/serializers.py | 4 + backend/dvadmin/utils/viewset.py | 60 +- web/src/views/system/menu/crud.js | 2 +- web/yarn.lock | 824 ++++---- 13 files changed, 2379 insertions(+), 1637 deletions(-) create mode 100644 backend/dev/_venv.py create mode 100644 backend/dev/init_data_export.py create mode 100644 backend/dev/list2tree.py diff --git a/backend/application/dispatch.py b/backend/application/dispatch.py index 6d1124e..5627ef3 100644 --- a/backend/application/dispatch.py +++ b/backend/application/dispatch.py @@ -10,7 +10,7 @@ def is_tenants_mode(): 判断是否为租户模式 :return: """ - return hasattr(connection, 'tenant') and connection.tenant.schema_name + return hasattr(connection, "tenant") and connection.tenant.schema_name # ================================================= # @@ -18,27 +18,37 @@ def is_tenants_mode(): # ================================================= # def _get_all_dictionary(): from dvadmin.system.models import Dictionary + queryset = Dictionary.objects.filter(status=True, is_value=False) data = [] for instance in queryset: - data.append({ - "id": instance.id, - "value": instance.value, - "children": list(Dictionary.objects.filter(parent=instance.id).filter(status=1). - values('label', 'value', 'type', 'color')) - }) + data.append( + { + "id": instance.id, + "value": instance.value, + "children": list( + instance.get_children() + .filter(status=1) + .values("label", "value", "type", "color") + ), + } + ) return {ele.get("value"): ele for ele in data} def _get_all_system_config(): data = {} from dvadmin.system.models import SystemConfig - system_config_obj = SystemConfig.objects.filter(status=True, parent_id__isnull=False).values( - 'parent__key', 'key', 'value', 'form_item_type').order_by('sort') + + system_config_obj = ( + SystemConfig.objects.filter(status=True, parent__isnull=False) + .values("parent__key", "key", "value", "form_item_type") + .order_by("sort") + ) for system_config in system_config_obj: - value = system_config.get('value') or '' - if value and system_config.get('form_item_type') == 7: - value = value[0].get('url') + value = system_config.get("value") or "" + if value and system_config.get("form_item_type") == 7: + value = value[0].get("url") data[f"{system_config.get('parent__key')}.{system_config.get('key')}"] = value return data @@ -51,9 +61,12 @@ def init_dictionary(): try: if is_tenants_mode(): from django_tenants.utils import tenant_context, get_tenant_model + for tenant in get_tenant_model().objects.filter(): with tenant_context(tenant): - settings.DICTIONARY_CONFIG[connection.tenant.schema_name] = _get_all_dictionary() + settings.DICTIONARY_CONFIG[ + connection.tenant.schema_name + ] = _get_all_dictionary() else: settings.DICTIONARY_CONFIG = _get_all_dictionary() print("初始化字典配置完成") @@ -72,9 +85,12 @@ def init_system_config(): if is_tenants_mode(): from django_tenants.utils import tenant_context, get_tenant_model + for tenant in get_tenant_model().objects.filter(): with tenant_context(tenant): - settings.SYSTEM_CONFIG[connection.tenant.schema_name] = _get_all_system_config() + settings.SYSTEM_CONFIG[ + connection.tenant.schema_name + ] = _get_all_system_config() else: settings.SYSTEM_CONFIG = _get_all_system_config() print("初始化系统配置完成") @@ -90,9 +106,12 @@ def refresh_dictionary(): """ if is_tenants_mode(): from django_tenants.utils import tenant_context, get_tenant_model + for tenant in get_tenant_model().objects.filter(): with tenant_context(tenant): - settings.DICTIONARY_CONFIG[connection.tenant.schema_name] = _get_all_dictionary() + settings.DICTIONARY_CONFIG[ + connection.tenant.schema_name + ] = _get_all_dictionary() else: settings.DICTIONARY_CONFIG = _get_all_dictionary() @@ -104,9 +123,12 @@ def refresh_system_config(): """ if is_tenants_mode(): from django_tenants.utils import tenant_context, get_tenant_model + for tenant in get_tenant_model().objects.filter(): with tenant_context(tenant): - settings.SYSTEM_CONFIG[connection.tenant.schema_name] = _get_all_system_config() + settings.SYSTEM_CONFIG[ + connection.tenant.schema_name + ] = _get_all_system_config() else: settings.SYSTEM_CONFIG = _get_all_system_config() @@ -121,7 +143,9 @@ def get_dictionary_config(schema_name=None): :return: """ if is_tenants_mode(): - dictionary_config = settings.DICTIONARY_CONFIG[schema_name or connection.tenant.schema_name] + dictionary_config = settings.DICTIONARY_CONFIG[ + schema_name or connection.tenant.schema_name + ] else: dictionary_config = settings.DICTIONARY_CONFIG return dictionary_config or {} @@ -165,7 +189,9 @@ def get_system_config(schema_name=None): :return: """ if is_tenants_mode(): - dictionary_config = settings.SYSTEM_CONFIG[schema_name or connection.tenant.schema_name] + dictionary_config = settings.SYSTEM_CONFIG[ + schema_name or connection.tenant.schema_name + ] else: dictionary_config = settings.SYSTEM_CONFIG return dictionary_config or {} diff --git a/backend/dev/_venv.py b/backend/dev/_venv.py new file mode 100644 index 0000000..092bebe --- /dev/null +++ b/backend/dev/_venv.py @@ -0,0 +1,19 @@ +import os +import sys +from pathlib import Path + +# #################### start ####################### +# AREPL for python调试,导入项目依赖 (可禁用) +BASE_DIR = Path(__file__).parent.parent +VENV_DIR = Path.joinpath(BASE_DIR, "__pypackages__", "3.8", "lib") # PDM +# print(f"{BASE_DIR=}") +# 确认BASE_DIR无误后添加如下路径至系统路径 +for dir in [str(BASE_DIR), str(VENV_DIR)]: + if dir not in sys.path: + sys.path.insert(1, dir) +# #################### end ######################### + +import django + +os.environ.setdefault("DJANGO_SETTINGS_MODULE", "application.settings") +django.setup() diff --git a/backend/dev/init_data_export.py b/backend/dev/init_data_export.py new file mode 100644 index 0000000..76ed0da --- /dev/null +++ b/backend/dev/init_data_export.py @@ -0,0 +1,118 @@ +# 初始化 +import json +from _venv import * +from django.core import serializers + + +from dvadmin.system.models import ( + Dept, + Button, + Menu, + MenuButton, + Role, + Users, + Dictionary, +) + + +def export_data(): + db_dept_data = ( + Dept.objects.all().values("id", "name", "sort", "parent").order_by("id") + ) + for dept in db_dept_data: + dept["parent_id"] = dept.pop("parent") + db_button_data = Button.objects.all().values("id", "name", "value").order_by("id") + db_menu_data = ( + Menu.objects.all() + .values( + "id", + "name", + "sort", + "web_path", + "icon", + "is_catalog", + "visible", + "parent", + "component", + "component_name", + ) + .order_by("id") + ) + for menu in db_menu_data: + menu["parent_id"] = menu.pop("parent") + db_menu_button_data = ( + MenuButton.objects.all() + .values("id", "menu", "name", "value", "api", "method") + .order_by("id") + ) + for menu in db_menu_button_data: + menu["menu_id"] = menu.pop("menu") + db_dictionary_data = ( + Dictionary.objects.all() + .values("id", "label", "value", "status", "sort") + .order_by("id") + ) + db_staff_data = ( + Users.objects.all() + .values( + "id", + "password", + "is_superuser", + "is_staff", + "is_active", + "username", + "name", + "email", + "mobile", + "dept", + ) + .order_by("id") + ) + db_role_data = ( + Role.objects.all() + .values("id", "name", "key", "sort", "status", "admin", "data_range") + .order_by("id") + ) + + data_dict = { + "dept_data": db_dept_data, + "button_data": db_button_data, + "menu_data": db_menu_data, + "menu_button_data": db_menu_button_data, + "dictionary_data": db_dictionary_data, + } + + with open("../dvadmin/system/util/init_data.py", "w", encoding="utf8") as f: + for k, item in data_dict.items(): + f.write(f"{k} = [\n") + for obj in item: + f.write("\t") + f.write(str(obj)) + f.write(",\n") + f.write("]\n\n") + + f.write(f"role_data = [\n") + json_data = json.loads(serializers.serialize("json", Role.objects.all())) + for index, obj in enumerate(db_role_data): + obj["dept"] = json_data[index]["fields"]["dept"] + obj["menu"] = json_data[index]["fields"]["menu"] + obj["permission"] = json_data[index]["fields"]["permission"] + f.write("\t") + f.write(str(obj)) + f.write(",\n") + f.write("]\n\n") + + f.write(f"staff_data = [\n") + json_data = json.loads(serializers.serialize("json", Users.objects.all())) + for index, obj in enumerate(db_staff_data): + obj["dept_id"] = obj.pop("dept") + obj["role"] = json_data[index]["fields"]["role"] + f.write("\t") + f.write(str(obj)) + f.write(",\n") + f.write("]\n\n") + + +if __name__ == "__main__": + # 生成初始化data + export_data() # 调试用, 可先禁用settings.INSTALLED_APPS中的自定义app diff --git a/backend/dev/list2tree.py b/backend/dev/list2tree.py new file mode 100644 index 0000000..cc9df11 --- /dev/null +++ b/backend/dev/list2tree.py @@ -0,0 +1,24 @@ +import _venv +from init_data import * +from dvadmin.system.models import * + + +def list2tree(data_list, parent_id=None): + result = [] + for item in data_list: + data_format = {} + if item["parent_id"] == parent_id: + bak = item.copy() + del bak["parent_id"] + item_id = bak.pop("id") + data_format["id"] = item_id + data_format["data"] = bak + result.append(data_format) + childs = [obj for obj in data_list if obj["parent_id"] == item_id] + children = list2tree(childs, item_id) + if childs: + data_format["children"] = children + return result + + +print(list2tree(system_config_data)) diff --git a/backend/dvadmin/system/init_data.py b/backend/dvadmin/system/init_data.py index e3e6ff4..cf8af83 100644 --- a/backend/dvadmin/system/init_data.py +++ b/backend/dvadmin/system/init_data.py @@ -165,384 +165,464 @@ button_data = [ ] menu_data = [ - { - "id": 1, - "description": "", - "modifier": "1", - "dept_belong_id": "", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "icon": "navicon", - "name": "菜单管理", - "sort": 1, - "is_link": 0, - "web_path": "/menu", - "component": "system/menu", - "component_name": "menu", - "status": 1, - "cache": 0, - "visible": 1, - "creator_id": 1, - "parent_id": 2, - "is_catalog": 0, - }, { "id": 2, - "description": "", - "modifier": "1", - "dept_belong_id": 1, - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "icon": "cog", - "name": "系统管理", - "sort": 1, - "is_link": 0, - "web_path": "", - "component": "", - "component_name": "", - "status": 1, - "cache": 0, - "visible": 1, - "creator_id": 1, - "parent_id": None, - "is_catalog": 1, - }, - { - "id": 3, - "description": "", - "modifier": "1", - "dept_belong_id": "", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "icon": "users", - "name": "用户管理", - "sort": 6, - "is_link": 0, - "web_path": "/user", - "component": "system/user/index", - "component_name": "user", - "status": 1, - "cache": 0, - "visible": 1, - "creator_id": 1, - "parent_id": 2, - "is_catalog": 0, - }, - { - "id": 4, - "description": "", - "modifier": "1", - "dept_belong_id": "", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "icon": "address-book", - "name": "角色管理", - "sort": 4, - "is_link": 0, - "web_path": "/role", - "component": "system/role/index", - "component_name": "role", - "status": 1, - "cache": 0, - "visible": 1, - "creator_id": 1, - "parent_id": 2, - "is_catalog": 0, - }, - { - "id": 5, - "description": "", - "modifier": "1", - "dept_belong_id": 1, - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "icon": "bank", - "name": "部门管理", - "sort": 3, - "is_link": 0, - "web_path": "/dept", - "component": "system/dept/index", - "component_name": "dept", - "status": 1, - "cache": 0, - "visible": 1, - "creator_id": 1, - "parent_id": 2, - "is_catalog": 0, - }, - { - "id": 7, - "description": "", - "modifier": "1", - "dept_belong_id": "", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "icon": "dot-circle-o", - "name": "菜单按钮", - "sort": 2, - "is_link": 0, - "web_path": "/menuButton", - "component": "system/menuButton/index", - "component_name": "menuButton", - "status": 1, - "cache": 0, - "visible": 0, - "creator_id": 1, - "parent_id": 2, - "is_catalog": 0, - }, - { - "id": 8, - "description": "", - "modifier": "1", - "dept_belong_id": "", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "icon": "bullseye", - "name": "按钮管理", - "sort": 2, - "is_link": 0, - "web_path": "/button", - "component": "system/button/index", - "component_name": "button", - "status": 1, - "cache": 0, - "visible": 0, - "creator_id": 1, - "parent_id": 2, - "is_catalog": 0, - }, - { - "id": 9, - "description": "", - "modifier": "1", - "dept_belong_id": "", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "icon": "compass", - "name": "接口白名单", - "sort": 7, - "is_link": 0, - "web_path": "/apiWhiteList", - "component": "system/whiteList/index", - "component_name": "whiteList", - "status": 1, - "cache": 0, - "visible": 1, - "creator_id": 1, - "parent_id": 2, - "is_catalog": 0, - }, - { - "id": 10, - "description": "", - "modifier": "1", - "dept_belong_id": "", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "icon": "book", - "name": "字典管理", - "sort": 1, - "is_link": 0, - "web_path": "/dictionary", - "component": "system/dictionary/index", - "component_name": "dictionary", - "status": 1, - "cache": 0, - "visible": 1, - "creator_id": 1, - "parent_id": 17, - "is_catalog": 0, - }, - { - "id": 11, - "description": "", - "modifier": "1", - "dept_belong_id": "", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "icon": "map", - "name": "地区管理", - "sort": 2, - "is_link": 0, - "web_path": "/areas", - "component": "system/areas/index", - "component_name": "areas", - "status": 1, - "cache": 0, - "visible": 1, - "creator_id": 1, - "parent_id": 17, - "is_catalog": 0, - }, - { - "id": 13, - "description": "", - "modifier": "1", - "dept_belong_id": "", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "icon": "file-text-o", - "name": "附件管理", - "sort": 3, - "is_link": 0, - "web_path": "/file", - "component": "system/fileList/index", - "component_name": "file", - "status": 1, - "cache": 0, - "visible": 1, - "creator_id": 1, - "parent_id": 17, - "is_catalog": 0, + "data": { + "description": "", + "modifier": "1", + "dept_belong_id": 1, + "update_datetime": datetime.datetime(2022, 5, 18, 10, 55, 42, 720749), + "create_datetime": datetime.datetime(2022, 5, 18, 10, 55, 42, 720749), + "icon": "cog", + "name": "系统管理", + "sort": 1, + "is_link": 0, + "web_path": "", + "component": "", + "component_name": "", + "status": 1, + "cache": 0, + "visible": 1, + "creator_id": 1, + "is_catalog": 1, + }, + "children": [ + { + "id": 1, + "data": { + "description": "", + "modifier": "1", + "dept_belong_id": "", + "update_datetime": datetime.datetime( + 2022, 5, 18, 10, 55, 42, 720749 + ), + "create_datetime": datetime.datetime( + 2022, 5, 18, 10, 55, 42, 720749 + ), + "icon": "navicon", + "name": "菜单管理", + "sort": 1, + "is_link": 0, + "web_path": "/menu", + "component": "system/menu", + "component_name": "menu", + "status": 1, + "cache": 0, + "visible": 1, + "creator_id": 1, + "is_catalog": 0, + }, + }, + { + "id": 3, + "data": { + "description": "", + "modifier": "1", + "dept_belong_id": "", + "update_datetime": datetime.datetime( + 2022, 5, 18, 10, 55, 42, 720749 + ), + "create_datetime": datetime.datetime( + 2022, 5, 18, 10, 55, 42, 720749 + ), + "icon": "users", + "name": "用户管理", + "sort": 6, + "is_link": 0, + "web_path": "/user", + "component": "system/user/index", + "component_name": "user", + "status": 1, + "cache": 0, + "visible": 1, + "creator_id": 1, + "is_catalog": 0, + }, + }, + { + "id": 4, + "data": { + "description": "", + "modifier": "1", + "dept_belong_id": "", + "update_datetime": datetime.datetime( + 2022, 5, 18, 10, 55, 42, 720749 + ), + "create_datetime": datetime.datetime( + 2022, 5, 18, 10, 55, 42, 720749 + ), + "icon": "address-book", + "name": "角色管理", + "sort": 4, + "is_link": 0, + "web_path": "/role", + "component": "system/role/index", + "component_name": "role", + "status": 1, + "cache": 0, + "visible": 1, + "creator_id": 1, + "is_catalog": 0, + }, + }, + { + "id": 5, + "data": { + "description": "", + "modifier": "1", + "dept_belong_id": 1, + "update_datetime": datetime.datetime( + 2022, 5, 18, 10, 55, 42, 720749 + ), + "create_datetime": datetime.datetime( + 2022, 5, 18, 10, 55, 42, 720749 + ), + "icon": "bank", + "name": "部门管理", + "sort": 3, + "is_link": 0, + "web_path": "/dept", + "component": "system/dept/index", + "component_name": "dept", + "status": 1, + "cache": 0, + "visible": 1, + "creator_id": 1, + "is_catalog": 0, + }, + }, + { + "id": 7, + "data": { + "description": "", + "modifier": "1", + "dept_belong_id": "", + "update_datetime": datetime.datetime( + 2022, 5, 18, 10, 55, 42, 720749 + ), + "create_datetime": datetime.datetime( + 2022, 5, 18, 10, 55, 42, 720749 + ), + "icon": "dot-circle-o", + "name": "菜单按钮", + "sort": 2, + "is_link": 0, + "web_path": "/menuButton", + "component": "system/menuButton/index", + "component_name": "menuButton", + "status": 1, + "cache": 0, + "visible": 0, + "creator_id": 1, + "is_catalog": 0, + }, + }, + { + "id": 8, + "data": { + "description": "", + "modifier": "1", + "dept_belong_id": "", + "update_datetime": datetime.datetime( + 2022, 5, 18, 10, 55, 42, 720749 + ), + "create_datetime": datetime.datetime( + 2022, 5, 18, 10, 55, 42, 720749 + ), + "icon": "bullseye", + "name": "按钮管理", + "sort": 2, + "is_link": 0, + "web_path": "/button", + "component": "system/button/index", + "component_name": "button", + "status": 1, + "cache": 0, + "visible": 0, + "creator_id": 1, + "is_catalog": 0, + }, + }, + { + "id": 9, + "data": { + "description": "", + "modifier": "1", + "dept_belong_id": "", + "update_datetime": datetime.datetime( + 2022, 5, 18, 10, 55, 42, 720749 + ), + "create_datetime": datetime.datetime( + 2022, 5, 18, 10, 55, 42, 720749 + ), + "icon": "compass", + "name": "接口白名单", + "sort": 7, + "is_link": 0, + "web_path": "/apiWhiteList", + "component": "system/whiteList/index", + "component_name": "whiteList", + "status": 1, + "cache": 0, + "visible": 1, + "creator_id": 1, + "is_catalog": 0, + }, + }, + ], }, { "id": 15, - "description": "", - "modifier": "1", - "dept_belong_id": 1, - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "icon": "book", - "name": "日志管理", - "sort": 3, - "is_link": 0, - "web_path": "", - "component": "", - "component_name": "", - "status": 1, - "cache": 0, - "visible": 1, - "creator_id": 1, - "parent_id": None, - "is_catalog": 1, - }, - { - "id": 16, - "description": "", - "modifier": "1", - "dept_belong_id": "", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "icon": "file-code-o", - "name": "操作日志", - "sort": 2, - "is_link": 0, - "web_path": "/operationLog", - "component": "system/log/operationLog/index", - "component_name": "operationLog", - "status": 1, - "cache": 0, - "visible": 1, - "creator_id": 1, - "parent_id": 15, - "is_catalog": 0, + "data": { + "description": "", + "modifier": "1", + "dept_belong_id": 1, + "update_datetime": datetime.datetime(2022, 5, 18, 10, 55, 42, 720749), + "create_datetime": datetime.datetime(2022, 5, 18, 10, 55, 42, 720749), + "icon": "book", + "name": "日志管理", + "sort": 3, + "is_link": 0, + "web_path": "", + "component": "", + "component_name": "", + "status": 1, + "cache": 0, + "visible": 1, + "creator_id": 1, + "is_catalog": 1, + }, + "children": [ + { + "id": 16, + "data": { + "description": "", + "modifier": "1", + "dept_belong_id": "", + "update_datetime": datetime.datetime( + 2022, 5, 18, 10, 55, 42, 720749 + ), + "create_datetime": datetime.datetime( + 2022, 5, 18, 10, 55, 42, 720749 + ), + "icon": "file-code-o", + "name": "操作日志", + "sort": 2, + "is_link": 0, + "web_path": "/operationLog", + "component": "system/log/operationLog/index", + "component_name": "operationLog", + "status": 1, + "cache": 0, + "visible": 1, + "creator_id": 1, + "is_catalog": 0, + }, + }, + { + "id": 19, + "data": { + "description": "", + "modifier": "1", + "dept_belong_id": 1, + "update_datetime": datetime.datetime( + 2022, 5, 18, 10, 55, 42, 720749 + ), + "create_datetime": datetime.datetime( + 2022, 5, 18, 10, 55, 42, 720749 + ), + "icon": "bug", + "name": "前端错误日志", + "sort": 4, + "is_link": 0, + "web_path": "/frontendLog", + "component": "system/log/frontendLog/index", + "component_name": "frontendLog", + "status": 1, + "cache": 0, + "visible": 1, + "creator_id": 1, + "is_catalog": 0, + }, + }, + { + "id": 20, + "data": { + "description": "", + "modifier": "1", + "dept_belong_id": 1, + "update_datetime": datetime.datetime( + 2022, 5, 18, 10, 55, 42, 720749 + ), + "create_datetime": datetime.datetime( + 2022, 5, 18, 10, 55, 42, 720749 + ), + "icon": "file-text", + "name": "登录日志", + "sort": 1, + "is_link": 0, + "web_path": "/loginLog", + "component": "system/log/loginLog/index", + "component_name": "loginLog", + "status": 1, + "cache": 0, + "visible": 1, + "creator_id": 1, + "is_catalog": 0, + }, + }, + ], }, { "id": 17, - "description": "", - "modifier": "1", - "dept_belong_id": 1, - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "icon": "cogs", - "name": "常规配置", - "sort": 2, - "is_link": 0, - "web_path": "", - "component": "", - "component_name": "", - "status": 1, - "cache": 0, - "visible": 1, - "creator_id": 1, - "parent_id": None, - "is_catalog": 1, + "data": { + "description": "", + "modifier": "1", + "dept_belong_id": 1, + "update_datetime": datetime.datetime(2022, 5, 18, 10, 55, 42, 720749), + "create_datetime": datetime.datetime(2022, 5, 18, 10, 55, 42, 720749), + "icon": "cogs", + "name": "常规配置", + "sort": 2, + "is_link": 0, + "web_path": "", + "component": "", + "component_name": "", + "status": 1, + "cache": 0, + "visible": 1, + "creator_id": 1, + "is_catalog": 1, + }, + "children": [ + { + "id": 10, + "data": { + "description": "", + "modifier": "1", + "dept_belong_id": "", + "update_datetime": datetime.datetime( + 2022, 5, 18, 10, 55, 42, 720749 + ), + "create_datetime": datetime.datetime( + 2022, 5, 18, 10, 55, 42, 720749 + ), + "icon": "book", + "name": "字典管理", + "sort": 1, + "is_link": 0, + "web_path": "/dictionary", + "component": "system/dictionary/index", + "component_name": "dictionary", + "status": 1, + "cache": 0, + "visible": 1, + "creator_id": 1, + "is_catalog": 0, + }, + }, + { + "id": 11, + "data": { + "description": "", + "modifier": "1", + "dept_belong_id": "", + "update_datetime": datetime.datetime( + 2022, 5, 18, 10, 55, 42, 720749 + ), + "create_datetime": datetime.datetime( + 2022, 5, 18, 10, 55, 42, 720749 + ), + "icon": "map", + "name": "地区管理", + "sort": 2, + "is_link": 0, + "web_path": "/areas", + "component": "system/areas/index", + "component_name": "areas", + "status": 1, + "cache": 0, + "visible": 1, + "creator_id": 1, + "is_catalog": 0, + }, + }, + { + "id": 13, + "data": { + "description": "", + "modifier": "1", + "dept_belong_id": "", + "update_datetime": datetime.datetime( + 2022, 5, 18, 10, 55, 42, 720749 + ), + "create_datetime": datetime.datetime( + 2022, 5, 18, 10, 55, 42, 720749 + ), + "icon": "file-text-o", + "name": "附件管理", + "sort": 3, + "is_link": 0, + "web_path": "/file", + "component": "system/fileList/index", + "component_name": "file", + "status": 1, + "cache": 0, + "visible": 1, + "creator_id": 1, + "is_catalog": 0, + }, + }, + { + "id": 26, + "data": { + "description": "", + "modifier": "1", + "dept_belong_id": "1", + "update_datetime": datetime.datetime( + 2022, 5, 18, 10, 55, 42, 720749 + ), + "create_datetime": datetime.datetime( + 2022, 5, 18, 10, 55, 42, 720749 + ), + "icon": "desktop", + "name": "系统配置", + "sort": 0, + "is_link": 0, + "is_catalog": 0, + "web_path": "/config", + "component": "system/config/index", + "component_name": "config", + "status": 1, + "cache": 0, + "visible": 1, + "creator_id": 1, + }, + }, + ], }, { "id": 18, - "description": "", - "modifier": "1", - "dept_belong_id": 1, - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "icon": "external-link", - "name": "DVAdmin官网", - "sort": 4, - "is_link": 1, - "web_path": "https://django-vue-admin.com", - "component": "", - "component_name": "", - "status": 1, - "cache": 0, - "visible": 1, - "creator_id": 1, - "parent_id": None, - "is_catalog": 0, + "data": { + "description": "", + "modifier": "1", + "dept_belong_id": 1, + "update_datetime": datetime.datetime(2022, 5, 18, 10, 55, 42, 720749), + "create_datetime": datetime.datetime(2022, 5, 18, 10, 55, 42, 720749), + "icon": "external-link", + "name": "DVAdmin官网", + "sort": 4, + "is_link": 1, + "web_path": "https://django-vue-admin.com", + "component": "", + "component_name": "", + "status": 1, + "cache": 0, + "visible": 1, + "creator_id": 1, + "is_catalog": 0, + }, }, - { - "id": 19, - "description": "", - "modifier": "1", - "dept_belong_id": 1, - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "icon": "bug", - "name": "前端错误日志", - "sort": 4, - "is_link": 0, - "web_path": "/frontendLog", - "component": "system/log/frontendLog/index", - "component_name": "frontendLog", - "status": 1, - "cache": 0, - "visible": 1, - "creator_id": 1, - "parent_id": 15, - "is_catalog": 0, - }, - { - "id": 20, - "description": "", - "modifier": "1", - "dept_belong_id": 1, - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "icon": "file-text", - "name": "登录日志", - "sort": 1, - "is_link": 0, - "web_path": "/loginLog", - "component": "system/log/loginLog/index", - "component_name": "loginLog", - "status": 1, - "cache": 0, - "visible": 1, - "creator_id": 1, - "parent_id": 15, - "is_catalog": 0, - }, - { - "id": 26, - "description": "", - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "icon": "desktop", - "name": "系统配置", - "sort": 0, - "is_link": 0, - "is_catalog": 0, - "web_path": "/config", - "component": "system/config/index", - "component_name": "config", - "status": 1, - "cache": 0, - "visible": 1, - "creator_id": 1, - "parent_id": 17 - } ] menu_button_data = [ @@ -1356,7 +1436,7 @@ menu_button_data = [ "api": "/api/system/system_config/", "method": 0, "creator_id": 1, - "menu_id": 26 + "menu_id": 26, }, { "id": 72, @@ -1370,7 +1450,7 @@ menu_button_data = [ "api": "/api/system/system_config/{id}/", "method": 0, "creator_id": 1, - "menu_id": 26 + "menu_id": 26, }, { "id": 73, @@ -1384,7 +1464,7 @@ menu_button_data = [ "api": "/api/system/system_config/{id}/", "method": 3, "creator_id": 1, - "menu_id": 26 + "menu_id": 26, }, { "id": 74, @@ -1398,7 +1478,7 @@ menu_button_data = [ "api": "/api/system/system_config/{id}/", "method": 2, "creator_id": 1, - "menu_id": 26 + "menu_id": 26, }, { "id": 75, @@ -1412,8 +1492,8 @@ menu_button_data = [ "api": "/api/system/system_config/", "method": 1, "creator_id": 1, - "menu_id": 26 - } + "menu_id": 26, + }, ] role_data = [ @@ -1430,7 +1510,7 @@ role_data = [ "status": 1, "admin": 1, "data_range": 3, - "menu": [ele.get("id") for ele in menu_data], + "menu": [ele for ele in range(1, 27)], "permission": [ele.get("id") for ele in menu_button_data], "remark": None, "creator_id": 1, @@ -1490,633 +1570,799 @@ staff_data = [ dictionary_data = [ { "id": 1, - "description": "", - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "label": "启用/禁用-布尔值", - "value": "button_status_bool", - "status": 1, - "sort": 1, - "remark": None, - "creator_id": 1, - "parent_id": None, - "is_value": 0, - "type": 0, - }, - { - "id": 2, - "description": "", - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "label": "启用", - "value": "true", - "status": 1, - "sort": 1, - "remark": None, - "creator_id": 1, - "parent_id": 1, - "is_value": 1, - "type": 6, + "data": { + "description": "", + "modifier": "1", + "dept_belong_id": "1", + "update_datetime": datetime.datetime(2022, 5, 18, 11, 21, 9, 288771), + "create_datetime": datetime.datetime(2022, 5, 18, 11, 21, 9, 288771), + "label": "启用/禁用-布尔值", + "value": "button_status_bool", + "status": 1, + "sort": 1, + "remark": None, + "creator_id": 1, + "is_value": 0, + "type": 0, + }, + "children": [ + { + "id": 2, + "data": { + "description": "", + "modifier": "1", + "dept_belong_id": "1", + "update_datetime": datetime.datetime( + 2022, 5, 18, 11, 21, 9, 288771 + ), + "create_datetime": datetime.datetime( + 2022, 5, 18, 11, 21, 9, 288771 + ), + "label": "启用", + "value": "true", + "status": 1, + "sort": 1, + "remark": None, + "creator_id": 1, + "is_value": 1, + "type": 6, + }, + }, + { + "id": 6, + "data": { + "description": "", + "modifier": "1", + "dept_belong_id": "1", + "update_datetime": datetime.datetime( + 2022, 5, 18, 11, 21, 9, 288771 + ), + "create_datetime": datetime.datetime( + 2022, 5, 18, 11, 21, 9, 288771 + ), + "label": "禁用", + "value": "false", + "status": 1, + "sort": 2, + "remark": None, + "creator_id": 1, + "is_value": 1, + "type": 6, + }, + }, + ], }, { "id": 5, - "description": "", - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "label": "是/否-布尔值", - "value": "button_whether_bool", - "status": 1, - "sort": 3, - "remark": None, - "creator_id": 1, - "parent_id": None, - "is_value": 0, - "type": 0, - }, - { - "id": 6, - "description": "", - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "label": "禁用", - "value": "false", - "status": 1, - "sort": 2, - "remark": None, - "creator_id": 1, - "parent_id": 1, - "is_value": 1, - "type": 6, + "data": { + "description": "", + "modifier": "1", + "dept_belong_id": "1", + "update_datetime": datetime.datetime(2022, 5, 18, 11, 21, 9, 288771), + "create_datetime": datetime.datetime(2022, 5, 18, 11, 21, 9, 288771), + "label": "是/否-布尔值", + "value": "button_whether_bool", + "status": 1, + "sort": 3, + "remark": None, + "creator_id": 1, + "is_value": 0, + "type": 0, + }, + "children": [ + { + "id": 11, + "data": { + "description": None, + "modifier": "1", + "dept_belong_id": "1", + "update_datetime": datetime.datetime( + 2022, 5, 18, 11, 21, 9, 288771 + ), + "create_datetime": datetime.datetime( + 2022, 5, 18, 11, 21, 9, 288771 + ), + "label": "是", + "value": "true", + "status": 1, + "sort": 1, + "remark": None, + "creator_id": 1, + "is_value": 1, + "type": 6, + }, + }, + { + "id": 12, + "data": { + "description": None, + "modifier": "1", + "dept_belong_id": "1", + "update_datetime": datetime.datetime( + 2022, 5, 18, 11, 21, 9, 288771 + ), + "create_datetime": datetime.datetime( + 2022, 5, 18, 11, 21, 9, 288771 + ), + "label": "否", + "value": "false", + "status": 1, + "sort": 2, + "remark": None, + "creator_id": 1, + "is_value": 1, + "type": 6, + }, + }, + ], }, { "id": 7, - "description": "", - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "label": "启用/禁用-数字值", - "value": "button_status_number", - "status": 1, - "sort": 2, - "remark": None, - "creator_id": 1, - "parent_id": None, - "is_value": 0, - "type": 0, - }, - { - "id": 8, - "description": None, - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "label": "启用", - "value": "1", - "status": 1, - "sort": 1, - "remark": None, - "creator_id": 1, - "parent_id": 7, - "is_value": 1, - "type": 1, - }, - { - "id": 9, - "description": "", - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "label": "禁用", - "value": "0", - "status": 1, - "sort": 2, - "remark": None, - "creator_id": 1, - "parent_id": 7, - "is_value": 1, - "type": 1, + "data": { + "description": "", + "modifier": "1", + "dept_belong_id": "1", + "update_datetime": datetime.datetime(2022, 5, 18, 11, 21, 9, 288771), + "create_datetime": datetime.datetime(2022, 5, 18, 11, 21, 9, 288771), + "label": "启用/禁用-数字值", + "value": "button_status_number", + "status": 1, + "sort": 2, + "remark": None, + "creator_id": 1, + "is_value": 0, + "type": 0, + }, + "children": [ + { + "id": 8, + "data": { + "description": None, + "modifier": "1", + "dept_belong_id": "1", + "update_datetime": datetime.datetime( + 2022, 5, 18, 11, 21, 9, 288771 + ), + "create_datetime": datetime.datetime( + 2022, 5, 18, 11, 21, 9, 288771 + ), + "label": "启用", + "value": "1", + "status": 1, + "sort": 1, + "remark": None, + "creator_id": 1, + "is_value": 1, + "type": 1, + }, + }, + { + "id": 9, + "data": { + "description": "", + "modifier": "1", + "dept_belong_id": "1", + "update_datetime": datetime.datetime( + 2022, 5, 18, 11, 21, 9, 288771 + ), + "create_datetime": datetime.datetime( + 2022, 5, 18, 11, 21, 9, 288771 + ), + "label": "禁用", + "value": "0", + "status": 1, + "sort": 2, + "remark": None, + "creator_id": 1, + "is_value": 1, + "type": 1, + }, + }, + ], }, { "id": 10, - "description": None, - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "label": "是/否-数字值", - "value": "button_whether_number", - "status": 1, - "sort": 4, - "remark": None, - "creator_id": 1, - "parent_id": None, - "is_value": 0, - "type": 0, - }, - { - "id": 11, - "description": None, - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "label": "是", - "value": "true", - "status": 1, - "sort": 1, - "remark": None, - "creator_id": 1, - "parent_id": 5, - "is_value": 1, - "type": 6, - }, - { - "id": 12, - "description": None, - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "label": "否", - "value": "false", - "status": 1, - "sort": 2, - "remark": None, - "creator_id": 1, - "parent_id": 5, - "is_value": 1, - "type": 6, - }, - { - "id": 13, - "description": None, - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "label": "是", - "value": "1", - "status": 1, - "sort": 1, - "remark": None, - "creator_id": 1, - "parent_id": 10, - "is_value": 1, - "type": 1, - }, - { - "id": 14, - "description": None, - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "label": "否", - "value": "2", - "status": 1, - "sort": 2, - "remark": None, - "creator_id": 1, - "parent_id": 10, - "is_value": 1, - "type": 1, + "data": { + "description": None, + "modifier": "1", + "dept_belong_id": "1", + "update_datetime": datetime.datetime(2022, 5, 18, 11, 21, 9, 288771), + "create_datetime": datetime.datetime(2022, 5, 18, 11, 21, 9, 288771), + "label": "是/否-数字值", + "value": "button_whether_number", + "status": 1, + "sort": 4, + "remark": None, + "creator_id": 1, + "is_value": 0, + "type": 0, + }, + "children": [ + { + "id": 13, + "data": { + "description": None, + "modifier": "1", + "dept_belong_id": "1", + "update_datetime": datetime.datetime( + 2022, 5, 18, 11, 21, 9, 288771 + ), + "create_datetime": datetime.datetime( + 2022, 5, 18, 11, 21, 9, 288771 + ), + "label": "是", + "value": "1", + "status": 1, + "sort": 1, + "remark": None, + "creator_id": 1, + "is_value": 1, + "type": 1, + }, + }, + { + "id": 14, + "data": { + "description": None, + "modifier": "1", + "dept_belong_id": "1", + "update_datetime": datetime.datetime( + 2022, 5, 18, 11, 21, 9, 288771 + ), + "create_datetime": datetime.datetime( + 2022, 5, 18, 11, 21, 9, 288771 + ), + "label": "否", + "value": "2", + "status": 1, + "sort": 2, + "remark": None, + "creator_id": 1, + "is_value": 1, + "type": 1, + }, + }, + ], }, { "id": 15, - "description": None, - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "label": "用户类型", - "value": "user_type", - "status": 1, - "sort": 5, - "remark": None, - "creator_id": 1, - "parent_id": None, - "is_value": 0, - "type": 0, - }, - { - "id": 16, - "description": None, - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "label": "后台用户", - "value": "0", - "status": 1, - "sort": 1, - "remark": None, - "creator_id": 1, - "parent_id": 15, - "is_value": 1, - "type": 1, - }, - { - "id": 17, - "description": None, - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "label": "前台用户", - "value": "1", - "status": 1, - "sort": 2, - "remark": None, - "creator_id": 1, - "parent_id": 15, - "is_value": 1, - "type": 1, + "data": { + "description": None, + "modifier": "1", + "dept_belong_id": "1", + "update_datetime": datetime.datetime(2022, 5, 18, 11, 21, 9, 288771), + "create_datetime": datetime.datetime(2022, 5, 18, 11, 21, 9, 288771), + "label": "用户类型", + "value": "user_type", + "status": 1, + "sort": 5, + "remark": None, + "creator_id": 1, + "is_value": 0, + "type": 0, + }, + "children": [ + { + "id": 16, + "data": { + "description": None, + "modifier": "1", + "dept_belong_id": "1", + "update_datetime": datetime.datetime( + 2022, 5, 18, 11, 21, 9, 288771 + ), + "create_datetime": datetime.datetime( + 2022, 5, 18, 11, 21, 9, 288771 + ), + "label": "后台用户", + "value": "0", + "status": 1, + "sort": 1, + "remark": None, + "creator_id": 1, + "is_value": 1, + "type": 1, + }, + }, + { + "id": 17, + "data": { + "description": None, + "modifier": "1", + "dept_belong_id": "1", + "update_datetime": datetime.datetime( + 2022, 5, 18, 11, 21, 9, 288771 + ), + "create_datetime": datetime.datetime( + 2022, 5, 18, 11, 21, 9, 288771 + ), + "label": "前台用户", + "value": "1", + "status": 1, + "sort": 2, + "remark": None, + "creator_id": 1, + "is_value": 1, + "type": 1, + }, + }, + ], }, { "id": 18, - "description": None, - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "label": "性别", - "value": "gender", - "status": 1, - "sort": 6, - "remark": None, - "creator_id": 1, - "parent_id": None, - "is_value": 0, - "type": 0, - }, - { - "id": 19, - "description": "", - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "label": "未知", - "value": "0", - "status": 1, - "sort": 0, - "remark": None, - "creator_id": 1, - "parent_id": 18, - "is_value": 1, - "type": 1, - }, - { - "id": 20, - "description": None, - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "label": "男", - "value": "1", - "status": 1, - "sort": 1, - "remark": None, - "creator_id": 1, - "parent_id": 18, - "is_value": 1, - "type": 1, - }, - { - "id": 21, - "description": "", - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "label": "女", - "value": "2", - "status": 1, - "sort": 2, - "remark": None, - "creator_id": 1, - "parent_id": 18, - "is_value": 1, - "type": 1, + "data": { + "description": None, + "modifier": "1", + "dept_belong_id": "1", + "update_datetime": datetime.datetime(2022, 5, 18, 11, 21, 9, 288771), + "create_datetime": datetime.datetime(2022, 5, 18, 11, 21, 9, 288771), + "label": "性别", + "value": "gender", + "status": 1, + "sort": 6, + "remark": None, + "creator_id": 1, + "is_value": 0, + "type": 0, + }, + "children": [ + { + "id": 19, + "data": { + "description": "", + "modifier": "1", + "dept_belong_id": "1", + "update_datetime": datetime.datetime( + 2022, 5, 18, 11, 21, 9, 288771 + ), + "create_datetime": datetime.datetime( + 2022, 5, 18, 11, 21, 9, 288771 + ), + "label": "未知", + "value": "0", + "status": 1, + "sort": 0, + "remark": None, + "creator_id": 1, + "is_value": 1, + "type": 1, + }, + }, + { + "id": 20, + "data": { + "description": None, + "modifier": "1", + "dept_belong_id": "1", + "update_datetime": datetime.datetime( + 2022, 5, 18, 11, 21, 9, 288771 + ), + "create_datetime": datetime.datetime( + 2022, 5, 18, 11, 21, 9, 288771 + ), + "label": "男", + "value": "1", + "status": 1, + "sort": 1, + "remark": None, + "creator_id": 1, + "is_value": 1, + "type": 1, + }, + }, + { + "id": 21, + "data": { + "description": "", + "modifier": "1", + "dept_belong_id": "1", + "update_datetime": datetime.datetime( + 2022, 5, 18, 11, 21, 9, 288771 + ), + "create_datetime": datetime.datetime( + 2022, 5, 18, 11, 21, 9, 288771 + ), + "label": "女", + "value": "2", + "status": 1, + "sort": 2, + "remark": None, + "creator_id": 1, + "is_value": 1, + "type": 1, + }, + }, + ], }, { "id": 49, - "description": None, - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "label": "表单类型", - "value": "config_form_type", - "status": 1, - "sort": 5, - "remark": None, - "creator_id": 1, - "parent_id": None, - "is_value": 0, - "type": 0, - "color": None + "data": { + "description": None, + "modifier": "1", + "dept_belong_id": "1", + "update_datetime": datetime.datetime(2022, 5, 18, 11, 21, 9, 288771), + "create_datetime": datetime.datetime(2022, 5, 18, 11, 21, 9, 288771), + "label": "表单类型", + "value": "config_form_type", + "status": 1, + "sort": 5, + "remark": None, + "creator_id": 1, + "is_value": 0, + "type": 0, + "color": None, + }, + "children": [ + { + "id": 50, + "data": { + "description": None, + "modifier": "1", + "dept_belong_id": "1", + "update_datetime": datetime.datetime( + 2022, 5, 18, 11, 21, 9, 288771 + ), + "create_datetime": datetime.datetime( + 2022, 5, 18, 11, 21, 9, 288771 + ), + "label": "text", + "value": "0", + "status": 1, + "sort": 0, + "remark": None, + "creator_id": 1, + "is_value": 1, + "type": 1, + "color": None, + }, + }, + { + "id": 51, + "data": { + "description": None, + "modifier": "1", + "dept_belong_id": "1", + "update_datetime": datetime.datetime( + 2022, 5, 18, 11, 21, 9, 288771 + ), + "create_datetime": datetime.datetime( + 2022, 5, 18, 11, 21, 9, 288771 + ), + "label": "datetime", + "value": "1", + "status": 1, + "sort": 1, + "remark": None, + "creator_id": 1, + "is_value": 1, + "type": 1, + "color": None, + }, + }, + { + "id": 52, + "data": { + "description": None, + "modifier": "1", + "dept_belong_id": "1", + "update_datetime": datetime.datetime( + 2022, 5, 18, 11, 21, 9, 288771 + ), + "create_datetime": datetime.datetime( + 2022, 5, 18, 11, 21, 9, 288771 + ), + "label": "date", + "value": "2", + "status": 1, + "sort": 2, + "remark": None, + "creator_id": 1, + "is_value": 1, + "type": 1, + "color": None, + }, + }, + { + "id": 53, + "data": { + "description": "", + "modifier": "1", + "dept_belong_id": "1", + "update_datetime": datetime.datetime( + 2022, 5, 18, 11, 21, 9, 288771 + ), + "create_datetime": datetime.datetime( + 2022, 5, 18, 11, 21, 9, 288771 + ), + "label": "textarea", + "value": "3", + "status": 1, + "sort": 0, + "remark": None, + "creator_id": 1, + "is_value": 1, + "type": 1, + "color": "", + }, + }, + { + "id": 54, + "data": { + "description": None, + "modifier": "1", + "dept_belong_id": "1", + "update_datetime": datetime.datetime( + 2022, 5, 18, 11, 21, 9, 288771 + ), + "create_datetime": datetime.datetime( + 2022, 5, 18, 11, 21, 9, 288771 + ), + "label": "select", + "value": "4", + "status": 1, + "sort": 4, + "remark": None, + "creator_id": 1, + "is_value": 1, + "type": 1, + "color": None, + }, + }, + { + "id": 55, + "data": { + "description": None, + "modifier": "1", + "dept_belong_id": "1", + "update_datetime": datetime.datetime( + 2022, 5, 18, 11, 21, 9, 288771 + ), + "create_datetime": datetime.datetime( + 2022, 5, 18, 11, 21, 9, 288771 + ), + "label": "checkbox", + "value": "5", + "status": 1, + "sort": 5, + "remark": None, + "creator_id": 1, + "is_value": 1, + "type": 1, + "color": None, + }, + }, + { + "id": 56, + "data": { + "description": None, + "modifier": "1", + "dept_belong_id": "1", + "update_datetime": datetime.datetime( + 2022, 5, 18, 11, 21, 9, 288771 + ), + "create_datetime": datetime.datetime( + 2022, 5, 18, 11, 21, 9, 288771 + ), + "label": "radio", + "value": "6", + "status": 1, + "sort": 6, + "remark": None, + "creator_id": 1, + "is_value": 1, + "type": 1, + "color": None, + }, + }, + { + "id": 57, + "data": { + "description": "", + "modifier": "1", + "dept_belong_id": "1", + "update_datetime": datetime.datetime( + 2022, 5, 18, 11, 21, 9, 288771 + ), + "create_datetime": datetime.datetime( + 2022, 5, 18, 11, 21, 9, 288771 + ), + "label": "图片(单张)", + "value": "7", + "status": 1, + "sort": 8, + "remark": None, + "creator_id": 1, + "is_value": 1, + "type": 1, + "color": "", + }, + }, + { + "id": 58, + "data": { + "description": "", + "modifier": "1", + "dept_belong_id": "1", + "update_datetime": datetime.datetime( + 2022, 5, 18, 11, 21, 9, 288771 + ), + "create_datetime": datetime.datetime( + 2022, 5, 18, 11, 21, 9, 288771 + ), + "label": "文件附件", + "value": "8", + "status": 1, + "sort": 7, + "remark": None, + "creator_id": 1, + "is_value": 1, + "type": 1, + "color": "", + }, + }, + { + "id": 59, + "data": { + "description": "", + "modifier": "1", + "dept_belong_id": "1", + "update_datetime": datetime.datetime( + 2022, 5, 18, 11, 21, 9, 288771 + ), + "create_datetime": datetime.datetime( + 2022, 5, 18, 11, 21, 9, 288771 + ), + "label": "switch", + "value": "9", + "status": 1, + "sort": 6, + "remark": None, + "creator_id": 1, + "is_value": 1, + "type": 1, + "color": "", + }, + }, + { + "id": 60, + "data": { + "description": "", + "modifier": "1", + "dept_belong_id": "1", + "update_datetime": datetime.datetime( + 2022, 5, 18, 11, 21, 9, 288771 + ), + "create_datetime": datetime.datetime( + 2022, 5, 18, 11, 21, 9, 288771 + ), + "label": "number", + "value": "10", + "status": 1, + "sort": 0, + "remark": None, + "creator_id": 1, + "is_value": 1, + "type": 1, + "color": "", + }, + }, + { + "id": 61, + "data": { + "description": "", + "modifier": "1", + "dept_belong_id": "1", + "update_datetime": datetime.datetime( + 2022, 5, 18, 11, 21, 9, 288771 + ), + "create_datetime": datetime.datetime( + 2022, 5, 18, 11, 21, 9, 288771 + ), + "label": "数组", + "value": "11", + "status": 1, + "sort": 11, + "remark": None, + "creator_id": 1, + "is_value": 1, + "type": 1, + "color": "", + }, + }, + { + "id": 62, + "data": { + "description": "", + "modifier": "1", + "dept_belong_id": "1", + "update_datetime": datetime.datetime( + 2022, 5, 18, 11, 21, 9, 288771 + ), + "create_datetime": datetime.datetime( + 2022, 5, 18, 11, 21, 9, 288771 + ), + "label": "图片(多张)", + "value": "12", + "status": 1, + "sort": 9, + "remark": None, + "creator_id": 1, + "is_value": 1, + "type": 1, + "color": "", + }, + }, + { + "id": 63, + "data": { + "description": "", + "modifier": "1", + "dept_belong_id": "1", + "update_datetime": datetime.datetime( + 2022, 5, 18, 11, 21, 9, 288771 + ), + "create_datetime": datetime.datetime( + 2022, 5, 18, 11, 21, 9, 288771 + ), + "label": "关联表", + "value": "13", + "status": 1, + "sort": 13, + "remark": None, + "creator_id": 1, + "is_value": 1, + "type": 1, + "color": "", + }, + }, + { + "id": 64, + "data": { + "description": "", + "modifier": "1", + "dept_belong_id": "1", + "update_datetime": datetime.datetime( + 2022, 5, 18, 11, 21, 9, 288771 + ), + "create_datetime": datetime.datetime( + 2022, 5, 18, 11, 21, 9, 288771 + ), + "label": "关联表(多选)", + "value": "14", + "status": 1, + "sort": 14, + "remark": None, + "creator_id": 1, + "is_value": 1, + "type": 1, + "color": "", + }, + }, + { + "id": 65, + "data": { + "description": "", + "modifier": "1", + "dept_belong_id": "1", + "update_datetime": datetime.datetime( + 2022, 5, 18, 11, 21, 9, 288771 + ), + "create_datetime": datetime.datetime( + 2022, 5, 18, 11, 21, 9, 288771 + ), + "label": "time", + "value": "15", + "status": 1, + "sort": 3, + "remark": None, + "creator_id": 1, + "is_value": 1, + "type": 1, + "color": "", + }, + }, + ], }, - { - "id": 50, - "description": None, - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "label": "text", - "value": "0", - "status": 1, - "sort": 0, - "remark": None, - "creator_id": 1, - "parent_id": 49, - "is_value": 1, - "type": 1, - "color": None - }, - { - "id": 51, - "description": None, - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "label": "datetime", - "value": "1", - "status": 1, - "sort": 1, - "remark": None, - "creator_id": 1, - "parent_id": 49, - "is_value": 1, - "type": 1, - "color": None - }, - { - "id": 52, - "description": None, - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "label": "date", - "value": "2", - "status": 1, - "sort": 2, - "remark": None, - "creator_id": 1, - "parent_id": 49, - "is_value": 1, - "type": 1, - "color": None - }, - { - "id": 53, - "description": "", - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "label": "textarea", - "value": "3", - "status": 1, - "sort": 0, - "remark": None, - "creator_id": 1, - "parent_id": 49, - "is_value": 1, - "type": 1, - "color": "" - }, - { - "id": 54, - "description": None, - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "label": "select", - "value": "4", - "status": 1, - "sort": 4, - "remark": None, - "creator_id": 1, - "parent_id": 49, - "is_value": 1, - "type": 1, - "color": None - }, - { - "id": 55, - "description": None, - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "label": "checkbox", - "value": "5", - "status": 1, - "sort": 5, - "remark": None, - "creator_id": 1, - "parent_id": 49, - "is_value": 1, - "type": 1, - "color": None - }, - { - "id": 56, - "description": None, - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "label": "radio", - "value": "6", - "status": 1, - "sort": 6, - "remark": None, - "creator_id": 1, - "parent_id": 49, - "is_value": 1, - "type": 1, - "color": None - }, - { - "id": 57, - "description": "", - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "label": "图片(单张)", - "value": "7", - "status": 1, - "sort": 8, - "remark": None, - "creator_id": 1, - "parent_id": 49, - "is_value": 1, - "type": 1, - "color": "" - }, - { - "id": 58, - "description": "", - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "label": "文件附件", - "value": "8", - "status": 1, - "sort": 7, - "remark": None, - "creator_id": 1, - "parent_id": 49, - "is_value": 1, - "type": 1, - "color": "" - }, - { - "id": 59, - "description": "", - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "label": "switch", - "value": "9", - "status": 1, - "sort": 6, - "remark": None, - "creator_id": 1, - "parent_id": 49, - "is_value": 1, - "type": 1, - "color": "" - }, - { - "id": 60, - "description": "", - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "label": "number", - "value": "10", - "status": 1, - "sort": 0, - "remark": None, - "creator_id": 1, - "parent_id": 49, - "is_value": 1, - "type": 1, - "color": "" - }, - { - "id": 61, - "description": "", - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "label": "数组", - "value": "11", - "status": 1, - "sort": 11, - "remark": None, - "creator_id": 1, - "parent_id": 49, - "is_value": 1, - "type": 1, - "color": "" - }, - { - "id": 62, - "description": "", - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "label": "图片(多张)", - "value": "12", - "status": 1, - "sort": 9, - "remark": None, - "creator_id": 1, - "parent_id": 49, - "is_value": 1, - "type": 1, - "color": "" - }, - { - "id": 63, - "description": "", - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "label": "关联表", - "value": "13", - "status": 1, - "sort": 13, - "remark": None, - "creator_id": 1, - "parent_id": 49, - "is_value": 1, - "type": 1, - "color": "" - }, - { - "id": 64, - "description": "", - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "label": "关联表(多选)", - "value": "14", - "status": 1, - "sort": 14, - "remark": None, - "creator_id": 1, - "parent_id": 49, - "is_value": 1, - "type": 1, - "color": "" - }, - { - "id": 65, - "description": "", - "modifier": "1", - "dept_belong_id": "1", - "update_datetime": datetime.datetime.now(), - "create_datetime": datetime.datetime.now(), - "label": "time", - "value": "15", - "status": 1, - "sort": 3, - "remark": None, - "creator_id": 1, - "parent_id": 49, - "is_value": 1, - "type": 1, - "color": "" - } ] system_config_data = [ @@ -2138,7 +2384,7 @@ system_config_data = [ "placeholder": None, "setting": None, "creator_id": 1, - "parent_id": None + "parent_id": None, }, { "id": 2, @@ -2158,7 +2404,7 @@ system_config_data = [ "placeholder": "请输入网站名称", "setting": None, "creator_id": 1, - "parent_id": 1 + "parent_id": 1, }, { "id": 3, @@ -2178,7 +2424,7 @@ system_config_data = [ "placeholder": "请上传网站logo", "setting": None, "creator_id": 1, - "parent_id": 1 + "parent_id": 1, }, { "id": 4, @@ -2198,7 +2444,7 @@ system_config_data = [ "placeholder": "请上传登录背景页", "setting": None, "creator_id": 1, - "parent_id": 1 + "parent_id": 1, }, { "id": 5, @@ -2218,7 +2464,7 @@ system_config_data = [ "placeholder": "请输入版权信息", "setting": None, "creator_id": 1, - "parent_id": 1 + "parent_id": 1, }, { "id": 6, @@ -2238,7 +2484,7 @@ system_config_data = [ "placeholder": "请输入备案信息", "setting": None, "creator_id": 1, - "parent_id": 1 + "parent_id": 1, }, { "id": 7, @@ -2258,7 +2504,7 @@ system_config_data = [ "placeholder": "请输入帮助信息", "setting": None, "creator_id": 1, - "parent_id": 1 + "parent_id": 1, }, { "id": 8, @@ -2278,7 +2524,7 @@ system_config_data = [ "placeholder": "请填写隐私链接", "setting": None, "creator_id": 1, - "parent_id": 1 + "parent_id": 1, }, { "id": 9, @@ -2298,7 +2544,7 @@ system_config_data = [ "placeholder": "请输入条款链接", "setting": None, "creator_id": 1, - "parent_id": 1 + "parent_id": 1, }, { "id": 10, @@ -2318,7 +2564,7 @@ system_config_data = [ "placeholder": None, "setting": None, "creator_id": 1, - "parent_id": None + "parent_id": None, }, { "id": 11, @@ -2338,7 +2584,7 @@ system_config_data = [ "placeholder": "请选择", "setting": None, "creator_id": 1, - "parent_id": 10 + "parent_id": 10, }, { "id": 12, @@ -2358,6 +2604,6 @@ system_config_data = [ "placeholder": "请输入默认密码", "setting": None, "creator_id": 1, - "parent_id": 10 - } + "parent_id": 10, + }, ] diff --git a/backend/dvadmin/system/models.py b/backend/dvadmin/system/models.py index 156a10b..c74aa1a 100644 --- a/backend/dvadmin/system/models.py +++ b/backend/dvadmin/system/models.py @@ -1,6 +1,9 @@ import hashlib import os +from treebeard.mp_tree import MP_Node +from treebeard.al_tree import AL_Node + from django.contrib.auth.models import AbstractUser from django.db import models @@ -14,62 +17,107 @@ STATUS_CHOICES = ( class Users(AbstractUser, CoreModel): - username = models.CharField(max_length=150, unique=True, db_index=True, verbose_name='用户账号', help_text="用户账号") - email = models.EmailField(max_length=255, verbose_name="邮箱", null=True, blank=True, help_text="邮箱") - mobile = models.CharField(max_length=255, verbose_name="电话", null=True, blank=True, help_text="电话") - avatar = models.CharField(max_length=255, verbose_name="头像", null=True, blank=True, help_text="头像") + username = models.CharField( + max_length=150, + unique=True, + db_index=True, + verbose_name="用户账号", + help_text="用户账号", + ) + email = models.EmailField( + max_length=255, verbose_name="邮箱", null=True, blank=True, help_text="邮箱" + ) + mobile = models.CharField( + max_length=255, verbose_name="电话", null=True, blank=True, help_text="电话" + ) + avatar = models.CharField( + max_length=255, verbose_name="头像", null=True, blank=True, help_text="头像" + ) name = models.CharField(max_length=40, verbose_name="姓名", help_text="姓名") GENDER_CHOICES = ( (0, "未知"), (1, "男"), (2, "女"), ) - gender = models.IntegerField(choices=GENDER_CHOICES, default=0, verbose_name="性别", null=True, blank=True, - help_text="性别") + gender = models.IntegerField( + choices=GENDER_CHOICES, + default=0, + verbose_name="性别", + null=True, + blank=True, + help_text="性别", + ) USER_TYPE = ( (0, "后台用户"), (1, "前台用户"), ) - user_type = models.IntegerField(choices=USER_TYPE, default=0, verbose_name="用户类型", null=True, blank=True, - help_text="用户类型") - post = models.ManyToManyField(to='Post', verbose_name='关联岗位', db_constraint=False, help_text="关联岗位") - role = models.ManyToManyField(to='Role', verbose_name='关联角色', db_constraint=False, help_text="关联角色") - dept = models.ForeignKey(to='Dept', verbose_name='所属部门', on_delete=models.PROTECT, db_constraint=False, null=True, - blank=True, help_text="关联部门") + user_type = models.IntegerField( + choices=USER_TYPE, + default=0, + verbose_name="用户类型", + null=True, + blank=True, + help_text="用户类型", + ) + post = models.ManyToManyField( + to="Post", verbose_name="关联岗位", db_constraint=False, help_text="关联岗位" + ) + role = models.ManyToManyField( + to="Role", verbose_name="关联角色", db_constraint=False, help_text="关联角色" + ) + dept = models.ForeignKey( + to="Dept", + verbose_name="所属部门", + on_delete=models.PROTECT, + db_constraint=False, + null=True, + blank=True, + help_text="关联部门", + ) def set_password(self, raw_password): - super().set_password(hashlib.md5(raw_password.encode(encoding='UTF-8')).hexdigest()) + super().set_password( + hashlib.md5(raw_password.encode(encoding="UTF-8")).hexdigest() + ) class Meta: db_table = table_prefix + "system_users" - verbose_name = '用户表' + verbose_name = "用户表" verbose_name_plural = verbose_name - ordering = ('-create_datetime',) + ordering = ("-create_datetime",) class Post(CoreModel): - name = models.CharField(null=False, max_length=64, verbose_name="岗位名称", help_text="岗位名称") + name = models.CharField( + null=False, max_length=64, verbose_name="岗位名称", help_text="岗位名称" + ) code = models.CharField(max_length=32, verbose_name="岗位编码", help_text="岗位编码") sort = models.IntegerField(default=1, verbose_name="岗位顺序", help_text="岗位顺序") STATUS_CHOICES = ( (0, "离职"), (1, "在职"), ) - status = models.IntegerField(choices=STATUS_CHOICES, default=1, verbose_name="岗位状态", help_text="岗位状态") + status = models.IntegerField( + choices=STATUS_CHOICES, default=1, verbose_name="岗位状态", help_text="岗位状态" + ) class Meta: db_table = table_prefix + "system_post" - verbose_name = '岗位表' + verbose_name = "岗位表" verbose_name_plural = verbose_name - ordering = ('sort',) + ordering = ("sort",) class Role(CoreModel): name = models.CharField(max_length=64, verbose_name="角色名称", help_text="角色名称") - key = models.CharField(max_length=64, unique=True, verbose_name="权限字符", help_text="权限字符") + key = models.CharField( + max_length=64, unique=True, verbose_name="权限字符", help_text="权限字符" + ) sort = models.IntegerField(default=1, verbose_name="角色顺序", help_text="角色顺序") status = models.BooleanField(default=True, verbose_name="角色状态", help_text="角色状态") - admin = models.BooleanField(default=False, verbose_name="是否为admin", help_text="是否为admin") + admin = models.BooleanField( + default=False, verbose_name="是否为admin", help_text="是否为admin" + ) DATASCOPE_CHOICES = ( (0, "仅本人数据权限"), (1, "本部门及以下数据权限"), @@ -77,78 +125,134 @@ class Role(CoreModel): (3, "全部数据权限"), (4, "自定数据权限"), ) - data_range = models.IntegerField(default=0, choices=DATASCOPE_CHOICES, verbose_name="数据权限范围", help_text="数据权限范围") + data_range = models.IntegerField( + default=0, choices=DATASCOPE_CHOICES, verbose_name="数据权限范围", help_text="数据权限范围" + ) remark = models.TextField(verbose_name="备注", help_text="备注", null=True, blank=True) - dept = models.ManyToManyField(to='Dept', verbose_name='数据权限-关联部门', db_constraint=False, help_text="数据权限-关联部门") - menu = models.ManyToManyField(to='Menu', verbose_name='关联菜单', db_constraint=False, help_text="关联菜单") - permission = models.ManyToManyField(to='MenuButton', verbose_name='关联菜单的接口按钮', db_constraint=False, - help_text="关联菜单的接口按钮") + dept = models.ManyToManyField( + to="Dept", verbose_name="数据权限-关联部门", db_constraint=False, help_text="数据权限-关联部门" + ) + menu = models.ManyToManyField( + to="Menu", verbose_name="关联菜单", db_constraint=False, help_text="关联菜单" + ) + permission = models.ManyToManyField( + to="MenuButton", + verbose_name="关联菜单的接口按钮", + db_constraint=False, + help_text="关联菜单的接口按钮", + ) class Meta: - db_table = table_prefix + 'system_role' - verbose_name = '角色表' + db_table = table_prefix + "system_role" + verbose_name = "角色表" verbose_name_plural = verbose_name - ordering = ('sort',) + ordering = ("sort",) -class Dept(CoreModel): +class Dept(AL_Node, CoreModel): name = models.CharField(max_length=64, verbose_name="部门名称", help_text="部门名称") sort = models.IntegerField(default=1, verbose_name="显示排序", help_text="显示排序") - owner = models.CharField(max_length=32, verbose_name="负责人", null=True, blank=True, help_text="负责人") - phone = models.CharField(max_length=32, verbose_name="联系电话", null=True, blank=True, help_text="联系电话") - email = models.EmailField(max_length=32, verbose_name="邮箱", null=True, blank=True, help_text="邮箱") - status = models.BooleanField(default=True, verbose_name="部门状态", null=True, blank=True, - help_text="部门状态") - parent = models.ForeignKey(to='Dept', on_delete=models.CASCADE, default=None, verbose_name="上级部门", - db_constraint=False, null=True, blank=True, help_text="上级部门") + owner = models.CharField( + max_length=32, verbose_name="负责人", null=True, blank=True, help_text="负责人" + ) + phone = models.CharField( + max_length=32, verbose_name="联系电话", null=True, blank=True, help_text="联系电话" + ) + email = models.EmailField( + max_length=32, verbose_name="邮箱", null=True, blank=True, help_text="邮箱" + ) + status = models.BooleanField( + default=True, verbose_name="部门状态", null=True, blank=True, help_text="部门状态" + ) + parent = models.ForeignKey( + to="Dept", + on_delete=models.CASCADE, + default=None, + verbose_name="上级部门", + db_constraint=False, + null=True, + blank=True, + help_text="上级部门", + ) + + node_order_by = ["sort", "name"] class Meta: db_table = table_prefix + "system_dept" - verbose_name = '部门表' + verbose_name = "部门表" verbose_name_plural = verbose_name - ordering = ('sort',) + ordering = ("sort",) class Button(CoreModel): - name = models.CharField(max_length=64, unique=True, verbose_name="权限名称", help_text="权限名称") - value = models.CharField(max_length=64, unique=True, verbose_name="权限值", help_text="权限值") + name = models.CharField( + max_length=64, unique=True, verbose_name="权限名称", help_text="权限名称" + ) + value = models.CharField( + max_length=64, unique=True, verbose_name="权限值", help_text="权限值" + ) class Meta: db_table = table_prefix + "system_button" - verbose_name = '权限标识表' + verbose_name = "权限标识表" verbose_name_plural = verbose_name - ordering = ('-name',) + ordering = ("-name",) -class Menu(CoreModel): - parent = models.ForeignKey(to='Menu', on_delete=models.CASCADE, verbose_name="上级菜单", null=True, blank=True, - db_constraint=False, help_text="上级菜单") - icon = models.CharField(max_length=64, verbose_name="菜单图标", null=True, blank=True, help_text="菜单图标") +class Menu(MP_Node, CoreModel): + icon = models.CharField( + max_length=64, verbose_name="菜单图标", null=True, blank=True, help_text="菜单图标" + ) name = models.CharField(max_length=64, verbose_name="菜单名称", help_text="菜单名称") - sort = models.IntegerField(default=1, verbose_name="显示排序", null=True, blank=True, help_text="显示排序") + sort = models.IntegerField( + default=1, verbose_name="显示排序", null=True, blank=True, help_text="显示排序" + ) ISLINK_CHOICES = ( (0, "否"), (1, "是"), ) is_link = models.BooleanField(default=False, verbose_name="是否外链", help_text="是否外链") - is_catalog = models.BooleanField(default=False, verbose_name="是否目录", help_text="是否目录") - web_path = models.CharField(max_length=128, verbose_name="路由地址", null=True, blank=True, help_text="路由地址") - component = models.CharField(max_length=128, verbose_name="组件地址", null=True, blank=True, help_text="组件地址") - component_name = models.CharField(max_length=50, verbose_name="组件名称", null=True, blank=True, help_text="组件名称") - status = models.BooleanField(default=True, blank=True, verbose_name="菜单状态", help_text="菜单状态") - cache = models.BooleanField(default=False, blank=True, verbose_name="是否页面缓存", help_text="是否页面缓存") - visible = models.BooleanField(default=True, blank=True, verbose_name="侧边栏中是否显示", help_text="侧边栏中是否显示") + is_catalog = models.BooleanField( + default=False, verbose_name="是否目录", help_text="是否目录" + ) + web_path = models.CharField( + max_length=128, verbose_name="路由地址", null=True, blank=True, help_text="路由地址" + ) + component = models.CharField( + max_length=128, verbose_name="组件地址", null=True, blank=True, help_text="组件地址" + ) + component_name = models.CharField( + max_length=50, verbose_name="组件名称", null=True, blank=True, help_text="组件名称" + ) + status = models.BooleanField( + default=True, blank=True, verbose_name="菜单状态", help_text="菜单状态" + ) + cache = models.BooleanField( + default=False, blank=True, verbose_name="是否页面缓存", help_text="是否页面缓存" + ) + visible = models.BooleanField( + default=True, blank=True, verbose_name="侧边栏中是否显示", help_text="侧边栏中是否显示" + ) + + def __str__(self) -> str: + return self.name class Meta: db_table = table_prefix + "system_menu" - verbose_name = '菜单表' + verbose_name = "菜单表" verbose_name_plural = verbose_name - ordering = ('sort',) + ordering = ("sort",) class MenuButton(CoreModel): - menu = models.ForeignKey(to="Menu", db_constraint=False, related_name="menuPermission", on_delete=models.CASCADE, - verbose_name="关联菜单", help_text='关联菜单') + menu = models.ForeignKey( + to="Menu", + db_constraint=False, + related_name="menuPermission", + on_delete=models.CASCADE, + verbose_name="关联菜单", + help_text="关联菜单", + ) name = models.CharField(max_length=64, verbose_name="名称", help_text="名称") value = models.CharField(max_length=64, verbose_name="权限值", help_text="权限值") api = models.CharField(max_length=200, verbose_name="接口地址", help_text="接口地址") @@ -158,78 +262,121 @@ class MenuButton(CoreModel): (2, "PUT"), (3, "DELETE"), ) - method = models.IntegerField(default=0, verbose_name="接口请求方法", null=True, blank=True, help_text="接口请求方法") + method = models.IntegerField( + default=0, verbose_name="接口请求方法", null=True, blank=True, help_text="接口请求方法" + ) class Meta: db_table = table_prefix + "system_menu_button" - verbose_name = '菜单权限表' + verbose_name = "菜单权限表" verbose_name_plural = verbose_name - ordering = ('-name',) + ordering = ("-name",) -class Dictionary(CoreModel): +class Dictionary(MP_Node, CoreModel): TYPE_LIST = ( - (0, 'text'), - (1, 'number'), - (2, 'date'), - (3, 'datetime'), - (4, 'time'), - (5, 'files'), - (6, 'boolean'), - (7, 'images'), + (0, "text"), + (1, "number"), + (2, "date"), + (3, "datetime"), + (4, "time"), + (5, "files"), + (6, "boolean"), + (7, "images"), + ) + label = models.CharField( + max_length=100, blank=True, null=True, verbose_name="字典名称", help_text="字典名称" + ) + value = models.CharField( + max_length=200, blank=True, null=True, verbose_name="字典编号", help_text="字典编号/实际值" + ) + type = models.IntegerField( + choices=TYPE_LIST, default=0, verbose_name="数据值类型", help_text="数据值类型" + ) + color = models.CharField( + max_length=20, blank=True, null=True, verbose_name="颜色", help_text="颜色" + ) + is_value = models.BooleanField( + default=False, verbose_name="是否为value值", help_text="是否为value值,用来做具体值存放" ) - label = models.CharField(max_length=100, blank=True, null=True, verbose_name="字典名称", help_text="字典名称") - value = models.CharField(max_length=200, blank=True, null=True, verbose_name="字典编号", help_text="字典编号/实际值") - parent = models.ForeignKey(to='self', related_name='sublist', db_constraint=False, on_delete=models.PROTECT, - blank=True, null=True, verbose_name="父级", help_text="父级") - type = models.IntegerField(choices=TYPE_LIST, default=0, verbose_name="数据值类型", help_text="数据值类型") - color = models.CharField(max_length=20, blank=True, null=True, verbose_name="颜色", help_text="颜色") - is_value = models.BooleanField(default=False, verbose_name="是否为value值", help_text="是否为value值,用来做具体值存放") status = models.BooleanField(default=True, verbose_name="状态", help_text="状态") - sort = models.IntegerField(default=1, verbose_name="显示排序", null=True, blank=True, help_text="显示排序") - remark = models.CharField(max_length=2000, blank=True, null=True, verbose_name="备注", help_text="备注") + sort = models.IntegerField( + default=1, verbose_name="显示排序", null=True, blank=True, help_text="显示排序" + ) + remark = models.CharField( + max_length=2000, blank=True, null=True, verbose_name="备注", help_text="备注" + ) + + def __str__(self) -> str: + return self.label class Meta: - db_table = table_prefix + 'system_dictionary' + db_table = table_prefix + "system_dictionary" verbose_name = "字典表" verbose_name_plural = verbose_name - ordering = ('sort',) + ordering = ("sort",) - def save(self, force_insert=False, force_update=False, using=None, update_fields=None): + def save( + self, force_insert=False, force_update=False, using=None, update_fields=None + ): super().save(force_insert, force_update, using, update_fields) - dispatch.refresh_dictionary() # 有更新则刷新字典配置 + dispatch.refresh_dictionary() # 有更新则刷新字典配置 class OperationLog(CoreModel): - request_modular = models.CharField(max_length=64, verbose_name="请求模块", null=True, blank=True, help_text="请求模块") - request_path = models.CharField(max_length=400, verbose_name="请求地址", null=True, blank=True, help_text="请求地址") - request_body = models.TextField(verbose_name="请求参数", null=True, blank=True, help_text="请求参数") - request_method = models.CharField(max_length=8, verbose_name="请求方式", null=True, blank=True, help_text="请求方式") - request_msg = models.TextField(verbose_name="操作说明", null=True, blank=True, help_text="操作说明") - request_ip = models.CharField(max_length=32, verbose_name="请求ip地址", null=True, blank=True, help_text="请求ip地址") - request_browser = models.CharField(max_length=64, verbose_name="请求浏览器", null=True, blank=True, help_text="请求浏览器") - response_code = models.CharField(max_length=32, verbose_name="响应状态码", null=True, blank=True, help_text="响应状态码") - request_os = models.CharField(max_length=64, verbose_name="操作系统", null=True, blank=True, help_text="操作系统") - json_result = models.TextField(verbose_name="返回信息", null=True, blank=True, help_text="返回信息") + request_modular = models.CharField( + max_length=64, verbose_name="请求模块", null=True, blank=True, help_text="请求模块" + ) + request_path = models.CharField( + max_length=400, verbose_name="请求地址", null=True, blank=True, help_text="请求地址" + ) + request_body = models.TextField( + verbose_name="请求参数", null=True, blank=True, help_text="请求参数" + ) + request_method = models.CharField( + max_length=8, verbose_name="请求方式", null=True, blank=True, help_text="请求方式" + ) + request_msg = models.TextField( + verbose_name="操作说明", null=True, blank=True, help_text="操作说明" + ) + request_ip = models.CharField( + max_length=32, verbose_name="请求ip地址", null=True, blank=True, help_text="请求ip地址" + ) + request_browser = models.CharField( + max_length=64, verbose_name="请求浏览器", null=True, blank=True, help_text="请求浏览器" + ) + response_code = models.CharField( + max_length=32, verbose_name="响应状态码", null=True, blank=True, help_text="响应状态码" + ) + request_os = models.CharField( + max_length=64, verbose_name="操作系统", null=True, blank=True, help_text="操作系统" + ) + json_result = models.TextField( + verbose_name="返回信息", null=True, blank=True, help_text="返回信息" + ) status = models.BooleanField(default=False, verbose_name="响应状态", help_text="响应状态") class Meta: - db_table = table_prefix + 'system_operation_log' - verbose_name = '操作日志' + db_table = table_prefix + "system_operation_log" + verbose_name = "操作日志" verbose_name_plural = verbose_name - ordering = ('-create_datetime',) + ordering = ("-create_datetime",) def media_file_name(instance, filename): h = instance.md5sum basename, ext = os.path.splitext(filename) - return os.path.join('files', h[0:1], h[1:2], h + ext.lower()) + return os.path.join("files", h[0:1], h[1:2], h + ext.lower()) class FileList(CoreModel): - name = models.CharField(max_length=50, null=True, blank=True, verbose_name="名称", help_text="名称") + name = models.CharField( + max_length=50, null=True, blank=True, verbose_name="名称", help_text="名称" + ) url = models.FileField(upload_to=media_file_name) - md5sum = models.CharField(max_length=36, blank=True, verbose_name="文件md5", help_text="文件md5") + md5sum = models.CharField( + max_length=36, blank=True, verbose_name="文件md5", help_text="文件md5" + ) def save(self, *args, **kwargs): if not self.md5sum: # file is new @@ -240,27 +387,39 @@ class FileList(CoreModel): super(FileList, self).save(*args, **kwargs) class Meta: - db_table = table_prefix + 'system_file_list' - verbose_name = '文件管理' + db_table = table_prefix + "system_file_list" + verbose_name = "文件管理" verbose_name_plural = verbose_name - ordering = ('-create_datetime',) + ordering = ("-create_datetime",) class Area(CoreModel): name = models.CharField(max_length=100, verbose_name="名称", help_text="名称") - code = models.CharField(max_length=20, verbose_name="地区编码", help_text="地区编码", unique=True, db_index=True) - level = models.BigIntegerField(verbose_name="地区层级(1省份 2城市 3区县 4乡级)", help_text="地区层级(1省份 2城市 3区县 4乡级)") + code = models.CharField( + max_length=20, verbose_name="地区编码", help_text="地区编码", unique=True, db_index=True + ) + level = models.BigIntegerField( + verbose_name="地区层级(1省份 2城市 3区县 4乡级)", help_text="地区层级(1省份 2城市 3区县 4乡级)" + ) pinyin = models.CharField(max_length=255, verbose_name="拼音", help_text="拼音") initials = models.CharField(max_length=20, verbose_name="首字母", help_text="首字母") enable = models.BooleanField(default=True, verbose_name="是否启用", help_text="是否启用") - pcode = models.ForeignKey(to='self', verbose_name='父地区编码', to_field="code", on_delete=models.CASCADE, - db_constraint=False, null=True, blank=True, help_text="父地区编码") + pcode = models.ForeignKey( + to="self", + verbose_name="父地区编码", + to_field="code", + on_delete=models.CASCADE, + db_constraint=False, + null=True, + blank=True, + help_text="父地区编码", + ) class Meta: db_table = table_prefix + "system_area" - verbose_name = '地区表' + verbose_name = "地区表" verbose_name_plural = verbose_name - ordering = ('code',) + ordering = ("code",) def __str__(self): return f"{self.name}" @@ -274,89 +433,150 @@ class ApiWhiteList(CoreModel): (2, "PUT"), (3, "DELETE"), ) - method = models.IntegerField(default=0, verbose_name="接口请求方法", null=True, blank=True, help_text="接口请求方法") - enable_datasource = models.BooleanField(default=True, verbose_name="激活数据权限", help_text="激活数据权限", blank=True) + method = models.IntegerField( + default=0, verbose_name="接口请求方法", null=True, blank=True, help_text="接口请求方法" + ) + enable_datasource = models.BooleanField( + default=True, verbose_name="激活数据权限", help_text="激活数据权限", blank=True + ) class Meta: db_table = table_prefix + "api_white_list" - verbose_name = '接口白名单' + verbose_name = "接口白名单" verbose_name_plural = verbose_name - ordering = ('-create_datetime',) + ordering = ("-create_datetime",) -class SystemConfig(CoreModel): - parent = models.ForeignKey(to='self', verbose_name='父级', on_delete=models.CASCADE, - db_constraint=False, null=True, blank=True, help_text="父级") +class SystemConfig(AL_Node, CoreModel): + parent = models.ForeignKey( + to="self", + verbose_name="父级", + on_delete=models.CASCADE, + db_constraint=False, + null=True, + blank=True, + help_text="父级", + ) title = models.CharField(max_length=50, verbose_name="标题", help_text="标题") - key = models.CharField(max_length=20, verbose_name="键", help_text="键", db_index=True) - value = models.JSONField(max_length=100, verbose_name="值", help_text="值", null=True, blank=True) + key = models.CharField( + max_length=20, verbose_name="键", help_text="键", db_index=True + ) + value = models.JSONField( + max_length=100, verbose_name="值", help_text="值", null=True, blank=True + ) sort = models.IntegerField(default=0, verbose_name="排序", help_text="排序", blank=True) status = models.BooleanField(default=True, verbose_name="启用状态", help_text="启用状态") - data_options = models.JSONField(verbose_name="数据options", help_text="数据options", null=True, blank=True) - FORM_ITEM_TYPE_LIST = ( - (0, 'text'), - (1, 'datetime'), - (2, 'date'), - (3, 'textarea'), - (4, 'select'), - (5, 'checkbox'), - (6, 'radio'), - (7, 'img'), - (8, 'file'), - (9, 'switch'), - (10, 'number'), - (11, 'array'), - (12, 'imgs'), - (13, 'foreignkey'), - (14, 'manytomany'), - (15, 'time'), - + data_options = models.JSONField( + verbose_name="数据options", help_text="数据options", null=True, blank=True + ) + FORM_ITEM_TYPE_LIST = ( + (0, "text"), + (1, "datetime"), + (2, "date"), + (3, "textarea"), + (4, "select"), + (5, "checkbox"), + (6, "radio"), + (7, "img"), + (8, "file"), + (9, "switch"), + (10, "number"), + (11, "array"), + (12, "imgs"), + (13, "foreignkey"), + (14, "manytomany"), + (15, "time"), + ) + form_item_type = models.IntegerField( + choices=FORM_ITEM_TYPE_LIST, + verbose_name="表单类型", + help_text="表单类型", + default=0, + blank=True, + ) + rule = models.JSONField( + null=True, blank=True, verbose_name="校验规则", help_text="校验规则" + ) + placeholder = models.CharField( + max_length=50, null=True, blank=True, verbose_name="提示信息", help_text="提示信息" ) - form_item_type = models.IntegerField(choices=FORM_ITEM_TYPE_LIST, verbose_name="表单类型", help_text="表单类型", default=0, - blank=True) - rule = models.JSONField(null=True, blank=True, verbose_name="校验规则", help_text="校验规则") - placeholder = models.CharField(max_length=50, null=True, blank=True, verbose_name="提示信息", help_text="提示信息") setting = models.JSONField(null=True, blank=True, verbose_name="配置", help_text="配置") + node_order_by = ["sort", "title", "key"] + class Meta: db_table = table_prefix + "system_config" - verbose_name = '系统配置表' + verbose_name = "系统配置表" verbose_name_plural = verbose_name - ordering = ('sort',) + ordering = ("sort",) unique_together = (("key", "parent_id"),) def __str__(self): return f"{self.title}" - def save(self, force_insert=False, force_update=False, using=None, update_fields=None): + def save( + self, force_insert=False, force_update=False, using=None, update_fields=None + ): super().save(force_insert, force_update, using, update_fields) - dispatch.refresh_system_config() # 有更新则刷新系统配置 + dispatch.refresh_system_config() # 有更新则刷新系统配置 class LoginLog(CoreModel): - LOGIN_TYPE_CHOICES = ( - (1, '普通登录'), + LOGIN_TYPE_CHOICES = ((1, "普通登录"),) + username = models.CharField( + max_length=32, verbose_name="登录用户名", null=True, blank=True, help_text="登录用户名" + ) + ip = models.CharField( + max_length=32, verbose_name="登录ip", null=True, blank=True, help_text="登录ip" + ) + agent = models.TextField( + verbose_name="agent信息", null=True, blank=True, help_text="agent信息" + ) + browser = models.CharField( + max_length=200, verbose_name="浏览器名", null=True, blank=True, help_text="浏览器名" + ) + os = models.CharField( + max_length=200, verbose_name="操作系统", null=True, blank=True, help_text="操作系统" + ) + continent = models.CharField( + max_length=50, verbose_name="州", null=True, blank=True, help_text="州" + ) + country = models.CharField( + max_length=50, verbose_name="国家", null=True, blank=True, help_text="国家" + ) + province = models.CharField( + max_length=50, verbose_name="省份", null=True, blank=True, help_text="省份" + ) + city = models.CharField( + max_length=50, verbose_name="城市", null=True, blank=True, help_text="城市" + ) + district = models.CharField( + max_length=50, verbose_name="县区", null=True, blank=True, help_text="县区" + ) + isp = models.CharField( + max_length=50, verbose_name="运营商", null=True, blank=True, help_text="运营商" + ) + area_code = models.CharField( + max_length=50, verbose_name="区域代码", null=True, blank=True, help_text="区域代码" + ) + country_english = models.CharField( + max_length=50, verbose_name="英文全称", null=True, blank=True, help_text="英文全称" + ) + country_code = models.CharField( + max_length=50, verbose_name="简称", null=True, blank=True, help_text="简称" + ) + longitude = models.CharField( + max_length=50, verbose_name="经度", null=True, blank=True, help_text="经度" + ) + latitude = models.CharField( + max_length=50, verbose_name="纬度", null=True, blank=True, help_text="纬度" + ) + login_type = models.IntegerField( + default=1, choices=LOGIN_TYPE_CHOICES, verbose_name="登录类型", help_text="登录类型" ) - username = models.CharField(max_length=32, verbose_name="登录用户名", null=True, blank=True, help_text="登录用户名") - ip = models.CharField(max_length=32, verbose_name="登录ip", null=True, blank=True, help_text="登录ip") - agent = models.TextField(verbose_name="agent信息", null=True, blank=True, help_text="agent信息") - browser = models.CharField(max_length=200, verbose_name="浏览器名", null=True, blank=True, help_text="浏览器名") - os = models.CharField(max_length=200, verbose_name="操作系统", null=True, blank=True, help_text="操作系统") - continent = models.CharField(max_length=50, verbose_name="州", null=True, blank=True, help_text="州") - country = models.CharField(max_length=50, verbose_name="国家", null=True, blank=True, help_text="国家") - province = models.CharField(max_length=50, verbose_name="省份", null=True, blank=True, help_text="省份") - city = models.CharField(max_length=50, verbose_name="城市", null=True, blank=True, help_text="城市") - district = models.CharField(max_length=50, verbose_name="县区", null=True, blank=True, help_text="县区") - isp = models.CharField(max_length=50, verbose_name="运营商", null=True, blank=True, help_text="运营商") - area_code = models.CharField(max_length=50, verbose_name="区域代码", null=True, blank=True, help_text="区域代码") - country_english = models.CharField(max_length=50, verbose_name="英文全称", null=True, blank=True, help_text="英文全称") - country_code = models.CharField(max_length=50, verbose_name="简称", null=True, blank=True, help_text="简称") - longitude = models.CharField(max_length=50, verbose_name="经度", null=True, blank=True, help_text="经度") - latitude = models.CharField(max_length=50, verbose_name="纬度", null=True, blank=True, help_text="纬度") - login_type = models.IntegerField(default=1, choices=LOGIN_TYPE_CHOICES, verbose_name="登录类型", help_text="登录类型") class Meta: - db_table = table_prefix + 'system_login_log' - verbose_name = '登录日志' + db_table = table_prefix + "system_login_log" + verbose_name = "登录日志" verbose_name_plural = verbose_name - ordering = ('-create_datetime',) + ordering = ("-create_datetime",) diff --git a/backend/dvadmin/system/views/dictionary.py b/backend/dvadmin/system/views/dictionary.py index 5d1d982..dbd67b2 100644 --- a/backend/dvadmin/system/views/dictionary.py +++ b/backend/dvadmin/system/views/dictionary.py @@ -7,6 +7,7 @@ @Remark: 字典管理 """ from django.conf import settings +from rest_framework import serializers from rest_framework.views import APIView from application import dispatch @@ -34,7 +35,7 @@ class DictionaryCreateUpdateSerializer(CustomModelSerializer): class Meta: model = Dictionary - fields = '__all__' + fields = "__all__" class DictionaryViewSet(CustomModelViewSet): @@ -46,30 +47,46 @@ class DictionaryViewSet(CustomModelViewSet): retrieve:单例 destroy:删除 """ + queryset = Dictionary.objects.all() serializer_class = DictionarySerializer extra_filter_backends = [] - search_fields = ['label'] + search_fields = ["label"] + + def get_queryset(self): + parent_id = self.request.query_params.get("parent", None) + if parent_id: + return self.queryset.get(id=parent_id).get_children() + return super().get_queryset() class InitDictionaryViewSet(APIView): """ 获取初始化配置 """ + authentication_classes = [] permission_classes = [] queryset = Dictionary.objects.all() def get(self, request): - dictionary_key = self.request.query_params.get('dictionary_key') + dictionary_key = self.request.query_params.get("dictionary_key") if dictionary_key: - if dictionary_key == 'all': + if dictionary_key == "all": data = [ele for ele in dispatch.get_dictionary_config().values()] if not data: dispatch.refresh_dictionary() data = [ele for ele in dispatch.get_dictionary_config().values()] else: - data = self.queryset.filter(parent__value=dictionary_key, status=True).values('label', 'value', 'type', - 'color') + # data = self.queryset.filter( + # parent__value=dictionary_key, status=True + # ).values("label", "value", "type", "color") + data = ( + Dictionary.objects.get(value=dictionary_key) + .get_children() + .filter(status=True) + .values("label", "value", "type", "color") + ) + print(data) return SuccessResponse(data=data, msg="获取成功") return SuccessResponse(data=[], msg="获取成功") diff --git a/backend/dvadmin/system/views/menu.py b/backend/dvadmin/system/views/menu.py index 56c0490..d3dfcbe 100644 --- a/backend/dvadmin/system/views/menu.py +++ b/backend/dvadmin/system/views/menu.py @@ -10,7 +10,7 @@ from rest_framework import serializers from rest_framework.decorators import action from dvadmin.system.models import Menu, MenuButton, Button -from dvadmin.utils.json_response import SuccessResponse +from dvadmin.utils.json_response import SuccessResponse, DetailResponse from dvadmin.utils.serializers import CustomModelSerializer from dvadmin.utils.viewset import CustomModelViewSet @@ -19,10 +19,19 @@ class MenuSerializer(CustomModelSerializer): """ 菜单表的简单序列化器 """ + + parent = serializers.SerializerMethodField(read_only=True) menuPermission = serializers.SerializerMethodField(read_only=True) + def get_parent(self, instance): + return instance.get_parent().id if instance.get_parent() else None + def get_menuPermission(self, instance): - queryset = MenuButton.objects.filter(menu=instance.id).order_by('-name').values_list('name', flat=True) + queryset = ( + MenuButton.objects.filter(menu=instance.id) + .order_by("-name") + .values_list("name", flat=True) + ) if queryset: return queryset else: @@ -38,6 +47,7 @@ class MenuCreateSerializer(CustomModelSerializer): """ 菜单表的创建序列化器 """ + name = serializers.CharField(required=False) class Meta: @@ -50,18 +60,25 @@ class WebRouterSerializer(CustomModelSerializer): """ 前端菜单路由的简单序列化器 """ + path = serializers.CharField(source="web_path") title = serializers.CharField(source="name") + parent = serializers.SerializerMethodField(read_only=True) menuPermission = serializers.SerializerMethodField(read_only=True) + def get_parent(self, instance): + return instance.get_parent().id if instance.get_parent() else None + def get_menuPermission(self, instance): # 判断是否是超级管理员 if self.request.user.is_superuser: - return Button.objects.values_list('value', flat=True) + return Button.objects.values_list("value", flat=True) else: # 根据当前角色获取权限按钮id集合 - permissionIds = self.request.user.role.values_list('permission', flat=True) - queryset = MenuButton.objects.filter(id__in=permissionIds,menu=instance.id).values_list('value', flat=True) + permissionIds = self.request.user.role.values_list("permission", flat=True) + queryset = MenuButton.objects.filter( + id__in=permissionIds, menu=instance.id + ).values_list("value", flat=True) if queryset: return queryset else: @@ -82,22 +99,30 @@ class MenuViewSet(CustomModelViewSet): retrieve:单例 destroy:删除 """ + queryset = Menu.objects.all() serializer_class = MenuSerializer create_serializer_class = MenuCreateSerializer update_serializer_class = MenuCreateSerializer - search_fields = ['name', 'status'] - filter_fields = ['parent','name', 'status','is_link','visible','cache','is_catalog'] + search_fields = ["name", "status"] + filter_fields = [ + "name", + "status", + "is_link", + "visible", + "cache", + "is_catalog", + ] extra_filter_backends = [] - @action(methods=['GET'], detail=True, permission_classes=[]) + @action(methods=["GET"], detail=True, permission_classes=[]) def web_router(self, request): """用于前端获取当前角色的路由""" user = request.user queryset = self.queryset.filter(status=1) if not user.is_superuser: - menuIds = user.role.values_list('menu__id', flat=True) + menuIds = user.role.values_list("menu__id", flat=True) queryset = Menu.objects.filter(id__in=menuIds, status=1) serializer = WebRouterSerializer(queryset, many=True, request=request) data = serializer.data - return SuccessResponse(data=data,total=len(data),msg="获取成功") + return SuccessResponse(data=data, total=len(data), msg="获取成功") diff --git a/backend/dvadmin/utils/core_initialize.py b/backend/dvadmin/utils/core_initialize.py index ac25823..35aee95 100644 --- a/backend/dvadmin/utils/core_initialize.py +++ b/backend/dvadmin/utils/core_initialize.py @@ -1,11 +1,13 @@ # 初始化基类 from application import settings +from treebeard.mp_tree import MP_Node class CoreInitialize: """ 使用方法:继承此类,重写 run方法,在 run 中调用 save 进行数据初始化 """ + creator_id = None reset = False @@ -26,26 +28,33 @@ class CoreInitialize: settings.INITIALIZE_RESET_LIST.append(obj) except Exception: pass - for ele in data: - m2m_dict = {} - new_data = {} - for key, value in ele.items(): - # 判断传的 value 为 list 的多对多进行抽离,使用set 进行更新 - if isinstance(value, list) and value and isinstance(value[0], int): - m2m_dict[key] = value - else: - new_data[key] = value - object, _ = obj.objects.get_or_create(id=ele.get("id"), defaults=new_data) - for key, m2m in m2m_dict.items(): - m2m = list(set(m2m)) - if m2m and len(m2m) > 0 and m2m[0]: - exec(f""" + if MP_Node in obj.__mro__: + obj.load_bulk(data, None, True) + else: + for ele in data: + m2m_dict = {} + new_data = {} + for key, value in ele.items(): + # 判断传的 value 为 list 的多对多进行抽离,使用set 进行更新 + if isinstance(value, list) and value and isinstance(value[0], int): + m2m_dict[key] = value + else: + new_data[key] = value + object, _ = obj.objects.get_or_create( + id=ele.get("id"), defaults=new_data + ) + for key, m2m in m2m_dict.items(): + m2m = list(set(m2m)) + if m2m and len(m2m) > 0 and m2m[0]: + exec( + f""" if object.{key}: values_list = object.{key}.all().values_list('id', flat=True) values_list = list(set(list(values_list) + {m2m})) object.{key}.set(values_list) -""") +""" + ) print(f"初始化完成[{obj._meta.label} => {name}]") def run(self): - raise NotImplementedError('.run() must be overridden') + raise NotImplementedError(".run() must be overridden") diff --git a/backend/dvadmin/utils/serializers.py b/backend/dvadmin/utils/serializers.py index 09cf50c..6938b79 100644 --- a/backend/dvadmin/utils/serializers.py +++ b/backend/dvadmin/utils/serializers.py @@ -23,6 +23,10 @@ class CustomModelSerializer(DynamicFieldsMixin, ModelSerializer): (1)self.request能获取到rest_framework.request.Request对象 """ + # 放空treebeard.mp_tree.MP_Node的继承字段 + path = serializers.CharField(required=False) + depth = serializers.IntegerField(required=False) + # 修改人的审计字段名称, 默认modifier, 继承使用时可自定义覆盖 modifier_field_id = "modifier" modifier_name = serializers.SerializerMethodField(read_only=True) diff --git a/backend/dvadmin/utils/viewset.py b/backend/dvadmin/utils/viewset.py index 1340338..8f0f4a3 100644 --- a/backend/dvadmin/utils/viewset.py +++ b/backend/dvadmin/utils/viewset.py @@ -14,12 +14,19 @@ from rest_framework.decorators import action from rest_framework.viewsets import ModelViewSet from dvadmin.utils.filters import DataLevelPermissionsFilter -from dvadmin.utils.import_export_mixin import ExportSerializerMixin, ImportSerializerMixin +from dvadmin.utils.import_export_mixin import ( + ExportSerializerMixin, + ImportSerializerMixin, +) from dvadmin.utils.json_response import SuccessResponse, ErrorResponse, DetailResponse from dvadmin.utils.permission import CustomPermission from django_restql.mixins import QueryArgumentsMixin +from treebeard.models import Node -class CustomModelViewSet(ModelViewSet,ImportSerializerMixin,ExportSerializerMixin,QueryArgumentsMixin): + +class CustomModelViewSet( + ModelViewSet, ImportSerializerMixin, ExportSerializerMixin, QueryArgumentsMixin +): """ 自定义的ModelViewSet: 统一标准的返回格式;新增,查询,修改可使用不同序列化器 @@ -29,11 +36,12 @@ class CustomModelViewSet(ModelViewSet,ImportSerializerMixin,ExportSerializerMixi (4)import_field_dict={} 导入时的字段字典 {model值: model的label} (5)export_field_label = [] 导出时的字段 """ + values_queryset = None - ordering_fields = '__all__' + ordering_fields = "__all__" create_serializer_class = None update_serializer_class = None - filter_fields = '__all__' + filter_fields = "__all__" search_fields = () extra_filter_backends = [DataLevelPermissionsFilter] permission_classes = [CustomPermission] @@ -41,12 +49,14 @@ class CustomModelViewSet(ModelViewSet,ImportSerializerMixin,ExportSerializerMixi export_field_label = [] def filter_queryset(self, queryset): - for backend in set(set(self.filter_backends) | set(self.extra_filter_backends or [])): + for backend in set( + set(self.filter_backends) | set(self.extra_filter_backends or []) + ): queryset = backend().filter_queryset(self.request, queryset, self) return queryset def get_queryset(self): - if getattr(self, 'values_queryset', None): + if getattr(self, "values_queryset", None): return self.values_queryset return super().get_queryset() @@ -60,6 +70,15 @@ class CustomModelViewSet(ModelViewSet,ImportSerializerMixin,ExportSerializerMixi def create(self, request, *args, **kwargs): serializer = self.get_serializer(data=request.data, request=request) serializer.is_valid(raise_exception=True) + if Node in self.queryset.model.__mro__: + parent_id = request.data.get("parent") + data = serializer.validated_data + if parent_id is None: + self.queryset.model.add_root(**data) + else: + parent = self.queryset.model.objects.filter(pk=parent_id).first() + parent.add_child(**data) + return DetailResponse(data=data, msg="新增成功") self.perform_create(serializer) return DetailResponse(data=serializer.data, msg="新增成功") @@ -78,13 +97,15 @@ class CustomModelViewSet(ModelViewSet,ImportSerializerMixin,ExportSerializerMixi return DetailResponse(data=serializer.data, msg="获取成功") def update(self, request, *args, **kwargs): - partial = kwargs.pop('partial', False) + partial = kwargs.pop("partial", False) instance = self.get_object() - serializer = self.get_serializer(instance, data=request.data, request=request, partial=partial) + serializer = self.get_serializer( + instance, data=request.data, request=request, partial=partial + ) serializer.is_valid(raise_exception=True) self.perform_update(serializer) - if getattr(instance, '_prefetched_objects_cache', None): + if getattr(instance, "_prefetched_objects_cache", None): # If 'prefetch_related' has been applied to a queryset, we need to # forcibly invalidate the prefetch cache on the instance. instance._prefetched_objects_cache = {} @@ -95,17 +116,20 @@ class CustomModelViewSet(ModelViewSet,ImportSerializerMixin,ExportSerializerMixi self.perform_destroy(instance) return DetailResponse(data=[], msg="删除成功") + keys = openapi.Schema( + description="主键列表", type=openapi.TYPE_ARRAY, items=openapi.TYPE_STRING + ) - keys = openapi.Schema(description='主键列表',type=openapi.TYPE_ARRAY,items=openapi.TYPE_STRING) - @swagger_auto_schema(request_body=openapi.Schema( - type=openapi.TYPE_OBJECT, - required=['keys'], - properties={'keys': keys} - ), operation_summary='批量删除') - @action(methods=['delete'],detail=False) - def multiple_delete(self,request,*args,**kwargs): + @swagger_auto_schema( + request_body=openapi.Schema( + type=openapi.TYPE_OBJECT, required=["keys"], properties={"keys": keys} + ), + operation_summary="批量删除", + ) + @action(methods=["delete"], detail=False) + def multiple_delete(self, request, *args, **kwargs): request_data = request.data - keys = request_data.get('keys',None) + keys = request_data.get("keys", None) if keys: self.get_queryset().filter(id__in=keys).delete() return SuccessResponse(data=[], msg="删除成功") diff --git a/web/src/views/system/menu/crud.js b/web/src/views/system/menu/crud.js index 3b20de9..548c13d 100644 --- a/web/src/views/system/menu/crud.js +++ b/web/src/views/system/menu/crud.js @@ -393,7 +393,7 @@ export const crudOptions = (vm) => { search: { disabled: false }, - width: 50, + width: 60, type: 'radio', dict: { data: vm.dictionary('button_whether_bool') diff --git a/web/yarn.lock b/web/yarn.lock index 6a840e9..581db82 100644 --- a/web/yarn.lock +++ b/web/yarn.lock @@ -26,39 +26,39 @@ dependencies: "@babel/highlight" "^7.16.7" -"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.17.0", "@babel/compat-data@^7.17.10": +"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.17.10": version "7.17.10" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.17.10.tgz#711dc726a492dfc8be8220028b1b92482362baab" integrity sha512-GZt/TCsG70Ms19gfZO1tM4CVnXsPgEPBCpJu+Qz3L0LUDsY5nZqFZglIoPC1kIYOtNBZlrnFT+klg12vFGZXrw== "@babel/core@^7.1.0", "@babel/core@^7.11.0": - version "7.17.10" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.10.tgz#74ef0fbf56b7dfc3f198fc2d927f4f03e12f4b05" - integrity sha512-liKoppandF3ZcBnIYFjfSDHZLKdLHGJRkoWtG8zQyGJBQfIYobpnVGI5+pLBNtS6psFLDzyq8+h5HiVljW9PNA== + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.12.tgz#b4eb2d7ebc3449b062381644c93050db545b70ee" + integrity sha512-44ODe6O1IVz9s2oJE3rZ4trNNKTX9O7KpQpfAP4t8QII/zwrVRHL7i2pxhqtcY7tqMLrrKfMlBKnm1QlrRFs5w== dependencies: "@ampproject/remapping" "^2.1.0" "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.17.10" + "@babel/generator" "^7.17.12" "@babel/helper-compilation-targets" "^7.17.10" - "@babel/helper-module-transforms" "^7.17.7" + "@babel/helper-module-transforms" "^7.17.12" "@babel/helpers" "^7.17.9" - "@babel/parser" "^7.17.10" + "@babel/parser" "^7.17.12" "@babel/template" "^7.16.7" - "@babel/traverse" "^7.17.10" - "@babel/types" "^7.17.10" + "@babel/traverse" "^7.17.12" + "@babel/types" "^7.17.12" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.2" json5 "^2.2.1" semver "^6.3.0" -"@babel/generator@^7.17.10", "@babel/generator@^7.4.0": - version "7.17.10" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.17.10.tgz#c281fa35b0c349bbe9d02916f4ae08fc85ed7189" - integrity sha512-46MJZZo9y3o4kmhBVc7zW7i8dtR1oIK/sdO5NcfcZRhTGYi+KKJRtHNgsU6c4VUcJmUNV/LQdebD/9Dlv4K+Tg== +"@babel/generator@^7.17.12", "@babel/generator@^7.4.0": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.17.12.tgz#5970e6160e9be0428e02f4aba62d8551ec366cc8" + integrity sha512-V49KtZiiiLjH/CnIW6OjJdrenrGoyh6AmKQ3k2AZFKozC1h846Q4NYlZ5nqAigPDUXfGzC88+LOUuG8yKd2kCw== dependencies: - "@babel/types" "^7.17.10" - "@jridgewell/gen-mapping" "^0.1.0" + "@babel/types" "^7.17.12" + "@jridgewell/gen-mapping" "^0.3.0" jsesc "^2.5.1" "@babel/helper-annotate-as-pure@^7.16.7": @@ -86,10 +86,10 @@ browserslist "^4.20.2" semver "^6.3.0" -"@babel/helper-create-class-features-plugin@^7.16.10", "@babel/helper-create-class-features-plugin@^7.16.7", "@babel/helper-create-class-features-plugin@^7.17.6", "@babel/helper-create-class-features-plugin@^7.17.9": - version "7.17.9" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.9.tgz#71835d7fb9f38bd9f1378e40a4c0902fdc2ea49d" - integrity sha512-kUjip3gruz6AJKOq5i3nC6CoCEEF/oHH3cp6tOZhB+IyyyPyW0g1Gfsxn3mkk6S08pIA2y8GQh609v9G/5sHVQ== +"@babel/helper-create-class-features-plugin@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.12.tgz#d4f8393fc4838cbff6b7c199af5229aee16d07cf" + integrity sha512-sZoOeUTkFJMyhqCei2+Z+wtH/BehW8NVKQt7IRUQlRiOARuXymJYfN/FCcI8CvVbR0XVyDM6eLFOlR7YtiXnew== dependencies: "@babel/helper-annotate-as-pure" "^7.16.7" "@babel/helper-environment-visitor" "^7.16.7" @@ -99,10 +99,10 @@ "@babel/helper-replace-supers" "^7.16.7" "@babel/helper-split-export-declaration" "^7.16.7" -"@babel/helper-create-regexp-features-plugin@^7.16.7", "@babel/helper-create-regexp-features-plugin@^7.17.0": - version "7.17.0" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.0.tgz#1dcc7d40ba0c6b6b25618997c5dbfd310f186fe1" - integrity sha512-awO2So99wG6KnlE+TPs6rn83gCz5WlEePJDTnLEqbchMVrBeAujURVphRdigsk094VhvZehFoNOihSlcBjwsXA== +"@babel/helper-create-regexp-features-plugin@^7.16.7", "@babel/helper-create-regexp-features-plugin@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.12.tgz#bb37ca467f9694bbe55b884ae7a5cc1e0084e4fd" + integrity sha512-b2aZrV4zvutr9AIa6/gA3wsZKRwTKYoDxYiFKcESS3Ug2GTXzwBEvMuuFLhCQpEnRXs1zng4ISAXSUxxKBIcxw== dependencies: "@babel/helper-annotate-as-pure" "^7.16.7" regexpu-core "^5.0.1" @@ -164,10 +164,10 @@ dependencies: "@babel/types" "^7.16.7" -"@babel/helper-module-transforms@^7.16.7", "@babel/helper-module-transforms@^7.17.7": - version "7.17.7" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz#3943c7f777139e7954a5355c815263741a9c1cbd" - integrity sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw== +"@babel/helper-module-transforms@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.17.12.tgz#bec00139520cb3feb078ef7a4578562480efb77e" + integrity sha512-t5s2BeSWIghhFRPh9XMn6EIGmvn8Lmw5RVASJzkIx1mSemubQQBNIZiQD7WzaFmaHIrjAec4x8z9Yx8SjJ1/LA== dependencies: "@babel/helper-environment-visitor" "^7.16.7" "@babel/helper-module-imports" "^7.16.7" @@ -175,8 +175,8 @@ "@babel/helper-split-export-declaration" "^7.16.7" "@babel/helper-validator-identifier" "^7.16.7" "@babel/template" "^7.16.7" - "@babel/traverse" "^7.17.3" - "@babel/types" "^7.17.0" + "@babel/traverse" "^7.17.12" + "@babel/types" "^7.17.12" "@babel/helper-optimise-call-expression@^7.16.7": version "7.16.7" @@ -185,10 +185,10 @@ dependencies: "@babel/types" "^7.16.7" -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz#aa3a8ab4c3cceff8e65eb9e73d87dc4ff320b2f5" - integrity sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA== +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.17.12", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.17.12.tgz#86c2347da5acbf5583ba0a10aed4c9bf9da9cf96" + integrity sha512-JDkf04mqtN3y4iAbO1hv9U2ARpPyPL1zqyWs/2WG1pgSq9llHFjStX5jdxb84himgJm+8Ng+x0oiWF/nw/XQKA== "@babel/helper-remap-async-to-generator@^7.16.8": version "7.16.8" @@ -261,71 +261,71 @@ "@babel/types" "^7.17.0" "@babel/highlight@^7.16.7": - version "7.17.9" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.17.9.tgz#61b2ee7f32ea0454612def4fccdae0de232b73e3" - integrity sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg== + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.17.12.tgz#257de56ee5afbd20451ac0a75686b6b404257351" + integrity sha512-7yykMVF3hfZY2jsHZEEgLc+3x4o1O+fYyULu11GynEUQNwB6lua+IIQn1FiJxNucd5UlyJryrwsOh8PL9Sn8Qg== dependencies: "@babel/helper-validator-identifier" "^7.16.7" chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.16.7", "@babel/parser@^7.17.10", "@babel/parser@^7.4.3", "@babel/parser@^7.7.0": - version "7.17.10" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.10.tgz#873b16db82a8909e0fbd7f115772f4b739f6ce78" - integrity sha512-n2Q6i+fnJqzOaq2VkdXxy2TCPCWQZHiCo0XqmrCvDWcZQKRyZzYi4Z0yxlBuN0w+r2ZHmre+Q087DSrw3pbJDQ== +"@babel/parser@^7.1.0", "@babel/parser@^7.16.7", "@babel/parser@^7.17.12", "@babel/parser@^7.4.3", "@babel/parser@^7.7.0": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.12.tgz#36c2ed06944e3691ba82735fc4cf62d12d491a23" + integrity sha512-FLzHmN9V3AJIrWfOpvRlZCeVg/WLdicSnTMsLur6uDj9TT8ymUlG9XxURdW/XvuygK+2CW0poOJABdA4m/YKxA== -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.16.7": - version "7.16.7" - 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.16.7.tgz#4eda6d6c2a0aa79c70fa7b6da67763dfe2141050" - integrity sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg== +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.17.12": + version "7.17.12" + 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.17.12.tgz#1dca338caaefca368639c9ffb095afbd4d420b1e" + integrity sha512-xCJQXl4EeQ3J9C4yOmpTrtVGmzpm2iSzyxbkZHw7UCnZBftHpF/hpII80uWVyVrc40ytIClHjgWGTG1g/yB+aw== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7.tgz#cc001234dfc139ac45f6bcf801866198c8c72ff9" - integrity sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw== +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.17.12.tgz#0d498ec8f0374b1e2eb54b9cb2c4c78714c77753" + integrity sha512-/vt0hpIw0x4b6BLKUkwlvEoiGZYYLNZ96CzyHYPbtG2jZGz6LBe7/V+drYrc/d+ovrF9NBi0pmtvmNb/FsWtRQ== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" - "@babel/plugin-proposal-optional-chaining" "^7.16.7" + "@babel/plugin-proposal-optional-chaining" "^7.17.12" -"@babel/plugin-proposal-async-generator-functions@^7.16.8": - version "7.16.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.8.tgz#3bdd1ebbe620804ea9416706cd67d60787504bc8" - integrity sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ== +"@babel/plugin-proposal-async-generator-functions@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.17.12.tgz#094a417e31ce7e692d84bab06c8e2a607cbeef03" + integrity sha512-RWVvqD1ooLKP6IqWTA5GyFVX2isGEgC5iFxKzfYOIy/QEFdxYyCybBDtIGjipHpb9bDWHzcqGqFakf+mVmBTdQ== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/helper-remap-async-to-generator" "^7.16.8" "@babel/plugin-syntax-async-generators" "^7.8.4" -"@babel/plugin-proposal-class-properties@^7.16.7", "@babel/plugin-proposal-class-properties@^7.8.3": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz#925cad7b3b1a2fcea7e59ecc8eb5954f961f91b0" - integrity sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww== +"@babel/plugin-proposal-class-properties@^7.17.12", "@babel/plugin-proposal-class-properties@^7.8.3": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.17.12.tgz#84f65c0cc247d46f40a6da99aadd6438315d80a4" + integrity sha512-U0mI9q8pW5Q9EaTHFPwSVusPMV/DV9Mm8p7csqROFLtIE9rBF5piLqyrBGigftALrBcsBGu4m38JneAe7ZDLXw== dependencies: - "@babel/helper-create-class-features-plugin" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-create-class-features-plugin" "^7.17.12" + "@babel/helper-plugin-utils" "^7.17.12" -"@babel/plugin-proposal-class-static-block@^7.17.6": - version "7.17.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.17.6.tgz#164e8fd25f0d80fa48c5a4d1438a6629325ad83c" - integrity sha512-X/tididvL2zbs7jZCeeRJ8167U/+Ac135AM6jCAx6gYXDUviZV5Ku9UDvWS2NCuWlFjIRXklYhwo6HhAC7ETnA== +"@babel/plugin-proposal-class-static-block@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.17.12.tgz#947f09dd496322c9543ec3b318bf52b4d9833334" + integrity sha512-8ILyDG6eL14F8iub97dVc8q35Md0PJYAnA5Kz9NACFOkt6ffCcr0FISyUPKHsvuAy36fkpIitxZ9bVYPFMGQHA== dependencies: - "@babel/helper-create-class-features-plugin" "^7.17.6" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-create-class-features-plugin" "^7.17.12" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-syntax-class-static-block" "^7.14.5" "@babel/plugin-proposal-decorators@^7.8.3": - version "7.17.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.17.9.tgz#67a1653be9c77ce5b6c318aa90c8287b87831619" - integrity sha512-EfH2LZ/vPa2wuPwJ26j+kYRkaubf89UlwxKXtxqEm57HrgSEYDB8t4swFP+p8LcI9yiP9ZRJJjo/58hS6BnaDA== + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.17.12.tgz#26a6a605f271a6703abf97f8fafd1368834c131c" + integrity sha512-gL0qSSeIk/VRfTDgtQg/EtejENssN/r3p5gJsPie1UacwiHibprpr19Z0pcK3XKuqQvjGVxsQ37Tl1MGfXzonA== dependencies: - "@babel/helper-create-class-features-plugin" "^7.17.9" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-create-class-features-plugin" "^7.17.12" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/helper-replace-supers" "^7.16.7" "@babel/helper-split-export-declaration" "^7.16.7" - "@babel/plugin-syntax-decorators" "^7.17.0" + "@babel/plugin-syntax-decorators" "^7.17.12" charcodes "^0.2.0" "@babel/plugin-proposal-dynamic-import@^7.16.7": @@ -336,36 +336,36 @@ "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-dynamic-import" "^7.8.3" -"@babel/plugin-proposal-export-namespace-from@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz#09de09df18445a5786a305681423ae63507a6163" - integrity sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA== +"@babel/plugin-proposal-export-namespace-from@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.17.12.tgz#b22864ccd662db9606edb2287ea5fd1709f05378" + integrity sha512-j7Ye5EWdwoXOpRmo5QmRyHPsDIe6+u70ZYZrd7uz+ebPYFKfRcLcNu3Ro0vOlJ5zuv8rU7xa+GttNiRzX56snQ== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" -"@babel/plugin-proposal-json-strings@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz#9732cb1d17d9a2626a08c5be25186c195b6fa6e8" - integrity sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ== +"@babel/plugin-proposal-json-strings@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.17.12.tgz#f4642951792437233216d8c1af370bb0fbff4664" + integrity sha512-rKJ+rKBoXwLnIn7n6o6fulViHMrOThz99ybH+hKHcOZbnN14VuMnH9fo2eHE69C8pO4uX1Q7t2HYYIDmv8VYkg== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-syntax-json-strings" "^7.8.3" -"@babel/plugin-proposal-logical-assignment-operators@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz#be23c0ba74deec1922e639832904be0bea73cdea" - integrity sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg== +"@babel/plugin-proposal-logical-assignment-operators@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.17.12.tgz#c64a1bcb2b0a6d0ed2ff674fd120f90ee4b88a23" + integrity sha512-EqFo2s1Z5yy+JeJu7SFfbIUtToJTVlC61/C7WLKDntSw4Sz6JNAIfL7zQ74VvirxpjB5kz/kIx0gCcb+5OEo2Q== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" -"@babel/plugin-proposal-nullish-coalescing-operator@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz#141fc20b6857e59459d430c850a0011e36561d99" - integrity sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ== +"@babel/plugin-proposal-nullish-coalescing-operator@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.17.12.tgz#1e93079bbc2cbc756f6db6a1925157c4a92b94be" + integrity sha512-ws/g3FSGVzv+VH86+QvgtuJL/kR67xaEIF2x0iPqdDfYW6ra6JF3lKVBkWynRLcNtIC1oCTfDRVxmm2mKzy+ag== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" "@babel/plugin-proposal-numeric-separator@^7.16.7": @@ -376,16 +376,16 @@ "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@babel/plugin-proposal-object-rest-spread@^7.17.3": - version "7.17.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.17.3.tgz#d9eb649a54628a51701aef7e0ea3d17e2b9dd390" - integrity sha512-yuL5iQA/TbZn+RGAfxQXfi7CNLmKi1f8zInn4IgobuCWcAb7i+zj4TYzQ9l8cEzVyJ89PDGuqxK1xZpUDISesw== +"@babel/plugin-proposal-object-rest-spread@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.17.12.tgz#f94a91715a7f2f8cfb3c06af820c776440bc0148" + integrity sha512-6l9cO3YXXRh4yPCPRA776ZyJ3RobG4ZKJZhp7NDRbKIOeV3dBPG8FXCF7ZtiO2RTCIOkQOph1xDDcc01iWVNjQ== dependencies: - "@babel/compat-data" "^7.17.0" - "@babel/helper-compilation-targets" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/compat-data" "^7.17.10" + "@babel/helper-compilation-targets" "^7.17.10" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.16.7" + "@babel/plugin-transform-parameters" "^7.17.12" "@babel/plugin-proposal-optional-catch-binding@^7.16.7": version "7.16.7" @@ -395,40 +395,40 @@ "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" -"@babel/plugin-proposal-optional-chaining@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz#7cd629564724816c0e8a969535551f943c64c39a" - integrity sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA== +"@babel/plugin-proposal-optional-chaining@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.17.12.tgz#f96949e9bacace3a9066323a5cf90cfb9de67174" + integrity sha512-7wigcOs/Z4YWlK7xxjkvaIw84vGhDv/P1dFGQap0nHkc8gFKY/r+hXc8Qzf5k1gY7CvGIcHqAnOagVKJJ1wVOQ== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" "@babel/plugin-syntax-optional-chaining" "^7.8.3" -"@babel/plugin-proposal-private-methods@^7.16.11": - version "7.16.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.11.tgz#e8df108288555ff259f4527dbe84813aac3a1c50" - integrity sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw== +"@babel/plugin-proposal-private-methods@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.17.12.tgz#c2ca3a80beb7539289938da005ad525a038a819c" + integrity sha512-SllXoxo19HmxhDWm3luPz+cPhtoTSKLJE9PXshsfrOzBqs60QP0r8OaJItrPhAj0d7mZMnNF0Y1UUggCDgMz1A== dependencies: - "@babel/helper-create-class-features-plugin" "^7.16.10" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-create-class-features-plugin" "^7.17.12" + "@babel/helper-plugin-utils" "^7.17.12" -"@babel/plugin-proposal-private-property-in-object@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz#b0b8cef543c2c3d57e59e2c611994861d46a3fce" - integrity sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ== +"@babel/plugin-proposal-private-property-in-object@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.17.12.tgz#b02efb7f106d544667d91ae97405a9fd8c93952d" + integrity sha512-/6BtVi57CJfrtDNKfK5b66ydK2J5pXUKBKSPD2G1whamMuEnZWgoOIfO8Vf9F/DoD4izBLD/Au4NMQfruzzykg== dependencies: "@babel/helper-annotate-as-pure" "^7.16.7" - "@babel/helper-create-class-features-plugin" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-create-class-features-plugin" "^7.17.12" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-syntax-private-property-in-object" "^7.14.5" -"@babel/plugin-proposal-unicode-property-regex@^7.16.7", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz#635d18eb10c6214210ffc5ff4932552de08188a2" - integrity sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg== +"@babel/plugin-proposal-unicode-property-regex@^7.17.12", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.17.12.tgz#3dbd7a67bd7f94c8238b394da112d86aaf32ad4d" + integrity sha512-Wb9qLjXf3ZazqXA7IvI7ozqRIXIGPtSo+L5coFmEkhTQK18ao4UDDD0zdTGAarmbLj2urpRwrc6893cu5Bfh0A== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-create-regexp-features-plugin" "^7.17.12" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" @@ -451,12 +451,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-syntax-decorators@^7.17.0": - version "7.17.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.17.0.tgz#a2be3b2c9fe7d78bd4994e790896bc411e2f166d" - integrity sha512-qWe85yCXsvDEluNP0OyeQjH63DlhAR3W7K9BxxU1MvbDb48tgBG+Ao6IJJ6smPDrrVzSQZrbF6donpkFBMcs3A== +"@babel/plugin-syntax-decorators@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.17.12.tgz#02e8f678602f0af8222235271efea945cfdb018a" + integrity sha512-D1Hz0qtGTza8K2xGyEdVNCYLdVHukAcbQr4K3/s6r/esadyEriZovpJimQOpu8ju4/jV8dW/1xdaE0UpDroidw== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-syntax-dynamic-import@^7.8.3": version "7.8.3" @@ -480,11 +480,11 @@ "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-jsx@^7.0.0", "@babel/plugin-syntax-jsx@^7.2.0", "@babel/plugin-syntax-jsx@^7.8.3": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.7.tgz#50b6571d13f764266a113d77c82b4a6508bbe665" - integrity sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q== + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.17.12.tgz#834035b45061983a491f60096f61a2e7c5674a47" + integrity sha512-spyY3E3AURfxh/RHtjx5j6hs8am5NbUBGfcZ2vB3uShSpZdQyXSf5rR5Mk76vbtlAZOelyVQ71Fg0x9SG4fsog== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-syntax-logical-assignment-operators@^7.10.4": version "7.10.4" @@ -542,20 +542,20 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-arrow-functions@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz#44125e653d94b98db76369de9c396dc14bef4154" - integrity sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ== +"@babel/plugin-transform-arrow-functions@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.17.12.tgz#dddd783b473b1b1537ef46423e3944ff24898c45" + integrity sha512-PHln3CNi/49V+mza4xMwrg+WGYevSF1oaiXaC2EQfdp4HWlSjRsrDXWJiQBKpP7749u6vQ9mcry2uuFOv5CXvA== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" -"@babel/plugin-transform-async-to-generator@^7.16.8": - version "7.16.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.8.tgz#b83dff4b970cf41f1b819f8b49cc0cfbaa53a808" - integrity sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg== +"@babel/plugin-transform-async-to-generator@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.17.12.tgz#dbe5511e6b01eee1496c944e35cdfe3f58050832" + integrity sha512-J8dbrWIOO3orDzir57NRsjg4uxucvhby0L/KZuGsWDj0g7twWK3g7JhJhOrXtuXiw8MeiSdJ3E0OW9H8LYEzLQ== dependencies: "@babel/helper-module-imports" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/helper-remap-async-to-generator" "^7.16.8" "@babel/plugin-transform-block-scoped-functions@^7.16.7": @@ -565,40 +565,40 @@ dependencies: "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-block-scoping@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz#f50664ab99ddeaee5bc681b8f3a6ea9d72ab4f87" - integrity sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ== +"@babel/plugin-transform-block-scoping@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.17.12.tgz#68fc3c4b3bb7dfd809d97b7ed19a584052a2725c" + integrity sha512-jw8XW/B1i7Lqwqj2CbrViPcZijSxfguBWZP2aN59NHgxUyO/OcO1mfdCxH13QhN5LbWhPkX+f+brKGhZTiqtZQ== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" -"@babel/plugin-transform-classes@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz#8f4b9562850cd973de3b498f1218796eb181ce00" - integrity sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ== +"@babel/plugin-transform-classes@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.17.12.tgz#da889e89a4d38375eeb24985218edeab93af4f29" + integrity sha512-cvO7lc7pZat6BsvH6l/EGaI8zpl8paICaoGk+7x7guvtfak/TbIf66nYmJOH13EuG0H+Xx3M+9LQDtSvZFKXKw== dependencies: "@babel/helper-annotate-as-pure" "^7.16.7" "@babel/helper-environment-visitor" "^7.16.7" - "@babel/helper-function-name" "^7.16.7" + "@babel/helper-function-name" "^7.17.9" "@babel/helper-optimise-call-expression" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/helper-replace-supers" "^7.16.7" "@babel/helper-split-export-declaration" "^7.16.7" globals "^11.1.0" -"@babel/plugin-transform-computed-properties@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz#66dee12e46f61d2aae7a73710f591eb3df616470" - integrity sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw== +"@babel/plugin-transform-computed-properties@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.17.12.tgz#bca616a83679698f3258e892ed422546e531387f" + integrity sha512-a7XINeplB5cQUWMg1E/GI1tFz3LfK021IjV1rj1ypE+R7jHm+pIHmHl25VNkZxtx9uuYp7ThGk8fur1HHG7PgQ== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" -"@babel/plugin-transform-destructuring@^7.17.7": - version "7.17.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.17.7.tgz#49dc2675a7afa9a5e4c6bdee636061136c3408d1" - integrity sha512-XVh0r5yq9sLR4vZ6eVZe8FKfIcSgaTBxVBRSYokRj2qksf6QerYnTxz9/GTuKTH/n/HwLP7t6gtlybHetJ/6hQ== +"@babel/plugin-transform-destructuring@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.17.12.tgz#0861d61e75e2401aca30f2570d46dfc85caacf35" + integrity sha512-P8pt0YiKtX5UMUL5Xzsc9Oyij+pJE6JuC+F1k0/brq/OOGs5jDa1If3OY0LRWGvJsJhI+8tsiecL3nJLc0WTlg== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-transform-dotall-regex@^7.16.7", "@babel/plugin-transform-dotall-regex@^7.4.4": version "7.16.7" @@ -608,12 +608,12 @@ "@babel/helper-create-regexp-features-plugin" "^7.16.7" "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-duplicate-keys@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz#2207e9ca8f82a0d36a5a67b6536e7ef8b08823c9" - integrity sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw== +"@babel/plugin-transform-duplicate-keys@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.17.12.tgz#a09aa709a3310013f8e48e0e23bc7ace0f21477c" + integrity sha512-EA5eYFUG6xeerdabina/xIoB95jJ17mAkR8ivx6ZSu9frKShBjpOGZPn511MTDTkiCO+zXnzNczvUM69YSf3Zw== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-transform-exponentiation-operator@^7.16.7": version "7.16.7" @@ -623,12 +623,12 @@ "@babel/helper-builder-binary-assignment-operator-visitor" "^7.16.7" "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-for-of@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz#649d639d4617dff502a9a158c479b3b556728d8c" - integrity sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg== +"@babel/plugin-transform-for-of@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.17.12.tgz#5397c22554ec737a27918e7e7e0e7b679b05f5ec" + integrity sha512-76lTwYaCxw8ldT7tNmye4LLwSoKDbRCBzu6n/DcK/P3FOR29+38CIIaVIZfwol9By8W/QHORYEnYSLuvcQKrsg== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-transform-function-name@^7.16.7": version "7.16.7" @@ -639,12 +639,12 @@ "@babel/helper-function-name" "^7.16.7" "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-literals@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz#254c9618c5ff749e87cb0c0cef1a0a050c0bdab1" - integrity sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ== +"@babel/plugin-transform-literals@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.17.12.tgz#97131fbc6bbb261487105b4b3edbf9ebf9c830ae" + integrity sha512-8iRkvaTjJciWycPIZ9k9duu663FT7VrBdNqNgxnVXEFwOIp55JWcZd23VBRySYbnS3PwQ3rGiabJBBBGj5APmQ== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-transform-member-expression-literals@^7.16.7": version "7.16.7" @@ -653,57 +653,58 @@ dependencies: "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-modules-amd@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.7.tgz#b28d323016a7daaae8609781d1f8c9da42b13186" - integrity sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g== +"@babel/plugin-transform-modules-amd@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.17.12.tgz#08ec1f10f854c15bb3b44952e60f1fc126d7d481" + integrity sha512-p5rt9tB5Ndcc2Za7CeNxVf7YAjRcUMR6yi8o8tKjb9KhRkEvXwa+C0hj6DA5bVDkKRxB0NYhMUGbVKoFu4+zEA== dependencies: - "@babel/helper-module-transforms" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-module-transforms" "^7.17.12" + "@babel/helper-plugin-utils" "^7.17.12" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-commonjs@^7.17.9", "@babel/plugin-transform-modules-commonjs@^7.9.6": - version "7.17.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.17.9.tgz#274be1a2087beec0254d4abd4d86e52442e1e5b6" - integrity sha512-2TBFd/r2I6VlYn0YRTz2JdazS+FoUuQ2rIFHoAxtyP/0G3D82SBLaRq9rnUkpqlLg03Byfl/+M32mpxjO6KaPw== +"@babel/plugin-transform-modules-commonjs@^7.17.12", "@babel/plugin-transform-modules-commonjs@^7.9.6": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.17.12.tgz#37691c7404320d007288edd5a2d8600bcef61c34" + integrity sha512-tVPs6MImAJz+DiX8Y1xXEMdTk5Lwxu9jiPjlS+nv5M2A59R7+/d1+9A8C/sbuY0b3QjIxqClkj6KAplEtRvzaA== dependencies: - "@babel/helper-module-transforms" "^7.17.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-module-transforms" "^7.17.12" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/helper-simple-access" "^7.17.7" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-systemjs@^7.17.8": - version "7.17.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.17.8.tgz#81fd834024fae14ea78fbe34168b042f38703859" - integrity sha512-39reIkMTUVagzgA5x88zDYXPCMT6lcaRKs1+S9K6NKBPErbgO/w/kP8GlNQTC87b412ZTlmNgr3k2JrWgHH+Bw== +"@babel/plugin-transform-modules-systemjs@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.17.12.tgz#e631b151b99d25401cd9679476cc35e6e5bbc7d4" + integrity sha512-NVhDb0q00hqZcuLduUf/kMzbOQHiocmPbIxIvk23HLiEqaTKC/l4eRxeC7lO63M72BmACoiKOcb9AkOAJRerpw== dependencies: "@babel/helper-hoist-variables" "^7.16.7" - "@babel/helper-module-transforms" "^7.17.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-module-transforms" "^7.17.12" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/helper-validator-identifier" "^7.16.7" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-umd@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz#23dad479fa585283dbd22215bff12719171e7618" - integrity sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ== +"@babel/plugin-transform-modules-umd@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.17.12.tgz#b37be3ecf198c1fea10e6268461729ced05644e1" + integrity sha512-BnsPkrUHsjzZGpnrmJeDFkOMMljWFHPjDc9xDcz71/C+ybF3lfC3V4m3dwXPLZrE5b3bgd4V+3/Pj+3620d7IA== dependencies: - "@babel/helper-module-transforms" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-module-transforms" "^7.17.12" + "@babel/helper-plugin-utils" "^7.17.12" -"@babel/plugin-transform-named-capturing-groups-regex@^7.17.10": - version "7.17.10" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.17.10.tgz#715dbcfafdb54ce8bccd3d12e8917296a4ba66a4" - integrity sha512-v54O6yLaJySCs6mGzaVOUw9T967GnH38T6CQSAtnzdNPwu84l2qAjssKzo/WSO8Yi7NF+7ekm5cVbF/5qiIgNA== +"@babel/plugin-transform-named-capturing-groups-regex@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.17.12.tgz#9c4a5a5966e0434d515f2675c227fd8cc8606931" + integrity sha512-vWoWFM5CKaTeHrdUJ/3SIOTRV+MBVGybOC9mhJkaprGNt5demMymDW24yC74avb915/mIRe3TgNb/d8idvnCRA== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.17.0" + "@babel/helper-create-regexp-features-plugin" "^7.17.12" + "@babel/helper-plugin-utils" "^7.17.12" -"@babel/plugin-transform-new-target@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz#9967d89a5c243818e0800fdad89db22c5f514244" - integrity sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg== +"@babel/plugin-transform-new-target@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.17.12.tgz#10842cd605a620944e81ea6060e9e65c265742e3" + integrity sha512-CaOtzk2fDYisbjAD4Sd1MTKGVIpRtx9bWLyj24Y/k6p4s4gQ3CqDGJauFJxt8M/LEx003d0i3klVqnN73qvK3w== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-transform-object-super@^7.16.7": version "7.16.7" @@ -713,12 +714,12 @@ "@babel/helper-plugin-utils" "^7.16.7" "@babel/helper-replace-supers" "^7.16.7" -"@babel/plugin-transform-parameters@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz#a1721f55b99b736511cb7e0152f61f17688f331f" - integrity sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw== +"@babel/plugin-transform-parameters@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.17.12.tgz#eb467cd9586ff5ff115a9880d6fdbd4a846b7766" + integrity sha512-6qW4rWo1cyCdq1FkYri7AHpauchbGLXpdwnYsfxFb+KtddHENfsY5JZb35xUwkK5opOLcJ3BNd2l7PhRYGlwIA== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-transform-property-literals@^7.16.7": version "7.16.7" @@ -734,20 +735,20 @@ dependencies: regenerator-transform "^0.15.0" -"@babel/plugin-transform-reserved-words@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.7.tgz#1d798e078f7c5958eec952059c460b220a63f586" - integrity sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg== +"@babel/plugin-transform-reserved-words@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.17.12.tgz#7dbd349f3cdffba751e817cf40ca1386732f652f" + integrity sha512-1KYqwbJV3Co03NIi14uEHW8P50Md6KqFgt0FfpHdK6oyAHQVTosgPuPSiWud1HX0oYJ1hGRRlk0fP87jFpqXZA== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-transform-runtime@^7.11.0": - version "7.17.10" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.17.10.tgz#b89d821c55d61b5e3d3c3d1d636d8d5a81040ae1" - integrity sha512-6jrMilUAJhktTr56kACL8LnWC5hx3Lf27BS0R0DSyW/OoJfb/iTHeE96V3b1dgKG3FSFdd/0culnYWMkjcKCig== + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.17.12.tgz#5dc79735c4038c6f4fc0490f68f2798ce608cadd" + integrity sha512-xsl5MeGjWnmV6Ui9PfILM2+YRpa3GqLOrczPpXV3N2KCgQGU+sU8OfzuMbjkIdfvZEZIm+3y0V7w58sk0SGzlw== dependencies: "@babel/helper-module-imports" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" babel-plugin-polyfill-corejs2 "^0.3.0" babel-plugin-polyfill-corejs3 "^0.5.0" babel-plugin-polyfill-regenerator "^0.3.0" @@ -760,12 +761,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-spread@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz#a303e2122f9f12e0105daeedd0f30fb197d8ff44" - integrity sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg== +"@babel/plugin-transform-spread@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.17.12.tgz#c112cad3064299f03ea32afed1d659223935d1f5" + integrity sha512-9pgmuQAtFi3lpNUstvG9nGfk9DkrdmWNp9KeKPFmuZCpEnxRzYlS8JgwPjYj+1AWDOSvoGN0H30p1cBOmT/Svg== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" "@babel/plugin-transform-sticky-regex@^7.16.7": @@ -775,19 +776,19 @@ dependencies: "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-template-literals@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz#f3d1c45d28967c8e80f53666fc9c3e50618217ab" - integrity sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA== +"@babel/plugin-transform-template-literals@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.17.12.tgz#4aec0a18f39dd86c442e1d077746df003e362c6e" + integrity sha512-kAKJ7DX1dSRa2s7WN1xUAuaQmkTpN+uig4wCKWivVXIObqGbVTUlSavHyfI2iZvz89GFAMGm9p2DBJ4Y1Tp0hw== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" -"@babel/plugin-transform-typeof-symbol@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz#9cdbe622582c21368bd482b660ba87d5545d4f7e" - integrity sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ== +"@babel/plugin-transform-typeof-symbol@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.17.12.tgz#0f12f57ac35e98b35b4ed34829948d42bd0e6889" + integrity sha512-Q8y+Jp7ZdtSPXCThB6zjQ74N3lj0f6TDh1Hnf5B+sYlzQ8i5Pjp8gW0My79iekSpT4WnI06blqP6DT0OmaXXmw== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-transform-unicode-escapes@^7.16.7": version "7.16.7" @@ -805,31 +806,31 @@ "@babel/helper-plugin-utils" "^7.16.7" "@babel/preset-env@^7.11.0": - version "7.17.10" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.17.10.tgz#a81b093669e3eb6541bb81a23173c5963c5de69c" - integrity sha512-YNgyBHZQpeoBSRBg0xixsZzfT58Ze1iZrajvv0lJc70qDDGuGfonEnMGfWeSY0mQ3JTuCWFbMkzFRVafOyJx4g== + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.17.12.tgz#b81ae0bb762b683d68b07b6d2d4020ccbef8d67a" + integrity sha512-Kke30Rj3Lmcx97bVs71LO0s8M6FmJ7tUAQI9fNId62rf0cYG1UAWwdNO9/sE0/pLEahAw1MqMorymoD12bj5Fg== dependencies: "@babel/compat-data" "^7.17.10" "@babel/helper-compilation-targets" "^7.17.10" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/helper-validator-option" "^7.16.7" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.16.7" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.16.7" - "@babel/plugin-proposal-async-generator-functions" "^7.16.8" - "@babel/plugin-proposal-class-properties" "^7.16.7" - "@babel/plugin-proposal-class-static-block" "^7.17.6" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.17.12" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.17.12" + "@babel/plugin-proposal-async-generator-functions" "^7.17.12" + "@babel/plugin-proposal-class-properties" "^7.17.12" + "@babel/plugin-proposal-class-static-block" "^7.17.12" "@babel/plugin-proposal-dynamic-import" "^7.16.7" - "@babel/plugin-proposal-export-namespace-from" "^7.16.7" - "@babel/plugin-proposal-json-strings" "^7.16.7" - "@babel/plugin-proposal-logical-assignment-operators" "^7.16.7" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.16.7" + "@babel/plugin-proposal-export-namespace-from" "^7.17.12" + "@babel/plugin-proposal-json-strings" "^7.17.12" + "@babel/plugin-proposal-logical-assignment-operators" "^7.17.12" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.17.12" "@babel/plugin-proposal-numeric-separator" "^7.16.7" - "@babel/plugin-proposal-object-rest-spread" "^7.17.3" + "@babel/plugin-proposal-object-rest-spread" "^7.17.12" "@babel/plugin-proposal-optional-catch-binding" "^7.16.7" - "@babel/plugin-proposal-optional-chaining" "^7.16.7" - "@babel/plugin-proposal-private-methods" "^7.16.11" - "@babel/plugin-proposal-private-property-in-object" "^7.16.7" - "@babel/plugin-proposal-unicode-property-regex" "^7.16.7" + "@babel/plugin-proposal-optional-chaining" "^7.17.12" + "@babel/plugin-proposal-private-methods" "^7.17.12" + "@babel/plugin-proposal-private-property-in-object" "^7.17.12" + "@babel/plugin-proposal-unicode-property-regex" "^7.17.12" "@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" @@ -844,40 +845,40 @@ "@babel/plugin-syntax-optional-chaining" "^7.8.3" "@babel/plugin-syntax-private-property-in-object" "^7.14.5" "@babel/plugin-syntax-top-level-await" "^7.14.5" - "@babel/plugin-transform-arrow-functions" "^7.16.7" - "@babel/plugin-transform-async-to-generator" "^7.16.8" + "@babel/plugin-transform-arrow-functions" "^7.17.12" + "@babel/plugin-transform-async-to-generator" "^7.17.12" "@babel/plugin-transform-block-scoped-functions" "^7.16.7" - "@babel/plugin-transform-block-scoping" "^7.16.7" - "@babel/plugin-transform-classes" "^7.16.7" - "@babel/plugin-transform-computed-properties" "^7.16.7" - "@babel/plugin-transform-destructuring" "^7.17.7" + "@babel/plugin-transform-block-scoping" "^7.17.12" + "@babel/plugin-transform-classes" "^7.17.12" + "@babel/plugin-transform-computed-properties" "^7.17.12" + "@babel/plugin-transform-destructuring" "^7.17.12" "@babel/plugin-transform-dotall-regex" "^7.16.7" - "@babel/plugin-transform-duplicate-keys" "^7.16.7" + "@babel/plugin-transform-duplicate-keys" "^7.17.12" "@babel/plugin-transform-exponentiation-operator" "^7.16.7" - "@babel/plugin-transform-for-of" "^7.16.7" + "@babel/plugin-transform-for-of" "^7.17.12" "@babel/plugin-transform-function-name" "^7.16.7" - "@babel/plugin-transform-literals" "^7.16.7" + "@babel/plugin-transform-literals" "^7.17.12" "@babel/plugin-transform-member-expression-literals" "^7.16.7" - "@babel/plugin-transform-modules-amd" "^7.16.7" - "@babel/plugin-transform-modules-commonjs" "^7.17.9" - "@babel/plugin-transform-modules-systemjs" "^7.17.8" - "@babel/plugin-transform-modules-umd" "^7.16.7" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.17.10" - "@babel/plugin-transform-new-target" "^7.16.7" + "@babel/plugin-transform-modules-amd" "^7.17.12" + "@babel/plugin-transform-modules-commonjs" "^7.17.12" + "@babel/plugin-transform-modules-systemjs" "^7.17.12" + "@babel/plugin-transform-modules-umd" "^7.17.12" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.17.12" + "@babel/plugin-transform-new-target" "^7.17.12" "@babel/plugin-transform-object-super" "^7.16.7" - "@babel/plugin-transform-parameters" "^7.16.7" + "@babel/plugin-transform-parameters" "^7.17.12" "@babel/plugin-transform-property-literals" "^7.16.7" "@babel/plugin-transform-regenerator" "^7.17.9" - "@babel/plugin-transform-reserved-words" "^7.16.7" + "@babel/plugin-transform-reserved-words" "^7.17.12" "@babel/plugin-transform-shorthand-properties" "^7.16.7" - "@babel/plugin-transform-spread" "^7.16.7" + "@babel/plugin-transform-spread" "^7.17.12" "@babel/plugin-transform-sticky-regex" "^7.16.7" - "@babel/plugin-transform-template-literals" "^7.16.7" - "@babel/plugin-transform-typeof-symbol" "^7.16.7" + "@babel/plugin-transform-template-literals" "^7.17.12" + "@babel/plugin-transform-typeof-symbol" "^7.17.12" "@babel/plugin-transform-unicode-escapes" "^7.16.7" "@babel/plugin-transform-unicode-regex" "^7.16.7" "@babel/preset-modules" "^0.1.5" - "@babel/types" "^7.17.10" + "@babel/types" "^7.17.12" babel-plugin-polyfill-corejs2 "^0.3.0" babel-plugin-polyfill-corejs3 "^0.5.0" babel-plugin-polyfill-regenerator "^0.3.0" @@ -919,26 +920,26 @@ "@babel/parser" "^7.16.7" "@babel/types" "^7.16.7" -"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.13.0", "@babel/traverse@^7.16.7", "@babel/traverse@^7.16.8", "@babel/traverse@^7.17.10", "@babel/traverse@^7.17.3", "@babel/traverse@^7.17.9", "@babel/traverse@^7.4.3", "@babel/traverse@^7.7.0": - version "7.17.10" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.17.10.tgz#1ee1a5ac39f4eac844e6cf855b35520e5eb6f8b5" - integrity sha512-VmbrTHQteIdUUQNTb+zE12SHS/xQVIShmBPhlNP12hD5poF2pbITW1Z4172d03HegaQWhLffdkRJYtAzp0AGcw== +"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.13.0", "@babel/traverse@^7.16.7", "@babel/traverse@^7.16.8", "@babel/traverse@^7.17.12", "@babel/traverse@^7.17.9", "@babel/traverse@^7.4.3", "@babel/traverse@^7.7.0": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.17.12.tgz#011874d2abbca0ccf1adbe38f6f7a4ff1747599c" + integrity sha512-zULPs+TbCvOkIFd4FrG53xrpxvCBwLIgo6tO0tJorY7YV2IWFxUfS/lXDJbGgfyYt9ery/Gxj2niwttNnB0gIw== dependencies: "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.17.10" + "@babel/generator" "^7.17.12" "@babel/helper-environment-visitor" "^7.16.7" "@babel/helper-function-name" "^7.17.9" "@babel/helper-hoist-variables" "^7.16.7" "@babel/helper-split-export-declaration" "^7.16.7" - "@babel/parser" "^7.17.10" - "@babel/types" "^7.17.10" + "@babel/parser" "^7.17.12" + "@babel/types" "^7.17.12" debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.17.10", "@babel/types@^7.3.0", "@babel/types@^7.4.0", "@babel/types@^7.4.4", "@babel/types@^7.7.0": - version "7.17.10" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.17.10.tgz#d35d7b4467e439fcf06d195f8100e0fea7fc82c4" - integrity sha512-9O26jG0mBYfGkUYCYZRnBwbVLd1UZOICEr2Em6InB6jVfsAv1GKgwXHmrSg+WFWDmeKTA6vyTZiN8tCSM5Oo3A== +"@babel/types@^7.0.0", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.17.12", "@babel/types@^7.3.0", "@babel/types@^7.4.0", "@babel/types@^7.4.4", "@babel/types@^7.7.0": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.17.12.tgz#1210690a516489c0200f355d87619157fbbd69a0" + integrity sha512-rH8i29wcZ6x9xjzI5ILHL/yZkbQnCERdHlogKuIb4PUr7do4iT8DPekrTbBLWTnRQm6U0GYABbTMSzijmEqlAg== dependencies: "@babel/helper-validator-identifier" "^7.16.7" to-fast-properties "^2.0.0" @@ -951,54 +952,54 @@ exec-sh "^0.3.2" minimist "^1.2.0" -"@commitlint/config-validator@^16.2.1": - version "16.2.1" - resolved "https://registry.yarnpkg.com/@commitlint/config-validator/-/config-validator-16.2.1.tgz#794e769afd4756e4cf1bfd823b6612932e39c56d" - integrity sha512-hogSe0WGg7CKmp4IfNbdNES3Rq3UEI4XRPB8JL4EPgo/ORq5nrGTVzxJh78omibNuB8Ho4501Czb1Er1MoDWpw== +"@commitlint/config-validator@^17.0.0": + version "17.0.0" + resolved "https://registry.yarnpkg.com/@commitlint/config-validator/-/config-validator-17.0.0.tgz#49ab09f3ca0ac3449e79ea389cb4942423162ac0" + integrity sha512-78IQjoZWR4kDHp/U5y17euEWzswJpPkA9TDL5F6oZZZaLIEreWzrDZD5PWtM8MsSRl/K2LDU/UrzYju2bKLMpA== dependencies: - "@commitlint/types" "^16.2.1" + "@commitlint/types" "^17.0.0" ajv "^6.12.6" -"@commitlint/execute-rule@^16.2.1": - version "16.2.1" - resolved "https://registry.yarnpkg.com/@commitlint/execute-rule/-/execute-rule-16.2.1.tgz#60be73be4b9af97a41546e7ce59fdd33787c65f8" - integrity sha512-oSls82fmUTLM6cl5V3epdVo4gHhbmBFvCvQGHBRdQ50H/690Uq1Dyd7hXMuKITCIdcnr9umyDkr8r5C6HZDF3g== +"@commitlint/execute-rule@^17.0.0": + version "17.0.0" + resolved "https://registry.yarnpkg.com/@commitlint/execute-rule/-/execute-rule-17.0.0.tgz#186e9261fd36733922ae617497888c4bdb6e5c92" + integrity sha512-nVjL/w/zuqjCqSJm8UfpNaw66V9WzuJtQvEnCrK4jDw6qKTmZB+1JQ8m6BQVZbNBcwfYdDNKnhIhqI0Rk7lgpQ== "@commitlint/load@>6.1.1": - version "16.2.4" - resolved "https://registry.yarnpkg.com/@commitlint/load/-/load-16.2.4.tgz#32c9f4c6538b21cf48cf40266312bb1adb65f435" - integrity sha512-HjANm3/29ROV+zt4yfaY/K6gpr9Dbzgtlp0kSwZGW0poDXlD/yqVYgPQ6JolJzZii5FUz5R4yVLC15hVL/w60w== + version "17.0.0" + resolved "https://registry.yarnpkg.com/@commitlint/load/-/load-17.0.0.tgz#0bbefe6d8b99276714c5ea8ef32de2bd2f082698" + integrity sha512-XaiHF4yWQOPAI0O6wXvk+NYLtJn/Xb7jgZEeKd4C1ZWd7vR7u8z5h0PkWxSr0uLZGQsElGxv3fiZ32C5+q6M8w== dependencies: - "@commitlint/config-validator" "^16.2.1" - "@commitlint/execute-rule" "^16.2.1" - "@commitlint/resolve-extends" "^16.2.1" - "@commitlint/types" "^16.2.1" + "@commitlint/config-validator" "^17.0.0" + "@commitlint/execute-rule" "^17.0.0" + "@commitlint/resolve-extends" "^17.0.0" + "@commitlint/types" "^17.0.0" "@types/node" ">=12" - chalk "^4.0.0" + chalk "^4.1.0" cosmiconfig "^7.0.0" - cosmiconfig-typescript-loader "^1.0.0" + cosmiconfig-typescript-loader "^2.0.0" lodash "^4.17.19" resolve-from "^5.0.0" - typescript "^4.4.3" + typescript "^4.6.4" -"@commitlint/resolve-extends@^16.2.1": - version "16.2.1" - resolved "https://registry.yarnpkg.com/@commitlint/resolve-extends/-/resolve-extends-16.2.1.tgz#2f7833a5a3a7aa79f508e59fcb0f1d33c45ed360" - integrity sha512-NbbCMPKTFf2J805kwfP9EO+vV+XvnaHRcBy6ud5dF35dxMsvdJqke54W3XazXF1ZAxC4a3LBy4i/GNVBAthsEg== +"@commitlint/resolve-extends@^17.0.0": + version "17.0.0" + resolved "https://registry.yarnpkg.com/@commitlint/resolve-extends/-/resolve-extends-17.0.0.tgz#3a40ee08184b984acf475ebc962641f435e3a639" + integrity sha512-wi60WiJmwaQ7lzMXK8Vbc18Hq9tE2j/6iv2AFfPUGV7fvfY6Sf1iNKuUHirSqR0fquUyufIXe4y/K9A6LVIIvw== dependencies: - "@commitlint/config-validator" "^16.2.1" - "@commitlint/types" "^16.2.1" + "@commitlint/config-validator" "^17.0.0" + "@commitlint/types" "^17.0.0" import-fresh "^3.0.0" lodash "^4.17.19" resolve-from "^5.0.0" resolve-global "^1.0.0" -"@commitlint/types@^16.2.1": - version "16.2.1" - resolved "https://registry.yarnpkg.com/@commitlint/types/-/types-16.2.1.tgz#f25d373b88b01e51fc3fa44488101361945a61bd" - integrity sha512-7/z7pA7BM0i8XvMSBynO7xsB3mVQPUZbVn6zMIlp/a091XJ3qAXRXc+HwLYhiIdzzS5fuxxNIHZMGHVD4HJxdA== +"@commitlint/types@^17.0.0": + version "17.0.0" + resolved "https://registry.yarnpkg.com/@commitlint/types/-/types-17.0.0.tgz#3b4604c1a0f06c340ce976e6c6903d4f56e3e690" + integrity sha512-hBAw6U+SkAT5h47zDMeOu3HSiD0SODw4Aq7rRNh1ceUmL7GyLKYhPbUvlRWqZ65XjBLPHZhFyQlRaPNz8qvUyQ== dependencies: - chalk "^4.0.0" + chalk "^4.1.0" "@cspotcode/source-map-consumer@0.8.0": version "0.8.0" @@ -1225,6 +1226,15 @@ "@jridgewell/set-array" "^1.0.0" "@jridgewell/sourcemap-codec" "^1.4.10" +"@jridgewell/gen-mapping@^0.3.0": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.1.tgz#cf92a983c83466b8c0ce9124fadeaf09f7c66ea9" + integrity sha512-GcHwniMlA2z+WFPWuY8lp3fsza0I8xPFMWL5+n8LYyP6PSvPrXf4+n8stDHZY2DM0zy9sVkRDy1jDI4XGzYVqg== + dependencies: + "@jridgewell/set-array" "^1.0.0" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" + "@jridgewell/resolve-uri@^3.0.3": version "3.0.7" resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz#30cd49820a962aff48c8fffc5cd760151fca61fe" @@ -1241,9 +1251,9 @@ integrity sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w== "@jridgewell/trace-mapping@^0.3.9": - version "0.3.10" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.10.tgz#db436f0917d655393851bc258918c00226c9b183" - integrity sha512-Q0YbBd6OTsXm8Y21+YUSDXupHnodNC2M4O18jtd3iwJ3+vMZNdKGols0a9G6JOK0dcJ3IdUUHoh908ZI6qhk8Q== + version "0.3.13" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.13.tgz#dcfe3e95f224c8fe97a87a5235defec999aa92ea" + integrity sha512-o1xbKhp9qnIAoHJSWd6KlCZfqslL4valSF81H8ImioOAxluWYWOpWkpyktY2vnt4tbrX9XYaxovq6cgowaJp2w== dependencies: "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" @@ -1436,7 +1446,7 @@ "@types/json5@^0.0.29": version "0.0.29" resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" - integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= + integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== "@types/mime@^1": version "1.3.2" @@ -1454,9 +1464,9 @@ integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ== "@types/node@*", "@types/node@>=12": - version "17.0.31" - resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.31.tgz#a5bb84ecfa27eec5e1c802c6bbf8139bdb163a5d" - integrity sha512-AR0x5HbXGqkEx9CadRH3EBYx/VkiUgZIhP4wvPn/+5KIsgpNoyFaRlVe0Zlx9gRtg8fA06a9tskE2MSN7TcG4Q== + version "17.0.34" + resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.34.tgz#3b0b6a50ff797280b8d000c6281d229f9c538cef" + integrity sha512-XImEz7XwTvDBtzlTnm8YvMqGW/ErMWBsKZ+hMTvnDIjGCKxwK5Xpc+c/oQjOauwq8M4OS11hEkpjX8rrI/eEgA== "@types/normalize-package-data@^2.4.0": version "2.4.1" @@ -1504,7 +1514,7 @@ "@types/strip-bom@^3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@types/strip-bom/-/strip-bom-3.0.0.tgz#14a8ec3956c2e81edb7520790aecf21c290aebd2" - integrity sha1-FKjsOVbC6B7bdSB5CuzyHCkK69I= + integrity sha512-xevGOReSYGM7g/kUBZzPqCrR/KYAo+F0yiPc85WFTJa0MSLtyFTVTU6cJu/aV4mid7IffDIWqo69THF2o4JiEQ== "@types/strip-json-comments@0.0.30": version "0.0.30" @@ -2139,7 +2149,7 @@ ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.6: alphanum-sort@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" - integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= + integrity sha512-0FcBfdcmaumGPQ0qPn7Q5qTgz/ooXgIyp1rf8ik5bGX8mpE2YHjC0P/eyQvxu1GURYQgq9ozf2mteQ5ZD9YiyQ== ansi-colors@^3.0.0: version "3.2.4" @@ -2166,7 +2176,7 @@ 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.1" @@ -2186,7 +2196,7 @@ ansi-regex@^5.0.1: ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" - integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= + integrity sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA== ansi-styles@^3.2.0, ansi-styles@^3.2.1: version "3.2.1" @@ -2205,7 +2215,7 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0: any-promise@^1.0.0: version "1.3.0" resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" - integrity sha1-q8av7tzqUugJzcA3au0845Y10X8= + integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== anymatch@^2.0.0: version "2.0.0" @@ -2248,7 +2258,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" @@ -2258,22 +2268,22 @@ 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-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-find@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/array-find/-/array-find-1.0.0.tgz#6c8e286d11ed768327f8e62ecee87353ca3e78b8" - integrity sha1-bI4obRHtdoMn+OYuzuhzU8o+eLg= + integrity sha512-kO/vVCacW9mnpn3WPWbTVlEnOabK2L7LWi2HViURtCM46y1zb6I8UMjx4LgbiqadTgHnLInUronwn3ampNTJtQ== array-flatten@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" - integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= + integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== array-flatten@^2.1.0: version "2.1.2" @@ -2294,19 +2304,19 @@ array-includes@^3.1.4: array-union@^1.0.1, array-union@^1.0.2: 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" 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" 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.5: version "1.3.0" @@ -2338,7 +2348,7 @@ asn1@~0.2.3: 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: version "1.5.0" @@ -2351,7 +2361,7 @@ assert@^1.1.1: 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== astral-regex@^1.0.0: version "1.0.0" @@ -2385,7 +2395,7 @@ async@^2.6.2: 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== atob@^2.1.2: version "2.1.2" @@ -2408,7 +2418,7 @@ autoprefixer@^9.8.6: 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.11.0" @@ -2434,7 +2444,7 @@ axios@^0.19.0: babel-code-frame@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" - integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= + integrity sha512-XqYMR2dfdGMW+hd0IUZ2PwK+fGeFkOxZJ0wY+JaQAHzt1Zx8LcvpiZD2NiGkEG8qx0CfkAOr5xt76d1e8vG90g== dependencies: chalk "^1.1.3" esutils "^2.0.2" @@ -2488,7 +2498,7 @@ babel-loader@^8.1.0: babel-messages@^6.23.0: version "6.23.0" resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" - integrity sha1-8830cDhYA1sqKVHG7F7fbGLyYw4= + integrity sha512-Bl3ZiA+LjqaMtNYopA9TYE9HP1tQ+E5dLxE0XrAzcIJeK2UqF0/EaqXwBn9esd4UmTfEab+P+UYQ1GnioFIb/w== dependencies: babel-runtime "^6.22.0" @@ -2553,7 +2563,7 @@ babel-plugin-transform-es2015-modules-commonjs@^6.26.0, babel-plugin-transform-e babel-plugin-transform-strict-mode@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758" - integrity sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g= + integrity sha512-j3KtSpjyLSJxNoCDrhwiJad8kw0gJ9REGj8/CqL0HeRyLnvUNYV9zcqluL6QJSXh3nfsLEmSLvwRfGzrgR96Pw== dependencies: babel-runtime "^6.22.0" babel-types "^6.24.1" @@ -2569,7 +2579,7 @@ babel-preset-jest@^24.9.0: babel-runtime@6.x, babel-runtime@^6.0.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" - integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= + integrity sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g== dependencies: core-js "^2.4.0" regenerator-runtime "^0.11.0" @@ -2577,7 +2587,7 @@ babel-runtime@6.x, babel-runtime@^6.0.0, babel-runtime@^6.22.0, babel-runtime@^6 babel-template@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" - integrity sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI= + integrity sha512-PCOcLFW7/eazGUKIoqH97sO9A2UYMahsn/yRQ7uOk37iutwjq7ODtcTNF+iFDSHNfkctqsLRjLP7URnOx0T1fg== dependencies: babel-runtime "^6.26.0" babel-traverse "^6.26.0" @@ -2588,7 +2598,7 @@ babel-template@^6.26.0: babel-traverse@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" - integrity sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4= + integrity sha512-iSxeXx7apsjCHe9c7n8VtRXGzI2Bk1rBSOJgCCjfyXb6v1aCqE1KSEpq/8SXuVN8Ka/Rh1WDTF0MDzkvTA4MIA== dependencies: babel-code-frame "^6.26.0" babel-messages "^6.23.0" @@ -2603,7 +2613,7 @@ babel-traverse@^6.26.0: babel-types@^6.24.1, babel-types@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" - integrity sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc= + integrity sha512-zhe3V/26rCWsEZK8kZN+HaQj5yQ1CilTObixFzKW1UWjqG7618Twz6YEsCnjfg5gBcJh02DrpCkS9h98ZqDY+g== dependencies: babel-runtime "^6.26.0" esutils "^2.0.2" @@ -2641,12 +2651,12 @@ base@^0.11.1: batch@0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" - integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY= + integrity sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw== 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" @@ -2730,7 +2740,7 @@ body-parser@1.20.0: bonjour@^3.5.0: version "3.5.0" resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5" - integrity sha1-jokKGD2O6aI5OzhExpGkK897yfU= + integrity sha512-RaVTblr+OnEli0r/ud8InrU7D+G0y6aJhlxaLa6Pwty4+xoxboF1BsUI45tujvRpbj9dQVoglChqonGAsjEBYg== dependencies: array-flatten "^2.1.0" deep-equal "^1.0.1" @@ -2742,7 +2752,7 @@ bonjour@^3.5.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= + integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== brace-expansion@^1.1.7: version "1.1.11" @@ -2778,7 +2788,7 @@ braces@^3.0.2, braces@~3.0.2: 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= + integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== browser-process-hrtime@^1.0.0: version "1.0.0" @@ -2896,7 +2906,7 @@ buffer-json@^2.0.0: 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= + integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ== buffer@^4.3.0: version "4.9.2" @@ -2910,12 +2920,12 @@ buffer@^4.3.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= + integrity sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ== bytes@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" - integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= + integrity sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw== bytes@3.1.2: version "3.1.2" @@ -3010,26 +3020,26 @@ call-bind@^1.0.0, call-bind@^1.0.2: call-me-maybe@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" - integrity sha1-JtII6onje1y95gJQoV8DHBak1ms= + integrity sha512-wCyFsDQkKPwwF8BDwOiWNx/9K45L/hvggQiDbve+viMNMQnWhrlYIuBk09offfwCRtCO9P6XwUttufzU11WCVw== caller-callsite@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" - integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ= + integrity sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ== dependencies: callsites "^2.0.0" caller-path@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" - integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ= + integrity sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A== dependencies: caller-callsite "^2.0.0" callsites@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" - integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= + integrity sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ== callsites@^3.0.0: version "3.1.0" @@ -3039,7 +3049,7 @@ callsites@^3.0.0: 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= + integrity sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w== dependencies: no-case "^2.2.0" upper-case "^1.1.1" @@ -3047,7 +3057,7 @@ camel-case@3.0.x: camelcase@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" - integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= + integrity sha512-FxAv7HpHrXbh3aPo4o2qxHay2lkLY3x5Mw3KeE4KQE8ysVfziWeRZDwcjauvwBSGEC/nXUPzZy8zeh4HokqOnw== camelcase@^5.0.0, camelcase@^5.3.1: version "5.3.1" @@ -3070,9 +3080,9 @@ caniuse-api@^3.0.0: lodash.uniq "^4.5.0" caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001332: - version "1.0.30001338" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001338.tgz#b5dd7a7941a51a16480bdf6ff82bded1628eec0d" - integrity sha512-1gLHWyfVoRDsHieO+CaeYe7jSo/MT7D7lhaXUiwwbuR5BwQxORs0f1tAwUSQr3YbxRXJvxHM/PA5FfPQRnsPeQ== + version "1.0.30001341" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001341.tgz#59590c8ffa8b5939cf4161f00827b8873ad72498" + integrity sha512-2SodVrFFtvGENGCv0ChVJIDQ0KPaS1cg7/qtfMaICgeMolDdo/Z2OD32F0Aq9yl6F4YFwGPBS5AaPqNYiW4PoA== capture-exit@^2.0.0: version "2.0.0" @@ -3089,12 +3099,12 @@ case-sensitive-paths-webpack-plugin@^2.3.0: 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== chalk@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" - integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= + integrity sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A== dependencies: ansi-styles "^2.2.1" escape-string-regexp "^1.0.2" @@ -3234,7 +3244,7 @@ clean-stack@^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= + integrity sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw== dependencies: restore-cursor "^2.0.0" @@ -3612,17 +3622,17 @@ copy-webpack-plugin@^5.1.1: webpack-log "^2.0.0" core-js-compat@^3.21.0, core-js-compat@^3.22.1, core-js-compat@^3.6.5: - version "3.22.4" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.22.4.tgz#d700f451e50f1d7672dcad0ac85d910e6691e579" - integrity sha512-dIWcsszDezkFZrfm1cnB4f/J85gyhiCpxbgBdohWCDtSVuAaChTSpPV7ldOQf/Xds2U5xCIJZOK82G4ZPAIswA== + version "3.22.5" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.22.5.tgz#7fffa1d20cb18405bd22756ca1353c6f1a0e8614" + integrity sha512-rEF75n3QtInrYICvJjrAgV03HwKiYvtKHdPtaba1KucG+cNZ4NJnH9isqt979e67KZlhpbCOTwnsvnIr+CVeOg== dependencies: browserslist "^4.20.3" semver "7.0.0" core-js-pure@^3.20.2: - version "3.22.4" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.22.4.tgz#a992210f4cad8b32786b8654563776c56b0e0d0a" - integrity sha512-4iF+QZkpzIz0prAFuepmxwJ2h5t4agvE8WPYqs2mjLJMNNwJOnpch76w2Q7bUfCPEv/V7wpvOfog0w273M+ZSw== + version "3.22.5" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.22.5.tgz#bdee0ed2f9b78f2862cda4338a07b13a49b6c9a9" + integrity sha512-8xo9R00iYD7TcV7OrC98GwxiUEAabVWO3dix+uyWjnYrx9fyASLlIX+f/3p5dW5qByaP2bcZ8X/T47s55et/tA== core-js@^2.4.0: version "2.6.12" @@ -3630,9 +3640,9 @@ core-js@^2.4.0: integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== core-js@^3.4.3, core-js@^3.6.5: - version "3.22.4" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.22.4.tgz#f4b3f108d45736935aa028444a69397e40d8c531" - integrity sha512-1uLykR+iOfYja+6Jn/57743gc9n73EWiOnSJJ4ba3B4fOEYDBv25MagmEZBxTp5cWq4b/KPx/l77zgsp28ju4w== + version "3.22.5" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.22.5.tgz#a5f5a58e663d5c0ebb4e680cd7be37536fb2a9cf" + integrity sha512-VP/xYuvJ0MJWRAobcmQ8F2H6Bsn+s7zqAAjFaHGBMc5AQm7zaelhD1LGduFn2EehEcQcU+br6t+fwbpQ5d1ZWA== core-util-is@1.0.2: version "1.0.2" @@ -3651,10 +3661,10 @@ cos-js-sdk-v5@^0.5.27: dependencies: xmldom "^0.1.27" -cosmiconfig-typescript-loader@^1.0.0: - version "1.0.9" - resolved "https://registry.yarnpkg.com/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-1.0.9.tgz#69c523f7e8c3d9f27f563d02bbeadaf2f27212d3" - integrity sha512-tRuMRhxN4m1Y8hP9SNYfz7jRwt8lZdWxdjg/ohg5esKmsndJIn4yT96oJVcf5x0eA11taXl+sIp+ielu529k6g== +cosmiconfig-typescript-loader@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-2.0.0.tgz#bc4f5bfcaa11a353714ecdef00c4f2226ef191b8" + integrity sha512-2NlGul/E3vTQEANqPziqkA01vfiuUU8vT0jZAuUIjEW8u3eCcnCQWLggapCjhbF76s7KQF0fM0kXSKmzaDaG1g== dependencies: cosmiconfig "^7" ts-node "^10.7.0" @@ -4606,9 +4616,9 @@ error-stack-parser@^2.0.6: stackframe "^1.1.1" es-abstract@^1.17.2, es-abstract@^1.19.0, es-abstract@^1.19.1, es-abstract@^1.19.2, es-abstract@^1.19.5: - version "1.20.0" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.20.0.tgz#b2d526489cceca004588296334726329e0a6bfb6" - integrity sha512-URbD8tgRthKD3YcC39vbvSDrX23upXnPcnGAjQfgxXF5ID75YcENawc9ZX/9iTP9ptUyfCLIxTTuMYoRfiOVKA== + version "1.20.1" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.20.1.tgz#027292cd6ef44bd12b1913b828116f54787d1814" + integrity sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA== dependencies: call-bind "^1.0.2" es-to-primitive "^1.2.1" @@ -4629,7 +4639,7 @@ es-abstract@^1.17.2, es-abstract@^1.19.0, es-abstract@^1.19.1, es-abstract@^1.19 object-inspect "^1.12.0" object-keys "^1.1.1" object.assign "^4.1.2" - regexp.prototype.flags "^1.4.1" + regexp.prototype.flags "^1.4.3" string.prototype.trimend "^1.0.5" string.prototype.trimstart "^1.0.5" unbox-primitive "^1.0.2" @@ -4940,9 +4950,9 @@ events@^3.0.0: integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== eventsource@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-1.1.0.tgz#00e8ca7c92109e94b0ddf32dac677d841028cfaf" - integrity sha512-VSJjT5oCNrFvCS6igjzPAt5hBzQ2qPBFIbJ03zLI9SE0mxwZpMw6BfJrbFHm1a141AavMEB8JHmBhWAd66PfCg== + version "1.1.1" + resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-1.1.1.tgz#4544a35a57d7120fba4fa4c86cb4023b2c09df2f" + integrity sha512-qV5ZC0h7jYIAOhArFJgSfdyz6rALJyb270714o7ZtNnw2WSJ+eexhKtE0O8LYPRsHZHf2osHKZBxGPvm3kPkCA== dependencies: original "^1.0.0" @@ -5617,14 +5627,14 @@ glob@7.1.4: path-is-absolute "^1.0.0" glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: - version "7.2.0" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" - integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== + 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" @@ -6285,9 +6295,9 @@ ip-regex@^2.1.0: 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= + version "1.1.8" + resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.8.tgz#ae05948f6b075435ed3307acce04629da8cdbf48" + integrity sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg== ipaddr.js@1.9.1, ipaddr.js@^1.9.0: version "1.9.1" @@ -7845,7 +7855,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.4, minimatch@^3.1.2: +minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== @@ -9500,7 +9510,7 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" -regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.4.1: +regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.4.3: version "1.4.3" resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz#87cab30f80f66660181a3bb7bf5981a872b367ac" integrity sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA== @@ -11009,7 +11019,7 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= -typescript@^4.4.3: +typescript@^4.6.4: version "4.6.4" resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.6.4.tgz#caa78bbc3a59e6a5c510d35703f6a09877ce45e9" integrity sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg== @@ -11378,9 +11388,9 @@ vue-loader@^15.9.2: vue-style-loader "^4.1.0" vue-router@^3.1.3: - version "3.5.3" - resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-3.5.3.tgz#041048053e336829d05dafacf6a8fb669a2e7999" - integrity sha512-FUlILrW3DGitS2h+Xaw8aRNvGTwtuaxrRkNSHWTizOfLUie7wuYwezeZ50iflRn8YPV5kxmU2LQuu3nM/b3Zsg== + version "3.5.4" + resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-3.5.4.tgz#c453c0b36bc75554de066fefc3f2a9c3212aca70" + integrity sha512-x+/DLAJZv2mcQ7glH2oV9ze8uPwcI+H+GgTgTmb5I55bCgY3+vXWIsqbYUzbBSZnwFHEJku4eoaH/x98veyymQ== vue-splitpane@^1.0.6: version "1.0.6" From eaad8aa9d1c719eaa96ac02033a4f287f656218c Mon Sep 17 00:00:00 2001 From: Angelo Date: Wed, 18 May 2022 17:48:19 +0800 Subject: [PATCH 2/2] fix(requirement): added django-treebeard to requirement --- backend/requirements.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/backend/requirements.txt b/backend/requirements.txt index b7f8dc0..f8a2024 100644 --- a/backend/requirements.txt +++ b/backend/requirements.txt @@ -41,3 +41,4 @@ urllib3==1.26.6 user-agents==2.2.0 whitenoise==5.3.0 openpyxl==3.0.9 +django-treebeard>=4.5.1 \ No newline at end of file