diff --git a/.gitignore b/.gitignore
index 8eab571ef..5d11210e9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -9,4 +9,6 @@ build
.idea
venv
*.egg-info
-/misc/config_tools/dist
\ No newline at end of file
+/misc/config_tools/dist
+/misc/config_tools/schema/sliced.xsd
+/misc/config_tools/schema/allchecks.xsd
diff --git a/misc/config_tools/MANIFEST.in b/misc/config_tools/MANIFEST.in
new file mode 100644
index 000000000..ae881f0ea
--- /dev/null
+++ b/misc/config_tools/MANIFEST.in
@@ -0,0 +1,4 @@
+graft data
+graft schema
+graft launch_config
+include configurator/src/assets/schema/scenario.json
diff --git a/misc/config_tools/build.cmd b/misc/config_tools/build.cmd
new file mode 100644
index 000000000..cbf60464b
--- /dev/null
+++ b/misc/config_tools/build.cmd
@@ -0,0 +1,9 @@
+@echo off
+python scenario_config/schema_slicer.py
+python scenario_config/jsonschema/converter.py
+xmllint --xinclude schema/datachecks.xsd > schema/allchecks.xsd
+python -m build
+rem pip install .\dist\acrn_config_tools-3.0-py3-none-any.whl --force-reinstall
+del .\configurator\thirdLib\acrn_config_tools-3.0-py3-none-any.whl
+python .\configurator\thirdLib\manager.py install
+echo build and install success
diff --git a/misc/config_tools/configurator/.gitignore b/misc/config_tools/configurator/.gitignore
index f8fcebd05..317c8ccc3 100644
--- a/misc/config_tools/configurator/.gitignore
+++ b/misc/config_tools/configurator/.gitignore
@@ -21,7 +21,3 @@ build
*.njsproj
*.sln
*.sw?
-
-# TS temp file
-tauri-plugin.js.map
-tauri-plugin.js
diff --git a/misc/config_tools/configurator/README.md b/misc/config_tools/configurator/README.md
index 97248c8d7..1a20730c2 100644
--- a/misc/config_tools/configurator/README.md
+++ b/misc/config_tools/configurator/README.md
@@ -1,6 +1,6 @@
# ACRN Configurator
-This version based on tauri, WIP.
+This version is based on Tauri, WIP.
## Features
@@ -18,6 +18,10 @@ This version based on tauri, WIP.
Please follow [this guide](https://tauri.studio/docs/getting-started/prerequisites)
to install system dependencies **(including yarn)**.
+In Windows, [chocolatey](https://chocolatey.org/) is a Windows package manager,
+you can use `choco install xsltproc` to install `xsltproc` package,
+which provide `xmllint` command.
+
### 2. Clone Project And Install Project Dependencies.
#### Linux
@@ -36,7 +40,7 @@ Similar to Linux.
On macOS, you may need to install git and python3 via `brew`.
-In Windows environment maybe you need to install git and python3 via chocolatey or manually,
+In the Windows environment maybe you need to install git and python3 via chocolatey or manually,
and replace the command line `python3` with `py -3`.
### 3. How To Build
@@ -51,12 +55,18 @@ make configurator
#### Windows/macOS
-Run follow command in the 'acrn-hypervisor' directory.
+Run following command in the 'acrn-hypervisor' directory.
```shell
-python3 misc/config_tools/scenario_config/schema_slicer.py
-python3 misc/config_tools/scenario_config/xs2js.py
-cd misc/config_tools/configurator
+cd misc/config_tools
+python scenario_config/schema_slicer.py
+python scenario_config/xs2js.py
+xmllint --xinclude schema/datachecks.xsd > schema/allchecks.xsd
+
+python -m build
+
+cd configurator
+python thirdLib/manager.py install
yarn build
```
@@ -75,5 +85,4 @@ acrn-configurator
You can find msi(Windows)/dmg(macOS) folder under the
`misc/config_tools/configurator/src-tauri/target/release/bundle`
-
directory, the installer in the folder.
diff --git a/misc/config_tools/configurator/src/lib/common.js b/misc/config_tools/configurator/__init__.py
similarity index 100%
rename from misc/config_tools/configurator/src/lib/common.js
rename to misc/config_tools/configurator/__init__.py
diff --git a/misc/config_tools/configurator/index.html b/misc/config_tools/configurator/index.html
index 6a0629e54..01767a158 100644
--- a/misc/config_tools/configurator/index.html
+++ b/misc/config_tools/configurator/index.html
@@ -2,23 +2,23 @@
-
+
- Vite App
-
+ ACRN Configurator
-
-
-
-
+
+
+
+
+
+
+
+ Loading...
+
+
Please wait for 5 seconds~
+
+
+
+
diff --git a/misc/config_tools/configurator/package.json b/misc/config_tools/configurator/package.json
index ff48c9008..b8b78a17c 100644
--- a/misc/config_tools/configurator/package.json
+++ b/misc/config_tools/configurator/package.json
@@ -15,33 +15,29 @@
"tauri": "tauri"
},
"dependencies": {
- "@fortawesome/fontawesome-svg-core": "^1.3.0",
- "@fortawesome/free-regular-svg-icons": "^6.0.0",
- "@fortawesome/free-solid-svg-icons": "^6.0.0",
- "@fortawesome/react-fontawesome": "^0.1.17",
- "@popperjs/core": "^2.11.2",
- "@rjsf/core": "^4.0.1",
+ "@lljj/vue3-form-naive": "^1.12.2",
+ "@popperjs/core": "^2.11.5",
"@rollup/plugin-replace": "^4.0.0",
- "@tauri-apps/api": "^1.0.0-rc.1",
+ "@tauri-apps/api": "^1.0.0-rc.3",
+ "@vicons/carbon": "^0.12.0",
+ "@vicons/fa": "^0.12.0",
+ "@vicons/utils": "^0.1.4",
+ "ajv-i18n": "^4.2.0",
"bootstrap": "^5.1.3",
+ "bootstrap-vue-3": "^0.1.10",
"js-base64": "^3.7.2",
"lodash": "^4.17.21",
+ "naive-ui": "^2.28.1",
"node-fetch": "2",
- "query-string": "^7.1.1",
- "react": "^17.0.2",
- "react-bootstrap": "^2.1.2",
- "react-dom": "^17.0.2",
- "react-icons": "^4.3.1",
- "react-router": "^6.2.1",
- "react-router-dom": "^6.2.1",
- "vconsole": "^3.14.3"
+ "sass": "^1.50.0",
+ "vconsole": "^3.14.6",
+ "vfonts": "^0.0.3",
+ "vue": "^3.2.25",
+ "vue-router": "4"
},
"devDependencies": {
- "@tauri-apps/cli": "^1.0.0-rc.5",
- "@types/lodash": "^4.14.179",
- "@types/node": "^17.0.21",
- "@vitejs/plugin-react": "^1.0.7",
- "sass": "^1.49.9",
- "vite": "^2.8.0"
+ "@tauri-apps/cli": "^1.0.0-rc.8",
+ "@vitejs/plugin-vue": "^2.3.1",
+ "vite": "^2.9.2"
}
}
diff --git a/misc/config_tools/configurator/public/favicon.ico b/misc/config_tools/configurator/public/favicon.ico
new file mode 100644
index 000000000..df36fcfb7
Binary files /dev/null and b/misc/config_tools/configurator/public/favicon.ico differ
diff --git a/misc/config_tools/configurator/pyodide/README.md b/misc/config_tools/configurator/pyodide/README.md
new file mode 100644
index 000000000..0760f8145
--- /dev/null
+++ b/misc/config_tools/configurator/pyodide/README.md
@@ -0,0 +1,27 @@
+# ACRN Configurator WASM Python Module
+
+Every file must set `__package__ = 'configurator.pyodide'` before import,
+set this magic var can resolve python relative import error when we direct run it.
+
+## Function define
+
+Every python script need a test function and a main function.
+
+### test
+
+run script will call this function,
+so please set script default params in this function
+
+### main
+
+in js side will use this function.
+like:
+
+```javascript
+// after pyodide install all dependices
+var launch_cfg_gen = pyodide.pyimport("configurator.pyodide.launch_cfg_gen").main;
+var board_xml = this.readFile('xxxx/board.xml');
+var scenario_xml = this.readFile('xxx/scenario.xml');
+var launch_scripts = launch_cfg_gen(board_xml, scenario_xml);
+console.log(launch_scripts)
+```
diff --git a/misc/config_tools/configurator/pyodide/__init__.py b/misc/config_tools/configurator/pyodide/__init__.py
new file mode 100644
index 000000000..d2958166b
--- /dev/null
+++ b/misc/config_tools/configurator/pyodide/__init__.py
@@ -0,0 +1 @@
+from .pyodide import *
diff --git a/misc/config_tools/configurator/pyodide/generateLaunchScript.py b/misc/config_tools/configurator/pyodide/generateLaunchScript.py
new file mode 100644
index 000000000..f5974dd42
--- /dev/null
+++ b/misc/config_tools/configurator/pyodide/generateLaunchScript.py
@@ -0,0 +1,51 @@
+#!/usr/bin/env python3
+__package__ = 'configurator.pyodide'
+
+import os
+from tempfile import TemporaryDirectory
+from pathlib import Path
+
+from launch_config.launch_cfg_gen import main as launch_cfg_gen_main
+
+from .pyodide import convert_result, nuc11_board, nuc11_scenario, write_temp_file
+
+
+def generate_launch_script(board, scenario, user_vm_id=0):
+ """
+
+ :param board: board xml text
+ :param scenario: scenario xml text
+ :param user_vm_id: the vm which you want to generate launch script, will generate all launch script if it set to zero
+ """
+ launch_scripts = {}
+ with TemporaryDirectory() as tmpdir:
+ # Write file to dir
+ write_temp_file(tmpdir, {
+ 'board.xml': board,
+ 'scenario.xml': scenario
+ })
+
+ # define path
+ board_file_path = Path(tmpdir) / 'board.xml'
+ scenario_file_path = Path(tmpdir) / 'scenario.xml'
+ launch_script_output_dir = Path(tmpdir) / 'output'
+
+ # generate launch script
+ launch_cfg_gen_main(board_file_path, scenario_file_path, user_vm_id, launch_script_output_dir)
+
+ # get output and convert it to {filename: content}
+ for filename in os.listdir(launch_script_output_dir):
+ abs_name = launch_script_output_dir / str(filename)
+ launch_scripts[filename] = open(abs_name, encoding='utf-8').read()
+ return convert_result(launch_scripts)
+
+
+main = generate_launch_script
+
+
+def test():
+ main(nuc11_board, nuc11_scenario)
+
+
+if __name__ == '__main__':
+ test()
diff --git a/misc/config_tools/configurator/pyodide/loadBoard.py b/misc/config_tools/configurator/pyodide/loadBoard.py
new file mode 100644
index 000000000..9f7fb1742
--- /dev/null
+++ b/misc/config_tools/configurator/pyodide/loadBoard.py
@@ -0,0 +1,98 @@
+#!/usr/bin/env python3
+__package__ = 'configurator.pyodide'
+
+import json
+from copy import deepcopy
+
+import elementpath
+import lxml.etree as etree
+from bs4 import BeautifulSoup
+
+from . import convert_result, nuc11_board, scenario_json_schema
+
+
+def get_dynamic_scenario(board):
+ """
+
+ :type board: str
+ :param board: board xml text
+ """
+ board_xml = etree.fromstring(board)
+
+ def get_enum(source, options):
+ elements = [str(x) for x in elementpath.select(source, options) if x]
+ elements = list(set(elements))
+ if not elements:
+ elements = ['']
+ return elements
+
+ def dynamic_enum(**enum_setting):
+ # value from env
+ function, source = [
+ {"get_enum": get_enum, "board_xml": board_xml}[enum_setting[key]]
+ for key in ['function', 'source']
+ ]
+ # value from given
+ selector, sorted_func = [enum_setting[key] for key in ['selector', 'sorted']]
+
+ # get enum data
+ enum = function(source, selector)
+ if sorted_func:
+ enum = sorted(enum, key=eval(sorted_func))
+ return enum
+
+ def dynamic_enum_apply(obj):
+ # get json schema enum obj
+ if 'enum' in obj and isinstance(obj['enum'], dict):
+ enum_setting = obj['enum']
+ # check enum obj type
+ if enum_setting['type'] == 'dynamicEnum':
+ del enum_setting['type']
+ # replace json schema obj enum field data
+ obj['enum'] = dynamic_enum(**enum_setting)
+ return obj
+
+ data = json.loads(scenario_json_schema, object_hook=dynamic_enum_apply)
+
+ form_schemas = {}
+ tab_types = ['HV', 'PreLaunchedVM', 'ServiceVM', 'PostLaunchedVM']
+ form_types = ['BasicConfigType', 'AdvancedConfigType']
+ for tab_type in tab_types:
+ form_schemas[tab_type] = {}
+ for form_type in form_types:
+ form_schema = deepcopy(data)
+ current_form_type_schema_obj = form_schema['definitions'][f'{tab_type}{form_type}']
+ for key in ['type', 'required', 'properties']:
+ form_schema[key] = current_form_type_schema_obj[key]
+ form_schemas[tab_type][form_type] = form_schema
+
+ return form_schemas
+
+
+def get_board_info(board):
+ soup = BeautifulSoup(board, 'xml')
+ result = {
+ 'name': soup.select_one('acrn-config').attrs['board'] + '.board.xml',
+ 'content': board,
+ 'BIOS_INFO': soup.select_one('BIOS_INFO').text,
+ 'BASE_BOARD_INFO': soup.select_one('BASE_BOARD_INFO').text
+ }
+ return result
+
+
+def load_board(board):
+ result = {
+ 'scenarioJSONSchema': get_dynamic_scenario(board),
+ 'boardInfo': get_board_info(board)
+ }
+ return convert_result(result)
+
+
+def test():
+ load_board(nuc11_board)
+
+
+main = load_board
+
+if __name__ == '__main__':
+ test()
diff --git a/misc/config_tools/configurator/pyodide/loadScenario.py b/misc/config_tools/configurator/pyodide/loadScenario.py
new file mode 100644
index 000000000..897e2eabc
--- /dev/null
+++ b/misc/config_tools/configurator/pyodide/loadScenario.py
@@ -0,0 +1,78 @@
+#!/usr/bin/env python3
+__package__ = 'configurator.pyodide'
+
+import json
+
+import xmltodict
+
+from . import convert_result, nuc11_scenario, scenario_json_schema
+
+
+def get_array_and_int_keys():
+ array_keys = []
+ int_keys = ['@id']
+
+ def object_mapper(obj):
+ if not isinstance(obj, dict):
+ return obj
+ for key, value in obj.items():
+ if not isinstance(value, dict):
+ continue
+ if value.get('type', '') == 'array':
+ array_keys.append(key)
+ elif value.get('type', '') == 'integer':
+ int_keys.append(key)
+ return obj
+
+ json.loads(scenario_json_schema, object_hook=object_mapper)
+ array_keys = list(set(array_keys))
+ int_keys = list(set(int_keys))
+ return array_keys, int_keys
+
+
+def load_scenario_xml(scenario):
+ """
+ convert scenario xml to json data followed scenario json schema
+
+ :type scenario: str
+ :param scenario: scenario xml text
+ :return:
+ """
+ arr_keys, int_keys = get_array_and_int_keys()
+ scenario_xml = xmltodict.parse(scenario)
+ scenario_xml = json.dumps(scenario_xml)
+
+ def correct_struct(obj):
+ if not isinstance(obj, dict):
+ return obj
+ keys_need_remove = []
+ for key, value in obj.items():
+ if value is None:
+ keys_need_remove.append(key)
+ continue
+ if key in int_keys:
+ if isinstance(obj[key], list):
+ obj[key] = [int(x) for x in obj[key]]
+ elif not isinstance(value, int):
+ obj[key] = int(value)
+ if key in arr_keys and not isinstance(value, list):
+ obj[key] = [value]
+ for key in keys_need_remove:
+ del obj[key]
+ return obj
+
+ scenario_dict = json.loads(scenario_xml, object_hook=correct_struct)
+ return scenario_dict
+
+
+def main(scenario):
+ result = load_scenario_xml(scenario)
+ return convert_result(result)
+
+
+def test():
+ main(nuc11_scenario)
+
+
+if __name__ == '__main__':
+ test()
diff --git a/misc/config_tools/configurator/pyodide/pyodide.py b/misc/config_tools/configurator/pyodide/pyodide.py
new file mode 100644
index 000000000..6a1484dc8
--- /dev/null
+++ b/misc/config_tools/configurator/pyodide/pyodide.py
@@ -0,0 +1,60 @@
+#!/usr/bin/env python3
+__package__ = 'configurator.pyodide'
+
+import json
+import sys
+from pathlib import Path
+
+
+class LazyPath:
+ def __init__(self, my):
+ self.my = my
+
+ def __truediv__(self, other):
+ return str(self.my / other)
+
+
+def file_text(path):
+ return open(path, encoding='utf-8').read()
+
+
+# path define
+config_tools_dir = Path(__file__).absolute().parent.parent.parent
+configurator_dir = config_tools_dir / 'configurator'
+schema_dir = config_tools_dir / 'schema'
+scenario_xml_schema_path = schema_dir / 'sliced.xsd'
+datachecks_xml_schema_path = schema_dir / 'allchecks.xsd'
+
+nuc11_folder = LazyPath(config_tools_dir / 'data' / 'nuc11tnbi5')
+
+# file define
+nuc11_board = file_text(nuc11_folder / 'nuc11tnbi5.xml')
+nuc11_scenario = file_text(nuc11_folder / 'shared_launch_6user_vm.xml')
+scenario_json_schema = file_text(configurator_dir / 'src' / 'assets' / 'schema' / 'scenario.json')
+
+debug = sys.platform != 'emscripten'
+
+
+def convert_result(result):
+ if debug:
+ print(json.dumps(result, indent=' '))
+ return json.dumps(result)
+
+
+def write_temp_file(tmpdir, file_dict: dict):
+ temp_path = Path(tmpdir)
+ for filename, content in file_dict.items():
+ with open(temp_path / filename, 'w', encoding='utf-8') as f:
+ f.write(content)
+
+
+def main():
+ pass
+
+
+def test():
+ pass
+
+
+if __name__ == '__main__':
+ test()
diff --git a/misc/config_tools/configurator/pyodide/tests.py b/misc/config_tools/configurator/pyodide/tests.py
new file mode 100644
index 000000000..9ef904e48
--- /dev/null
+++ b/misc/config_tools/configurator/pyodide/tests.py
@@ -0,0 +1,22 @@
+#!/usr/bin/env python3
+__package__ = 'configurator.pyodide'
+
+from .loadBoard import test as load_board_test
+from .loadScenario import test as load_scenario_test
+from .generateLaunchScript import test as generate_launch_script_test
+from .validateScenario import test as validate_scenario_test
+
+
+def main():
+ load_board_test()
+ load_scenario_test()
+ generate_launch_script_test()
+ validate_scenario_test()
+
+
+def test():
+ main()
+
+
+if __name__ == '__main__':
+ test()
diff --git a/misc/config_tools/configurator/pyodide/validateScenario.py b/misc/config_tools/configurator/pyodide/validateScenario.py
new file mode 100644
index 000000000..f1c7edf3c
--- /dev/null
+++ b/misc/config_tools/configurator/pyodide/validateScenario.py
@@ -0,0 +1,54 @@
+#!/usr/bin/env python3
+__package__ = 'configurator.pyodide'
+
+from pathlib import Path
+from tempfile import TemporaryDirectory
+
+from scenario_config.default_populator import DefaultValuePopulatingStage
+from scenario_config.pipeline import PipelineObject, PipelineEngine
+from scenario_config.validator import ValidatorConstructionByFileStage, SemanticValidationStage
+from scenario_config.xml_loader import XMLLoadStage
+
+from .pyodide import (
+ convert_result, write_temp_file,
+ nuc11_board, nuc11_scenario, scenario_xml_schema_path, datachecks_xml_schema_path
+)
+
+
+def main(board, scenario):
+ pipeline = PipelineEngine(["board_path", "scenario_path", "schema_path", "datachecks_path"])
+ pipeline.add_stages([
+ ValidatorConstructionByFileStage(),
+ XMLLoadStage("schema"),
+
+ XMLLoadStage("board"),
+ XMLLoadStage("scenario"),
+ DefaultValuePopulatingStage(),
+ SemanticValidationStage(),
+ ])
+ with TemporaryDirectory() as tmpdir:
+ write_temp_file(tmpdir, {
+ 'board.xml': board,
+ 'scenario.xml': scenario
+ })
+ board_file_path = Path(tmpdir) / 'board.xml'
+ scenario_file_path = Path(tmpdir) / 'scenario.xml'
+
+ obj = PipelineObject(
+ board_path=board_file_path,
+ scenario_path=scenario_file_path,
+ schema_path=scenario_xml_schema_path,
+ datachecks_path=datachecks_xml_schema_path
+ )
+ pipeline.run(obj)
+
+ validate_result = obj.get("semantic_errors")
+ return convert_result(validate_result)
+
+
+def test():
+ main(nuc11_board, nuc11_scenario)
+
+
+if __name__ == '__main__':
+ test()
diff --git a/misc/config_tools/configurator/requirements.txt b/misc/config_tools/configurator/requirements.txt
index a519e4a90..404cda000 100644
--- a/misc/config_tools/configurator/requirements.txt
+++ b/misc/config_tools/configurator/requirements.txt
@@ -1,7 +1,3 @@
-lxml
-xmltodict
-xmlschema
-defusedxml
+build
+tqdm
requests
-bs4
-sphinx
diff --git a/misc/config_tools/configurator/src-tauri/.gitignore b/misc/config_tools/configurator/src-tauri/.gitignore
index dd7b1f523..c12370459 100644
--- a/misc/config_tools/configurator/src-tauri/.gitignore
+++ b/misc/config_tools/configurator/src-tauri/.gitignore
@@ -2,13 +2,3 @@
# will have compiled files and executables
/target/
WixTools
-
-# These are backup files generated by rustfmt
-**/*.rs.bk
-
-config.json
-bundle.json
-
-# ts temp file
-types/*.js
-types/*.map
diff --git a/misc/config_tools/configurator/src-tauri/Cargo.lock b/misc/config_tools/configurator/src-tauri/Cargo.lock
index 20c550165..a3c3b78d8 100644
--- a/misc/config_tools/configurator/src-tauri/Cargo.lock
+++ b/misc/config_tools/configurator/src-tauri/Cargo.lock
@@ -6,8 +6,7 @@ version = 3
name = "acrn-configurator"
version = "0.1.0"
dependencies = [
- "dirs 4.0.0",
- "env_logger",
+ "dirs",
"glob",
"itertools",
"log",
@@ -38,6 +37,21 @@ dependencies = [
"memchr",
]
+[[package]]
+name = "alloc-no-stdlib"
+version = "2.0.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "35ef4730490ad1c4eae5c4325b2a95f521d023e5c885853ff7aca0a6a1631db3"
+
+[[package]]
+name = "alloc-stdlib"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "697ed7edc0f1711de49ce108c541623a0af97c6c60b2f6e2b65229847ac843c2"
+dependencies = [
+ "alloc-no-stdlib",
+]
+
[[package]]
name = "ansi_term"
version = "0.12.1"
@@ -49,41 +63,9 @@ dependencies = [
[[package]]
name = "anyhow"
-version = "1.0.55"
+version = "1.0.56"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "159bb86af3a200e19a068f4224eae4c8bb2d0fa054c7e5d1cacd5cef95e684cd"
-
-[[package]]
-name = "arrayref"
-version = "0.3.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544"
-
-[[package]]
-name = "arrayvec"
-version = "0.5.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b"
-
-[[package]]
-name = "arrayvec"
-version = "0.7.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6"
-
-[[package]]
-name = "ashpd"
-version = "0.2.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "098dee97729c0164b39a8a7de9c20e4b0eb9cd57f87c8bb465224587b44b1683"
-dependencies = [
- "enumflags2",
- "futures",
- "rand 0.8.5",
- "serde",
- "serde_repr",
- "zbus",
-]
+checksum = "4361135be9122e0870de935d7c439aef945b9f9ddd4199a553b5270b49c82a27"
[[package]]
name = "async-broadcast"
@@ -162,15 +144,15 @@ dependencies = [
[[package]]
name = "async-task"
-version = "4.1.0"
+version = "4.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "677d306121baf53310a3fd342d88dc0824f6bbeace68347593658525565abee8"
+checksum = "30696a84d817107fc028e049980e09d5e140e8da8f1caeb17e8e950658a3cea9"
[[package]]
name = "async-trait"
-version = "0.1.52"
+version = "0.1.53"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "061a7acccaa286c011ddc30970520b98fa40e00c9d644633fb26b5fc63a265e3"
+checksum = "ed6aa3524a2dfcf9fe180c51eae2b58738348d819517ceadf95789c51fff7600"
dependencies = [
"proc-macro2",
"quote",
@@ -195,8 +177,8 @@ version = "0.15.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "58aeb089fb698e06db8089971c7ee317ab9644bade33383f63631437b03aafb6"
dependencies = [
- "glib-sys 0.15.6",
- "gobject-sys 0.15.5",
+ "glib-sys 0.15.10",
+ "gobject-sys 0.15.10",
"libc",
"system-deps 6.0.2",
]
@@ -219,17 +201,6 @@ dependencies = [
"wildmatch",
]
-[[package]]
-name = "atty"
-version = "0.2.14"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
-dependencies = [
- "hermit-abi",
- "libc",
- "winapi",
-]
-
[[package]]
name = "autocfg"
version = "1.1.0"
@@ -257,32 +228,6 @@ version = "1.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
-[[package]]
-name = "blake2b_simd"
-version = "0.5.11"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "afa748e348ad3be8263be728124b24a24f268266f6f5d58af9d75f6a40b5c587"
-dependencies = [
- "arrayref",
- "arrayvec 0.5.2",
- "constant_time_eq",
-]
-
-[[package]]
-name = "blake3"
-version = "1.3.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a08e53fc5a564bb15bfe6fae56bd71522205f1f91893f9c0116edad6496c183f"
-dependencies = [
- "arrayref",
- "arrayvec 0.7.2",
- "cc",
- "cfg-if",
- "constant_time_eq",
- "digest",
- "rayon",
-]
-
[[package]]
name = "block"
version = "0.1.6"
@@ -298,6 +243,27 @@ dependencies = [
"generic-array",
]
+[[package]]
+name = "brotli"
+version = "3.3.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a1a0b1dbcc8ae29329621f8d4f0d835787c1c38bb1401979b49d13b0b305ff68"
+dependencies = [
+ "alloc-no-stdlib",
+ "alloc-stdlib",
+ "brotli-decompressor",
+]
+
+[[package]]
+name = "brotli-decompressor"
+version = "2.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "59ad2d4653bf5ca36ae797b1f4bb4dbddb60ce49ca4aed8a2ce4829f60425b80"
+dependencies = [
+ "alloc-no-stdlib",
+ "alloc-stdlib",
+]
+
[[package]]
name = "bstr"
version = "0.2.17"
@@ -325,27 +291,6 @@ version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c4872d67bab6358e59559027aa3b9157c53d9358c51423c17554809a8858e0f8"
-[[package]]
-name = "bzip2"
-version = "0.4.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6afcd980b5f3a45017c57e57a2fcccbb351cc43a356ce117ef760ef8052b89b0"
-dependencies = [
- "bzip2-sys",
- "libc",
-]
-
-[[package]]
-name = "bzip2-sys"
-version = "0.1.11+1.0.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc"
-dependencies = [
- "cc",
- "libc",
- "pkg-config",
-]
-
[[package]]
name = "cache-padded"
version = "1.2.0"
@@ -354,9 +299,9 @@ checksum = "c1db59621ec70f09c5e9b597b220c7a2b43611f4710dc03ceb8748637775692c"
[[package]]
name = "cairo-rs"
-version = "0.15.6"
+version = "0.15.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e8b14c80d8d1a02fa6d914b9d1afeeca9bc34257f8300d9696e1e331ae114223"
+checksum = "129e928d3eda625f53ce257589efbe5143416875fd01bddd08c8c6feb8b9962b"
dependencies = [
"bitflags",
"cairo-sys-rs",
@@ -371,16 +316,16 @@ version = "0.15.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3c55d429bef56ac9172d25fecb85dc8068307d17acd74b377866b7a1ef25d3c8"
dependencies = [
- "glib-sys 0.15.6",
+ "glib-sys 0.15.10",
"libc",
"system-deps 6.0.2",
]
[[package]]
name = "cargo_toml"
-version = "0.11.4"
+version = "0.11.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4e270ef0cd868745878982f7ce470aa898d0d4bb248af67f0cf66f54617913ef"
+checksum = "5809dd3e6444651fd1cdd3dbec71eca438c439a0fcc8081674a14da0afe50185"
dependencies = [
"serde",
"serde_derive",
@@ -392,15 +337,18 @@ name = "cc"
version = "1.0.73"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11"
-dependencies = [
- "jobserver",
-]
+
+[[package]]
+name = "cesu8"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c"
[[package]]
name = "cfb"
-version = "0.4.0"
+version = "0.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ca453e8624711b2f0f4eb47076a318feda166252a827ee25d067b43de83dcba0"
+checksum = "74f89d248799e3f15f91b70917f65381062a01bb8e222700ea0e5a7ff9785f9c"
dependencies = [
"byteorder",
"uuid",
@@ -445,34 +393,6 @@ version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e"
-[[package]]
-name = "chrono"
-version = "0.4.19"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "670ad68c9088c2a963aaa298cb369688cf3f9465ce5e2d4ca10e6e0098a1ce73"
-dependencies = [
- "libc",
- "num-integer",
- "num-traits",
- "time",
- "winapi",
-]
-
-[[package]]
-name = "clap"
-version = "3.1.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5177fac1ab67102d8989464efd043c6ff44191b1557ec1ddd489b4f7e1447e77"
-dependencies = [
- "atty",
- "bitflags",
- "indexmap",
- "os_str_bytes",
- "strsim 0.10.0",
- "termcolor",
- "textwrap",
-]
-
[[package]]
name = "cocoa"
version = "0.24.0"
@@ -504,6 +424,16 @@ dependencies = [
"objc",
]
+[[package]]
+name = "combine"
+version = "4.6.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "50b727aacc797f9fc28e355d21f34709ac4fc9adecfe470ad07b8f4464f53062"
+dependencies = [
+ "bytes",
+ "memchr",
+]
+
[[package]]
name = "concurrent-queue"
version = "1.2.2"
@@ -513,12 +443,6 @@ dependencies = [
"cache-padded",
]
-[[package]]
-name = "constant_time_eq"
-version = "0.1.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc"
-
[[package]]
name = "convert_case"
version = "0.4.0"
@@ -568,9 +492,9 @@ dependencies = [
[[package]]
name = "cpufeatures"
-version = "0.2.1"
+version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "95059428f66df56b63431fdb4e1947ed2190586af5c5a8a8b71122bdf5a7f469"
+checksum = "59a6001667ab124aebae2a495118e11d30984c3a653e99d86d58971708cf5e4b"
dependencies = [
"libc",
]
@@ -586,43 +510,19 @@ dependencies = [
[[package]]
name = "crossbeam-channel"
-version = "0.5.2"
+version = "0.5.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e54ea8bc3fb1ee042f5aace6e3c6e025d3874866da222930f70ce62aceba0bfa"
+checksum = "5aaa7bd5fb665c6864b5f963dd9097905c54125909c7aa94c9e18507cdbe6c53"
dependencies = [
"cfg-if",
"crossbeam-utils",
]
-[[package]]
-name = "crossbeam-deque"
-version = "0.8.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6455c0ca19f0d2fbf751b908d5c55c1f5cbc65e03c4225427254b46890bdde1e"
-dependencies = [
- "cfg-if",
- "crossbeam-epoch",
- "crossbeam-utils",
-]
-
-[[package]]
-name = "crossbeam-epoch"
-version = "0.9.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c00d6d2ea26e8b151d99093005cb442fb9a37aeaca582a03ec70946f49ab5ed9"
-dependencies = [
- "cfg-if",
- "crossbeam-utils",
- "lazy_static",
- "memoffset",
- "scopeguard",
-]
-
[[package]]
name = "crossbeam-utils"
-version = "0.8.7"
+version = "0.8.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b5e5bed1f1c269533fa816a0a5492b3545209a205ca1a54842be180eb63a16a6"
+checksum = "0bf124c720b7686e3c2663cf54062ab0f68a88af2fb6a030e87e30bf721fcb38"
dependencies = [
"cfg-if",
"lazy_static",
@@ -667,9 +567,9 @@ dependencies = [
[[package]]
name = "ctor"
-version = "0.1.21"
+version = "0.1.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ccc0a48a9b826acdf4028595adc9db92caea352f7af011a3034acd172a52a0aa"
+checksum = "f877be4f7c9f246b183111634f75baa039715e3f46ce860677d3b19a69fb229c"
dependencies = [
"quote",
"syn",
@@ -693,12 +593,12 @@ dependencies = [
[[package]]
name = "darling"
-version = "0.13.1"
+version = "0.13.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d0d720b8683f8dd83c65155f0530560cba68cd2bf395f6513a483caee57ff7f4"
+checksum = "a01d95850c592940db9b8194bc39f4bc0e89dee5c4265e4b1807c34a9aba453c"
dependencies = [
- "darling_core 0.13.1",
- "darling_macro 0.13.1",
+ "darling_core 0.13.4",
+ "darling_macro 0.13.4",
]
[[package]]
@@ -717,9 +617,9 @@ dependencies = [
[[package]]
name = "darling_core"
-version = "0.13.1"
+version = "0.13.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7a340f241d2ceed1deb47ae36c4144b2707ec7dd0b649f894cb39bb595986324"
+checksum = "859d65a907b6852c9361e3185c862aae7fafd2887876799fa55f5f99dc40d610"
dependencies = [
"fnv",
"ident_case",
@@ -742,11 +642,11 @@ dependencies = [
[[package]]
name = "darling_macro"
-version = "0.13.1"
+version = "0.13.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "72c41b3b7352feb3211a0d743dc5700a4e3b60f51bd2b368892d1e0f9a95f44b"
+checksum = "9c972679f83bdf9c42bd905396b6c3588a843a17f0f16dfcfa3e2c5d57441835"
dependencies = [
- "darling_core 0.13.1",
+ "darling_core 0.13.4",
"quote",
"syn",
]
@@ -763,12 +663,11 @@ dependencies = [
[[package]]
name = "deflate"
-version = "0.8.6"
+version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "73770f8e1fe7d64df17ca66ad28994a0a623ea497fa69486e14984e715c5d174"
+checksum = "c86f7e25f518f4b81808a2cf1c50996a61f5c2eb394b2393bd87f2a4780a432f"
dependencies = [
"adler32",
- "byteorder",
]
[[package]]
@@ -803,18 +702,6 @@ checksum = "f2fb860ca6fafa5552fb6d0e816a69c8e49f0908bf524e30a90d97c85892d506"
dependencies = [
"block-buffer",
"crypto-common",
- "subtle",
-]
-
-[[package]]
-name = "dirs"
-version = "1.0.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3fd78930633bd1c6e35c4b42b1df7b0cbc6bc191146e512bb3bedf243fcc3901"
-dependencies = [
- "libc",
- "redox_users 0.3.5",
- "winapi",
]
[[package]]
@@ -843,7 +730,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6"
dependencies = [
"libc",
- "redox_users 0.4.0",
+ "redox_users",
"winapi",
]
@@ -854,7 +741,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d"
dependencies = [
"libc",
- "redox_users 0.4.0",
+ "redox_users",
"winapi",
]
@@ -899,9 +786,9 @@ checksum = "4ef6b89e5b37196644d8796de5268852ff179b44e96276cf4290264843743bb7"
[[package]]
name = "enumflags2"
-version = "0.7.3"
+version = "0.7.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a25c90b056b3f84111cf183cbeddef0d3a0bbe9a674f057e1a1533c315f24def"
+checksum = "e75d4cd21b95383444831539909fbb14b9dc3fdceb2a6f5d36577329a1f55ccb"
dependencies = [
"enumflags2_derive",
"serde",
@@ -909,28 +796,15 @@ dependencies = [
[[package]]
name = "enumflags2_derive"
-version = "0.7.3"
+version = "0.7.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "144ec79496cbab6f84fa125dc67be9264aef22eb8a28da8454d9c33f15108da4"
+checksum = "f58dc3c5e468259f19f2d46304a6b28f1c3d034442e14b322d2b850e36f6d5ae"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
-[[package]]
-name = "env_logger"
-version = "0.9.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0b2cf0344971ee6c64c31be0d530793fba457d322dfec2810c453d0ef228f9c3"
-dependencies = [
- "atty",
- "humantime",
- "log",
- "regex",
- "termcolor",
-]
-
[[package]]
name = "event-listener"
version = "2.5.2"
@@ -958,26 +832,26 @@ dependencies = [
[[package]]
name = "filetime"
-version = "0.2.15"
+version = "0.2.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "975ccf83d8d9d0d84682850a38c8169027be83368805971cc4f238c2b245bc98"
+checksum = "c0408e2626025178a6a7f7ffc05a25bc47103229f19c113755de7bf63816290c"
dependencies = [
"cfg-if",
"libc",
- "redox_syscall 0.2.10",
+ "redox_syscall",
"winapi",
]
[[package]]
name = "flate2"
-version = "1.0.22"
+version = "1.0.23"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1e6988e897c1c9c485f43b47a529cef42fde0547f9d8d41a7062518f1d8fc53f"
+checksum = "b39522e96686d38f4bc984b9198e3a0613264abaebaff2c5c918bfa6b6da09af"
dependencies = [
"cfg-if",
"crc32fast",
"libc",
- "miniz_oxide 0.4.4",
+ "miniz_oxide",
]
[[package]]
@@ -1152,9 +1026,9 @@ dependencies = [
[[package]]
name = "gdk-pixbuf"
-version = "0.15.6"
+version = "0.15.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d8750501d75f318c2ec0314701bc8403901303210def80bafd13f6b6059a3f45"
+checksum = "678516f1baef591d270ca10587c01a12542a731a7879cc62391a18191a470831"
dependencies = [
"bitflags",
"gdk-pixbuf-sys",
@@ -1165,13 +1039,13 @@ dependencies = [
[[package]]
name = "gdk-pixbuf-sys"
-version = "0.15.1"
+version = "0.15.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "413424d9818621fa3cfc8a3a915cdb89a7c3c507d56761b4ec83a9a98e587171"
+checksum = "140b2f5378256527150350a8346dbdb08fadc13453a7a2d73aecd5fab3c402a7"
dependencies = [
- "gio-sys 0.15.6",
- "glib-sys 0.15.6",
- "gobject-sys 0.15.5",
+ "gio-sys 0.15.10",
+ "glib-sys 0.15.10",
+ "gobject-sys 0.15.10",
"libc",
"system-deps 6.0.2",
]
@@ -1184,9 +1058,9 @@ checksum = "32e7a08c1e8f06f4177fb7e51a777b8c1689f743a7bc11ea91d44d2226073a88"
dependencies = [
"cairo-sys-rs",
"gdk-pixbuf-sys",
- "gio-sys 0.15.6",
- "glib-sys 0.15.6",
- "gobject-sys 0.15.5",
+ "gio-sys 0.15.10",
+ "glib-sys 0.15.10",
+ "gobject-sys 0.15.10",
"libc",
"pango-sys",
"pkg-config",
@@ -1200,7 +1074,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b4b7f8c7a84b407aa9b143877e267e848ff34106578b64d1e0a24bf550716178"
dependencies = [
"gdk-sys",
- "glib-sys 0.15.6",
+ "glib-sys 0.15.10",
"libc",
"system-deps 6.0.2",
"x11",
@@ -1242,9 +1116,9 @@ dependencies = [
[[package]]
name = "getrandom"
-version = "0.2.5"
+version = "0.2.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d39cd93900197114fa1fcb7ae84ca742095eed9442088988ae74fa744e930e77"
+checksum = "9be70c98951c83b8d2f8f60d7065fa6d5146873094452a1008da8c2f1e4205ad"
dependencies = [
"cfg-if",
"libc",
@@ -1253,15 +1127,15 @@ dependencies = [
[[package]]
name = "gio"
-version = "0.15.6"
+version = "0.15.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "96efd8a1c00d890f6b45671916e165b5e43ccec61957d443aff6d7e44f62d348"
+checksum = "76cd21a7a674ea811749661012512b0ba5237ba404ccbcab2850db5537549b64"
dependencies = [
"bitflags",
"futures-channel",
"futures-core",
"futures-io",
- "gio-sys 0.15.6",
+ "gio-sys 0.15.10",
"glib",
"libc",
"once_cell",
@@ -1283,12 +1157,12 @@ dependencies = [
[[package]]
name = "gio-sys"
-version = "0.15.6"
+version = "0.15.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1d0fa5052773f5a56b8ae47dab09d040f5d9ce1311f4f99006e16e9a08269296"
+checksum = "32157a475271e2c4a023382e9cab31c4584ee30a97da41d3c4e9fdd605abcf8d"
dependencies = [
- "glib-sys 0.15.6",
- "gobject-sys 0.15.5",
+ "glib-sys 0.15.10",
+ "gobject-sys 0.15.10",
"libc",
"system-deps 6.0.2",
"winapi",
@@ -1296,9 +1170,9 @@ dependencies = [
[[package]]
name = "glib"
-version = "0.15.6"
+version = "0.15.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "aa570813c504bdf7539a9400180c2dd4b789a819556fb86da7226d7d1b037b49"
+checksum = "a826fad715b57834920839d7a594c3b5e416358c7d790bdaba847a40d7c1d96d"
dependencies = [
"bitflags",
"futures-channel",
@@ -1306,8 +1180,8 @@ dependencies = [
"futures-executor",
"futures-task",
"glib-macros",
- "glib-sys 0.15.6",
- "gobject-sys 0.15.5",
+ "glib-sys 0.15.10",
+ "gobject-sys 0.15.10",
"libc",
"once_cell",
"smallvec",
@@ -1316,9 +1190,9 @@ dependencies = [
[[package]]
name = "glib-macros"
-version = "0.15.6"
+version = "0.15.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "41bfd8d227dead0829ac142454e97531b93f576d0805d779c42bfd799c65c572"
+checksum = "dac4d47c544af67747652ab1865ace0ffa1155709723ac4f32e97587dd4735b2"
dependencies = [
"anyhow",
"heck 0.4.0",
@@ -1341,9 +1215,9 @@ dependencies = [
[[package]]
name = "glib-sys"
-version = "0.15.6"
+version = "0.15.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f4366377bd56697de8aaee24e673c575d2694d72e7756324ded2b0428829a7b8"
+checksum = "ef4b192f8e65e9cf76cbf4ea71fa8e3be4a0e18ffe3d68b8da6836974cc5bad4"
dependencies = [
"libc",
"system-deps 6.0.2",
@@ -1381,11 +1255,11 @@ dependencies = [
[[package]]
name = "gobject-sys"
-version = "0.15.5"
+version = "0.15.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "df6859463843c20cf3837e3a9069b6ab2051aeeadf4c899d33344f4aea83189a"
+checksum = "0d57ce44246becd17153bd035ab4d32cfee096a657fc01f2231c9278378d1e0a"
dependencies = [
- "glib-sys 0.15.6",
+ "glib-sys 0.15.10",
"libc",
"system-deps 6.0.2",
]
@@ -1423,9 +1297,9 @@ dependencies = [
"cairo-sys-rs",
"gdk-pixbuf-sys",
"gdk-sys",
- "gio-sys 0.15.6",
- "glib-sys 0.15.6",
- "gobject-sys 0.15.5",
+ "gio-sys 0.15.10",
+ "glib-sys 0.15.10",
+ "gobject-sys 0.15.10",
"libc",
"pango-sys",
"system-deps 6.0.2",
@@ -1445,12 +1319,6 @@ dependencies = [
"syn",
]
-[[package]]
-name = "hashbrown"
-version = "0.11.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e"
-
[[package]]
name = "heck"
version = "0.3.3"
@@ -1483,9 +1351,9 @@ checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
[[package]]
name = "html5ever"
-version = "0.25.1"
+version = "0.25.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "aafcf38a1a36118242d29b92e1b08ef84e67e4a5ed06e0a80be20e6a32bfed6b"
+checksum = "e5c13fb08e5d4dfc151ee5e88bae63f7773d61852f3bdc73c9f4b9e1bde03148"
dependencies = [
"log",
"mac",
@@ -1512,12 +1380,6 @@ version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "21dec9db110f5f872ed9699c3ecf50cf16f423502706ba5c72462e28d3157573"
-[[package]]
-name = "humantime"
-version = "2.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4"
-
[[package]]
name = "ico"
version = "0.1.0"
@@ -1563,21 +1425,11 @@ dependencies = [
"winapi-util",
]
-[[package]]
-name = "indexmap"
-version = "1.8.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "282a6247722caba404c065016bbfa522806e51714c34f5dfc3e4a3a46fcb4223"
-dependencies = [
- "autocfg",
- "hashbrown",
-]
-
[[package]]
name = "infer"
-version = "0.4.0"
+version = "0.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f92b41dab759f9e8427c03f519c344a14655490b8db548dac1e57a75b3258391"
+checksum = "20b2b533137b9cad970793453d4f921c2e91312a6d88b1085c07bc15fc51bb3b"
dependencies = [
"cfb",
]
@@ -1638,32 +1490,37 @@ version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "905fbb87419c5cde6e3269537e4ea7d46431f3008c5d057e915ef3f115e7793c"
dependencies = [
- "glib-sys 0.15.6",
- "gobject-sys 0.15.5",
+ "glib-sys 0.15.10",
+ "gobject-sys 0.15.10",
"libc",
"system-deps 5.0.0",
]
+[[package]]
+name = "jni"
+version = "0.18.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "24967112a1e4301ca5342ea339763613a37592b8a6ce6cf2e4494537c7a42faf"
+dependencies = [
+ "cesu8",
+ "combine",
+ "jni-sys",
+ "log",
+ "thiserror",
+ "walkdir",
+]
+
[[package]]
name = "jni-sys"
version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130"
-[[package]]
-name = "jobserver"
-version = "0.1.24"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "af25a77299a7f711a01975c35a6a424eb6862092cc2d6c72c4ed6cbc56dfc1fa"
-dependencies = [
- "libc",
-]
-
[[package]]
name = "js-sys"
-version = "0.3.56"
+version = "0.3.57"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a38fc24e30fd564ce974c02bf1d337caddff65be6cc4735a1f7eab22a7440f04"
+checksum = "671a26f820db17c2a2750743f1dd03bafd15b98c9f30c7c2628c024c05d73397"
dependencies = [
"wasm-bindgen",
]
@@ -1699,24 +1556,25 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
[[package]]
name = "libc"
-version = "0.2.119"
+version = "0.2.124"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1bf2e165bb3457c8e098ea76f3e3bc9db55f87aa90d52d0e6be741470916aaa4"
+checksum = "21a41fed9d98f27ab1c6d161da622a4fa35e8a54a8adc24bbf3ddd0ef70b0e50"
[[package]]
name = "lock_api"
-version = "0.4.6"
+version = "0.4.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "88943dd7ef4a2e5a4bfa2753aaab3013e34ce2533d1996fb18ef591e315e2b3b"
+checksum = "327fa5b6a6940e4699ec49a9beae1ea4845c6bab9314e4f84ac68742139d8c53"
dependencies = [
+ "autocfg",
"scopeguard",
]
[[package]]
name = "log"
-version = "0.4.14"
+version = "0.4.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710"
+checksum = "6389c490849ff5bc16be905ae24bc913a9c8892e19b2341dbc175e14c341c2b8"
dependencies = [
"cfg-if",
]
@@ -1744,14 +1602,15 @@ checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4"
[[package]]
name = "mac-notification-sys"
-version = "0.3.0"
+version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3dfb6b71a9a89cd38b395d994214297447e8e63b1ba5708a9a2b0b1048ceda76"
+checksum = "297c13fc8ff9fa8b2d0e53850f80e0aa962628e865d447031ce58cdb062e5b29"
dependencies = [
"cc",
- "chrono",
- "dirs 1.0.5",
+ "dirs-next",
"objc-foundation",
+ "objc_id",
+ "time",
]
[[package]]
@@ -1809,28 +1668,18 @@ dependencies = [
[[package]]
name = "miniz_oxide"
-version = "0.3.7"
+version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "791daaae1ed6889560f8c4359194f56648355540573244a5448a83ba1ecc7435"
-dependencies = [
- "adler32",
-]
-
-[[package]]
-name = "miniz_oxide"
-version = "0.4.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a92518e98c078586bc6c934028adcca4c92a53d6a958196de835170a01d84e4b"
+checksum = "d2b29bd4bc3f33391105ebee3589c19197c4271e3e5a9ec9bfe8127eeff8f082"
dependencies = [
"adler",
- "autocfg",
]
[[package]]
name = "native-tls"
-version = "0.2.8"
+version = "0.2.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "48ba9f7719b5a0f42f338907614285fb5fd70e53858141f69898a1fb7203b24d"
+checksum = "fd7e2f3618557f980e0b17e8856252eee3c97fa12c54dff0ca290fb6266ca4a9"
dependencies = [
"lazy_static",
"libc",
@@ -1859,15 +1708,15 @@ dependencies = [
[[package]]
name = "ndk-context"
-version = "0.1.0"
+version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4e3c5cc68637e21fe8f077f6a1c9e0b9ca495bb74895226b476310f613325884"
+checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b"
[[package]]
name = "ndk-glue"
-version = "0.4.1"
+version = "0.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9b1454575120e3265d2442222299c711ace58ba417532ee4f0fc71b860016b93"
+checksum = "3648f3609716eb7dbf5f5b5d4b84fcd67dd4c34efcdb12e4a6c0929c2ac48349"
dependencies = [
"lazy_static",
"libc",
@@ -1924,9 +1773,9 @@ checksum = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb"
[[package]]
name = "notify-rust"
-version = "4.5.6"
+version = "4.5.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "367e1355a950d3e758e414f3ca1b3981a57a2aa1fa3338eb0059f5b230b6ffa4"
+checksum = "a995a3d2834cefa389218e7a35156e8ce544bc95f836900da01ee0b26a07e9d4"
dependencies = [
"mac-notification-sys",
"serde",
@@ -1978,18 +1827,18 @@ dependencies = [
[[package]]
name = "num_enum"
-version = "0.5.6"
+version = "0.5.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "720d3ea1055e4e4574c0c0b0f8c3fd4f24c4cdaf465948206dea090b57b526ad"
+checksum = "cf5395665662ef45796a4ff5486c5d41d29e0c09640af4c5f17fd94ee2c119c9"
dependencies = [
"num_enum_derive",
]
[[package]]
name = "num_enum_derive"
-version = "0.5.6"
+version = "0.5.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0d992b768490d7fe0d8586d9b5745f6c49f557da6d81dc982b1d167ad4edbb21"
+checksum = "3b0498641e53dd6ac1a4f22547548caa6864cc4933784319cd1775271c5a46ce"
dependencies = [
"proc-macro-crate 1.1.3",
"proc-macro2",
@@ -1997,6 +1846,15 @@ dependencies = [
"syn",
]
+[[package]]
+name = "num_threads"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "aba1801fb138d8e85e11d0fc70baf4fe1cdfffda7c6cd34a854905df588e5ed0"
+dependencies = [
+ "libc",
+]
+
[[package]]
name = "objc"
version = "0.2.7"
@@ -2004,6 +1862,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1"
dependencies = [
"malloc_buf",
+ "objc_exception",
]
[[package]]
@@ -2017,6 +1876,15 @@ dependencies = [
"objc_id",
]
+[[package]]
+name = "objc_exception"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ad970fb455818ad6cba4c122ad012fae53ae8b4795f86378bce65e4f6bab2ca4"
+dependencies = [
+ "cc",
+]
+
[[package]]
name = "objc_id"
version = "0.1.1"
@@ -2028,15 +1896,15 @@ dependencies = [
[[package]]
name = "once_cell"
-version = "1.9.0"
+version = "1.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "da32515d9f6e6e489d7bc9d84c71b060db7247dc035bbe44eac88cf87486d8d5"
+checksum = "87f3e037eac156d1775da914196f0f37741a274155e34a0b7e427c35d2a2ecb9"
[[package]]
name = "open"
-version = "2.1.0"
+version = "2.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5a82915836ef43159bb6a3c64d884c42329ccd0b8afdca737cf1e3dd701709dc"
+checksum = "9213e7b66aa06a7722828ee2980c1adff22a3922b582baaa1e62e30ca2a6c018"
dependencies = [
"pathdiff",
"winapi",
@@ -2106,20 +1974,11 @@ dependencies = [
"winapi",
]
-[[package]]
-name = "os_str_bytes"
-version = "6.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8e22443d1643a904602595ba1cd8f7d896afe56d26712531c5ff73a15b2fbf64"
-dependencies = [
- "memchr",
-]
-
[[package]]
name = "pango"
-version = "0.15.6"
+version = "0.15.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "78c7420fc01a390ec200da7395b64d705f5d82fe03e5d0708aee422c46538be7"
+checksum = "22e4045548659aee5313bde6c582b0d83a627b7904dd20dc2d9ef0895d414e4f"
dependencies = [
"bitflags",
"glib",
@@ -2130,12 +1989,12 @@ dependencies = [
[[package]]
name = "pango-sys"
-version = "0.15.1"
+version = "0.15.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7022c2fb88cd2d9d55e1a708a8c53a3ae8678234c4a54bf623400aeb7f31fac2"
+checksum = "d2a00081cde4661982ed91d80ef437c20eacaf6aa1a5962c0279ae194662c3aa"
dependencies = [
- "glib-sys 0.15.6",
- "gobject-sys 0.15.5",
+ "glib-sys 0.15.10",
+ "gobject-sys 0.15.10",
"libc",
"system-deps 6.0.2",
]
@@ -2154,7 +2013,17 @@ checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99"
dependencies = [
"instant",
"lock_api",
- "parking_lot_core",
+ "parking_lot_core 0.8.5",
+]
+
+[[package]]
+name = "parking_lot"
+version = "0.12.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "87f5ec2493a61ac0506c0f4199f99070cbe83857b0337006a30f3e6719b8ef58"
+dependencies = [
+ "lock_api",
+ "parking_lot_core 0.9.2",
]
[[package]]
@@ -2166,11 +2035,24 @@ dependencies = [
"cfg-if",
"instant",
"libc",
- "redox_syscall 0.2.10",
+ "redox_syscall",
"smallvec",
"winapi",
]
+[[package]]
+name = "parking_lot_core"
+version = "0.9.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "995f667a6c822200b0433ac218e05582f0e2efa1b922a3fd2fbaadc5f87bab37"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "redox_syscall",
+ "smallvec",
+ "windows-sys",
+]
+
[[package]]
name = "pathdiff"
version = "0.2.1"
@@ -2304,9 +2186,9 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
[[package]]
name = "pkg-config"
-version = "0.3.24"
+version = "0.3.25"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "58893f751c9b0412871a09abd62ecd2a00298c6c83befa223ef98c52aef40cbe"
+checksum = "1df8c4ec4b0627e53bdf214615ad287367e482558cf84b109250b37464dc03ae"
[[package]]
name = "png"
@@ -2322,14 +2204,14 @@ dependencies = [
[[package]]
name = "png"
-version = "0.16.8"
+version = "0.17.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3c3287920cb847dee3de33d301c463fba14dda99db24214ddf93f83d3021f4c6"
+checksum = "dc38c0ad57efb786dd57b9864e5b18bae478c00c824dc55a38bbc9da95dde3ba"
dependencies = [
"bitflags",
"crc32fast",
- "deflate 0.8.6",
- "miniz_oxide 0.3.7",
+ "deflate 1.0.0",
+ "miniz_oxide",
]
[[package]]
@@ -2345,12 +2227,6 @@ dependencies = [
"winapi",
]
-[[package]]
-name = "pollster"
-version = "0.2.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5da3b0203fd7ee5720aa0b5e790b591aa5d3f41c3ed2c34a3a393382198af2f7"
-
[[package]]
name = "ppv-lite86"
version = "0.2.16"
@@ -2414,18 +2290,18 @@ checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5"
[[package]]
name = "proc-macro2"
-version = "1.0.36"
+version = "1.0.37"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c7342d5883fbccae1cc37a2353b09c87c9b0f3afd73f5fb9bba687a1f733b029"
+checksum = "ec757218438d5fda206afc041538b2f6d889286160d649a86a24d37e1235afd1"
dependencies = [
"unicode-xid",
]
[[package]]
name = "quote"
-version = "1.0.15"
+version = "1.0.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "864d3e96a899863136fc6e99f3d7cae289dafe43bf2c5ac19b70df7210c0a145"
+checksum = "a1feb54ed693b93a84e14094943b84b7c4eae204c512b7ccb95ab0c66d278ad1"
dependencies = [
"proc-macro2",
]
@@ -2490,7 +2366,7 @@ version = "0.6.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7"
dependencies = [
- "getrandom 0.2.5",
+ "getrandom 0.2.6",
]
[[package]]
@@ -2513,79 +2389,38 @@ dependencies = [
[[package]]
name = "raw-window-handle"
-version = "0.4.2"
+version = "0.4.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fba75eee94a9d5273a68c9e1e105d9cffe1ef700532325788389e5a83e2522b7"
+checksum = "b800beb9b6e7d2df1fe337c9e3d04e3af22a124460fb4c30fcc22c9117cefb41"
dependencies = [
"cty",
]
-[[package]]
-name = "rayon"
-version = "1.5.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c06aca804d41dbc8ba42dfd964f0d01334eceb64314b9ecf7c5fad5188a06d90"
-dependencies = [
- "autocfg",
- "crossbeam-deque",
- "either",
- "rayon-core",
-]
-
-[[package]]
-name = "rayon-core"
-version = "1.9.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d78120e2c850279833f1dd3582f730c4ab53ed95aeaaaa862a2a5c71b1656d8e"
-dependencies = [
- "crossbeam-channel",
- "crossbeam-deque",
- "crossbeam-utils",
- "lazy_static",
- "num_cpus",
-]
-
[[package]]
name = "redox_syscall"
-version = "0.1.57"
+version = "0.2.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce"
-
-[[package]]
-name = "redox_syscall"
-version = "0.2.10"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8383f39639269cde97d255a32bdb68c047337295414940c68bdd30c2e13203ff"
+checksum = "62f25bc4c7e55e0b0b7a1d43fb893f4fa1361d0abe38b9ce4f323c2adfe6ef42"
dependencies = [
"bitflags",
]
[[package]]
name = "redox_users"
-version = "0.3.5"
+version = "0.4.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "de0737333e7a9502c789a36d7c7fa6092a49895d4faa31ca5df163857ded2e9d"
+checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b"
dependencies = [
- "getrandom 0.1.16",
- "redox_syscall 0.1.57",
- "rust-argon2",
-]
-
-[[package]]
-name = "redox_users"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "528532f3d801c87aec9def2add9ca802fe569e44a544afe633765267840abe64"
-dependencies = [
- "getrandom 0.2.5",
- "redox_syscall 0.2.10",
+ "getrandom 0.2.6",
+ "redox_syscall",
+ "thiserror",
]
[[package]]
name = "regex"
-version = "1.5.4"
+version = "1.5.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d07a8629359eb56f1e2fb1652bb04212c072a87ba68546a04065d525673ac461"
+checksum = "1a11647b6b25ff05a515cb92c365cec08801e83423a235b51e231e1808747286"
dependencies = [
"aho-corasick",
"memchr",
@@ -2618,15 +2453,14 @@ dependencies = [
[[package]]
name = "rfd"
-version = "0.7.0"
+version = "0.8.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2aaf1d71ccd44689f7c2c72da1117fd8db71f72a76fe9b5c5dbb17ab903007e0"
+checksum = "92e3107b2e81967df7c0617e978dc656795583a73ad0ddbf645ce60109caf8c2"
dependencies = [
- "ashpd",
"block",
"dispatch",
- "glib-sys 0.15.6",
- "gobject-sys 0.15.5",
+ "glib-sys 0.15.10",
+ "gobject-sys 0.15.10",
"gtk-sys",
"js-sys",
"lazy_static",
@@ -2634,24 +2468,11 @@ dependencies = [
"objc",
"objc-foundation",
"objc_id",
- "pollster",
"raw-window-handle",
"wasm-bindgen",
"wasm-bindgen-futures",
"web-sys",
- "windows 0.30.0",
-]
-
-[[package]]
-name = "rust-argon2"
-version = "0.8.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4b18820d944b33caa75a71378964ac46f58517c92b6ae5f762636247c09e78fb"
-dependencies = [
- "base64",
- "blake2b_simd",
- "constant_time_eq",
- "crossbeam-utils",
+ "windows 0.35.0",
]
[[package]]
@@ -2669,7 +2490,7 @@ version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366"
dependencies = [
- "semver 1.0.6",
+ "semver 1.0.7",
]
[[package]]
@@ -2769,9 +2590,9 @@ dependencies = [
[[package]]
name = "semver"
-version = "1.0.6"
+version = "1.0.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a4a3381e03edd24287172047536f20cabde766e2cd3e65e6b00fb3af51c4f38d"
+checksum = "d65bd28f48be7196d222d95b9243287f48d27aca604e08497513019ff0502cc4"
[[package]]
name = "semver-parser"
@@ -2838,9 +2659,9 @@ dependencies = [
[[package]]
name = "serde_with"
-version = "1.12.0"
+version = "1.12.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ec1e6ec4d8950e5b1e894eac0d360742f3b1407a6078a604a731c4b3f49cefbc"
+checksum = "946fa04a8ac43ff78a1f4b811990afb9ddbdf5890b46d6dda0ba1998230138b7"
dependencies = [
"rustversion",
"serde",
@@ -2849,11 +2670,11 @@ dependencies = [
[[package]]
name = "serde_with_macros"
-version = "1.5.1"
+version = "1.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "12e47be9471c72889ebafb5e14d5ff930d89ae7a67bbdb5f8abb564f845a927e"
+checksum = "e182d6ec6f05393cc0e5ed1bf81ad6db3a8feedf8ee515ecdd369809bcce8082"
dependencies = [
- "darling 0.13.1",
+ "darling 0.13.4",
"proc-macro2",
"quote",
"syn",
@@ -2938,15 +2759,15 @@ dependencies = [
[[package]]
name = "siphasher"
-version = "0.3.9"
+version = "0.3.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a86232ab60fa71287d7f2ddae4a7073f6b7aac33631c3015abb556f08c6d0a3e"
+checksum = "7bd3e3206899af3f8b12af284fafc038cc1dc2b41d1b89dd17297221c5d225de"
[[package]]
name = "slab"
-version = "0.4.5"
+version = "0.4.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9def91fd1e018fe007022791f865d0ccc9b3a0d5001e01aabb8b40e46000afb5"
+checksum = "eb703cfe953bccee95685111adeedb76fabe4e97549a58d16f03ea7b9367bb32"
[[package]]
name = "smallvec"
@@ -3001,13 +2822,13 @@ checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
[[package]]
name = "string_cache"
-version = "0.8.3"
+version = "0.8.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "33994d0838dc2d152d17a62adf608a869b5e846b65b389af7f3dbc1de45c5b26"
+checksum = "213494b7a2b503146286049378ce02b482200519accc31872ee8be91fa820a08"
dependencies = [
- "lazy_static",
"new_debug_unreachable",
- "parking_lot",
+ "once_cell",
+ "parking_lot 0.12.0",
"phf_shared 0.10.0",
"precomputed-hash",
"serde",
@@ -3015,12 +2836,12 @@ dependencies = [
[[package]]
name = "string_cache_codegen"
-version = "0.5.1"
+version = "0.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f24c8e5e19d22a726626f1a5e16fe15b132dcf21d10177fa5a45ce7962996b97"
+checksum = "6bb30289b722be4ff74a408c3cc27edeaad656e06cb1fe8fa9231fa59c728988"
dependencies = [
- "phf_generator 0.8.0",
- "phf_shared 0.8.0",
+ "phf_generator 0.10.0",
+ "phf_shared 0.10.0",
"proc-macro2",
"quote",
]
@@ -3076,17 +2897,11 @@ dependencies = [
"syn",
]
-[[package]]
-name = "subtle"
-version = "2.4.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601"
-
[[package]]
name = "syn"
-version = "1.0.86"
+version = "1.0.91"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8a65b3f4ffa0092e9887669db0eae07941f023991ab58ea44da8fe8e2d511c6b"
+checksum = "b683b2b825c8eef438b77c36a06dc262294da3d5a5813fac20da149241dcd44d"
dependencies = [
"proc-macro2",
"quote",
@@ -3139,9 +2954,9 @@ dependencies = [
[[package]]
name = "tao"
-version = "0.6.2"
+version = "0.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7b3b3bbc9151bce45db3cf9ccb808730c8df8786d0223f34591f6e5890503939"
+checksum = "2b6a3359088d4c4735a13f933202f4ecd91f5991b41a8eb757f2449c044ce925"
dependencies = [
"bitflags",
"cairo-rs",
@@ -3157,7 +2972,7 @@ dependencies = [
"gdkx11-sys",
"gio",
"glib",
- "glib-sys 0.15.6",
+ "glib-sys 0.15.10",
"gtk",
"instant",
"lazy_static",
@@ -3167,7 +2982,7 @@ dependencies = [
"ndk-glue",
"ndk-sys",
"objc",
- "parking_lot",
+ "parking_lot 0.11.2",
"raw-window-handle",
"scopeguard",
"serde",
@@ -3203,14 +3018,14 @@ dependencies = [
[[package]]
name = "tauri"
-version = "1.0.0-rc.3"
-source = "git+https://github.com/Weiyi-Feng/tauri.git#015e15cfd00cebe8d23cd9170493227c61cc4322"
+version = "1.0.0-rc.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f6d514a34b3f9a07e2002d95e1371b42a446636e3d571a59e974b21d6acf3007"
dependencies = [
"anyhow",
"attohttpc",
"bincode",
"cfg_aliases",
- "clap",
"dirs-next",
"either",
"embed_plist",
@@ -3233,7 +3048,7 @@ dependencies = [
"raw-window-handle",
"regex",
"rfd",
- "semver 1.0.6",
+ "semver 1.0.7",
"serde",
"serde_json",
"serde_repr",
@@ -3244,65 +3059,69 @@ dependencies = [
"tauri-macros",
"tauri-runtime",
"tauri-runtime-wry",
- "tauri-utils 1.0.0-rc.2",
+ "tauri-utils",
"tempfile",
"thiserror",
"tokio",
"url",
"uuid",
- "zip",
+ "windows 0.30.0",
]
[[package]]
name = "tauri-build"
-version = "1.0.0-rc.3"
+version = "1.0.0-rc.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "855e47d8cfb2219fc14d2eed2c09bfb35f9ecd71a40ca2084aeeee2d23e0b60d"
+checksum = "ede6462a4692e2fd5030497ad576264dc90eea5fa337182492e77291d45fc78b"
dependencies = [
"anyhow",
"cargo_toml",
"serde_json",
- "tauri-utils 1.0.0-rc.3",
+ "tauri-utils",
"winres",
]
[[package]]
name = "tauri-codegen"
-version = "1.0.0-rc.2"
-source = "git+https://github.com/Weiyi-Feng/tauri.git#015e15cfd00cebe8d23cd9170493227c61cc4322"
+version = "1.0.0-rc.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "54193ebdb010e85824301ce5f0940742b680d66376203f6425d549d2f32ad499"
dependencies = [
"base64",
- "blake3",
+ "brotli",
+ "ico",
+ "png 0.17.5",
"proc-macro2",
"quote",
"regex",
"serde",
"serde_json",
"sha2",
- "tauri-utils 1.0.0-rc.2",
+ "tauri-utils",
"thiserror",
"uuid",
"walkdir",
- "zstd",
]
[[package]]
name = "tauri-macros"
-version = "1.0.0-rc.2"
-source = "git+https://github.com/Weiyi-Feng/tauri.git#015e15cfd00cebe8d23cd9170493227c61cc4322"
+version = "1.0.0-rc.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c8b867ef4703cb8e50f128ee3c941895d94c01e0ebd9007a7b45ecca52516dbf"
dependencies = [
"heck 0.4.0",
"proc-macro2",
"quote",
"syn",
"tauri-codegen",
- "tauri-utils 1.0.0-rc.2",
+ "tauri-utils",
]
[[package]]
name = "tauri-runtime"
-version = "0.3.2"
-source = "git+https://github.com/Weiyi-Feng/tauri.git#015e15cfd00cebe8d23cd9170493227c61cc4322"
+version = "0.3.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5b289ac8eafc52a36425fcaf3de23febd0b2606d3cce2b39ac412a1817fae537"
dependencies = [
"gtk",
"http",
@@ -3310,7 +3129,7 @@ dependencies = [
"infer",
"serde",
"serde_json",
- "tauri-utils 1.0.0-rc.2",
+ "tauri-utils",
"thiserror",
"uuid",
"webview2-com",
@@ -3319,15 +3138,14 @@ dependencies = [
[[package]]
name = "tauri-runtime-wry"
-version = "0.3.2"
-source = "git+https://github.com/Weiyi-Feng/tauri.git#015e15cfd00cebe8d23cd9170493227c61cc4322"
+version = "0.3.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6a8bf16e0476a8249aa2c75e7b49ec4c059be5fb27d9f6514e30ed327e8e9fa2"
dependencies = [
"gtk",
- "ico",
- "infer",
- "png 0.16.8",
+ "rand 0.8.5",
"tauri-runtime",
- "tauri-utils 1.0.0-rc.2",
+ "tauri-utils",
"uuid",
"webview2-com",
"windows 0.30.0",
@@ -3336,32 +3154,11 @@ dependencies = [
[[package]]
name = "tauri-utils"
-version = "1.0.0-rc.2"
-source = "git+https://github.com/Weiyi-Feng/tauri.git#015e15cfd00cebe8d23cd9170493227c61cc4322"
-dependencies = [
- "ctor",
- "heck 0.4.0",
- "html5ever",
- "json-patch",
- "kuchiki",
- "phf 0.10.1",
- "proc-macro2",
- "quote",
- "serde",
- "serde_json",
- "serde_with",
- "serialize-to-javascript",
- "thiserror",
- "url",
- "zstd",
-]
-
-[[package]]
-name = "tauri-utils"
-version = "1.0.0-rc.3"
+version = "1.0.0-rc.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "21f11483d205c77d1ec398e80566485101696335983e69832cc6c41ab1e07266"
+checksum = "a67fcf8fdd1340de4e75c01966fceab03057a8b0e97864eb39a21e420deed503"
dependencies = [
+ "brotli",
"ctor",
"glob",
"heck 0.4.0",
@@ -3389,37 +3186,22 @@ dependencies = [
"cfg-if",
"fastrand",
"libc",
- "redox_syscall 0.2.10",
+ "redox_syscall",
"remove_dir_all",
"winapi",
]
[[package]]
name = "tendril"
-version = "0.4.2"
+version = "0.4.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a9ef557cb397a4f0a5a3a628f06515f78563f2209e64d47055d9dc6052bf5e33"
+checksum = "d24a120c5fc464a3458240ee02c299ebcb9d67b5249c8848b09d639dca8d7bb0"
dependencies = [
"futf",
"mac",
"utf-8",
]
-[[package]]
-name = "termcolor"
-version = "1.1.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2dfed899f0eb03f32ee8c6a0aabdb8a7949659e3466561fc0adf54e26d88c5f4"
-dependencies = [
- "winapi-util",
-]
-
-[[package]]
-name = "textwrap"
-version = "0.14.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0066c8d12af8b5acd21e00547c3797fde4e8677254a7ee429176ccebbe93dd80"
-
[[package]]
name = "thin-slice"
version = "0.1.1"
@@ -3457,12 +3239,12 @@ dependencies = [
[[package]]
name = "time"
-version = "0.1.43"
+version = "0.3.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ca8a50ef2360fbd1eeb0ecd46795a87a19024eb4b53c5dc916ca1fd95fe62438"
+checksum = "c2702e08a7a860f005826c6815dcac101b19b5eb330c27fe4a5928fec1d20ddd"
dependencies = [
"libc",
- "winapi",
+ "num_threads",
]
[[package]]
@@ -3494,18 +3276,18 @@ dependencies = [
[[package]]
name = "toml"
-version = "0.5.8"
+version = "0.5.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a31142970826733df8241ef35dc040ef98c679ab14d7c3e54d827099b3acecaa"
+checksum = "8d82e1a7758622a465f8cee077614c73484dac5b836c02ff6a40d5d1010324d7"
dependencies = [
"serde",
]
[[package]]
name = "tracing"
-version = "0.1.31"
+version = "0.1.34"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f6c650a8ef0cd2dd93736f033d21cbd1224c5a967aa0c258d00fcf7dafef9b9f"
+checksum = "5d0ecdcb44a79f0fe9844f0c4f33a342cbcbb5117de8001e6ba0dc2351327d09"
dependencies = [
"cfg-if",
"pin-project-lite",
@@ -3515,9 +3297,9 @@ dependencies = [
[[package]]
name = "tracing-attributes"
-version = "0.1.19"
+version = "0.1.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8276d9a4a3a558d7b7ad5303ad50b53d58264641b82914b7ada36bd762e7a716"
+checksum = "2e65ce065b4b5c53e73bb28912318cb8c9e9ad3921f1d669eb0e68b4c8143a2b"
dependencies = [
"proc-macro2",
"quote",
@@ -3526,9 +3308,9 @@ dependencies = [
[[package]]
name = "tracing-core"
-version = "0.1.22"
+version = "0.1.26"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "03cfcb51380632a72d3111cb8d3447a8d908e577d31beeac006f836383d29a23"
+checksum = "f54c8ca710e81886d498c2fd3331b56c93aa248d49de2222ad2742247c60072f"
dependencies = [
"lazy_static",
"valuable",
@@ -3547,9 +3329,9 @@ dependencies = [
[[package]]
name = "tracing-subscriber"
-version = "0.3.9"
+version = "0.3.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9e0ab7bdc962035a87fba73f3acca9b8a8d0034c2e6f60b84aeaaddddc155dce"
+checksum = "4bc28f93baff38037f64e6f43d34cfa1605f27a49c34e8a04c5e78b0babf2596"
dependencies = [
"ansi_term",
"lazy_static",
@@ -3636,7 +3418,7 @@ version = "0.8.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7"
dependencies = [
- "getrandom 0.2.5",
+ "getrandom 0.2.6",
]
[[package]]
@@ -3700,9 +3482,9 @@ checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6"
[[package]]
name = "wasm-bindgen"
-version = "0.2.79"
+version = "0.2.80"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "25f1af7423d8588a3d840681122e72e6a24ddbcb3f0ec385cac0d12d24256c06"
+checksum = "27370197c907c55e3f1a9fbe26f44e937fe6451368324e009cba39e139dc08ad"
dependencies = [
"cfg-if",
"wasm-bindgen-macro",
@@ -3710,9 +3492,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-backend"
-version = "0.2.79"
+version = "0.2.80"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8b21c0df030f5a177f3cba22e9bc4322695ec43e7257d865302900290bcdedca"
+checksum = "53e04185bfa3a779273da532f5025e33398409573f348985af9a1cbf3774d3f4"
dependencies = [
"bumpalo",
"lazy_static",
@@ -3725,9 +3507,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-futures"
-version = "0.4.29"
+version = "0.4.30"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2eb6ec270a31b1d3c7e266b999739109abce8b6c87e4b31fcfcd788b65267395"
+checksum = "6f741de44b75e14c35df886aff5f1eb73aa114fa5d4d00dcd37b5e01259bf3b2"
dependencies = [
"cfg-if",
"js-sys",
@@ -3737,9 +3519,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-macro"
-version = "0.2.79"
+version = "0.2.80"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2f4203d69e40a52ee523b2529a773d5ffc1dc0071801c87b3d270b471b80ed01"
+checksum = "17cae7ff784d7e83a2fe7611cfe766ecf034111b49deb850a3dc7699c08251f5"
dependencies = [
"quote",
"wasm-bindgen-macro-support",
@@ -3747,9 +3529,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-macro-support"
-version = "0.2.79"
+version = "0.2.80"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bfa8a30d46208db204854cadbb5d4baf5fcf8071ba5bf48190c3e59937962ebc"
+checksum = "99ec0dc7a4756fffc231aab1b9f2f578d23cd391390ab27f952ae0c9b3ece20b"
dependencies = [
"proc-macro2",
"quote",
@@ -3760,15 +3542,15 @@ dependencies = [
[[package]]
name = "wasm-bindgen-shared"
-version = "0.2.79"
+version = "0.2.80"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3d958d035c4438e28c70e4321a2911302f10135ce78a9c7834c0cab4123d06a2"
+checksum = "d554b7f530dee5964d9a9468d95c1f8b8acae4f282807e7d27d4b03099a46744"
[[package]]
name = "web-sys"
-version = "0.3.56"
+version = "0.3.57"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c060b319f29dd25724f09a2ba1418f142f539b2be99fbf4d2d5a8f7330afb8eb"
+checksum = "7b17e741662c70c8bd24ac5c5b18de314a2c26c32bf8346ee1e6f53de919c283"
dependencies = [
"js-sys",
"wasm-bindgen",
@@ -3785,10 +3567,10 @@ dependencies = [
"gdk",
"gdk-sys",
"gio",
- "gio-sys 0.15.6",
+ "gio-sys 0.15.10",
"glib",
- "glib-sys 0.15.6",
- "gobject-sys 0.15.5",
+ "glib-sys 0.15.10",
+ "gobject-sys 0.15.10",
"gtk",
"gtk-sys",
"javascriptcore-rs",
@@ -3808,9 +3590,9 @@ dependencies = [
"cairo-sys-rs",
"gdk-pixbuf-sys",
"gdk-sys",
- "gio-sys 0.15.6",
- "glib-sys 0.15.6",
- "gobject-sys 0.15.5",
+ "gio-sys 0.15.10",
+ "glib-sys 0.15.10",
+ "gobject-sys 0.15.10",
"gtk-sys",
"javascriptcore-rs-sys",
"libc",
@@ -3921,13 +3703,26 @@ version = "0.30.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b749ebd2304aa012c5992d11a25d07b406bdbe5f79d371cb7a918ce501a19eb0"
dependencies = [
- "windows_aarch64_msvc",
+ "windows_aarch64_msvc 0.30.0",
"windows_i686_gnu 0.30.0",
"windows_i686_msvc 0.30.0",
"windows_x86_64_gnu 0.30.0",
"windows_x86_64_msvc 0.30.0",
]
+[[package]]
+name = "windows"
+version = "0.35.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "08746b4b7ac95f708b3cccceb97b7f9a21a8916dd47fc99b0e6aaf7208f26fd7"
+dependencies = [
+ "windows_aarch64_msvc 0.35.0",
+ "windows_i686_gnu 0.35.0",
+ "windows_i686_msvc 0.35.0",
+ "windows_x86_64_gnu 0.35.0",
+ "windows_x86_64_msvc 0.35.0",
+]
+
[[package]]
name = "windows-bindgen"
version = "0.30.0"
@@ -3938,12 +3733,37 @@ dependencies = [
"windows_reader",
]
+[[package]]
+name = "windows-sys"
+version = "0.34.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5acdd78cb4ba54c0045ac14f62d8f94a03d10047904ae2a40afa1e99d8f70825"
+dependencies = [
+ "windows_aarch64_msvc 0.34.0",
+ "windows_i686_gnu 0.34.0",
+ "windows_i686_msvc 0.34.0",
+ "windows_x86_64_gnu 0.34.0",
+ "windows_x86_64_msvc 0.34.0",
+]
+
[[package]]
name = "windows_aarch64_msvc"
version = "0.30.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "29277a4435d642f775f63c7d1faeb927adba532886ce0287bd985bffb16b6bca"
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.34.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "17cffbe740121affb56fad0fc0e421804adf0ae00891205213b5cecd30db881d"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.35.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "db3bc5134e8ce0da5d64dcec3529793f1d33aee5a51fc2b4662e0f881dd463e6"
+
[[package]]
name = "windows_gen"
version = "0.30.0"
@@ -3966,6 +3786,18 @@ version = "0.30.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1145e1989da93956c68d1864f32fb97c8f561a8f89a5125f6a2b7ea75524e4b8"
+[[package]]
+name = "windows_i686_gnu"
+version = "0.34.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2564fde759adb79129d9b4f54be42b32c89970c18ebf93124ca8870a498688ed"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.35.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0343a6f35bf43a07b009b8591b78b10ea03de86b06f48e28c96206cd0f453b50"
+
[[package]]
name = "windows_i686_msvc"
version = "0.24.0"
@@ -3978,6 +3810,18 @@ version = "0.30.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d4a09e3a0d4753b73019db171c1339cd4362c8c44baf1bcea336235e955954a6"
+[[package]]
+name = "windows_i686_msvc"
+version = "0.34.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9cd9d32ba70453522332c14d38814bceeb747d80b3958676007acadd7e166956"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.35.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1acdcbf4ca63d8e7a501be86fee744347186275ec2754d129ddeab7a1e3a02e4"
+
[[package]]
name = "windows_macros"
version = "0.30.0"
@@ -4014,6 +3858,18 @@ version = "0.30.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8ca64fcb0220d58db4c119e050e7af03c69e6f4f415ef69ec1773d9aab422d5a"
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.34.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cfce6deae227ee8d356d19effc141a509cc503dfd1f850622ec4b0f84428e1f4"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.35.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "893c0924c5a990ec73cd2264d1c0cba1773a929e1a3f5dbccffd769f8c4edebb"
+
[[package]]
name = "windows_x86_64_msvc"
version = "0.24.0"
@@ -4026,6 +3882,18 @@ version = "0.30.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "08cabc9f0066848fef4bc6a1c1668e6efce38b661d2aeec75d18d8617eebb5f1"
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.34.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d19538ccc21819d01deaf88d6a17eae6596a12e9aafdbb97916fb49896d89de9"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.35.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a29bd61f32889c822c99a8fdf2e93378bd2fae4d7efd2693fab09fcaaf7eff4b"
+
[[package]]
name = "winres"
version = "0.1.12"
@@ -4048,10 +3916,11 @@ dependencies = [
[[package]]
name = "wry"
-version = "0.13.3"
+version = "0.14.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9514586e5c964d30cc7123c9aea9880ff7b3cb1c43f6a1dc8703941eb72ac89f"
+checksum = "6fd09ffc86ecea0a0d5f50cc8e4a8121a1bfc0b0825a160f86ac39e86979344c"
dependencies = [
+ "block",
"cocoa",
"core-graphics",
"gdk",
@@ -4059,6 +3928,7 @@ dependencies = [
"glib",
"gtk",
"http",
+ "jni",
"libc",
"log",
"objc",
@@ -4173,49 +4043,6 @@ dependencies = [
"zvariant",
]
-[[package]]
-name = "zip"
-version = "0.5.13"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "93ab48844d61251bb3835145c521d88aa4031d7139e8485990f60ca911fa0815"
-dependencies = [
- "byteorder",
- "bzip2",
- "crc32fast",
- "flate2",
- "thiserror",
- "time",
-]
-
-[[package]]
-name = "zstd"
-version = "0.10.0+zstd.1.5.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3b1365becbe415f3f0fcd024e2f7b45bacfb5bdd055f0dc113571394114e7bdd"
-dependencies = [
- "zstd-safe",
-]
-
-[[package]]
-name = "zstd-safe"
-version = "4.1.4+zstd.1.5.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2f7cd17c9af1a4d6c24beb1cc54b17e2ef7b593dc92f19e9d9acad8b182bbaee"
-dependencies = [
- "libc",
- "zstd-sys",
-]
-
-[[package]]
-name = "zstd-sys"
-version = "1.6.3+zstd.1.5.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fc49afa5c8d634e75761feda8c592051e7eeb4683ba827211eb0d731d3402ea8"
-dependencies = [
- "cc",
- "libc",
-]
-
[[package]]
name = "zvariant"
version = "3.1.2"
diff --git a/misc/config_tools/configurator/src-tauri/Cargo.toml b/misc/config_tools/configurator/src-tauri/Cargo.toml
index 01dadc0f5..56e3c483b 100644
--- a/misc/config_tools/configurator/src-tauri/Cargo.toml
+++ b/misc/config_tools/configurator/src-tauri/Cargo.toml
@@ -12,17 +12,16 @@ rust-version = "1.57"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[build-dependencies]
-tauri-build = { version = "1.0.0-rc.3", features = [] }
+tauri-build = { version = "1.0.0-rc.5", features = [] }
[dependencies]
serde_json = "1.0"
serde = { version = "1.0", features = ["derive"] }
-tauri = { git = "https://github.com/Weiyi-Feng/tauri.git", features = ["api-all", "cli"] }
-log = "0.4.14"
-env_logger = "0.9.0"
-glob = "0.3.0"
-dirs = "4.0.0"
-itertools = "0.10.3"
+tauri = { version = "1.0.0-rc.6", features = ["api-all"] }
+log = "0.4"
+glob = "0.3"
+dirs = "4.0"
+itertools = "0.10"
[features]
# by default Tauri runs in production mode
diff --git a/misc/config_tools/configurator/src-tauri/src/configurator.rs b/misc/config_tools/configurator/src-tauri/src/configurator.rs
index abcdf386d..191249158 100644
--- a/misc/config_tools/configurator/src-tauri/src/configurator.rs
+++ b/misc/config_tools/configurator/src-tauri/src/configurator.rs
@@ -1,5 +1,4 @@
use std::borrow::Borrow;
-use std::fs;
use std::ops::Add;
use std::path::{Path, PathBuf};
@@ -7,6 +6,12 @@ use serde::{Deserialize, Serialize};
use glob::{glob_with, MatchOptions};
use itertools::Itertools;
+
+use std::fs::{self, File};
+use std::io;
+use std::io::prelude::*;
+
+
#[derive(Serialize, Deserialize, Clone, Copy, Debug)]
#[repr(u16)]
#[non_exhaustive]
@@ -178,8 +183,8 @@ impl Configurator {
}
}
- pub fn add_history(&mut self, history_type: HistoryType, path: &Path) {
- let path_string: String = path.to_string_lossy().parse().unwrap();
+ pub fn add_history(&mut self, history_type: HistoryType, history_path: &Path) {
+ let path_string: String = history_path.to_string_lossy().parse().unwrap();
match history_type {
HistoryType::WorkingFolder => {
self.config_data.history.working_folder.insert(0, path_string);
@@ -266,8 +271,8 @@ pub fn get_history(history_type: HistoryType) -> Result {
}
#[tauri::command]
-pub fn add_history(history_type: HistoryType, path: String) -> Result<(), &'static str> {
- let path_buf = Path::new(&path);
+pub fn add_history(history_type: HistoryType, history_path: String) -> Result<(), &'static str> {
+ let path_buf = Path::new(&history_path);
if !(path_buf.is_dir() || path_buf.is_file()) {
return Err("Not a validate dir or file path.");
}
@@ -313,4 +318,69 @@ pub fn get_home() -> Result {
Ok(path.to_str().unwrap().to_string())
}
}
-}
\ No newline at end of file
+}
+
+#[derive(Serialize)]
+pub struct DirEntry {
+ path: String,
+ children: Option>,
+}
+
+#[tauri::command]
+pub fn acrn_read(file_path: &str) -> Result {
+ let mut file = File::open(file_path).map_err(|e| e.to_string())?;
+ let mut contents = String::new();
+ file
+ .read_to_string(&mut contents)
+ .map_err(|e| e.to_string())?;
+ Ok(contents)
+}
+
+#[tauri::command]
+pub fn acrn_write(file_path: &str, contents: &str) -> Result<(), String> {
+ let mut file = File::create(file_path).map_err(|e| e.to_string())?;
+ file
+ .write_all(contents.as_bytes())
+ .map_err(|e| e.to_string())?;
+ Ok(())
+}
+
+#[tauri::command]
+pub fn acrn_is_file(path: &str) -> bool {
+ fs::metadata(path)
+ .map(|metadata| metadata.is_file())
+ .unwrap_or(false)
+}
+
+#[tauri::command]
+pub fn acrn_create_dir(path: &str) -> Result<(), String> {
+ fs::create_dir(path).map_err(|e| e.to_string())
+}
+
+fn read_dir>(
+ path: P,
+ recursive: bool,
+) -> io::Result> {
+ let path = path.as_ref();
+ let mut entries = Vec::new();
+ for entry in fs::read_dir(path)? {
+ let entry = entry?;
+ let path = entry.path().to_str().unwrap().to_string();
+ let children = if recursive && entry.file_type()?.is_dir() {
+ Some(read_dir(&path, true)?)
+ } else {
+ None
+ };
+ entries.push(DirEntry { path, children });
+ }
+ Ok(entries)
+}
+
+#[tauri::command]
+pub fn acrn_read_dir(
+ path: &str,
+ recursive: bool,
+) -> Result, String> {
+ read_dir(path, recursive).map_err(|e| e.to_string())
+}
+
diff --git a/misc/config_tools/configurator/src-tauri/src/filesystem.rs b/misc/config_tools/configurator/src-tauri/src/filesystem.rs
deleted file mode 100644
index ceba9adbe..000000000
--- a/misc/config_tools/configurator/src-tauri/src/filesystem.rs
+++ /dev/null
@@ -1,102 +0,0 @@
-use serde::Serialize;
-use std::fs::{self, File};
-use std::io;
-use std::io::prelude::*;
-use std::path::Path;
-
-#[tauri::command]
-pub fn fs_read_text_file(path: &str) -> Result {
- let mut file = File::open(path).map_err(|e| e.to_string())?;
- let mut contents = String::new();
- file
- .read_to_string(&mut contents)
- .map_err(|e| e.to_string())?;
- Ok(contents)
-}
-
-#[tauri::command]
-pub fn fs_write_text_file(path: &str, contents: &str) -> Result<(), String> {
- let mut file = File::create(path).map_err(|e| e.to_string())?;
- file
- .write_all(contents.as_bytes())
- .map_err(|e| e.to_string())?;
- Ok(())
-}
-
-#[tauri::command]
-pub fn fs_read_binary_file(path: &str) -> Result, String> {
- let mut file = File::open(path).map_err(|e| e.to_string())?;
- let mut contents = Vec::new();
- file.read_to_end(&mut contents).map_err(|e| e.to_string())?;
- Ok(contents)
-}
-
-#[tauri::command]
-pub fn fs_write_binary_file(path: &str, contents: &[u8]) -> Result<(), String> {
- let mut file = File::create(path).map_err(|e| e.to_string())?;
- file.write_all(contents).map_err(|e| e.to_string())?;
- Ok(())
-}
-
-#[derive(Serialize)]
-pub struct DirEntry {
- path: String,
- children: Option>,
-}
-
-fn read_dir>(
- path: P,
- recursive: bool,
-) -> io::Result> {
- let path = path.as_ref();
- let mut entries = Vec::new();
- for entry in fs::read_dir(path)? {
- let entry = entry?;
- let path = entry.path().to_str().unwrap().to_string();
- let children = if recursive && entry.file_type()?.is_dir() {
- Some(read_dir(&path, true)?)
- } else {
- None
- };
- entries.push(DirEntry { path, children });
- }
- Ok(entries)
-}
-
-#[tauri::command]
-pub fn fs_read_dir(
- path: &str,
- recursive: bool,
-) -> Result, String> {
- read_dir(path, recursive).map_err(|e| e.to_string())
-}
-
-#[tauri::command]
-pub fn fs_rename(from: &str, to: &str) -> Result<(), String> {
- fs::rename(from, to).map_err(|e| e.to_string())
-}
-
-#[tauri::command]
-pub fn fs_delete_file(path: &str) -> Result<(), String> {
- fs::remove_file(path).map_err(|e| e.to_string())
-}
-
-#[tauri::command]
-pub fn fs_delete_dir(path: &str) -> Result<(), String> {
- fs::remove_dir_all(path).map_err(|e| e.to_string())
-}
-
-#[tauri::command]
-pub fn fs_create_dir(path: &str) -> Result<(), String> {
- fs::create_dir(path).map_err(|e| e.to_string())
-}
-
-#[tauri::command]
-pub fn fs_is_file(path: &str) -> bool {
- fs::metadata(path).map(|m| m.is_file()).unwrap_or(false)
-}
-
-#[tauri::command]
-pub fn fs_is_dir(path: &str) -> bool {
- fs::metadata(path).map(|m| m.is_dir()).unwrap_or(false)
-}
\ No newline at end of file
diff --git a/misc/config_tools/configurator/src-tauri/src/main.rs b/misc/config_tools/configurator/src-tauri/src/main.rs
index 4b2eff6ed..cb147abc6 100644
--- a/misc/config_tools/configurator/src-tauri/src/main.rs
+++ b/misc/config_tools/configurator/src-tauri/src/main.rs
@@ -3,78 +3,24 @@ all(not(debug_assertions), target_os = "windows"),
windows_subsystem = "windows"
)]
-mod filesystem;
mod configurator;
-use log::*;
-
-use tauri::{api::cli::get_matches, utils::config::CliConfig, PackageInfo, RunEvent};
fn main() {
- env_logger::init();
- // Init context
- let context = tauri::generate_context!();
-
- // Build app instance and run
- let app = tauri::Builder::default()
+ tauri::Builder::default()
.invoke_handler(tauri::generate_handler![
- filesystem::fs_rename,
- filesystem::fs_read_dir,
- filesystem::fs_read_text_file,
- filesystem::fs_read_binary_file,
- filesystem::fs_write_text_file,
- filesystem::fs_write_binary_file,
- filesystem::fs_read_dir,
- filesystem::fs_delete_file,
- filesystem::fs_delete_dir,
- filesystem::fs_create_dir,
- filesystem::fs_is_file,
- filesystem::fs_is_dir,
configurator::get_history,
configurator::add_history,
configurator::set_working_folder,
configurator::write_board,
configurator::force_reset,
- configurator::get_home
- ])
- .setup(|app| {
- // Handle cli cmdline
- let app_config = app.config();
- let cli_config = app_config.tauri.cli.as_ref().unwrap();
- let package_info = app.package_info();
- handle_cli_arg_data(&cli_config, &package_info);
- Ok(())
- })
- .build(context)
+ configurator::get_home,
+ configurator::acrn_read,
+ configurator::acrn_write,
+ configurator::acrn_is_file,
+ configurator::acrn_read_dir,
+ configurator::acrn_create_dir,
+ ])
+ .run(tauri::generate_context!())
.expect("error while running tauri application");
-
- app.run(|_app, event| {
- if let RunEvent::Exit = event {
- info!("Received Exit event");
- }
- });
}
-
-
-fn handle_cli_arg_data(cli_config: &CliConfig, pkg_info: &PackageInfo) {
- match get_matches(cli_config, pkg_info) {
- Ok(matches) => {
- let mut exit_flag = false;
- if let Some(arg_data) = matches.args.get("help") {
- println!("{}", arg_data.value.as_str().unwrap_or("No help available"));
- exit_flag = true;
- }
- if let Some(arg_data) = matches.args.get("version") {
- println!("{}", arg_data.value.as_str().unwrap_or("No version data available"));
- exit_flag = true
- }
- if exit_flag {
- std::process::exit(1);
- }
- }
- Err(e) => {
- error!("{}", e.to_string());
- std::process::exit(1);
- }
- }
-}
\ No newline at end of file
diff --git a/misc/config_tools/configurator/src-tauri/tauri.conf.json b/misc/config_tools/configurator/src-tauri/tauri.conf.json
new file mode 100644
index 000000000..d2b99d2da
--- /dev/null
+++ b/misc/config_tools/configurator/src-tauri/tauri.conf.json
@@ -0,0 +1 @@
+{"package":{"productName":"acrn-configurator","version":"../package.json"},"build":{"distDir":"../build","devPath":"http://localhost:3000","beforeDevCommand":"","beforeBuildCommand":""},"tauri":{"bundle":{"active":true,"targets":"all","identifier":"com.projectacrn.configurator","icon":["icons/32x32.png","icons/128x128.png","icons/128x128@2x.png","icons/icon.icns","icons/icon.ico"],"resources":[],"externalBin":[],"copyright":"","category":"DeveloperTool","shortDescription":"","longDescription":"","deb":{"depends":[],"useBootstrapper":false},"macOS":{"frameworks":[],"useBootstrapper":false,"exceptionDomain":"","signingIdentity":null,"providerShortName":null,"entitlements":null},"windows":{"certificateThumbprint":null,"digestAlgorithm":"sha256","timestampUrl":""}},"updater":{"active":false},"allowlist":{"all":true},"windows":[{"title":"ACRN Configurator","width":1366,"height":768,"resizable":true,"fullscreen":false,"decorations":false}],"security":{"csp":null}}}
\ No newline at end of file
diff --git a/misc/config_tools/configurator/src-tauri/tauri.json b/misc/config_tools/configurator/src-tauri/tauri.json
index e67cfc84e..bb9b7b0da 100644
--- a/misc/config_tools/configurator/src-tauri/tauri.json
+++ b/misc/config_tools/configurator/src-tauri/tauri.json
@@ -1,5 +1,4 @@
{
- "$schema": "types/schema.json",
"package": {
"productName": "acrn-configurator",
"version": "../package.json"
@@ -11,18 +10,10 @@
"beforeBuildCommand": ""
},
"tauri": {
- "cli": {
- "args": [
- {
- "name": "debug",
- "takesValue": false
- }
- ]
- },
"bundle": {
"active": true,
"targets": "all",
- "identifier": "com.tauri.dev",
+ "identifier": "com.projectacrn.configurator",
"icon": [
"icons/32x32.png",
"icons/128x128.png",
@@ -42,7 +33,6 @@
},
"macOS": {
"frameworks": [],
- "minimumSystemVersion": "",
"useBootstrapper": false,
"exceptionDomain": "",
"signingIdentity": null,
diff --git a/misc/config_tools/configurator/src/ACRNContext.jsx b/misc/config_tools/configurator/src/ACRNContext.jsx
deleted file mode 100644
index c77737cc1..000000000
--- a/misc/config_tools/configurator/src/ACRNContext.jsx
+++ /dev/null
@@ -1,37 +0,0 @@
-import React, {createContext} from 'react'
-import {Helper, TauriLocalFSBackend} from "./lib/helper";
-import {Configurator} from "./lib/acrn";
-
-// 1. Use React createContext API to create ACRN Context
-export const ACRNContext = createContext({
- helper: () => {
- },
- configurator: () => {
- }
-})
-
-// 2. Create Context Provider
-export class ACRNProvider extends React.Component {
- constructor(props) {
- super(props);
- let fsBackend = new TauriLocalFSBackend()
- let helper = new Helper(fsBackend, fsBackend)
- let configurator = new Configurator(helper)
- this.state = {
- helper: helper,
- configurator: configurator
- }
- }
-
- render() {
- console.log(this.state)
- return (
-
- {this.props.children}
-
- )
- }
-}
-
-// 3. export Consumer
-export const ACRNConsumer = ACRNContext.Consumer
diff --git a/misc/config_tools/configurator/src/App.css b/misc/config_tools/configurator/src/App.css
deleted file mode 100644
index 126662e34..000000000
--- a/misc/config_tools/configurator/src/App.css
+++ /dev/null
@@ -1,97 +0,0 @@
-a {
- /* Browse for folder… */
- font-family: Roboto, serif;
- font-style: normal;
- font-weight: bold;
- font-size: 16px;
- line-height: 19px;
-
- color: #2A958D;
- text-decoration: auto;
-}
-
-@media (min-width: 576px) {
- .border-end-sm {
- border-right: 1px solid #dee2e6 !important;
- }
-}
-
-.btn-lg {
- min-height: 50px;
- border-radius: 30px;
- font-family: Roboto, serif;
- font-style: normal;
- font-weight: bold;
- line-height: 23px;
- text-align: center;
- text-transform: capitalize;
-
- color: #FFFFFF;
-}
-
-.btn-primary {
- background-color: #007B81;
- border-color: #007B81;
-}
-
-.btn-primary:hover {
- background-color: #004B50;
- border-color: #004B50;
-}
-
-select {
- height: 49px;
- background-image: url("assets/images/dropdown_arrow.svg") !important;
- background-repeat: no-repeat;
- background-position: right 0.75rem center;
- background-size: 16px 12px;
- border: 1px solid #ced4da;
- border-radius: 0.25rem;
- transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
- appearance: none;
-}
-
-select:focus {
- border: 1px solid #69BFAD;
- box-sizing: border-box;
- box-shadow: 0 0 6px rgba(105, 191, 173, 0.37);
- border-radius: 5px;
-}
-
-
-.banner-text {
- max-width: 594px;
-
- font-family: Roboto, serif;
- font-style: normal;
- font-weight: normal;
- font-size: 28px;
- line-height: 37px;
- letter-spacing: -0.175px;
-
- color: #FFFFFF;
-}
-
-.bg-gray {
- background: #F5F5F5;
-}
-
-.text-right {
- text-align: right;
-}
-
-table {
- width: 100%;
-}
-
-.descInfoBtn {
- color: gray;
-}
-
-.descInfoBtn:hover {
- color: lightgray;
-}
-
-.rst-paragraph:last-child{
- margin-bottom: 0;
-}
\ No newline at end of file
diff --git a/misc/config_tools/configurator/src/App.jsx b/misc/config_tools/configurator/src/App.jsx
deleted file mode 100644
index f6adc1ff3..000000000
--- a/misc/config_tools/configurator/src/App.jsx
+++ /dev/null
@@ -1,25 +0,0 @@
-import {ACRNProvider} from "./ACRNContext";
-import {HashRouter, Routes, Route} from "react-router-dom";
-import './App.css'
-import Welcome from "./pages/Welcome/Welcome";
-import Error from "./pages/Error/Error";
-import Config from "./pages/Config/Config";
-
-import "bootstrap/dist/js/bootstrap"
-
-function App() {
- return (
-
-
-
- }/>
- }/>
- }/>
-
-
-
- )
-}
-
-
-export default App
diff --git a/misc/config_tools/configurator/src/App.vue b/misc/config_tools/configurator/src/App.vue
new file mode 100644
index 000000000..252e258dc
--- /dev/null
+++ b/misc/config_tools/configurator/src/App.vue
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/misc/config_tools/configurator/src/assets/css/index.scss b/misc/config_tools/configurator/src/assets/css/index.scss
new file mode 100644
index 000000000..7d0f2754e
--- /dev/null
+++ b/misc/config_tools/configurator/src/assets/css/index.scss
@@ -0,0 +1,183 @@
+// global
+$primary: #007B81;
+
+// grid padding
+$grid-gutter-width: 0;
+
+// a
+$link-decoration: auto;
+$link-shade-percentage: 39%;
+
+// text box fontsize
+$input-font-size-lg: 1rem;
+
+
+@import "bootstrap/scss/bootstrap";
+@import 'bootstrap-vue-3/dist/bootstrap-vue-3.css';
+
+
+.accordion-button {
+ box-shadow: none;
+ display: flex;
+ align-items: baseline;
+
+ &:not(.collapsed) {
+ background-color: #fff;
+ box-shadow: none;
+
+ &::before {
+ background-image: url("/src/assets/images/dropdown_arrow.svg");
+ color: #69BFAD;
+ transform: rotate(0deg);
+ margin-top: 9px;
+ }
+
+ &::after {
+ display: none;
+ }
+ }
+
+ // Accordion icon
+ &::before {
+ flex-shrink: 0;
+ width: $accordion-icon-width;
+ height: $accordion-icon-width;
+ content: "";
+ background-image: url("/src/assets/images/dropdown_arrow.svg");
+ background-repeat: no-repeat;
+ background-size: $accordion-icon-width;
+ margin: 8px 0 0 5px;
+ transform: rotate(-90deg);
+ @include transition($accordion-icon-transition);
+ }
+
+ &::after {
+ display: none;
+ }
+
+ &:focus {
+ box-shadow: none;
+ }
+}
+
+.text-pre-line {
+ white-space: pre-line;
+}
+
+.btn.btn-outline-primary {
+ color: #007B81;
+ border-color: #007B81;
+ background-color: white;
+}
+
+.btn-outline-primary:hover {
+ color: #004B50;
+ border-color: #004B50;
+ background-color: white;
+}
+
+.btn-close-white {
+ opacity: 1;
+ filter: none;
+ background-image: url("data:image/svg+xml,%3Csvg width='18' height='18' viewBox='0 0 18 18' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11.5195 8.99331L17.4644 3.04835C18.1607 2.3521 18.1607 1.21845 17.4644 0.522192C16.7682 -0.174064 15.6345 -0.174064 14.9383 0.522192L8.99331 6.46715L3.04835 0.531118C2.3521 -0.165138 1.21845 -0.165138 0.522192 0.531118C-0.174064 1.22737 -0.174064 2.36102 0.522192 3.05728L6.46715 9.00223L0.522192 14.9472C-0.174064 15.6434 -0.174064 16.7771 0.522192 17.4733C0.87032 17.8215 1.32556 18 1.78081 18C2.23605 18 2.6913 17.8215 3.03942 17.4733L8.98438 11.5284L14.9293 17.4733C15.2775 17.8215 15.7327 18 16.1879 18C16.6432 18 17.0984 17.8215 17.4466 17.4733C18.1428 16.7771 18.1428 15.6434 17.4466 14.9472L11.5195 8.99331Z' fill='white'/%3E%3C/svg%3E%0A");
+}
+
+@import "vfonts/Roboto.css";
+
+a {
+ /* Browse for folder… */
+ font-family: Roboto;
+ font-style: normal;
+ font-weight: bold;
+ font-size: 16px;
+ line-height: 19px;
+
+ color: #2A958D;
+ text-decoration: auto;
+}
+
+@media (min-width: 576px) {
+ .border-end-sm {
+ border-right: 1px solid #dee2e6 !important;
+ }
+}
+
+.btn-lg {
+ min-height: 50px;
+ border-radius: 30px;
+ font-family: Roboto;
+ font-style: normal;
+ font-weight: bold;
+ line-height: 23px;
+ text-align: center;
+ text-transform: capitalize;
+
+ color: #FFFFFF;
+}
+
+.btn-primary {
+ background-color: #007B81;
+ border-color: #007B81;
+}
+
+.btn-primary:hover {
+ background-color: #004B50;
+ border-color: #004B50;
+}
+
+select {
+ height: 49px;
+ background-image: url("/src/assets/images/dropdown_arrow.svg") !important;
+ background-repeat: no-repeat;
+ background-position: right 0.75rem center;
+ background-size: 16px 12px;
+ border: 1px solid #ced4da;
+ border-radius: 0.25rem;
+ transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
+ appearance: none;
+}
+
+select:focus {
+ border: 1px solid #69BFAD;
+ box-sizing: border-box;
+ box-shadow: 0 0 6px rgba(105, 191, 173, 0.37);
+ border-radius: 5px;
+}
+
+
+.banner-text {
+ max-width: 594px;
+
+ font-family: Roboto;
+ font-style: normal;
+ font-weight: normal;
+ font-size: 28px;
+ line-height: 37px;
+ letter-spacing: -0.175px;
+
+ color: #FFFFFF;
+}
+
+.bg-gray {
+ background: #F5F5F5;
+}
+
+.text-right {
+ text-align: right;
+}
+
+table {
+ width: 100%;
+}
+
+.descInfoBtn {
+ color: gray;
+}
+
+.descInfoBtn:hover {
+ color: lightgray;
+}
+
+.rst-paragraph:last-child {
+ margin-bottom: 0;
+}
\ No newline at end of file
diff --git a/misc/config_tools/configurator/src/assets/fonts/Roboto-Regular.woff b/misc/config_tools/configurator/src/assets/fonts/Roboto-Regular.woff
deleted file mode 100644
index b867bd559..000000000
Binary files a/misc/config_tools/configurator/src/assets/fonts/Roboto-Regular.woff and /dev/null differ
diff --git a/misc/config_tools/configurator/src/assets/fonts/Roboto-Regular.woff2 b/misc/config_tools/configurator/src/assets/fonts/Roboto-Regular.woff2
deleted file mode 100644
index c63fb57ca..000000000
Binary files a/misc/config_tools/configurator/src/assets/fonts/Roboto-Regular.woff2 and /dev/null differ
diff --git a/misc/config_tools/configurator/src/assets/fonts/Roboto.css b/misc/config_tools/configurator/src/assets/fonts/Roboto.css
deleted file mode 100644
index 528a25e6b..000000000
--- a/misc/config_tools/configurator/src/assets/fonts/Roboto.css
+++ /dev/null
@@ -1,9 +0,0 @@
-@font-face {
- font-family: 'Roboto';
- src: url('Roboto-Regular.woff2') format('woff2'),
- url('Roboto-Regular.woff') format('woff');
- font-weight: normal;
- font-style: normal;
- font-display: swap;
-}
-
diff --git a/misc/config_tools/configurator/src/components/Navbar/images/ACRN_Logo.svg b/misc/config_tools/configurator/src/assets/images/ACRN_Logo.svg
similarity index 100%
rename from misc/config_tools/configurator/src/components/Navbar/images/ACRN_Logo.svg
rename to misc/config_tools/configurator/src/assets/images/ACRN_Logo.svg
diff --git a/misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/ConfigTabBar/TabAdd/assets/Plus.svg b/misc/config_tools/configurator/src/assets/images/Plus.svg
similarity index 100%
rename from misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/ConfigTabBar/TabAdd/assets/Plus.svg
rename to misc/config_tools/configurator/src/assets/images/Plus.svg
diff --git a/misc/config_tools/configurator/src/components/Banner/images/top_pattern.png b/misc/config_tools/configurator/src/assets/images/top_pattern.png
similarity index 100%
rename from misc/config_tools/configurator/src/components/Banner/images/top_pattern.png
rename to misc/config_tools/configurator/src/assets/images/top_pattern.png
diff --git a/misc/config_tools/configurator/src/assets/schema/dynamicScenario.py b/misc/config_tools/configurator/src/assets/schema/dynamicScenario.py
deleted file mode 100644
index 091e38e88..000000000
--- a/misc/config_tools/configurator/src/assets/schema/dynamicScenario.py
+++ /dev/null
@@ -1,78 +0,0 @@
-"""
-
-public var board_xml
-public function get_enum(source, selector)
-
-enum = {
- 'type': 'dynamicEnum',
- 'function': 'get_enum',
- 'source': 'board_xml',
- 'selector': element['xs:annotation']['@acrn:options'],
- 'sorted': element['xs:annotation'].get('@acrn:options-sorted-by', None)
-}
-
-params defined before this document string in js side like
-```js
-let params = JSON.stringify({board_xml: boardXMLText, scenario_json: JSON.stringify(scenario_json)})
-params = Base64.encode(params);
-return runPyCode(`
-params="${params}"
-${dynamicScenario}
-`)
-```
-"""
-
-import json
-from base64 import b64decode
-
-import elementpath
-import lxml.etree as etree
-
-# local test var set
-if 'params' not in globals():
- # params = b64encode(open(r"board.xml",'rb').read())
- raise NotImplementedError
-
-# Main flow
-# noinspection PyUnresolvedReferences,PyUnboundLocalVariable
-params: str = b64decode(params).decode('utf-8')
-params: dict = json.loads(params)
-board_xml = etree.XML(params["board_xml"])
-scenario_json = params['scenario_json']
-
-
-def get_enum(source, options):
- elements = [str(x) for x in elementpath.select(source, options) if x]
- elements = list(set(elements))
- if not elements:
- elements = ['']
- return elements
-
-
-def dynamic_enum(**kwargs):
- # value from env
- function, source = [globals()[kwargs[key]] for key in ['function', 'source']]
- # value from given
- selector, sorted_func = [kwargs[key] for key in ['selector', 'sorted']]
-
- # get enum data
- enum = function(source, selector)
- if sorted_func:
- enum = sorted(enum, key=eval(sorted_func))
- return enum
-
-
-def dynamic_enum_apply(obj):
- # get json schema enum obj
- if 'enum' in obj and isinstance(obj['enum'], dict):
- enum_setting = obj['enum']
- # check enum obj type
- if enum_setting['type'] == 'dynamicEnum':
- del enum_setting['type']
- # replace json schema obj enum field data
- obj['enum'] = dynamic_enum(**enum_setting)
- return obj
-
-
-data = json.loads(scenario_json, object_hook=dynamic_enum_apply)
-json.dumps(data)
diff --git a/misc/config_tools/configurator/src/components/Banner/Banner.css b/misc/config_tools/configurator/src/components/Banner/Banner.css
deleted file mode 100644
index c21fe9872..000000000
--- a/misc/config_tools/configurator/src/components/Banner/Banner.css
+++ /dev/null
@@ -1,6 +0,0 @@
-.banner {
- min-height: 50px;
- background-image: url("images/top_pattern.png"), linear-gradient(90.29deg, #242357 0.08%, #6ABFAE 85.19%, #69BFAD 99.72%);
- background-repeat: no-repeat;
- background-position: 50%;
-}
\ No newline at end of file
diff --git a/misc/config_tools/configurator/src/components/Banner/Banner.jsx b/misc/config_tools/configurator/src/components/Banner/Banner.jsx
deleted file mode 100644
index 1b7c1105b..000000000
--- a/misc/config_tools/configurator/src/components/Banner/Banner.jsx
+++ /dev/null
@@ -1,9 +0,0 @@
-import React from "react";
-
-export class Banner extends React.Component {
- render() {
- return (
- {this.props.children}
- );
- }
-}
diff --git a/misc/config_tools/configurator/src/components/Banner/index.jsx b/misc/config_tools/configurator/src/components/Banner/index.jsx
deleted file mode 100644
index c698d227a..000000000
--- a/misc/config_tools/configurator/src/components/Banner/index.jsx
+++ /dev/null
@@ -1,5 +0,0 @@
-import './Banner.css'
-import {Banner} from "./Banner";
-
-
-export default Banner;
\ No newline at end of file
diff --git a/misc/config_tools/configurator/src/components/Confirm/Confirm.jsx b/misc/config_tools/configurator/src/components/Confirm/Confirm.jsx
deleted file mode 100644
index 35af8d11e..000000000
--- a/misc/config_tools/configurator/src/components/Confirm/Confirm.jsx
+++ /dev/null
@@ -1,45 +0,0 @@
-import {Button, Modal} from "react-bootstrap";
-import {useState} from "react";
-
-export default function Confirm(props) {
- const [show, setShow] = useState(false);
-
- const handleClose = (choice) => {
- setShow(false);
- props.callback(choice)
- }
-
- const handleShow = (e) => {
- setShow(true);
- e.preventDefault()
- }
-
- return (
- handleClose('cancel')} size="lg">
-
- {props.title}
-
-
-
- {props.content}
-
-
-
- handleShow('cancel')}
- size="lg" style={{width: '137px'}}>
- Cancel
-
- handleShow('no')} size="lg"
- style={{width: '137px'}}>
- {props.no ? props.no : "No"}
-
- {
- props.callback('yes')
- }} size="lg" style={{width: '137px'}}>
- {props.yes ? props.yes : "Yes"}
-
-
-
- );
-}
-
diff --git a/misc/config_tools/configurator/src/components/Confirm/index.jsx b/misc/config_tools/configurator/src/components/Confirm/index.jsx
deleted file mode 100644
index 8b5ecbaee..000000000
--- a/misc/config_tools/configurator/src/components/Confirm/index.jsx
+++ /dev/null
@@ -1,3 +0,0 @@
-import Confirm from "./Confirm";
-
-export default Confirm
\ No newline at end of file
diff --git a/misc/config_tools/configurator/src/components/Footer/footer.jsx b/misc/config_tools/configurator/src/components/Footer/footer.jsx
deleted file mode 100644
index 0f6bac9bb..000000000
--- a/misc/config_tools/configurator/src/components/Footer/footer.jsx
+++ /dev/null
@@ -1,25 +0,0 @@
-import {Component} from "react";
-import {getVersion} from "@tauri-apps/api/app";
-
-
-export default class Footer extends Component {
- constructor(props) {
- super(props);
- this.state = {
- version: "0.1.0"
- }
- }
-
- componentDidMount = () => {
- getVersion().then((version) => {
- this.setState({version: version})
- })
- }
-
- render = () => {
- return
-
© Copyright Project ACRN™, a Series of LF Projects, LLC.
- - Version {this.state.version}
-
- }
-}
\ No newline at end of file
diff --git a/misc/config_tools/configurator/src/components/Footer/index.jsx b/misc/config_tools/configurator/src/components/Footer/index.jsx
deleted file mode 100644
index c6c8f167f..000000000
--- a/misc/config_tools/configurator/src/components/Footer/index.jsx
+++ /dev/null
@@ -1,3 +0,0 @@
-import Footer from "./footer";
-
-export default Footer
\ No newline at end of file
diff --git a/misc/config_tools/configurator/src/components/HelloWorld.vue b/misc/config_tools/configurator/src/components/HelloWorld.vue
new file mode 100644
index 000000000..dbe43f7db
--- /dev/null
+++ b/misc/config_tools/configurator/src/components/HelloWorld.vue
@@ -0,0 +1,21 @@
+
+
+
+ {{ msg }}
+
+ count is: {{ count }}
+
+
+
diff --git a/misc/config_tools/configurator/src/components/Navbar/Navbar.css b/misc/config_tools/configurator/src/components/Navbar/Navbar.css
deleted file mode 100644
index 8936059ac..000000000
--- a/misc/config_tools/configurator/src/components/Navbar/Navbar.css
+++ /dev/null
@@ -1,44 +0,0 @@
-body {
- -webkit-app-region: no-drag
-}
-
-.bg-navbar {
- height: 80px;
- background: #007B81;
- box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15);
- -webkit-user-select: none;
- -webkit-app-region: drag;
-}
-
-.logo-text {
- cursor: default;
- font-family: Roboto, serif;
- font-style: normal;
- font-weight: bold;
- font-size: 26px;
- line-height: 30px;
- letter-spacing: 0.04em;
- text-transform: uppercase;
-
- color: #9ADFD1;
-}
-
-.controlButtons {
- margin-right: 30px;
- width: 130px;
- filter: drop-shadow(3px 3px 2px rgb(0 0 0 / 0.4));
-}
-
-
-.wmb {
- cursor: pointer;
- -webkit-app-region: no-drag;
-}
-
-.wmb:hover {
- opacity: 0.7;
-}
-
-.btn-close {
- -webkit-app-region: no-drag;
-}
\ No newline at end of file
diff --git a/misc/config_tools/configurator/src/components/Navbar/Navbar.jsx b/misc/config_tools/configurator/src/components/Navbar/Navbar.jsx
deleted file mode 100644
index 8e19300fd..000000000
--- a/misc/config_tools/configurator/src/components/Navbar/Navbar.jsx
+++ /dev/null
@@ -1,39 +0,0 @@
-import React from "react";
-import {Container} from "react-bootstrap";
-import {Navbar as BootstrapNavbar} from "react-bootstrap";
-import logo from "./images/ACRN_Logo.svg";
-import {faWindowMaximize} from "@fortawesome/free-regular-svg-icons";
-import {faClose, faMinus} from "@fortawesome/free-solid-svg-icons"
-import {FontAwesomeIcon} from "@fortawesome/react-fontawesome";
-
-import {windowHelper} from "../../lib/platform/tauri/tauri";
-
-
-export class Navbar extends React.Component {
- render() {
- return (
-
-
-
-
-
- Configurator
-
-
-
-
-
-
-
-
-
- );
- }
-}
diff --git a/misc/config_tools/configurator/src/components/Navbar/index.jsx b/misc/config_tools/configurator/src/components/Navbar/index.jsx
deleted file mode 100644
index 12075d91d..000000000
--- a/misc/config_tools/configurator/src/components/Navbar/index.jsx
+++ /dev/null
@@ -1,5 +0,0 @@
-import './Navbar.css'
-import {Navbar} from "./Navbar";
-
-
-export default Navbar;
\ No newline at end of file
diff --git a/misc/config_tools/configurator/src/components/common/Banner.vue b/misc/config_tools/configurator/src/components/common/Banner.vue
new file mode 100644
index 000000000..1d41e51f6
--- /dev/null
+++ b/misc/config_tools/configurator/src/components/common/Banner.vue
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/misc/config_tools/configurator/src/components/common/ControlBar.vue b/misc/config_tools/configurator/src/components/common/ControlBar.vue
new file mode 100644
index 000000000..b9dd7293c
--- /dev/null
+++ b/misc/config_tools/configurator/src/components/common/ControlBar.vue
@@ -0,0 +1,96 @@
+
+
+
+
+
+ Configurator
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/misc/config_tools/configurator/src/components/common/Footer.vue b/misc/config_tools/configurator/src/components/common/Footer.vue
new file mode 100644
index 000000000..4f66411bc
--- /dev/null
+++ b/misc/config_tools/configurator/src/components/common/Footer.vue
@@ -0,0 +1,39 @@
+
+
+
+ © Copyright Project ACRN™, a Series of LF Projects, LLC.
+ - Version {{ version }}
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/misc/config_tools/configurator/src/favicon.svg b/misc/config_tools/configurator/src/favicon.svg
deleted file mode 100644
index de4aeddc1..000000000
--- a/misc/config_tools/configurator/src/favicon.svg
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/misc/config_tools/configurator/src/index.scss b/misc/config_tools/configurator/src/index.scss
deleted file mode 100644
index b24d45b1c..000000000
--- a/misc/config_tools/configurator/src/index.scss
+++ /dev/null
@@ -1,36 +0,0 @@
-// global
-$primary: #007B81;
-
-// grid padding
-$grid-gutter-width: 0;
-
-// a
-$link-decoration: auto;
-$link-shade-percentage: 39%;
-
-// text box fontsize
-$input-font-size-lg: 1rem;
-
-@import "../node_modules/bootstrap/scss/bootstrap";
-
-.text-pre-line {
- white-space: pre-line;
-}
-
-.btn.btn-outline-primary {
- color: #007B81;
- border-color: #007B81;
- background-color: white;
-}
-
-.btn-outline-primary:hover {
- color: #004B50;
- border-color: #004B50;
- background-color: white;
-}
-
-.btn-close-white {
- opacity: 1;
- filter: none;
- background-image: url("data:image/svg+xml,%3Csvg width='18' height='18' viewBox='0 0 18 18' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11.5195 8.99331L17.4644 3.04835C18.1607 2.3521 18.1607 1.21845 17.4644 0.522192C16.7682 -0.174064 15.6345 -0.174064 14.9383 0.522192L8.99331 6.46715L3.04835 0.531118C2.3521 -0.165138 1.21845 -0.165138 0.522192 0.531118C-0.174064 1.22737 -0.174064 2.36102 0.522192 3.05728L6.46715 9.00223L0.522192 14.9472C-0.174064 15.6434 -0.174064 16.7771 0.522192 17.4733C0.87032 17.8215 1.32556 18 1.78081 18C2.23605 18 2.6913 17.8215 3.03942 17.4733L8.98438 11.5284L14.9293 17.4733C15.2775 17.8215 15.7327 18 16.1879 18C16.6432 18 17.0984 17.8215 17.4466 17.4733C18.1428 16.7771 18.1428 15.6434 17.4466 14.9472L11.5195 8.99331Z' fill='white'/%3E%3C/svg%3E%0A");
-}
\ No newline at end of file
diff --git a/misc/config_tools/configurator/src/lib/.gitignore b/misc/config_tools/configurator/src/lib/.gitignore
deleted file mode 100644
index b2a7018ad..000000000
--- a/misc/config_tools/configurator/src/lib/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-pyodide
-/pyodide.tar.bz2
diff --git a/misc/config_tools/configurator/src/lib/acrn.jsx b/misc/config_tools/configurator/src/lib/acrn.jsx
deleted file mode 100644
index 39eea611e..000000000
--- a/misc/config_tools/configurator/src/lib/acrn.jsx
+++ /dev/null
@@ -1,503 +0,0 @@
-import _ from "lodash";
-
-import React, {Component} from "react";
-import {path} from "@tauri-apps/api";
-import scenario from '../assets/schema/scenario.json'
-import {createSearchParams} from "react-router-dom";
-import queryString from 'query-string'
-import {invoke} from "@tauri-apps/api/tauri";
-import {getNewSchema} from "./runpy";
-
-
-function ThrowError(errMsg) {
- alert(errMsg)
- throw new Error(errMsg)
-}
-
-function NameTrans(name) {
- return {
- "recentlyWorkingFolders": "WorkingFolder",
- "board": "Board",
- "scenario": "Scenario",
- }[name.replace("History", "")]
-}
-
-class EventBase extends Component {
- constructor(props) {
- super(props)
- this.funRegister = {}
- this.funRegisterID = 0
- this.eventName = {
- scenarioDataUpdate: 'scenarioDataUpdate'
- }
- }
-
- register = (eventName, fun) => {
- if (this.funRegister.hasOwnProperty(eventName)) {
- this.funRegisterID++
- this.funRegister[eventName][this.funRegisterID] = fun
- return this.funRegisterID
- }
- }
-
- unregister = (eventName, funRegisterID) => {
- if (this.funRegister.hasOwnProperty(eventName)) {
- if (this.funRegister[eventName].hasOwnProperty(funRegisterID)) {
- delete this.funRegister[eventName][funRegisterID]
- }
- }
- }
-
-}
-
-
-export class XMLLayer extends EventBase {
- constructor(helper) {
- super();
- this.helper = helper
- this.funRegister = {
- onScenarioLoad: []
- }
- }
-
- #parseXML = (XMLText) => {
- return (new DOMParser()).parseFromString(XMLText, "text/xml")
- }
-
- #validateBoardXMLText = boardXMLText => {
- // call inside
- try {
- let boardXML = this.#parseXML(boardXMLText, "text/xml");
- return !!boardXML.querySelector("BIOS_INFO")
- } catch (e) {
- return false
- }
- }
-
- #validateScenarioXMLText = (scenarioXMLText) => {
- // call inside
- try {
- let scenarioXML = this.#parseXML(scenarioXMLText);
- return !!scenarioXML.querySelector("acrn-config")
- } catch (e) {
- return false
- }
- }
-
- loadBoard = async (boardXMLPath) => {
- // call by program
- let boardXMLText = await this.helper.read(await this.helper.resolveHome(boardXMLPath))
- if (this.#validateBoardXMLText(boardXMLText)) {
- let PCIDevices = this.getPCIDevice(boardXMLText)
- return {boardXMLText, PCIDevices}
- } else {
- alert('Board XML Error!')
- return false
- }
- }
-
- loadScenario = async (scenarioXMLPath) => {
- // call by program
- // load scenario data from xml file
- let scenarioXMLText = await this.helper.read(await this.helper.resolveHome(scenarioXMLPath))
- if (!this.#validateScenarioXMLText(scenarioXMLText)) {
- ThrowError('Scenario XML Error!')
- }
-
- return this.helper.convertXMLTextToObj(scenarioXMLText)['acrn-config']
- }
-
- getPCIDevice = (boardXMLText) => {
- let pci_devices = this.#parseXML(boardXMLText).querySelector("PCI_DEVICE").textContent
- // Remove Region line
- pci_devices = pci_devices.replace(/Region.+\s+/g, '\n')
- // Remove Space
- pci_devices = pci_devices.replace(/[\n\t]+/g, '\n')
- // Split by \n
- pci_devices = pci_devices.split('\n')
-
- return _.uniq(pci_devices)
- }
-
- saveBoard = (boardFileWritePath, boardData) => {
- this.helper.save(boardFileWritePath, boardData)
- }
-
- saveScenario = (scenarioWritePath, scenarioData) => {
- // call by program
- console.log(scenarioData)
- const scenarioXML = this.helper.convertObjToXML({'acrn-config': scenarioData})
- console.log(scenarioXML)
- // debugger
- this.helper.save(scenarioWritePath, scenarioXML)
- }
-}
-
-
-export class ProgramLayer extends EventBase {
- constructor(helper, instanceOfXMLLayer) {
- super()
- this.helper = helper
- this.vmID = 0
- this.scenarioData = {}
- this.initScenario()
- this.xmlLayer = instanceOfXMLLayer
- this.funRegister = {
- scenarioDataUpdate: []
- }
- }
-
- initScenario = () => {
- this.vmID = 0
- this.scenarioData = {
- hv: {},
- vm: {
- PRE_LAUNCHED_VM: [],
- SERVICE_VM: [],
- POST_LAUNCHED_VM: [],
- }
- }
- }
-
- onScenarioDataUpdateEvent() {
- this.funRegister.scenarioDataUpdate.map((f) => f())
- }
-
- newScenario = (preLaunchedVM, serviceVM, postLaunchedVM) => {
- // call by view
- this.initScenario()
- for (let i = 0; i < preLaunchedVM; i++) {
- this.addVM('PRE_LAUNCHED_VM')
- }
- for (let i = 0; i < serviceVM; i++) {
- this.addVM('SERVICE_VM')
- }
- for (let i = 0; i < postLaunchedVM; i++) {
- this.addVM('POST_LAUNCHED_VM')
- }
- this.onScenarioDataUpdateEvent()
- }
-
-
- addVM = (VMType, vmData = {}) => {
- // call by inside and view
- // if provide VMType and vmData at same time
- // function will set VMType to vmData
- let vm = vmData
- let usedVMID = false;
-
- // check VMType
- let vmType = VMType;
- if (!_.isString(vmType) || _.isEmpty(vmType)) {
- // vmType is empty or not correct
- if (vm.hasOwnProperty('load_order')) {
- vmType = vm.load_order;
- } else {
- ThrowError('No VMType Set')
- }
- } else {
- if (vm.hasOwnProperty('load_order') && vm.load_order !== vmType) {
- console.warn("vmType and vmData provide load_order at same time, set vmData's load_order to vmType now")
- }
- vm.load_order = vmType
- }
-
-
- // check and validate vm name
- if (!vm.hasOwnProperty('name') || !_.isString(vm.name) || _.isEmpty(vm.name)) {
- vm.name = 'VM' + this.vmID
- usedVMID = true
- }
-
- vm['@id'] = this.vmID
- this.vmID++
-
- // add to config
- this.scenarioData.vm[vmType].push(vm)
- this.onScenarioDataUpdateEvent()
- }
-
- isServiceVM = (vmID) => {
- for (var idx in this.scenarioData.vm.SERVICE_VM) {
- if (this.scenarioData.vm.SERVICE_VM[idx]['@id'] === vmID) {
- return true
- }
- }
- return false
- }
-
- deleteVM = (vmID) => {
- // call by view
- for (let vmType in this.scenarioData.vm) {
- this.scenarioData.vm[vmType].map((vmConfig, vmIndex) => {
- if (vmConfig['@id'] === vmID) {
- this.scenarioData.vm[vmType].splice(vmIndex, 1)
- }
- })
- }
- this.onScenarioDataUpdateEvent()
- }
-
- loadBoard = async (WorkingFolder, boardXMLPath) => {
- // call by view
- let boardData = await this.xmlLayer.loadBoard(boardXMLPath)
- if (boardData === false) {
- return false
- }
- let {boardXMLText, PCIDevices} = boardData
-
- // get new board file name
- let newBoardFileName = await path.basename(boardXMLPath)
- let cut = 0
- if (_.endsWith(newBoardFileName.toLowerCase(), '.xml')) {
- cut = '.xml'.length
- }
- if (_.endsWith(newBoardFileName.toLowerCase(), '.board.xml')) {
- cut = '.board.xml'.length
- }
- newBoardFileName = newBoardFileName.slice(0, newBoardFileName.length - cut)
- newBoardFileName = newBoardFileName + '.board.xml'
-
- // new board file save path
- const boardFileWritePath = await path.join(await this.helper.resolveHome(WorkingFolder), newBoardFileName)
-
- // remove current working folder old Board File first
- await this.removeOldBoardFile(WorkingFolder)
-
- // save board file to working director
- this.xmlLayer.saveBoard(boardFileWritePath, boardXMLText)
- // get shownName
- let shownName = await path.join(WorkingFolder, newBoardFileName)
- console.log({shownName, boardXMLText, PCIDevices})
- return {shownName, boardXMLText, PCIDevices}
- }
-
- loadScenario = async (scenarioXMLPath) => {
- // call by view
- let scenarioConfig = await this.xmlLayer.loadScenario(scenarioXMLPath)
- this.initScenario()
- this.scenarioData.hv = scenarioConfig.hv;
- if (scenarioConfig.hasOwnProperty('vm')) {
- if (!_.isArray(scenarioConfig.vm)) {
- if (_.isObject(scenarioConfig.vm)) {
- scenarioConfig.vm = [scenarioConfig.vm]
- } else {
- console.log(scenarioConfig.vm);
- debugger;
- this.onScenarioDataUpdateEvent()
- return
- }
- }
- scenarioConfig.vm.map((vmConfig, index) => {
- let vmType = vmConfig.load_order
- if (!this.scenarioData.vm.hasOwnProperty(vmType)) {
- try {
- ThrowError('VM @id=' + index + ' VMType Does Not Exist')
- } catch (e) {
-
- }
- } else {
- //fix pci_devs is object issue
- if (
- vmConfig.hasOwnProperty("pci_devs") &&
- vmConfig.pci_devs != null &&
- vmConfig.pci_devs.hasOwnProperty("pci_dev") &&
- vmConfig.pci_devs != null &&
- _.isString(vmConfig.pci_devs.pci_dev)
- ) {
- vmConfig.pci_devs.pci_dev = [vmConfig.pci_devs.pci_dev]
- }
- this.addVM(vmType, vmConfig)
- }
- })
- }
- this.onScenarioDataUpdateEvent()
- }
-
- getOriginScenarioData = () => {
- // call by inside
- let originScenario = _.cloneDeep(this.scenarioData)
- originScenario.vm = originScenario.vm.PRE_LAUNCHED_VM.concat(
- originScenario.vm.SERVICE_VM,
- originScenario.vm.POST_LAUNCHED_VM
- )
- return originScenario
- }
-
- async removeOldBoardFile(WorkingFolder) {
- let files = await this.helper.list(await this.helper.resolveHome(WorkingFolder))
- files.map((filename) => {
- if (_.endsWith(filename, '.board.xml')) {
- this.helper.remove(filename)
- }
- })
- }
-
-
- saveScenario = async (WorkingFolder) => {
- // call by view
- let originScenarioData = this.getOriginScenarioData()
- let filename = 'scenario.xml'
- let scenarioWritePath = await path.join(await this.helper.resolveHome(WorkingFolder), filename)
- this.xmlLayer.saveScenario(scenarioWritePath, originScenarioData)
- // noinspection UnnecessaryLocalVariableJS
- let shownPath = await path.join(WorkingFolder, filename)
- return shownPath
- }
-
-}
-
-export class Configurator extends EventBase {
- // get data from Program
- // convert it to view data
- constructor(helper) {
- super()
-
- this.WorkingFolder = this.#getURLParam('WorkingFolder')
-
- this.helper = helper
- this.XMLLayer = new XMLLayer(this.helper)
- this.programLayer = new ProgramLayer(this.helper, this.XMLLayer)
-
- this.vmSchemas = this.Schemas()
- this.hvSchema = this.vmSchemas.HV
- delete this.vmSchemas.HV
-
- this.updateSchema()
- }
-
- #getURLParam(key) {
- let hash = location.hash
- let params = hash.substring(hash.indexOf('?'))
- params = queryString.parse(params)
- return params[key]
- }
-
- #buildPageParams(url, queryParams = {}) {
- let data = {pathname: url}
- if (queryParams) {
- data.search = createSearchParams(queryParams).toString()
- }
- return data;
- }
-
- settingWorkingFolder = (WorkingFolder) => {
- this.WorkingFolder = WorkingFolder
- return this.#buildPageParams('./config', {WorkingFolder})
- }
-
- updateSchema = () => {
- let listingFunctions = [this.ivshmemEnum]
- listingFunctions.forEach((func) => {
- func()
- this.programLayer.register("scenarioDataUpdate", func)
- })
- }
-
- ivshmemEnum = () => {
- let odata = this.programLayer.getOriginScenarioData()
- let vmNames = odata.vm.map((vmData) => {
- return vmData.name
- })
- if (vmNames.length === 0) {
- vmNames = ['']
- }
- this.hvSchema.basic.definitions.VMNameType.enum = vmNames
- }
-
-
- loadBoard = async (boardXMLPath, callback) => {
- let boardData = await this.programLayer.loadBoard(this.WorkingFolder, boardXMLPath)
- if (boardData === false) {
- await this.removeHistory('board', boardXMLPath)
- return
- }
- let {shownName, boardXMLText, PCIDevices} = boardData
- scenario.definitions.PCIDevsConfiguration.properties.pci_dev.items.enum = PCIDevices
- Object.keys(this.vmSchemas).map((VMTypeKey) => {
- Object.keys(this.vmSchemas[VMTypeKey]).map((configLevelKey) => {
- this.vmSchemas[VMTypeKey][configLevelKey].definitions.PCIDevsConfiguration.properties.pci_dev.items.enum = PCIDevices
- })
- })
- try {
- let new_scenario = getNewSchema(boardXMLText)
- scenario.definitions = new_scenario.definitions;
- Object.keys(this.vmSchemas).map((VMTypeKey) => {
- Object.keys(this.vmSchemas[VMTypeKey]).map((configLevelKey) => {
- this.vmSchemas[VMTypeKey][configLevelKey].definitions = new_scenario.definitions
- })
- })
- Object.keys(this.hvSchema).map((configLevelKey) => {
- this.hvSchema[configLevelKey].definitions = new_scenario.definitions;
- })
- } catch (e) {
-
- }
-
- callback(shownName, boardXMLText)
- }
-
- async getHistory(key) {
- let p = await invoke("get_history", {historyType: NameTrans(key)})
- console.log("p", p);
- return JSON.parse(p)
- }
-
- async addHistory(key, historyPath) {
- await invoke("add_history", {historyType: NameTrans(key), path: historyPath})
- return Promise.resolve()
- }
-
- async setHistory(key, history) {
- return Promise.resolve()
- }
-
- async removeHistory(key, historyPath) {
- let history = await this.getHistory(key)
- let index = history.indexOf(historyPath);
- if (index > -1) {
- history.splice(index, 1);
- }
- return this.setHistory(key, history)
- }
-
-
- saveScenario = async () => {
- let shownPath = await this.programLayer.saveScenario(this.WorkingFolder)
- return this.addHistory('scenario', shownPath)
- }
-
-
- static #getSchema(prefix) {
- let bo = scenario.definitions[prefix + "BasicConfigType"]
- let basic = _.cloneDeep(scenario);
- basic.type = bo.type;
- basic.required = bo.required;
- basic.properties = bo.properties;
-
- let ao = scenario.definitions[prefix + "AdvancedConfigType"]
- let advanced = _.cloneDeep(scenario);
- advanced.type = ao.type;
- advanced.required = ao.required;
- advanced.properties = ao.properties;
-
- return {basic, advanced}
- }
-
- Schemas() {
- let prefixData = {
- HV: 'HV',
- PRE_LAUNCHED_VM: 'PreLaunchedVM',
- SERVICE_VM: 'ServiceVM',
- POST_LAUNCHED_VM: 'PostLaunchedVM'
- }
- for (let key in prefixData) {
- prefixData[key] = Configurator.#getSchema(prefixData[key])
- }
- return prefixData
- }
-
- log() {
- this.helper.log(...arguments)
- }
-}
diff --git a/misc/config_tools/configurator/src/lib/acrn.ts b/misc/config_tools/configurator/src/lib/acrn.ts
new file mode 100644
index 000000000..ace81c7c2
--- /dev/null
+++ b/misc/config_tools/configurator/src/lib/acrn.ts
@@ -0,0 +1,144 @@
+import {dialog, invoke} from "@tauri-apps/api";
+import JSON2XML from "./json2xml"
+import scenarioSchema from "../assets/schema/scenario.json";
+import {OpenDialogOptions} from "@tauri-apps/api/dialog";
+
+enum HistoryType {
+ WorkingFolder,
+ Board,
+ Scenario
+}
+
+export type HistoryTypeString = keyof typeof HistoryType;
+
+class PythonObject {
+ api(scriptName, ...params) {
+ // @ts-ignore
+ let pythonFunction = window.pyodide.pyimport(`configurator.pyodide.${scriptName}`);
+ let result = pythonFunction.main(...params);
+ return JSON.parse(result);
+ }
+
+ loadBoard(boardXMLText) {
+ return this.api('loadBoard', boardXMLText)
+ }
+
+ loadScenario(scenarioXMLText) {
+ return this.api('loadScenario', scenarioXMLText)
+ }
+
+ validateScenario(boardXMLText, scenarioXMLText) {
+ return this.api('validateScenario', boardXMLText, scenarioXMLText)
+ }
+
+ generateLaunchScript(boardXMLText, scenarioXMLText) {
+ return this.api('generateLaunchScript', boardXMLText, scenarioXMLText)
+ }
+}
+
+class Configurator {
+ public pythonObject: PythonObject;
+
+ constructor() {
+ this.pythonObject = new PythonObject()
+ }
+
+ getHistory(historyType: HistoryTypeString): Promise {
+ return invoke("get_history", {historyType})
+ .then((historyJsonText) => {
+ if (typeof historyJsonText === "string") {
+ return JSON.parse(historyJsonText);
+ }
+ return [];
+ })
+ }
+
+ addHistory(historyType: HistoryTypeString, historyPath: String) {
+ return invoke("add_history", {historyType, historyPath})
+ }
+
+ openDialog(options: OpenDialogOptions) {
+ return dialog.open(options)
+ }
+
+ readFile(filePath: String): Promise {
+ return invoke("acrn_read", {filePath})
+ }
+
+ writeFile(filePath: String, contents: String) {
+ return invoke("acrn_write", {filePath, contents})
+ }
+
+ isFile(filePath: String): Promise {
+ return invoke("acrn_is_file", {path: filePath})
+ }
+
+ readDir(path: String, recursive: Boolean) {
+ return invoke('acrn_read_dir', {path, recursive})
+ }
+
+ creatDir(path: String) {
+ return invoke('acrn_create_dir', {path})
+ }
+
+ runPython(code: String, isJSON = false): String | Object {
+ // @ts-ignore
+ let result = window.pydoide.runPython(code);
+ if (isJSON) {
+ result = JSON.parse(result)
+ }
+ return result
+ }
+
+ loadBoard(path: String) {
+ return this.readFile(path)
+ .then((fileContent) => {
+ let params = JSON.stringify({
+ boardXML: fileContent,
+ scenarioSchema: scenarioSchema
+ })
+ return this.pythonObject.loadBoard(fileContent)
+ })
+
+ }
+
+ loadScenario(path: String): Object {
+ return this.readFile(path).then((fileContent) => {
+ return this.pythonObject.loadScenario(fileContent)
+ })
+ }
+
+ newVM(vmid, load_order) {
+ return {
+ '@id': vmid,
+ load_order: load_order,
+ name: `VM${vmid}`
+ }
+ }
+
+ createNewScenario(pre, service, post) {
+ let newScenario = {
+ hv: {},
+ vm: []
+ }
+ let vmid = 0
+ let vmNums = {'PRE_LAUNCHED_VM': pre, 'SERVICE_VM': service, 'POST_LAUNCHED_VM': post}
+ for (let key in vmNums) {
+ for (let i = 0; i < vmNums[key]; i++) {
+ newScenario.vm.push(this.newVM(vmid, key))
+ vmid++;
+ }
+ }
+ return newScenario;
+ }
+
+ convertScenarioToXML(scenarioData: Object) {
+ let json2xml = new JSON2XML();
+ let xml_data = json2xml.convert(scenarioData);
+ return xml_data
+ }
+
+}
+
+let configurator = new Configurator()
+export default configurator
\ No newline at end of file
diff --git a/misc/config_tools/configurator/src/lib/bs4rjsf/.gitignore b/misc/config_tools/configurator/src/lib/bs4rjsf/.gitignore
deleted file mode 100644
index 4e57eef88..000000000
--- a/misc/config_tools/configurator/src/lib/bs4rjsf/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-*.js
-*.js.map
diff --git a/misc/config_tools/configurator/src/lib/bs4rjsf/AddButton/AddButton.tsx b/misc/config_tools/configurator/src/lib/bs4rjsf/AddButton/AddButton.tsx
deleted file mode 100644
index cc3ad1086..000000000
--- a/misc/config_tools/configurator/src/lib/bs4rjsf/AddButton/AddButton.tsx
+++ /dev/null
@@ -1,13 +0,0 @@
-import React from "react";
-
-import {AddButtonProps} from "@rjsf/core";
-import Button from "react-bootstrap/Button";
-import {BsPlus} from "react-icons/bs";
-
-const AddButton: React.FC = props => (
-
-
-
-);
-
-export default AddButton;
diff --git a/misc/config_tools/configurator/src/lib/bs4rjsf/AddButton/index.ts b/misc/config_tools/configurator/src/lib/bs4rjsf/AddButton/index.ts
deleted file mode 100644
index d8452a62d..000000000
--- a/misc/config_tools/configurator/src/lib/bs4rjsf/AddButton/index.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-export {default} from "./AddButton";
-export * from "./AddButton";
diff --git a/misc/config_tools/configurator/src/lib/bs4rjsf/ArrayFieldTemplate/ArrayFieldTemplate.tsx b/misc/config_tools/configurator/src/lib/bs4rjsf/ArrayFieldTemplate/ArrayFieldTemplate.tsx
deleted file mode 100644
index fbe9b2ed7..000000000
--- a/misc/config_tools/configurator/src/lib/bs4rjsf/ArrayFieldTemplate/ArrayFieldTemplate.tsx
+++ /dev/null
@@ -1,210 +0,0 @@
-import React from "react";
-import {utils} from "@rjsf/core";
-import Row from "react-bootstrap/Row";
-import Col from "react-bootstrap/Col";
-import Container from "react-bootstrap/Container";
-import {ArrayFieldTemplateProps, IdSchema} from "@rjsf/core";
-
-import AddButton from "../AddButton/AddButton";
-import IconButton from "../IconButton/IconButton";
-
-const {isMultiSelect, getDefaultRegistry} = utils;
-
-const ArrayFieldTemplate = (props: ArrayFieldTemplateProps) => {
- const {schema, registry = getDefaultRegistry()} = props;
-
- if (isMultiSelect(schema, registry.rootSchema)) {
- return ;
- } else {
- return ;
- }
-};
-
-type ArrayFieldTitleProps = {
- TitleField: any;
- idSchema: IdSchema;
- title: string;
- required: boolean;
-};
-
-const ArrayFieldTitle = ({
- TitleField,
- idSchema,
- title,
- required,
- }: ArrayFieldTitleProps) => {
- if (!title) {
- return null;
- }
-
- const id = `${idSchema.$id}__title`;
- return ;
-};
-
-type ArrayFieldDescriptionProps = {
- DescriptionField: any;
- idSchema: IdSchema;
- description: string;
-};
-
-const ArrayFieldDescription = ({
- DescriptionField,
- idSchema,
- description,
- }: ArrayFieldDescriptionProps) => {
- if (!description) {
- return null;
- }
-
- const id = `${idSchema.$id}__description`;
- return ;
-};
-
-// Used in the two templates
-const DefaultArrayItem = (props: any) => {
- const btnStyle = {
- flex: 1,
- paddingLeft: 6,
- paddingRight: 6,
- fontWeight: "bold",
- };
- return (
-
-
- {props.children}
-
-
- {props.hasToolbar && (
-
- {(props.hasMoveUp || props.hasMoveDown) && (
-
-
-
- )}
-
- {(props.hasMoveUp || props.hasMoveDown) && (
-
-
-
- )}
-
- {props.hasRemove && (
-
-
-
- )}
-
- )}
-
-
-
- );
-};
-
-const DefaultFixedArrayFieldTemplate = (props: ArrayFieldTemplateProps) => {
- return (
-
-
-
- {(props.uiSchema["ui:description"] || props.schema.description) && (
-
- {props.uiSchema["ui:description"] || props.schema.description}
-
- )}
-
-
- {props.items && props.items.map(DefaultArrayItem)}
-
-
- {props.canAdd && (
-
- )}
-
- );
-};
-
-const DefaultNormalArrayFieldTemplate = (props: ArrayFieldTemplateProps) => {
- return (
-
-
-
-
-
- {(props.uiSchema["ui:description"] || props.schema.description) && (
-
- )}
-
-
- {props.items && props.items.map(p => DefaultArrayItem(p))}
-
- {props.canAdd && (
-
-
-
-
-
-
-
- )}
-
-
-
-
- );
-};
-
-export default ArrayFieldTemplate;
diff --git a/misc/config_tools/configurator/src/lib/bs4rjsf/ArrayFieldTemplate/index.ts b/misc/config_tools/configurator/src/lib/bs4rjsf/ArrayFieldTemplate/index.ts
deleted file mode 100644
index a4dd3bbba..000000000
--- a/misc/config_tools/configurator/src/lib/bs4rjsf/ArrayFieldTemplate/index.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-export {default} from "./ArrayFieldTemplate";
-export * from "./ArrayFieldTemplate";
diff --git a/misc/config_tools/configurator/src/lib/bs4rjsf/CheckboxWidget/CheckboxWidget.tsx b/misc/config_tools/configurator/src/lib/bs4rjsf/CheckboxWidget/CheckboxWidget.tsx
deleted file mode 100644
index aa79b1664..000000000
--- a/misc/config_tools/configurator/src/lib/bs4rjsf/CheckboxWidget/CheckboxWidget.tsx
+++ /dev/null
@@ -1,50 +0,0 @@
-import React from "react";
-
-import {WidgetProps} from "@rjsf/core";
-import Form from "react-bootstrap/Form";
-
-const CheckboxWidget = (props: WidgetProps) => {
- const {
- id,
- value,
- required,
- disabled,
- readonly,
- label,
- schema,
- autofocus,
- onChange,
- onBlur,
- onFocus,
- } = props;
-
- const _onChange = ({
- target: {checked},
- }: React.FocusEvent) => onChange(checked);
- const _onBlur = ({
- target: {checked},
- }: React.FocusEvent) => onBlur(id, checked);
- const _onFocus = ({
- target: {checked},
- }: React.FocusEvent) => onFocus(id, checked);
-
- const desc = label || schema.description;
- return (
-
-
-
- );
-};
-
-export default CheckboxWidget;
diff --git a/misc/config_tools/configurator/src/lib/bs4rjsf/CheckboxWidget/index.ts b/misc/config_tools/configurator/src/lib/bs4rjsf/CheckboxWidget/index.ts
deleted file mode 100644
index 1090bf22c..000000000
--- a/misc/config_tools/configurator/src/lib/bs4rjsf/CheckboxWidget/index.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-export {default} from "./CheckboxWidget";
-export * from "./CheckboxWidget";
diff --git a/misc/config_tools/configurator/src/lib/bs4rjsf/CheckboxesWidget/CheckboxesWidget.tsx b/misc/config_tools/configurator/src/lib/bs4rjsf/CheckboxesWidget/CheckboxesWidget.tsx
deleted file mode 100644
index 2b34bf3f8..000000000
--- a/misc/config_tools/configurator/src/lib/bs4rjsf/CheckboxesWidget/CheckboxesWidget.tsx
+++ /dev/null
@@ -1,103 +0,0 @@
-import React from "react";
-import Form from "react-bootstrap/Form";
-import {WidgetProps} from "@rjsf/core";
-
-const selectValue = (value: any, selected: any, all: any) => {
- const at = all.indexOf(value);
- const updated = selected.slice(0, at).concat(value, selected.slice(at));
-
- // As inserting values at predefined index positions doesn't work with empty
- // arrays, we need to reorder the updated selection to match the initial order
- return updated.sort((a: any, b: any) => all.indexOf(a) > all.indexOf(b));
-};
-
-const deselectValue = (value: any, selected: any) => {
- return selected.filter((v: any) => v !== value);
-};
-
-const CheckboxesWidget = ({
- schema,
- label,
- id,
- disabled,
- options,
- value,
- autofocus,
- readonly,
- required,
- onChange,
- onBlur,
- onFocus,
- }: WidgetProps) => {
- const {enumOptions, enumDisabled, inline} = options;
-
- const _onChange = (option: any) => ({
- target: {checked},
- }: React.ChangeEvent) => {
- const all = (enumOptions as any).map(({value}: any) => value);
-
- if (checked) {
- onChange(selectValue(option.value, value, all));
- } else {
- onChange(deselectValue(option.value, value));
- }
- };
-
- const _onBlur = ({target: {value}}: React.FocusEvent) =>
- onBlur(id, value);
- const _onFocus = ({
- target: {value},
- }: React.FocusEvent) => onFocus(id, value);
-
- return (
- <>
- {label || schema.title}
-
- {(enumOptions as any).map((option: any, index: number) => {
- const checked = value.indexOf(option.value) !== -1;
- const itemDisabled =
- enumDisabled && (enumDisabled as any).indexOf(option.value) != -1;
-
- return inline ? (
-
-
- ) : (
-
-
- );
- })}
-
- >
- );
-};
-
-export default CheckboxesWidget;
diff --git a/misc/config_tools/configurator/src/lib/bs4rjsf/CheckboxesWidget/index.ts b/misc/config_tools/configurator/src/lib/bs4rjsf/CheckboxesWidget/index.ts
deleted file mode 100644
index 0a330f7ce..000000000
--- a/misc/config_tools/configurator/src/lib/bs4rjsf/CheckboxesWidget/index.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-export {default} from "./CheckboxesWidget";
-export * from "./CheckboxesWidget";
diff --git a/misc/config_tools/configurator/src/lib/bs4rjsf/ColorWidget/ColorWidget.tsx b/misc/config_tools/configurator/src/lib/bs4rjsf/ColorWidget/ColorWidget.tsx
deleted file mode 100644
index 3cca6122e..000000000
--- a/misc/config_tools/configurator/src/lib/bs4rjsf/ColorWidget/ColorWidget.tsx
+++ /dev/null
@@ -1,10 +0,0 @@
-import React from "react";
-import {WidgetProps} from "@rjsf/core";
-
-const ColorWidget = (props: WidgetProps) => {
- const {registry} = props;
- const {TextWidget} = registry.widgets;
- return ;
-};
-
-export default ColorWidget;
diff --git a/misc/config_tools/configurator/src/lib/bs4rjsf/ColorWidget/index.ts b/misc/config_tools/configurator/src/lib/bs4rjsf/ColorWidget/index.ts
deleted file mode 100644
index eecf91373..000000000
--- a/misc/config_tools/configurator/src/lib/bs4rjsf/ColorWidget/index.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-export {default} from "./ColorWidget";
-export * from "./ColorWidget";
diff --git a/misc/config_tools/configurator/src/lib/bs4rjsf/DateTimeWidget/DateTimeWidget.tsx b/misc/config_tools/configurator/src/lib/bs4rjsf/DateTimeWidget/DateTimeWidget.tsx
deleted file mode 100644
index 74087e299..000000000
--- a/misc/config_tools/configurator/src/lib/bs4rjsf/DateTimeWidget/DateTimeWidget.tsx
+++ /dev/null
@@ -1,24 +0,0 @@
-import React from "react";
-import {utils, WidgetProps} from "@rjsf/core";
-
-const {localToUTC, utcToLocal} = utils;
-
-const DateTimeWidget = (props: WidgetProps) => {
- const {registry} = props;
- const {TextWidget} = registry.widgets;
- const value = utcToLocal(props.value);
- const onChange = (value: any) => {
- props.onChange(localToUTC(value));
- };
-
- return (
-
- );
-};
-
-export default DateTimeWidget;
diff --git a/misc/config_tools/configurator/src/lib/bs4rjsf/DateTimeWidget/index.ts b/misc/config_tools/configurator/src/lib/bs4rjsf/DateTimeWidget/index.ts
deleted file mode 100644
index f412f0cb8..000000000
--- a/misc/config_tools/configurator/src/lib/bs4rjsf/DateTimeWidget/index.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-export {default} from "./DateTimeWidget";
-export * from "./DateTimeWidget";
diff --git a/misc/config_tools/configurator/src/lib/bs4rjsf/DateWidget/DateWidget.tsx b/misc/config_tools/configurator/src/lib/bs4rjsf/DateWidget/DateWidget.tsx
deleted file mode 100644
index d8b99a62c..000000000
--- a/misc/config_tools/configurator/src/lib/bs4rjsf/DateWidget/DateWidget.tsx
+++ /dev/null
@@ -1,15 +0,0 @@
-import React from "react";
-import {WidgetProps} from "@rjsf/core";
-
-const DateWidget = (props: WidgetProps) => {
- const {registry} = props;
- const {TextWidget} = registry.widgets;
- return (
-
- );
-};
-
-export default DateWidget;
diff --git a/misc/config_tools/configurator/src/lib/bs4rjsf/DateWidget/index.ts b/misc/config_tools/configurator/src/lib/bs4rjsf/DateWidget/index.ts
deleted file mode 100644
index 3260f890b..000000000
--- a/misc/config_tools/configurator/src/lib/bs4rjsf/DateWidget/index.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-export {default} from "./DateWidget";
-export * from "./DateWidget";
diff --git a/misc/config_tools/configurator/src/lib/bs4rjsf/DescriptionField/DescriptionField.tsx b/misc/config_tools/configurator/src/lib/bs4rjsf/DescriptionField/DescriptionField.tsx
deleted file mode 100644
index 1fca34ecf..000000000
--- a/misc/config_tools/configurator/src/lib/bs4rjsf/DescriptionField/DescriptionField.tsx
+++ /dev/null
@@ -1,18 +0,0 @@
-import React from "react";
-import {FieldProps} from "@rjsf/core";
-
-export interface DescriptionFieldProps extends Partial {
- description?: string;
-}
-
-const DescriptionField = ({description}: Partial) => {
- if (description) {
- return ;
- }
-
- return null;
-};
-
-export default DescriptionField;
diff --git a/misc/config_tools/configurator/src/lib/bs4rjsf/DescriptionField/index.ts b/misc/config_tools/configurator/src/lib/bs4rjsf/DescriptionField/index.ts
deleted file mode 100644
index e12b66a3b..000000000
--- a/misc/config_tools/configurator/src/lib/bs4rjsf/DescriptionField/index.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-export {default} from "./DescriptionField";
-export * from "./DescriptionField";
diff --git a/misc/config_tools/configurator/src/lib/bs4rjsf/EmailWidget/EmailWidget.tsx b/misc/config_tools/configurator/src/lib/bs4rjsf/EmailWidget/EmailWidget.tsx
deleted file mode 100644
index 581ce00c3..000000000
--- a/misc/config_tools/configurator/src/lib/bs4rjsf/EmailWidget/EmailWidget.tsx
+++ /dev/null
@@ -1,10 +0,0 @@
-import React from "react";
-import {WidgetProps} from "@rjsf/core";
-
-const EmailWidget = (props: WidgetProps) => {
- const {registry} = props;
- const {TextWidget} = registry.widgets;
- return ;
-};
-
-export default EmailWidget;
diff --git a/misc/config_tools/configurator/src/lib/bs4rjsf/EmailWidget/index.ts b/misc/config_tools/configurator/src/lib/bs4rjsf/EmailWidget/index.ts
deleted file mode 100644
index 4537a21aa..000000000
--- a/misc/config_tools/configurator/src/lib/bs4rjsf/EmailWidget/index.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-export {default} from "./EmailWidget";
-export * from "./EmailWidget";
diff --git a/misc/config_tools/configurator/src/lib/bs4rjsf/ErrorList/ErrorList.tsx b/misc/config_tools/configurator/src/lib/bs4rjsf/ErrorList/ErrorList.tsx
deleted file mode 100644
index 6a9a1bf04..000000000
--- a/misc/config_tools/configurator/src/lib/bs4rjsf/ErrorList/ErrorList.tsx
+++ /dev/null
@@ -1,25 +0,0 @@
-import React from "react";
-
-import Card from "react-bootstrap/Card";
-import ListGroup from "react-bootstrap/ListGroup";
-
-import {ErrorListProps} from "@rjsf/core";
-
-const ErrorList = ({errors}: ErrorListProps) => (
-
- Errors
-
-
- {errors.map((error, i: number) => {
- return (
-
- {error.stack}
-
- );
- })}
-
-
-
-);
-
-export default ErrorList;
diff --git a/misc/config_tools/configurator/src/lib/bs4rjsf/ErrorList/index.ts b/misc/config_tools/configurator/src/lib/bs4rjsf/ErrorList/index.ts
deleted file mode 100644
index 7626610c6..000000000
--- a/misc/config_tools/configurator/src/lib/bs4rjsf/ErrorList/index.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-export {default} from "./ErrorList";
-export * from "./ErrorList";
diff --git a/misc/config_tools/configurator/src/lib/bs4rjsf/FieldTemplate/FieldTemplate.tsx b/misc/config_tools/configurator/src/lib/bs4rjsf/FieldTemplate/FieldTemplate.tsx
deleted file mode 100644
index bd318d9f6..000000000
--- a/misc/config_tools/configurator/src/lib/bs4rjsf/FieldTemplate/FieldTemplate.tsx
+++ /dev/null
@@ -1,171 +0,0 @@
-import React from "react";
-
-import {FieldTemplateProps} from "@rjsf/core";
-
-import Form from "react-bootstrap/Form";
-import ListGroup from "react-bootstrap/ListGroup";
-
-import WrapIfAdditional from "./WrapIfAdditional";
-
-import {OverlayTrigger, Popover} from "react-bootstrap";
-import {FontAwesomeIcon} from "@fortawesome/react-fontawesome";
-import {faCircleInfo, faCircleExclamation} from "@fortawesome/free-solid-svg-icons";
-import _ from "lodash";
-
-const FieldTemplate = (
- {
- id,
- children,
- displayLabel,
- rawErrors = [],
- rawHelp,
- rawDescription,
- classNames,
- disabled,
- label,
- onDropPropertyClick,
- onKeyChange,
- readonly,
- required,
- schema,
- uiSchema
- }: FieldTemplateProps) => {
-
- let descLabel = (uiSchema.hasOwnProperty("ui:descLabel") && uiSchema["ui:descLabel"] === true)
- let descWithChildren
- let showLabel = _.endsWith(id, 'IVSHMEM_VM_0_VBDF') || _.endsWith(id, 'IVSHMEM_VM_0_VM_NAME') || (
- id.indexOf('vuart_connection') > 0 && (_.endsWith(id, 'vm_name') || _.endsWith(id, 'io_port'))
- )
- let dlva = uiSchema.hasOwnProperty("ui:descLabelAli") && uiSchema["ui:descLabelAli"] === 'V'
- if (displayLabel && rawDescription) {
- let desc
- const icon = rawErrors.length > 0 ? faCircleExclamation : faCircleInfo;
- if (descLabel) {
- if (dlva) {
- desc =
-
- 0 ? "text-danger" : "text-muted"}
- dangerouslySetInnerHTML={{__html: rawDescription}}/>
-
-
- }>
-
-
0 ? "text-danger" : "")}>
- {uiSchema["ui:title"] || schema.title || label}
- {(label || uiSchema["ui:title"] || schema.title) && required ? "*" : null}
-
-
-
- descWithChildren =
- {desc}
-
- {children}
-
-
- } else {
- desc =
-
- 0 ? "text-danger" : "text-muted"}
- dangerouslySetInnerHTML={{__html: rawDescription}}/>
-
-
- }>
-
-
0 ? "text-danger" : "")}>
- {uiSchema["ui:title"] || schema.title || label}
- {(label || uiSchema["ui:title"] || schema.title) && required ? "*" : null}
-
-
-
- descWithChildren =
- {desc}
-
- {children}
-
-
- }
- } else {
- desc =
-
- 0 ? "text-danger" : "text-muted"}
- dangerouslySetInnerHTML={{__html: rawDescription}}/>
-
-
- }>
-
- 0 ? "red" : ""}
- />
-
-
- descWithChildren =
- {desc}
-
- {children}
-
-
- }
-
-
- } else {
- descWithChildren = children
- }
- return (
-
-
- {descWithChildren}
- {rawErrors.length > 0 && (
-
- {rawErrors.map((error: string) => {
- return (
-
-
- {error}
-
-
- );
- })}
-
- )}
- {rawHelp && (
- 0 ? "text-danger" : "text-muted"}
- id={id}>
- {rawHelp}
-
- )}
-
-
- );
-};
-
-export default FieldTemplate;
diff --git a/misc/config_tools/configurator/src/lib/bs4rjsf/FieldTemplate/WrapIfAdditional.tsx b/misc/config_tools/configurator/src/lib/bs4rjsf/FieldTemplate/WrapIfAdditional.tsx
deleted file mode 100644
index fb2310da9..000000000
--- a/misc/config_tools/configurator/src/lib/bs4rjsf/FieldTemplate/WrapIfAdditional.tsx
+++ /dev/null
@@ -1,83 +0,0 @@
-import React from "react";
-
-import {utils} from "@rjsf/core";
-import {JSONSchema7} from "json-schema";
-
-import Row from "react-bootstrap/Row";
-import Col from "react-bootstrap/Col";
-import Form from "react-bootstrap/Form";
-
-import IconButton from "../IconButton/IconButton";
-
-const {ADDITIONAL_PROPERTY_FLAG} = utils;
-
-type WrapIfAdditionalProps = {
- children: React.ReactElement;
- classNames: string;
- disabled: boolean;
- id: string;
- label: string;
- onDropPropertyClick: (index: string) => (event?: any) => void;
- onKeyChange: (index: string) => (event?: any) => void;
- readonly: boolean;
- required: boolean;
- schema: JSONSchema7;
-};
-
-const WrapIfAdditional = ({
- children,
- disabled,
- id,
- label,
- onDropPropertyClick,
- onKeyChange,
- readonly,
- required,
- schema,
- }: WrapIfAdditionalProps) => {
- const keyLabel = `${label} Key`; // i18n ?
- const additional = schema.hasOwnProperty(ADDITIONAL_PROPERTY_FLAG);
-
- if (!additional) {
- return children;
- }
-
- const handleBlur = ({target}: React.FocusEvent) =>
- onKeyChange(target.value);
-
- return (
-
-
-
- {keyLabel}
-
-
-
-
- {children}
-
-
-
-
-
- );
-};
-
-export default WrapIfAdditional;
diff --git a/misc/config_tools/configurator/src/lib/bs4rjsf/FieldTemplate/index.ts b/misc/config_tools/configurator/src/lib/bs4rjsf/FieldTemplate/index.ts
deleted file mode 100644
index 8d6d06eb6..000000000
--- a/misc/config_tools/configurator/src/lib/bs4rjsf/FieldTemplate/index.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-export {default} from "./FieldTemplate";
-export * from "./FieldTemplate";
diff --git a/misc/config_tools/configurator/src/lib/bs4rjsf/Fields/Fields.ts b/misc/config_tools/configurator/src/lib/bs4rjsf/Fields/Fields.ts
deleted file mode 100644
index adb32d9f2..000000000
--- a/misc/config_tools/configurator/src/lib/bs4rjsf/Fields/Fields.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-import DescriptionField from "../DescriptionField/DescriptionField";
-import TitleField from "../TitleField/TitleField";
-
-export default {
- DescriptionField,
- TitleField,
-};
diff --git a/misc/config_tools/configurator/src/lib/bs4rjsf/Fields/index.ts b/misc/config_tools/configurator/src/lib/bs4rjsf/Fields/index.ts
deleted file mode 100644
index faa3dcbc3..000000000
--- a/misc/config_tools/configurator/src/lib/bs4rjsf/Fields/index.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-export {default} from "./Fields";
-export * from "./Fields";
diff --git a/misc/config_tools/configurator/src/lib/bs4rjsf/FileWidget/FileWidget.tsx b/misc/config_tools/configurator/src/lib/bs4rjsf/FileWidget/FileWidget.tsx
deleted file mode 100644
index 511c28e44..000000000
--- a/misc/config_tools/configurator/src/lib/bs4rjsf/FileWidget/FileWidget.tsx
+++ /dev/null
@@ -1,10 +0,0 @@
-import React from "react";
-import {WidgetProps} from "@rjsf/core";
-
-const FileWidget = (props: WidgetProps) => {
- const {registry} = props;
- const {TextWidget} = registry.widgets;
- return ;
-};
-
-export default FileWidget;
diff --git a/misc/config_tools/configurator/src/lib/bs4rjsf/FileWidget/index.ts b/misc/config_tools/configurator/src/lib/bs4rjsf/FileWidget/index.ts
deleted file mode 100644
index 558890e80..000000000
--- a/misc/config_tools/configurator/src/lib/bs4rjsf/FileWidget/index.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-export {default} from "./FileWidget";
-export * from "./FileWidget";
diff --git a/misc/config_tools/configurator/src/lib/bs4rjsf/Form/Form.tsx b/misc/config_tools/configurator/src/lib/bs4rjsf/Form/Form.tsx
deleted file mode 100644
index 971c6b565..000000000
--- a/misc/config_tools/configurator/src/lib/bs4rjsf/Form/Form.tsx
+++ /dev/null
@@ -1,10 +0,0 @@
-import {withTheme, FormProps} from "@rjsf/core";
-
-import Theme from "../Theme";
-import {StatelessComponent} from "react";
-
-const Form:
- | React.ComponentClass>
- | StatelessComponent> = withTheme(Theme);
-
-export default Form;
diff --git a/misc/config_tools/configurator/src/lib/bs4rjsf/Form/index.ts b/misc/config_tools/configurator/src/lib/bs4rjsf/Form/index.ts
deleted file mode 100644
index 243aa7b6d..000000000
--- a/misc/config_tools/configurator/src/lib/bs4rjsf/Form/index.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-export {default} from "./Form";
-export * from "./Form";
diff --git a/misc/config_tools/configurator/src/lib/bs4rjsf/IconButton/IconButton.tsx b/misc/config_tools/configurator/src/lib/bs4rjsf/IconButton/IconButton.tsx
deleted file mode 100644
index 062708166..000000000
--- a/misc/config_tools/configurator/src/lib/bs4rjsf/IconButton/IconButton.tsx
+++ /dev/null
@@ -1,33 +0,0 @@
-import React from "react";
-import Button, {ButtonProps} from "react-bootstrap/Button";
-import {IoIosRemove} from "react-icons/io";
-import {GrAdd} from "react-icons/gr";
-import {AiOutlineArrowUp, AiOutlineArrowDown} from "react-icons/ai";
-
-const mappings: any = {
- remove: ,
- plus: ,
- "arrow-up": ,
- "arrow-down": ,
-};
-
-type IconButtonProps = ButtonProps & {
- icon: string;
- variant?: ButtonProps["variant"];
- className?: string;
- tabIndex?: number;
- style?: any;
- disabled?: any;
- onClick?: any;
-};
-
-const IconButton = (props: IconButtonProps) => {
- const {icon, className, ...otherProps} = props;
- return (
-
- {mappings[icon]}
-
- );
-};
-
-export default IconButton;
diff --git a/misc/config_tools/configurator/src/lib/bs4rjsf/IconButton/index.ts b/misc/config_tools/configurator/src/lib/bs4rjsf/IconButton/index.ts
deleted file mode 100644
index 36cd49eb5..000000000
--- a/misc/config_tools/configurator/src/lib/bs4rjsf/IconButton/index.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-export {default} from "./IconButton";
-export * from "./IconButton";
diff --git a/misc/config_tools/configurator/src/lib/bs4rjsf/ObjectFieldTemplate/ObjectFieldTemplate.tsx b/misc/config_tools/configurator/src/lib/bs4rjsf/ObjectFieldTemplate/ObjectFieldTemplate.tsx
deleted file mode 100644
index 8f99c2465..000000000
--- a/misc/config_tools/configurator/src/lib/bs4rjsf/ObjectFieldTemplate/ObjectFieldTemplate.tsx
+++ /dev/null
@@ -1,81 +0,0 @@
-import React from "react";
-
-import Row from "react-bootstrap/Row";
-import Col from "react-bootstrap/Col";
-import Container from "react-bootstrap/Container";
-
-import {ObjectFieldTemplateProps} from "@rjsf/core";
-import {utils} from "@rjsf/core";
-
-import AddButton from "../AddButton/AddButton";
-
-const {canExpand} = utils;
-
-const ObjectFieldTemplate = (
- {
- DescriptionField,
- description,
- TitleField,
- title,
- properties,
- required,
- uiSchema,
- idSchema,
- schema,
- formData,
- onAddClick,
- disabled,
- readonly,
- }: ObjectFieldTemplateProps) => {
- let content = properties.map((element: any, index: number) => {
- return (
-
- {element.content}
-
- );
- })
- let expand = canExpand(schema, uiSchema, formData) ? (
-
-
-
-
-
- ) : null
-
- let container =
- {content}
- {expand}
-
-
- return (
- <>
- {(uiSchema["ui:title"] || title) && (
-
- )}
- {description && (
-
- )}
- {container}
- >
- );
-};
-
-export default ObjectFieldTemplate;
diff --git a/misc/config_tools/configurator/src/lib/bs4rjsf/ObjectFieldTemplate/index.ts b/misc/config_tools/configurator/src/lib/bs4rjsf/ObjectFieldTemplate/index.ts
deleted file mode 100644
index 1c56e5023..000000000
--- a/misc/config_tools/configurator/src/lib/bs4rjsf/ObjectFieldTemplate/index.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-export {default} from "./ObjectFieldTemplate";
-export * from "./ObjectFieldTemplate";
diff --git a/misc/config_tools/configurator/src/lib/bs4rjsf/PasswordWidget/PasswordWidget.tsx b/misc/config_tools/configurator/src/lib/bs4rjsf/PasswordWidget/PasswordWidget.tsx
deleted file mode 100644
index ad187fb55..000000000
--- a/misc/config_tools/configurator/src/lib/bs4rjsf/PasswordWidget/PasswordWidget.tsx
+++ /dev/null
@@ -1,55 +0,0 @@
-import React from "react";
-
-import Form from "react-bootstrap/Form";
-
-import {WidgetProps} from "@rjsf/core";
-
-const PasswordWidget = ({
- id,
- required,
- readonly,
- disabled,
- value,
- label,
- onFocus,
- onBlur,
- onChange,
- options,
- autofocus,
- schema,
- rawErrors = [],
- }: WidgetProps) => {
- const _onChange = ({
- target: {value},
- }: React.ChangeEvent) =>
- onChange(value === "" ? options.emptyValue : value);
- const _onBlur = ({target: {value}}: React.FocusEvent) =>
- onBlur(id, value);
- const _onFocus = ({
- target: {value},
- }: React.FocusEvent) => onFocus(id, value);
-
- return (
-
- 0 ? "text-danger" : ""}>
- {label || schema.title}
- {(label || schema.title) && required ? "*" : null}
-
- 0 ? "is-invalid" : ""}
- required={required}
- disabled={disabled}
- readOnly={readonly}
- type="password"
- value={value ? value : ""}
- onFocus={_onFocus}
- onBlur={_onBlur}
- onChange={_onChange}
- />
-
- );
-};
-
-export default PasswordWidget;
diff --git a/misc/config_tools/configurator/src/lib/bs4rjsf/PasswordWidget/index.ts b/misc/config_tools/configurator/src/lib/bs4rjsf/PasswordWidget/index.ts
deleted file mode 100644
index ad9455bc9..000000000
--- a/misc/config_tools/configurator/src/lib/bs4rjsf/PasswordWidget/index.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-export {default} from "./PasswordWidget";
-export * from "./PasswordWidget";
diff --git a/misc/config_tools/configurator/src/lib/bs4rjsf/RadioWidget/RadioWidget.tsx b/misc/config_tools/configurator/src/lib/bs4rjsf/RadioWidget/RadioWidget.tsx
deleted file mode 100644
index 80fa2594e..000000000
--- a/misc/config_tools/configurator/src/lib/bs4rjsf/RadioWidget/RadioWidget.tsx
+++ /dev/null
@@ -1,70 +0,0 @@
-import React from "react";
-
-import Form from "react-bootstrap/Form";
-
-import {WidgetProps} from "@rjsf/core";
-
-const RadioWidget = (
- {
- id,
- schema,
- options,
- value,
- required,
- disabled,
- readonly,
- label,
- onChange,
- onBlur,
- onFocus,
- uiSchema,
- }: WidgetProps) => {
- const {enumOptions, enumDisabled} = options;
-
- const _onChange = ({target: {value},}: React.ChangeEvent) =>
- onChange(schema.type == "boolean" ? value !== "false" : value);
- const _onBlur = ({target: {value}}: React.FocusEvent) =>
- onBlur(id, value);
- const _onFocus = ({target: {value},}: React.FocusEvent) => onFocus(id, value);
-
- const inline = Boolean(options && options.inline);
-
- return (
-
-
- {uiSchema["ui:title"] || schema.title || label}
- {(label || uiSchema["ui:title"] || schema.title) && required ? "*" : null}
-
-
- {(enumOptions as any).map((option: any, i: number) => {
- const itemDisabled =
- Array.isArray(enumDisabled) &&
- enumDisabled.indexOf(option.value) !== -1;
- const checked = option.value == value;
-
- // @ts-ignore
- const radio = (
-
- );
- return radio;
- })}
-
-
- );
-};
-
-export default RadioWidget;
diff --git a/misc/config_tools/configurator/src/lib/bs4rjsf/RadioWidget/index.ts b/misc/config_tools/configurator/src/lib/bs4rjsf/RadioWidget/index.ts
deleted file mode 100644
index d461a901c..000000000
--- a/misc/config_tools/configurator/src/lib/bs4rjsf/RadioWidget/index.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-export {default} from "./RadioWidget";
-export * from "./RadioWidget";
diff --git a/misc/config_tools/configurator/src/lib/bs4rjsf/RangeWidget/RangeWidget.tsx b/misc/config_tools/configurator/src/lib/bs4rjsf/RangeWidget/RangeWidget.tsx
deleted file mode 100644
index 9eeb38122..000000000
--- a/misc/config_tools/configurator/src/lib/bs4rjsf/RangeWidget/RangeWidget.tsx
+++ /dev/null
@@ -1,57 +0,0 @@
-import React from "react";
-
-import Form from "react-bootstrap/Form";
-
-import {utils} from "@rjsf/core";
-import {WidgetProps} from "@rjsf/core";
-
-const {rangeSpec} = utils;
-
-const RangeWidget = ({
- value,
- readonly,
- disabled,
- onBlur,
- onFocus,
- options,
- schema,
- onChange,
- required,
- label,
- id,
- uiSchema,
- }: WidgetProps) => {
- let sliderProps = {value, label, id, ...rangeSpec(schema)};
-
- const _onChange = ({
- target: {value},
- }: React.ChangeEvent) =>
- onChange(value === "" ? options.emptyValue : value);
- const _onBlur = ({target: {value}}: React.FocusEvent) =>
- onBlur(id, value);
- const _onFocus = ({
- target: {value},
- }: React.FocusEvent) => onFocus(id, value);
-
- return (
-
-
- {uiSchema["ui:title"] || schema.title || label}
- {(label || uiSchema["ui:title"] || schema.title) && required ? "*" : null}
-
-
- {value}
-
- );
-};
-
-export default RangeWidget;
diff --git a/misc/config_tools/configurator/src/lib/bs4rjsf/RangeWidget/index.ts b/misc/config_tools/configurator/src/lib/bs4rjsf/RangeWidget/index.ts
deleted file mode 100644
index f43ff7464..000000000
--- a/misc/config_tools/configurator/src/lib/bs4rjsf/RangeWidget/index.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-export {default} from "./RangeWidget";
-export * from "./RangeWidget";
diff --git a/misc/config_tools/configurator/src/lib/bs4rjsf/SelectWidget/SelectWidget.tsx b/misc/config_tools/configurator/src/lib/bs4rjsf/SelectWidget/SelectWidget.tsx
deleted file mode 100644
index 5a9c7b813..000000000
--- a/misc/config_tools/configurator/src/lib/bs4rjsf/SelectWidget/SelectWidget.tsx
+++ /dev/null
@@ -1,132 +0,0 @@
-import React from "react";
-
-import Form from "react-bootstrap/Form";
-
-import {WidgetProps} from "@rjsf/core";
-import {utils} from "@rjsf/core";
-
-const {asNumber, guessType} = utils;
-
-const nums = new Set(["number", "integer"]);
-
-/**
- * This is a silly limitation in the DOM where option change event values are
- * always retrieved as strings.
- */
-const processValue = (schema: any, value: any) => {
- // "enum" is a reserved word, so only "type" and "items" can be destructured
- const {type, items} = schema;
- if (value === "") {
- return undefined;
- } else if (type === "array" && items && nums.has(items.type)) {
- return value.map(asNumber);
- } else if (type === "boolean") {
- return value === "true";
- } else if (type === "number") {
- return asNumber(value);
- }
-
- // If type is undefined, but an enum is present, try and infer the type from
- // the enum values
- if (schema.enum) {
- if (schema.enum.every((x: any) => guessType(x) === "number")) {
- return asNumber(value);
- } else if (schema.enum.every((x: any) => guessType(x) === "boolean")) {
- return value === "true";
- }
- }
-
- return value;
-};
-
-const SelectWidget = (
- {
- schema,
- id,
- options,
- label,
- required,
- disabled,
- readonly,
- value,
- multiple,
- autofocus,
- onChange,
- onBlur,
- onFocus,
- placeholder,
- rawErrors = [],
- }: WidgetProps) => {
- const {enumOptions, enumDisabled} = options;
-
- const emptyValue = multiple ? [] : "";
-
- function getValue(
- event: React.FocusEvent | React.ChangeEvent | any,
- multiple: Boolean,
- ) {
- if (multiple) {
- return [].slice
- .call(event.target.options as any)
- .filter((o: any) => o.selected)
- .map((o: any) => o.value);
- } else {
- return event.target.value;
- }
- }
-
- return (
-
- 0 ? "text-danger" : "")}>
- {label || schema.title}
- {(label || schema.title) && required ? "*" : null}
-
-
-
0 ? "is-invalid" : "")}
- onBlur={
- onBlur &&
- ((event: React.FocusEvent) => {
- const newValue = getValue(event, multiple);
- onBlur(id, processValue(schema, newValue));
- })
- }
- onFocus={
- onFocus &&
- ((event: React.FocusEvent) => {
- const newValue = getValue(event, multiple);
- onFocus(id, processValue(schema, newValue));
- })
- }
- onChange={(event: React.ChangeEvent) => {
- const newValue = getValue(event, multiple);
- onChange(processValue(schema, newValue));
- }}>
- {!multiple && schema.default === undefined && (
- {placeholder}
- )}
- {(enumOptions as any).map(({value, label}: any, i: number) => {
- const disabled: any =
- Array.isArray(enumDisabled) &&
- (enumDisabled as any).indexOf(value) != -1;
- return (
-
- {label}
-
- );
- })}
-
-
-
- );
-};
-
-export default SelectWidget;
diff --git a/misc/config_tools/configurator/src/lib/bs4rjsf/SelectWidget/index.ts b/misc/config_tools/configurator/src/lib/bs4rjsf/SelectWidget/index.ts
deleted file mode 100644
index 6e104f2ea..000000000
--- a/misc/config_tools/configurator/src/lib/bs4rjsf/SelectWidget/index.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-export {default} from "./SelectWidget";
-export * from "./SelectWidget";
diff --git a/misc/config_tools/configurator/src/lib/bs4rjsf/TextWidget/TextWidget.tsx b/misc/config_tools/configurator/src/lib/bs4rjsf/TextWidget/TextWidget.tsx
deleted file mode 100644
index ea491c296..000000000
--- a/misc/config_tools/configurator/src/lib/bs4rjsf/TextWidget/TextWidget.tsx
+++ /dev/null
@@ -1,74 +0,0 @@
-import React from "react";
-
-import Form from "react-bootstrap/Form";
-
-import {WidgetProps} from "@rjsf/core";
-
-const TextWidget = (
- {
- id,
- placeholder,
- required,
- readonly,
- disabled,
- type,
- label,
- value,
- onChange,
- onBlur,
- onFocus,
- autofocus,
- options,
- schema,
- rawErrors = [],
- uiSchema,
- }: WidgetProps) => {
- const _onChange = ({
- target: {value},
- }: React.ChangeEvent) =>
- onChange(value === "" ? options.emptyValue : value);
- const _onBlur = ({target: {value}}: React.FocusEvent) =>
- onBlur(id, value);
- const _onFocus = ({
- target: {value},
- }: React.FocusEvent) => onFocus(id, value);
- const inputType = (type || schema.type) === "string" ? "text" : `${type || schema.type}`;
-
- // const classNames = [rawErrors.length > 0 ? "is-invalid" : "", type === 'file' ? 'custom-file-label': ""]
- return (
-
- 0 ? "text-danger" : "")}>
- {uiSchema["ui:title"] || schema.title || label}
- {(label || uiSchema["ui:title"] || schema.title) && required ? "*" : null}
-
-
-
0 ? "is-invalid" : ""}
- list={schema.examples ? `examples_${id}` : undefined}
- type={inputType}
- value={value || value === 0 ? value : ""}
- onChange={_onChange}
- onBlur={_onBlur}
- onFocus={_onFocus}
- />
-
- {schema.examples ? (
-
- {(schema.examples as string[])
- .concat(schema.default ? ([schema.default] as string[]) : [])
- .map((example: any) => {
- return ;
- })}
-
- ) : null}
-
- );
-};
-
-export default TextWidget;
diff --git a/misc/config_tools/configurator/src/lib/bs4rjsf/TextWidget/index.ts b/misc/config_tools/configurator/src/lib/bs4rjsf/TextWidget/index.ts
deleted file mode 100644
index e7e838908..000000000
--- a/misc/config_tools/configurator/src/lib/bs4rjsf/TextWidget/index.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-export {default} from "./TextWidget";
-export * from "./TextWidget";
diff --git a/misc/config_tools/configurator/src/lib/bs4rjsf/TextareaWidget/TextareaWidget.tsx b/misc/config_tools/configurator/src/lib/bs4rjsf/TextareaWidget/TextareaWidget.tsx
deleted file mode 100644
index 763efb975..000000000
--- a/misc/config_tools/configurator/src/lib/bs4rjsf/TextareaWidget/TextareaWidget.tsx
+++ /dev/null
@@ -1,71 +0,0 @@
-import React from "react";
-
-import {WidgetProps} from "@rjsf/core";
-import FormControl from "react-bootstrap/FormControl";
-import InputGroup from "react-bootstrap/InputGroup";
-
-type CustomWidgetProps = WidgetProps & {
- options: any;
-};
-
-const TextareaWidget = ({
- id,
- placeholder,
- value,
- required,
- disabled,
- autofocus,
- label,
- readonly,
- onBlur,
- onFocus,
- onChange,
- options,
- schema,
- rawErrors = [],
- uiSchema,
- }: CustomWidgetProps) => {
- const _onChange = ({
- target: {value},
- }: React.ChangeEvent) =>
- onChange(value === "" ? options.emptyValue : value);
- const _onBlur = ({
- target: {value},
- }: React.FocusEvent) => onBlur(id, value);
- const _onFocus = ({
- target: {value},
- }: React.FocusEvent) => onFocus(id, value);
-
- return (
- <>
-
- {uiSchema["ui:title"] || schema.title || label}
- {required && (
- 0 ? "text-danger ml-1" : "ml-1"}>
- {"*"}
-
- )}
-
-
-
-
- >
- );
-};
-
-export default TextareaWidget;
diff --git a/misc/config_tools/configurator/src/lib/bs4rjsf/TextareaWidget/index.ts b/misc/config_tools/configurator/src/lib/bs4rjsf/TextareaWidget/index.ts
deleted file mode 100644
index cbcf0b8f3..000000000
--- a/misc/config_tools/configurator/src/lib/bs4rjsf/TextareaWidget/index.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-export {default} from "./TextareaWidget";
-export * from "./TextareaWidget";
diff --git a/misc/config_tools/configurator/src/lib/bs4rjsf/Theme/Theme.tsx b/misc/config_tools/configurator/src/lib/bs4rjsf/Theme/Theme.tsx
deleted file mode 100644
index b3b0fc179..000000000
--- a/misc/config_tools/configurator/src/lib/bs4rjsf/Theme/Theme.tsx
+++ /dev/null
@@ -1,37 +0,0 @@
-import React from "react";
-
-import Button from "react-bootstrap/Button";
-
-import ArrayFieldTemplate from "../ArrayFieldTemplate";
-import ErrorList from "../ErrorList";
-import Fields from "../Fields";
-import FieldTemplate from "../FieldTemplate";
-import ObjectFieldTemplate from "../ObjectFieldTemplate";
-import Widgets from "../Widgets";
-
-import {ThemeProps} from "@rjsf/core";
-import {utils} from "@rjsf/core";
-
-const {getDefaultRegistry} = utils;
-
-const {fields, widgets} = getDefaultRegistry();
-
-const DefaultChildren = () => (
-
-
- Submit
-
-
-);
-
-const Theme: ThemeProps = {
- children: ,
- ArrayFieldTemplate,
- fields: {...fields, ...Fields},
- FieldTemplate,
- ObjectFieldTemplate,
- widgets: {...widgets, ...Widgets},
- ErrorList,
-};
-
-export default Theme;
diff --git a/misc/config_tools/configurator/src/lib/bs4rjsf/Theme/index.ts b/misc/config_tools/configurator/src/lib/bs4rjsf/Theme/index.ts
deleted file mode 100644
index 2398c7502..000000000
--- a/misc/config_tools/configurator/src/lib/bs4rjsf/Theme/index.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-export {default} from "./Theme";
-export * from "./Theme";
diff --git a/misc/config_tools/configurator/src/lib/bs4rjsf/TitleField/TitleField.tsx b/misc/config_tools/configurator/src/lib/bs4rjsf/TitleField/TitleField.tsx
deleted file mode 100644
index ee6067da2..000000000
--- a/misc/config_tools/configurator/src/lib/bs4rjsf/TitleField/TitleField.tsx
+++ /dev/null
@@ -1,17 +0,0 @@
-import React from "react";
-import {FieldProps} from "@rjsf/core";
-
-export interface TitleFieldProps extends Partial {
- title: string;
-}
-
-const TitleField = ({title, uiSchema}: Partial) => (
- <>
-
-
{(uiSchema && uiSchema["ui:title"]) || title}
-
-
- >
-);
-
-export default TitleField;
diff --git a/misc/config_tools/configurator/src/lib/bs4rjsf/TitleField/index.ts b/misc/config_tools/configurator/src/lib/bs4rjsf/TitleField/index.ts
deleted file mode 100644
index 51ee5dd17..000000000
--- a/misc/config_tools/configurator/src/lib/bs4rjsf/TitleField/index.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-export {default} from "./TitleField";
-export * from "./TitleField";
diff --git a/misc/config_tools/configurator/src/lib/bs4rjsf/URLWidget/URLWidget.tsx b/misc/config_tools/configurator/src/lib/bs4rjsf/URLWidget/URLWidget.tsx
deleted file mode 100644
index ff7972a63..000000000
--- a/misc/config_tools/configurator/src/lib/bs4rjsf/URLWidget/URLWidget.tsx
+++ /dev/null
@@ -1,10 +0,0 @@
-import React from "react";
-import {WidgetProps} from "@rjsf/core";
-
-const URLWidget = (props: WidgetProps) => {
- const {registry} = props;
- const {TextWidget} = registry.widgets;
- return ;
-};
-
-export default URLWidget;
diff --git a/misc/config_tools/configurator/src/lib/bs4rjsf/URLWidget/index.ts b/misc/config_tools/configurator/src/lib/bs4rjsf/URLWidget/index.ts
deleted file mode 100644
index 6aaa0378e..000000000
--- a/misc/config_tools/configurator/src/lib/bs4rjsf/URLWidget/index.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-export {default} from "./URLWidget";
-export * from "./URLWidget";
diff --git a/misc/config_tools/configurator/src/lib/bs4rjsf/UpDownWidget/UpDownWidget.tsx b/misc/config_tools/configurator/src/lib/bs4rjsf/UpDownWidget/UpDownWidget.tsx
deleted file mode 100644
index 8a732e1c2..000000000
--- a/misc/config_tools/configurator/src/lib/bs4rjsf/UpDownWidget/UpDownWidget.tsx
+++ /dev/null
@@ -1,52 +0,0 @@
-import React from "react";
-
-import Form from "react-bootstrap/Form";
-
-import {WidgetProps} from "@rjsf/core";
-
-const UpDownWidget = ({
- id,
- required,
- readonly,
- disabled,
- label,
- value,
- onChange,
- onBlur,
- onFocus,
- autofocus,
- schema,
- uiSchema,
- }: WidgetProps) => {
- const _onChange = ({
- target: {value},
- }: React.ChangeEvent) => onChange(value);
- const _onBlur = ({target: {value}}: React.FocusEvent) =>
- onBlur(id, value);
- const _onFocus = ({
- target: {value},
- }: React.FocusEvent) => onFocus(id, value);
-
- return (
-
-
- {uiSchema["ui:title"] || schema.title || label}
- {(label || uiSchema["ui:title"] || schema.title) && required ? "*" : null}
-
-
-
- );
-};
-
-export default UpDownWidget;
diff --git a/misc/config_tools/configurator/src/lib/bs4rjsf/UpDownWidget/index.ts b/misc/config_tools/configurator/src/lib/bs4rjsf/UpDownWidget/index.ts
deleted file mode 100644
index 4097027b7..000000000
--- a/misc/config_tools/configurator/src/lib/bs4rjsf/UpDownWidget/index.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-export {default} from "./UpDownWidget";
-export * from "./UpDownWidget";
diff --git a/misc/config_tools/configurator/src/lib/bs4rjsf/Widgets/Widgets.ts b/misc/config_tools/configurator/src/lib/bs4rjsf/Widgets/Widgets.ts
deleted file mode 100644
index cfd1a5b54..000000000
--- a/misc/config_tools/configurator/src/lib/bs4rjsf/Widgets/Widgets.ts
+++ /dev/null
@@ -1,33 +0,0 @@
-import CheckboxWidget from "../CheckboxWidget/CheckboxWidget";
-import CheckboxesWidget from "../CheckboxesWidget/CheckboxesWidget";
-import ColorWidget from "../ColorWidget/ColorWidget";
-import DateWidget from "../DateWidget/DateWidget";
-import DateTimeWidget from "../DateTimeWidget/DateTimeWidget";
-import EmailWidget from "../EmailWidget/EmailWidget";
-import PasswordWidget from "../PasswordWidget/PasswordWidget";
-import RadioWidget from "../RadioWidget/RadioWidget";
-import RangeWidget from "../RangeWidget/RangeWidget";
-import SelectWidget from "../SelectWidget/SelectWidget";
-import TextareaWidget from "../TextareaWidget/TextareaWidget";
-import TextWidget from "../TextWidget/TextWidget";
-import UpDownWidget from "../UpDownWidget/UpDownWidget";
-import URLWidget from "../URLWidget/URLWidget";
-import FileWidget from "../FileWidget/FileWidget";
-
-export default {
- CheckboxWidget,
- CheckboxesWidget,
- ColorWidget,
- DateWidget,
- DateTimeWidget,
- EmailWidget,
- PasswordWidget,
- RadioWidget,
- RangeWidget,
- SelectWidget,
- TextareaWidget,
- TextWidget,
- UpDownWidget,
- URLWidget,
- FileWidget,
-};
diff --git a/misc/config_tools/configurator/src/lib/bs4rjsf/Widgets/index.ts b/misc/config_tools/configurator/src/lib/bs4rjsf/Widgets/index.ts
deleted file mode 100644
index 91b5756bc..000000000
--- a/misc/config_tools/configurator/src/lib/bs4rjsf/Widgets/index.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-export {default} from "./Widgets";
-export * from "./Widgets";
diff --git a/misc/config_tools/configurator/src/lib/bs4rjsf/index.ts b/misc/config_tools/configurator/src/lib/bs4rjsf/index.ts
deleted file mode 100644
index 2e1e8faf8..000000000
--- a/misc/config_tools/configurator/src/lib/bs4rjsf/index.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-import Form from "./Form/Form";
-
-export {default as Fields} from "./Fields";
-export {default as FieldTemplate} from "./FieldTemplate";
-export {default as Form} from "./Form";
-export {default as ObjectFieldTemplate} from "./ObjectFieldTemplate";
-export {default as Theme} from "./Theme";
-export {default as Widgets} from "./Widgets";
-
-export default Form;
diff --git a/misc/config_tools/configurator/src/lib/helper.jsx b/misc/config_tools/configurator/src/lib/helper.jsx
deleted file mode 100644
index 65e507862..000000000
--- a/misc/config_tools/configurator/src/lib/helper.jsx
+++ /dev/null
@@ -1,221 +0,0 @@
-import _ from "lodash";
-import xml2json, {parseXml} from "./xml2json";
-import JSON2XML from "./json2xml";
-
-import {fs, path} from "@tauri-apps/api"
-
-
-// noinspection JSUnresolvedFunction,JSUnresolvedVariable
-class BackendBase {
- listConfig = async () => {
- await this.init
-
- let config = await this.read(this.configPath)
- if (config == null) {
- return {}
- }
- try {
- config = JSON.parse(config)
- } catch (e) {
- return {}
- }
- return config
- }
-
- getConfig = async (key, defaultValue) => {
- let config = await this.listConfig()
- console.log(key, config, defaultValue)
- if (config.hasOwnProperty(key)) {
- return config[key]
- }
- return defaultValue
- }
-
- setConfig = async (key, value) => {
- let config = await this.listConfig()
- config[key] = value
- config = JSON.stringify(config)
- await this.write(this.configPath, config)
- }
-
- read = async () => {
- throw new Error('Not Impl')
- }
- write = async () => {
- throw new Error('Not Impl')
- }
- list = async () => {
- throw new Error('Not Impl')
- }
- remove = async () => {
- throw new Error('Not Impl')
- }
-}
-
-export class LocalStorageBackend extends BackendBase {
- constructor() {
- super()
- this.rootFSName = 'acrn-configurator'
- this.configPath = 'config.json'
- }
-
- _readRootFS = () => {
- let localStorageFS = localStorage.getItem(this.rootFSName)
- if (localStorageFS == null) {
- return {}
- }
- localStorageFS = JSON.parse(localStorageFS)
- return localStorageFS
- }
-
- _writeRootFS = (fs) => {
- localStorage.setItem(this.rootFSName, JSON.stringify(fs))
- }
-
- read = async (filePath) => {
- let localStorageFS = this._readRootFS()
- if (localStorageFS.hasOwnProperty(filePath)) {
- return localStorageFS[filePath]
- }
- return null
- }
-
- write = async (filePath, value) => {
- let localStorageFS = this._readRootFS()
- localStorageFS[filePath] = value
- this._writeRootFS(localStorageFS)
- }
- list = async (dirPath) => {
- let localStorageFS = this._readRootFS()
- let dirFiles = []
- for (let filepath in localStorageFS) {
- if (_.startsWith(filepath, dirPath)) {
- dirFiles.push(filepath)
- }
- }
- return dirFiles
- }
- remove = async (filename) => {
- let localStorageFS = this._readRootFS()
- if (localStorageFS.hasOwnProperty(filename)) {
- delete localStorageFS[filename]
- }
- }
-}
-
-export class TauriLocalFSBackend extends BackendBase {
- constructor() {
- super()
- this.init = path.homeDir()
- .then(async (dirPath) => {
- this.configDir = await path.join(dirPath, '.acrn-configurator')
- this.configPath = await path.join(this.configDir, 'config.json')
- return fs.readDir(this.configDir)
- .catch(async () => {
- fs.createDir(this.configDir, {recursive: true})
- .then(() => this.write(this.configPath, "{}"))
- .catch((reason) => {
- alert("Create config dir failed. Error:" + reason)
- })
- })
- })
- }
-
-
- read = async (filePath) => {
- await this.init
- return await fs.readTextFile(filePath)
- .catch(reason => {
- // Todo: add isFile function to check perm
- // alert("Read file error! Error: " + reason);
- return null
- })
- }
-
- write = async (filePath, value) => {
- await this.init
- return await fs.writeFile({
- path: filePath,
- contents: value
- }).catch((reason => alert("Write file error! Error: " + reason)))
- }
-
- list = async (dirPath) => {
- await this.init
- return (await fs.readDir(dirPath))
- .filter((file) => file.children == null)
- .map((file) => file.path)
- }
-
- remove = async (filePath) => {
- await this.init
- return await fs.removeFile(filePath)
- }
-
-}
-
-export class Helper {
- constructor(configBackend, fsBackend) {
- this.configBackend = configBackend
- this.fsBackend = fsBackend
- this.color = {
- blue: "#1475b2",
- green: "#42c02e",
- deepGray: "#606060"
- }
- }
-
- log(title, content, backgroundColor = this.color.green) {
- console.log(
- "%c ".concat(title, " %c ").concat(content, " "),
- "padding: 1px; border-radius: 3px 0 0 3px; color: #fff; background: ".concat(this.color.deepGray, ";"),
- "padding: 1px; border-radius: 0 3px 3px 0; color: #fff; background: ".concat(backgroundColor, ";")
- )
- }
-
- resolveHome = async (filepath) => {
- if (filepath[0] === '~') {
- return await path.join(await path.homeDir(), filepath.slice(1))
- }
- return filepath;
- }
-
- convertXMLTextToObj = (XMLText) => {
- let jsonText = xml2json(parseXml(XMLText))
- // console.log(scenarioData)
- return JSON.parse(jsonText)
- }
-
- convertObjToXML = (o) => {
- // convert our js object to xml
- let json2xml = new JSON2XML()
- // noinspection UnnecessaryLocalVariableJS
- let xml = json2xml.convert(o)
- return xml
- }
-
- read = async filePath => {
- return await this.fsBackend.read(filePath)
- }
-
- save = async (filePath, text) => {
- await this.fsBackend.write(filePath, text)
- };
-
- list = async dirPath => {
- return await this.fsBackend.list(dirPath)
- };
-
- remove = async filePath => {
- await this.fsBackend.remove(filePath).catch((reason => alert("Remove file failed! Error:" + reason)))
- }
-
- getConfig = async (configKeyName, defaultValue) => {
- return await this.configBackend.getConfig(configKeyName, defaultValue)
- }
-
- setConfig = async (configKeyName, value) => {
- return await this.configBackend.setConfig(configKeyName, value)
- };
-
-}
diff --git a/misc/config_tools/configurator/src/lib/json2xml.jsx b/misc/config_tools/configurator/src/lib/json2xml.js
similarity index 100%
rename from misc/config_tools/configurator/src/lib/json2xml.jsx
rename to misc/config_tools/configurator/src/lib/json2xml.js
diff --git a/misc/config_tools/configurator/src/lib/platform/tauri/tauri.jsx b/misc/config_tools/configurator/src/lib/platform/tauri/tauri.jsx
deleted file mode 100644
index 51895534a..000000000
--- a/misc/config_tools/configurator/src/lib/platform/tauri/tauri.jsx
+++ /dev/null
@@ -1,22 +0,0 @@
-import {appWindow} from "@tauri-apps/api/window";
-
-class WindowHelper {
- minimal = (cb = null) => {
- appWindow.minimize().then(() => {
- cb ? cb() : false
- })
- }
-
- maxmal = (cb = null) => {
- appWindow.toggleMaximize().then(() => {
- cb ? cb() : false
- })
- }
-
- close = () => {
- appWindow.close().then()
- }
-}
-
-
-export const windowHelper = new WindowHelper()
\ No newline at end of file
diff --git a/misc/config_tools/configurator/src/lib/runpy.jsx b/misc/config_tools/configurator/src/lib/runpy.jsx
deleted file mode 100644
index e568764b9..000000000
--- a/misc/config_tools/configurator/src/lib/runpy.jsx
+++ /dev/null
@@ -1,58 +0,0 @@
-import dynamicScenario from "../assets/schema/dynamicScenario.py"
-import scenario_json from "../assets/schema/scenario.json"
-import {Base64} from 'js-base64';
-
-
-function toJSONString(obj) {
- if (_.isString(obj)) {
- return JSON.stringify(obj)
- }
- return JSON.stringify(JSON.stringify(obj))
-}
-
-
-async function initPyodide() {
- await pyodide.runPythonAsync(
- `import micropip
-await micropip.install(['elementpath', 'xmlschema'])
-`)
- return pyodide
-}
-
-initPyodide()
-
-function runPyCode(pythonCode) {
- pyodide.loadPackagesFromImports(pythonCode)
- return pyodide.runPython(pythonCode)
-}
-
-function writeFile(filename, content) {
- let file_content = JSON.stringify(content)
- return runPyCode(
- `import json; open(${toJSONString(filename)},'w',encoding='utf-8').write(json.loads(${toJSONString(file_content)}))`
- )
-}
-
-function readFile(filename) {
- return runPyCode(
- `open(${toJSONString(filename)},'r',encoding='utf-8').read()`
- )
-}
-
-function loadLibrary(libraryName, content) {
- return writeFile(`/lib/python3.9/${libraryName}.py`, content)
-}
-
-function getNewSchema(boardXMLText) {
- let params = JSON.stringify({board_xml: boardXMLText, scenario_json: JSON.stringify(scenario_json)})
- params = Base64.encode(params);
- let scenario_text = runPyCode(`
-params="${params}"
-${dynamicScenario}
-`)
- let new_scenario_json = JSON.parse(scenario_text)
- console.log(new_scenario_json)
- return new_scenario_json
-}
-
-export {runPyCode, readFile, writeFile, getNewSchema}
\ No newline at end of file
diff --git a/misc/config_tools/configurator/src/lib/xml2json.js b/misc/config_tools/configurator/src/lib/xml2json.js
deleted file mode 100644
index f7f933cc6..000000000
--- a/misc/config_tools/configurator/src/lib/xml2json.js
+++ /dev/null
@@ -1,191 +0,0 @@
-export function parseXml(xml) {
- let dom = null;
- if (window.DOMParser) {
- try {
- dom = (new DOMParser()).parseFromString(xml, "text/xml");
- } catch (e) {
- dom = null;
- }
- } else if (window.ActiveXObject) {
- try {
- dom = new ActiveXObject('Microsoft.XMLDOM');
- dom.async = false;
- if (!dom.loadXML(xml)) {
- // parse error ..
- window.alert(dom.parseError.reason + dom.parseError.srcText);
- }
- } catch (e) {
- dom = null;
- }
- } else {
- alert("cannot parse xml string!");
- }
- return dom;
-}
-
-export default function xml2json(xml, tab = "\t") {
- let X = {
- toObj: function (xml) {
- let o = {};
- if (xml.nodeType === 1) {
- // element node ..
- if (xml.attributes.length) {
- // element with attributes ..
- for (let i = 0; i < xml.attributes.length; i++) {
- o["@" + xml.attributes[i].nodeName] = (xml.attributes[i].nodeValue || "").toString();
- }
- }
- if (xml.firstChild) {
- // element has child nodes ..
- let textChild = 0, cdataChild = 0, hasElementChild = false;
- for (let n = xml.firstChild; n; n = n.nextSibling) {
- if (n.nodeType === 1) {
- hasElementChild = true;
- } else if (n.nodeType === 3 && n.nodeValue.match(/[^ \f\n\r\t\v]/)) {
- // non-whitespace text
- textChild++;
- } else if (n.nodeType === 4) {
- // cdata section node
- cdataChild++;
- }
- }
- if (hasElementChild) {
- if (textChild < 2 && cdataChild < 2) {
- // structured element with evtl. a single text or/and cdata node ..
- X.removeWhite(xml);
- for (let n = xml.firstChild; n; n = n.nextSibling) {
- if (n.nodeType === 3) {
- // text node
- o["#text"] = X.escape(n.nodeValue);
- } else if (n.nodeType === 4) {
- // cdata node
- o["#cdata"] = X.escape(n.nodeValue);
- } else if (o[n.nodeName]) {
- // multiple occurence of element ..
- if (o[n.nodeName] instanceof Array) {
- o[n.nodeName][o[n.nodeName].length] = X.toObj(n);
- } else {
- o[n.nodeName] = [o[n.nodeName], X.toObj(n)];
- }
-
- } else {
- // first occurence of element..
- o[n.nodeName] = X.toObj(n);
- }
- }
- } else {
- // mixed content
- if (!xml.attributes.length) {
- o = X.escape(X.innerXml(xml));
- } else {
- o["#text"] = X.escape(X.innerXml(xml));
- }
- }
- } else if (textChild) {
- // pure text
- if (!xml.attributes.length)
- o = X.escape(X.innerXml(xml));
- else
- o["#text"] = X.escape(X.innerXml(xml));
- } else if (cdataChild) {
- // cdata
- if (cdataChild > 1)
- o = X.escape(X.innerXml(xml));
- else {
- for (let n = xml.firstChild; n; n = n.nextSibling)
- o["#cdata"] = X.escape(n.nodeValue);
- }
- }
- }
- if (!xml.attributes.length && !xml.firstChild) o = null;
- } else if (xml.nodeType === 9) {
- // document.node
- o = X.toObj(xml.documentElement);
- } else
- alert("unhandled node type: " + xml.nodeType);
- return o;
- },
- toJson: function (o, name, ind) {
- let json = name ? ("\"" + name + "\"") : "";
- if (o instanceof Array) {
- for (let i = 0, n = o.length; i < n; i++)
- o[i] = X.toJson(o[i], "", ind + "\t");
- json += (name ? ":[" : "[") + (o.length > 1 ? ("\n" + ind + "\t" + o.join(",\n" + ind + "\t") + "\n" + ind) : o.join("")) + "]";
- } else if (o == null)
- json += (name && ":") + "null";
- else if (typeof (o) == "object") {
- let arr = [];
- for (let m in o)
- arr[arr.length] = X.toJson(o[m], m, ind + "\t");
- json += (name ? ":{" : "{") + (arr.length > 1 ? ("\n" + ind + "\t" + arr.join(",\n" + ind + "\t") + "\n" + ind) : arr.join("")) + "}";
- } else if (typeof (o) == "string")
- json += (name && ":") + "\"" + o.toString() + "\"";
- else
- json += (name && ":") + o.toString();
- return json;
- },
- innerXml: function (node) {
- let s = ""
- if ("innerHTML" in node)
- s = node.innerHTML;
- else {
- let asXml = function (n) {
- let s = "";
- if (n.nodeType === 1) {
- s += "<" + n.nodeName;
- for (let i = 0; i < n.attributes.length; i++)
- s += " " + n.attributes[i].nodeName + "=\"" + (n.attributes[i].nodeValue || "").toString() + "\"";
- if (n.firstChild) {
- s += ">";
- for (let c = n.firstChild; c; c = c.nextSibling)
- s += asXml(c);
- s += "" + n.nodeName + ">";
- } else
- s += "/>";
- } else if (n.nodeType === 3)
- s += n.nodeValue;
- else if (n.nodeType === 4)
- s += "";
- return s;
- };
- for (let c = node.firstChild; c; c = c.nextSibling)
- s += asXml(c);
- }
- return s;
- },
- escape: function (txt) {
- return txt.replace(/[\\]/g, "\\\\")
- .replace(/["]/g, '\\"')
- .replace(/[\n]/g, '\\n')
- .replace(/[\r]/g, '\\r');
- },
- removeWhite: function (e) {
- e.normalize();
- for (let n = e.firstChild; n;) {
- if (n.nodeType === 3) { // text node
- if (!n.nodeValue.match(/[^ \f\n\r\t\v]/)) {
- // pure whitespace text node
- let nxt = n.nextSibling;
- e.removeChild(n);
- n = nxt;
- } else
- n = n.nextSibling;
- } else if (n.nodeType === 1) {
- // element node
- X.removeWhite(n);
- n = n.nextSibling;
- } else {
- // any other node
- n = n.nextSibling;
- }
- }
- return e;
- }
- };
- if (xml.nodeType === 9) {
- // document node
- xml = xml.documentElement;
- }
- let json = X.toJson(X.toObj(X.removeWhite(xml)), xml.nodeName, "\t");
- return "{\n" + tab + (tab ? json.replace(/\t/g, tab) : json.replace(/[\t\n]/g, "")) + "\n}";
-}
diff --git a/misc/config_tools/configurator/src/logo.svg b/misc/config_tools/configurator/src/logo.svg
deleted file mode 100644
index 6b60c1042..000000000
--- a/misc/config_tools/configurator/src/logo.svg
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/misc/config_tools/configurator/src/main.js b/misc/config_tools/configurator/src/main.js
new file mode 100644
index 000000000..758bf82f9
--- /dev/null
+++ b/misc/config_tools/configurator/src/main.js
@@ -0,0 +1,102 @@
+const isTauri = !!window.__TAURI_IPC__;
+const isRelease = location.host === 'tauri.localhost';
+import VConsole from 'vconsole';
+
+if (isRelease) {
+ const vConsole = new VConsole();
+}
+
+
+import {createApp} from 'vue'
+import App from './App.vue'
+import {loadPyodide} from "/thirdLib/pyodide/pyodide";
+
+import router from "./router";
+import {invoke} from "@tauri-apps/api/tauri";
+import {mockIPC} from "@tauri-apps/api/mocks";
+import BootstrapVue3 from 'bootstrap-vue-3'
+import naive from 'naive-ui';
+
+const app = createApp(App);
+app.use(BootstrapVue3);
+app.use(naive);
+app.use(router);
+app.config.unwrapInjectedRef = true
+
+if (!isTauri) {
+ // Patch Browser function to mock Tauri env
+ const origin_confirm = window.confirm;
+ window.confirm = async (message) => origin_confirm(message);
+
+ // mock custom tauri command
+ let tempData = {
+ history: {WorkingFolder: [], Board: [], Scenario: []}
+ }
+ mockIPC(async (cmd, args) => {
+ if (cmd === 'get_home') {
+ return 'C:\\Users\\Axel'
+ }
+ if (cmd === 'dialogOpenFolder') {
+ return 'C:\\acrn'
+ }
+ if (cmd === 'get_history') {
+ return JSON.stringify(tempData.history[args.historyType])
+ }
+ if (cmd === 'add_history') {
+ return tempData.history[args.historyType].push(args.path)
+ }
+ if (args?.message?.cmd === "getAppVersion") {
+ const packageInfo = await import('../package.json');
+ return packageInfo.version;
+ }
+
+ console.log(cmd, args)
+ return {}
+ })
+}
+
+async function main() {
+ console.log("Pyodide Load Begin")
+ let t1 = Date.now();
+ let pyodide = await loadPyodide();
+ await pyodide.loadPackage(['micropip', 'lxml', 'beautifulsoup4'])
+ await pyodide.runPythonAsync(`
+ import micropip
+ await micropip.install([
+ './thirdLib/xmltodict-0.12.0-py2.py3-none-any.whl',
+ './thirdLib/elementpath-2.4.0-py3-none-any.whl',
+ './thirdLib/defusedxml-0.7.1-py2.py3-none-any.whl',
+ './thirdLib/xmlschema-1.9.2-py3-none-any.whl',
+ './thirdLib/acrn_config_tools-3.0-py3-none-any.whl'
+ ])
+ `)
+
+ function test() {
+ let result = pyodide.runPython(`
+ import sys
+ sys.version
+ `)
+ console.log(result);
+ }
+
+ test()
+
+ // pyodide load success
+ window.pyodide = pyodide;
+ let t2 = Date.now();
+ console.log("Pyodide Load Time: " + (t2 - t1) + "ms")
+
+ let homeDir = await invoke("get_home");
+ let pathSplit = "/";
+ if (homeDir.indexOf("\\") > 0) {
+ pathSplit = "\\"
+ }
+
+ window.systemInfo = {
+ homeDir, pathSplit
+ }
+
+ app.mount('#app')
+}
+
+main();
diff --git a/misc/config_tools/configurator/src/main.jsx b/misc/config_tools/configurator/src/main.jsx
deleted file mode 100644
index e878a4b86..000000000
--- a/misc/config_tools/configurator/src/main.jsx
+++ /dev/null
@@ -1,25 +0,0 @@
-import VConsole from 'vconsole';
-
-const vConsole = new VConsole();
-import React from 'react'
-import ReactDOM from 'react-dom'
-
-import './index.scss'
-import './assets/fonts/Roboto.css'
-
-import App from './App'
-import Navbar from "./components/Navbar";
-import MyErrorBoundary from "./pages/Error/MyErrorBoundary";
-import {Container} from "react-bootstrap";
-
-ReactDOM.render(
-
-
-
-
-
-
-
- ,
- document.getElementById('root')
-)
diff --git a/misc/config_tools/configurator/src/pages/Config.vue b/misc/config_tools/configurator/src/pages/Config.vue
new file mode 100644
index 000000000..947dbf691
--- /dev/null
+++ b/misc/config_tools/configurator/src/pages/Config.vue
@@ -0,0 +1,228 @@
+
+
+
+
+
+
+
+ Working folder: {{ WorkingFolder }}
+
+
+
+
+
+
+
+ 1. Import a board configuration file
+
+
+
+
+
+
+
+
+
+
2. Create new or import an existing scenario
+
+ Current scenario: {{ scenarioHaveData ? 'scenario.xml' : 'none selected' }}
+
+
+
+
+
+
+
+
+
+
+
3. Configure settings for scenario and launch scripts
+
+ Save Scenario and Launch Scripts
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/misc/config_tools/configurator/src/pages/Config/Board.vue b/misc/config_tools/configurator/src/pages/Config/Board.vue
new file mode 100644
index 000000000..a4d8d3db0
--- /dev/null
+++ b/misc/config_tools/configurator/src/pages/Config/Board.vue
@@ -0,0 +1,144 @@
+
+
+
+
+
+
+
+
+
+
{{ this.imported ? this.board.BIOS_INFO : '' }}
+
{{ this.imported ? this.board.BASE_BOARD_INFO : '' }}
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/misc/config_tools/configurator/src/pages/Config/Config.css b/misc/config_tools/configurator/src/pages/Config/Config.css
deleted file mode 100644
index 52c3dbd87..000000000
--- a/misc/config_tools/configurator/src/pages/Config/Config.css
+++ /dev/null
@@ -1,8 +0,0 @@
-.card, .card-header {
- background-color: #F5F5F5;
-}
-
-.configBody {
- height: calc(100vh - 80px);
- overflow: auto;
-}
\ No newline at end of file
diff --git a/misc/config_tools/configurator/src/pages/Config/Config.jsx b/misc/config_tools/configurator/src/pages/Config/Config.jsx
deleted file mode 100644
index 106fdea36..000000000
--- a/misc/config_tools/configurator/src/pages/Config/Config.jsx
+++ /dev/null
@@ -1,67 +0,0 @@
-import React from "react";
-import {Accordion, Container} from "react-bootstrap";
-
-import "./Config.css"
-
-import Banner from "../../components/Banner";
-
-import backArrow from '../../assets/images/back_arrow_icon.svg'
-
-
-// import ExitACRNConfigurationModal from "./ExitACRNConfigurationModal/ExitACRNConfigurationModal";
-import ImportABoardConfigurationFile from "./ImportABoardConfigurationFile";
-import CreateNewOrImportAnExistingScenario from "./CreateNewOrImportAnExistingScenario";
-import ConfigureSettingsForScenario from "./ConfigureSettingsForScenario";
-
-import Footer from "../../components/Footer";
-import {ACRNContext} from "../../ACRNContext";
-
-class Config extends React.Component {
- constructor(props, context) {
- super(props);
- let {configurator} = context
- this.state = {
- WorkingFolder: configurator.WorkingFolder
- }
- }
-
- render = () => {
- return (
-
-
-
-
{
- document.location.href = '#'
- }}/> Working folder: {this.state.WorkingFolder}
-
-
-
-
-
-
- {/**/}
-
-
-
-
- {/*/!**!/*/}
-
-
-
-
- {/**/}
-
-
-
-
-
-
)
- };
-
-
-}
-
-Config.contextType = ACRNContext
-
-export default Config
diff --git a/misc/config_tools/configurator/src/pages/Config/ConfigForm/ConfigForm.vue b/misc/config_tools/configurator/src/pages/Config/ConfigForm/ConfigForm.vue
new file mode 100644
index 000000000..38710d7c6
--- /dev/null
+++ b/misc/config_tools/configurator/src/pages/Config/ConfigForm/ConfigForm.vue
@@ -0,0 +1,152 @@
+
+
+
+
+
+
+ Delete VM
+
+
+
+
+
+ *
+ are required fields
+
+
+
+
+
+
+
+
+
+ *
+ are required fields
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/misc/config_tools/configurator/src/pages/Config/ConfigForm/TabBox.vue b/misc/config_tools/configurator/src/pages/Config/ConfigForm/TabBox.vue
new file mode 100644
index 000000000..ff8ac6615
--- /dev/null
+++ b/misc/config_tools/configurator/src/pages/Config/ConfigForm/TabBox.vue
@@ -0,0 +1,132 @@
+
+
+
+
Hypervisor
+
Global Settings
+
+
+
+
+
+ {{ pre.name }}
+
+
Pre-Launched
+
+
+
+
+
+
+
Pre-launched VM
+
+
+
+
+
+ {{ service.name }}
+
+
ServiceVM
+
+
+
+
+
+ {{ post.name }}
+
+
Post-Launched
+
+
+
+
+
+
+
Post-launched VM
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/ConfigForm/ConfigForm.css b/misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/ConfigForm/ConfigForm.css
deleted file mode 100644
index bd8a5eab6..000000000
--- a/misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/ConfigForm/ConfigForm.css
+++ /dev/null
@@ -1,10 +0,0 @@
-.form-area {
- mix-blend-mode: normal;
- border: 1px solid #373A77;
- box-sizing: border-box;
- border-radius: 5px;
-}
-
-.object-property-expand {
- display: none;
-}
diff --git a/misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/ConfigForm/ConfigForm.jsx b/misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/ConfigForm/ConfigForm.jsx
deleted file mode 100644
index 96e7532f9..000000000
--- a/misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/ConfigForm/ConfigForm.jsx
+++ /dev/null
@@ -1,150 +0,0 @@
-import React, {Component} from "react"
-import Form from "../../../../lib/bs4rjsf"
-import {ACRNContext} from "../../../../ACRNContext";
-import SelectWidget from "./IVSHMEM_VM/SelectWidget";
-import TextWidget from "./IVSHMEM_VM/TextWidget";
-
-// import CustomTemplateField from "./CustomTemplateField/CustomTemplateField";
-
-export class ConfigForm extends Component {
- constructor(props) {
- super(props);
- }
-
- setFormData = (data) => {
- let {configurator} = this.context
- let VMID = data['@id']
-
- if (VMID == null) {
- configurator.programLayer.scenarioData.hv = data
- return
- }
-
- let load_order = data['load_order']
- for (let index = 0; index < configurator.programLayer.scenarioData.vm[load_order].length; index++) {
- if (configurator.programLayer.scenarioData.vm[load_order][index]['@id'] === VMID) {
- configurator.programLayer.scenarioData.vm[load_order][index] = data
- }
- }
-
- }
-
-
- getParams = (VMID, mode) => {
- let {configurator} = this.context
- let schema, formData;
- if (VMID === -1) {
- schema = configurator.hvSchema[mode]
- formData = configurator.programLayer.scenarioData.hv
- } else {
- let VMData = null;
- configurator.programLayer.getOriginScenarioData().vm.map((vmConfig) => {
- if (vmConfig['@id'] === VMID) {
- VMData = vmConfig
- }
- })
- schema = configurator.vmSchemas[VMData.load_order][mode]
- formData = VMData
- }
-
- return {schema, formData}
- }
-
-
- render = () => {
- let VMID = this.props.VMID
- let mode = this.props.mode
-
- let params = this.getParams(VMID, mode)
- let uiSchema = {
- basic: {
- DEBUG_OPTIONS: {
- BUILD_TYPE: {
- "ui:widget": "radio"
- }
- },
- FEATURES: {
- IVSHMEM: {
- IVSHMEM_REGION: {
- items: {
- IVSHMEM_VMS: {
- IVSHMEM_VM: {
- "ui:style": {
- border: "1px solid gray",
- padding: "1rem",
- borderRadius: "7px"
- },
- items: {
- VM_NAME: {
- "ui:grid": 7,
- "ui:widget": 'VM_NAME',
- "ui:descLabel": true,
- "ui:descLabelAli": 'H',
- "ui:descLabelMT": true
- },
- VBDF: {
- "ui:grid": 5,
- "ui:widget": 'VBDF',
- "ui:descLabel": true,
- "ui:descLabelAli": 'V',
- }
- }
- }
- }
- }
- }
- }
- },
- vuart_connections: {
- vuart_connection: {
- items: {
- endpoint: {
- items: {
- vm_name: {
- "ui:grid": 6,
- "ui:widget": 'VBDF',
- "ui:descLabel": true,
- "ui:descLabelAli": 'V',
- },
- io_port: {
- "ui:grid": 6,
- "ui:widget": 'VBDF',
- "ui:descLabel": true,
- "ui:descLabelAli": 'V',
- },
- }
- }
- }
- }
- }
- },
- additionalProperties: {
- "ui:widget": "hidden"
- }
- }
-
- let widgets = {
- VM_NAME: SelectWidget,
- VBDF: TextWidget
- }
-
-
- return
-
* are required fields
-
- }
-}
-
-ConfigForm.contextType = ACRNContext
\ No newline at end of file
diff --git a/misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/ConfigForm/CustomTemplateField/CustomTemplateField.js b/misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/ConfigForm/CustomTemplateField/CustomTemplateField.js
deleted file mode 100644
index 5eea0cd9f..000000000
--- a/misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/ConfigForm/CustomTemplateField/CustomTemplateField.js
+++ /dev/null
@@ -1,30 +0,0 @@
-import React from "react";
-import Form from "react-bootstrap/Form";
-import ListGroup from "react-bootstrap/ListGroup";
-import WrapIfAdditional from "./WrapIfAdditional";
-// @ts-ignore
-import rst2html from "rst2html";
-import { OverlayTrigger, Popover } from "react-bootstrap";
-import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
-import { faCircleExclamation } from "@fortawesome/free-solid-svg-icons";
-const CustomTemplateField = ({ id, children, displayLabel, rawErrors = [], rawHelp, rawDescription, classNames, disabled, label, onDropPropertyClick, onKeyChange, readonly, required, schema }) => {
- let descHtml = "";
- if (rawDescription) {
- descHtml = rst2html(rawDescription);
- }
- return (React.createElement(WrapIfAdditional, { classNames: classNames, disabled: disabled, id: id, label: label, onDropPropertyClick: onDropPropertyClick, onKeyChange: onKeyChange, readonly: readonly, required: required, schema: schema },
- React.createElement(Form.Group, null,
- displayLabel && rawDescription && (React.createElement(OverlayTrigger, { trigger: ["hover", "focus"], key: "top", placement: "top", overlay: React.createElement(Popover, { id: `popover-positioned-top` },
- React.createElement(Popover.Body, null,
- React.createElement(Form.Text, { className: rawErrors.length > 0 ? "text-danger" : "text-muted", dangerouslySetInnerHTML: { __html: descHtml } }))) },
- React.createElement("span", null,
- React.createElement(FontAwesomeIcon, { icon: faCircleExclamation, color: rawErrors.length > 0 ? "red" : "gray" })))),
- children,
- rawErrors.length > 0 && (React.createElement(ListGroup, { as: "ul" }, rawErrors.map((error) => {
- return (React.createElement(ListGroup.Item, { as: "li", key: error, className: "border-0 m-0 p-0" },
- React.createElement("small", { className: "m-0 text-danger" }, error)));
- }))),
- rawHelp && (React.createElement(Form.Text, { className: rawErrors.length > 0 ? "text-danger" : "text-muted", id: id }, rawHelp)))));
-};
-export default CustomTemplateField;
-//# sourceMappingURL=CustomTemplateField.js.map
\ No newline at end of file
diff --git a/misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/ConfigForm/CustomTemplateField/CustomTemplateField.js.map b/misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/ConfigForm/CustomTemplateField/CustomTemplateField.js.map
deleted file mode 100644
index dc6dce9de..000000000
--- a/misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/ConfigForm/CustomTemplateField/CustomTemplateField.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"CustomTemplateField.js","sourceRoot":"","sources":["CustomTemplateField.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,IAAI,MAAM,sBAAsB,CAAC;AACxC,OAAO,SAAS,MAAM,2BAA2B,CAAC;AAClD,OAAO,gBAAgB,MAAM,oBAAoB,CAAA;AACjD,aAAa;AACb,OAAO,QAAQ,MAAM,UAAU,CAAA;AAC/B,OAAO,EAAC,cAAc,EAAE,OAAO,EAAC,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAC,eAAe,EAAC,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAC,mBAAmB,EAAC,MAAM,mCAAmC,CAAC;AAEtE,MAAM,mBAAmB,GAAG,CACxB,EACI,EAAE,EACF,QAAQ,EACR,YAAY,EACZ,SAAS,GAAG,EAAE,EACd,OAAO,EACP,cAAc,EACd,UAAU,EACV,QAAQ,EACR,KAAK,EACL,mBAAmB,EACnB,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,MAAM,EACW,EAAE,EAAE;IAEzB,IAAI,QAAQ,GAAG,EAAE,CAAA;IACjB,IAAI,cAAc,EAAE;QAChB,QAAQ,GAAG,QAAQ,CAAC,cAAc,CAAC,CAAC;KACvC;IAED,OAAO,CACH,oBAAC,gBAAgB,IACb,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,QAAQ,EAClB,EAAE,EAAE,EAAE,EACN,KAAK,EAAE,KAAK,EACZ,mBAAmB,EAAE,mBAAmB,EACxC,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,MAAM;QAEd,oBAAC,IAAI,CAAC,KAAK;YACN,YAAY,IAAI,cAAc,IAAI,CAC/B,oBAAC,cAAc,IACX,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,EAC3B,GAAG,EAAC,KAAK,EACT,SAAS,EAAC,KAAK,EACf,OAAO,EACH,oBAAC,OAAO,IAAC,EAAE,EAAE,wBAAwB;oBACjC,oBAAC,OAAO,CAAC,IAAI;wBACT,oBAAC,IAAI,CAAC,IAAI,IAAC,SAAS,EAAE,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,EAC9D,uBAAuB,EAAE,EAAC,MAAM,EAAE,QAAQ,EAAC,GAAG,CAC9C,CACT;gBAEd;oBACI,oBAAC,eAAe,IACZ,IAAI,EAAE,mBAAmB,EACzB,KAAK,EAAE,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,GAC9C,CACC,CACM,CACpB;YACA,QAAQ;YACR,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,CACrB,oBAAC,SAAS,IAAC,EAAE,EAAC,IAAI,IACb,SAAS,CAAC,GAAG,CAAC,CAAC,KAAa,EAAE,EAAE;gBAC7B,OAAO,CACH,oBAAC,SAAS,CAAC,IAAI,IAAC,EAAE,EAAC,IAAI,EAAC,GAAG,EAAE,KAAK,EAAE,SAAS,EAAC,kBAAkB;oBAC5D,+BAAO,SAAS,EAAC,iBAAiB,IAC7B,KAAK,CACF,CACK,CACpB,CAAC;YACN,CAAC,CAAC,CACM,CACf;YACA,OAAO,IAAI,CACR,oBAAC,IAAI,CAAC,IAAI,IACN,SAAS,EAAE,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,EAC9D,EAAE,EAAE,EAAE,IACL,OAAO,CACA,CACf,CACQ,CACE,CACtB,CAAC;AACN,CAAC,CAAC;AAEF,eAAe,mBAAmB,CAAC"}
\ No newline at end of file
diff --git a/misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/ConfigForm/CustomTemplateField/CustomTemplateField.tsx b/misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/ConfigForm/CustomTemplateField/CustomTemplateField.tsx
deleted file mode 100644
index dc404e39c..000000000
--- a/misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/ConfigForm/CustomTemplateField/CustomTemplateField.tsx
+++ /dev/null
@@ -1,97 +0,0 @@
-import React from "react";
-
-import {FieldTemplateProps} from "@rjsf/core";
-
-import Form from "react-bootstrap/Form";
-import ListGroup from "react-bootstrap/ListGroup";
-import WrapIfAdditional from "./WrapIfAdditional"
-// @ts-ignore
-import rst2html from "rst2html"
-import {OverlayTrigger, Popover} from "react-bootstrap";
-import {FontAwesomeIcon} from "@fortawesome/react-fontawesome";
-import {faCircleExclamation} from "@fortawesome/free-solid-svg-icons";
-
-const CustomTemplateField = (
- {
- id,
- children,
- displayLabel,
- rawErrors = [],
- rawHelp,
- rawDescription,
- classNames,
- disabled,
- label,
- onDropPropertyClick,
- onKeyChange,
- readonly,
- required,
- schema
- }: FieldTemplateProps) => {
-
- let descHtml = ""
- if (rawDescription) {
- descHtml = rst2html(rawDescription);
- }
-
- return (
-
-
- {displayLabel && rawDescription && (
-
-
- 0 ? "text-danger" : "text-muted"}
- dangerouslySetInnerHTML={{__html: descHtml}}/>
-
-
- }>
-
- 0 ? "red" : "gray"}
- />
-
-
- )}
- {children}
- {rawErrors.length > 0 && (
-
- {rawErrors.map((error: string) => {
- return (
-
-
- {error}
-
-
- );
- })}
-
- )}
- {rawHelp && (
- 0 ? "text-danger" : "text-muted"}
- id={id}>
- {rawHelp}
-
- )}
-
-
- );
-};
-
-export default CustomTemplateField;
diff --git a/misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/ConfigForm/CustomTemplateField/WrapIfAdditional.js b/misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/ConfigForm/CustomTemplateField/WrapIfAdditional.js
deleted file mode 100644
index 1845c5985..000000000
--- a/misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/ConfigForm/CustomTemplateField/WrapIfAdditional.js
+++ /dev/null
@@ -1,30 +0,0 @@
-import React from "react";
-import { utils } from "@rjsf/core";
-import Row from "react-bootstrap/Row";
-import Col from "react-bootstrap/Col";
-import Form from "react-bootstrap/Form";
-import IconButton from "@rjsf/bootstrap-4";
-const { ADDITIONAL_PROPERTY_FLAG } = utils;
-const WrapIfAdditional = ({ children, disabled, id, label, onDropPropertyClick, onKeyChange, readonly, required, schema, }) => {
- const keyLabel = `${label} Key`; // i18n ?
- const additional = schema.hasOwnProperty(ADDITIONAL_PROPERTY_FLAG);
- if (!additional) {
- return children;
- }
- const handleBlur = ({ target }) => onKeyChange(target.value);
- // @ts-ignore
- return (React.createElement(Row, { key: `${id}-key` },
- React.createElement(Col, { xs: 5 },
- React.createElement(Form.Group, null,
- React.createElement(Form.Label, null, keyLabel),
- React.createElement(Form.Control, { required: required, defaultValue: label, disabled: disabled || readonly, id: `${id}-key`, name: `${id}-key`, onBlur: !readonly ? handleBlur : undefined, type: "text" }))),
- React.createElement(Col, { xs: 5 }, children),
- React.createElement(Col, { xs: 2, className: "py-4" },
- React.createElement(IconButton
- // @ts-ignore
- , {
- // @ts-ignore
- block: true, className: "w-100", variant: "danger", icon: "remove", tabIndex: -1, disabled: disabled || readonly, onClick: onDropPropertyClick(label) }))));
-};
-export default WrapIfAdditional;
-//# sourceMappingURL=WrapIfAdditional.js.map
\ No newline at end of file
diff --git a/misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/ConfigForm/CustomTemplateField/WrapIfAdditional.js.map b/misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/ConfigForm/CustomTemplateField/WrapIfAdditional.js.map
deleted file mode 100644
index cd823ef9d..000000000
--- a/misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/ConfigForm/CustomTemplateField/WrapIfAdditional.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"WrapIfAdditional.js","sourceRoot":"","sources":["WrapIfAdditional.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAC,KAAK,EAAC,MAAM,YAAY,CAAC;AAGjC,OAAO,GAAG,MAAM,qBAAqB,CAAC;AACtC,OAAO,GAAG,MAAM,qBAAqB,CAAC;AACtC,OAAO,IAAI,MAAM,sBAAsB,CAAC;AAExC,OAAO,UAAU,MAAM,mBAAmB,CAAC;AAE3C,MAAM,EAAC,wBAAwB,EAAC,GAAG,KAAK,CAAC;AAezC,MAAM,gBAAgB,GAAG,CAAC,EACI,QAAQ,EACR,QAAQ,EACR,EAAE,EACF,KAAK,EACL,mBAAmB,EACnB,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,MAAM,GACc,EAAE,EAAE;IAClD,MAAM,QAAQ,GAAG,GAAG,KAAK,MAAM,CAAC,CAAC,SAAS;IAC1C,MAAM,UAAU,GAAG,MAAM,CAAC,cAAc,CAAC,wBAAwB,CAAC,CAAC;IAEnE,IAAI,CAAC,UAAU,EAAE;QACb,OAAO,QAAQ,CAAC;KACnB;IAED,MAAM,UAAU,GAAG,CAAC,EAAC,MAAM,EAAqC,EAAE,EAAE,CAChE,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAG9B,aAAa;IACb,OAAO,CACH,oBAAC,GAAG,IAAC,GAAG,EAAE,GAAG,EAAE,MAAM;QACjB,oBAAC,GAAG,IAAC,EAAE,EAAE,CAAC;YACN,oBAAC,IAAI,CAAC,KAAK;gBACP,oBAAC,IAAI,CAAC,KAAK,QAAE,QAAQ,CAAc;gBACnC,oBAAC,IAAI,CAAC,OAAO,IACT,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,KAAK,EACnB,QAAQ,EAAE,QAAQ,IAAI,QAAQ,EAC9B,EAAE,EAAE,GAAG,EAAE,MAAM,EACf,IAAI,EAAE,GAAG,EAAE,MAAM,EACjB,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,EAC1C,IAAI,EAAC,MAAM,GACb,CACO,CACX;QACN,oBAAC,GAAG,IAAC,EAAE,EAAE,CAAC,IACL,QAAQ,CACP;QACN,oBAAC,GAAG,IAAC,EAAE,EAAE,CAAC,EAAE,SAAS,EAAC,MAAM;YACxB,oBAAC,UAAU;YACP,aAAa;;gBAAb,aAAa;gBACb,KAAK,EAAE,IAAI,EACX,SAAS,EAAC,OAAO,EACjB,OAAO,EAAC,QAAQ,EAChB,IAAI,EAAC,QAAQ,EACb,QAAQ,EAAE,CAAC,CAAC,EACZ,QAAQ,EAAE,QAAQ,IAAI,QAAQ,EAC9B,OAAO,EAAE,mBAAmB,CAAC,KAAK,CAAC,GACrC,CACA,CACJ,CACT,CAAC;AACN,CAAC,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
\ No newline at end of file
diff --git a/misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/ConfigForm/CustomTemplateField/WrapIfAdditional.tsx b/misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/ConfigForm/CustomTemplateField/WrapIfAdditional.tsx
deleted file mode 100644
index 56b606bd2..000000000
--- a/misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/ConfigForm/CustomTemplateField/WrapIfAdditional.tsx
+++ /dev/null
@@ -1,85 +0,0 @@
-import React from "react";
-
-import {utils} from "@rjsf/core";
-import {JSONSchema7} from "json-schema";
-
-import Row from "react-bootstrap/Row";
-import Col from "react-bootstrap/Col";
-import Form from "react-bootstrap/Form";
-
-import IconButton from "@rjsf/bootstrap-4";
-
-const {ADDITIONAL_PROPERTY_FLAG} = utils;
-
-type WrapIfAdditionalProps = {
- children: React.ReactElement;
- classNames: string;
- disabled: boolean;
- id: string;
- label: string;
- onDropPropertyClick: (index: string) => (event?: any) => void;
- onKeyChange: (index: string) => (event?: any) => void;
- readonly: boolean;
- required: boolean;
- schema: JSONSchema7;
-};
-
-const WrapIfAdditional = ({
- children,
- disabled,
- id,
- label,
- onDropPropertyClick,
- onKeyChange,
- readonly,
- required,
- schema,
- }: WrapIfAdditionalProps) => {
- const keyLabel = `${label} Key`; // i18n ?
- const additional = schema.hasOwnProperty(ADDITIONAL_PROPERTY_FLAG);
-
- if (!additional) {
- return children;
- }
-
- const handleBlur = ({target}: React.FocusEvent) =>
- onKeyChange(target.value);
-
-
- // @ts-ignore
- return (
-
-
-
- {keyLabel}
-
-
-
-
- {children}
-
-
-
-
-
- );
-};
-
-export default WrapIfAdditional;
diff --git a/misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/ConfigForm/IVSHMEM_VM/SelectWidget/SelectWidget.tsx b/misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/ConfigForm/IVSHMEM_VM/SelectWidget/SelectWidget.tsx
deleted file mode 100644
index 0c5eef43a..000000000
--- a/misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/ConfigForm/IVSHMEM_VM/SelectWidget/SelectWidget.tsx
+++ /dev/null
@@ -1,130 +0,0 @@
-import React from "react";
-
-import Form from "react-bootstrap/Form";
-
-import {WidgetProps} from "@rjsf/core";
-import {utils} from "@rjsf/core";
-import _ from "lodash";
-
-const {asNumber, guessType} = utils;
-
-const nums = new Set(["number", "integer"]);
-
-/**
- * This is a silly limitation in the DOM where option change event values are
- * always retrieved as strings.
- */
-const processValue = (schema: any, value: any) => {
- // "enum" is a reserved word, so only "type" and "items" can be destructured
- const {type, items} = schema;
- if (value === "") {
- return undefined;
- } else if (type === "array" && items && nums.has(items.type)) {
- return value.map(asNumber);
- } else if (type === "boolean") {
- return value === "true";
- } else if (type === "number") {
- return asNumber(value);
- }
-
- // If type is undefined, but an enum is present, try and infer the type from
- // the enum values
- if (schema.enum) {
- if (schema.enum.every((x: any) => guessType(x) === "number")) {
- return asNumber(value);
- } else if (schema.enum.every((x: any) => guessType(x) === "boolean")) {
- return value === "true";
- }
- }
-
- return value;
-};
-
-const SelectWidget = (
- {
- schema,
- id,
- options,
- label,
- required,
- disabled,
- readonly,
- value,
- multiple,
- autofocus,
- onChange,
- onBlur,
- onFocus,
- placeholder,
- rawErrors = [],
- }: WidgetProps) => {
- const {enumOptions, enumDisabled} = options;
-
- const emptyValue = multiple ? [] : "";
-
- function getValue(
- event: React.FocusEvent | React.ChangeEvent | any,
- multiple: Boolean,
- ) {
- if (multiple) {
- return [].slice
- .call(event.target.options as any)
- .filter((o: any) => o.selected)
- .map((o: any) => o.value);
- } else {
- return event.target.value;
- }
- }
-
- let isFirst = _.endsWith(id, 'IVSHMEM_VM_0_VM_NAME')
- return (
-
-
-
0 ? "is-invalid" : "")}
- onBlur={
- onBlur &&
- ((event: React.FocusEvent) => {
- const newValue = getValue(event, multiple);
- onBlur(id, processValue(schema, newValue));
- })
- }
- onFocus={
- onFocus &&
- ((event: React.FocusEvent) => {
- const newValue = getValue(event, multiple);
- onFocus(id, processValue(schema, newValue));
- })
- }
- onChange={(event: React.ChangeEvent) => {
- const newValue = getValue(event, multiple);
- onChange(processValue(schema, newValue));
- }}>
- {!multiple && schema.default === undefined && (
- {placeholder}
- )}
- {(enumOptions as any).map(({value, label}: any, i: number) => {
- const disabled: any =
- Array.isArray(enumDisabled) &&
- (enumDisabled as any).indexOf(value) != -1;
- return (
-
- {label}
-
- );
- })}
-
-
-
- );
-};
-
-export default SelectWidget;
diff --git a/misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/ConfigForm/IVSHMEM_VM/SelectWidget/index.ts b/misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/ConfigForm/IVSHMEM_VM/SelectWidget/index.ts
deleted file mode 100644
index 6e104f2ea..000000000
--- a/misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/ConfigForm/IVSHMEM_VM/SelectWidget/index.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-export {default} from "./SelectWidget";
-export * from "./SelectWidget";
diff --git a/misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/ConfigForm/IVSHMEM_VM/TextWidget/TextWidget.tsx b/misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/ConfigForm/IVSHMEM_VM/TextWidget/TextWidget.tsx
deleted file mode 100644
index 23e0ca0e5..000000000
--- a/misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/ConfigForm/IVSHMEM_VM/TextWidget/TextWidget.tsx
+++ /dev/null
@@ -1,72 +0,0 @@
-import React from "react";
-
-import Form from "react-bootstrap/Form";
-
-import {WidgetProps} from "@rjsf/core";
-import _ from "lodash";
-
-const TextWidget = (
- {
- id,
- placeholder,
- required,
- readonly,
- disabled,
- type,
- label,
- value,
- onChange,
- onBlur,
- onFocus,
- autofocus,
- options,
- schema,
- rawErrors = [],
- uiSchema,
- }: WidgetProps) => {
- const _onChange = ({
- target: {value},
- }: React.ChangeEvent) =>
- onChange(value === "" ? options.emptyValue : value);
- const _onBlur = ({target: {value}}: React.FocusEvent) =>
- onBlur(id, value);
- const _onFocus = ({
- target: {value},
- }: React.FocusEvent) => onFocus(id, value);
- const inputType = (type || schema.type) === "string" ? "text" : `${type || schema.type}`;
-
- // const classNames = [rawErrors.length > 0 ? "is-invalid" : "", type === 'file' ? 'custom-file-label': ""]
- // let isFirst = _.endsWith(id, 'IVSHMEM_VM_0_VBDF')
- return (
-
-
-
0 ? "is-invalid" : ""}
- list={schema.examples ? `examples_${id}` : undefined}
- type={inputType}
- value={value || value === 0 ? value : ""}
- onChange={_onChange}
- onBlur={_onBlur}
- onFocus={_onFocus}
- />
-
- {schema.examples ? (
-
- {(schema.examples as string[])
- .concat(schema.default ? ([schema.default] as string[]) : [])
- .map((example: any) => {
- return ;
- })}
-
- ) : null}
-
- );
-};
-
-export default TextWidget;
diff --git a/misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/ConfigForm/IVSHMEM_VM/TextWidget/index.ts b/misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/ConfigForm/IVSHMEM_VM/TextWidget/index.ts
deleted file mode 100644
index e7e838908..000000000
--- a/misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/ConfigForm/IVSHMEM_VM/TextWidget/index.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-export {default} from "./TextWidget";
-export * from "./TextWidget";
diff --git a/misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/ConfigForm/index.jsx b/misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/ConfigForm/index.jsx
deleted file mode 100644
index d3ebf86f2..000000000
--- a/misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/ConfigForm/index.jsx
+++ /dev/null
@@ -1,5 +0,0 @@
-import './ConfigForm.css'
-import {ConfigForm} from "./ConfigForm";
-
-
-export default ConfigForm;
\ No newline at end of file
diff --git a/misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/ConfigTabBar/ConfigTabBar.css b/misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/ConfigTabBar/ConfigTabBar.css
deleted file mode 100644
index b59ad88c4..000000000
--- a/misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/ConfigTabBar/ConfigTabBar.css
+++ /dev/null
@@ -1,12 +0,0 @@
-.TabBox {
- display: flex;
- user-select: none;
- border: 1px solid #007B81;
- box-sizing: border-box;
- border-radius: 5px;
-}
-
-.rjsf button[type='submit'] {
- display: none;
-}
-
diff --git a/misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/ConfigTabBar/ConfigTabBar.jsx b/misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/ConfigTabBar/ConfigTabBar.jsx
deleted file mode 100644
index 5ac542d10..000000000
--- a/misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/ConfigTabBar/ConfigTabBar.jsx
+++ /dev/null
@@ -1,84 +0,0 @@
-import React, {Component} from "react";
-import "./ConfigTabBar.css"
-import Tab from "./Tab";
-import TabSplitter from "./TabSplitter";
-import TabAdd from "./TabAdd";
-import {ACRNContext} from "../../../../ACRNContext";
-
-export default class ConfigTabBar extends Component {
- constructor(props) {
- super(props);
- this.state = {
- activeVMID: -1
- }
- }
-
- componentDidMount = () => {
- let {configurator} = this.context
- this.funRegisterID = configurator.programLayer.register(
- configurator.eventName.scenarioDataUpdate, () => {
- this.forceUpdate()
- }
- )
- }
-
- componentWillUnmount = () => {
- let {configurator} = this.context
- configurator.programLayer.unregister(this.funRegisterID)
- }
-
- active = (activeVMID = null) => {
- if (activeVMID == null) {
- return this.state.activeVMID
- }
- this.props.callback ? this.props.callback(activeVMID) : null;
- return this.setState({activeVMID: activeVMID})
- }
-
- tab = (vmConfig, desc) => {
- console.log(vmConfig)
- return
- }
-
-
- render = () => {
- let {configurator} = this.context
- let scenarioData = configurator.programLayer.scenarioData
-
- let PRE_LAUNCHED_VM = scenarioData.vm.PRE_LAUNCHED_VM.map((vmConfig) => {
- return this.tab(vmConfig, 'Pre-Launched')
- })
- let SERVICE_VM = scenarioData.vm.SERVICE_VM.map((vmConfig) => {
- return this.tab(vmConfig, 'ServiceVM')
- })
- let POST_LAUNCHED_VM = scenarioData.vm.POST_LAUNCHED_VM.map((vmConfig) => {
- return this.tab(vmConfig, 'Post-Launched')
- })
-
- return (
-
-
-
- {PRE_LAUNCHED_VM}
- {
- configurator.programLayer.addVM('PRE_LAUNCHED_VM')
- }}/>
- {SERVICE_VM}
- {POST_LAUNCHED_VM}
- {
- if (scenarioData.vm.SERVICE_VM.length === 0) {
- configurator.programLayer.addVM('SERVICE_VM')
- }
- configurator.programLayer.addVM('POST_LAUNCHED_VM')
- }}/>
-
- )
- }
-}
-ConfigTabBar.contextType = ACRNContext
\ No newline at end of file
diff --git a/misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/ConfigTabBar/Tab/Tab.css b/misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/ConfigTabBar/Tab/Tab.css
deleted file mode 100644
index e22c4815b..000000000
--- a/misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/ConfigTabBar/Tab/Tab.css
+++ /dev/null
@@ -1,17 +0,0 @@
-div.TabBox{
- overflow-x: auto;
-}
-.TabBox .Tab {
- background: #E1F2EF;
- border-radius: 5px;
- color: #007B81;
- border: 1px solid #007B81;
- margin: 0 0.5rem 0 0;
- cursor: pointer;
- white-space: nowrap;
-}
-
-.TabBox .Tab.Active {
- background: #373A77;
- color: white;
-}
diff --git a/misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/ConfigTabBar/Tab/Tab.jsx b/misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/ConfigTabBar/Tab/Tab.jsx
deleted file mode 100644
index 58ee1a84e..000000000
--- a/misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/ConfigTabBar/Tab/Tab.jsx
+++ /dev/null
@@ -1,22 +0,0 @@
-import React, {Component} from "react";
-import './Tab.css'
-
-export default class Tab extends Component {
- constructor(props) {
- super(props);
- }
-
- setActive = () => {
- this.props.active(this.props.VMID)
- }
-
- render() {
- let active = this.props.active() === this.props.VMID ? "Active" : ''
- return (
-
-
{this.props.title}
-
{this.props.desc}
-
- )
- }
-}
\ No newline at end of file
diff --git a/misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/ConfigTabBar/Tab/index.jsx b/misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/ConfigTabBar/Tab/index.jsx
deleted file mode 100644
index d559af4d7..000000000
--- a/misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/ConfigTabBar/Tab/index.jsx
+++ /dev/null
@@ -1,3 +0,0 @@
-import Tab from "./Tab";
-
-export default Tab
\ No newline at end of file
diff --git a/misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/ConfigTabBar/TabAdd/TabAdd.css b/misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/ConfigTabBar/TabAdd/TabAdd.css
deleted file mode 100644
index 0fbb5a74c..000000000
--- a/misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/ConfigTabBar/TabAdd/TabAdd.css
+++ /dev/null
@@ -1,4 +0,0 @@
-.TabAdd {
- cursor: pointer;
- white-space: nowrap;
-}
\ No newline at end of file
diff --git a/misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/ConfigTabBar/TabAdd/TabAdd.jsx b/misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/ConfigTabBar/TabAdd/TabAdd.jsx
deleted file mode 100644
index 5d6a18b40..000000000
--- a/misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/ConfigTabBar/TabAdd/TabAdd.jsx
+++ /dev/null
@@ -1,12 +0,0 @@
-import React, {Component} from "react";
-import addIcon from './assets/Plus.svg'
-import './TabAdd.css'
-
-export default class TabAdd extends Component {
- render() {
- return ()
- }
-}
\ No newline at end of file
diff --git a/misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/ConfigTabBar/TabAdd/index.jsx b/misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/ConfigTabBar/TabAdd/index.jsx
deleted file mode 100644
index 17a69f7d8..000000000
--- a/misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/ConfigTabBar/TabAdd/index.jsx
+++ /dev/null
@@ -1,3 +0,0 @@
-import TabAdd from "./TabAdd";
-
-export default TabAdd
\ No newline at end of file
diff --git a/misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/ConfigTabBar/TabSplitter/TabSplitter.css b/misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/ConfigTabBar/TabSplitter/TabSplitter.css
deleted file mode 100644
index a64298309..000000000
--- a/misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/ConfigTabBar/TabSplitter/TabSplitter.css
+++ /dev/null
@@ -1,6 +0,0 @@
-.TabSplitter {
- height: 74px;
- width: 0;
- border-right: 1px solid #C4C4C4;
- margin: 0 0.5rem;
-}
diff --git a/misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/ConfigTabBar/TabSplitter/TabSplitter.jsx b/misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/ConfigTabBar/TabSplitter/TabSplitter.jsx
deleted file mode 100644
index 6751502a8..000000000
--- a/misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/ConfigTabBar/TabSplitter/TabSplitter.jsx
+++ /dev/null
@@ -1,10 +0,0 @@
-import {Component} from "react";
-import './TabSplitter.css'
-
-export default class TabSplitter extends Component {
- render() {
- return (
- {" "}
- )
- }
-}
\ No newline at end of file
diff --git a/misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/ConfigTabBar/TabSplitter/index.jsx b/misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/ConfigTabBar/TabSplitter/index.jsx
deleted file mode 100644
index bfc0be382..000000000
--- a/misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/ConfigTabBar/TabSplitter/index.jsx
+++ /dev/null
@@ -1,3 +0,0 @@
-import TabSplitter from "./TabSplitter";
-
-export default TabSplitter
\ No newline at end of file
diff --git a/misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/ConfigTabBar/index.jsx b/misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/ConfigTabBar/index.jsx
deleted file mode 100644
index e69de29bb..000000000
diff --git a/misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/ConfigureSettingsForScenario.css b/misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/ConfigureSettingsForScenario.css
deleted file mode 100644
index 5abc12ca6..000000000
--- a/misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/ConfigureSettingsForScenario.css
+++ /dev/null
@@ -1,55 +0,0 @@
-.nav-tabs .nav-link {
- font-family: Roboto, serif;
- font-style: normal;
- font-weight: 500;
- font-size: 22px;
- line-height: 26px;
-
- background: #E1F2EF;
- border: 1px solid #007B81;
- box-sizing: border-box;
- box-shadow: inset 0 -1px 0 #D7D7D7;
- border-radius: 5px 5px 0 0;
- border-bottom: none;
-
- color: #007B81;
- margin-right: 4px;
- padding: 1rem 1.5rem;
-}
-
-.nav-tabs .nav-link.active {
- mix-blend-mode: normal;
- border: 1px solid #373A77;
- border-bottom: none;
- box-sizing: border-box;
- border-radius: 5px 5px 0 0;
-
-
- font-weight: 600;
-
- color: #373A77;
-}
-
-.nav-tabs .nav-link.active:after {
- display: block;
- content: "";
- height: 3px;
- background: white;
- position: relative;
- top: calc(1rem + 1px);
- left: -1.5rem;
- width: calc(100% + 3rem + 1px);
-}
-
-.tab-content {
- margin-top: -2px;
-}
-.nav-tabs{
- border-bottom: none;
-}
-
-.deleteVM {
- height: 52px;
- max-width: 210px;
- width: 100%;
-}
\ No newline at end of file
diff --git a/misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/ConfigureSettingsForScenario.jsx b/misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/ConfigureSettingsForScenario.jsx
deleted file mode 100644
index d9539704f..000000000
--- a/misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/ConfigureSettingsForScenario.jsx
+++ /dev/null
@@ -1,108 +0,0 @@
-import React, {Component} from "react";
-import "./ConfigureSettingsForScenario.css"
-import {Accordion, Button} from "react-bootstrap";
-import {FontAwesomeIcon} from "@fortawesome/react-fontawesome";
-import {faMinus} from "@fortawesome/free-solid-svg-icons";
-import ConfigTabBar from "./ConfigTabBar/ConfigTabBar";
-import ConfigForm from "./ConfigForm";
-import {ACRNContext} from "../../../ACRNContext";
-
-export default class ConfigureSettingsForScenario extends Component {
- constructor(props) {
- super(props);
- // VMID possible value
- // [-1 0 1 2 3]
- this.state = {
- VMID: -1,
- tabMode: 'basic'
- }
- }
-
- tabSwitch = (VMID) => {
- this.setState({VMID: VMID})
- document.querySelector('#BasicFormTab').click()
- this.forceUpdate()
- }
-
- tab = (tabID, title, isActive) => {
- let active = isActive ? 'active' : ''
- return (
-
- {title}
-
-
- )
- }
-
- tabsContent = (mode, VMID) => {
- let tabID = mode + 'Form'
-
- return (
-
-
)
- }
-
- render = () => {
- let {configurator} = this.context
- let scenarioData = configurator.programLayer.scenarioData
- return (
-
-
-
3. Configure settings for scenario and launch scripts
-
{
- configurator.saveScenario()
- .then(() => {
- alert('Save successful!')
- })
- e.preventDefault();
- e.stopPropagation();
- }}>Save Scenario and Launch Scripts
-
-
-
-
-
-
-
-
-
-
- {this.tab('BasicForm', 'Basic Parameters', true)}
- {this.tab('AdvancedForm', 'Advanced Parameters', false)}
-
-
{
- if (configurator.programLayer.isServiceVM(this.state.VMID) == true) {
- confirm("All post-launched VMs will be deleted together!!")
- .then((r) => {
- if (r) {
- configurator.programLayer.deleteVM(this.state.VMID)
- var len=scenarioData.vm.POST_LAUNCHED_VM.length
- for (var idx=len-1; idx>=0; idx--) {
- let postvm = scenarioData.vm.POST_LAUNCHED_VM[idx]
- configurator.programLayer.deleteVM(postvm['@id'])
- }
- }
- })
- } else {
- configurator.programLayer.deleteVM(this.state.VMID)
- }
- }}>
- Delete VM
-
-
-
- {this.tabsContent('Basic', this.state.VMID)}
- {this.tabsContent('Advanced', this.state.VMID)}
-
-
-
-
- )
- }
-}
-ConfigureSettingsForScenario.contextType = ACRNContext
\ No newline at end of file
diff --git a/misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/index.jsx b/misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/index.jsx
deleted file mode 100644
index 42a2b4174..000000000
--- a/misc/config_tools/configurator/src/pages/Config/ConfigureSettingsForScenario/index.jsx
+++ /dev/null
@@ -1,3 +0,0 @@
-import ConfigureSettingsForScenario from "./ConfigureSettingsForScenario";
-
-export default ConfigureSettingsForScenario
\ No newline at end of file
diff --git a/misc/config_tools/configurator/src/pages/Config/CreateNewOrImportAnExistingScenario/CreateNewOrImportAnExistingScenario.jsx b/misc/config_tools/configurator/src/pages/Config/CreateNewOrImportAnExistingScenario/CreateNewOrImportAnExistingScenario.jsx
deleted file mode 100644
index b020ff2c4..000000000
--- a/misc/config_tools/configurator/src/pages/Config/CreateNewOrImportAnExistingScenario/CreateNewOrImportAnExistingScenario.jsx
+++ /dev/null
@@ -1,158 +0,0 @@
-import React, {Component} from "react";
-import {Accordion, Button, Col, Form, Row} from "react-bootstrap";
-
-import CreateScenarioModal from "./CreateScenarioModal/CreateScenarioModal";
-import {dialog} from "@tauri-apps/api";
-import {ACRNContext} from "../../../ACRNContext";
-import {invoke} from "@tauri-apps/api/tauri";
-import _ from "lodash/fp";
-
-export default class CreateNewOrImportAnExistingScenario extends Component {
- constructor(props) {
- super(props);
- this.scenarioXMLSelect = React.createRef()
- this.scenarioXMLFileInput = React.createRef()
- this.state = {
- scenarioConfigFiles: [],
- stage: props.stage,
- scenarioName: '',
- scenarioConfig: {},
- selected: null
- }
- }
-
- componentDidMount() {
- let {configurator} = this.context
- this.scenarioHistoryUpdate()
- invoke('fs_read_dir', {
- path: configurator.WorkingFolder,
- recursive: false
- }).then((files) => {
- for (let i = 0; i < files.length; i++) {
- let isScenario = _.endsWith("/scenario.xml", files[i].path.replace(/\\/g, '/'));
- console.log("files", isScenario, files[i].path)
- if (isScenario) {
- this.scenarioChange(files[i].path).then(() => {
- this.importScenario()
- })
- }
- }
- })
- }
-
- scenarioHistoryUpdate() {
- let {configurator} = this.context
- return configurator.getHistory('scenario').then((scenarioHistory) => {
- this.setState({scenarioConfigFiles: scenarioHistory})
- })
- }
-
-
- openFileDialog = () => {
- dialog.open({directory: false, multiple: false}).then(this.scenarioChange)
- }
-
- scenarioChange = (filepath) => {
- console.log(filepath)
- let {configurator} = this.context
- return configurator.addHistory('scenario', filepath).then(() => {
- this.scenarioHistoryUpdate().then(() => {
- this.scenarioXMLSelect.current.value = filepath
- })
- })
- }
-
- importScenario = () => {
- let {configurator} = this.context
- return configurator.programLayer.loadScenario(this.scenarioXMLSelect.current.value)
- .then(() => {
- this.setState({selected: this.getScenarioPath()})
- }).then(() => {
- let tabButton = document.querySelectorAll(".accordion-button")[2];
- if (tabButton.className.indexOf('collapsed') >= 0) {
- tabButton.click()
- }
- })
- .catch((reason) => {
- console.log(reason)
- alert(reason)
- })
- };
-
- getScenarioPath = () => {
- let {configurator} = this.context
- let printPath = configurator.WorkingFolder;
- if (_.endsWith("/", configurator.WorkingFolder) || _.endsWith("\\", configurator.WorkingFolder)) {
- printPath = printPath + 'scenario.xml'
- } else {
- printPath = printPath + (configurator.WorkingFolder[1] === ":" ? "\\" : '/') + 'scenario.xml'
- }
- return printPath;
- }
-
- render = () => {
- let {configurator} = this.context
- let scenarioHistorySelect = this.state.scenarioConfigFiles.map((optionValue, index) => {
- return ({optionValue} )
- })
- return (
-
-
-
- 2. Create new or import an existing scenario
-
-
-
-
-
- Current scenario:
- {this.state.selected ? this.state.selected : "none selected"}
-
- {
- this.setState({selected: this.getScenarioPath()})
- }}/>
-
-
-
-
-
-
-
-
-
- )
- }
-}
-CreateNewOrImportAnExistingScenario.contextType = ACRNContext
\ No newline at end of file
diff --git a/misc/config_tools/configurator/src/pages/Config/CreateNewOrImportAnExistingScenario/CreateScenarioModal/CreateScenarioModal.css b/misc/config_tools/configurator/src/pages/Config/CreateNewOrImportAnExistingScenario/CreateScenarioModal/CreateScenarioModal.css
deleted file mode 100644
index 27786294e..000000000
--- a/misc/config_tools/configurator/src/pages/Config/CreateNewOrImportAnExistingScenario/CreateScenarioModal/CreateScenarioModal.css
+++ /dev/null
@@ -1,17 +0,0 @@
-.vmNum input[type="number"] {
- max-width: 69px;
- text-align: center;
-}
-.vmNum b{
- padding: 0 0;
-}
-
-.vmNum b, .vmNum input {
- flex: 0 1 50%;
-}
-
-.modal-header .btn-close{
- margin-right: 15px;
- color: white;
- font-weight: bolder;
-}
\ No newline at end of file
diff --git a/misc/config_tools/configurator/src/pages/Config/CreateNewOrImportAnExistingScenario/CreateScenarioModal/CreateScenarioModal.jsx b/misc/config_tools/configurator/src/pages/Config/CreateNewOrImportAnExistingScenario/CreateScenarioModal/CreateScenarioModal.jsx
deleted file mode 100644
index bd9438fc7..000000000
--- a/misc/config_tools/configurator/src/pages/Config/CreateNewOrImportAnExistingScenario/CreateScenarioModal/CreateScenarioModal.jsx
+++ /dev/null
@@ -1,128 +0,0 @@
-import {Button, Form, Modal} from "react-bootstrap";
-import {Component} from "react";
-import "./CreateScenarioModal.css"
-import {ACRNContext} from "../../../../ACRNContext";
-
-export default class CreateScenarioModal extends Component {
- constructor(props) {
- super(props);
- this.state = {
- show: false,
- mode: 'POST_LAUNCHED_VM'
- }
- }
-
-
- handelScenarioCreateEvent = () => {
- function getVal(id) {
- // @ts-ignore
- return document.querySelector('#' + id + 'Inp').value
- }
-
- function getInt(id) {
- return parseInt(getVal(id))
- }
-
- const vmNum = {
- PRE_LAUNCHED_VM: this.state.mode === 'POST_LAUNCHED_VM' ? 0 : getInt('PRE_LAUNCHED_VM'),
- SERVICE_VM: this.state.mode === 'PRE_LAUNCHED_VM' ? 0 : getInt('SERVICE_VM'),
- POST_LAUNCHED_VM: this.state.mode === 'PRE_LAUNCHED_VM' ? 0 : getInt('POST_LAUNCHED_VM'),
- }
- let {configurator} = this.context
-
- configurator.programLayer.newScenario(vmNum.PRE_LAUNCHED_VM, vmNum.SERVICE_VM, vmNum.POST_LAUNCHED_VM)
- this.props.cb()
- this.setState({show: false})
- }
-
-
- render = () => {
-
- const handleClose = () => this.setState({show: false});
- const handleShow = () => this.setState({show: true});
- const handleScenarioModeChange = (event) => this.setState({mode: event.target.id})
-
- return (
- <>
-
- Create Scenario…
-
-
-
-
- Create a new Scenario
-
-
-
-
-
-
- Cancel
-
-
- Create
-
-
-
- >
- )
- }
-}
-
-CreateScenarioModal.contextType = ACRNContext
\ No newline at end of file
diff --git a/misc/config_tools/configurator/src/pages/Config/CreateNewOrImportAnExistingScenario/CreateScenarioModal/index.jsx b/misc/config_tools/configurator/src/pages/Config/CreateNewOrImportAnExistingScenario/CreateScenarioModal/index.jsx
deleted file mode 100644
index f70751faf..000000000
--- a/misc/config_tools/configurator/src/pages/Config/CreateNewOrImportAnExistingScenario/CreateScenarioModal/index.jsx
+++ /dev/null
@@ -1,3 +0,0 @@
-import CreateScenarioModal from "./CreateScenarioModal";
-
-export default CreateScenarioModal
\ No newline at end of file
diff --git a/misc/config_tools/configurator/src/pages/Config/CreateNewOrImportAnExistingScenario/index.jsx b/misc/config_tools/configurator/src/pages/Config/CreateNewOrImportAnExistingScenario/index.jsx
deleted file mode 100644
index 9a5af579d..000000000
--- a/misc/config_tools/configurator/src/pages/Config/CreateNewOrImportAnExistingScenario/index.jsx
+++ /dev/null
@@ -1,3 +0,0 @@
-import CreateNewOrImportAnExistingScenario from "./CreateNewOrImportAnExistingScenario";
-
-export default CreateNewOrImportAnExistingScenario
\ No newline at end of file
diff --git a/misc/config_tools/configurator/src/pages/Config/ExitACRNConfigurationModal/ExitACRNConfigurationModal.jsx b/misc/config_tools/configurator/src/pages/Config/ExitACRNConfigurationModal/ExitACRNConfigurationModal.jsx
deleted file mode 100644
index 84792f416..000000000
--- a/misc/config_tools/configurator/src/pages/Config/ExitACRNConfigurationModal/ExitACRNConfigurationModal.jsx
+++ /dev/null
@@ -1,63 +0,0 @@
-import {CloseButton, Button, Modal} from "react-bootstrap";
-import {Component, useState} from "react";
-import {ACRNContext} from "../../../ACRNContext";
-
-export default class ExitACRNConfigurationModal extends Component {
- constructor(props) {
- super(props);
- this.state = {
- show: false
- }
- }
-
- render() {
- let {configurator} = this.context
-
- const handleClose = () => this.setState({show: false});
- const handleShow = (e) => {
- this.setState({show: true})
- e.preventDefault()
- }
-
- return (
- <>
-
-
-
-
- Exit ACRN Configuration
-
-
-
-
ACRN Configuration files will be saved in the working folder:
-
- {configurator.WorkingFolder}
-
-
-
-
-
- Cancel
-
- {
- console.log('exit without save')
- window.close()
- }} size="lg" style={{width: '237px'}}>
- Discard Changes
-
- {
-
- configurator.saveScenario().then(() => {
- window.close()
- })
- }} size="lg" style={{width: '137px'}}>
- Save
-
-
-
- >
- );
- }
-}
-ExitACRNConfigurationModal.contextType = ACRNContext
diff --git a/misc/config_tools/configurator/src/pages/Config/ImportABoardConfigurationFile/ImportABoardConfigurationFile.jsx b/misc/config_tools/configurator/src/pages/Config/ImportABoardConfigurationFile/ImportABoardConfigurationFile.jsx
deleted file mode 100644
index 5548f63f8..000000000
--- a/misc/config_tools/configurator/src/pages/Config/ImportABoardConfigurationFile/ImportABoardConfigurationFile.jsx
+++ /dev/null
@@ -1,179 +0,0 @@
-import React, {Component} from "react";
-import {Accordion, Button, Col, Form, Row} from "react-bootstrap";
-import {dialog} from "@tauri-apps/api";
-import {ACRNContext} from "../../../ACRNContext";
-import {invoke} from "@tauri-apps/api/tauri";
-import _ from "lodash/fp";
-
-export default class ImportABoardConfigurationFile extends Component {
- constructor(props) {
- super(props);
- this.boardXMLSelect = React.createRef()
- this.boardXMLFileInput = React.createRef()
- this.state = {
- disableImport: true,
- boardFiles: [],
- boardName: '',
- boardXML: '',
- BIOS_INFO: '',
- BASE_BOARD_INFO: ''
- }
- }
-
- componentDidMount = () => {
- let {configurator} = this.context
- configurator.getHistory('board').then((boardFiles) => {
- let disableImport = boardFiles.length === 0
- this.setState({boardFiles, disableImport})
- })
- invoke('fs_read_dir', {
- path: configurator.WorkingFolder,
- recursive: false
- }).then((files) => {
- for (let i = 0; i < files.length; i++) {
- console.log("files", files[i].path)
- if (_.endsWith(".board.xml", files[i].path)) {
- this.boardChange(files[i].path).then(() => {
- this.importBoard()
- })
- }
- }
- })
- }
-
-
- openFileDialog = () => {
- //this.boardXMLFileInput.current.click()
- dialog.open({directory: false, multiple: false}).then((filepath) => {
- this.boardChange(filepath)
- })
- };
-
- boardChange = (filepath) => {
- let {configurator} = this.context
- return configurator.addHistory('board', filepath).then(() => {
- return configurator.getHistory('board')
- }).then((boardFiles) => {
- console.log(boardFiles)
- this.setState({
- disableImport: false,
- boardFiles
- })
- }).then(() => {
- this.boardXMLSelect.current.value = filepath
- })
- }
-
- importBoard = () => {
- let {configurator} = this.context
-
- if (!this.state.boardXML) {
- configurator.loadBoard(this.boardXMLSelect.current.value, this.updateBoardInfo)
- } else {
- this.openFileDialog()
- }
- }
-
- getNodeTextContent(boardXML, nodeSelector) {
- return boardXML.querySelector(nodeSelector).textContent;
- }
-
- updateBoardInfo = (boardName, boardXMLText) => {
- const boardXML = (new DOMParser()).parseFromString(boardXMLText, 'text/xml')
- let BIOS_INFO = this.getNodeTextContent(boardXML, "BIOS_INFO").replace(/\s+BIOS Information\s+/, '')
- let BASE_BOARD_INFO = this.getNodeTextContent(boardXML, "BASE_BOARD_INFO").replace(/\s+Base Board Information\s+/, '')
- this.setState({
- boardName: boardName,
- boardXML: boardXML,
- BIOS_INFO: BIOS_INFO,
- BASE_BOARD_INFO: BASE_BOARD_INFO
- })
- this.boardXMLSelect.current.disabled = true
- }
-
- render() {
- let boardHistorySelect = this.state.boardFiles.map((optionValue, index) => {
- return (
- {optionValue}
- )
- })
- return (
-
-
-
- 1. Import a board configuration file
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {this.state.boardXML ? "Current Board: " + this.state.boardName : "No board information has been imported yet."}
-
-
-
-
-
- {this.state.BASE_BOARD_INFO}
-
-
- {this.state.BIOS_INFO}
-
-
-
-
-
-
-
-
-
- )
- }
-}
-ImportABoardConfigurationFile.contextType = ACRNContext
\ No newline at end of file
diff --git a/misc/config_tools/configurator/src/pages/Config/ImportABoardConfigurationFile/index.jsx b/misc/config_tools/configurator/src/pages/Config/ImportABoardConfigurationFile/index.jsx
deleted file mode 100644
index 57c43eeea..000000000
--- a/misc/config_tools/configurator/src/pages/Config/ImportABoardConfigurationFile/index.jsx
+++ /dev/null
@@ -1,3 +0,0 @@
-import ImportABoardConfigurationFile from "./ImportABoardConfigurationFile";
-
-export default ImportABoardConfigurationFile
\ No newline at end of file
diff --git a/misc/config_tools/configurator/src/pages/Config/Scenario.vue b/misc/config_tools/configurator/src/pages/Config/Scenario.vue
new file mode 100644
index 000000000..3b0942bd9
--- /dev/null
+++ b/misc/config_tools/configurator/src/pages/Config/Scenario.vue
@@ -0,0 +1,112 @@
+
+
+
+
+
+
+ Create Scenario…
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/misc/config_tools/configurator/src/pages/Config/Scenario/NewScenario.vue b/misc/config_tools/configurator/src/pages/Config/Scenario/NewScenario.vue
new file mode 100644
index 000000000..c5f2342b2
--- /dev/null
+++ b/misc/config_tools/configurator/src/pages/Config/Scenario/NewScenario.vue
@@ -0,0 +1,131 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/misc/config_tools/configurator/src/pages/Error/Error.jsx b/misc/config_tools/configurator/src/pages/Error/Error.jsx
deleted file mode 100644
index 19763d6f4..000000000
--- a/misc/config_tools/configurator/src/pages/Error/Error.jsx
+++ /dev/null
@@ -1,15 +0,0 @@
-import React from 'react';
-
-export class Error extends React.Component {
- render() {
- return (
-
- There's nothing here!
- Your URL: {document.location.href}
-
- );
- }
-}
-
-
-export default Error;
\ No newline at end of file
diff --git a/misc/config_tools/configurator/src/pages/Error/MyErrorBoundary.jsx b/misc/config_tools/configurator/src/pages/Error/MyErrorBoundary.jsx
deleted file mode 100644
index e0bf6c260..000000000
--- a/misc/config_tools/configurator/src/pages/Error/MyErrorBoundary.jsx
+++ /dev/null
@@ -1,23 +0,0 @@
-import {Component} from "react";
-
-export default class MyErrorBoundary extends Component {
- state = {
- hasError: false,
- };
-
- static getDerivedStateFromError(error) {
- return {hasError: true};
- };
-
- componentDidCatch(error, errorInfo) {
- // A custom error logging function
- console.log(error, errorInfo);
- };
-
- render() {
- return this.state.hasError ? <>
- Error detect, you can see error log in vconsole at right bottom.
- Please report error log to me, https://github.com/Weiyi-Feng/acrn-hypervisor/issue .
- > : this.props.children;
- }
-}
\ No newline at end of file
diff --git a/misc/config_tools/configurator/src/pages/Welcome.vue b/misc/config_tools/configurator/src/pages/Welcome.vue
new file mode 100644
index 000000000..2a86285ce
--- /dev/null
+++ b/misc/config_tools/configurator/src/pages/Welcome.vue
@@ -0,0 +1,43 @@
+
+
+
+
+ ACRN Configurator helps you set up and customize your ACRN hypervisor and VMs.
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/misc/config_tools/configurator/src/pages/Welcome/ExitACRNConfigurationModal/ExitACRNConfigurationModal.jsx b/misc/config_tools/configurator/src/pages/Welcome/ExitACRNConfigurationModal/ExitACRNConfigurationModal.jsx
deleted file mode 100644
index 25ceb1654..000000000
--- a/misc/config_tools/configurator/src/pages/Welcome/ExitACRNConfigurationModal/ExitACRNConfigurationModal.jsx
+++ /dev/null
@@ -1,41 +0,0 @@
-import {CloseButton, Button, Modal} from "react-bootstrap";
-import {useState} from "react";
-
-export default function ExitACRNConfigurationModal(props) {
- const [show, setShow] = useState(false);
-
- const handleClose = () => setShow(false);
- const handleShow = (e) => {
- setShow(true);
- e.preventDefault()
- }
-
- return (
- <>
-
-
-
-
- Exit ACRN Configuration
-
-
-
- Do you want exit ACRN Configuration?
-
-
-
-
- Cancel
-
- {
- window.close()
- }} size="lg" style={{width: '137px'}}>
- Yes
-
-
-
- >
- );
-}
-
diff --git a/misc/config_tools/configurator/src/pages/Welcome/NewConfiguration.vue b/misc/config_tools/configurator/src/pages/Welcome/NewConfiguration.vue
new file mode 100644
index 000000000..d593799eb
--- /dev/null
+++ b/misc/config_tools/configurator/src/pages/Welcome/NewConfiguration.vue
@@ -0,0 +1,104 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/misc/config_tools/configurator/src/pages/Welcome/StartNewConfigurationPanel/StartNewConfigurationPanel.jsx b/misc/config_tools/configurator/src/pages/Welcome/StartNewConfigurationPanel/StartNewConfigurationPanel.jsx
deleted file mode 100644
index f50b6618d..000000000
--- a/misc/config_tools/configurator/src/pages/Welcome/StartNewConfigurationPanel/StartNewConfigurationPanel.jsx
+++ /dev/null
@@ -1,138 +0,0 @@
-import React from "react";
-import {useNavigate} from "react-router";
-import {Button, Form} from "react-bootstrap";
-
-import Confirm from "../../../components/Confirm/Confirm";
-import {dialog, fs} from "@tauri-apps/api";
-import {ACRNContext} from "../../../ACRNContext";
-import {invoke} from "@tauri-apps/api/tauri";
-
-class StartNewConfigurationPanel extends React.Component {
- constructor(props, context) {
- super(props);
- const {navigate} = this.props;
- this.navigate = navigate
- this.pathInput = React.createRef()
-
- this.state = {defaultPath: ""}
- }
-
- componentDidMount = () => {
- invoke("get_home",).then(
- (path) => {
- let ps = "/";
- if (path.indexOf("\\") > 0) {
- ps = "\\"
- }
- path = [path, "acrn-work", "MyConfiguration"].join(ps) + ps
- console.log(path)
- this.setState({defaultPath: path})
-
- }
- )
- }
-
- addRecentDir = async (dirPath) => {
- let {configurator} = this.context;
- await configurator.addHistory("recentlyWorkingFolders", dirPath);
- }
-
- nextPage = (WorkingFolder) => {
- this.addRecentDir(WorkingFolder)
- .then(() => {
- let {configurator} = this.context;
- let params = configurator.settingWorkingFolder(WorkingFolder)
- this.navigate(params);
- })
- }
-
- openDir = () => {
- dialog.open({
- title: "Start new configurator",
- directory: true,
- multiple: false
- }).then((filePath) => {
- this.pathInput.current.value = filePath
- }).catch()
- }
-
- useFolder = async () => {
- let {helper} = this.context
- let folderPath = this.pathInput.current.value ? this.pathInput.current.value : this.pathInput.current.placeholder;
- helper.resolveHome(folderPath).then((homeResolvePath) => {
- fs.readDir(homeResolvePath)
- .then((files) => {
- console.log("Directory exists.", files)
- if (files.length > 0) {
- confirm("Directory exists, overwrite it?")
- .then((r) => {
- if (r) this.nextPage(folderPath)
- })
- } else {
- this.nextPage(folderPath)
- }
- })
- .catch(() => {
- fs.createDir(homeResolvePath, {recursive: true})
- .then(() => {
- console.log('Directory created successfully!');
- this.nextPage(folderPath)
- }).catch((err) => {
- return console.error(err);
- })
- })
- })
- }
-
-
- handleConfirm = (params) => {
- console.log(params)
- }
-
-
- render = () => {
- return ()
- }
-}
-
-StartNewConfigurationPanel.contextType = ACRNContext;
-
-export default function (props) {
- const navigate = useNavigate();
-
- return ;
-}
\ No newline at end of file
diff --git a/misc/config_tools/configurator/src/pages/Welcome/StartNewConfigurationPanel/index.jsx b/misc/config_tools/configurator/src/pages/Welcome/StartNewConfigurationPanel/index.jsx
deleted file mode 100644
index 02eed6cdb..000000000
--- a/misc/config_tools/configurator/src/pages/Welcome/StartNewConfigurationPanel/index.jsx
+++ /dev/null
@@ -1,3 +0,0 @@
-import StartNewConfigurationPanel from "./StartNewConfigurationPanel";
-
-export default StartNewConfigurationPanel
\ No newline at end of file
diff --git a/misc/config_tools/configurator/src/pages/Welcome/UseAnExistingConfigurationPanel/UseAnExistingConfigurationPanel.jsx b/misc/config_tools/configurator/src/pages/Welcome/UseAnExistingConfigurationPanel/UseAnExistingConfigurationPanel.jsx
deleted file mode 100644
index 1e2217bf0..000000000
--- a/misc/config_tools/configurator/src/pages/Welcome/UseAnExistingConfigurationPanel/UseAnExistingConfigurationPanel.jsx
+++ /dev/null
@@ -1,123 +0,0 @@
-import {useNavigate} from "react-router";
-import React from "react";
-import {Button, Form} from "react-bootstrap";
-import {dialog} from "@tauri-apps/api";
-import {ACRNContext} from "../../../ACRNContext";
-
-
-class UseAnExistingConfigurationPanel extends React.Component {
- constructor(props) {
- super(props);
- const {navigate} = this.props;
- this.navigate = navigate
- this.pathSelect = React.createRef()
- this.state = {
- recentDirs: []
- }
- }
-
- componentDidMount() {
- this.updateHistory()
- }
-
- updateHistory = () => {
- let {configurator} = this.context
- return configurator.getHistory("recentlyWorkingFolders")
- .then((recentDirs) => {
- this.setState({recentDirs})
- })
- }
-
- recentDir = () => {
- let recent = this.state.recentDirs;
- let result = []
- for (let i = 0; i < recent.length; i++) {
- let dirPath = recent[i];
- result.push(
- {dirPath}
- )
- }
-
- return result;
- }
-
- addRecentDir = (dirPath) => {
- let {config, configurator} = this.context
- return configurator.addHistory("recentlyWorkingFolders", dirPath)
- }
-
- nextPage = (WorkingFolder) => {
- let {configurator} = this.context
- this.addRecentDir(WorkingFolder).then(() => {
- let params = configurator.settingWorkingFolder(WorkingFolder)
- this.navigate(params);
- })
- }
-
- openDir = async () => {
- await dialog.open({
- title: 'Open Working Folder',
- directory: true,
- multiple: false
- }).then(async (existDir) => {
- await this.addRecentDir(existDir)
- await this.updateHistory()
- this.pathSelect.current.value = existDir
- }).catch()
- }
-
- useFolder = () => {
- let folderPath = this.pathSelect.current.value;
- if (!folderPath) {
- alert("Please select existing configuration folder!")
- return
- }
- this.nextPage(folderPath)
- }
-
- render() {
- let recent_dir = this.recentDir();
- return (
-
- )
- }
-}
-
-UseAnExistingConfigurationPanel.contextType = ACRNContext
-
-export default function (props) {
- const navigate = useNavigate();
-
- return ;
-}
diff --git a/misc/config_tools/configurator/src/pages/Welcome/UseAnExistingConfigurationPanel/index.jsx b/misc/config_tools/configurator/src/pages/Welcome/UseAnExistingConfigurationPanel/index.jsx
deleted file mode 100644
index 8a1258bda..000000000
--- a/misc/config_tools/configurator/src/pages/Welcome/UseAnExistingConfigurationPanel/index.jsx
+++ /dev/null
@@ -1,3 +0,0 @@
-import UseAnExistingConfigurationPanel from "./UseAnExistingConfigurationPanel";
-
-export default UseAnExistingConfigurationPanel
\ No newline at end of file
diff --git a/misc/config_tools/configurator/src/pages/Welcome/UseExisting.vue b/misc/config_tools/configurator/src/pages/Welcome/UseExisting.vue
new file mode 100644
index 000000000..ef7ce17a7
--- /dev/null
+++ b/misc/config_tools/configurator/src/pages/Welcome/UseExisting.vue
@@ -0,0 +1,89 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/misc/config_tools/configurator/src/pages/Welcome/Welcome.css b/misc/config_tools/configurator/src/pages/Welcome/Welcome.css
deleted file mode 100644
index 8f25f2239..000000000
--- a/misc/config_tools/configurator/src/pages/Welcome/Welcome.css
+++ /dev/null
@@ -1,8 +0,0 @@
-.wel-btn {
- max-width: 221px;
- width: 100%;
-}
-
-.banner.welcome {
- min-height: 164px;
-}
diff --git a/misc/config_tools/configurator/src/pages/Welcome/Welcome.jsx b/misc/config_tools/configurator/src/pages/Welcome/Welcome.jsx
deleted file mode 100644
index 61c49c1cd..000000000
--- a/misc/config_tools/configurator/src/pages/Welcome/Welcome.jsx
+++ /dev/null
@@ -1,53 +0,0 @@
-import React from "react";
-import {Col, Container, Row} from "react-bootstrap";
-
-import './Welcome.css'
-
-import Banner from "../../components/Banner";
-
-import StartNewConfigurationPanel from "./StartNewConfigurationPanel";
-import UseAnExistingConfigurationPanel from "./UseAnExistingConfigurationPanel";
-import Footer from "../../components/Footer";
-
-class Welcome extends React.Component {
- render() {
- return (
-
-
-
-
- ACRN Configurator helps you set up and customize your ACRN hypervisor and VMs.
-
-
-
-
This is a preview version, please be careful.
- If you find a bug, please report it to
-
- https://github.com/Weiyi-Feng/acrn-hypervisor
- .
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- )
- }
-}
-
-export default Welcome
diff --git a/misc/config_tools/configurator/src/plugin/text-plugin.js b/misc/config_tools/configurator/src/plugin/text-plugin.js
deleted file mode 100644
index 2ebdfa92e..000000000
--- a/misc/config_tools/configurator/src/plugin/text-plugin.js
+++ /dev/null
@@ -1,17 +0,0 @@
-export default function textFileResolver(fileRegex) {
- function compileFileToJS(src) {
- return src;
- }
- return {
- name: 'transform-xsd-file',
- transform(src, id) {
- if (fileRegex.test(id)) {
- return {
- code: compileFileToJS(src),
- map: null // 如果可行将提供 source map
- };
- }
- }
- };
-}
-//# sourceMappingURL=text-plugin.js.map
\ No newline at end of file
diff --git a/misc/config_tools/configurator/src/plugin/text-plugin.js.map b/misc/config_tools/configurator/src/plugin/text-plugin.js.map
deleted file mode 100644
index 53d2a40a1..000000000
--- a/misc/config_tools/configurator/src/plugin/text-plugin.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"text-plugin.js","sourceRoot":"","sources":["text-plugin.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,SAAiB;IACtD,SAAS,eAAe,CAAC,GAAW;QAChC,OAAO,GAAG,CAAA;IACd,CAAC;IAED,OAAO;QACH,IAAI,EAAE,oBAAoB;QAC1B,SAAS,CAAC,GAAW,EAAE,EAAU;YAC7B,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;gBACpB,OAAO;oBACH,IAAI,EAAE,eAAe,CAAC,GAAG,CAAC;oBAC1B,GAAG,EAAE,IAAI,CAAC,qBAAqB;iBAClC,CAAA;aACJ;QACL,CAAC;KACJ,CAAA;AACL,CAAC"}
\ No newline at end of file
diff --git a/misc/config_tools/configurator/src/plugin/text-plugin.ts b/misc/config_tools/configurator/src/plugin/text-plugin.ts
deleted file mode 100644
index eab74d1e8..000000000
--- a/misc/config_tools/configurator/src/plugin/text-plugin.ts
+++ /dev/null
@@ -1,24 +0,0 @@
-import _ from "lodash";
-import * as fs from "fs";
-
-export default function textFileResolver(fileRegex: RegExp) {
- function compileFileToJS(id: string, src: string) {
- if (_.endsWith(id, '.txt')) {
- let src = fs.readFileSync(id, {encoding: "utf-8"})
- return "export default " + JSON.stringify(src)
- }
- return "export default " + JSON.stringify(src)
- }
-
- return {
- name: 'text-file-resolver',
- transform(src: string, id: string) {
- if (fileRegex.test(id)) {
- return {
- code: compileFileToJS(id, src),
- map: null // 如果可行将提供 source map
- }
- }
- }
- }
-}
\ No newline at end of file
diff --git a/misc/config_tools/configurator/src/router.js b/misc/config_tools/configurator/src/router.js
new file mode 100644
index 000000000..b604c9eec
--- /dev/null
+++ b/misc/config_tools/configurator/src/router.js
@@ -0,0 +1,15 @@
+import Welcome from "./pages/Welcome.vue";
+import Config from "./pages/Config.vue";
+
+import {createRouter, createWebHashHistory} from 'vue-router'
+
+const routes = [
+ {name: "Welcome", path: '/', component: Welcome},
+ {name: "Config", path: '/config/:WorkingFolder', component: Config, props: true},
+]
+
+const router = createRouter({
+ history: createWebHashHistory(),
+ routes,
+})
+export default router;
diff --git a/misc/config_tools/configurator/thirdLib/.gitignore b/misc/config_tools/configurator/thirdLib/.gitignore
new file mode 100644
index 000000000..661edc30a
--- /dev/null
+++ b/misc/config_tools/configurator/thirdLib/.gitignore
@@ -0,0 +1,2 @@
+pyodide
+*.whl
diff --git a/misc/config_tools/configurator/thirdLib/library.json b/misc/config_tools/configurator/thirdLib/library.json
new file mode 100644
index 000000000..c6a9806fa
--- /dev/null
+++ b/misc/config_tools/configurator/thirdLib/library.json
@@ -0,0 +1,129 @@
+{
+ "title": "ACRN Third Part Library List",
+ "library": [
+ {
+ "name": "acrn_config_tools@3.0",
+ "check": {
+ "type": "file",
+ "path": "acrn_config_tools-3.0-py3-none-any.whl"
+ },
+ "clean": [
+ "acrn_config_tools-3.0-py3-none-any.whl"
+ ],
+ "install": [
+ {
+ "type": "copy",
+ "from": "../../dist/acrn_config_tools-3.0-py3-none-any.whl",
+ "to": "acrn_config_tools-3.0-py3-none-any.whl"
+ }
+ ]
+ },
+ {
+ "name": "pyodide@0.20.0",
+ "check": {
+ "type": "file",
+ "path": "pyodide/pyodide.js"
+ },
+ "clean": [
+ "pyodide-build-0.20.0.tar.bz2",
+ "pyodide"
+ ],
+ "install": [
+ {
+ "type": "download",
+ "from": "https://github.com/pyodide/pyodide/releases/download/0.20.0/pyodide-build-0.20.0.tar.bz2",
+ "to": "pyodide-build-0.20.0.tar.bz2"
+ },
+ {
+ "type": "extract",
+ "from": "pyodide-build-0.20.0.tar.bz2",
+ "to": "."
+ },
+ {
+ "type": "remove",
+ "path": "pyodide-build-0.20.0.tar.bz2"
+ },
+ {
+ "type": "replaceText",
+ "file": "pyodide/pyodide.mjs",
+ "old": "yield import(url)",
+ "new": "yield import(/* @vite-ignore */url)"
+ },
+ {
+ "type": "replaceText",
+ "file": "pyodide/pyodide.mjs",
+ "old": "yield import(nodePathMod.resolve(url))",
+ "new": "yield import(/* @vite-ignore */nodePathMod.resolve(url))"
+ }
+ ]
+ },
+ {
+ "name": "xmltodict@0.12.0",
+ "check": {
+ "type": "file",
+ "path": "xmltodict-0.12.0-py2.py3-none-any.whl"
+ },
+ "clean": [
+ "xmltodict-0.12.0-py2.py3-none-any.whl"
+ ],
+ "install": [
+ {
+ "type": "download",
+ "from": "https://files.pythonhosted.org/packages/28/fd/30d5c1d3ac29ce229f6bdc40bbc20b28f716e8b363140c26eff19122d8a5/xmltodict-0.12.0-py2.py3-none-any.whl",
+ "to": "xmltodict-0.12.0-py2.py3-none-any.whl"
+ }
+ ]
+ },
+ {
+ "name": "elementpath@2.5.0",
+ "check": {
+ "type": "file",
+ "path": "elementpath-2.4.0-py3-none-any.whl"
+ },
+ "clean": [
+ "elementpath-2.4.0-py3-none-any.whl"
+ ],
+ "install": [
+ {
+ "type": "download",
+ "from": "https://files.pythonhosted.org/packages/7e/35/55a92f54f018c20e717223a0561bb60bf5053170c86b4b3624368f2da137/elementpath-2.4.0-py3-none-any.whl",
+ "to": "elementpath-2.4.0-py3-none-any.whl"
+ }
+ ]
+ },
+ {
+ "name": "xmlschema@1.9.2",
+ "check": {
+ "type": "file",
+ "path": "xmlschema-1.9.2-py3-none-any.whl"
+ },
+ "clean": [
+ "xmlschema-1.9.2-py3-none-any.whl"
+ ],
+ "install": [
+ {
+ "type": "download",
+ "from": "https://files.pythonhosted.org/packages/25/65/fda28ac5228759d203cc2bac85337b4449a235b1b12b9a3fd6cd4dc7a892/xmlschema-1.9.2-py3-none-any.whl",
+ "to": "xmlschema-1.9.2-py3-none-any.whl"
+ }
+ ]
+ },
+ {
+ "name": "defusedxml-0.7.1-py2.py3-none-any.whl",
+ "check": {
+ "type": "file",
+ "path": "defusedxml-0.7.1-py2.py3-none-any.whl"
+ },
+ "clean": [
+ "defusedxml-0.7.1-py2.py3-none-any.whl"
+ ],
+ "install": [
+ {
+ "type": "download",
+ "from": "https://files.pythonhosted.org/packages/07/6c/aa3f2f849e01cb6a001cd8554a88d4c77c5c1a31c95bdf1cf9301e6d9ef4/defusedxml-0.7.1-py2.py3-none-any.whl",
+ "to": "defusedxml-0.7.1-py2.py3-none-any.whl"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/misc/config_tools/configurator/thirdLib/manager.py b/misc/config_tools/configurator/thirdLib/manager.py
new file mode 100644
index 000000000..12bfe1f8b
--- /dev/null
+++ b/misc/config_tools/configurator/thirdLib/manager.py
@@ -0,0 +1,125 @@
+#!/usr/bin/env python3
+"""
+misc/config_tools/configurator/thirdLib/manager.py
+depend on misc/config_tools/configurator/thirdLib/library.json
+"""
+import argparse
+import os
+import json
+import shutil
+import tarfile
+from pathlib import Path
+
+import requests
+from tqdm.auto import tqdm
+
+
+def check(library_info, operation):
+ if operation == 'check':
+ print('Check:')
+ for library in library_info['library']:
+ library_name = library["name"]
+
+ check_type = library['check']['type']
+ if check_type == 'file':
+ check_file = library['check']['path']
+ check_result = os.path.isfile(check_file)
+
+ if operation == 'check':
+ print(f'{library["name"]}: {check_result}')
+ elif operation == 'install' and not check_result:
+ library_install = library["install"]
+ install(library_name, library_install)
+ elif operation == 'clean' and check_result:
+ clean(library_name, library['clean'])
+
+
+def install(library_name, library_install):
+ print(f'Install: {library_name}')
+ for step in library_install:
+ step_type = step['type']
+ if step_type == "copy":
+ copy_from = step['from']
+ copy_to = step['to']
+ shutil.copyfile(copy_from, copy_to)
+ print(f"copy: {copy_to} success")
+ elif step_type == "download":
+ download_from = step['from']
+ download_to = step['to']
+
+ with requests.get(download_from, stream=True) as r:
+ total_length = int(r.headers.get("Content-Length"))
+ with tqdm.wrapattr(r.raw, "read", total=total_length, desc="") as raw:
+ with open(download_to, 'wb') as output:
+ shutil.copyfileobj(raw, output)
+ print(f'download: {download_to} success')
+ elif step_type == "extract":
+ tar_file: str = step['from']
+ tar_mode = tar_file.split('.')[-1]
+ assert tar_mode in ['gz', 'bz2', 'xz', 'tar']
+ print(f'extract: {tar_file}')
+ with tarfile.open(tar_file, 'r') as tar:
+ tar.extractall(path=step['to'], members=tar)
+ print(f'extract: {tar_file} success')
+ elif step_type == 'remove':
+ remove_path = step['path']
+ if os.path.isfile(remove_path):
+ os.remove(remove_path)
+ else:
+ shutil.rmtree(remove_path)
+ print(f'remove: {remove_path} success')
+ elif step_type == "replaceText":
+ filename = step['file']
+ file_content = open(filename, encoding='utf-8').read()
+ replace_old = step['old']
+ replace_new = step['new']
+ file_content = file_content.replace(replace_old, replace_new)
+ open(filename, 'w', encoding='utf-8').write(file_content)
+ print(f"replaceText: {filename} success")
+ else:
+ print(step)
+ raise ValueError
+ print(f'Install: {library_name} success')
+
+
+def clean(library_name, library_clean):
+ print(f'Clean: {library_name}')
+ for clean_path in library_clean:
+ if os.path.isfile(clean_path):
+ os.remove(clean_path)
+ elif os.path.isdir(clean_path):
+ shutil.rmtree(clean_path)
+ print(f'remove: {clean_path} success')
+ print(f'Clean: {library_name} success')
+
+
+def manager(operation, library_info):
+ cwd = os.path.abspath(os.getcwd())
+
+ third_dir = os.path.dirname(
+ os.path.abspath(__file__)
+ )
+ os.chdir(third_dir)
+
+ if operation in ['check', 'install', 'clean']:
+ check(library_info, operation)
+ os.chdir(cwd)
+
+
+def main():
+ library_json = Path(__file__).parent / 'library.json'
+
+ parser = argparse.ArgumentParser(
+ description='ACRN Configurator third part library manager.'
+ )
+ parser.add_argument('operation', choices=['check', 'install', 'clean'])
+ parser.add_argument('-c', '--config', dest='config', default=library_json)
+
+ args = parser.parse_args()
+ library_info = json.load(open(args.config, encoding='utf-8'))
+
+ manager(args.operation, library_info)
+
+
+if __name__ == '__main__':
+ main()
diff --git a/misc/config_tools/configurator/src/plugin/tauri-plugin.ts b/misc/config_tools/configurator/thirdLib/tauri-plugin.ts
similarity index 50%
rename from misc/config_tools/configurator/src/plugin/tauri-plugin.ts
rename to misc/config_tools/configurator/thirdLib/tauri-plugin.ts
index 4cb4ce9e7..3ceb6d6a8 100644
--- a/misc/config_tools/configurator/src/plugin/tauri-plugin.ts
+++ b/misc/config_tools/configurator/thirdLib/tauri-plugin.ts
@@ -2,18 +2,71 @@ const fs = require('fs')
const path = require('path')
import type {ConfigEnv, Plugin, ResolvedConfig} from "vite";
+// @ts-ignore
import replace from "@rollup/plugin-replace";
+// @ts-ignore
import cli from "@tauri-apps/cli"
-import Config from "../../src-tauri/types/config"
+import Config from "../src-tauri/types/config"
-import tauriConf from "../../src-tauri/tauri.json";
+// @ts-ignore
+import tauriConf from "../src-tauri/tauri.json";
interface Options {
config?: (c: Config, e: ConfigEnv) => Config;
}
+function copyFolder(copiedPath, resultPath, direct) {
+ if (!direct) {
+ copiedPath = path.join(__dirname, copiedPath)
+ resultPath = path.join(__dirname, resultPath)
+ }
+
+ function createDir(dirPath) {
+ fs.mkdirSync(dirPath)
+ }
+
+ if (fs.existsSync(copiedPath)) {
+ createDir(resultPath)
+ /**
+ * @des 方式一:利用子进程操作命令行方式
+ */
+ // child_process.spawn('cp', ['-r', copiedPath, resultPath])
+
+ /**
+ * @des 方式二:
+ */
+ const files = fs.readdirSync(copiedPath, {withFileTypes: true});
+ for (let i = 0; i < files.length; i++) {
+ const cf = files[i]
+ const ccp = path.join(copiedPath, cf.name)
+ const crp = path.join(resultPath, cf.name)
+ if (cf.isFile()) {
+ /**
+ * @des 创建文件,使用流的形式可以读写大文件
+ */
+ const readStream = fs.createReadStream(ccp)
+ const writeStream = fs.createWriteStream(crp)
+ readStream.pipe(writeStream)
+ } else {
+ try {
+ /**
+ * @des 判断读(R_OK | W_OK)写权限
+ */
+ fs.accessSync(path.join(crp, '..'), fs.constants.W_OK)
+ copyFolder(ccp, crp, true)
+ } catch (error) {
+ console.log('folder write error:', error);
+ }
+
+ }
+ }
+ } else {
+ console.log('do not exist path: ', copiedPath);
+ }
+}
+
export default (options?: Options): Plugin => {
let tauriConfig: Config = {...tauriConf};
@@ -22,7 +75,7 @@ export default (options?: Options): Plugin => {
const tauri = (mode: "dev" | "build"): Promise => {
// Generate `tauri.conf.json` by `tauri.json`.
console.log("Generate `tauri.conf.json` by `tauri.json`.")
- let filePath = path.resolve(__dirname, '..', '..', 'src-tauri', 'tauri.conf.json')
+ let filePath = path.resolve(__dirname, '..', 'src-tauri', 'tauri.conf.json')
let config = JSON.stringify(tauriConfig)
try {
fs.writeFileSync(filePath, config)
@@ -52,6 +105,7 @@ export default (options?: Options): Plugin => {
if (!process.env.TAURI_BUILD) {
process.env.TAURI_BUILD = "true";
delete tauriConfig["$schema"]
+ copyFolder('../thirdLib', '../build/thirdLib', false)
tauri('build').finally()
}
},
diff --git a/misc/config_tools/configurator/tsconfig.json b/misc/config_tools/configurator/tsconfig.json
index 9450bff21..22bafa097 100644
--- a/misc/config_tools/configurator/tsconfig.json
+++ b/misc/config_tools/configurator/tsconfig.json
@@ -2,7 +2,7 @@
"compilerOptions": {
"target": "esnext",
"module": "esnext",
- "strict": true,
+ "strict": false,
"moduleResolution": "node",
"resolveJsonModule": true,
"sourceMap": true,
diff --git a/misc/config_tools/configurator/vite.config.js b/misc/config_tools/configurator/vite.config.js
index 5435694b0..e137d79b9 100644
--- a/misc/config_tools/configurator/vite.config.js
+++ b/misc/config_tools/configurator/vite.config.js
@@ -1,16 +1,13 @@
import path from "path";
import {defineConfig} from 'vite'
-
-import react from '@vitejs/plugin-react'
-import tauri from './src/plugin/tauri-plugin'
-import textFileResolver from './src/plugin/text-plugin'
-
+import vue from '@vitejs/plugin-vue'
+import tauri from "./thirdLib/tauri-plugin";
// https://vitejs.dev/config/
export default defineConfig({
base: './',
- plugins: [react(), tauri(), textFileResolver(/\.(xsd|py|txt)$/)],
+ plugins: [vue(), tauri()],
build: {
outDir: path.resolve(__dirname, 'build')
}
diff --git a/misc/config_tools/configurator/yarn.lock b/misc/config_tools/configurator/yarn.lock
index 347167f30..48dba7766 100644
--- a/misc/config_tools/configurator/yarn.lock
+++ b/misc/config_tools/configurator/yarn.lock
@@ -2,361 +2,59 @@
# yarn lockfile v1
-"@ampproject/remapping@^2.1.0":
- version "2.1.2"
- resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.1.2.tgz#4edca94973ded9630d20101cd8559cedb8d8bd34"
- integrity sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg==
- dependencies:
- "@jridgewell/trace-mapping" "^0.3.0"
-
-"@babel/code-frame@^7.16.7":
- version "7.16.7"
- resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789"
- integrity sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==
- dependencies:
- "@babel/highlight" "^7.16.7"
-
-"@babel/compat-data@^7.16.4":
- version "7.17.0"
- resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.17.0.tgz#86850b8597ea6962089770952075dcaabb8dba34"
- integrity sha512-392byTlpGWXMv4FbyWw3sAZ/FrW/DrwqLGXpy0mbyNe9Taqv1mg9yON5/o0cnr8XYCkFTZbC1eV+c+LAROgrng==
-
-"@babel/core@^7.16.12":
- version "7.17.5"
- resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.5.tgz#6cd2e836058c28f06a4ca8ee7ed955bbf37c8225"
- integrity sha512-/BBMw4EvjmyquN5O+t5eh0+YqB3XXJkYD2cjKpYtWOfFy4lQ4UozNSmxAcWT8r2XtZs0ewG+zrfsqeR15i1ajA==
- dependencies:
- "@ampproject/remapping" "^2.1.0"
- "@babel/code-frame" "^7.16.7"
- "@babel/generator" "^7.17.3"
- "@babel/helper-compilation-targets" "^7.16.7"
- "@babel/helper-module-transforms" "^7.16.7"
- "@babel/helpers" "^7.17.2"
- "@babel/parser" "^7.17.3"
- "@babel/template" "^7.16.7"
- "@babel/traverse" "^7.17.3"
- "@babel/types" "^7.17.0"
- convert-source-map "^1.7.0"
- debug "^4.1.0"
- gensync "^1.0.0-beta.2"
- json5 "^2.1.2"
- semver "^6.3.0"
-
-"@babel/generator@^7.17.3":
- version "7.17.3"
- resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.17.3.tgz#a2c30b0c4f89858cb87050c3ffdfd36bdf443200"
- integrity sha512-+R6Dctil/MgUsZsZAkYgK+ADNSZzJRRy0TvY65T71z/CR854xHQ1EweBYXdfT+HNeN7w0cSJJEzgxZMv40pxsg==
- dependencies:
- "@babel/types" "^7.17.0"
- jsesc "^2.5.1"
- source-map "^0.5.0"
-
-"@babel/helper-annotate-as-pure@^7.16.7":
- version "7.16.7"
- resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz#bb2339a7534a9c128e3102024c60760a3a7f3862"
- integrity sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==
- dependencies:
- "@babel/types" "^7.16.7"
-
-"@babel/helper-compilation-targets@^7.16.7":
- version "7.16.7"
- resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.7.tgz#06e66c5f299601e6c7da350049315e83209d551b"
- integrity sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA==
- dependencies:
- "@babel/compat-data" "^7.16.4"
- "@babel/helper-validator-option" "^7.16.7"
- browserslist "^4.17.5"
- semver "^6.3.0"
-
-"@babel/helper-environment-visitor@^7.16.7":
- version "7.16.7"
- resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz#ff484094a839bde9d89cd63cba017d7aae80ecd7"
- integrity sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==
- dependencies:
- "@babel/types" "^7.16.7"
-
-"@babel/helper-function-name@^7.16.7":
- version "7.16.7"
- resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz#f1ec51551fb1c8956bc8dd95f38523b6cf375f8f"
- integrity sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==
- dependencies:
- "@babel/helper-get-function-arity" "^7.16.7"
- "@babel/template" "^7.16.7"
- "@babel/types" "^7.16.7"
-
-"@babel/helper-get-function-arity@^7.16.7":
- version "7.16.7"
- resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz#ea08ac753117a669f1508ba06ebcc49156387419"
- integrity sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==
- dependencies:
- "@babel/types" "^7.16.7"
-
-"@babel/helper-hoist-variables@^7.16.7":
- version "7.16.7"
- resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz#86bcb19a77a509c7b77d0e22323ef588fa58c246"
- integrity sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==
- dependencies:
- "@babel/types" "^7.16.7"
-
-"@babel/helper-module-imports@^7.16.7":
- version "7.16.7"
- resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz#25612a8091a999704461c8a222d0efec5d091437"
- integrity sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==
- dependencies:
- "@babel/types" "^7.16.7"
-
-"@babel/helper-module-transforms@^7.16.7":
- version "7.17.6"
- resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.17.6.tgz#3c3b03cc6617e33d68ef5a27a67419ac5199ccd0"
- integrity sha512-2ULmRdqoOMpdvkbT8jONrZML/XALfzxlb052bldftkicAUy8AxSCkD5trDPQcwHNmolcl7wP6ehNqMlyUw6AaA==
- dependencies:
- "@babel/helper-environment-visitor" "^7.16.7"
- "@babel/helper-module-imports" "^7.16.7"
- "@babel/helper-simple-access" "^7.16.7"
- "@babel/helper-split-export-declaration" "^7.16.7"
- "@babel/helper-validator-identifier" "^7.16.7"
- "@babel/template" "^7.16.7"
- "@babel/traverse" "^7.17.3"
- "@babel/types" "^7.17.0"
-
-"@babel/helper-plugin-utils@^7.16.7":
- 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-simple-access@^7.16.7":
- version "7.16.7"
- resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz#d656654b9ea08dbb9659b69d61063ccd343ff0f7"
- integrity sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g==
- dependencies:
- "@babel/types" "^7.16.7"
-
-"@babel/helper-split-export-declaration@^7.16.7":
- version "7.16.7"
- resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz#0b648c0c42da9d3920d85ad585f2778620b8726b"
- integrity sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==
- dependencies:
- "@babel/types" "^7.16.7"
-
-"@babel/helper-validator-identifier@^7.16.7":
- version "7.16.7"
- resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad"
- integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==
-
-"@babel/helper-validator-option@^7.16.7":
- version "7.16.7"
- resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz#b203ce62ce5fe153899b617c08957de860de4d23"
- integrity sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==
-
-"@babel/helpers@^7.17.2":
- version "7.17.2"
- resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.17.2.tgz#23f0a0746c8e287773ccd27c14be428891f63417"
- integrity sha512-0Qu7RLR1dILozr/6M0xgj+DFPmi6Bnulgm9M8BVa9ZCWxDqlSnqt3cf8IDPB5m45sVXUZ0kuQAgUrdSFFH79fQ==
- dependencies:
- "@babel/template" "^7.16.7"
- "@babel/traverse" "^7.17.0"
- "@babel/types" "^7.17.0"
-
-"@babel/highlight@^7.16.7":
- version "7.16.10"
- resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.10.tgz#744f2eb81579d6eea753c227b0f570ad785aba88"
- integrity sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==
- dependencies:
- "@babel/helper-validator-identifier" "^7.16.7"
- chalk "^2.0.0"
- js-tokens "^4.0.0"
-
-"@babel/parser@^7.16.7", "@babel/parser@^7.17.3":
- version "7.17.3"
- resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.3.tgz#b07702b982990bf6fdc1da5049a23fece4c5c3d0"
- integrity sha512-7yJPvPV+ESz2IUTPbOL+YkIGyCqOyNIzdguKQuJGnH7bg1WTIifuM21YqokFt/THWh1AkCRn9IgoykTRCBVpzA==
-
-"@babel/plugin-syntax-jsx@^7.16.7":
- 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==
- dependencies:
- "@babel/helper-plugin-utils" "^7.16.7"
-
-"@babel/plugin-transform-react-jsx-development@^7.16.7":
- version "7.16.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.16.7.tgz#43a00724a3ed2557ed3f276a01a929e6686ac7b8"
- integrity sha512-RMvQWvpla+xy6MlBpPlrKZCMRs2AGiHOGHY3xRwl0pEeim348dDyxeH4xBsMPbIMhujeq7ihE702eM2Ew0Wo+A==
- dependencies:
- "@babel/plugin-transform-react-jsx" "^7.16.7"
-
-"@babel/plugin-transform-react-jsx-self@^7.16.7":
- version "7.16.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.16.7.tgz#f432ad0cba14c4a1faf44f0076c69e42a4d4479e"
- integrity sha512-oe5VuWs7J9ilH3BCCApGoYjHoSO48vkjX2CbA5bFVhIuO2HKxA3vyF7rleA4o6/4rTDbk6r8hBW7Ul8E+UZrpA==
- dependencies:
- "@babel/helper-plugin-utils" "^7.16.7"
-
-"@babel/plugin-transform-react-jsx-source@^7.16.7":
- version "7.16.7"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.16.7.tgz#1879c3f23629d287cc6186a6c683154509ec70c0"
- integrity sha512-rONFiQz9vgbsnaMtQlZCjIRwhJvlrPET8TabIUK2hzlXw9B9s2Ieaxte1SCOOXMbWRHodbKixNf3BLcWVOQ8Bw==
- dependencies:
- "@babel/helper-plugin-utils" "^7.16.7"
-
-"@babel/plugin-transform-react-jsx@^7.16.7":
- version "7.17.3"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.17.3.tgz#eac1565da176ccb1a715dae0b4609858808008c1"
- integrity sha512-9tjBm4O07f7mzKSIlEmPdiE6ub7kfIe6Cd+w+oQebpATfTQMAgW+YOuWxogbKVTulA+MEO7byMeIUtQ1z+z+ZQ==
- dependencies:
- "@babel/helper-annotate-as-pure" "^7.16.7"
- "@babel/helper-module-imports" "^7.16.7"
- "@babel/helper-plugin-utils" "^7.16.7"
- "@babel/plugin-syntax-jsx" "^7.16.7"
- "@babel/types" "^7.17.0"
-
-"@babel/runtime@^7.13.16", "@babel/runtime@^7.14.0", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.2", "@babel/runtime@^7.6.3", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.7":
- version "7.17.2"
- resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.2.tgz#66f68591605e59da47523c631416b18508779941"
- integrity sha512-hzeyJyMA1YGdJTuWU0e/j4wKXrU4OMFvY2MSlaI9B7VQb0r5cxTE3EAIS2Q7Tn2RIcDkRvTA/v2JsAEhxe99uw==
- dependencies:
- regenerator-runtime "^0.13.4"
+"@babel/parser@^7.16.4":
+ version "7.17.9"
+ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.9.tgz#9c94189a6062f0291418ca021077983058e171ef"
+ integrity sha512-vqUSBLP8dQHFPdPi9bc5GK9vRkYHJ49fsZdtoJ8EQ8ibpwk5rPKfvNIwChB0KVXcIjcepEBBd2VHC5r9Gy8ueg==
"@babel/runtime@^7.17.2":
- version "7.17.8"
- resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.8.tgz#3e56e4aff81befa55ac3ac6a0967349fd1c5bca2"
- integrity sha512-dQpEpK0O9o6lj6oPu0gRDbbnk+4LeHlNcBpspf6Olzt3GIX4P1lWF1gS+pHLDFlaJvbR6q7jCfQ08zA4QJBnmA==
+ version "7.17.9"
+ resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.9.tgz#d19fbf802d01a8cb6cf053a64e472d42c434ba72"
+ integrity sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg==
dependencies:
regenerator-runtime "^0.13.4"
-"@babel/template@^7.16.7":
- version "7.16.7"
- resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.7.tgz#8d126c8701fde4d66b264b3eba3d96f07666d155"
- integrity sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==
+"@css-render/plugin-bem@^0.15.9":
+ version "0.15.9"
+ resolved "https://registry.yarnpkg.com/@css-render/plugin-bem/-/plugin-bem-0.15.9.tgz#204ccdb65fdfd293b8cbcf587c8f31633f41f513"
+ integrity sha512-xASEmYIX91Pow7YPzpAZ0eyrRNINVX7j9ITNbLt88gJHRLap3P1dv3hTSLtUZTxYXVHTklZ/SfJQ9FIO3jRahg==
+
+"@css-render/vue3-ssr@^0.15.7", "@css-render/vue3-ssr@^0.15.9":
+ version "0.15.9"
+ resolved "https://registry.yarnpkg.com/@css-render/vue3-ssr/-/vue3-ssr-0.15.9.tgz#59ce56a0ee417748845af9e29784235381f9b049"
+ integrity sha512-b3wvEIZYjToOEAV/oUqVtcg+MPF/iSZB9VmVF7fMAAAfvVTc2kB4TZDhGZCMkGjGZxOUm1jia7q/Z9FJnJGLKw==
+
+"@emotion/hash@~0.8.0":
+ version "0.8.0"
+ resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.8.0.tgz#bbbff68978fefdbe68ccb533bc8cbe1d1afb5413"
+ integrity sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==
+
+"@lljj/vjsf-utils@1.12.2":
+ version "1.12.2"
+ resolved "https://registry.yarnpkg.com/@lljj/vjsf-utils/-/vjsf-utils-1.12.2.tgz#b5420465d5482eade6cbe568a502abc23a1d6298"
+ integrity sha512-chyBkvCGMy/yh+3cow8BK+NWu3Ly/Kwkeb490qo3DE3J0XIMXahBFQ15w8UTbn5ZCvsNdy8tEONC2q/NXTxIjQ==
dependencies:
- "@babel/code-frame" "^7.16.7"
- "@babel/parser" "^7.16.7"
- "@babel/types" "^7.16.7"
+ ajv "^6.10.2"
-"@babel/traverse@^7.17.0", "@babel/traverse@^7.17.3":
- version "7.17.3"
- resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.17.3.tgz#0ae0f15b27d9a92ba1f2263358ea7c4e7db47b57"
- integrity sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==
+"@lljj/vue3-form-core@1.12.2":
+ version "1.12.2"
+ resolved "https://registry.yarnpkg.com/@lljj/vue3-form-core/-/vue3-form-core-1.12.2.tgz#0b757e9ce3378a6a246f454d66ea8113cac7293e"
+ integrity sha512-b61ILRrr8YNqD3x0LgT/DfMycuFsibrN2nG0+xG/55piVVskHjxD/smy/UXHqsNDwZrUsho2d30PU77+n1PfBQ==
dependencies:
- "@babel/code-frame" "^7.16.7"
- "@babel/generator" "^7.17.3"
- "@babel/helper-environment-visitor" "^7.16.7"
- "@babel/helper-function-name" "^7.16.7"
- "@babel/helper-hoist-variables" "^7.16.7"
- "@babel/helper-split-export-declaration" "^7.16.7"
- "@babel/parser" "^7.17.3"
- "@babel/types" "^7.17.0"
- debug "^4.1.0"
- globals "^11.1.0"
+ "@lljj/vjsf-utils" "1.12.2"
-"@babel/types@^7.16.7", "@babel/types@^7.17.0":
- version "7.17.0"
- resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.17.0.tgz#a826e368bccb6b3d84acd76acad5c0d87342390b"
- integrity sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==
+"@lljj/vue3-form-naive@^1.12.2":
+ version "1.12.2"
+ resolved "https://registry.yarnpkg.com/@lljj/vue3-form-naive/-/vue3-form-naive-1.12.2.tgz#f6f954130e9f8c5901ce96f9e0768d7ef38e7062"
+ integrity sha512-GFYVr4e6XUkgLlwyvto0rNfoNAxHNj3TmXHUFc0EyltYqqMHTwVE3g2mAMtaiHi77N/m1vHlnvdN0dlt6xwhjw==
dependencies:
- "@babel/helper-validator-identifier" "^7.16.7"
- to-fast-properties "^2.0.0"
+ "@lljj/vjsf-utils" "1.12.2"
+ "@lljj/vue3-form-core" "1.12.2"
-"@fortawesome/fontawesome-common-types@^0.3.0":
- version "0.3.0"
- resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-0.3.0.tgz#949995a05c0d8801be7e0a594f775f1dbaa0d893"
- integrity sha512-CA3MAZBTxVsF6SkfkHXDerkhcQs0QPofy43eFdbWJJkZiq3SfiaH1msOkac59rQaqto5EqWnASboY1dBuKen5w==
-
-"@fortawesome/fontawesome-svg-core@^1.3.0":
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-1.3.0.tgz#343fac91fa87daa630d26420bfedfba560f85885"
- integrity sha512-UIL6crBWhjTNQcONt96ExjUnKt1D68foe3xjEensLDclqQ6YagwCRYVQdrp/hW0ALRp/5Fv/VKw+MqTUWYYvPg==
- dependencies:
- "@fortawesome/fontawesome-common-types" "^0.3.0"
-
-"@fortawesome/free-regular-svg-icons@^6.0.0":
- version "6.0.0"
- resolved "https://registry.yarnpkg.com/@fortawesome/free-regular-svg-icons/-/free-regular-svg-icons-6.0.0.tgz#f3cb91dac643472fe8138024b93fbfbdf05675cc"
- integrity sha512-lYK6oyQL8HwZUAVWGqF7TGuwQBVfphNBVTdvPSD3h4gmQfGazm/xcwg3kmtcRycu3y6QspOC7hPXSoJbVqSYCw==
- dependencies:
- "@fortawesome/fontawesome-common-types" "^0.3.0"
-
-"@fortawesome/free-solid-svg-icons@^6.0.0":
- version "6.0.0"
- resolved "https://registry.yarnpkg.com/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.0.0.tgz#bed4a501b631c6cfa35c09830f7cb63ffca1589d"
- integrity sha512-o4FZ1XbndcgeWNb8Wh0y+Hgf73CjmyOQowUSaqQCtgIIdS+XliSBSOwCl330wER+I6CGYE96hT27bHBPmzX2Gg==
- dependencies:
- "@fortawesome/fontawesome-common-types" "^0.3.0"
-
-"@fortawesome/react-fontawesome@^0.1.17":
- version "0.1.17"
- resolved "https://registry.yarnpkg.com/@fortawesome/react-fontawesome/-/react-fontawesome-0.1.17.tgz#06fc06cb1a721e38e5b50b4a1cb851e9b9c77d7a"
- integrity sha512-dX43Z5IvMaW7fwzU8farosYjKNGfRb2HB/DgjVBHeJZ/NSnuuaujPPx0YOdcAq+n3mqn70tyCde2HM1mqbhiuw==
- dependencies:
- prop-types "^15.8.1"
-
-"@jridgewell/resolve-uri@^3.0.3":
- version "3.0.5"
- resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz#68eb521368db76d040a6315cdb24bf2483037b9c"
- integrity sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==
-
-"@jridgewell/sourcemap-codec@^1.4.10":
- version "1.4.11"
- resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz#771a1d8d744eeb71b6adb35808e1a6c7b9b8c8ec"
- integrity sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==
-
-"@jridgewell/trace-mapping@^0.3.0":
- version "0.3.4"
- resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz#f6a0832dffd5b8a6aaa633b7d9f8e8e94c83a0c3"
- integrity sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ==
- dependencies:
- "@jridgewell/resolve-uri" "^3.0.3"
- "@jridgewell/sourcemap-codec" "^1.4.10"
-
-"@popperjs/core@^2.10.1", "@popperjs/core@^2.11.2":
- version "2.11.2"
- resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.2.tgz#830beaec4b4091a9e9398ac50f865ddea52186b9"
- integrity sha512-92FRmppjjqz29VMJ2dn+xdyXZBrMlE42AV6Kq6BwjWV7CNUW1hs2FtxSNLQE+gJhaZ6AAmYuO9y8dshhcBl7vA==
-
-"@react-aria/ssr@^3.0.1":
- version "3.1.2"
- resolved "https://registry.yarnpkg.com/@react-aria/ssr/-/ssr-3.1.2.tgz#665a6fd56385068c7417922af2d0d71b0618e52d"
- integrity sha512-amXY11ImpokvkTMeKRHjsSsG7v1yzzs6yeqArCyBIk60J3Yhgxwx9Cah+Uu/804ATFwqzN22AXIo7SdtIaMP+g==
- dependencies:
- "@babel/runtime" "^7.6.2"
-
-"@restart/hooks@^0.4.0", "@restart/hooks@^0.4.5":
- version "0.4.5"
- resolved "https://registry.yarnpkg.com/@restart/hooks/-/hooks-0.4.5.tgz#e7acbea237bfc9e479970500cf87538b41a1ed02"
- integrity sha512-tLGtY0aHeIfT7aPwUkvQuhIy3+q3w4iqmUzFLPlOAf/vNUacLaBt1j/S//jv/dQhenRh8jvswyMojCwmLvJw8A==
- dependencies:
- dequal "^2.0.2"
-
-"@restart/ui@^1.0.1":
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/@restart/ui/-/ui-1.0.1.tgz#379f8340ab14adc18522731a1be6e32eaa10ef92"
- integrity sha512-hLAqltcAjQYtjGuHBHKyPpR3ScTxzdkSYNvniwBfN7rUDbYiHu/UZiI1hvV2idJeUvktRnz29l7W9BnNLHrG6Q==
- dependencies:
- "@babel/runtime" "^7.13.16"
- "@popperjs/core" "^2.10.1"
- "@react-aria/ssr" "^3.0.1"
- "@restart/hooks" "^0.4.0"
- "@types/warning" "^3.0.0"
- dequal "^2.0.2"
- dom-helpers "^5.2.0"
- prop-types "^15.7.2"
- uncontrollable "^7.2.1"
- warning "^4.0.3"
-
-"@rjsf/core@^4.0.1":
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/@rjsf/core/-/core-4.0.1.tgz#3363aadbaf40f7086f8669c4a645ed0cddd6c2da"
- integrity sha512-3HZ5Udy/Yvtixjn/dOcVm4IBoF/HM/LmUAPZt98elSAISga3vhzGc3zv7Fi3IbDNrvL6ZdJbfIj+BtR0q4Rnrg==
- dependencies:
- "@types/json-schema" "^7.0.7"
- ajv "^6.7.0"
- core-js-pure "^3.6.5"
- json-schema-merge-allof "^0.6.0"
- jsonpointer "^5.0.0"
- lodash "^4.17.15"
- nanoid "^3.1.23"
- prop-types "^15.7.2"
- react-is "^16.9.0"
+"@popperjs/core@^2.11.5":
+ version "2.11.5"
+ resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.5.tgz#db5a11bf66bdab39569719555b0f76e138d7bd64"
+ integrity sha512-9X2obfABZuDVLCgPK9aX0a/x4jaOEweTTWE2+9sr0Qqqevj2Uv5XorvusThmc9XGYpS9yI+fhh8RTafBtGposw==
"@rollup/plugin-replace@^4.0.0":
version "4.0.0"
@@ -375,146 +73,238 @@
estree-walker "^1.0.1"
picomatch "^2.2.2"
-"@rollup/pluginutils@^4.1.2":
- version "4.1.2"
- resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-4.1.2.tgz#ed5821c15e5e05e32816f5fb9ec607cdf5a75751"
- integrity sha512-ROn4qvkxP9SyPeHaf7uQC/GPFY6L/OWy9+bd9AwcjOAWQwxRscoEyAUD8qCY5o5iL4jqQwoLk2kaTKJPb/HwzQ==
+"@tauri-apps/api@^1.0.0-rc.3":
+ version "1.0.0-rc.3"
+ resolved "https://registry.yarnpkg.com/@tauri-apps/api/-/api-1.0.0-rc.3.tgz#e80ddbe832bf003537d94801d508a7f7e25ac48b"
+ integrity sha512-/ZbyBjuUoU6mYm8RzibIUvVuJ31ZwYA2+fTRl7FF4LVFhzCVJ1YI1BS5ohGb2GsLNmLpfeo7kDHaIhV2uaOchQ==
dependencies:
- estree-walker "^2.0.1"
- picomatch "^2.2.2"
+ type-fest "2.12.1"
-"@tauri-apps/api@^1.0.0-rc.1":
- version "1.0.0-rc.1"
- resolved "https://registry.yarnpkg.com/@tauri-apps/api/-/api-1.0.0-rc.1.tgz#ce26a0fe30d8980a4682d50015eec28ed4a23c1e"
- integrity sha512-VBUOmfT8ea02JB/Qr+FHeaLnug5BRA7ro2pX47q0GZCbZsU9b+iPnOXl0ShJwT0melR7B6iamyhDwkHStMVfQA==
- dependencies:
- type-fest "2.11.2"
+"@tauri-apps/cli-darwin-arm64@1.0.0-rc.8":
+ version "1.0.0-rc.8"
+ resolved "https://registry.yarnpkg.com/@tauri-apps/cli-darwin-arm64/-/cli-darwin-arm64-1.0.0-rc.8.tgz#84eac830714d1819c72f4e3d7e334bee3719d673"
+ integrity sha512-sbV4fkd3YBlX0gEBldEVmN/NbBdHzrn8wCRRiFaNBocDWC6Ji6DNvpp1Vy1xgY0RgtGOisGD+3+HelmKP4Mh/A==
-"@tauri-apps/cli-darwin-arm64@1.0.0-rc.5":
- version "1.0.0-rc.5"
- resolved "https://registry.yarnpkg.com/@tauri-apps/cli-darwin-arm64/-/cli-darwin-arm64-1.0.0-rc.5.tgz#9374be8c96afa1cf77b5647bc81fe1a05006757d"
- integrity sha512-X+3EIAUGfoL8uE6PBADZC8FcUISe4JPQCxXgaVv6ehoZGoCh/pFJF7AvBGTQxbnvngqM7Xce4Lmh63Io2/5ggw==
+"@tauri-apps/cli-darwin-x64@1.0.0-rc.8":
+ version "1.0.0-rc.8"
+ resolved "https://registry.yarnpkg.com/@tauri-apps/cli-darwin-x64/-/cli-darwin-x64-1.0.0-rc.8.tgz#675b8cdbf2a0ade23159e964ac3a1e5dd767ffcf"
+ integrity sha512-VmuYbBZKKal/YxSTbzHTaM04C9zUlTXq7ePoXc1PRAa/Xafo16N37OGzhzBlsKHrvh6BtPp9ZWk5UhHIDiJBsw==
-"@tauri-apps/cli-darwin-x64@1.0.0-rc.5":
- version "1.0.0-rc.5"
- resolved "https://registry.yarnpkg.com/@tauri-apps/cli-darwin-x64/-/cli-darwin-x64-1.0.0-rc.5.tgz#4db1dd56a228bfafe5b3f64c7661abbe5606e804"
- integrity sha512-fEpgOdAvKdq9C5/yip8RnwP1VS+nRrtKdzzplu4jY6njDVH/Vom8mg+EfXkCY5RveCaoskJMFgUvt10IGeZHBA==
+"@tauri-apps/cli-linux-arm-gnueabihf@1.0.0-rc.8":
+ version "1.0.0-rc.8"
+ resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-arm-gnueabihf/-/cli-linux-arm-gnueabihf-1.0.0-rc.8.tgz#b7ecece513c7ba828c0e794eca4f3125f83f2cf6"
+ integrity sha512-2VKkS1c2pK56sgtGxtsm9nKKWefG7dgPnynTuCoEngkgQfNIlZ1ns/eAIZpBmwhvOMOw2OesKvK9ZQo0/lE/IA==
-"@tauri-apps/cli-linux-arm-gnueabihf@1.0.0-rc.5":
- version "1.0.0-rc.5"
- resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-arm-gnueabihf/-/cli-linux-arm-gnueabihf-1.0.0-rc.5.tgz#0f1ff84c534908a54fbe63b45004abc6d4f03f4d"
- integrity sha512-V7sWSBrpLyvkQxpkHIM8JltYqQhiTpThySDjO8POtrTqkRwM5BXORcCYhxTAKCedecfYK/RNUJ6Q0t7+3jS6DQ==
+"@tauri-apps/cli-linux-arm64-gnu@1.0.0-rc.8":
+ version "1.0.0-rc.8"
+ resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-arm64-gnu/-/cli-linux-arm64-gnu-1.0.0-rc.8.tgz#6c08741be40d0148da16b26d568c1595e3b99332"
+ integrity sha512-jykbrTJyx0uJhhL/3PPYGx5ETqEzacJ3YChnHzVClSzPkrdoGC61/xY9dMD9ZFJsLMJkV4VJj8sGRd1OPKCa/w==
-"@tauri-apps/cli-linux-arm64-gnu@1.0.0-rc.5":
- version "1.0.0-rc.5"
- resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-arm64-gnu/-/cli-linux-arm64-gnu-1.0.0-rc.5.tgz#c5d2f1dd962d80a1958261229778b410b86254d4"
- integrity sha512-HhM+2FInxtUAI/41LF4fDEzmhLQUq6DOoo7fLN94vgWlhsPyWZoDGP9pA043XbO86+4OX5JZUW1SnTVXMwEaMA==
+"@tauri-apps/cli-linux-arm64-musl@1.0.0-rc.8":
+ version "1.0.0-rc.8"
+ resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-arm64-musl/-/cli-linux-arm64-musl-1.0.0-rc.8.tgz#70fdfbf5e4fe4d42bc5984a7bc8914d08a3dcbf6"
+ integrity sha512-HAIm8BKpLIWkvYgxoRzDIaqWIW3UtH2HO1qDd0aov5FTx/9dtCTtylpvd/6mWs5LGaEmsLoSokfJloI2sMZ/WQ==
-"@tauri-apps/cli-linux-arm64-musl@1.0.0-rc.5":
- version "1.0.0-rc.5"
- resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-arm64-musl/-/cli-linux-arm64-musl-1.0.0-rc.5.tgz#f485db9ca5402f5d2c4585801a3aaa4519bd67e8"
- integrity sha512-DhHdKOhf3+peA/sM0c9CpxK89cp8GVwOB5osFW55fxBZbD0mJFeL2SzjkgfGFqFu6Ci/ZiibQGfEp8XTC8OsYA==
+"@tauri-apps/cli-linux-x64-gnu@1.0.0-rc.8":
+ version "1.0.0-rc.8"
+ resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-x64-gnu/-/cli-linux-x64-gnu-1.0.0-rc.8.tgz#bf21f03128e1d6f8ae4d4e043ac2620d8489a69d"
+ integrity sha512-fnPrkX6Uy9Qz2vqnT3D3sgbJzXTR4arNUIQl8HIYi2YCZZVmDWczz4x4++ilZWwk0I3a7d612/WzTeBzQjn3kg==
-"@tauri-apps/cli-linux-x64-gnu@1.0.0-rc.5":
- version "1.0.0-rc.5"
- resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-x64-gnu/-/cli-linux-x64-gnu-1.0.0-rc.5.tgz#e468939585bc98e80ec827d0a3d8ba06a7cc38e8"
- integrity sha512-pZzsOHRGG/mdcn7fF/yOIOdeVzGxZUtZqvlGSd90ZM9Ps3//uYGCBHoNTbeSwp/V6+D0KVDaSCbm9lYlHoXcdA==
+"@tauri-apps/cli-linux-x64-musl@1.0.0-rc.8":
+ version "1.0.0-rc.8"
+ resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-x64-musl/-/cli-linux-x64-musl-1.0.0-rc.8.tgz#647286cb6826d0ff1503a9d6d88959ab8f5de4fb"
+ integrity sha512-kHrpBsJFRAwqFL7xnsrKdNxnYjzI/J9/Dr7T3rl+IIPbi1sIojh6DydxFOYepnuoINA6zWYQJpo0FQeASJsXrw==
-"@tauri-apps/cli-linux-x64-musl@1.0.0-rc.5":
- version "1.0.0-rc.5"
- resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-x64-musl/-/cli-linux-x64-musl-1.0.0-rc.5.tgz#a1308e93850555f2b6c97b5d7cdbbb9afaa803e2"
- integrity sha512-COwWCbOhEjBlzGRGTa0ESO4/AiC0cBZ2UEPExRn++S+kWSPJ2vsyMdCLu3hiMy1ABSIRcQ4Vc68M1iVkLhOHHw==
+"@tauri-apps/cli-win32-ia32-msvc@1.0.0-rc.8":
+ version "1.0.0-rc.8"
+ resolved "https://registry.yarnpkg.com/@tauri-apps/cli-win32-ia32-msvc/-/cli-win32-ia32-msvc-1.0.0-rc.8.tgz#69fff6f746631345649d2abf788e9f0954eb7ce8"
+ integrity sha512-y8uT7AaIZVdLAWL4pxj/GXitwWn828er23yniOvTo1mJMCZsSFdwiOGiRSXI6OZsVCOPiJmvqq7eWaskQKYA0A==
-"@tauri-apps/cli-win32-x64-msvc@1.0.0-rc.5":
- version "1.0.0-rc.5"
- resolved "https://registry.yarnpkg.com/@tauri-apps/cli-win32-x64-msvc/-/cli-win32-x64-msvc-1.0.0-rc.5.tgz#d15c95143d9123d10c510e28ba90df5349b68ecd"
- integrity sha512-zzizUmPWvnWjj+IUCk36kVjS9j1Bg5JmnwOW5QdX26+a64q5vocmVimCgrfZ5STw3sDFXE++S55ghpzhhH5o+g==
+"@tauri-apps/cli-win32-x64-msvc@1.0.0-rc.8":
+ version "1.0.0-rc.8"
+ resolved "https://registry.yarnpkg.com/@tauri-apps/cli-win32-x64-msvc/-/cli-win32-x64-msvc-1.0.0-rc.8.tgz#bf58e24c42fccf098f78dc51e43f5cd7b7ff6842"
+ integrity sha512-PiDr/iAKoL9nQSiWHkUSjRVHbvCJaa7Xj3P9UnGkjJQ9LGTr7AYZdLk4zISegF+/fZnOmaqUdZW9yWPPyJAzPw==
-"@tauri-apps/cli@^1.0.0-rc.5":
- version "1.0.0-rc.5"
- resolved "https://registry.yarnpkg.com/@tauri-apps/cli/-/cli-1.0.0-rc.5.tgz#db8ca22c9f55f5400d1c6addd78ee1df5dc15a29"
- integrity sha512-Q3D0R5YdZRA5EcL206hwwKCyXpet2mRDcfaRTU/IXwF73bS4AMja+JdAGfO2cyHuSvXd+b//Cgbei2zCG8M6hw==
+"@tauri-apps/cli@^1.0.0-rc.8":
+ version "1.0.0-rc.8"
+ resolved "https://registry.yarnpkg.com/@tauri-apps/cli/-/cli-1.0.0-rc.8.tgz#ee8c9a587739853bd5f8a46a456a43ae594610f6"
+ integrity sha512-FWpNwbgGMPgDb41oO7wdBhBsBE6FMG9yHKbtbrkJ/8d/hWcT6e3UUTfFL9cR2VGdp1pdWlul5+BKH0PTf8rB9w==
optionalDependencies:
- "@tauri-apps/cli-darwin-arm64" "1.0.0-rc.5"
- "@tauri-apps/cli-darwin-x64" "1.0.0-rc.5"
- "@tauri-apps/cli-linux-arm-gnueabihf" "1.0.0-rc.5"
- "@tauri-apps/cli-linux-arm64-gnu" "1.0.0-rc.5"
- "@tauri-apps/cli-linux-arm64-musl" "1.0.0-rc.5"
- "@tauri-apps/cli-linux-x64-gnu" "1.0.0-rc.5"
- "@tauri-apps/cli-linux-x64-musl" "1.0.0-rc.5"
- "@tauri-apps/cli-win32-x64-msvc" "1.0.0-rc.5"
+ "@tauri-apps/cli-darwin-arm64" "1.0.0-rc.8"
+ "@tauri-apps/cli-darwin-x64" "1.0.0-rc.8"
+ "@tauri-apps/cli-linux-arm-gnueabihf" "1.0.0-rc.8"
+ "@tauri-apps/cli-linux-arm64-gnu" "1.0.0-rc.8"
+ "@tauri-apps/cli-linux-arm64-musl" "1.0.0-rc.8"
+ "@tauri-apps/cli-linux-x64-gnu" "1.0.0-rc.8"
+ "@tauri-apps/cli-linux-x64-musl" "1.0.0-rc.8"
+ "@tauri-apps/cli-win32-ia32-msvc" "1.0.0-rc.8"
+ "@tauri-apps/cli-win32-x64-msvc" "1.0.0-rc.8"
"@types/estree@0.0.39":
version "0.0.39"
resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f"
integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==
-"@types/invariant@^2.2.33":
- version "2.2.35"
- resolved "https://registry.yarnpkg.com/@types/invariant/-/invariant-2.2.35.tgz#cd3ebf581a6557452735688d8daba6cf0bd5a3be"
- integrity sha512-DxX1V9P8zdJPYQat1gHyY0xj3efl8gnMVjiM9iCY6y27lj+PoQWkgjt8jDqmovPqULkKVpKRg8J36iQiA+EtEg==
-
-"@types/json-schema@^7.0.7":
- version "7.0.9"
- resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d"
- integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==
-
-"@types/lodash@^4.14.179":
- version "4.14.179"
- resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.179.tgz#490ec3288088c91295780237d2497a3aa9dfb5c5"
- integrity sha512-uwc1x90yCKqGcIOAT6DwOSuxnrAbpkdPsUOZtwrXb4D/6wZs+6qG7QnIawDuZWg0sWpxl+ltIKCaLoMlna678w==
-
-"@types/node@^17.0.21":
- version "17.0.21"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.21.tgz#864b987c0c68d07b4345845c3e63b75edd143644"
- integrity sha512-DBZCJbhII3r90XbQxI8Y9IjjiiOGlZ0Hr32omXIZvwwZ7p4DMMXGrKXVyPfuoBOri9XNtL0UK69jYIBIsRX3QQ==
-
-"@types/prop-types@*", "@types/prop-types@^15.7.3":
- version "15.7.4"
- resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.4.tgz#fcf7205c25dff795ee79af1e30da2c9790808f11"
- integrity sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==
-
-"@types/react-transition-group@^4.4.1":
- version "4.4.4"
- resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.4.4.tgz#acd4cceaa2be6b757db61ed7b432e103242d163e"
- integrity sha512-7gAPz7anVK5xzbeQW9wFBDg7G++aPLAFY0QaSMOou9rJZpbuI58WAuJrgu+qR92l61grlnCUe7AFX8KGahAgug==
+"@types/jest@^27.0.1":
+ version "27.4.1"
+ resolved "https://registry.yarnpkg.com/@types/jest/-/jest-27.4.1.tgz#185cbe2926eaaf9662d340cc02e548ce9e11ab6d"
+ integrity sha512-23iPJADSmicDVrWk+HT58LMJtzLAnB2AgIzplQuq/bSrGaxCrlvRFjGbXmamnnk/mAmCdLStiGqggu28ocUyiw==
dependencies:
- "@types/react" "*"
+ jest-matcher-utils "^27.0.0"
+ pretty-format "^27.0.0"
-"@types/react@*", "@types/react@>=16.14.8", "@types/react@>=16.9.11":
- version "17.0.39"
- resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.39.tgz#d0f4cde092502a6db00a1cded6e6bf2abb7633ce"
- integrity sha512-UVavlfAxDd/AgAacMa60Azl7ygyQNRwC/DsHZmKgNvPmRR5p70AJ5Q9EAmL2NWOJmeV+vVUI4IAP7GZrN8h8Ug==
+"@types/lodash-es@^4.17.6":
+ version "4.17.6"
+ resolved "https://registry.yarnpkg.com/@types/lodash-es/-/lodash-es-4.17.6.tgz#c2ed4c8320ffa6f11b43eb89e9eaeec65966a0a0"
+ integrity sha512-R+zTeVUKDdfoRxpAryaQNRKk3105Rrgx2CFRClIgRGaqDTdjsm8h6IYA8ir584W3ePzkZfst5xIgDwYrlh9HLg==
dependencies:
- "@types/prop-types" "*"
- "@types/scheduler" "*"
- csstype "^3.0.2"
+ "@types/lodash" "*"
-"@types/scheduler@*":
- version "0.16.2"
- resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39"
- integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==
+"@types/lodash@*", "@types/lodash@^4.14.181":
+ version "4.14.182"
+ resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.182.tgz#05301a4d5e62963227eaafe0ce04dd77c54ea5c2"
+ integrity sha512-/THyiqyQAP9AfARo4pF+aCGcyiQ94tX/Is2I7HofNRqoYLgN1PBoOWu2/zTA5zMxzP5EFutMtWtGAFRKUe961Q==
-"@types/warning@^3.0.0":
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/@types/warning/-/warning-3.0.0.tgz#0d2501268ad8f9962b740d387c4654f5f8e23e52"
- integrity sha1-DSUBJorY+ZYrdA04fEZU9fjiPlI=
+"@types/node@~14.14.31":
+ version "14.14.45"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.45.tgz#ec2dfb5566ff814d061aef7e141575aedba245cf"
+ integrity sha512-DssMqTV9UnnoxDWu959sDLZzfvqCF0qDNRjaWeYSui9xkFe61kKo4l1TWNTQONpuXEm+gLMRvdlzvNHBamzmEw==
-"@vitejs/plugin-react@^1.0.7":
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/@vitejs/plugin-react/-/plugin-react-1.2.0.tgz#4cfb4c0475e93885e56d66ff15e12ef4c34b0af0"
- integrity sha512-Rywwt0IXXg6yQ0hv3cMT3mtdDcGIw31mGaa+MMMAT651LhoXLF2yFy4LrakiTs7UKs7RPBo9eNgaS8pgl2A6Qw==
+"@types/node@~17.0.5":
+ version "17.0.25"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.25.tgz#527051f3c2f77aa52e5dc74e45a3da5fb2301448"
+ integrity sha512-wANk6fBrUwdpY4isjWrKTufkrXdu1D2YHCot2fD/DfWxF5sMrVSA+KN7ydckvaTCh0HiqX9IVl0L5/ZoXg5M7w==
+
+"@vicons/carbon@^0.12.0":
+ version "0.12.0"
+ resolved "https://registry.yarnpkg.com/@vicons/carbon/-/carbon-0.12.0.tgz#dfcc5d6283662eccee55700b2d5c29e688a70f5a"
+ integrity sha512-kCOgr/ZOhZzoiFLJ8pwxMa2TMxrkCUOA22qExPabus35F4+USqzcsxaPoYtqRd9ROOYiHrSqwapak/ywF0D9bg==
+
+"@vicons/fa@^0.12.0":
+ version "0.12.0"
+ resolved "https://registry.yarnpkg.com/@vicons/fa/-/fa-0.12.0.tgz#a5f92db45990f8a47b5eeedcdb9b673f0dababc8"
+ integrity sha512-g2PIeJLsTHUjt6bK63LxqC0uYQB7iu+xViJOxvp1s8b9/akpXVPVWjDTTsP980/0KYyMMe4U7F/aUo7wY+MsXA==
+
+"@vicons/utils@^0.1.4":
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/@vicons/utils/-/utils-0.1.4.tgz#accea9226ff0078ebd80d00dcb63ef5e74b210ff"
+ integrity sha512-OHI19qVNN6i+uPQ+Y3f2s0dUxwsYnOCcKBW7XOU4yXXO1aU3ZoKpblCc3+4N0qmgoJs5rWKRAaMisipqEXJwAg==
dependencies:
- "@babel/core" "^7.16.12"
- "@babel/plugin-transform-react-jsx" "^7.16.7"
- "@babel/plugin-transform-react-jsx-development" "^7.16.7"
- "@babel/plugin-transform-react-jsx-self" "^7.16.7"
- "@babel/plugin-transform-react-jsx-source" "^7.16.7"
- "@rollup/pluginutils" "^4.1.2"
- react-refresh "^0.11.0"
- resolve "^1.22.0"
+ "@xicons/utils" "^0.1.4"
-ajv@^6.7.0:
+"@vitejs/plugin-vue@^2.3.1":
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/@vitejs/plugin-vue/-/plugin-vue-2.3.1.tgz#5f286b8d3515381c6d5c8fa8eee5e6335f727e14"
+ integrity sha512-YNzBt8+jt6bSwpt7LP890U1UcTOIZZxfpE5WOJ638PNxSEKOqAi0+FSKS0nVeukfdZ0Ai/H7AFd6k3hayfGZqQ==
+
+"@vue/compiler-core@3.2.33":
+ version "3.2.33"
+ resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.2.33.tgz#e915d59cce85898f5c5cfebe4c09e539278c3d59"
+ integrity sha512-AAmr52ji3Zhk7IKIuigX2osWWsb2nQE5xsdFYjdnmtQ4gymmqXbjLvkSE174+fF3A3kstYrTgGkqgOEbsdLDpw==
+ dependencies:
+ "@babel/parser" "^7.16.4"
+ "@vue/shared" "3.2.33"
+ estree-walker "^2.0.2"
+ source-map "^0.6.1"
+
+"@vue/compiler-dom@3.2.33":
+ version "3.2.33"
+ resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.2.33.tgz#6db84296f949f18e5d3e7fd5e80f943dbed7d5ec"
+ integrity sha512-GhiG1C8X98Xz9QUX/RlA6/kgPBWJkjq0Rq6//5XTAGSYrTMBgcLpP9+CnlUg1TFxnnCVughAG+KZl28XJqw8uQ==
+ dependencies:
+ "@vue/compiler-core" "3.2.33"
+ "@vue/shared" "3.2.33"
+
+"@vue/compiler-sfc@3.2.33":
+ version "3.2.33"
+ resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.2.33.tgz#7ce01dc947a8b76c099811dc6ca58494d4dc773d"
+ integrity sha512-H8D0WqagCr295pQjUYyO8P3IejM3vEzeCO1apzByAEaAR/WimhMYczHfZVvlCE/9yBaEu/eu9RdiWr0kF8b71Q==
+ dependencies:
+ "@babel/parser" "^7.16.4"
+ "@vue/compiler-core" "3.2.33"
+ "@vue/compiler-dom" "3.2.33"
+ "@vue/compiler-ssr" "3.2.33"
+ "@vue/reactivity-transform" "3.2.33"
+ "@vue/shared" "3.2.33"
+ estree-walker "^2.0.2"
+ magic-string "^0.25.7"
+ postcss "^8.1.10"
+ source-map "^0.6.1"
+
+"@vue/compiler-ssr@3.2.33":
+ version "3.2.33"
+ resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.2.33.tgz#3e820267e4eea48fde9519f006dedca3f5e42e71"
+ integrity sha512-XQh1Xdk3VquDpXsnoCd7JnMoWec9CfAzQDQsaMcSU79OrrO2PNR0ErlIjm/mGq3GmBfkQjzZACV+7GhfRB8xMQ==
+ dependencies:
+ "@vue/compiler-dom" "3.2.33"
+ "@vue/shared" "3.2.33"
+
+"@vue/devtools-api@^6.0.0":
+ version "6.1.4"
+ resolved "https://registry.yarnpkg.com/@vue/devtools-api/-/devtools-api-6.1.4.tgz#b4aec2f4b4599e11ba774a50c67fa378c9824e53"
+ integrity sha512-IiA0SvDrJEgXvVxjNkHPFfDx6SXw0b/TUkqMcDZWNg9fnCAHbTpoo59YfJ9QLFkwa3raau5vSlRVzMSLDnfdtQ==
+
+"@vue/reactivity-transform@3.2.33":
+ version "3.2.33"
+ resolved "https://registry.yarnpkg.com/@vue/reactivity-transform/-/reactivity-transform-3.2.33.tgz#286063f44ca56150ae9b52f8346a26e5913fa699"
+ integrity sha512-4UL5KOIvSQb254aqenW4q34qMXbfZcmEsV/yVidLUgvwYQQ/D21bGX3DlgPUGI3c4C+iOnNmDCkIxkILoX/Pyw==
+ dependencies:
+ "@babel/parser" "^7.16.4"
+ "@vue/compiler-core" "3.2.33"
+ "@vue/shared" "3.2.33"
+ estree-walker "^2.0.2"
+ magic-string "^0.25.7"
+
+"@vue/reactivity@3.2.33":
+ version "3.2.33"
+ resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.2.33.tgz#c84eedb5225138dbfc2472864c151d3efbb4b673"
+ integrity sha512-62Sq0mp9/0bLmDuxuLD5CIaMG2susFAGARLuZ/5jkU1FCf9EDbwUuF+BO8Ub3Rbodx0ziIecM/NsmyjardBxfQ==
+ dependencies:
+ "@vue/shared" "3.2.33"
+
+"@vue/runtime-core@3.2.33":
+ version "3.2.33"
+ resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.2.33.tgz#2df8907c85c37c3419fbd1bdf1a2df097fa40df2"
+ integrity sha512-N2D2vfaXsBPhzCV3JsXQa2NECjxP3eXgZlFqKh4tgakp3iX6LCGv76DLlc+IfFZq+TW10Y8QUfeihXOupJ1dGw==
+ dependencies:
+ "@vue/reactivity" "3.2.33"
+ "@vue/shared" "3.2.33"
+
+"@vue/runtime-dom@3.2.33":
+ version "3.2.33"
+ resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.2.33.tgz#123b8969247029ea0d9c1983676d4706a962d848"
+ integrity sha512-LSrJ6W7CZTSUygX5s8aFkraDWlO6K4geOwA3quFF2O+hC3QuAMZt/0Xb7JKE3C4JD4pFwCSO7oCrZmZ0BIJUnw==
+ dependencies:
+ "@vue/runtime-core" "3.2.33"
+ "@vue/shared" "3.2.33"
+ csstype "^2.6.8"
+
+"@vue/server-renderer@3.2.33":
+ version "3.2.33"
+ resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.2.33.tgz#4b45d6d2ae10ea4e3d2cf8e676804cf60f331979"
+ integrity sha512-4jpJHRD4ORv8PlbYi+/MfP8ec1okz6rybe36MdpkDrGIdEItHEUyaHSKvz+ptNEyQpALmmVfRteHkU9F8vxOew==
+ dependencies:
+ "@vue/compiler-ssr" "3.2.33"
+ "@vue/shared" "3.2.33"
+
+"@vue/shared@3.2.33":
+ version "3.2.33"
+ resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.2.33.tgz#69a8c99ceb37c1b031d5cc4aec2ff1dc77e1161e"
+ integrity sha512-UBc1Pg1T3yZ97vsA2ueER0F6GbJebLHYlEi4ou1H5YL4KWvMOOWwpYo9/QpWq93wxKG6Wo13IY74Hcn/f7c7Bg==
+
+"@xicons/utils@^0.1.4":
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/@xicons/utils/-/utils-0.1.4.tgz#cece50613b34d4b4c71e73bb0be92981067e11e1"
+ integrity sha512-uXxKDLz9abr80yJC05XSTq6wlyFcdW+N/1IYJkeHjzzXVc4VQ0sEYMoMMTjAH7HQBOyOkzOB4pf5NGF72lwa8Q==
+ dependencies:
+ css-render "^0.13.2"
+
+ajv-i18n@^4.2.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/ajv-i18n/-/ajv-i18n-4.2.0.tgz#d48750ba60e283b3dee31e3c22c8c9f7410e326f"
+ integrity sha512-v/ei2UkCEeuKNXh8RToiFsUclmU+G57LO1Oo22OagNMENIw+Yb8eMwvHu7Vn9fmkjJyv6XclhJ8TbuigSglPkg==
+
+ajv@^6.10.2:
version "6.12.6"
resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4"
integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
@@ -524,12 +314,22 @@ ajv@^6.7.0:
json-schema-traverse "^0.4.1"
uri-js "^4.2.2"
-ansi-styles@^3.2.1:
- version "3.2.1"
- resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
- integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
+ansi-regex@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
+ integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
+
+ansi-styles@^4.1.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
+ integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
dependencies:
- color-convert "^1.9.0"
+ color-convert "^2.0.1"
+
+ansi-styles@^5.0.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b"
+ integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==
anymatch@~3.1.2:
version "3.1.2"
@@ -539,11 +339,23 @@ anymatch@~3.1.2:
normalize-path "^3.0.0"
picomatch "^2.0.4"
+async-validator@^4.0.7:
+ version "4.0.7"
+ resolved "https://registry.yarnpkg.com/async-validator/-/async-validator-4.0.7.tgz#034a0fd2103a6b2ebf010da75183bec299247afe"
+ integrity sha512-Pj2IR7u8hmUEDOwB++su6baaRi+QvsgajuFB9j95foM1N2gy5HM4z60hfusIO0fBPG5uLAEl6yCJr1jNSVugEQ==
+
binary-extensions@^2.0.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d"
integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==
+bootstrap-vue-3@^0.1.10:
+ version "0.1.10"
+ resolved "https://registry.yarnpkg.com/bootstrap-vue-3/-/bootstrap-vue-3-0.1.10.tgz#45f2d5071c9a0af477bf14c662ba303e503e333b"
+ integrity sha512-r5zd5DIzclFpR16s6nwFRkZlrLoTANbZ9OWFFGoKLGcHOnL+WFuR8HULUB5QEyKdH5mf9ltTBCEsX/mFRq2S1w==
+ dependencies:
+ core-js "3.x.x"
+
bootstrap@^5.1.3:
version "5.1.3"
resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-5.1.3.tgz#ba081b0c130f810fa70900acbc1c6d3c28fa8f34"
@@ -556,30 +368,13 @@ braces@~3.0.2:
dependencies:
fill-range "^7.0.1"
-browserslist@^4.17.5:
- version "4.19.3"
- resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.19.3.tgz#29b7caad327ecf2859485f696f9604214bedd383"
- integrity sha512-XK3X4xtKJ+Txj8G5c30B4gsm71s69lqXlkYui4s6EkKxuv49qjYlY6oVd+IFJ73d4YymtM3+djvvt/R/iJwwDg==
+chalk@^4.0.0:
+ version "4.1.2"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01"
+ integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
dependencies:
- caniuse-lite "^1.0.30001312"
- electron-to-chromium "^1.4.71"
- escalade "^3.1.1"
- node-releases "^2.0.2"
- picocolors "^1.0.0"
-
-caniuse-lite@^1.0.30001312:
- version "1.0.30001312"
- resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001312.tgz#e11eba4b87e24d22697dae05455d5aea28550d5f"
- integrity sha512-Wiz1Psk2MEK0pX3rUzWaunLTZzqS2JYZFzNKqAiJGiuxIjRPLgV6+VDPOg6lQOUxmDwhTlh198JsTTi8Hzw6aQ==
-
-chalk@^2.0.0:
- version "2.4.2"
- resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
- integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
- dependencies:
- ansi-styles "^3.2.1"
- escape-string-regexp "^1.0.5"
- supports-color "^5.3.0"
+ ansi-styles "^4.1.0"
+ supports-color "^7.1.0"
"chokidar@>=3.0.0 <4.0.0":
version "3.5.3"
@@ -596,245 +391,217 @@ chalk@^2.0.0:
optionalDependencies:
fsevents "~2.3.2"
-classnames@^2.3.1:
- version "2.3.1"
- resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.3.1.tgz#dfcfa3891e306ec1dad105d0e88f4417b8535e8e"
- integrity sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA==
-
-color-convert@^1.9.0:
- version "1.9.3"
- resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
- integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
+color-convert@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
+ integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
dependencies:
- color-name "1.1.3"
+ color-name "~1.1.4"
-color-name@1.1.3:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
- integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
-
-compute-gcd@^1.2.1:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/compute-gcd/-/compute-gcd-1.2.1.tgz#34d639f3825625e1357ce81f0e456a6249d8c77f"
- integrity sha512-TwMbxBNz0l71+8Sc4czv13h4kEqnchV9igQZBi6QUaz09dnz13juGnnaWWJTRsP3brxOoxeB4SA2WELLw1hCtg==
- dependencies:
- validate.io-array "^1.0.3"
- validate.io-function "^1.0.2"
- validate.io-integer-array "^1.0.0"
-
-compute-lcm@^1.1.0:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/compute-lcm/-/compute-lcm-1.1.2.tgz#9107c66b9dca28cefb22b4ab4545caac4034af23"
- integrity sha512-OFNPdQAXnQhDSKioX8/XYT6sdUlXwpeMjfd6ApxMJfyZ4GxmLR1xvMERctlYhlHwIiz6CSpBc2+qYKjHGZw4TQ==
- dependencies:
- compute-gcd "^1.2.1"
- validate.io-array "^1.0.3"
- validate.io-function "^1.0.2"
- validate.io-integer-array "^1.0.0"
-
-convert-source-map@^1.7.0:
- version "1.8.0"
- resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369"
- integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==
- dependencies:
- safe-buffer "~5.1.1"
+color-name@~1.1.4:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
+ integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
copy-text-to-clipboard@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/copy-text-to-clipboard/-/copy-text-to-clipboard-3.0.1.tgz#8cbf8f90e0a47f12e4a24743736265d157bce69c"
integrity sha512-rvVsHrpFcL4F2P8ihsoLdFHmd404+CMg71S756oRSeQgqk51U3kicGdnvfkrxva0xXH92SjGS62B0XIJsbh+9Q==
-core-js-pure@^3.6.5:
- version "3.21.1"
- resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.21.1.tgz#8c4d1e78839f5f46208de7230cebfb72bc3bdb51"
- integrity sha512-12VZfFIu+wyVbBebyHmRTuEE/tZrB4tJToWcwAMcsp3h4+sHR+fMJWbKpYiCRWlhFBq+KNyO8rIV9rTkeVmznQ==
+core-js@3.x.x:
+ version "3.22.1"
+ resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.22.1.tgz#1936e4f1da82675fe22ae10ee60ef638cd9752fd"
+ integrity sha512-l6CwCLq7XgITOQGhv1dIUmwCFoqFjyQ6zQHUCQlS0xKmb9d6OHIg8jDiEoswhaettT21BSF5qKr6kbvE+aKwxw==
core-js@^3.11.0:
- version "3.21.1"
- resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.21.1.tgz#f2e0ddc1fc43da6f904706e8e955bc19d06a0d94"
- integrity sha512-FRq5b/VMrWlrmCzwRrpDYNxyHP9BcAZC+xHJaqTgIE5091ZV1NTmyh0sGOg5XqpnHvR0svdy0sv1gWA1zmhxig==
+ version "3.22.2"
+ resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.22.2.tgz#3ea0a245b0895fa39d1faa15fe75d91ade504a01"
+ integrity sha512-Z5I2vzDnEIqO2YhELVMFcL1An2CIsFe9Q7byZhs8c/QxummxZlAHw33TUHbIte987LkisOgL0LwQ1P9D6VISnA==
-csstype@^3.0.2:
- version "3.0.10"
- resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.10.tgz#2ad3a7bed70f35b965707c092e5f30b327c290e5"
- integrity sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA==
-
-debug@^4.1.0:
- version "4.3.3"
- resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664"
- integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==
+css-render@^0.13.2:
+ version "0.13.9"
+ resolved "https://registry.yarnpkg.com/css-render/-/css-render-0.13.9.tgz#56f28c180a83a10ec610a12a9ad9fec087ac9dc1"
+ integrity sha512-n3C4ZH59rveBrUlAD7n0Ze9/gUMKa4dlH1C9CWKpGcIHR/xRcIVXzBGy1iw8WWq2ySmn2/ZqOpySQNAK5Pb6sw==
dependencies:
- ms "2.1.2"
+ "@emotion/hash" "~0.8.0"
+ "@types/node" "~14.14.31"
+ csstype "~3.0.5"
-decode-uri-component@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
- integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=
-
-dequal@^2.0.2:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.2.tgz#85ca22025e3a87e65ef75a7a437b35284a7e319d"
- integrity sha512-q9K8BlJVxK7hQYqa6XISGmBZbtQQWVXSrRrWreHC94rMt1QL/Impruc+7p2CYSYuVIUr+YCt6hjrs1kkdJRTug==
-
-dom-helpers@^5.0.1, dom-helpers@^5.2.0, dom-helpers@^5.2.1:
- version "5.2.1"
- resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-5.2.1.tgz#d9400536b2bf8225ad98fe052e029451ac40e902"
- integrity sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==
+css-render@^0.15.7, css-render@^0.15.9:
+ version "0.15.9"
+ resolved "https://registry.yarnpkg.com/css-render/-/css-render-0.15.9.tgz#1bf0d3fe4d1202a236c38f2e9cf7915c0f0c6751"
+ integrity sha512-FMVcWsVipKEBR/mVf1+pIjCRQdztILVKxbp8TN5/Vf0Q/fdTq0OIb8JRW/pk7PP1eeWnB/ejQ0MNBe7ELjLblg==
dependencies:
- "@babel/runtime" "^7.8.7"
- csstype "^3.0.2"
+ "@emotion/hash" "~0.8.0"
+ "@types/node" "~17.0.5"
+ csstype "~3.0.5"
-electron-to-chromium@^1.4.71:
- version "1.4.73"
- resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.73.tgz#422f6f514315bcace9615903e4a9b6b9fa283137"
- integrity sha512-RlCffXkE/LliqfA5m29+dVDPB2r72y2D2egMMfIy3Le8ODrxjuZNVo4NIC2yPL01N4xb4nZQLwzi6Z5tGIGLnA==
+csstype@^2.6.8:
+ version "2.6.20"
+ resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.20.tgz#9229c65ea0b260cf4d3d997cb06288e36a8d6dda"
+ integrity sha512-/WwNkdXfckNgw6S5R125rrW8ez139lBHWouiBvX8dfMFtcn6V81REDqnH7+CRpRipfYlyU1CmOnOxrmGcFOjeA==
-esbuild-android-64@0.14.24:
- version "0.14.24"
- resolved "https://registry.yarnpkg.com/esbuild-android-64/-/esbuild-android-64-0.14.24.tgz#d826ac29a9b983dc200a0ca407c34c64d2480b38"
- integrity sha512-mbhO8NepmUZ84cP/axGR8IzH1Trth+uknEJzz36cZl8FfMA3ooaiBsMyzJ35s70QEAreiEt1XzltZ4pcfOsVUA==
+csstype@~3.0.5:
+ version "3.0.11"
+ resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.11.tgz#d66700c5eacfac1940deb4e3ee5642792d85cd33"
+ integrity sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw==
-esbuild-android-arm64@0.14.24:
- version "0.14.24"
- resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.14.24.tgz#f8aaf28dbd4d7b80d30b0323c7a645e3a12b5de9"
- integrity sha512-wM3iuLZjaA9BhlMOH6mWvTGXwPJsLOuAbMkGiczSY+NLeG2WF1ouCcuhFz2jZCbnw9lnI30QWgzebNBQi9K8SA==
+date-fns-tz@^1.3.3:
+ version "1.3.3"
+ resolved "https://registry.yarnpkg.com/date-fns-tz/-/date-fns-tz-1.3.3.tgz#7884a4b3ed6cd95bfd81831d608e5ef8be500c86"
+ integrity sha512-Gks46gwbSauBQnV3Oofluj1wTm8J0tM7sbSJ9P+cJq/ZnTCpMohTKmmO5Tn+jQ7dyn0+b8G7cY4O2DZ5P/LXcA==
-esbuild-darwin-64@0.14.24:
- version "0.14.24"
- resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.14.24.tgz#9f6e4b94066e9c5e521b19176a85edd7f94ac074"
- integrity sha512-GDaCV5e9mdrJkrGT91W8WCqQ/+fvB/nsULIu4l7Ik7dlQd5uB4qeKRcFFl5Vz5ODK/C/UWZmKmMQWokZsLNWLQ==
+date-fns@^2.28.0:
+ version "2.28.0"
+ resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.28.0.tgz#9570d656f5fc13143e50c975a3b6bbeb46cd08b2"
+ integrity sha512-8d35hViGYx/QH0icHYCeLmsLmMUheMmTyV9Fcm6gvNwdw31yXXH+O85sOBJ+OLnLQMKZowvpKb6FgMIQjcpvQw==
-esbuild-darwin-arm64@0.14.24:
- version "0.14.24"
- resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.24.tgz#6b8ce7f2a3e1210cc672c73d658669e5f88b8efb"
- integrity sha512-reU7/vEdXsg+zZWxKL/gaHsJkGMCC49Y4pqbsaBmx0YAF00K0+V7w5BHBF+iY5jvtJ1ZCYRHTN/iAbYVOnoV0w==
+diff-sequences@^27.5.1:
+ version "27.5.1"
+ resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.5.1.tgz#eaecc0d327fd68c8d9672a1e64ab8dccb2ef5327"
+ integrity sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==
-esbuild-freebsd-64@0.14.24:
- version "0.14.24"
- resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.24.tgz#b586d8aa290bfcdf0aa73fdfcf64c092d49795f2"
- integrity sha512-Mp35Rz/XoixG7Uka6l54hU/XUxAEwQozgKoHPusJzX+Fu1vANil0Ypos0RJkidu7skSkd0xisNIT+gtD36BxpA==
+esbuild-android-64@0.14.36:
+ version "0.14.36"
+ resolved "https://registry.yarnpkg.com/esbuild-android-64/-/esbuild-android-64-0.14.36.tgz#fc5f95ce78c8c3d790fa16bc71bd904f2bb42aa1"
+ integrity sha512-jwpBhF1jmo0tVCYC/ORzVN+hyVcNZUWuozGcLHfod0RJCedTDTvR4nwlTXdx1gtncDqjk33itjO+27OZHbiavw==
-esbuild-freebsd-arm64@0.14.24:
- version "0.14.24"
- resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.24.tgz#4e7098de07791089b6ef6b4f17a8ce6124da7bec"
- integrity sha512-+tf4a4zYaHP1XXPt286mxOc2bmj13K57GZYjqYz/G3c3sgNXa0JBkcPlUATIj96WfXhWM115n3nHe9wF88+ZGQ==
+esbuild-android-arm64@0.14.36:
+ version "0.14.36"
+ resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.14.36.tgz#44356fbb9f8de82a5cdf11849e011dfb3ad0a8a8"
+ integrity sha512-/hYkyFe7x7Yapmfv4X/tBmyKnggUmdQmlvZ8ZlBnV4+PjisrEhAvC3yWpURuD9XoB8Wa1d5dGkTsF53pIvpjsg==
-esbuild-linux-32@0.14.24:
- version "0.14.24"
- resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.14.24.tgz#afe7345f3e8ee58eede36c0254e128924680b305"
- integrity sha512-8jMZErn5aLnlSQqzK365yoWRr67ZkGNcoTmk1CK5Bk1EB9g7uwCfdZsmWcclLWPGkIhMbdk4OvzQ+Wp0popwWA==
+esbuild-darwin-64@0.14.36:
+ version "0.14.36"
+ resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.14.36.tgz#3d9324b21489c70141665c2e740d6e84f16f725d"
+ integrity sha512-kkl6qmV0dTpyIMKagluzYqlc1vO0ecgpviK/7jwPbRDEv5fejRTaBBEE2KxEQbTHcLhiiDbhG7d5UybZWo/1zQ==
-esbuild-linux-64@0.14.24:
- version "0.14.24"
- resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.14.24.tgz#ce7b95e8ed96076dcb329d1d34e4b9ef084e02cf"
- integrity sha512-D/JCsk9OY2IZj+fkU74pKD4rD2pjeiYUbze1cS5D6+U0pz8j71GjZY5UkfwHhBBbNyPe6DPCyex97txQUlHwWw==
+esbuild-darwin-arm64@0.14.36:
+ version "0.14.36"
+ resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.36.tgz#2a8040c2e465131e5281034f3c72405e643cb7b2"
+ integrity sha512-q8fY4r2Sx6P0Pr3VUm//eFYKVk07C5MHcEinU1BjyFnuYz4IxR/03uBbDwluR6ILIHnZTE7AkTUWIdidRi1Jjw==
-esbuild-linux-arm64@0.14.24:
- version "0.14.24"
- resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.24.tgz#f8aee4eb78309fd3c064e86393a698e33908e8ec"
- integrity sha512-DypWEDQLE+PoHGMa4FLcmKvS+yQLsYlsN03R496rTpDOiVQGrRdo0LbYtf+uHpDxa1KRrHZsQim6n8m3VBHP6g==
+esbuild-freebsd-64@0.14.36:
+ version "0.14.36"
+ resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.36.tgz#d82c387b4d01fe9e8631f97d41eb54f2dbeb68a3"
+ integrity sha512-Hn8AYuxXXRptybPqoMkga4HRFE7/XmhtlQjXFHoAIhKUPPMeJH35GYEUWGbjteai9FLFvBAjEAlwEtSGxnqWww==
-esbuild-linux-arm@0.14.24:
- version "0.14.24"
- resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.14.24.tgz#eaccc0a4d7d17e7290e5b20c383e6969c6769bf7"
- integrity sha512-N+vvGpJAUWv3j+YZGOMEtrHwrrSG582TuAThBwoRE7d2N4zFE2WQBCiSYaAVckMQhvMOPqnCdqeTDUse5nlKTw==
+esbuild-freebsd-arm64@0.14.36:
+ version "0.14.36"
+ resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.36.tgz#e8ce2e6c697da6c7ecd0cc0ac821d47c5ab68529"
+ integrity sha512-S3C0attylLLRiCcHiJd036eDEMOY32+h8P+jJ3kTcfhJANNjP0TNBNL30TZmEdOSx/820HJFgRrqpNAvTbjnDA==
-esbuild-linux-mips64le@0.14.24:
- version "0.14.24"
- resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.24.tgz#9db94b62bbcbaad6229087ea27a6d7dc3fc878d6"
- integrity sha512-eMk9pEHba1yd5bOuPZUJfFucigvysdcE2d/wV4M0eUdb/VjyH9fcGqz8byvSjmYSOt3WCn/V4jLVI+pwDSHWYw==
+esbuild-linux-32@0.14.36:
+ version "0.14.36"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.14.36.tgz#a4a261e2af91986ea62451f2db712a556cb38a15"
+ integrity sha512-Eh9OkyTrEZn9WGO4xkI3OPPpUX7p/3QYvdG0lL4rfr73Ap2HAr6D9lP59VMF64Ex01LhHSXwIsFG/8AQjh6eNw==
-esbuild-linux-ppc64le@0.14.24:
- version "0.14.24"
- resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.24.tgz#194d59a5ebfcdbfc7e710d13893e6c62216baa77"
- integrity sha512-4vQ/Y6EV5Z2BjO7RdpEyTCv702WmOPc95d2CbUcFvg78FpGQAmrbIrHXu/yX4+rdUU6vMNBn3M+7M7/lxmxjjg==
+esbuild-linux-64@0.14.36:
+ version "0.14.36"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.14.36.tgz#4a9500f9197e2c8fcb884a511d2c9d4c2debde72"
+ integrity sha512-vFVFS5ve7PuwlfgoWNyRccGDi2QTNkQo/2k5U5ttVD0jRFaMlc8UQee708fOZA6zTCDy5RWsT5MJw3sl2X6KDg==
-esbuild-linux-riscv64@0.14.24:
- version "0.14.24"
- resolved "https://registry.yarnpkg.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.24.tgz#0d8cbbcd2f3b7cc4365ebc8fac8d00fdc95691d2"
- integrity sha512-pAN9/+NZ487Wo9PmlOM6Ra95SrhG8JQw7fCgi3z7dUufwTApTNTPGs5UOMD4Bmorju+DeGb0f0GddLaeabvqDg==
+esbuild-linux-arm64@0.14.36:
+ version "0.14.36"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.36.tgz#c91c21e25b315464bd7da867365dd1dae14ca176"
+ integrity sha512-24Vq1M7FdpSmaTYuu1w0Hdhiqkbto1I5Pjyi+4Cdw5fJKGlwQuw+hWynTcRI/cOZxBcBpP21gND7W27gHAiftw==
-esbuild-linux-s390x@0.14.24:
- version "0.14.24"
- resolved "https://registry.yarnpkg.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.24.tgz#460e726f5d827f1171f9eac8c9bbcad8e6574ec5"
- integrity sha512-ZR+VMHP2WS3022x2sK/85cBfKGgPalIZzpquDWjra9nUb+WdEzuK9i9bRsstLmjIPs3uIkGfe6xXUh/7PNLllw==
+esbuild-linux-arm@0.14.36:
+ version "0.14.36"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.14.36.tgz#90e23bca2e6e549affbbe994f80ba3bb6c4d934a"
+ integrity sha512-NhgU4n+NCsYgt7Hy61PCquEz5aevI6VjQvxwBxtxrooXsxt5b2xtOUXYZe04JxqQo+XZk3d1gcr7pbV9MAQ/Lg==
-esbuild-netbsd-64@0.14.24:
- version "0.14.24"
- resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.24.tgz#8f6f4c68b8e84e1e011330096f118013cc275601"
- integrity sha512-1PzXU++e0PEaSuGpkhrVb+fDUw9mSp4laY9KRsjJkAuXPDj0rHz7KxK7CAbzY/ucufeIR9Ca8/oMpdVyWdaOGw==
+esbuild-linux-mips64le@0.14.36:
+ version "0.14.36"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.36.tgz#40e11afb08353ff24709fc89e4db0f866bc131d2"
+ integrity sha512-hZUeTXvppJN+5rEz2EjsOFM9F1bZt7/d2FUM1lmQo//rXh1RTFYzhC0txn7WV0/jCC7SvrGRaRz0NMsRPf8SIA==
-esbuild-openbsd-64@0.14.24:
- version "0.14.24"
- resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.24.tgz#6fbfc089103d154d74d4ea5a3aefc2844189094a"
- integrity sha512-PvXh7JJAFM1kR87XDWbRrUkaOGVMS6Dq/IRXE2E02maio21JELk/jNRijTe81ztr8v+8K9osB3rG9zKqIdTxhQ==
+esbuild-linux-ppc64le@0.14.36:
+ version "0.14.36"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.36.tgz#9e8a588c513d06cc3859f9dcc52e5fdfce8a1a5e"
+ integrity sha512-1Bg3QgzZjO+QtPhP9VeIBhAduHEc2kzU43MzBnMwpLSZ890azr4/A9Dganun8nsqD/1TBcqhId0z4mFDO8FAvg==
-esbuild-sunos-64@0.14.24:
- version "0.14.24"
- resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.14.24.tgz#09931dbbc610f88feda1c071f2844e7d8867f46e"
- integrity sha512-5iYi76kGQdyCqvSUknqjTZ0T19KvQD6hiklPAY6kVoQ1YoDUGCGILRI9eM/3zLNLG1bUFgcdJ2ktaBxwyXuHyA==
+esbuild-linux-riscv64@0.14.36:
+ version "0.14.36"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.36.tgz#e578c09b23b3b97652e60e3692bfda628b541f06"
+ integrity sha512-dOE5pt3cOdqEhaufDRzNCHf5BSwxgygVak9UR7PH7KPVHwSTDAZHDoEjblxLqjJYpc5XaU9+gKJ9F8mp9r5I4A==
-esbuild-windows-32@0.14.24:
- version "0.14.24"
- resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.14.24.tgz#3c8dddffaec6dce9a3ac8ef2bec939ec5af17e68"
- integrity sha512-oDxcNu4P1FWTk2ompKB0uKHfxYw1QuubH189+PlfrrWT9tVu+mxT9dSwJu2erfUDz5dnr6h8rgkg95NGboeJxg==
+esbuild-linux-s390x@0.14.36:
+ version "0.14.36"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.36.tgz#3c9dab40d0d69932ffded0fd7317bb403626c9bc"
+ integrity sha512-g4FMdh//BBGTfVHjF6MO7Cz8gqRoDPzXWxRvWkJoGroKA18G9m0wddvPbEqcQf5Tbt2vSc1CIgag7cXwTmoTXg==
-esbuild-windows-64@0.14.24:
- version "0.14.24"
- resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.14.24.tgz#e97081ee16d51c5a210cd1de15454689ac09fc8b"
- integrity sha512-0uxXF1yLcGEM2es0OMDgQYQGZXQEEIdq8cG3IWhY2GGfFRLXpMgic1iUE+SKCh+b82t1ftUVoyG0zIFRn5NOIA==
+esbuild-netbsd-64@0.14.36:
+ version "0.14.36"
+ resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.36.tgz#e27847f6d506218291619b8c1e121ecd97628494"
+ integrity sha512-UB2bVImxkWk4vjnP62ehFNZ73lQY1xcnL5ZNYF3x0AG+j8HgdkNF05v67YJdCIuUJpBuTyCK8LORCYo9onSW+A==
-esbuild-windows-arm64@0.14.24:
- version "0.14.24"
- resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.24.tgz#0fcff2b58c772874f8dc52638557f817609ed699"
- integrity sha512-unwaYRaIK/4OaZm0jnM3pLKMPEjaQqmT5teTciSZ86VYaiYZF27Ki7BW7R5ngk27gIw0ovIfUcn9DhJgp7qAlw==
+esbuild-openbsd-64@0.14.36:
+ version "0.14.36"
+ resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.36.tgz#c94c04c557fae516872a586eae67423da6d2fabb"
+ integrity sha512-NvGB2Chf8GxuleXRGk8e9zD3aSdRO5kLt9coTQbCg7WMGXeX471sBgh4kSg8pjx0yTXRt0MlrUDnjVYnetyivg==
-esbuild@^0.14.14:
- version "0.14.24"
- resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.14.24.tgz#543899cf9ff0ebe206dc3de2ac18b9122d9f5697"
- integrity sha512-NjfmycVQqY0+iKXoHXsvMAKx4XF/bD/dDm8pK6C/3aJO/i/uby+7AR4z8vu0qkiihkB5Y43+9BjdY2MGnswC/A==
+esbuild-sunos-64@0.14.36:
+ version "0.14.36"
+ resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.14.36.tgz#9b79febc0df65a30f1c9bd63047d1675511bf99d"
+ integrity sha512-VkUZS5ftTSjhRjuRLp+v78auMO3PZBXu6xl4ajomGenEm2/rGuWlhFSjB7YbBNErOchj51Jb2OK8lKAo8qdmsQ==
+
+esbuild-windows-32@0.14.36:
+ version "0.14.36"
+ resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.14.36.tgz#910d11936c8d2122ffdd3275e5b28d8a4e1240ec"
+ integrity sha512-bIar+A6hdytJjZrDxfMBUSEHHLfx3ynoEZXx/39nxy86pX/w249WZm8Bm0dtOAByAf4Z6qV0LsnTIJHiIqbw0w==
+
+esbuild-windows-64@0.14.36:
+ version "0.14.36"
+ resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.14.36.tgz#21b4ce8b42a4efc63f4b58ec617f1302448aad26"
+ integrity sha512-+p4MuRZekVChAeueT1Y9LGkxrT5x7YYJxYE8ZOTcEfeUUN43vktSn6hUNsvxzzATrSgq5QqRdllkVBxWZg7KqQ==
+
+esbuild-windows-arm64@0.14.36:
+ version "0.14.36"
+ resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.36.tgz#ba21546fecb7297667d0052d00150de22c044b24"
+ integrity sha512-fBB4WlDqV1m18EF/aheGYQkQZHfPHiHJSBYzXIo8yKehek+0BtBwo/4PNwKGJ5T0YK0oc8pBKjgwPbzSrPLb+Q==
+
+esbuild@^0.14.27:
+ version "0.14.36"
+ resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.14.36.tgz#0023a73eab57886ac5605df16ee421e471a971b3"
+ integrity sha512-HhFHPiRXGYOCRlrhpiVDYKcFJRdO0sBElZ668M4lh2ER0YgnkLxECuFe7uWCf23FrcLc59Pqr7dHkTqmRPDHmw==
optionalDependencies:
- esbuild-android-64 "0.14.24"
- esbuild-android-arm64 "0.14.24"
- esbuild-darwin-64 "0.14.24"
- esbuild-darwin-arm64 "0.14.24"
- esbuild-freebsd-64 "0.14.24"
- esbuild-freebsd-arm64 "0.14.24"
- esbuild-linux-32 "0.14.24"
- esbuild-linux-64 "0.14.24"
- esbuild-linux-arm "0.14.24"
- esbuild-linux-arm64 "0.14.24"
- esbuild-linux-mips64le "0.14.24"
- esbuild-linux-ppc64le "0.14.24"
- esbuild-linux-riscv64 "0.14.24"
- esbuild-linux-s390x "0.14.24"
- esbuild-netbsd-64 "0.14.24"
- esbuild-openbsd-64 "0.14.24"
- esbuild-sunos-64 "0.14.24"
- esbuild-windows-32 "0.14.24"
- esbuild-windows-64 "0.14.24"
- esbuild-windows-arm64 "0.14.24"
-
-escalade@^3.1.1:
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40"
- integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==
-
-escape-string-regexp@^1.0.5:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
- integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
+ esbuild-android-64 "0.14.36"
+ esbuild-android-arm64 "0.14.36"
+ esbuild-darwin-64 "0.14.36"
+ esbuild-darwin-arm64 "0.14.36"
+ esbuild-freebsd-64 "0.14.36"
+ esbuild-freebsd-arm64 "0.14.36"
+ esbuild-linux-32 "0.14.36"
+ esbuild-linux-64 "0.14.36"
+ esbuild-linux-arm "0.14.36"
+ esbuild-linux-arm64 "0.14.36"
+ esbuild-linux-mips64le "0.14.36"
+ esbuild-linux-ppc64le "0.14.36"
+ esbuild-linux-riscv64 "0.14.36"
+ esbuild-linux-s390x "0.14.36"
+ esbuild-netbsd-64 "0.14.36"
+ esbuild-openbsd-64 "0.14.36"
+ esbuild-sunos-64 "0.14.36"
+ esbuild-windows-32 "0.14.36"
+ esbuild-windows-64 "0.14.36"
+ esbuild-windows-arm64 "0.14.36"
estree-walker@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700"
integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==
-estree-walker@^2.0.1:
+estree-walker@^2.0.2:
version "2.0.2"
resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac"
integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==
+evtd@^0.2.2, evtd@^0.2.3:
+ version "0.2.3"
+ resolved "https://registry.yarnpkg.com/evtd/-/evtd-0.2.3.tgz#185158d533b4440ee831a0fa0cffde16e8bda504"
+ integrity sha512-tmiT1YUVqFjTY+BSBOAskL83xNx41iUfpvKP6Gcd/xMHjg3mnER98jXGXJyKnxCG19uPc6EhZiUC+MUyvoqCtw==
+
fast-deep-equal@^3.1.1:
version "3.1.3"
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
@@ -852,11 +619,6 @@ fill-range@^7.0.1:
dependencies:
to-regex-range "^5.0.1"
-filter-obj@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/filter-obj/-/filter-obj-1.1.0.tgz#9b311112bc6c6127a16e016c6c5d7f19e0805c5b"
- integrity sha1-mzERErxsYSehbgFsbF1/GeCAXFs=
-
fsevents@~2.3.2:
version "2.3.2"
resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
@@ -867,11 +629,6 @@ function-bind@^1.1.1:
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
-gensync@^1.0.0-beta.2:
- version "1.0.0-beta.2"
- resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0"
- integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==
-
glob-parent@~5.1.2:
version "5.1.2"
resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
@@ -879,15 +636,10 @@ glob-parent@~5.1.2:
dependencies:
is-glob "^4.0.1"
-globals@^11.1.0:
- version "11.12.0"
- resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
- integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
-
-has-flag@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
- integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0=
+has-flag@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
+ integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
has@^1.0.3:
version "1.0.3"
@@ -896,25 +648,16 @@ has@^1.0.3:
dependencies:
function-bind "^1.1.1"
-history@^5.2.0:
- version "5.3.0"
- resolved "https://registry.yarnpkg.com/history/-/history-5.3.0.tgz#1548abaa245ba47992f063a0783db91ef201c73b"
- integrity sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==
- dependencies:
- "@babel/runtime" "^7.7.6"
+highlight.js@^11.5.0:
+ version "11.5.1"
+ resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-11.5.1.tgz#027c24e4509e2f4dcd00b4a6dda542ce0a1f7aea"
+ integrity sha512-LKzHqnxr4CrD2YsNoIf/o5nJ09j4yi/GcH5BnYz9UnVpZdS4ucMgvP61TDty5xJcFGRjnH4DpujkS9bHT3hq0Q==
immutable@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.0.0.tgz#b86f78de6adef3608395efb269a91462797e2c23"
integrity sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw==
-invariant@^2.2.4:
- version "2.2.4"
- resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6"
- integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==
- dependencies:
- loose-envify "^1.0.0"
-
is-binary-path@~2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
@@ -946,92 +689,91 @@ is-number@^7.0.0:
resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
+jest-diff@^27.5.1:
+ version "27.5.1"
+ resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-27.5.1.tgz#a07f5011ac9e6643cf8a95a462b7b1ecf6680def"
+ integrity sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==
+ dependencies:
+ chalk "^4.0.0"
+ diff-sequences "^27.5.1"
+ jest-get-type "^27.5.1"
+ pretty-format "^27.5.1"
+
+jest-get-type@^27.5.1:
+ version "27.5.1"
+ resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.5.1.tgz#3cd613c507b0f7ace013df407a1c1cd578bcb4f1"
+ integrity sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==
+
+jest-matcher-utils@^27.0.0:
+ version "27.5.1"
+ resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz#9c0cdbda8245bc22d2331729d1091308b40cf8ab"
+ integrity sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==
+ dependencies:
+ chalk "^4.0.0"
+ jest-diff "^27.5.1"
+ jest-get-type "^27.5.1"
+ pretty-format "^27.5.1"
+
js-base64@^3.7.2:
version "3.7.2"
resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-3.7.2.tgz#816d11d81a8aff241603d19ce5761e13e41d7745"
integrity sha512-NnRs6dsyqUXejqk/yv2aiXlAvOs56sLkX6nUdeaNezI5LFFLlsZjOThmwnrcwh5ZZRwZlCMnVAY3CvhIhoVEKQ==
-"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
- integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
-
-jsesc@^2.5.1:
- version "2.5.2"
- resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4"
- integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==
-
-json-schema-compare@^0.2.2:
- version "0.2.2"
- resolved "https://registry.yarnpkg.com/json-schema-compare/-/json-schema-compare-0.2.2.tgz#dd601508335a90c7f4cfadb6b2e397225c908e56"
- integrity sha512-c4WYmDKyJXhs7WWvAWm3uIYnfyWFoIp+JEoX34rctVvEkMYCPGhXtvmFFXiffBbxfZsvQ0RNnV5H7GvDF5HCqQ==
- dependencies:
- lodash "^4.17.4"
-
-json-schema-merge-allof@^0.6.0:
- version "0.6.0"
- resolved "https://registry.yarnpkg.com/json-schema-merge-allof/-/json-schema-merge-allof-0.6.0.tgz#64d48820fec26b228db837475ce3338936bf59a5"
- integrity sha512-LEw4VMQVRceOPLuGRWcxW5orTTiR9ZAtqTAe4rQUjNADTeR81bezBVFa0MqIwp0YmHIM1KkhSjZM7o+IQhaPbQ==
- dependencies:
- compute-lcm "^1.1.0"
- json-schema-compare "^0.2.2"
- lodash "^4.17.4"
-
json-schema-traverse@^0.4.1:
version "0.4.1"
resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
-json5@^2.1.2:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3"
- integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==
- dependencies:
- minimist "^1.2.5"
+lodash-es@^4.17.21:
+ version "4.17.21"
+ resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee"
+ integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==
-jsonpointer@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-5.0.0.tgz#f802669a524ec4805fa7389eadbc9921d5dc8072"
- integrity sha512-PNYZIdMjVIvVgDSYKTT63Y+KZ6IZvGRNNWcxwD+GNnUz1MKPfv30J8ueCjdwcN0nDx2SlshgyB7Oy0epAzVRRg==
-
-lodash@^4.17.15, lodash@^4.17.21, lodash@^4.17.4:
+lodash@^4.17.21:
version "4.17.21"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
-loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
- integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==
- dependencies:
- js-tokens "^3.0.0 || ^4.0.0"
-
magic-string@^0.25.7:
- version "0.25.7"
- resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051"
- integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==
+ version "0.25.9"
+ resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c"
+ integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==
dependencies:
- sourcemap-codec "^1.4.4"
-
-minimist@^1.2.5:
- version "1.2.6"
- resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44"
- integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==
-
-ms@2.1.2:
- version "2.1.2"
- resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
- integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
+ sourcemap-codec "^1.4.8"
mutation-observer@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/mutation-observer/-/mutation-observer-1.0.3.tgz#42e9222b101bca82e5ba9d5a7acf4a14c0f263d0"
integrity sha512-M/O/4rF2h776hV7qGMZUH3utZLO/jK7p8rnNgGkjKUw8zCGjRQPxB8z6+5l8+VjRUQ3dNYu4vjqXYLr+U8ZVNA==
-nanoid@^3.1.23, nanoid@^3.3.1:
- version "3.3.1"
- resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.1.tgz#6347a18cac88af88f58af0b3594b723d5e99bb35"
- integrity sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==
+naive-ui@^2.28.1:
+ version "2.28.1"
+ resolved "https://registry.yarnpkg.com/naive-ui/-/naive-ui-2.28.1.tgz#73739f6bedfaf96a1cb47ed3ec87f5c96554c458"
+ integrity sha512-wgQ0uebfeZGmOkh2iKCDZI0ycK9IhGkkyfGPya6/Yfs9sDytloknh7Aapk1bhVe5uMsyMQyhHNQoByWgENdxbA==
+ dependencies:
+ "@css-render/plugin-bem" "^0.15.9"
+ "@css-render/vue3-ssr" "^0.15.9"
+ "@types/lodash" "^4.14.181"
+ "@types/lodash-es" "^4.17.6"
+ async-validator "^4.0.7"
+ css-render "^0.15.9"
+ date-fns "^2.28.0"
+ date-fns-tz "^1.3.3"
+ evtd "^0.2.3"
+ highlight.js "^11.5.0"
+ lodash "^4.17.21"
+ lodash-es "^4.17.21"
+ seemly "^0.3.3"
+ treemate "^0.3.11"
+ vdirs "^0.1.8"
+ vfonts "^0.0.3"
+ vooks "^0.2.12"
+ vueuc "^0.4.29"
+
+nanoid@^3.3.1:
+ version "3.3.3"
+ resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.3.tgz#fd8e8b7aa761fe807dba2d1b98fb7241bb724a25"
+ integrity sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==
node-fetch@2:
version "2.6.7"
@@ -1040,21 +782,11 @@ node-fetch@2:
dependencies:
whatwg-url "^5.0.0"
-node-releases@^2.0.2:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.2.tgz#7139fe71e2f4f11b47d4d2986aaf8c48699e0c01"
- integrity sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==
-
normalize-path@^3.0.0, normalize-path@~3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
-object-assign@^4.1.1:
- version "4.1.1"
- resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
- integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
-
path-parse@^1.0.7:
version "1.0.7"
resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
@@ -1070,130 +802,33 @@ picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2:
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
-postcss@^8.4.6:
- version "8.4.7"
- resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.7.tgz#f99862069ec4541de386bf57f5660a6c7a0875a8"
- integrity sha512-L9Ye3r6hkkCeOETQX6iOaWZgjp3LL6Lpqm6EtgbKrgqGGteRMNb9vzBfRL96YOSu8o7x3MfIH9Mo5cPJFGrW6A==
+postcss@^8.1.10, postcss@^8.4.12:
+ version "8.4.12"
+ resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.12.tgz#1e7de78733b28970fa4743f7da6f3763648b1905"
+ integrity sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg==
dependencies:
nanoid "^3.3.1"
picocolors "^1.0.0"
source-map-js "^1.0.2"
-prop-types-extra@^1.1.0:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/prop-types-extra/-/prop-types-extra-1.1.1.tgz#58c3b74cbfbb95d304625975aa2f0848329a010b"
- integrity sha512-59+AHNnHYCdiC+vMwY52WmvP5dM3QLeoumYuEyceQDi9aEhtwN9zIQ2ZNo25sMyXnbh32h+P1ezDsUpUH3JAew==
+pretty-format@^27.0.0, pretty-format@^27.5.1:
+ version "27.5.1"
+ resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.5.1.tgz#2181879fdea51a7a5851fb39d920faa63f01d88e"
+ integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==
dependencies:
- react-is "^16.3.2"
- warning "^4.0.0"
-
-prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1:
- version "15.8.1"
- resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5"
- integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==
- dependencies:
- loose-envify "^1.4.0"
- object-assign "^4.1.1"
- react-is "^16.13.1"
+ ansi-regex "^5.0.1"
+ ansi-styles "^5.0.0"
+ react-is "^17.0.1"
punycode@^2.1.0:
version "2.1.1"
resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
-query-string@^7.1.1:
- version "7.1.1"
- resolved "https://registry.yarnpkg.com/query-string/-/query-string-7.1.1.tgz#754620669db978625a90f635f12617c271a088e1"
- integrity sha512-MplouLRDHBZSG9z7fpuAAcI7aAYjDLhtsiVZsevsfaHWDS2IDdORKbSd1kWUA+V4zyva/HZoSfpwnYMMQDhb0w==
- dependencies:
- decode-uri-component "^0.2.0"
- filter-obj "^1.1.0"
- split-on-first "^1.0.0"
- strict-uri-encode "^2.0.0"
-
-react-bootstrap@^2.1.2:
- version "2.1.2"
- resolved "https://registry.yarnpkg.com/react-bootstrap/-/react-bootstrap-2.1.2.tgz#a81161821c351d5e0eaed5bb85d50659736f2aa4"
- integrity sha512-E7PR13cVsEW70gw08BWplENwn6PHTshskOsQygZqyc65jQlsnr9MsmuW/lgzAN2OiMBnc0KaNpuZ/FohL7dchw==
- dependencies:
- "@babel/runtime" "^7.14.0"
- "@restart/hooks" "^0.4.5"
- "@restart/ui" "^1.0.1"
- "@types/invariant" "^2.2.33"
- "@types/prop-types" "^15.7.3"
- "@types/react" ">=16.14.8"
- "@types/react-transition-group" "^4.4.1"
- "@types/warning" "^3.0.0"
- classnames "^2.3.1"
- dom-helpers "^5.2.1"
- invariant "^2.2.4"
- prop-types "^15.7.2"
- prop-types-extra "^1.1.0"
- react-transition-group "^4.4.1"
- uncontrollable "^7.2.1"
- warning "^4.0.3"
-
-react-dom@^17.0.2:
+react-is@^17.0.1:
version "17.0.2"
- resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-17.0.2.tgz#ecffb6845e3ad8dbfcdc498f0d0a939736502c23"
- integrity sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==
- dependencies:
- loose-envify "^1.1.0"
- object-assign "^4.1.1"
- scheduler "^0.20.2"
-
-react-icons@^4.3.1:
- version "4.3.1"
- resolved "https://registry.yarnpkg.com/react-icons/-/react-icons-4.3.1.tgz#2fa92aebbbc71f43d2db2ed1aed07361124e91ca"
- integrity sha512-cB10MXLTs3gVuXimblAdI71jrJx8njrJZmNMEMC+sQu5B/BIOmlsAjskdqpn81y8UBVEGuHODd7/ci5DvoSzTQ==
-
-react-is@^16.13.1, react-is@^16.3.2, react-is@^16.9.0:
- version "16.13.1"
- resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
- integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
-
-react-lifecycles-compat@^3.0.4:
- version "3.0.4"
- resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362"
- integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==
-
-react-refresh@^0.11.0:
- version "0.11.0"
- resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.11.0.tgz#77198b944733f0f1f1a90e791de4541f9f074046"
- integrity sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A==
-
-react-router-dom@^6.2.1:
- version "6.2.2"
- resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.2.2.tgz#f1a2c88365593c76b9612ae80154a13fcb72e442"
- integrity sha512-AtYEsAST7bDD4dLSQHDnk/qxWLJdad5t1HFa1qJyUrCeGgEuCSw0VB/27ARbF9Fi/W5598ujvJOm3ujUCVzuYQ==
- dependencies:
- history "^5.2.0"
- react-router "6.2.2"
-
-react-router@6.2.2, react-router@^6.2.1:
- version "6.2.2"
- resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.2.2.tgz#495e683a0c04461eeb3d705fe445d6cf42f0c249"
- integrity sha512-/MbxyLzd7Q7amp4gDOGaYvXwhEojkJD5BtExkuKmj39VEE0m3l/zipf6h2WIB2jyAO0lI6NGETh4RDcktRm4AQ==
- dependencies:
- history "^5.2.0"
-
-react-transition-group@^4.4.1:
- version "4.4.2"
- resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-4.4.2.tgz#8b59a56f09ced7b55cbd53c36768b922890d5470"
- integrity sha512-/RNYfRAMlZwDSr6z4zNKV6xu53/e2BuaBbGhbyYIXTrmgu/bGHzmqOs7mJSJBHy9Ud+ApHx3QjrkKSp1pxvlFg==
- dependencies:
- "@babel/runtime" "^7.5.5"
- dom-helpers "^5.0.1"
- loose-envify "^1.4.0"
- prop-types "^15.6.2"
-
-react@^17.0.2:
- version "17.0.2"
- resolved "https://registry.yarnpkg.com/react/-/react-17.0.2.tgz#d0b5cc516d29eb3eee383f75b62864cfb6800037"
- integrity sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==
- dependencies:
- loose-envify "^1.1.0"
- object-assign "^4.1.1"
+ resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0"
+ integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==
readdirp@~3.6.0:
version "3.6.0"
@@ -1207,6 +842,11 @@ regenerator-runtime@^0.13.4:
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52"
integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==
+resize-observer-polyfill@^1.5.1:
+ version "1.5.1"
+ resolved "https://registry.yarnpkg.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz#0e9020dd3d21024458d4ebd27e23e40269810464"
+ integrity sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==
+
resolve@^1.22.0:
version "1.22.0"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198"
@@ -1217,81 +857,55 @@ resolve@^1.22.0:
supports-preserve-symlinks-flag "^1.0.0"
rollup@^2.59.0:
- version "2.69.0"
- resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.69.0.tgz#82aa86682a45e9760146b736c1643bf435506156"
- integrity sha512-kjER91tHyek8gAkuz7+558vSnTQ+pITEok1P0aNOS45ZXyngaqPsXJmSel4QPQnJo7EJMjXUU1/GErWkWiKORg==
+ version "2.70.2"
+ resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.70.2.tgz#808d206a8851628a065097b7ba2053bd83ba0c0d"
+ integrity sha512-EitogNZnfku65I1DD5Mxe8JYRUCy0hkK5X84IlDtUs+O6JRMpRciXTzyCUuX11b5L5pvjH+OmFXiQ3XjabcXgg==
optionalDependencies:
fsevents "~2.3.2"
-safe-buffer@~5.1.1:
- version "5.1.2"
- resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
- integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
-
-sass@^1.49.9:
- version "1.49.9"
- resolved "https://registry.yarnpkg.com/sass/-/sass-1.49.9.tgz#b15a189ecb0ca9e24634bae5d1ebc191809712f9"
- integrity sha512-YlYWkkHP9fbwaFRZQRXgDi3mXZShslVmmo+FVK3kHLUELHHEYrCmL1x6IUjC7wLS6VuJSAFXRQS/DxdsC4xL1A==
+sass@^1.50.0:
+ version "1.50.0"
+ resolved "https://registry.yarnpkg.com/sass/-/sass-1.50.0.tgz#3e407e2ebc53b12f1e35ce45efb226ea6063c7c8"
+ integrity sha512-cLsD6MEZ5URXHStxApajEh7gW189kkjn4Rc8DQweMyF+o5HF5nfEz8QYLMlPsTOD88DknatTmBWkOcw5/LnJLQ==
dependencies:
chokidar ">=3.0.0 <4.0.0"
immutable "^4.0.0"
source-map-js ">=0.6.2 <2.0.0"
-scheduler@^0.20.2:
- version "0.20.2"
- resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.20.2.tgz#4baee39436e34aa93b4874bddcbf0fe8b8b50e91"
- integrity sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==
+seemly@^0.3.1, seemly@^0.3.3:
+ version "0.3.3"
+ resolved "https://registry.yarnpkg.com/seemly/-/seemly-0.3.3.tgz#a6482f374e042f873f63dc7622cb1529c251574e"
+ integrity sha512-mAyqemz41e9HiZPMXAn7NtTExJgztwco5cdZjrt/iViU/oFeav+Q8K1c93M/tIZZ00QkT65JMr4xXQk7Vv5hWQ==
dependencies:
- loose-envify "^1.1.0"
- object-assign "^4.1.1"
-
-semver@^6.3.0:
- version "6.3.0"
- resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
- integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
+ "@types/jest" "^27.0.1"
"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c"
integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==
-source-map@^0.5.0:
- version "0.5.7"
- resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
- integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=
+source-map@^0.6.1:
+ version "0.6.1"
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
+ integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
-sourcemap-codec@^1.4.4:
+sourcemap-codec@^1.4.8:
version "1.4.8"
resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4"
integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==
-split-on-first@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/split-on-first/-/split-on-first-1.1.0.tgz#f610afeee3b12bce1d0c30425e76398b78249a5f"
- integrity sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==
-
-strict-uri-encode@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546"
- integrity sha1-ucczDHBChi9rFC3CdLvMWGbONUY=
-
-supports-color@^5.3.0:
- version "5.5.0"
- resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
- integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
+supports-color@^7.1.0:
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
+ integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
dependencies:
- has-flag "^3.0.0"
+ has-flag "^4.0.0"
supports-preserve-symlinks-flag@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
-to-fast-properties@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e"
- integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=
-
to-regex-range@^5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
@@ -1304,20 +918,15 @@ tr46@~0.0.3:
resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a"
integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=
-type-fest@2.11.2:
- version "2.11.2"
- resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-2.11.2.tgz#5534a919858bc517492cd3a53a673835a76d2e71"
- integrity sha512-reW2Y2Mpn0QNA/5fvtm5doROLwDPu2zOm5RtY7xQQS05Q7xgC8MOZ3yPNaP9m/s/sNjjFQtHo7VCNqYW2iI+Ig==
+treemate@^0.3.11:
+ version "0.3.11"
+ resolved "https://registry.yarnpkg.com/treemate/-/treemate-0.3.11.tgz#7d52f8f69ab9ce326f8d139e0a3d1ffb25e48222"
+ integrity sha512-M8RGFoKtZ8dF+iwJfAJTOH/SM4KluKOKRJpjCMhI8bG3qB74zrFoArKZ62ll0Fr3mqkMJiQOmWYkdYgDeITYQg==
-uncontrollable@^7.2.1:
- version "7.2.1"
- resolved "https://registry.yarnpkg.com/uncontrollable/-/uncontrollable-7.2.1.tgz#1fa70ba0c57a14d5f78905d533cf63916dc75738"
- integrity sha512-svtcfoTADIB0nT9nltgjujTi7BzVmwjZClOmskKu/E8FW9BXzg9os8OLr4f8Dlnk0rYWJIWr4wv9eKUXiQvQwQ==
- dependencies:
- "@babel/runtime" "^7.6.3"
- "@types/react" ">=16.9.11"
- invariant "^2.2.4"
- react-lifecycles-compat "^3.0.4"
+type-fest@2.12.1:
+ version "2.12.1"
+ resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-2.12.1.tgz#d2be8f50bf5f8f0a5fd916d29bf3e98c17e960be"
+ integrity sha512-AiknQSEqKVGDDjtZqeKrUoTlcj7FKhupmnVUgz6KoOKtvMwRGE6hUNJ/nVear+h7fnUPO1q/htSkYKb1pyntkQ==
uri-js@^4.2.2:
version "4.4.1"
@@ -1326,64 +935,77 @@ uri-js@^4.2.2:
dependencies:
punycode "^2.1.0"
-validate.io-array@^1.0.3:
- version "1.0.6"
- resolved "https://registry.yarnpkg.com/validate.io-array/-/validate.io-array-1.0.6.tgz#5b5a2cafd8f8b85abb2f886ba153f2d93a27774d"
- integrity sha1-W1osr9j4uFq7L4hroVPy2Tond00=
-
-validate.io-function@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/validate.io-function/-/validate.io-function-1.0.2.tgz#343a19802ed3b1968269c780e558e93411c0bad7"
- integrity sha1-NDoZgC7TsZaCaceA5VjpNBHAutc=
-
-validate.io-integer-array@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/validate.io-integer-array/-/validate.io-integer-array-1.0.0.tgz#2cabde033293a6bcbe063feafe91eaf46b13a089"
- integrity sha1-LKveAzKTpry+Bj/q/pHq9GsToIk=
- dependencies:
- validate.io-array "^1.0.3"
- validate.io-integer "^1.0.4"
-
-validate.io-integer@^1.0.4:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/validate.io-integer/-/validate.io-integer-1.0.5.tgz#168496480b95be2247ec443f2233de4f89878068"
- integrity sha1-FoSWSAuVviJH7EQ/IjPeT4mHgGg=
- dependencies:
- validate.io-number "^1.0.3"
-
-validate.io-number@^1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/validate.io-number/-/validate.io-number-1.0.3.tgz#f63ffeda248bf28a67a8d48e0e3b461a1665baf8"
- integrity sha1-9j/+2iSL8opnqNSODjtGGhZluvg=
-
-vconsole@^3.14.3:
- version "3.14.3"
- resolved "https://registry.yarnpkg.com/vconsole/-/vconsole-3.14.3.tgz#a452867f03b2eb1f57a3ce4b8ff2b0e067e92040"
- integrity sha512-Je26lm4AzS8uGRVLvHRmCK2MoSDviM/z/kpM4RLGrbDzDB36stlMjmtOa3Vh9IQDQG/aw/gqQGtpSHIGEP7/og==
+vconsole@^3.14.6:
+ version "3.14.6"
+ resolved "https://registry.yarnpkg.com/vconsole/-/vconsole-3.14.6.tgz#74cbbf9c14e66d26325958cee8a9e8c4086a5115"
+ integrity sha512-8Ffk2SfNe6EzKqZ0aNnNjpAVBVT7zgJo81lYEJdKySYLVYBeSawdSkWi9fSjDg3WsQhgS1vNPmRqJDTuwdVbnQ==
dependencies:
"@babel/runtime" "^7.17.2"
copy-text-to-clipboard "^3.0.1"
core-js "^3.11.0"
mutation-observer "^1.0.3"
-vite@^2.8.0:
- version "2.8.6"
- resolved "https://registry.yarnpkg.com/vite/-/vite-2.8.6.tgz#32d50e23c99ca31b26b8ccdc78b1d72d4d7323d3"
- integrity sha512-e4H0QpludOVKkmOsRyqQ7LTcMUDF3mcgyNU4lmi0B5JUbe0ZxeBBl8VoZ8Y6Rfn9eFKYtdXNPcYK97ZwH+K2ug==
+vdirs@^0.1.4, vdirs@^0.1.8:
+ version "0.1.8"
+ resolved "https://registry.yarnpkg.com/vdirs/-/vdirs-0.1.8.tgz#a103bc43baca738f8dea912a7e9737154a19dbc2"
+ integrity sha512-H9V1zGRLQZg9b+GdMk8MXDN2Lva0zx72MPahDKc30v+DtwKjfyOSXWRIX4t2mhDubM1H09gPhWeth/BJWPHGUw==
dependencies:
- esbuild "^0.14.14"
- postcss "^8.4.6"
+ evtd "^0.2.2"
+
+vfonts@^0.0.3:
+ version "0.0.3"
+ resolved "https://registry.yarnpkg.com/vfonts/-/vfonts-0.0.3.tgz#999d66fecea18efee3f2b966c81101ae8ce01a29"
+ integrity sha512-nguyw8L6Un8eelg1vQ31vIU2ESxqid7EYmy8V+MDeMaHBqaRSkg3dTBToC1PR00D89UzS/SLkfYPnx0Wf23IQQ==
+
+vite@^2.9.2:
+ version "2.9.5"
+ resolved "https://registry.yarnpkg.com/vite/-/vite-2.9.5.tgz#08ef37ac7a6d879c96f328b791732c9a00ea25ea"
+ integrity sha512-dvMN64X2YEQgSXF1lYabKXw3BbN6e+BL67+P3Vy4MacnY+UzT1AfkHiioFSi9+uiDUiaDy7Ax/LQqivk6orilg==
+ dependencies:
+ esbuild "^0.14.27"
+ postcss "^8.4.12"
resolve "^1.22.0"
rollup "^2.59.0"
optionalDependencies:
fsevents "~2.3.2"
-warning@^4.0.0, warning@^4.0.3:
- version "4.0.3"
- resolved "https://registry.yarnpkg.com/warning/-/warning-4.0.3.tgz#16e9e077eb8a86d6af7d64aa1e05fd85b4678ca3"
- integrity sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==
+vooks@^0.2.12, vooks@^0.2.4:
+ version "0.2.12"
+ resolved "https://registry.yarnpkg.com/vooks/-/vooks-0.2.12.tgz#2b6e23330b77bac81c7f7a344c4ca3e9f4f6c373"
+ integrity sha512-iox0I3RZzxtKlcgYaStQYKEzWWGAduMmq+jS7OrNdQo1FgGfPMubGL3uGHOU9n97NIvfFDBGnpSvkWyb/NSn/Q==
dependencies:
- loose-envify "^1.0.0"
+ evtd "^0.2.2"
+
+vue-router@4:
+ version "4.0.14"
+ resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-4.0.14.tgz#ce2028c1c5c33e30c7287950c973f397fce1bd65"
+ integrity sha512-wAO6zF9zxA3u+7AkMPqw9LjoUCjSxfFvINQj3E/DceTt6uEz1XZLraDhdg2EYmvVwTBSGlLYsUw8bDmx0754Mw==
+ dependencies:
+ "@vue/devtools-api" "^6.0.0"
+
+vue@^3.2.25:
+ version "3.2.33"
+ resolved "https://registry.yarnpkg.com/vue/-/vue-3.2.33.tgz#7867eb16a3293a28c4d190a837bc447878bd64c2"
+ integrity sha512-si1ExAlDUrLSIg/V7D/GgA4twJwfsfgG+t9w10z38HhL/HA07132pUQ2KuwAo8qbCyMJ9e6OqrmWrOCr+jW7ZQ==
+ dependencies:
+ "@vue/compiler-dom" "3.2.33"
+ "@vue/compiler-sfc" "3.2.33"
+ "@vue/runtime-dom" "3.2.33"
+ "@vue/server-renderer" "3.2.33"
+ "@vue/shared" "3.2.33"
+
+vueuc@^0.4.29:
+ version "0.4.29"
+ resolved "https://registry.yarnpkg.com/vueuc/-/vueuc-0.4.29.tgz#64ebba9e3dd6d6ad0ede5043c48d31631697346a"
+ integrity sha512-OlypOEll6YoTKnZx2aPml6orygNuzv+kwIztERzYiXPhCOE7/QMGQQek8NI/mDkb25vlglvm54n91ypYPMx8UQ==
+ dependencies:
+ "@css-render/vue3-ssr" "^0.15.7"
+ css-render "^0.15.7"
+ evtd "^0.2.2"
+ resize-observer-polyfill "^1.5.1"
+ seemly "^0.3.1"
+ vdirs "^0.1.4"
+ vooks "^0.2.4"
webidl-conversions@^3.0.0:
version "3.0.1"
diff --git a/misc/config_tools/data/__init__.py b/misc/config_tools/data/__init__.py
new file mode 100644
index 000000000..6bb846f9e
--- /dev/null
+++ b/misc/config_tools/data/__init__.py
@@ -0,0 +1,3 @@
+# Do Not Delete
+# This file be used in configurator's wasm python env
+# See: https://stackoverflow.com/questions/42791179/why-does-pip-install-not-include-my-package-data-files
diff --git a/misc/config_tools/launch_config/__init__.py b/misc/config_tools/launch_config/__init__.py
new file mode 100644
index 000000000..6bb846f9e
--- /dev/null
+++ b/misc/config_tools/launch_config/__init__.py
@@ -0,0 +1,3 @@
+# Do Not Delete
+# This file be used in configurator's wasm python env
+# See: https://stackoverflow.com/questions/42791179/why-does-pip-install-not-include-my-package-data-files
diff --git a/misc/config_tools/launch_config/launch_cfg_gen.py b/misc/config_tools/launch_config/launch_cfg_gen.py
index 6465924e6..e7ef2885a 100755
--- a/misc/config_tools/launch_config/launch_cfg_gen.py
+++ b/misc/config_tools/launch_config/launch_cfg_gen.py
@@ -5,19 +5,27 @@
# SPDX-License-Identifier: BSD-3-Clause
#
-import sys, os
-import argparse
-import lxml.etree as etree
-import logging
import re
+
+import os
+import sys
+
import copy
+import argparse
+
+import logging
+
+import lxml.etree as etree
+
def eval_xpath(element, xpath, default_value=None):
return next(iter(element.xpath(xpath)), default_value)
+
def eval_xpath_all(element, xpath):
return element.xpath(xpath)
+
class LaunchScript:
script_template_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), "launch_script_template.sh")
@@ -30,7 +38,7 @@ class LaunchScript:
# 31 - For LPC bridge needed by integrated GPU
self._free_slots = list(range(3, 30))
- def get_virtual_bdf(self, device_etree = None, options = None):
+ def get_virtual_bdf(self, device_etree=None, options=None):
if device_etree is not None:
bus = eval_xpath(device_etree, "../@address")
vendor_id = eval_xpath(device_etree, "vendor/text()")
@@ -65,7 +73,7 @@ class LaunchScript:
passthru_options = []
if device_etree is not None:
class_code = eval_xpath(device_etree, "class/text()", "")
- for k,v in self._options.items():
+ for k, v in self._options.items():
if class_code.startswith(k):
passthru_options.extend(v)
return ",".join(passthru_options)
@@ -157,7 +165,10 @@ class LaunchScript:
self.add_dynamic_dm_parameter("add_virtual_device", f"{vbdf} {kind} {options}")
def add_passthru_device(self, bus, dev, fun, options=""):
- device_etree = eval_xpath(self._board_etree, f"//bus[@type='pci' and @address='0x{bus:x}']/device[@address='0x{(dev << 16) | fun:x}']")
+ device_etree = eval_xpath(
+ self._board_etree,
+ f"//bus[@type='pci' and @address='0x{bus:x}']/device[@address='0x{(dev << 16) | fun:x}']"
+ )
if not options:
options = self._passthru_options.get_option(device_etree)
@@ -176,6 +187,7 @@ class LaunchScript:
except StopIteration:
return False
+
def cpu_id_to_lapic_id(board_etree, vm_name, cpus):
ret = []
@@ -188,6 +200,7 @@ def cpu_id_to_lapic_id(board_etree, vm_name, cpus):
return ret
+
def generate_for_one_vm(board_etree, hv_scenario_etree, vm_scenario_etree, vm_id):
vm_name = eval_xpath(vm_scenario_etree, "./name/text()", f"ACRN Post-Launched VM")
script = LaunchScript(board_etree, vm_name, vm_scenario_etree)
@@ -214,7 +227,7 @@ def generate_for_one_vm(board_etree, hv_scenario_etree, vm_scenario_etree, vm_id
script.add_plain_dm_parameter(f"-m {eval_xpath(vm_scenario_etree, './/memory/size/text()')}M")
if eval_xpath(vm_scenario_etree, "//SSRAM_ENABLED") == "y" and \
- eval_xpath(vm_scenario_etree, ".//vm_type/text()") == "RTVM":
+ eval_xpath(vm_scenario_etree, ".//vm_type/text()") == "RTVM":
script.add_plain_dm_parameter("--ssram")
###
@@ -314,10 +327,11 @@ def generate_for_one_vm(board_etree, hv_scenario_etree, vm_scenario_etree, vm_id
bus = int(m.group(1), 16)
dev = int(m.group(2), 16)
func = int(m.group(3), 16)
- device_node = eval_xpath(board_etree, f"//bus[@type='pci' and @address='{hex(bus)}']/device[@address='hex((dev << 16) | func)']")
+ device_node = eval_xpath(board_etree,
+ f"//bus[@type='pci' and @address='{hex(bus)}']/device[@address='hex((dev << 16) | func)']")
if device_node and \
- eval_xpath(device_node, "class/text()") == "0x030000" and \
- eval_xpath(device_node, "resource[@type='memory'") is None:
+ eval_xpath(device_node, "class/text()") == "0x030000" and \
+ eval_xpath(device_node, "resource[@type='memory'") is None:
script.add_passthru_device(bus, dev, func, options="igd-vf")
else:
script.add_passthru_device(bus, dev, func)
@@ -338,6 +352,7 @@ def generate_for_one_vm(board_etree, hv_scenario_etree, vm_scenario_etree, vm_id
return script
+
def main(board_xml, scenario_xml, user_vm_id, out_dir):
board_etree = etree.parse(board_xml)
scenario_etree = etree.parse(scenario_xml)
@@ -375,12 +390,14 @@ def main(board_xml, scenario_xml, user_vm_id, out_dir):
return 0
+
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument("--board", help="the XML file summarizing characteristics of the target board")
parser.add_argument("--scenario", help="the XML file specifying the scenario to be set up")
parser.add_argument("--launch", default=None, help="(obsoleted. DO NOT USE)")
- parser.add_argument("--user_vmid", type=int, default=0, help="the post-launched VM ID (as is specified in the launch XML) whose launch script is to be generated, or 0 if all post-launched VMs shall be processed")
+ parser.add_argument("--user_vmid", type=int, default=0,
+ help="the post-launched VM ID (as is specified in the launch XML) whose launch script is to be generated, or 0 if all post-launched VMs shall be processed")
parser.add_argument("--out", default="output", help="path to the directory where generated scripts are placed")
args = parser.parse_args()
diff --git a/misc/config_tools/scenario_config/jsonschema/converter.py b/misc/config_tools/scenario_config/jsonschema/converter.py
index 991a43da2..1062af406 100644
--- a/misc/config_tools/scenario_config/jsonschema/converter.py
+++ b/misc/config_tools/scenario_config/jsonschema/converter.py
@@ -27,6 +27,7 @@ open(output_file, 'w', encoding='utf-8').write(json_schema)
"""
import os
import json
+import re
from collections import OrderedDict
from pathlib import Path
@@ -109,9 +110,16 @@ class XS2JS:
'xs:maxInclusive': ('maximum', int),
}
- def __init__(self, schema_filename):
+ def __init__(self, schema_filename, features=None):
self.xs = XS(schema_filename)
self.desc_conv = ACRNDocumentStringConvertor()
+ if features is None:
+ self.features = []
+ else:
+ if isinstance(features, list):
+ self.features = features
+ else:
+ self.features = [features]
def _get_definitions(self):
"""convert xml schema types to json schema definitions"""
@@ -192,6 +200,27 @@ class XS2JS:
print(obj)
raise NotImplementedError
+ def get_tester(self, element):
+ if "@test" not in element:
+ raise ValueError
+ test_command = re.search(r'\.//(\S+)\s*=\s*[\'"](\S+)[\'"]', element['@test'])
+ if not test_command:
+ raise ValueError
+ test_attr_name = test_command.group(1)
+ test_attr_const = test_command.group(2)
+ test_obj = {
+ "if": {
+ "properties": {
+ test_attr_name: {
+ "const": test_attr_const
+ }
+ }
+ },
+ "then": True,
+ "else": False
+ }
+ return test_obj
+
def get_element_define(self, element):
basic_define = {}
if 'xs:simpleType' in element:
@@ -204,6 +233,15 @@ class XS2JS:
basic_define["$ref"] = "#/definitions/%s" % element_type
elif 'xs:complexType' in element:
basic_define = self.xse2jse(element['xs:complexType'])
+ elif 'xs:alternative' in element:
+ possible_types = []
+ for possible_type in element['xs:alternative']:
+ temp_obj = self.get_element_define(possible_type)
+ if '@test' in possible_type:
+ temp_obj.update(self.get_tester(possible_type))
+ possible_types.append(temp_obj)
+
+ basic_define = {'oneOf': possible_types}
else:
print(json.dumps(element, indent=2))
raise NotImplementedError
@@ -221,11 +259,8 @@ class XS2JS:
name = element['@name']
# get element basic define (basic/simple type? $ref?)
- try:
- basic_define = self.get_element_define(element)
- except NotImplementedError:
- print(f"{name} not translated")
- continue
+
+ basic_define = self.get_element_define(element)
# build element json schema
js_ele = OrderedDict(basic_define)
@@ -250,12 +285,16 @@ class XS2JS:
required.append(name)
if '@maxOccurs' in element:
- if 'type' in js_ele:
- js_ele['items'] = {'type': js_ele['type']}
- elif '$ref' in js_ele:
- js_ele['items'] = {'$ref': js_ele['$ref']}
- del js_ele['$ref']
- else:
+ possible_keys = ['type', '$ref', 'oneOf']
+ convert_to_items_success = False
+ for possible_key in possible_keys:
+ if possible_key not in js_ele:
+ continue
+ js_ele['items'] = {possible_key: js_ele[possible_key]}
+ del js_ele[possible_key]
+ convert_to_items_success = True
+
+ if not convert_to_items_success:
raise NotImplementedError
if element['@maxOccurs'] == "unbounded":
@@ -283,7 +322,7 @@ class XS2JS:
js_ele['description'] = documentation
# dynamic enum
- if '@acrn:options' in element['xs:annotation']:
+ if '@acrn:options' in element['xs:annotation'] and 'dynamicEnum' in self.features:
dynamic_enum = {
'type': 'dynamicEnum',
'function': 'get_enum',
@@ -324,26 +363,22 @@ class XS2JS:
return all_elements
-def main(manual_call=False):
- """
- if you call this function in your
- module must set params `manual_call=True`
- else this function will not run
- """
- # for pyodide run check.
- if __name__ != '__main__' and not manual_call:
- return
-
+def main():
# find acrn-hypervisor/misc/config_tools folder
config_tools = Path(__file__).absolute()
while config_tools.name != "config_tools":
config_tools = config_tools.parent
- schema_file = config_tools / 'configurator' / 'build' / 'sliced.xsd'
+ schema_file = config_tools / 'schema' / 'sliced.xsd'
json_schema_file = config_tools / 'configurator' / 'src' / 'assets' / 'schema' / 'scenario.json'
# Convert XSD to JSON Schema
- json_schema = XS2JS(schema_file).get_json_schema()
+ # Todo: turn off it
+ stand_json_schema = False
+ features = []
+ if not stand_json_schema:
+ features.append('dynamicEnum')
+ json_schema = XS2JS(schema_file, features).get_json_schema()
json_schema = json.dumps(json_schema, indent='\t')
# Write file and print successful message
@@ -351,5 +386,5 @@ def main(manual_call=False):
print("File %s Convert Success. JSON Schema Write To: %s" % (repr(schema_file), repr(json_schema_file)))
-# for pyodide
-main()
+if __name__ == '__main__':
+ main()
diff --git a/misc/config_tools/scenario_config/jsonschema/document.py b/misc/config_tools/scenario_config/jsonschema/document.py
index 2218777c5..fa0b14a5c 100644
--- a/misc/config_tools/scenario_config/jsonschema/document.py
+++ b/misc/config_tools/scenario_config/jsonschema/document.py
@@ -4,6 +4,7 @@
#
# SPDX-License-Identifier: BSD-3-Clause
#
+# pyodide support status: Yes
"""
This program support run in pyodide env.
In js side you can pass params by add follow code before this script.
@@ -11,11 +12,8 @@ In js side you can pass params by add follow code before this script.
params = "${Base64.encode(params)}"
```
"""
-
import re
import sys
-import json
-import base64
from urllib.parse import urljoin
from subprocess import check_output
@@ -144,24 +142,10 @@ class ACRNDocumentStringConvertor:
return fragment
-doc_html = ''
-if __name__ == '__main__':
- WEB = False
- if 'params' in globals():
- WEB = True
- # noinspection PyUnboundLocalVariable,PyUnresolvedReferences
- params_data = base64.b64decode(params)
- params = json.loads(params_data)
- else:
- params = {
- "text": open('configdoc.txt').read(),
- "objectsInv": None
- }
-
- print(params)
+def main():
+ params = {
+ "text": open('configdoc.txt').read(),
+ "objectsInv": None
+ }
doc_html = ACRNDocumentStringConvertor(params['objectsInv']).convert(params['text'])
- if not WEB:
- print(doc_html)
-
-# for pyodide
-(lambda x: x)(doc_html)
+ return doc_html
diff --git a/misc/config_tools/scenario_config/schema_slicer.py b/misc/config_tools/scenario_config/schema_slicer.py
index e0572c097..26f29fed8 100755
--- a/misc/config_tools/scenario_config/schema_slicer.py
+++ b/misc/config_tools/scenario_config/schema_slicer.py
@@ -241,12 +241,9 @@ if __name__ == "__main__":
# abs __file__ path to ignore `__file__ == 'schema_slicer.py'` issue
config_tools_dir = os.path.abspath(os.path.join(os.path.dirname(os.path.abspath(__file__)), ".."))
schema_dir = os.path.join(config_tools_dir, "schema")
- configurator_build_dir = os.path.join(config_tools_dir, 'configurator', 'build')
- if not os.path.isdir(configurator_build_dir):
- os.mkdir(configurator_build_dir)
parser = argparse.ArgumentParser(description="Slice a given scenario schema by VM types and views")
- parser.add_argument("out", nargs="?", default=os.path.join(configurator_build_dir, "sliced.xsd"), help="Path where the output is placed")
+ parser.add_argument("out", nargs="?", default=os.path.join(schema_dir, "sliced.xsd"), help="Path where the output is placed")
parser.add_argument("--schema", default=os.path.join(schema_dir, "config.xsd"), help="the XML schema that defines the syntax of scenario XMLs")
args = parser.parse_args()
diff --git a/misc/config_tools/schema/__init__.py b/misc/config_tools/schema/__init__.py
new file mode 100644
index 000000000..6bb846f9e
--- /dev/null
+++ b/misc/config_tools/schema/__init__.py
@@ -0,0 +1,3 @@
+# Do Not Delete
+# This file be used in configurator's wasm python env
+# See: https://stackoverflow.com/questions/42791179/why-does-pip-install-not-include-my-package-data-files
diff --git a/misc/config_tools/schema/config.xsd b/misc/config_tools/schema/config.xsd
index da7b07dec..4b2bea796 100644
--- a/misc/config_tools/schema/config.xsd
+++ b/misc/config_tools/schema/config.xsd
@@ -1,6 +1,6 @@
diff --git a/misc/config_tools/setup.cfg b/misc/config_tools/setup.cfg
index 7408d88ea..287e3ba5a 100644
--- a/misc/config_tools/setup.cfg
+++ b/misc/config_tools/setup.cfg
@@ -19,7 +19,14 @@ classifiers =
package_dir =
= .
packages = find:
+include_package_data = True
python_requires = >=3.6
[options.packages.find]
where = .
+
+[options.package_data]
+schema = *, */*, */*/*, */*/*/*, */*/*/*/*
+launch_config = *, */*, */*/*, */*/*/*, */*/*/*/*
+data = *, */*, */*/*, */*/*/*, */*/*/*/*
+configurator = src/assets/schema/scenario.json
diff --git a/misc/packaging/gen_acrn_deb.py b/misc/packaging/gen_acrn_deb.py
index bb1bbd4a5..ce3826342 100644
--- a/misc/packaging/gen_acrn_deb.py
+++ b/misc/packaging/gen_acrn_deb.py
@@ -193,7 +193,8 @@ def create_configurator_deb(build_dir):
# get folder path
project_base = Path(__file__).parent.parent.parent
- configurator_path = Path(__file__).parent.parent / 'config_tools' / 'configurator'
+ config_tools_path = Path(__file__).parent.parent / 'config_tools'
+ configurator_path = config_tools_path / 'configurator'
scenario_config_path = project_base / "misc" / "config_tools" / "scenario_config"
deb_dir = configurator_path / 'src-tauri' / 'target' / 'release' / 'bundle' / 'deb'
@@ -204,6 +205,8 @@ def create_configurator_deb(build_dir):
# build command, if you update this, please update misc/config_tools/configurator/README.md#L55
add_cmd_list(cmd_list, 'python3 schema_slicer.py', scenario_config_path)
add_cmd_list(cmd_list, 'python3 converter.py', scenario_config_path / "jsonschema")
+ add_cmd_list(cmd_list, 'python3 -m build', config_tools_path)
+ add_cmd_list(cmd_list, 'python3 thirdLib/manager.py install', configurator_path)
add_cmd_list(cmd_list, 'yarn', configurator_path)
add_cmd_list(cmd_list, 'yarn build', configurator_path)
run_cmd_list(cmd_list)