@@ -56,14 +62,18 @@ _✨ 跨平台 Python 异步机器人框架 ✨_
文档
·
- 安装
+ 安装
·
- 开始使用
+ 开始使用
·
文档打不开?
-
+
+
+
+
+
## 简介
@@ -152,20 +162,18 @@ NoneBot2 不是 NoneBot1 的替代品。事实上,它们都在被积极的维
`NoneBot` 采用 `MIT` 许可证进行开源
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
- FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
- COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
- IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+```text
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+```
## 贡献
-如果你在使用过程中发现任何问题,可以 [提交 Issue](https://github.com/nonebot/nonebot2/issues/new) 或自行 Fork 修改后提交 Pull Request。
-
-如果你要提交 Pull Request,请确保你的代码风格和项目已有的代码保持一致,遵循 [PEP 8](https://www.python.org/dev/peps/pep-0008/) 与 [PEP 484](https://www.python.org/dev/peps/pep-0484/),变量命名清晰,有适当的注释与测试代码,**并且请以 `dev` 分支作为 Pull Request 目标分支**。
-
-
+请参考 [贡献指南](./CONTRIBUTING.md)
### 鸣谢
diff --git a/docs_build/Makefile b/docs_build/Makefile
deleted file mode 100644
index d4bb2cbb..00000000
--- a/docs_build/Makefile
+++ /dev/null
@@ -1,20 +0,0 @@
-# Minimal makefile for Sphinx documentation
-#
-
-# You can set these variables from the command line, and also
-# from the environment for the first two.
-SPHINXOPTS ?=
-SPHINXBUILD ?= sphinx-build
-SOURCEDIR = .
-BUILDDIR = _build
-
-# Put it first so that "make" without argument is like "make help".
-help:
- @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
-
-.PHONY: help Makefile
-
-# Catch-all target: route all unknown targets to Sphinx using the new
-# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
-%: Makefile
- @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
diff --git a/docs_build/README.rst b/docs_build/README.rst
deleted file mode 100644
index a7cb1be7..00000000
--- a/docs_build/README.rst
+++ /dev/null
@@ -1,12 +0,0 @@
-\-\-\-
-sidebar_position: 1
-id: index
-slug: /api
-\-\-\-
-
-NoneBot 模块
-===============
-
-.. automodule:: nonebot
- :members:
- :show-inheritance:
diff --git a/docs_build/adapters/README.rst b/docs_build/adapters/README.rst
deleted file mode 100644
index 41ca34f7..00000000
--- a/docs_build/adapters/README.rst
+++ /dev/null
@@ -1,43 +0,0 @@
-\-\-\-
-id: index
-slug: /api/adapters/
-\-\-\-
-
-NoneBot.adapters 模块
-=====================
-
-.. automodule:: nonebot.adapters
- :members:
- :private-members:
- :special-members: __init__
- :show-inheritance:
-
-.. automodule:: nonebot.adapters._adapter
- :members:
- :private-members:
- :special-members: __init__
- :show-inheritance:
-
-.. automodule:: nonebot.adapters._bot
- :members:
- :private-members:
- :special-members: __init__
- :show-inheritance:
-
-.. automodule:: nonebot.adapters._message
- :members:
- :private-members:
- :special-members: __init__
- :show-inheritance:
-
-.. automodule:: nonebot.adapters._event
- :members:
- :private-members:
- :special-members: __init__
- :show-inheritance:
-
-.. automodule:: nonebot.adapters._template
- :members:
- :private-members:
- :special-members: __init__
- :show-inheritance:
diff --git a/docs_build/conf.py b/docs_build/conf.py
deleted file mode 100644
index 76bd31fb..00000000
--- a/docs_build/conf.py
+++ /dev/null
@@ -1,82 +0,0 @@
-# Configuration file for the Sphinx documentation builder.
-#
-# This file only contains a selection of the most common options. For a full
-# list see the documentation:
-# https://www.sphinx-doc.org/en/master/usage/configuration.html
-
-# -- Path setup --------------------------------------------------------------
-
-# If extensions (or modules to document with autodoc) are in another directory,
-# add these directories to sys.path here. If the directory is relative to the
-# documentation root, use os.path.abspath to make it absolute, like shown here.
-#
-import os
-import sys
-
-sys.path.insert(0, os.path.abspath(os.path.dirname(os.path.dirname(__file__))))
-
-# -- Project information -----------------------------------------------------
-
-project = 'nonebot'
-copyright = '2020, richardchien'
-author = 'richardchien'
-
-# The short X.Y version
-version = '2.0.0'
-
-# The full version, including alpha/beta/rc tags
-release = '2.0.0'
-
-# -- General configuration ---------------------------------------------------
-
-# Add any Sphinx extension module names here, as strings. They can be
-# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
-# ones.
-extensions = [
- 'sphinx.ext.autodoc',
- 'sphinx.ext.viewcode',
- 'sphinx.ext.todo',
-]
-
-# Add any paths that contain templates here, relative to this directory.
-templates_path = ['_templates']
-
-# The language for content autogenerated by Sphinx. Refer to documentation
-# for a list of supported languages.
-#
-# This is also used if you do content translation via gettext catalogs.
-# Usually you set "language" from the command line for these cases.
-language = 'zh_CN'
-
-master_doc = "README"
-
-# List of patterns, relative to source directory, that match files and
-# directories to ignore when looking for source files.
-# This pattern also affects html_static_path and html_extra_path.
-exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store']
-
-# -- Options for HTML output -------------------------------------------------
-
-# The theme to use for HTML and HTML Help pages. See the documentation for
-# a list of builtin themes.
-#
-html_theme = 'alabaster'
-
-# Add any paths that contain custom static files (such as style sheets) here,
-# relative to this directory. They are copied after the builtin static files,
-# so a file named "default.css" will overwrite the builtin "default.css".
-html_static_path = ['_static']
-
-# html_baseurl = '/api/'
-
-# -- Extension configuration -------------------------------------------------
-
-# -- Options for autodoc extension ----------------------------------------------
-autodoc_default_options = {'member-order': 'bysource'}
-autodoc_inherit_docstrings = False
-autodoc_typehints = 'none'
-
-# -- Options for todo extension ----------------------------------------------
-
-# If true, `todo` and `todoList` produce output, else they produce nothing.
-todo_include_todos = True
diff --git a/docs_build/config.rst b/docs_build/config.rst
deleted file mode 100644
index 157e248a..00000000
--- a/docs_build/config.rst
+++ /dev/null
@@ -1,10 +0,0 @@
-\-\-\-
-sidebar_position: 2
-\-\-\-
-
-NoneBot.config 模块
-===================
-
-.. automodule:: nonebot.config
- :members: Env, Config
- :show-inheritance:
diff --git a/docs_build/dependencies.rst b/docs_build/dependencies.rst
deleted file mode 100644
index 00256bc5..00000000
--- a/docs_build/dependencies.rst
+++ /dev/null
@@ -1,11 +0,0 @@
-\-\-\-
-sidebar_position: 8
-\-\-\-
-
-NoneBot.dependencies 模块
-====================
-
-.. automodule:: nonebot.dependencies
- :members:
- :private-members:
- :show-inheritance:
diff --git a/docs_build/drivers/README.rst b/docs_build/drivers/README.rst
deleted file mode 100644
index 2d190e18..00000000
--- a/docs_build/drivers/README.rst
+++ /dev/null
@@ -1,13 +0,0 @@
-\-\-\-
-id: index
-slug: /api/drivers/
-\-\-\-
-
-NoneBot.drivers 模块
-=====================
-
-.. automodule:: nonebot.drivers
- :members:
- :private-members:
- :special-members: __init__
- :show-inheritance:
diff --git a/docs_build/drivers/aiohttp.rst b/docs_build/drivers/aiohttp.rst
deleted file mode 100644
index f49e2b60..00000000
--- a/docs_build/drivers/aiohttp.rst
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-NoneBot.drivers.aiohttp 模块
-=============================
-
-.. automodule:: nonebot.drivers.aiohttp
- :members:
- :private-members:
- :show-inheritance:
diff --git a/docs_build/drivers/fastapi.rst b/docs_build/drivers/fastapi.rst
deleted file mode 100644
index 49150f39..00000000
--- a/docs_build/drivers/fastapi.rst
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-NoneBot.drivers.fastapi 模块
-=============================
-
-.. automodule:: nonebot.drivers.fastapi
- :members:
- :private-members:
- :show-inheritance:
diff --git a/docs_build/drivers/httpx.rst b/docs_build/drivers/httpx.rst
deleted file mode 100644
index 357588e7..00000000
--- a/docs_build/drivers/httpx.rst
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-NoneBot.drivers.httpx 模块
-=============================
-
-.. automodule:: nonebot.drivers.httpx
- :members:
- :private-members:
- :show-inheritance:
diff --git a/docs_build/drivers/quart.rst b/docs_build/drivers/quart.rst
deleted file mode 100644
index acab2732..00000000
--- a/docs_build/drivers/quart.rst
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-NoneBot.drivers.quart 模块
-==========================
-
-.. automodule:: nonebot.drivers.quart
- :members:
- :private-members:
- :show-inheritance:
diff --git a/docs_build/drivers/websockets.rst b/docs_build/drivers/websockets.rst
deleted file mode 100644
index 0193de7b..00000000
--- a/docs_build/drivers/websockets.rst
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-NoneBot.drivers.websockets 模块
-=============================
-
-.. automodule:: nonebot.drivers.websockets
- :members:
- :private-members:
- :show-inheritance:
diff --git a/docs_build/exception.rst b/docs_build/exception.rst
deleted file mode 100644
index 619c5632..00000000
--- a/docs_build/exception.rst
+++ /dev/null
@@ -1,10 +0,0 @@
-\-\-\-
-sidebar_position: 12
-\-\-\-
-
-NoneBot.exception 模块
-======================
-
-.. automodule:: nonebot.exception
- :members:
- :show-inheritance:
diff --git a/docs_build/log.rst b/docs_build/log.rst
deleted file mode 100644
index 208befdf..00000000
--- a/docs_build/log.rst
+++ /dev/null
@@ -1,10 +0,0 @@
-\-\-\-
-sidebar_position: 9
-\-\-\-
-
-NoneBot.log 模块
-=================
-
-.. automodule:: nonebot.log
- :members:
- :show-inheritance:
diff --git a/docs_build/make.bat b/docs_build/make.bat
deleted file mode 100644
index 922152e9..00000000
--- a/docs_build/make.bat
+++ /dev/null
@@ -1,35 +0,0 @@
-@ECHO OFF
-
-pushd %~dp0
-
-REM Command file for Sphinx documentation
-
-if "%SPHINXBUILD%" == "" (
- set SPHINXBUILD=sphinx-build
-)
-set SOURCEDIR=.
-set BUILDDIR=_build
-
-if "%1" == "" goto help
-
-%SPHINXBUILD% >NUL 2>NUL
-if errorlevel 9009 (
- echo.
- echo.The 'sphinx-build' command was not found. Make sure you have Sphinx
- echo.installed, then set the SPHINXBUILD environment variable to point
- echo.to the full path of the 'sphinx-build' executable. Alternatively you
- echo.may add the Sphinx directory to PATH.
- echo.
- echo.If you don't have Sphinx installed, grab it from
- echo.http://sphinx-doc.org/
- exit /b 1
-)
-
-%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
-goto end
-
-:help
-%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
-
-:end
-popd
diff --git a/docs_build/matcher.rst b/docs_build/matcher.rst
deleted file mode 100644
index 1acbcc76..00000000
--- a/docs_build/matcher.rst
+++ /dev/null
@@ -1,12 +0,0 @@
-\-\-\-
-sidebar_position: 5
-\-\-\-
-
-NoneBot.matcher 模块
-====================
-
-.. automodule:: nonebot.matcher
- :members:
- :private-members:
- :special-members: __init__
- :show-inheritance:
diff --git a/docs_build/message.rst b/docs_build/message.rst
deleted file mode 100644
index 44583499..00000000
--- a/docs_build/message.rst
+++ /dev/null
@@ -1,10 +0,0 @@
-\-\-\-
-sidebar_position: 4
-\-\-\-
-
-NoneBot.message 模块
-======================
-
-.. automodule:: nonebot.message
- :members:
- :show-inheritance:
diff --git a/docs_build/permission.rst b/docs_build/permission.rst
deleted file mode 100644
index 216bd2c7..00000000
--- a/docs_build/permission.rst
+++ /dev/null
@@ -1,11 +0,0 @@
-\-\-\-
-sidebar_position: 7
-\-\-\-
-
-NoneBot.permission 模块
-=======================
-
-.. automodule:: nonebot.permission
- :members:
- :show-inheritance:
- :special-members:
diff --git a/docs_build/plugin.rst b/docs_build/plugin.rst
deleted file mode 100644
index 23f888ed..00000000
--- a/docs_build/plugin.rst
+++ /dev/null
@@ -1,31 +0,0 @@
-\-\-\-
-sidebar_position: 3
-\-\-\-
-
-NoneBot.plugin 模块
-====================
-
-.. automodule:: nonebot.plugin
- :members:
- :show-inheritance:
- :special-members: __init__
-
-.. automodule:: nonebot.plugin.plugin
- :members:
- :show-inheritance:
- :special-members: __init__
-
-.. automodule:: nonebot.plugin.on
- :members:
- :show-inheritance:
- :special-members: __init__
-
-.. automodule:: nonebot.plugin.load
- :members:
- :show-inheritance:
- :special-members: __init__
-
-.. automodule:: nonebot.plugin.export
- :members:
- :show-inheritance:
- :special-members: __init__
diff --git a/docs_build/rule.rst b/docs_build/rule.rst
deleted file mode 100644
index f51d539d..00000000
--- a/docs_build/rule.rst
+++ /dev/null
@@ -1,11 +0,0 @@
-\-\-\-
-sidebar_position: 6
-\-\-\-
-
-NoneBot.rule 模块
-====================
-
-.. automodule:: nonebot.rule
- :members:
- :special-members:
- :show-inheritance:
diff --git a/docs_build/typing.rst b/docs_build/typing.rst
deleted file mode 100644
index fb398047..00000000
--- a/docs_build/typing.rst
+++ /dev/null
@@ -1,10 +0,0 @@
-\-\-\-
-sidebar_position: 11
-\-\-\-
-
-NoneBot.typing 模块
-===================
-
-.. automodule:: nonebot.typing
- :members:
- :show-inheritance:
diff --git a/docs_build/utils.rst b/docs_build/utils.rst
deleted file mode 100644
index e3fae252..00000000
--- a/docs_build/utils.rst
+++ /dev/null
@@ -1,10 +0,0 @@
-\-\-\-
-sidebar_position: 10
-\-\-\-
-
-NoneBot.utils 模块
-==================
-
-.. automodule:: nonebot.utils
- :members:
- :show-inheritance:
diff --git a/nonebot/__init__.py b/nonebot/__init__.py
index 8d2a78f3..89fb4850 100644
--- a/nonebot/__init__.py
+++ b/nonebot/__init__.py
@@ -1,31 +1,37 @@
-"""
-快捷导入
-========
+"""本模块主要定义了 NoneBot 启动所需函数,供 bot 入口文件调用。
-为方便使用,``nonebot`` 模块从子模块导入了部分内容
+## 快捷导入
-- ``on_message`` => ``nonebot.plugin.on_message``
-- ``on_notice`` => ``nonebot.plugin.on_notice``
-- ``on_request`` => ``nonebot.plugin.on_request``
-- ``on_metaevent`` => ``nonebot.plugin.on_metaevent``
-- ``on_startswith`` => ``nonebot.plugin.on_startswith``
-- ``on_endswith`` => ``nonebot.plugin.on_endswith``
-- ``on_keyword`` => ``nonebot.plugin.on_keyword``
-- ``on_command`` => ``nonebot.plugin.on_command``
-- ``on_shell_command`` => ``nonebot.plugin.on_shell_command``
-- ``on_regex`` => ``nonebot.plugin.on_regex``
-- ``CommandGroup`` => ``nonebot.plugin.CommandGroup``
-- ``Matchergroup`` => ``nonebot.plugin.MatcherGroup``
-- ``load_plugin`` => ``nonebot.plugin.load_plugin``
-- ``load_plugins`` => ``nonebot.plugin.load_plugins``
-- ``load_all_plugins`` => ``nonebot.plugin.load_all_plugins``
-- ``load_from_json`` => ``nonebot.plugin.load_from_json``
-- ``load_from_toml`` => ``nonebot.plugin.load_from_toml``
-- ``load_builtin_plugins`` => ``nonebot.plugin.load_builtin_plugins``
-- ``get_plugin`` => ``nonebot.plugin.get_plugin``
-- ``get_loaded_plugins`` => ``nonebot.plugin.get_loaded_plugins``
-- ``export`` => ``nonebot.plugin.export``
-- ``require`` => ``nonebot.plugin.require``
+为方便使用,本模块从子模块导入了部分内容,以下内容可以直接通过本模块导入:
+
+- `on` => {ref}``on` `
+- `on_metaevent` => {ref}``on_metaevent` `
+- `on_message` => {ref}``on_message` `
+- `on_notice` => {ref}``on_notice` `
+- `on_request` => {ref}``on_request` `
+- `on_startswith` => {ref}``on_startswith` `
+- `on_endswith` => {ref}``on_endswith` `
+- `on_keyword` => {ref}``on_keyword` `
+- `on_command` => {ref}``on_command` `
+- `on_shell_command` => {ref}``on_shell_command` `
+- `on_regex` => {ref}``on_regex` `
+- `CommandGroup` => {ref}``CommandGroup` `
+- `Matchergroup` => {ref}``MatcherGroup` `
+- `load_plugin` => {ref}``load_plugin` `
+- `load_plugins` => {ref}``load_plugins` `
+- `load_all_plugins` => {ref}``load_all_plugins` `
+- `load_from_json` => {ref}``load_from_json` `
+- `load_from_toml` => {ref}``load_from_toml` `
+- `load_builtin_plugin` => {ref}``load_builtin_plugin` `
+- `load_builtin_plugins` => {ref}``load_builtin_plugins` `
+- `get_plugin` => {ref}``get_plugin` `
+- `get_loaded_plugins` => {ref}``get_loaded_plugins` `
+- `export` => {ref}``export` `
+- `require` => {ref}``require` `
+
+FrontMatter:
+ sidebar_position: 0
+ description: nonebot 模块
"""
import importlib
@@ -51,25 +57,20 @@ _driver: Optional[Driver] = None
def get_driver() -> Driver:
- """
- :说明:
+ """获取全局 {ref}`nonebot.drivers.Driver` 实例。
- 获取全局 Driver 对象。可用于在计划任务的回调中获取当前 Driver 对象。
+ 可用于在计划任务的回调等情形中获取当前 {ref}`nonebot.drivers.Driver` 实例。
- :返回:
+ 返回:
+ 全局 {ref}`nonebot.drivers.Driver` 对象
- * ``Driver``: 全局 Driver 对象
-
- :异常:
-
- * ``ValueError``: 全局 Driver 对象尚未初始化 (nonebot.init 尚未调用)
-
- :用法:
-
- .. code-block:: python
+ 异常:
+ ValueError: 全局 {ref}`nonebot.drivers.Driver` 对象尚未初始化 ({ref}`nonebot.init ` 尚未调用)
+ 用法:
+ ```python
driver = nonebot.get_driver()
-
+ ```
"""
if _driver is None:
raise ValueError("NoneBot has not been initialized.")
@@ -77,25 +78,19 @@ def get_driver() -> Driver:
def get_app() -> Any:
- """
- :说明:
+ """获取全局 {ref}`nonebot.drivers.ReverseDriver` 对应的 Server App 对象。
- 获取全局 Driver 对应 Server App 对象。
+ 返回:
+ Server App 对象
- :返回:
-
- * ``Any``: Server App 对象
-
- :异常:
-
- * ``ValueError``: 全局 Driver 对象尚未初始化 (nonebot.init 尚未调用)
-
- :用法:
-
- .. code-block:: python
+ 异常:
+ AssertionError: 全局 Driver 对象不是 {ref}`nonebot.drivers.ReverseDriver` 类型
+ ValueError: 全局 {ref}`nonebot.drivers.Driver` 对象尚未初始化 ({ref}`nonebot.init ` 尚未调用)
+ 用法:
+ ```python
app = nonebot.get_app()
-
+ ```
"""
driver = get_driver()
assert isinstance(
@@ -105,25 +100,19 @@ def get_app() -> Any:
def get_asgi() -> Any:
- """
- :说明:
+ """获取全局 {ref}`nonebot.drivers.ReverseDriver` 对应 [ASGI](https://asgi.readthedocs.io/) 对象。
- 获取全局 Driver 对应 Asgi 对象。
+ 返回:
+ ASGI 对象
- :返回:
-
- * ``Any``: Asgi 对象
-
- :异常:
-
- * ``ValueError``: 全局 Driver 对象尚未初始化 (nonebot.init 尚未调用)
-
- :用法:
-
- .. code-block:: python
+ 异常:
+ AssertionError: 全局 Driver 对象不是 {ref}`nonebot.drivers.ReverseDriver` 类型
+ ValueError: 全局 {ref}`nonebot.drivers.Driver` 对象尚未初始化 ({ref}`nonebot.init ` 尚未调用)
+ 用法:
+ ```python
asgi = nonebot.get_asgi()
-
+ ```
"""
driver = get_driver()
assert isinstance(
@@ -133,32 +122,28 @@ def get_asgi() -> Any:
def get_bot(self_id: Optional[str] = None) -> Bot:
- """
- :说明:
+ """获取一个连接到 NoneBot 的 {ref}`nonebot.adapters.Bot` 对象。
- 当提供 self_id 时,此函数是 get_bots()[self_id] 的简写;当不提供时,返回一个 Bot。
+ 当提供 `self_id` 时,此函数是 `get_bots()[self_id]` 的简写;
+ 当不提供时,返回一个 {ref}`nonebot.adapters.Bot`。
- :参数:
+ 参数:
+ self_id: 用来识别 {ref}`nonebot.adapters.Bot` 的 {ref}`nonebot.adapters.Bot.self_id` 属性
- * ``self_id: Optional[str]``: 用来识别 Bot 的 ID
+ 返回:
+ {ref}`nonebot.adapters.Bot` 对象
- :返回:
+ 异常:
+ KeyError: 对应 self_id 的 Bot 不存在
+ ValueError: 没有传入 self_id 且没有 Bot 可用
+ ValueError: 全局 {ref}`nonebot.drivers.Driver` 对象尚未初始化 ({ref}`nonebot.init ` 尚未调用)
- * ``Bot``: Bot 对象
-
- :异常:
-
- * ``KeyError``: 对应 ID 的 Bot 不存在
- * ``ValueError``: 全局 Driver 对象尚未初始化 (nonebot.init 尚未调用)
- * ``ValueError``: 没有传入 ID 且没有 Bot 可用
-
- :用法:
-
- .. code-block:: python
-
- assert nonebot.get_bot('12345') == nonebot.get_bots()['12345']
+ 用法:
+ ```python
+ assert nonebot.get_bot("12345") == nonebot.get_bots()["12345"]
another_unspecified_bot = nonebot.get_bot()
+ ```
"""
bots = get_bots()
if self_id is not None:
@@ -171,25 +156,18 @@ def get_bot(self_id: Optional[str] = None) -> Bot:
def get_bots() -> Dict[str, Bot]:
- """
- :说明:
+ """获取所有连接到 NoneBot 的 {ref}`nonebot.adapters.Bot` 对象。
- 获取所有通过 ws 连接 NoneBot 的 Bot 对象。
+ 返回:
+ 一个以 {ref}`nonebot.adapters.Bot.self_id` 为键,{ref}`nonebot.adapters.Bot` 对象为值的字典
- :返回:
-
- * ``Dict[str, Bot]``: 一个以字符串 ID 为键,Bot 对象为值的字典
-
- :异常:
-
- * ``ValueError``: 全局 Driver 对象尚未初始化 (nonebot.init 尚未调用)
-
- :用法:
-
- .. code-block:: python
+ 异常:
+ ValueError: 全局 {ref}`nonebot.drivers.Driver` 对象尚未初始化 ({ref}`nonebot.init ` 尚未调用)
+ 用法:
+ ```python
bots = nonebot.get_bots()
-
+ ```
"""
driver = get_driver()
return driver.bots
@@ -226,31 +204,21 @@ def _resolve_combine_expr(obj_str: str) -> Type[Driver]:
return combine_driver(DriverClass, *mixins)
-def init(*, _env_file: Optional[str] = None, **kwargs):
- """
- :说明:
+def init(*, _env_file: Optional[str] = None, **kwargs: Any) -> None:
+ """初始化 NoneBot 以及 全局 {ref}`nonebot.drivers.Driver` 对象。
- 初始化 NoneBot 以及 全局 Driver 对象。
+ NoneBot 将会从 .env 文件中读取环境信息,并使用相应的 env 文件配置。
- NoneBot 将会从 .env 文件中读取环境信息,并使用相应的 env 文件配置。
+ 也可以传入自定义的 `_env_file` 来指定 NoneBot 从该文件读取配置。
- 你也可以传入自定义的 _env_file 来指定 NoneBot 从该文件读取配置。
-
- :参数:
-
- * ``_env_file: Optional[str]``: 配置文件名,默认从 .env.{env_name} 中读取配置
- * ``**kwargs``: 任意变量,将会存储到 Config 对象里
-
- :返回:
-
- - ``None``
-
- :用法:
-
- .. code-block:: python
+ 参数:
+ _env_file: 配置文件名,默认从 `.env.{env_name}` 中读取配置
+ kwargs: 任意变量,将会存储到 {ref}`nonebot.drivers.Driver.config` 对象里
+ 用法:
+ ```python
nonebot.init(database=Database(...))
-
+ ```
"""
global _driver
if not _driver:
@@ -275,32 +243,22 @@ def init(*, _env_file: Optional[str] = None, **kwargs):
def run(*args: Any, **kwargs: Any) -> None:
- """
- :说明:
+ """启动 NoneBot,即运行全局 {ref}`nonebot.drivers.Driver` 对象。
- 启动 NoneBot,即运行全局 Driver 对象。
-
- :参数:
-
- * ``*args``: 传入 Driver.run 的位置参数
- * ``**kwargs``: 传入 Driver.run 的命名参数
-
- :返回:
-
- - ``None``
-
- :用法:
-
- .. code-block:: python
+ 参数:
+ args: 传入 {ref}`nonebot.drivers.Driver.run` 的位置参数
+ kwargs: 传入 {ref}`nonebot.drivers.Driver.run` 的命名参数
+ 用法:
+ ```python
nonebot.run(host="127.0.0.1", port=8080)
-
+ ```
"""
logger.success("Running NoneBot...")
get_driver().run(*args, **kwargs)
-import nonebot.params as params
+from nonebot.plugin import on as on
from nonebot.plugin import export as export
from nonebot.plugin import require as require
from nonebot.plugin import on_regex as on_regex
@@ -322,4 +280,7 @@ from nonebot.plugin import load_from_toml as load_from_toml
from nonebot.plugin import load_all_plugins as load_all_plugins
from nonebot.plugin import on_shell_command as on_shell_command
from nonebot.plugin import get_loaded_plugins as get_loaded_plugins
+from nonebot.plugin import load_builtin_plugin as load_builtin_plugin
from nonebot.plugin import load_builtin_plugins as load_builtin_plugins
+
+__autodoc__ = {"internal": False}
diff --git a/nonebot/adapters/__init__.py b/nonebot/adapters/__init__.py
index 2bae9974..0adff3e6 100644
--- a/nonebot/adapters/__init__.py
+++ b/nonebot/adapters/__init__.py
@@ -1,8 +1,10 @@
-"""
-协议适配基类
-============
+"""本模块定义了协议适配基类,各协议请继承以下基类。
-各协议请继承以下基类,并使用 ``driver.register_adapter`` 注册适配器
+使用 {ref}`nonebot.drivers.Driver.register_adapter` 注册适配器。
+
+FrontMatter:
+ sidebar_position: 0
+ description: nonebot.adapters 模块
"""
from typing import Iterable
@@ -20,9 +22,18 @@ except ImportError:
except Exception:
pass
-from ._bot import Bot as Bot
-from ._event import Event as Event
-from ._adapter import Adapter as Adapter
-from ._message import Message as Message
-from ._message import MessageSegment as MessageSegment
-from ._template import MessageTemplate as MessageTemplate
+from nonebot.internal.adapter import Bot as Bot
+from nonebot.internal.adapter import Event as Event
+from nonebot.internal.adapter import Adapter as Adapter
+from nonebot.internal.adapter import Message as Message
+from nonebot.internal.adapter import MessageSegment as MessageSegment
+from nonebot.internal.adapter import MessageTemplate as MessageTemplate
+
+__autodoc__ = {
+ "Bot": True,
+ "Event": True,
+ "Adapter": True,
+ "Message": True,
+ "MessageSegment": True,
+ "MessageTemplate": True,
+}
diff --git a/nonebot/adapters/_event.py b/nonebot/adapters/_event.py
deleted file mode 100644
index 933a7085..00000000
--- a/nonebot/adapters/_event.py
+++ /dev/null
@@ -1,137 +0,0 @@
-import abc
-
-from pydantic import BaseModel
-
-from ._message import Message
-from nonebot.utils import DataclassEncoder
-
-
-class Event(abc.ABC, BaseModel):
- """Event 基类。提供获取关键信息的方法,其余信息可直接获取。"""
-
- class Config:
- extra = "allow"
- json_encoders = {Message: DataclassEncoder}
-
- @abc.abstractmethod
- def get_type(self) -> str:
- """
- :说明:
-
- 获取事件类型的方法,类型通常为 NoneBot 内置的四种类型。
-
- :返回:
-
- * ``Literal["message", "notice", "request", "meta_event"]``
- * 其他自定义 ``str``
- """
- raise NotImplementedError
-
- @abc.abstractmethod
- def get_event_name(self) -> str:
- """
- :说明:
-
- 获取事件名称的方法。
-
- :返回:
-
- * ``str``
- """
- raise NotImplementedError
-
- @abc.abstractmethod
- def get_event_description(self) -> str:
- """
- :说明:
-
- 获取事件描述的方法,通常为事件具体内容。
-
- :返回:
-
- * ``str``
- """
- raise NotImplementedError
-
- def __str__(self) -> str:
- return f"[{self.get_event_name()}]: {self.get_event_description()}"
-
- def get_log_string(self) -> str:
- """
- :说明:
-
- 获取事件日志信息的方法,通常你不需要修改这个方法,只有当希望 NoneBot 隐藏该事件日志时,可以抛出 ``NoLogException`` 异常。
-
- :返回:
-
- * ``str``
-
- :异常:
-
- - ``NoLogException``
- """
- return f"[{self.get_event_name()}]: {self.get_event_description()}"
-
- @abc.abstractmethod
- def get_user_id(self) -> str:
- """
- :说明:
-
- 获取事件主体 id 的方法,通常是用户 id 。
-
- :返回:
-
- * ``str``
- """
- raise NotImplementedError
-
- @abc.abstractmethod
- def get_session_id(self) -> str:
- """
- :说明:
-
- 获取会话 id 的方法,用于判断当前事件属于哪一个会话,通常是用户 id、群组 id 组合。
-
- :返回:
-
- * ``str``
- """
- raise NotImplementedError
-
- @abc.abstractmethod
- def get_message(self) -> "Message":
- """
- :说明:
-
- 获取事件消息内容的方法。
-
- :返回:
-
- * ``Message``
- """
- raise NotImplementedError
-
- def get_plaintext(self) -> str:
- """
- :说明:
-
- 获取消息纯文本的方法,通常不需要修改,默认通过 ``get_message().extract_plain_text`` 获取。
-
- :返回:
-
- * ``str``
- """
- return self.get_message().extract_plain_text()
-
- @abc.abstractmethod
- def is_tome(self) -> bool:
- """
- :说明:
-
- 获取事件是否与机器人有关的方法。
-
- :返回:
-
- * ``bool``
- """
- raise NotImplementedError
diff --git a/nonebot/adapters/_message.py b/nonebot/adapters/_message.py
deleted file mode 100644
index 3175bed8..00000000
--- a/nonebot/adapters/_message.py
+++ /dev/null
@@ -1,232 +0,0 @@
-import abc
-from copy import deepcopy
-from dataclasses import field, asdict, dataclass
-from typing import (
- Any,
- Dict,
- List,
- Type,
- Union,
- Generic,
- Mapping,
- TypeVar,
- Iterable,
-)
-
-from ._template import MessageTemplate
-
-T = TypeVar("T")
-TMS = TypeVar("TMS", covariant=True)
-TM = TypeVar("TM", bound="Message")
-
-
-@dataclass
-class MessageSegment(Mapping, abc.ABC, Generic[TM]):
- """消息段基类"""
-
- type: str
- """
- - 类型: ``str``
- - 说明: 消息段类型
- """
- data: Dict[str, Any] = field(default_factory=lambda: {})
- """
- - 类型: ``Dict[str, Union[str, list]]``
- - 说明: 消息段数据
- """
-
- @classmethod
- @abc.abstractmethod
- def get_message_class(cls) -> Type[TM]:
- raise NotImplementedError
-
- @abc.abstractmethod
- def __str__(self) -> str:
- """该消息段所代表的 str,在命令匹配部分使用"""
- raise NotImplementedError
-
- def __len__(self) -> int:
- return len(str(self))
-
- def __ne__(self: T, other: T) -> bool:
- return not self == other
-
- def __add__(self, other: Union[str, Mapping, Iterable[Mapping]]) -> TM:
- return self.get_message_class()(self) + other # type: ignore
-
- def __radd__(self, other: Union[str, Mapping, Iterable[Mapping]]) -> TM:
- return self.get_message_class()(other) + self # type: ignore
-
- def __getitem__(self, key: str):
- return getattr(self, key)
-
- def __setitem__(self, key: str, value: Any):
- return setattr(self, key, value)
-
- def __iter__(self):
- yield from asdict(self).keys()
-
- def __contains__(self, key: Any) -> bool:
- return key in asdict(self).keys()
-
- def get(self, key: str, default: Any = None):
- return getattr(self, key, default)
-
- def keys(self):
- return asdict(self).keys()
-
- def values(self):
- return asdict(self).values()
-
- def items(self):
- return asdict(self).items()
-
- def copy(self: T) -> T:
- return deepcopy(self)
-
- @abc.abstractmethod
- def is_text(self) -> bool:
- raise NotImplementedError
-
-
-class Message(List[TMS], abc.ABC):
- """消息数组"""
-
- def __init__(
- self: TM,
- message: Union[str, None, Mapping, Iterable[Mapping], TMS, TM, Any] = None,
- *args,
- **kwargs,
- ):
- """
- :参数:
-
- * ``message: Union[str, list, dict, MessageSegment, Message, Any]``: 消息内容
- """
- super().__init__(*args, **kwargs)
- if message is None:
- return
- elif isinstance(message, Message):
- self.extend(message)
- elif isinstance(message, MessageSegment):
- self.append(message)
- else:
- self.extend(self._construct(message))
-
- @classmethod
- def template(cls: Type[TM], format_string: Union[str, TM]) -> MessageTemplate[TM]:
- """
- :说明:
-
- 根据创建消息模板, 用法和 ``str.format`` 大致相同, 但是可以输出消息对象, 并且支持以 ``Message`` 对象作为消息模板
- 并且提供了拓展的格式化控制符, 可以用适用于该消息类型的 ``MessageSegment`` 的工厂方法创建消息
-
- :示例:
-
- .. code-block:: python
-
- >>> Message.template("{} {}").format("hello", "world") # 基础演示
- Message(MessageSegment(type='text', data={'text': 'hello world'}))
- >>> Message.template("{} {}").format(MessageSegment.image("file///..."), "world") # 支持消息段等对象
- Message(MessageSegment(type='image', data={'file': 'file///...'}), MessageSegment(type='text', data={'text': 'world'}))
- >>> Message.template( # 支持以Message对象作为消息模板
- ... MessageSegment.text('test {event.user_id}') + MessageSegment.face(233) +
- ... MessageSegment.text('test {event.message}')).format(event={'user_id':123456, 'message':'hello world'})
- Message(MessageSegment(type='text', data={'text': 'test 123456'}),
- MessageSegment(type='face', data={'face': 233}),
- MessageSegment(type='text', data={'text': 'test hello world'}))
- >>> Message.template("{link:image}").format(link='https://...') # 支持拓展格式化控制符
- Message(MessageSegment(type='image', data={'file': 'https://...'}))
-
- :参数:
-
- * ``format_string: str``: 格式化字符串
-
- :返回:
-
- - ``MessageFormatter[TM]``: 消息格式化器
- """
- return MessageTemplate(format_string, cls)
-
- @classmethod
- @abc.abstractmethod
- def get_segment_class(cls) -> Type[TMS]:
- raise NotImplementedError
-
- def __str__(self):
- return "".join(str(seg) for seg in self)
-
- @classmethod
- def __get_validators__(cls):
- yield cls._validate
-
- @classmethod
- def _validate(cls, value):
- return cls(value)
-
- @staticmethod
- @abc.abstractmethod
- def _construct(msg: Union[str, Mapping, Iterable[Mapping], Any]) -> Iterable[TMS]:
- raise NotImplementedError
-
- def __add__(self: TM, other: Union[str, Mapping, Iterable[Mapping]]) -> TM:
- result = self.copy()
- result += other
- return result
-
- def __radd__(self: TM, other: Union[str, Mapping, Iterable[Mapping]]) -> TM:
- result = self.__class__(other) # type: ignore
- return result + self
-
- def __iadd__(self: TM, other: Union[str, Mapping, Iterable[Mapping]]) -> TM:
- if isinstance(other, MessageSegment):
- self.append(other)
- elif isinstance(other, Message):
- self.extend(other)
- else:
- self.extend(self._construct(other))
- return self
-
- def append(self: TM, obj: Union[str, TMS]) -> TM:
- """
- :说明:
-
- 添加一个消息段到消息数组末尾
-
- :参数:
-
- * ``obj: Union[str, MessageSegment]``: 要添加的消息段
- """
- if isinstance(obj, MessageSegment):
- super(Message, self).append(obj)
- elif isinstance(obj, str):
- self.extend(self._construct(obj))
- else:
- raise ValueError(f"Unexpected type: {type(obj)} {obj}")
- return self
-
- def extend(self: TM, obj: Union[TM, Iterable[TMS]]) -> TM:
- """
- :说明:
-
- 拼接一个消息数组或多个消息段到消息数组末尾
-
- :参数:
-
- * ``obj: Union[Message, Iterable[MessageSegment]]``: 要添加的消息数组
- """
- for segment in obj:
- self.append(segment)
- return self
-
- def copy(self: TM) -> TM:
- return deepcopy(self)
-
- def extract_plain_text(self: "Message[MessageSegment]") -> str:
- """
- :说明:
-
- 提取消息内纯文本消息
- """
-
- return "".join(str(seg) for seg in self if seg.is_text())
diff --git a/nonebot/config.py b/nonebot/config.py
index 7421457e..ef9e8fb1 100644
--- a/nonebot/config.py
+++ b/nonebot/config.py
@@ -1,23 +1,18 @@
-"""
-配置
-====
+"""本模块定义了 NoneBot 本身运行所需的配置项。
-NoneBot 使用 `pydantic`_ 以及 `python-dotenv`_ 来读取配置。
+NoneBot 使用 [`pydantic`](https://pydantic-docs.helpmanual.io/) 以及 [`python-dotenv`](https://saurabh-kumar.com/python-dotenv/) 来读取配置。
-配置项需符合特殊格式或 json 序列化格式。详情见 `pydantic Field Type`_ 文档。
+配置项需符合特殊格式或 json 序列化格式。详情见 [`pydantic Field Type`](https://pydantic-docs.helpmanual.io/usage/types/) 文档。
-.. _pydantic:
- https://pydantic-docs.helpmanual.io/
-.. _python-dotenv:
- https://saurabh-kumar.com/python-dotenv/
-.. _pydantic Field Type:
- https://pydantic-docs.helpmanual.io/usage/types/
+FrontMatter:
+ sidebar_position: 1
+ description: nonebot.config 模块
"""
import os
from pathlib import Path
from datetime import timedelta
from ipaddress import IPv4Address
-from typing import Any, Set, Dict, Tuple, Union, Mapping, Optional
+from typing import TYPE_CHECKING, Any, Set, Dict, Tuple, Union, Mapping, Optional
from pydantic import BaseSettings, IPvAnyAddress
from pydantic.env_settings import (
@@ -105,9 +100,10 @@ class CustomEnvSettings(EnvSettingsSource):
class BaseConfig(BaseSettings):
- # dummy getattr for pylance checking, actually not used
- def __getattr__(self, name: str) -> Any: # pragma: no cover
- return self.__dict__.get(name)
+ if TYPE_CHECKING:
+ # dummy getattr for pylance checking, actually not used
+ def __getattr__(self, name: str) -> Any: # pragma: no cover
+ return self.__dict__.get(name)
class Config:
@classmethod
@@ -129,19 +125,15 @@ class BaseConfig(BaseSettings):
class Env(BaseConfig):
- """
- 运行环境配置。大小写不敏感。
+ """运行环境配置。大小写不敏感。
- 将会从 ``nonebot.init 参数`` > ``环境变量`` > ``.env 环境配置文件`` 的优先级读取配置。
+ 将会从 `环境变量` > `.env 环境配置文件` 的优先级读取环境信息。
"""
environment: str = "prod"
- """
- - **类型**: ``str``
- - **默认值**: ``"prod"``
+ """当前环境名。
- :说明:
- 当前环境名。 NoneBot 将从 ``.env.{environment}`` 文件中加载配置。
+ NoneBot 将从 `.env.{environment}` 文件中加载配置。
"""
class Config:
@@ -150,138 +142,85 @@ class Env(BaseConfig):
class Config(BaseConfig):
- """
- NoneBot 主要配置。大小写不敏感。
+ """NoneBot 主要配置。大小写不敏感。
- 除了 NoneBot 的配置项外,还可以自行添加配置项到 ``.env.{environment}`` 文件中。
- 这些配置将会在 json 反序列化后一起带入 ``Config`` 类中。
+ 除了 NoneBot 的配置项外,还可以自行添加配置项到 `.env.{environment}` 文件中。
+ 这些配置将会在 json 反序列化后一起带入 `Config` 类中。
+
+ 配置方法参考: [配置](https://v2.nonebot.dev/docs/tutorial/configuration)
"""
- _common_config: dict
- _env_file: str
+ _env_file: str = ".env"
+ _common_config: Dict[str, Any] = {}
# nonebot configs
driver: str = "~fastapi"
- """
- - **类型**: ``str``
- - **默认值**: ``"~fastapi"``
+ """NoneBot 运行所使用的 `Driver` 。继承自 {ref}`nonebot.drivers.Driver` 。
- :说明:
+ 配置格式为 `[:][+[:]]*`。
- NoneBot 运行所使用的 ``Driver`` 。继承自 ``nonebot.drivers.Driver`` 。
-
- 配置格式为 ``[:][+[:]]*``。
-
- ``~`` 为 ``nonebot.drivers.`` 的缩写。
+ `~` 为 `nonebot.drivers.` 的缩写。
"""
host: IPvAnyAddress = IPv4Address("127.0.0.1") # type: ignore
- """
- - **类型**: ``IPvAnyAddress``
- - **默认值**: ``127.0.0.1``
-
- :说明:
-
- NoneBot 的 HTTP 和 WebSocket 服务端监听的 IP/主机名。
- """
+ """NoneBot {ref}`nonebot.drivers.ReverseDriver` 服务端监听的 IP/主机名。"""
port: int = 8080
- """
- - **类型**: ``int``
- - **默认值**: ``8080``
-
- :说明:
-
- NoneBot 的 HTTP 和 WebSocket 服务端监听的端口。
- """
+ """NoneBot {ref}`nonebot.drivers.ReverseDriver` 服务端监听的端口。"""
log_level: Union[int, str] = "INFO"
- """
- - **类型**: ``Union[int, str]``
- - **默认值**: ``INFO``
+ """NoneBot 日志输出等级,可以为 `int` 类型等级或等级名称
- :说明:
+ 参考 [`loguru 日志等级`](https://loguru.readthedocs.io/en/stable/api/logger.html#levels)。
- 配置 NoneBot 日志输出等级,可以为 ``int`` 类型等级或等级名称,参考 `loguru 日志等级`_。
-
- :示例:
-
- .. code-block:: default
+ :::tip 提示
+ 日志等级名称应为大写,如 `INFO`。
+ :::
+ 用法:
+ ```conf
LOG_LEVEL=25
LOG_LEVEL=INFO
-
- .. _loguru 日志等级:
- https://loguru.readthedocs.io/en/stable/api/logger.html#levels
+ ```
"""
# bot connection configs
api_timeout: Optional[float] = 30.0
- """
- - **类型**: ``Optional[float]``
- - **默认值**: ``30.``
-
- :说明:
-
- API 请求超时时间,单位: 秒。
- """
+ """API 请求超时时间,单位: 秒。"""
# bot runtime configs
superusers: Set[str] = set()
- """
- - **类型**: ``Set[str]``
- - **默认值**: ``set()``
-
- :说明:
-
- 机器人超级用户。
-
- :示例:
-
- .. code-block:: default
+ """机器人超级用户。
+ 用法:
+ ```conf
SUPERUSERS=["12345789"]
+ ```
"""
nickname: Set[str] = set()
- """
- - **类型**: ``Set[str]``
- - **默认值**: ``set()``
-
- :说明:
-
- 机器人昵称。
- """
+ """机器人昵称。"""
command_start: Set[str] = {"/"}
- """
- - **类型**: ``Set[str]``
- - **默认值**: ``{"/"}``
+ """命令的起始标记,用于判断一条消息是不是命令。
- :说明:
-
- 命令的起始标记,用于判断一条消息是不是命令。
+ 用法:
+ ```conf
+ COMMAND_START=["/", ""]
+ ```
"""
command_sep: Set[str] = {"."}
- """
- - **类型**: ``Set[str]``
- - **默认值**: ``{"."}``
+ """命令的分隔标记,用于将文本形式的命令切分为元组(实际的命令名)。
- :说明:
-
- 命令的分隔标记,用于将文本形式的命令切分为元组(实际的命令名)。
+ 用法:
+ ```conf
+ COMMAND_SEP=["."]
+ ```
"""
session_expire_timeout: timedelta = timedelta(minutes=2)
- """
- - **类型**: ``timedelta``
- - **默认值**: ``timedelta(minutes=2)``
-
- :说明:
-
- 等待用户回复的超时时间。
-
- :示例:
-
- .. code-block:: default
+ """等待用户回复的超时时间。
+ 用法:
+ ```conf
SESSION_EXPIRE_TIMEOUT=120 # 单位: 秒
SESSION_EXPIRE_TIMEOUT=[DD ][HH:MM]SS[.ffffff]
SESSION_EXPIRE_TIMEOUT=P[DD]DT[HH]H[MM]M[SS]S # ISO 8601
+ ```
"""
# adapter configs
@@ -294,3 +233,9 @@ class Config(BaseConfig):
class Config:
extra = "allow"
env_file = ".env.prod"
+
+
+__autodoc__ = {
+ "CustomEnvSettings": False,
+ "BaseConfig": False,
+}
diff --git a/nonebot/consts.py b/nonebot/consts.py
index 11e3feaa..8672bd48 100644
--- a/nonebot/consts.py
+++ b/nonebot/consts.py
@@ -1,20 +1,42 @@
+"""本模块包含了 NoneBot 事件处理过程中使用到的常量。
+
+FrontMatter:
+ sidebar_position: 9
+ description: nonebot.consts 模块
+"""
+from typing_extensions import Literal
+
# used by Matcher
-RECEIVE_KEY = "_receive_{id}"
-LAST_RECEIVE_KEY = "_last_receive"
-ARG_KEY = "{key}"
-REJECT_TARGET = "_current_target"
-REJECT_CACHE_TARGET = "_next_target"
+RECEIVE_KEY: Literal["_receive_{id}"] = "_receive_{id}"
+"""`receive` 存储 key"""
+LAST_RECEIVE_KEY: Literal["_last_receive"] = "_last_receive"
+"""`last_receive` 存储 key"""
+ARG_KEY: Literal["{key}"] = "{key}"
+"""`arg` 存储 key"""
+REJECT_TARGET: Literal["_current_target"] = "_current_target"
+"""当前 `reject` 目标存储 key"""
+REJECT_CACHE_TARGET: Literal["_next_target"] = "_next_target"
+"""下一个 `reject` 目标存储 key"""
# used by Rule
-PREFIX_KEY = "_prefix"
+PREFIX_KEY: Literal["_prefix"] = "_prefix"
+"""命令前缀存储 key"""
-CMD_KEY = "command"
-RAW_CMD_KEY = "raw_command"
-CMD_ARG_KEY = "command_arg"
+CMD_KEY: Literal["command"] = "command"
+"""命令元组存储 key"""
+RAW_CMD_KEY: Literal["raw_command"] = "raw_command"
+"""命令文本存储 key"""
+CMD_ARG_KEY: Literal["command_arg"] = "command_arg"
+"""命令参数存储 key"""
-SHELL_ARGS = "_args"
-SHELL_ARGV = "_argv"
+SHELL_ARGS: Literal["_args"] = "_args"
+"""shell 命令 parse 后参数字典存储 key"""
+SHELL_ARGV: Literal["_argv"] = "_argv"
+"""shell 命令原始参数列表存储 key"""
-REGEX_MATCHED = "_matched"
-REGEX_GROUP = "_matched_groups"
-REGEX_DICT = "_matched_dict"
+REGEX_MATCHED: Literal["_matched"] = "_matched"
+"""正则匹配结果存储 key"""
+REGEX_GROUP: Literal["_matched_groups"] = "_matched_groups"
+"""正则匹配 group 元组存储 key"""
+REGEX_DICT: Literal["_matched_dict"] = "_matched_dict"
+"""正则匹配 group 字典存储 key"""
diff --git a/nonebot/dependencies/__init__.py b/nonebot/dependencies/__init__.py
index 42e02b9f..729bbb2d 100644
--- a/nonebot/dependencies/__init__.py
+++ b/nonebot/dependencies/__init__.py
@@ -1,8 +1,8 @@
-"""
-依赖注入处理模块
-================
+"""本模块模块实现了依赖注入的定义与处理。
-该模块实现了依赖注入的定义与处理。
+FrontMatter:
+ sidebar_position: 0
+ description: nonebot.dependencies 模块
"""
import abc
@@ -14,15 +14,21 @@ from pydantic.schema import get_annotation_from_field_info
from pydantic.fields import Required, FieldInfo, Undefined, ModelField
from nonebot.log import logger
-from .utils import get_typed_signature
from nonebot.exception import TypeMisMatch
from nonebot.utils import run_sync, is_coroutine_callable
-T = TypeVar("T", bound="Dependent")
+from .utils import check_field_type, get_typed_signature
+
R = TypeVar("R")
+T = TypeVar("T", bound="Dependent")
class Param(abc.ABC, FieldInfo):
+ """依赖注入的基本单元 —— 参数。
+
+ 继承自 `pydantic.fields.FieldInfo`,用于描述参数信息(不包括参数名)。
+ """
+
@classmethod
def _check_param(
cls, dependent: "Dependent", name: str, param: inspect.Parameter
@@ -45,6 +51,16 @@ class CustomConfig(BaseConfig):
class Dependent(Generic[R]):
+ """依赖注入容器
+
+ 参数:
+ call: 依赖注入的可调用对象,可以是任何 Callable 对象
+ pre_checkers: 依赖注入解析前的参数检查
+ params: 具名参数列表
+ parameterless: 匿名参数列表
+ allow_types: 允许的参数类型
+ """
+
def __init__(
self,
*,
@@ -180,15 +196,18 @@ class Dependent(Generic[R]):
value = await field_info._solve(**params)
if value == Undefined:
value = field.get_default()
- _, errs_ = field.validate(value, values, loc=(str(field_info), field.alias))
- if errs_:
+
+ try:
+ values[field.name] = check_field_type(field, value)
+ except TypeMisMatch:
logger.debug(
f"{field_info} "
f"type {type(value)} not match depends {self.call} "
f"annotation {field._type_display()}, ignored"
)
- raise TypeMisMatch(field, value)
- else:
- values[field.name] = value
+ raise
return values
+
+
+__autodoc__ = {"CustomConfig": False}
diff --git a/nonebot/dependencies/utils.py b/nonebot/dependencies/utils.py
index 56a815ff..c7f5470b 100644
--- a/nonebot/dependencies/utils.py
+++ b/nonebot/dependencies/utils.py
@@ -1,11 +1,22 @@
+"""
+FrontMatter:
+ sidebar_position: 1
+ description: nonebot.dependencies.utils 模块
+"""
import inspect
-from typing import Any, Dict, Callable
+from typing import Any, Dict, TypeVar, Callable
from loguru import logger
+from pydantic.fields import ModelField
from pydantic.typing import ForwardRef, evaluate_forwardref
+from nonebot.exception import TypeMisMatch
+
+V = TypeVar("V")
+
def get_typed_signature(call: Callable[..., Any]) -> inspect.Signature:
+ """获取可调用对象签名"""
signature = inspect.signature(call)
globalns = getattr(call, "__globals__", {})
typed_params = [
@@ -22,6 +33,7 @@ def get_typed_signature(call: Callable[..., Any]) -> inspect.Signature:
def get_typed_annotation(param: inspect.Parameter, globalns: Dict[str, Any]) -> Any:
+ """获取参数的类型注解"""
annotation = param.annotation
if isinstance(annotation, str):
annotation = ForwardRef(annotation)
@@ -33,3 +45,10 @@ def get_typed_annotation(param: inspect.Parameter, globalns: Dict[str, Any]) ->
)
return inspect.Parameter.empty
return annotation
+
+
+def check_field_type(field: ModelField, value: V) -> V:
+ _, errs_ = field.validate(value, {}, loc=())
+ if errs_:
+ raise TypeMisMatch(field, value)
+ return value
diff --git a/nonebot/drivers/__init__.py b/nonebot/drivers/__init__.py
index 7c7bf3a9..5c6b3ab1 100644
--- a/nonebot/drivers/__init__.py
+++ b/nonebot/drivers/__init__.py
@@ -1,297 +1,38 @@
-"""
-后端驱动适配基类
-=================
+"""本模块定义了驱动适配器基类。
-各驱动请继承以下基类
+各驱动请继承以下基类。
+
+FrontMatter:
+ sidebar_position: 0
+ description: nonebot.drivers 模块
"""
-import abc
-import asyncio
-from dataclasses import dataclass
-from contextlib import asynccontextmanager
-from typing import (
- TYPE_CHECKING,
- Any,
- Set,
- Dict,
- Type,
- Callable,
- Awaitable,
- AsyncGenerator,
-)
+from nonebot.internal.driver import URL as URL
+from nonebot.internal.driver import Driver as Driver
+from nonebot.internal.driver import Cookies as Cookies
+from nonebot.internal.driver import Request as Request
+from nonebot.internal.driver import Response as Response
+from nonebot.internal.driver import WebSocket as WebSocket
+from nonebot.internal.driver import HTTPVersion as HTTPVersion
+from nonebot.internal.driver import ForwardMixin as ForwardMixin
+from nonebot.internal.driver import ForwardDriver as ForwardDriver
+from nonebot.internal.driver import ReverseDriver as ReverseDriver
+from nonebot.internal.driver import combine_driver as combine_driver
+from nonebot.internal.driver import HTTPServerSetup as HTTPServerSetup
+from nonebot.internal.driver import WebSocketServerSetup as WebSocketServerSetup
-from ._model import URL as URL
-from nonebot.log import logger
-from nonebot.utils import escape_tag
-from ._model import Request as Request
-from nonebot.config import Env, Config
-from ._model import Response as Response
-from ._model import WebSocket as WebSocket
-from ._model import HTTPVersion as HTTPVersion
-from nonebot.typing import T_BotConnectionHook, T_BotDisconnectionHook
-
-if TYPE_CHECKING:
- from nonebot.adapters import Bot, Adapter
-
-
-class Driver(abc.ABC):
- """
- Driver 基类。
- """
-
- _adapters: Dict[str, "Adapter"] = {}
- """
- :类型: ``Dict[str, Adapter]``
- :说明: 已注册的适配器列表
- """
- _bot_connection_hook: Set[T_BotConnectionHook] = set()
- """
- :类型: ``Set[T_BotConnectionHook]``
- :说明: Bot 连接建立时执行的函数
- """
- _bot_disconnection_hook: Set[T_BotDisconnectionHook] = set()
- """
- :类型: ``Set[T_BotDisconnectionHook]``
- :说明: Bot 连接断开时执行的函数
- """
-
- def __init__(self, env: Env, config: Config):
- """
- :参数:
-
- * ``env: Env``: 包含环境信息的 Env 对象
- * ``config: Config``: 包含配置信息的 Config 对象
- """
- self.env: str = env.environment
- """
- :类型: ``str``
- :说明: 环境名称
- """
- self.config: Config = config
- """
- :类型: ``Config``
- :说明: 配置对象
- """
- self._clients: Dict[str, "Bot"] = {}
- """
- :类型: ``Dict[str, Bot]``
- :说明: 已连接的 Bot
- """
-
- @property
- def bots(self) -> Dict[str, "Bot"]:
- """
- :类型:
-
- ``Dict[str, Bot]``
- :说明:
-
- 获取当前所有已连接的 Bot
- """
- return self._clients
-
- def register_adapter(self, adapter: Type["Adapter"], **kwargs) -> None:
- """
- :说明:
-
- 注册一个协议适配器
-
- :参数:
-
- * ``name: str``: 适配器名称,用于在连接时进行识别
- * ``adapter: Type[Bot]``: 适配器 Class
- * ``**kwargs``: 其他传递给适配器的参数
- """
- name = adapter.get_name()
- if name in self._adapters:
- logger.opt(colors=True).debug(
- f'Adapter "{escape_tag(name)}" already exists'
- )
- return
- self._adapters[name] = adapter(self, **kwargs)
- logger.opt(colors=True).debug(
- f'Succeeded to load adapter "{escape_tag(name)}"'
- )
-
- @property
- @abc.abstractmethod
- def type(self) -> str:
- """驱动类型名称"""
- raise NotImplementedError
-
- @property
- @abc.abstractmethod
- def logger(self):
- """驱动专属 logger 日志记录器"""
- raise NotImplementedError
-
- @abc.abstractmethod
- def run(self, *args, **kwargs):
- """
- :说明:
-
- 启动驱动框架
-
- :参数:
- * ``*args``
- * ``**kwargs``
- """
- logger.opt(colors=True).debug(
- f"Loaded adapters: {escape_tag(', '.join(self._adapters))}"
- )
-
- @abc.abstractmethod
- def on_startup(self, func: Callable) -> Callable:
- """注册一个在驱动启动时运行的函数"""
- raise NotImplementedError
-
- @abc.abstractmethod
- def on_shutdown(self, func: Callable) -> Callable:
- """注册一个在驱动停止时运行的函数"""
- raise NotImplementedError
-
- def on_bot_connect(self, func: T_BotConnectionHook) -> T_BotConnectionHook:
- """
- :说明:
-
- 装饰一个函数使他在 bot 通过 WebSocket 连接成功时执行。
-
- :函数参数:
-
- * ``bot: Bot``: 当前连接上的 Bot 对象
- """
- self._bot_connection_hook.add(func)
- return func
-
- def on_bot_disconnect(self, func: T_BotDisconnectionHook) -> T_BotDisconnectionHook:
- """
- :说明:
-
- 装饰一个函数使他在 bot 通过 WebSocket 连接断开时执行。
-
- :函数参数:
-
- * ``bot: Bot``: 当前连接上的 Bot 对象
- """
- self._bot_disconnection_hook.add(func)
- return func
-
- def _bot_connect(self, bot: "Bot") -> None:
- """在 WebSocket 连接成功后,调用该函数来注册 bot 对象"""
- if bot.self_id in self._clients:
- raise RuntimeError(f"Duplicate bot connection with id {bot.self_id}")
- self._clients[bot.self_id] = bot
-
- async def _run_hook(bot: "Bot") -> None:
- coros = list(map(lambda x: x(bot), self._bot_connection_hook))
- if coros:
- try:
- await asyncio.gather(*coros)
- except Exception as e:
- logger.opt(colors=True, exception=e).error(
- "Error when running WebSocketConnection hook. "
- "Running cancelled!"
- )
-
- asyncio.create_task(_run_hook(bot))
-
- def _bot_disconnect(self, bot: "Bot") -> None:
- """在 WebSocket 连接断开后,调用该函数来注销 bot 对象"""
- if bot.self_id in self._clients:
- del self._clients[bot.self_id]
-
- async def _run_hook(bot: "Bot") -> None:
- coros = list(map(lambda x: x(bot), self._bot_disconnection_hook))
- if coros:
- try:
- await asyncio.gather(*coros)
- except Exception as e:
- logger.opt(colors=True, exception=e).error(
- "Error when running WebSocketDisConnection hook. "
- "Running cancelled!"
- )
-
- asyncio.create_task(_run_hook(bot))
-
-
-class ForwardMixin(abc.ABC):
- @property
- @abc.abstractmethod
- def type(self) -> str:
- raise NotImplementedError
-
- @abc.abstractmethod
- async def request(self, setup: Request) -> Response:
- raise NotImplementedError
-
- @abc.abstractmethod
- @asynccontextmanager
- async def websocket(self, setup: Request) -> AsyncGenerator[WebSocket, None]:
- raise NotImplementedError
- yield # used for static type checking's generator detection
-
-
-class ForwardDriver(Driver, ForwardMixin):
- """
- Forward Driver 基类。将客户端框架封装,以满足适配器使用。
- """
-
-
-class ReverseDriver(Driver):
- """
- Reverse Driver 基类。将后端框架封装,以满足适配器使用。
- """
-
- @property
- @abc.abstractmethod
- def server_app(self) -> Any:
- """驱动 APP 对象"""
- raise NotImplementedError
-
- @property
- @abc.abstractmethod
- def asgi(self) -> Any:
- """驱动 ASGI 对象"""
- raise NotImplementedError
-
- @abc.abstractmethod
- def setup_http_server(self, setup: "HTTPServerSetup") -> None:
- raise NotImplementedError
-
- @abc.abstractmethod
- def setup_websocket_server(self, setup: "WebSocketServerSetup") -> None:
- raise NotImplementedError
-
-
-def combine_driver(driver: Type[Driver], *mixins: Type[ForwardMixin]) -> Type[Driver]:
- # check first
- assert issubclass(driver, Driver), "`driver` must be subclass of Driver"
- assert all(
- map(lambda m: issubclass(m, ForwardMixin), mixins)
- ), "`mixins` must be subclass of ForwardMixin"
-
- class CombinedDriver(*mixins, driver, ForwardDriver): # type: ignore
- @property
- def type(self) -> str:
- return (
- driver.type.__get__(self)
- + "+"
- + "+".join(map(lambda x: x.type.__get__(self), mixins))
- )
-
- return CombinedDriver
-
-
-@dataclass
-class HTTPServerSetup:
- path: URL # path should not be absolute, check it by URL.is_absolute() == False
- method: str
- name: str
- handle_func: Callable[[Request], Awaitable[Response]]
-
-
-@dataclass
-class WebSocketServerSetup:
- path: URL # path should not be absolute, check it by URL.is_absolute() == False
- name: str
- handle_func: Callable[[WebSocket], Awaitable[Any]]
+__autodoc__ = {
+ "URL": True,
+ "Driver": True,
+ "Cookies": True,
+ "Request": True,
+ "Response": True,
+ "WebSocket": True,
+ "HTTPVersion": True,
+ "ForwardMixin": True,
+ "ForwardDriver": True,
+ "ReverseDriver": True,
+ "combine_driver": True,
+ "HTTPServerSetup": True,
+ "WebSocketServerSetup": True,
+}
diff --git a/nonebot/drivers/_block_driver.py b/nonebot/drivers/_block_driver.py
index 0e8f34f8..bf87659b 100644
--- a/nonebot/drivers/_block_driver.py
+++ b/nonebot/drivers/_block_driver.py
@@ -27,7 +27,7 @@ class BlockDriver(Driver):
@property
@overrides(Driver)
def type(self) -> str:
- """驱动名称: ``block_driver``"""
+ """驱动名称: `block_driver`"""
return "block_driver"
@property
@@ -39,13 +39,7 @@ class BlockDriver(Driver):
@overrides(Driver)
def on_startup(self, func: STARTUP_FUNC) -> STARTUP_FUNC:
"""
- :说明:
-
- 注册一个启动时执行的函数
-
- :参数:
-
- * ``func: Callable[[], Awaitable[None]]``
+ 注册一个启动时执行的函数
"""
self.startup_funcs.add(func)
return func
@@ -53,13 +47,7 @@ class BlockDriver(Driver):
@overrides(Driver)
def on_shutdown(self, func: SHUTDOWN_FUNC) -> SHUTDOWN_FUNC:
"""
- :说明:
-
- 注册一个停止时执行的函数
-
- :参数:
-
- * ``func: Callable[[], Awaitable[None]]``
+ 注册一个停止时执行的函数
"""
self.shutdown_funcs.add(func)
return func
diff --git a/nonebot/drivers/aiohttp.py b/nonebot/drivers/aiohttp.py
index 243de63d..971ce4ac 100644
--- a/nonebot/drivers/aiohttp.py
+++ b/nonebot/drivers/aiohttp.py
@@ -1,11 +1,21 @@
-"""
-AIOHTTP 驱动适配
-================
+"""[AIOHTTP](https://aiohttp.readthedocs.io/en/stable/) 驱动适配器。
+```bash
+nb driver install aiohttp
+# 或者
+pip install nonebot2[aiohttp]
+```
+
+:::tip 提示
本驱动仅支持客户端连接
+:::
+
+FrontMatter:
+ sidebar_position: 2
+ description: nonebot.drivers.aiohttp 模块
"""
-from typing import AsyncGenerator
+from typing import Type, AsyncGenerator
from contextlib import asynccontextmanager
from nonebot.typing import overrides
@@ -13,7 +23,7 @@ from nonebot.drivers import Request, Response
from nonebot.exception import WebSocketClosed
from nonebot.drivers._block_driver import BlockDriver
from nonebot.drivers import WebSocket as BaseWebSocket
-from nonebot.drivers import HTTPVersion, ForwardMixin, combine_driver
+from nonebot.drivers import HTTPVersion, ForwardMixin, ForwardDriver, combine_driver
try:
import aiohttp
@@ -24,6 +34,8 @@ except ImportError:
class Mixin(ForwardMixin):
+ """AIOHTTP Mixin"""
+
@property
@overrides(ForwardMixin)
def type(self) -> str:
@@ -85,6 +97,8 @@ class Mixin(ForwardMixin):
class WebSocket(BaseWebSocket):
+ """AIOHTTP Websocket Wrapper"""
+
def __init__(
self,
*,
@@ -139,4 +153,5 @@ class WebSocket(BaseWebSocket):
await self.websocket.send_bytes(data)
-Driver = combine_driver(BlockDriver, Mixin)
+Driver: Type[ForwardDriver] = combine_driver(BlockDriver, Mixin) # type: ignore
+"""AIOHTTP Driver"""
diff --git a/nonebot/drivers/fastapi.py b/nonebot/drivers/fastapi.py
index 59f82563..e714300a 100644
--- a/nonebot/drivers/fastapi.py
+++ b/nonebot/drivers/fastapi.py
@@ -1,13 +1,12 @@
-"""
-FastAPI 驱动适配
-================
+"""[FastAPI](https://fastapi.tiangolo.com/) 驱动适配
-本驱动同时支持服务端以及客户端连接
+:::tip 提示
+本驱动仅支持服务端连接
+:::
-后端使用方法请参考: `FastAPI 文档`_
-
-.. _FastAPI 文档:
- https://fastapi.tiangolo.com/
+FrontMatter:
+ sidebar_position: 1
+ description: nonebot.drivers.fastapi 模块
"""
import logging
@@ -20,10 +19,10 @@ from fastapi.responses import Response
from fastapi import FastAPI, Request, UploadFile, status
from starlette.websockets import WebSocket, WebSocketState, WebSocketDisconnect
-from ._model import FileTypes
from nonebot.config import Env
from nonebot.typing import overrides
from nonebot.exception import WebSocketClosed
+from nonebot.internal.driver import FileTypes
from nonebot.config import Config as NoneBotConfig
from nonebot.drivers import Request as BaseRequest
from nonebot.drivers import WebSocket as BaseWebSocket
@@ -42,97 +41,33 @@ def catch_closed(func):
class Config(BaseSettings):
- """
- FastAPI 驱动框架设置,详情参考 FastAPI 文档
- """
+ """FastAPI 驱动框架设置,详情参考 FastAPI 文档"""
fastapi_openapi_url: Optional[str] = None
- """
- :类型:
-
- ``Optional[str]``
-
- :说明:
-
- ``openapi.json`` 地址,默认为 ``None`` 即关闭
- """
+ """`openapi.json` 地址,默认为 `None` 即关闭"""
fastapi_docs_url: Optional[str] = None
- """
- :类型:
-
- ``Optional[str]``
-
- :说明:
-
- ``swagger`` 地址,默认为 ``None`` 即关闭
- """
+ """`swagger` 地址,默认为 `None` 即关闭"""
fastapi_redoc_url: Optional[str] = None
- """
- :类型:
-
- ``Optional[str]``
-
- :说明:
-
- ``redoc`` 地址,默认为 ``None`` 即关闭
- """
+ """`redoc` 地址,默认为 `None` 即关闭"""
+ fastapi_include_adapter_schema: bool = True
+ """是否包含适配器路由的 schema,默认为 `True`"""
fastapi_reload: bool = False
- """
- :类型:
-
- ``bool``
-
- :说明:
-
- 开启/关闭冷重载
- """
+ """开启/关闭冷重载"""
fastapi_reload_dirs: Optional[List[str]] = None
- """
- :类型:
-
- ``Optional[List[str]]``
-
- :说明:
-
- 重载监控文件夹列表,默认为 uvicorn 默认值
- """
+ """重载监控文件夹列表,默认为 uvicorn 默认值"""
fastapi_reload_delay: Optional[float] = None
- """
- :类型:
-
- ``Optional[float]``
-
- :说明:
-
- 重载延迟,默认为 uvicorn 默认值
- """
+ """重载延迟,默认为 uvicorn 默认值"""
fastapi_reload_includes: Optional[List[str]] = None
- """
- :类型:
-
- ``Optional[List[str]]``
-
- :说明:
-
- 要监听的文件列表,支持 glob pattern,默认为 uvicorn 默认值
- """
+ """要监听的文件列表,支持 glob pattern,默认为 uvicorn 默认值"""
fastapi_reload_excludes: Optional[List[str]] = None
- """
- :类型:
-
- ``Optional[List[str]]``
-
- :说明:
-
- 不要监听的文件列表,支持 glob pattern,默认为 uvicorn 默认值
- """
+ """不要监听的文件列表,支持 glob pattern,默认为 uvicorn 默认值"""
class Config:
extra = "ignore"
class Driver(ReverseDriver):
- """FastAPI 驱动框架。包含反向 Server 功能。"""
+ """FastAPI 驱动框架。"""
def __init__(self, env: Env, config: NoneBotConfig):
super(Driver, self).__init__(env, config)
@@ -148,19 +83,19 @@ class Driver(ReverseDriver):
@property
@overrides(ReverseDriver)
def type(self) -> str:
- """驱动名称: ``fastapi``"""
+ """驱动名称: `fastapi`"""
return "fastapi"
@property
@overrides(ReverseDriver)
def server_app(self) -> FastAPI:
- """``FastAPI APP`` 对象"""
+ """`FastAPI APP` 对象"""
return self._server_app
@property
@overrides(ReverseDriver)
def asgi(self) -> FastAPI:
- """``FastAPI APP`` 对象"""
+ """`FastAPI APP` 对象"""
return self._server_app
@property
@@ -179,6 +114,7 @@ class Driver(ReverseDriver):
_handle,
name=setup.name,
methods=[setup.method],
+ include_in_schema=self.fastapi_config.fastapi_include_adapter_schema,
)
@overrides(ReverseDriver)
@@ -199,7 +135,7 @@ class Driver(ReverseDriver):
@overrides(ReverseDriver)
def on_shutdown(self, func: Callable) -> Callable:
- """参考文档: `Events `_"""
+ """参考文档: `Events `_"""
return self.server_app.on_event("shutdown")(func)
@overrides(ReverseDriver)
@@ -211,7 +147,7 @@ class Driver(ReverseDriver):
app: Optional[str] = None,
**kwargs,
):
- """使用 ``uvicorn`` 启动 FastAPI"""
+ """使用 `uvicorn` 启动 FastAPI"""
super().run(host, port, app, **kwargs)
LOGGING_CONFIG = {
"version": 1,
@@ -300,6 +236,8 @@ class Driver(ReverseDriver):
class FastAPIWebSocket(BaseWebSocket):
+ """FastAPI WebSocket Wrapper"""
+
@overrides(BaseWebSocket)
def __init__(self, *, request: BaseRequest, websocket: WebSocket):
super().__init__(request=request)
@@ -340,3 +278,6 @@ class FastAPIWebSocket(BaseWebSocket):
@overrides(BaseWebSocket)
async def send_bytes(self, data: bytes) -> None:
await self.websocket.send({"type": "websocket.send", "bytes": data})
+
+
+__autodoc__ = {"catch_closed": False}
diff --git a/nonebot/drivers/httpx.py b/nonebot/drivers/httpx.py
index fe82e50d..79100dcf 100644
--- a/nonebot/drivers/httpx.py
+++ b/nonebot/drivers/httpx.py
@@ -1,4 +1,20 @@
-from typing import AsyncGenerator
+"""[HTTPX](https://www.python-httpx.org/) 驱动适配
+
+```bash
+nb driver install httpx
+# 或者
+pip install nonebot2[httpx]
+```
+
+:::tip 提示
+本驱动仅支持客户端 HTTP 连接
+:::
+
+FrontMatter:
+ sidebar_position: 3
+ description: nonebot.drivers.httpx 模块
+"""
+from typing import Type, AsyncGenerator
from contextlib import asynccontextmanager
from nonebot.typing import overrides
@@ -9,6 +25,7 @@ from nonebot.drivers import (
WebSocket,
HTTPVersion,
ForwardMixin,
+ ForwardDriver,
combine_driver,
)
@@ -21,6 +38,8 @@ except ImportError:
class Mixin(ForwardMixin):
+ """HTTPX Mixin"""
+
@property
@overrides(ForwardMixin)
def type(self) -> str:
@@ -57,4 +76,5 @@ class Mixin(ForwardMixin):
yield ws
-Driver = combine_driver(BlockDriver, Mixin)
+Driver: Type[ForwardDriver] = combine_driver(BlockDriver, Mixin) # type: ignore
+"""HTTPX Driver"""
diff --git a/nonebot/drivers/quart.py b/nonebot/drivers/quart.py
index a8330044..56c940f5 100644
--- a/nonebot/drivers/quart.py
+++ b/nonebot/drivers/quart.py
@@ -1,11 +1,18 @@
-"""
-Quart 驱动适配
-================
+"""[Quart](https://pgjones.gitlab.io/quart/index.html) 驱动适配
-后端使用方法请参考: `Quart 文档`_
+```bash
+nb driver install quart
+# 或者
+pip install nonebot2[quart]
+```
-.. _Quart 文档:
- https://pgjones.gitlab.io/quart/index.html
+:::tip 提示
+本驱动仅支持服务端连接
+:::
+
+FrontMatter:
+ sidebar_position: 5
+ description: nonebot.drivers.quart 模块
"""
import asyncio
@@ -15,10 +22,10 @@ from typing import List, Tuple, TypeVar, Callable, Optional, Coroutine
import uvicorn
from pydantic import BaseSettings
-from ._model import FileTypes
from nonebot.config import Env
from nonebot.typing import overrides
from nonebot.exception import WebSocketClosed
+from nonebot.internal.driver import FileTypes
from nonebot.config import Config as NoneBotConfig
from nonebot.drivers import Request as BaseRequest
from nonebot.drivers import WebSocket as BaseWebSocket
@@ -50,69 +57,25 @@ def catch_closed(func):
class Config(BaseSettings):
- """
- Quart 驱动框架设置
- """
+ """Quart 驱动框架设置"""
quart_reload: bool = False
- """
- :类型:
-
- ``bool``
-
- :说明:
-
- 开启/关闭冷重载
- """
+ """开启/关闭冷重载"""
quart_reload_dirs: Optional[List[str]] = None
- """
- :类型:
-
- ``Optional[List[str]]``
-
- :说明:
-
- 重载监控文件夹列表,默认为 uvicorn 默认值
- """
+ """重载监控文件夹列表,默认为 uvicorn 默认值"""
quart_reload_delay: Optional[float] = None
- """
- :类型:
-
- ``Optional[float]``
-
- :说明:
-
- 重载延迟,默认为 uvicorn 默认值
- """
+ """重载延迟,默认为 uvicorn 默认值"""
quart_reload_includes: Optional[List[str]] = None
- """
- :类型:
-
- ``Optional[List[str]]``
-
- :说明:
-
- 要监听的文件列表,支持 glob pattern,默认为 uvicorn 默认值
- """
+ """要监听的文件列表,支持 glob pattern,默认为 uvicorn 默认值"""
quart_reload_excludes: Optional[List[str]] = None
- """
- :类型:
-
- ``Optional[List[str]]``
-
- :说明:
-
- 不要监听的文件列表,支持 glob pattern,默认为 uvicorn 默认值
- """
+ """不要监听的文件列表,支持 glob pattern,默认为 uvicorn 默认值"""
class Config:
extra = "ignore"
class Driver(ReverseDriver):
- """
- Quart 驱动框架
- """
+ """Quart 驱动框架"""
def __init__(self, env: Env, config: NoneBotConfig):
super().__init__(env, config)
@@ -124,19 +87,19 @@ class Driver(ReverseDriver):
@property
@overrides(ReverseDriver)
def type(self) -> str:
- """驱动名称: ``quart``"""
+ """驱动名称: `quart`"""
return "quart"
@property
@overrides(ReverseDriver)
def server_app(self) -> Quart:
- """``Quart`` 对象"""
+ """`Quart` 对象"""
return self._server_app
@property
@overrides(ReverseDriver)
def asgi(self):
- """``Quart`` 对象"""
+ """`Quart` 对象"""
return self._server_app
@property
@@ -170,16 +133,12 @@ class Driver(ReverseDriver):
@overrides(ReverseDriver)
def on_startup(self, func: _AsyncCallable) -> _AsyncCallable:
- """参考文档: `Startup and Shutdown`_
-
- .. _Startup and Shutdown:
- https://pgjones.gitlab.io/quart/how_to_guides/startup_shutdown.html
- """
+ """参考文档: [`Startup and Shutdown`](https://pgjones.gitlab.io/quart/how_to_guides/startup_shutdown.html)"""
return self.server_app.before_serving(func) # type: ignore
@overrides(ReverseDriver)
def on_shutdown(self, func: _AsyncCallable) -> _AsyncCallable:
- """参考文档: `Startup and Shutdown`_"""
+ """参考文档: [`Startup and Shutdown`](https://pgjones.gitlab.io/quart/how_to_guides/startup_shutdown.html)"""
return self.server_app.after_serving(func) # type: ignore
@overrides(ReverseDriver)
@@ -191,7 +150,7 @@ class Driver(ReverseDriver):
app: Optional[str] = None,
**kwargs,
):
- """使用 ``uvicorn`` 启动 Quart"""
+ """使用 `uvicorn` 启动 Quart"""
super().run(host, port, app, **kwargs)
LOGGING_CONFIG = {
"version": 1,
@@ -276,6 +235,8 @@ class Driver(ReverseDriver):
class WebSocket(BaseWebSocket):
+ """Quart WebSocket Wrapper"""
+
def __init__(self, *, request: BaseRequest, websocket: QuartWebSocket):
super().__init__(request=request)
self.websocket = websocket
@@ -317,3 +278,6 @@ class WebSocket(BaseWebSocket):
@overrides(BaseWebSocket)
async def send_bytes(self, data: bytes):
await self.websocket.send(data)
+
+
+__autodoc__ = {"catch_closed": False}
diff --git a/nonebot/drivers/websockets.py b/nonebot/drivers/websockets.py
index b3f2d99c..57b87169 100644
--- a/nonebot/drivers/websockets.py
+++ b/nonebot/drivers/websockets.py
@@ -1,6 +1,22 @@
+"""[websockets](https://websockets.readthedocs.io/) 驱动适配
+
+```bash
+nb driver install websockets
+# 或者
+pip install nonebot2[websockets]
+```
+
+:::tip 提示
+本驱动仅支持客户端 WebSocket 连接
+:::
+
+FrontMatter:
+ sidebar_position: 4
+ description: nonebot.drivers.websockets 模块
+"""
import logging
from functools import wraps
-from typing import AsyncGenerator
+from typing import Type, AsyncGenerator
from contextlib import asynccontextmanager
from nonebot.typing import overrides
@@ -9,7 +25,7 @@ from nonebot.drivers import Request, Response
from nonebot.exception import WebSocketClosed
from nonebot.drivers._block_driver import BlockDriver
from nonebot.drivers import WebSocket as BaseWebSocket
-from nonebot.drivers import ForwardMixin, combine_driver
+from nonebot.drivers import ForwardMixin, ForwardDriver, combine_driver
try:
from websockets.exceptions import ConnectionClosed
@@ -38,6 +54,8 @@ def catch_closed(func):
class Mixin(ForwardMixin):
+ """Websockets Mixin"""
+
@property
@overrides(ForwardMixin)
def type(self) -> str:
@@ -60,6 +78,8 @@ class Mixin(ForwardMixin):
class WebSocket(BaseWebSocket):
+ """Websockets WebSocket Wrapper"""
+
@overrides(BaseWebSocket)
def __init__(self, *, request: Request, websocket: WebSocketClientProtocol):
super().__init__(request=request)
@@ -103,4 +123,5 @@ class WebSocket(BaseWebSocket):
await self.websocket.send(data)
-Driver = combine_driver(BlockDriver, Mixin)
+Driver: Type[ForwardDriver] = combine_driver(BlockDriver, Mixin) # type: ignore
+"""Websockets Driver"""
diff --git a/nonebot/exception.py b/nonebot/exception.py
index 62eb23b7..2f390843 100644
--- a/nonebot/exception.py
+++ b/nonebot/exception.py
@@ -1,9 +1,32 @@
-"""
-异常
-====
+"""本模块包含了所有 NoneBot 运行时可能会抛出的异常。
-下列文档中的异常是所有 NoneBot 运行时可能会抛出的。
这些异常并非所有需要用户处理,在 NoneBot 内部运行时被捕获,并进行对应操作。
+
+```bash
+NoneBotException
+├── ParserExit
+├── ProcessException
+| ├── IgnoredException
+| ├── MockApiException
+| └── StopPropagation
+├── MatcherException
+| ├── SkippedException
+| | └── TypeMisMatch
+| ├── PausedException
+| ├── RejectedException
+| └── FinishedException
+├── AdapterException
+| ├── NoLogException
+| ├── ApiNotAvailable
+| ├── NetworkError
+| └── ActionFailed
+└── DriverException
+ └── WebSocketClosed
+```
+
+FrontMatter:
+ sidebar_position: 10
+ description: nonebot.exception 模块
"""
from typing import Any, Optional
@@ -12,25 +35,12 @@ from pydantic.fields import ModelField
class NoneBotException(Exception):
- """
- :说明:
-
- 所有 NoneBot 发生的异常基类。
- """
+ """所有 NoneBot 发生的异常基类。"""
# Rule Exception
class ParserExit(NoneBotException):
- """
- :说明:
-
- ``shell command`` 处理消息失败时返回的异常
-
- :参数:
-
- * ``status``
- * ``message``
- """
+ """{ref}`nonebot.rule.shell_command` 处理消息失败时返回的异常"""
def __init__(self, status: int = 0, message: Optional[str] = None):
self.status = status
@@ -45,26 +55,18 @@ class ParserExit(NoneBotException):
# Processor Exception
class ProcessException(NoneBotException):
- """
- :说明:
-
- 事件处理过程中发生的异常基类。
- """
+ """事件处理过程中发生的异常基类。"""
class IgnoredException(ProcessException):
- """
- :说明:
+ """指示 NoneBot 应该忽略该事件。可由 PreProcessor 抛出。
- 指示 NoneBot 应该忽略该事件。可由 PreProcessor 抛出。
-
- :参数:
-
- * ``reason``: 忽略事件的原因
+ 参数:
+ reason: 忽略事件的原因
"""
- def __init__(self, reason):
- self.reason = reason
+ def __init__(self, reason: Any):
+ self.reason: Any = reason
def __repr__(self):
return f""
@@ -74,14 +76,10 @@ class IgnoredException(ProcessException):
class MockApiException(ProcessException):
- """
- :说明:
+ """指示 NoneBot 阻止本次 API 调用或修改本次调用返回值,并返回自定义内容。可由 api hook 抛出。
- 指示 NoneBot 阻止本次 API 调用或修改本次调用返回值,并返回自定义内容。可由 api hook 抛出。
-
- :参数:
-
- * ``result``: 返回的内容
+ 参数:
+ result: 返回的内容
"""
def __init__(self, result: Any):
@@ -95,44 +93,46 @@ class MockApiException(ProcessException):
class StopPropagation(ProcessException):
- """
- :说明:
+ """指示 NoneBot 终止事件向下层传播。
- 指示 NoneBot 终止事件向下层传播。
+ 在 {ref}`nonebot.matcher.Matcher.block` 为 `True`
+ 或使用 {ref}`nonebot.matcher.Matcher.stop_propagation` 方法时抛出。
- :用法:
-
- 在 ``Matcher.block == True`` 时抛出。
+ 用法:
+ ```python
+ matcher = on_notice(block=True)
+ # 或者
+ @matcher.handle()
+ async def handler(matcher: Matcher):
+ matcher.stop_propagation()
+ ```
"""
# Matcher Exceptions
class MatcherException(NoneBotException):
- """
- :说明:
-
- 所有 Matcher 发生的异常基类。
- """
+ """所有 Matcher 发生的异常基类。"""
class SkippedException(MatcherException):
- """
- :说明:
+ """指示 NoneBot 立即结束当前 `Handler` 的处理,继续处理下一个 `Handler`。
- 指示 NoneBot 立即结束当前 ``Handler`` 的处理,继续处理下一个 ``Handler``。
+ 可以在 `Handler` 中通过 {ref}`nonebot.matcher.Matcher.skip` 抛出。
- :用法:
+ 用法:
+ ```python
+ def always_skip():
+ Matcher.skip()
- 可以在 ``Handler`` 中通过 ``Matcher.skip()`` 抛出。
+ @matcher.handle()
+ async def handler(dependency = Depends(always_skip)):
+ ...
+ ```
"""
class TypeMisMatch(SkippedException):
- """
- :说明:
-
- 当前 ``Handler`` 的参数类型不匹配。
- """
+ """当前 `Handler` 的参数类型不匹配。"""
def __init__(self, param: ModelField, value: Any):
self.param: ModelField = param
@@ -146,115 +146,85 @@ class TypeMisMatch(SkippedException):
class PausedException(MatcherException):
- """
- :说明:
+ """指示 NoneBot 结束当前 `Handler` 并等待下一条消息后继续下一个 `Handler`。可用于用户输入新信息。
- 指示 NoneBot 结束当前 ``Handler`` 并等待下一条消息后继续下一个 ``Handler``。
- 可用于用户输入新信息。
+ 可以在 `Handler` 中通过 {ref}`nonebot.matcher.Matcher.pause` 抛出。
- :用法:
-
- 可以在 ``Handler`` 中通过 ``Matcher.pause()`` 抛出。
+ 用法:
+ ```python
+ @matcher.handle()
+ async def handler():
+ await matcher.pause("some message")
+ ```
"""
class RejectedException(MatcherException):
- """
- :说明:
+ """指示 NoneBot 结束当前 `Handler` 并等待下一条消息后重新运行当前 `Handler`。可用于用户重新输入。
- 指示 NoneBot 结束当前 ``Handler`` 并等待下一条消息后重新运行当前 ``Handler``。
- 可用于用户重新输入。
+ 可以在 `Handler` 中通过 {ref}`nonebot.matcher.Matcher.reject` 抛出。
- :用法:
-
- 可以在 ``Handler`` 中通过 ``Matcher.reject()`` 抛出。
+ 用法:
+ ```python
+ @matcher.handle()
+ async def handler():
+ await matcher.reject("some message")
+ ```
"""
class FinishedException(MatcherException):
- """
- :说明:
+ """指示 NoneBot 结束当前 `Handler` 且后续 `Handler` 不再被运行。可用于结束用户会话。
- 指示 NoneBot 结束当前 ``Handler`` 且后续 ``Handler`` 不再被运行。
- 可用于结束用户会话。
+ 可以在 `Handler` 中通过 {ref}`nonebot.matcher.Matcher.finish` 抛出。
- :用法:
-
- 可以在 ``Handler`` 中通过 ``Matcher.finish()`` 抛出。
+ 用法:
+ ```python
+ @matcher.handle()
+ async def handler():
+ await matcher.finish("some message")
+ ```
"""
# Adapter Exceptions
class AdapterException(NoneBotException):
- """
- :说明:
+ """代表 `Adapter` 抛出的异常,所有的 `Adapter` 都要在内部继承自这个 `Exception`
- 代表 ``Adapter`` 抛出的异常,所有的 ``Adapter`` 都要在内部继承自这个 ``Exception``
-
- :参数:
-
- * ``adapter_name: str``: 标识 adapter
+ 参数:
+ adapter_name: 标识 adapter
"""
def __init__(self, adapter_name: str) -> None:
- self.adapter_name = adapter_name
+ self.adapter_name: str = adapter_name
class NoLogException(AdapterException):
- """
- :说明:
+ """指示 NoneBot 对当前 `Event` 进行处理但不显示 Log 信息。
- 指示 NoneBot 对当前 ``Event`` 进行处理但不显示 Log 信息,可在 ``get_log_string`` 时抛出
+ 可在 {ref}`nonebot.adapters.Event.get_log_string` 时抛出
"""
- pass
-
class ApiNotAvailable(AdapterException):
- """
- :说明:
-
- 在 API 连接不可用时抛出。
- """
-
- pass
+ """在 API 连接不可用时抛出。"""
class NetworkError(AdapterException):
- """
- :说明:
-
- 在网络出现问题时抛出,如: API 请求地址不正确, API 请求无返回或返回状态非正常等。
- """
-
- pass
+ """在网络出现问题时抛出,如: API 请求地址不正确, API 请求无返回或返回状态非正常等。"""
class ActionFailed(AdapterException):
- """
- :说明:
-
- API 请求成功返回数据,但 API 操作失败。
- """
-
- pass
+ """API 请求成功返回数据,但 API 操作失败。"""
# Driver Exceptions
class DriverException(NoneBotException):
- """
- :说明:
-
- ``Driver`` 抛出的异常基类
- """
+ """`Driver` 抛出的异常基类"""
class WebSocketClosed(DriverException):
- """
- :说明:
-
- WebSocket 连接已关闭
- """
+ """WebSocket 连接已关闭"""
def __init__(self, code: int, reason: Optional[str] = None):
self.code = code
diff --git a/website/versioned_docs/version-2.0.0-beta.1/api/.gitkeep b/nonebot/internal/__init__.py
similarity index 100%
rename from website/versioned_docs/version-2.0.0-beta.1/api/.gitkeep
rename to nonebot/internal/__init__.py
diff --git a/nonebot/internal/adapter/__init__.py b/nonebot/internal/adapter/__init__.py
new file mode 100644
index 00000000..fc54a3e0
--- /dev/null
+++ b/nonebot/internal/adapter/__init__.py
@@ -0,0 +1,6 @@
+from .bot import Bot as Bot
+from .event import Event as Event
+from .adapter import Adapter as Adapter
+from .message import Message as Message
+from .message import MessageSegment as MessageSegment
+from .template import MessageTemplate as MessageTemplate
diff --git a/nonebot/adapters/_adapter.py b/nonebot/internal/adapter/adapter.py
similarity index 55%
rename from nonebot/adapters/_adapter.py
rename to nonebot/internal/adapter/adapter.py
index 4d2e22ff..9f6c5e65 100644
--- a/nonebot/adapters/_adapter.py
+++ b/nonebot/internal/adapter/adapter.py
@@ -2,9 +2,8 @@ import abc
from contextlib import asynccontextmanager
from typing import Any, Dict, AsyncGenerator
-from ._bot import Bot
from nonebot.config import Config
-from nonebot.drivers import (
+from nonebot.internal.driver import (
Driver,
Request,
Response,
@@ -15,61 +14,93 @@ from nonebot.drivers import (
WebSocketServerSetup,
)
+from .bot import Bot
+
class Adapter(abc.ABC):
+ """协议适配器基类。
+
+ 通常,在 Adapter 中编写协议通信相关代码,如: 建立通信连接、处理接收与发送 data 等。
+
+ 参数:
+ driver: {ref}`nonebot.drivers.Driver` 实例
+ kwargs: 其他由 {ref}`nonebot.drivers.Driver.register_adapter` 传入的额外参数
+ """
+
def __init__(self, driver: Driver, **kwargs: Any):
self.driver: Driver = driver
+ """{ref}`nonebot.drivers.Driver` 实例"""
self.bots: Dict[str, Bot] = {}
+ """本协议适配器已建立连接的 {ref}`nonebot.adapters.Bot` 实例"""
@classmethod
@abc.abstractmethod
def get_name(cls) -> str:
+ """当前协议适配器的名称"""
raise NotImplementedError
@property
def config(self) -> Config:
+ """全局 NoneBot 配置"""
return self.driver.config
def bot_connect(self, bot: Bot) -> None:
+ """告知 NoneBot 建立了一个新的 {ref}`nonebot.adapters.Bot` 连接。
+
+ 当有新的 {ref}`nonebot.adapters.Bot` 实例连接建立成功时调用。
+
+ 参数:
+ bot: {ref}`nonebot.adapters.Bot` 实例
+ """
self.driver._bot_connect(bot)
self.bots[bot.self_id] = bot
def bot_disconnect(self, bot: Bot) -> None:
+ """告知 NoneBot {ref}`nonebot.adapters.Bot` 连接已断开。
+
+ 当有 {ref}`nonebot.adapters.Bot` 实例连接断开时调用。
+
+ 参数:
+ bot: {ref}`nonebot.adapters.Bot` 实例
+ """
self.driver._bot_disconnect(bot)
self.bots.pop(bot.self_id, None)
def setup_http_server(self, setup: HTTPServerSetup):
+ """设置一个 HTTP 服务器路由配置"""
if not isinstance(self.driver, ReverseDriver):
raise TypeError("Current driver does not support http server")
self.driver.setup_http_server(setup)
def setup_websocket_server(self, setup: WebSocketServerSetup):
+ """设置一个 WebSocket 服务器路由配置"""
if not isinstance(self.driver, ReverseDriver):
raise TypeError("Current driver does not support websocket server")
self.driver.setup_websocket_server(setup)
async def request(self, setup: Request) -> Response:
+ """进行一个 HTTP 客户端请求"""
if not isinstance(self.driver, ForwardDriver):
raise TypeError("Current driver does not support http client")
return await self.driver.request(setup)
@asynccontextmanager
async def websocket(self, setup: Request) -> AsyncGenerator[WebSocket, None]:
+ """建立一个 WebSocket 客户端连接请求"""
if not isinstance(self.driver, ForwardDriver):
raise TypeError("Current driver does not support websocket client")
async with self.driver.websocket(setup) as ws:
yield ws
@abc.abstractmethod
- async def _call_api(self, bot: Bot, api: str, **data) -> Any:
- """
- :说明:
+ async def _call_api(self, bot: Bot, api: str, **data: Any) -> Any:
+ """`Adapter` 实际调用 api 的逻辑实现函数,实现该方法以调用 api。
- ``adapter`` 实际调用 api 的逻辑实现函数,实现该方法以调用 api。
-
- :参数:
-
- * ``api: str``: API 名称
- * ``**data``: API 数据
+ 参数:
+ api: API 名称
+ data: API 数据
"""
raise NotImplementedError
+
+
+__autodoc__ = {"Adapter._call_api": True}
diff --git a/nonebot/adapters/_bot.py b/nonebot/internal/adapter/bot.py
similarity index 66%
rename from nonebot/adapters/_bot.py
rename to nonebot/internal/adapter/bot.py
index 058b9ec8..6d9a0074 100644
--- a/nonebot/adapters/_bot.py
+++ b/nonebot/internal/adapter/bot.py
@@ -10,9 +10,9 @@ from nonebot.exception import MockApiException
from nonebot.typing import T_CalledAPIHook, T_CallingAPIHook
if TYPE_CHECKING:
- from ._event import Event
- from ._adapter import Adapter
- from ._message import Message, MessageSegment
+ from .event import Event
+ from .adapter import Adapter
+ from .message import Message, MessageSegment
class _ApiCall(Protocol):
@@ -21,29 +21,23 @@ class _ApiCall(Protocol):
class Bot(abc.ABC):
- """
- Bot 基类。用于处理上报消息,并提供 API 调用接口。
+ """Bot 基类。
+
+ 用于处理上报消息,并提供 API 调用接口。
+
+ 参数:
+ adapter: 协议适配器实例
+ self_id: 机器人 ID
"""
_calling_api_hook: Set[T_CallingAPIHook] = set()
- """
- :类型: ``Set[T_CallingAPIHook]``
- :说明: call_api 时执行的函数
- """
+ """call_api 时执行的函数"""
_called_api_hook: Set[T_CalledAPIHook] = set()
- """
- :类型: ``Set[T_CalledAPIHook]``
- :说明: call_api 后执行的函数
- """
+ """call_api 后执行的函数"""
def __init__(self, adapter: "Adapter", self_id: str):
- """
- :参数:
-
- * ``self_id: str``: 机器人 ID
- * ``request: HTTPConnection``: request 连接对象
- """
self.adapter: "Adapter" = adapter
+ """协议适配器实例"""
self.self_id: str = self_id
"""机器人 ID"""
@@ -52,29 +46,26 @@ class Bot(abc.ABC):
@property
def type(self) -> str:
+ """协议适配器名称"""
return self.adapter.get_name()
@property
def config(self) -> Config:
+ """全局 NoneBot 配置"""
return self.adapter.config
async def call_api(self, api: str, **data: Any) -> Any:
- """
- :说明:
+ """调用机器人 API 接口,可以通过该函数或直接通过 bot 属性进行调用
- 调用机器人 API 接口,可以通过该函数或直接通过 bot 属性进行调用
-
- :参数:
-
- * ``api: str``: API 名称
- * ``**data``: API 数据
-
- :示例:
-
- .. code-block:: python
+ 参数:
+ api: API 名称
+ data: API 数据
+ 用法:
+ ```python
await bot.call_api("send_msg", message="hello world")
await bot.send_msg(message="hello world")
+ ```
"""
result: Any = None
@@ -128,51 +119,44 @@ class Bot(abc.ABC):
@abc.abstractmethod
async def send(
- self, event: "Event", message: Union[str, "Message", "MessageSegment"], **kwargs
+ self,
+ event: "Event",
+ message: Union[str, "Message", "MessageSegment"],
+ **kwargs: Any,
) -> Any:
- """
- :说明:
+ """调用机器人基础发送消息接口
- 调用机器人基础发送消息接口
-
- :参数:
-
- * ``event: Event``: 上报事件
- * ``message: Union[str, Message, MessageSegment]``: 要发送的消息
- * ``**kwargs``
+ 参数:
+ event: 上报事件
+ message: 要发送的消息
+ kwargs: 任意额外参数
"""
raise NotImplementedError
@classmethod
def on_calling_api(cls, func: T_CallingAPIHook) -> T_CallingAPIHook:
- """
- :说明:
+ """调用 api 预处理。
- 调用 api 预处理。
+ 钩子函数参数:
- :参数:
-
- * ``bot: Bot``: 当前 bot 对象
- * ``api: str``: 调用的 api 名称
- * ``data: Dict[str, Any]``: api 调用的参数字典
+ - bot: 当前 bot 对象
+ - api: 调用的 api 名称
+ - data: api 调用的参数字典
"""
cls._calling_api_hook.add(func)
return func
@classmethod
def on_called_api(cls, func: T_CalledAPIHook) -> T_CalledAPIHook:
- """
- :说明:
+ """调用 api 后处理。
- 调用 api 后处理。
+ 钩子函数参数:
- :参数:
-
- * ``bot: Bot``: 当前 bot 对象
- * ``exception: Optional[Exception]``: 调用 api 时发生的错误
- * ``api: str``: 调用的 api 名称
- * ``data: Dict[str, Any]``: api 调用的参数字典
- * ``result: Any``: api 调用的返回
+ - bot: 当前 bot 对象
+ - exception: 调用 api 时发生的错误
+ - api: 调用的 api 名称
+ - data: api 调用的参数字典
+ - result: api 调用的返回
"""
cls._called_api_hook.add(func)
return func
diff --git a/nonebot/internal/adapter/event.py b/nonebot/internal/adapter/event.py
new file mode 100644
index 00000000..8ef3123b
--- /dev/null
+++ b/nonebot/internal/adapter/event.py
@@ -0,0 +1,70 @@
+import abc
+
+from pydantic import BaseModel
+
+from nonebot.utils import DataclassEncoder
+
+from .message import Message
+
+
+class Event(abc.ABC, BaseModel):
+ """Event 基类。提供获取关键信息的方法,其余信息可直接获取。"""
+
+ class Config:
+ extra = "allow"
+ json_encoders = {Message: DataclassEncoder}
+
+ @abc.abstractmethod
+ def get_type(self) -> str:
+ """获取事件类型的方法,类型通常为 NoneBot 内置的四种类型。"""
+ raise NotImplementedError
+
+ @abc.abstractmethod
+ def get_event_name(self) -> str:
+ """获取事件名称的方法。"""
+ raise NotImplementedError
+
+ @abc.abstractmethod
+ def get_event_description(self) -> str:
+ """获取事件描述的方法,通常为事件具体内容。"""
+ raise NotImplementedError
+
+ def __str__(self) -> str:
+ return f"[{self.get_event_name()}]: {self.get_event_description()}"
+
+ def get_log_string(self) -> str:
+ """获取事件日志信息的方法。
+
+ 通常你不需要修改这个方法,只有当希望 NoneBot 隐藏该事件日志时,可以抛出 `NoLogException` 异常。
+
+ 异常:
+ NoLogException
+ """
+ return f"[{self.get_event_name()}]: {self.get_event_description()}"
+
+ @abc.abstractmethod
+ def get_user_id(self) -> str:
+ """获取事件主体 id 的方法,通常是用户 id 。"""
+ raise NotImplementedError
+
+ @abc.abstractmethod
+ def get_session_id(self) -> str:
+ """获取会话 id 的方法,用于判断当前事件属于哪一个会话,通常是用户 id、群组 id 组合。"""
+ raise NotImplementedError
+
+ @abc.abstractmethod
+ def get_message(self) -> "Message":
+ """获取事件消息内容的方法。"""
+ raise NotImplementedError
+
+ def get_plaintext(self) -> str:
+ """获取消息纯文本的方法。
+
+ 通常不需要修改,默认通过 `get_message().extract_plain_text` 获取。
+ """
+ return self.get_message().extract_plain_text()
+
+ @abc.abstractmethod
+ def is_tome(self) -> bool:
+ """获取事件是否与机器人有关的方法。"""
+ raise NotImplementedError
diff --git a/nonebot/internal/adapter/message.py b/nonebot/internal/adapter/message.py
new file mode 100644
index 00000000..0926077e
--- /dev/null
+++ b/nonebot/internal/adapter/message.py
@@ -0,0 +1,325 @@
+import abc
+from copy import deepcopy
+from dataclasses import field, asdict, dataclass
+from typing import (
+ Any,
+ Dict,
+ List,
+ Type,
+ Tuple,
+ Union,
+ Generic,
+ TypeVar,
+ Iterable,
+ Optional,
+ overload,
+)
+
+from pydantic import parse_obj_as
+
+from .template import MessageTemplate
+
+T = TypeVar("T")
+TMS = TypeVar("TMS", bound="MessageSegment")
+TM = TypeVar("TM", bound="Message")
+
+
+@dataclass
+class MessageSegment(abc.ABC, Generic[TM]):
+ """消息段基类"""
+
+ type: str
+ """消息段类型"""
+ data: Dict[str, Any] = field(default_factory=dict)
+ """消息段数据"""
+
+ @classmethod
+ @abc.abstractmethod
+ def get_message_class(cls) -> Type[TM]:
+ """获取消息数组类型"""
+ raise NotImplementedError
+
+ @abc.abstractmethod
+ def __str__(self) -> str:
+ """该消息段所代表的 str,在命令匹配部分使用"""
+ raise NotImplementedError
+
+ def __len__(self) -> int:
+ return len(str(self))
+
+ def __ne__(self: T, other: T) -> bool:
+ return not self == other
+
+ def __add__(self: TMS, other: Union[str, TMS, Iterable[TMS]]) -> TM:
+ return self.get_message_class()(self) + other
+
+ def __radd__(self: TMS, other: Union[str, TMS, Iterable[TMS]]) -> TM:
+ return self.get_message_class()(other) + self
+
+ @classmethod
+ def __get_validators__(cls):
+ yield cls._validate
+
+ @classmethod
+ def _validate(cls, value):
+ if isinstance(value, cls):
+ return value
+ if not isinstance(value, dict):
+ raise ValueError(f"Expected dict for MessageSegment, got {type(value)}")
+ return cls(**value)
+
+ def get(self, key: str, default: Any = None):
+ return asdict(self).get(key, default)
+
+ def keys(self):
+ return asdict(self).keys()
+
+ def values(self):
+ return asdict(self).values()
+
+ def items(self):
+ return asdict(self).items()
+
+ def copy(self: T) -> T:
+ return deepcopy(self)
+
+ @abc.abstractmethod
+ def is_text(self) -> bool:
+ """当前消息段是否为纯文本"""
+ raise NotImplementedError
+
+
+class Message(List[TMS], abc.ABC):
+ """消息数组
+
+ 参数:
+ message: 消息内容
+ """
+
+ def __init__(
+ self,
+ message: Union[str, None, Iterable[TMS], TMS] = None,
+ ):
+ super().__init__()
+ if message is None:
+ return
+ elif isinstance(message, str):
+ self.extend(self._construct(message))
+ elif isinstance(message, MessageSegment):
+ self.append(message)
+ elif isinstance(message, Iterable):
+ self.extend(message)
+ else:
+ self.extend(self._construct(message)) # pragma: no cover
+
+ @classmethod
+ def template(cls: Type[TM], format_string: Union[str, TM]) -> MessageTemplate[TM]:
+ """创建消息模板。
+
+ 用法和 `str.format` 大致相同, 但是可以输出消息对象, 并且支持以 `Message` 对象作为消息模板
+
+ 并且提供了拓展的格式化控制符, 可以用适用于该消息类型的 `MessageSegment` 的工厂方法创建消息
+
+ 参数:
+ format_string: 格式化模板
+
+ 返回:
+ 消息格式化器
+ """
+ return MessageTemplate(format_string, cls)
+
+ @classmethod
+ @abc.abstractmethod
+ def get_segment_class(cls) -> Type[TMS]:
+ """获取消息段类型"""
+ raise NotImplementedError
+
+ def __str__(self) -> str:
+ return "".join(str(seg) for seg in self)
+
+ @classmethod
+ def __get_validators__(cls):
+ yield cls._validate
+
+ @classmethod
+ def _validate(cls, value):
+ if isinstance(value, cls):
+ return value
+ elif isinstance(value, Message):
+ raise ValueError(f"Type {type(value)} can not be converted to {cls}")
+ elif isinstance(value, str):
+ pass
+ elif isinstance(value, dict):
+ value = parse_obj_as(cls.get_segment_class(), value)
+ elif isinstance(value, Iterable):
+ value = [parse_obj_as(cls.get_segment_class(), v) for v in value]
+ else:
+ raise ValueError(
+ f"Expected str, dict or iterable for Message, got {type(value)}"
+ )
+ return cls(value)
+
+ @staticmethod
+ @abc.abstractmethod
+ def _construct(msg: str) -> Iterable[TMS]:
+ """构造消息数组"""
+ raise NotImplementedError
+
+ def __add__(self: TM, other: Union[str, TMS, Iterable[TMS]]) -> TM:
+ result = self.copy()
+ result += other
+ return result
+
+ def __radd__(self: TM, other: Union[str, TMS, Iterable[TMS]]) -> TM:
+ result = self.__class__(other)
+ return result + self
+
+ def __iadd__(self: TM, other: Union[str, TMS, Iterable[TMS]]) -> TM:
+ if isinstance(other, str):
+ self.extend(self._construct(other))
+ elif isinstance(other, MessageSegment):
+ self.append(other)
+ elif isinstance(other, Iterable):
+ self.extend(other)
+ else:
+ raise ValueError(f"Unsupported type: {type(other)}") # pragma: no cover
+ return self
+
+ @overload
+ def __getitem__(self: TM, __args: str) -> TM:
+ """
+ 参数:
+ __args: 消息段类型
+
+ 返回:
+ 所有类型为 `__args` 的消息段
+ """
+
+ @overload
+ def __getitem__(self, __args: Tuple[str, int]) -> TMS:
+ """
+ 参数:
+ __args: 消息段类型和索引
+
+ 返回:
+ 类型为 `__args[0]` 的消息段第 `__args[1]` 个
+ """
+
+ @overload
+ def __getitem__(self: TM, __args: Tuple[str, slice]) -> TM:
+ """
+ 参数:
+ __args: 消息段类型和切片
+
+ 返回:
+ 类型为 `__args[0]` 的消息段切片 `__args[1]`
+ """
+
+ @overload
+ def __getitem__(self, __args: int) -> TMS:
+ """
+ 参数:
+ __args: 索引
+
+ 返回:
+ 第 `__args` 个消息段
+ """
+
+ @overload
+ def __getitem__(self: TM, __args: slice) -> TM:
+ """
+ 参数:
+ __args: 切片
+
+ 返回:
+ 消息切片 `__args`
+ """
+
+ def __getitem__(
+ self: TM,
+ args: Union[
+ str,
+ Tuple[str, int],
+ Tuple[str, slice],
+ int,
+ slice,
+ ],
+ ) -> Union[TMS, TM]:
+ arg1, arg2 = args if isinstance(args, tuple) else (args, None)
+ if isinstance(arg1, int) and arg2 is None:
+ return super().__getitem__(arg1)
+ elif isinstance(arg1, slice) and arg2 is None:
+ return self.__class__(super().__getitem__(arg1))
+ elif isinstance(arg1, str) and arg2 is None:
+ return self.__class__(seg for seg in self if seg.type == arg1)
+ elif isinstance(arg1, str) and isinstance(arg2, int):
+ return [seg for seg in self if seg.type == arg1][arg2]
+ elif isinstance(arg1, str) and isinstance(arg2, slice):
+ return self.__class__([seg for seg in self if seg.type == arg1][arg2])
+ else:
+ raise ValueError("Incorrect arguments to slice") # pragma: no cover
+
+ def index(self, value: Union[TMS, str], *args) -> int:
+ if isinstance(value, str):
+ first_segment = next((seg for seg in self if seg.type == value), None)
+ if first_segment is None:
+ raise ValueError(f"Segment with type {value} is not in message")
+ return super().index(first_segment, *args)
+ return super().index(value, *args)
+
+ def get(self: TM, type_: str, count: Optional[int] = None) -> TM:
+ if count is None:
+ return self[type_]
+
+ iterator, filtered = (
+ seg for seg in self if seg.type == type_
+ ), self.__class__()
+ for _ in range(count):
+ seg = next(iterator, None)
+ if seg is None:
+ break
+ filtered.append(seg)
+ return filtered
+
+ def count(self, value: Union[TMS, str]) -> int:
+ return len(self[value]) if isinstance(value, str) else super().count(value)
+
+ def append(self: TM, obj: Union[str, TMS]) -> TM:
+ """添加一个消息段到消息数组末尾。
+
+ 参数:
+ obj: 要添加的消息段
+ """
+ if isinstance(obj, MessageSegment):
+ super().append(obj)
+ elif isinstance(obj, str):
+ self.extend(self._construct(obj))
+ else:
+ raise ValueError(f"Unexpected type: {type(obj)} {obj}") # pragma: no cover
+ return self
+
+ def extend(self: TM, obj: Union[TM, Iterable[TMS]]) -> TM:
+ """拼接一个消息数组或多个消息段到消息数组末尾。
+
+ 参数:
+ obj: 要添加的消息数组
+ """
+ for segment in obj:
+ self.append(segment)
+ return self
+
+ def copy(self: TM) -> TM:
+ return deepcopy(self)
+
+ def extract_plain_text(self) -> str:
+ """提取消息内纯文本消息"""
+
+ return "".join(str(seg) for seg in self if seg.is_text())
+
+
+__autodoc__ = {
+ "MessageSegment.__str__": True,
+ "MessageSegment.__add__": True,
+ "Message.__getitem__": True,
+ "Message._construct": True,
+}
diff --git a/nonebot/adapters/_template.py b/nonebot/internal/adapter/template.py
similarity index 86%
rename from nonebot/adapters/_template.py
rename to nonebot/internal/adapter/template.py
index 8460436e..e04830a8 100644
--- a/nonebot/adapters/_template.py
+++ b/nonebot/internal/adapter/template.py
@@ -1,4 +1,3 @@
-import inspect
import functools
from string import Formatter
from typing import (
@@ -21,7 +20,7 @@ from typing import (
)
if TYPE_CHECKING:
- from . import Message, MessageSegment
+ from .message import Message, MessageSegment
TM = TypeVar("TM", bound="Message")
TF = TypeVar("TF", str, "Message")
@@ -31,7 +30,12 @@ FormatSpecFunc_T = TypeVar("FormatSpecFunc_T", bound=FormatSpecFunc)
class MessageTemplate(Formatter, Generic[TF]):
- """消息模板格式化实现类"""
+ """消息模板格式化实现类。
+
+ 参数:
+ template: 模板
+ factory: 消息类型工厂,默认为 `str`
+ """
@overload
def __init__(
@@ -46,16 +50,6 @@ class MessageTemplate(Formatter, Generic[TF]):
...
def __init__(self, template, factory=str) -> None:
- """
- :说明:
-
- 创建一个模板
-
- :参数:
-
- * ``template: Union[str, Message]``: 模板
- * ``factory: Union[str, Message]``: 消息构造类型,默认为 `str`
- """
self.template: TF = template
self.factory: Type[TF] = factory
self.format_specs: Dict[str, FormatSpecFunc] = {}
@@ -69,12 +63,15 @@ class MessageTemplate(Formatter, Generic[TF]):
self.format_specs[name] = spec
return spec
- def format(self, *args: Any, **kwargs: Any) -> TF:
- """
- :说明:
+ def format(self, *args, **kwargs):
+ """根据传入参数和模板生成消息对象"""
+ return self._format(args, kwargs)
- 根据模板和参数生成消息对象
- """
+ def format_map(self, mapping: Mapping[str, Any]) -> TF:
+ """根据传入字典和模板生成消息对象, 在传入字段名不是有效标识符时有用"""
+ return self._format([], mapping)
+
+ def _format(self, args: Sequence[Any], kwargs: Mapping[str, Any]) -> TF:
msg = self.factory()
if isinstance(self.template, str):
msg += self.vformat(self.template, args, kwargs)
@@ -107,7 +104,7 @@ class MessageTemplate(Formatter, Generic[TF]):
if recursion_depth < 0:
raise ValueError("Max string recursion exceeded")
- results: List[Any] = []
+ results: List[Any] = [self.factory()]
for (literal_text, field_name, format_spec, conversion) in self.parse(
format_string
@@ -165,17 +162,14 @@ class MessageTemplate(Formatter, Generic[TF]):
formatted_text = self.format_field(obj, str(format_control))
results.append(formatted_text)
- return (
- self.factory(functools.reduce(self._add, results or [""])),
- auto_arg_index,
- )
+ return functools.reduce(self._add, results), auto_arg_index
def format_field(self, value: Any, format_spec: str) -> Any:
formatter: Optional[FormatSpecFunc] = self.format_specs.get(format_spec)
if formatter is None and not issubclass(self.factory, str):
segment_class: Type["MessageSegment"] = self.factory.get_segment_class()
method = getattr(segment_class, format_spec, None)
- if inspect.ismethod(method):
+ if callable(method) and not cast(str, method.__name__).startswith("_"):
formatter = getattr(segment_class, format_spec)
return (
super().format_field(value, format_spec)
diff --git a/nonebot/internal/driver/__init__.py b/nonebot/internal/driver/__init__.py
new file mode 100644
index 00000000..533ecfa7
--- /dev/null
+++ b/nonebot/internal/driver/__init__.py
@@ -0,0 +1,25 @@
+from .model import URL as URL
+from .model import RawURL as RawURL
+from .driver import Driver as Driver
+from .model import Cookies as Cookies
+from .model import Request as Request
+from .model import FileType as FileType
+from .model import Response as Response
+from .model import DataTypes as DataTypes
+from .model import FileTypes as FileTypes
+from .model import WebSocket as WebSocket
+from .model import FilesTypes as FilesTypes
+from .model import QueryTypes as QueryTypes
+from .model import CookieTypes as CookieTypes
+from .model import FileContent as FileContent
+from .model import HTTPVersion as HTTPVersion
+from .model import HeaderTypes as HeaderTypes
+from .model import SimpleQuery as SimpleQuery
+from .model import ContentTypes as ContentTypes
+from .driver import ForwardMixin as ForwardMixin
+from .model import QueryVariable as QueryVariable
+from .driver import ForwardDriver as ForwardDriver
+from .driver import ReverseDriver as ReverseDriver
+from .driver import combine_driver as combine_driver
+from .model import HTTPServerSetup as HTTPServerSetup
+from .model import WebSocketServerSetup as WebSocketServerSetup
diff --git a/nonebot/internal/driver/driver.py b/nonebot/internal/driver/driver.py
new file mode 100644
index 00000000..d48b60d5
--- /dev/null
+++ b/nonebot/internal/driver/driver.py
@@ -0,0 +1,234 @@
+import abc
+import asyncio
+from contextlib import asynccontextmanager
+from typing import TYPE_CHECKING, Any, Set, Dict, Type, Callable, AsyncGenerator
+
+from nonebot.log import logger
+from nonebot.utils import escape_tag
+from nonebot.config import Env, Config
+from nonebot.dependencies import Dependent
+from nonebot.typing import T_BotConnectionHook, T_BotDisconnectionHook
+from nonebot.internal.params import BotParam, DependParam, DefaultParam
+
+from .model import Request, Response, WebSocket, HTTPServerSetup, WebSocketServerSetup
+
+if TYPE_CHECKING:
+ from nonebot.internal.adapter import Bot, Adapter
+
+
+BOT_HOOK_PARAMS = [DependParam, BotParam, DefaultParam]
+
+
+class Driver(abc.ABC):
+ """Driver 基类。
+
+ 参数:
+ env: 包含环境信息的 Env 对象
+ config: 包含配置信息的 Config 对象
+ """
+
+ _adapters: Dict[str, "Adapter"] = {}
+ """已注册的适配器列表"""
+ _bot_connection_hook: Set[Dependent[Any]] = set()
+ """Bot 连接建立时执行的函数"""
+ _bot_disconnection_hook: Set[Dependent[Any]] = set()
+ """Bot 连接断开时执行的函数"""
+
+ def __init__(self, env: Env, config: Config):
+ self.env: str = env.environment
+ """环境名称"""
+ self.config: Config = config
+ """全局配置对象"""
+ self._clients: Dict[str, "Bot"] = {}
+
+ @property
+ def bots(self) -> Dict[str, "Bot"]:
+ """获取当前所有已连接的 Bot"""
+ return self._clients
+
+ def register_adapter(self, adapter: Type["Adapter"], **kwargs) -> None:
+ """注册一个协议适配器
+
+ 参数:
+ adapter: 适配器类
+ kwargs: 其他传递给适配器的参数
+ """
+ name = adapter.get_name()
+ if name in self._adapters:
+ logger.opt(colors=True).debug(
+ f'Adapter "{escape_tag(name)}" already exists'
+ )
+ return
+ self._adapters[name] = adapter(self, **kwargs)
+ logger.opt(colors=True).debug(
+ f'Succeeded to load adapter "{escape_tag(name)}"'
+ )
+
+ @property
+ @abc.abstractmethod
+ def type(self) -> str:
+ """驱动类型名称"""
+ raise NotImplementedError
+
+ @property
+ @abc.abstractmethod
+ def logger(self):
+ """驱动专属 logger 日志记录器"""
+ raise NotImplementedError
+
+ @abc.abstractmethod
+ def run(self, *args, **kwargs):
+ """
+ 启动驱动框架
+ """
+ logger.opt(colors=True).debug(
+ f"Loaded adapters: {escape_tag(', '.join(self._adapters))}"
+ )
+
+ @abc.abstractmethod
+ def on_startup(self, func: Callable) -> Callable:
+ """注册一个在驱动器启动时执行的函数"""
+ raise NotImplementedError
+
+ @abc.abstractmethod
+ def on_shutdown(self, func: Callable) -> Callable:
+ """注册一个在驱动器停止时执行的函数"""
+ raise NotImplementedError
+
+ @classmethod
+ def on_bot_connect(cls, func: T_BotConnectionHook) -> T_BotConnectionHook:
+ """装饰一个函数使他在 bot 连接成功时执行。
+
+ 钩子函数参数:
+
+ - bot: 当前连接上的 Bot 对象
+ """
+ cls._bot_connection_hook.add(
+ Dependent[Any].parse(call=func, allow_types=BOT_HOOK_PARAMS)
+ )
+ return func
+
+ @classmethod
+ def on_bot_disconnect(cls, func: T_BotDisconnectionHook) -> T_BotDisconnectionHook:
+ """装饰一个函数使他在 bot 连接断开时执行。
+
+ 钩子函数参数:
+
+ - bot: 当前连接上的 Bot 对象
+ """
+ cls._bot_disconnection_hook.add(
+ Dependent[Any].parse(call=func, allow_types=BOT_HOOK_PARAMS)
+ )
+ return func
+
+ def _bot_connect(self, bot: "Bot") -> None:
+ """在连接成功后,调用该函数来注册 bot 对象"""
+ if bot.self_id in self._clients:
+ raise RuntimeError(f"Duplicate bot connection with id {bot.self_id}")
+ self._clients[bot.self_id] = bot
+
+ async def _run_hook(bot: "Bot") -> None:
+ coros = list(map(lambda x: x(bot=bot), self._bot_connection_hook))
+ if coros:
+ try:
+ await asyncio.gather(*coros)
+ except Exception as e:
+ logger.opt(colors=True, exception=e).error(
+ "Error when running WebSocketConnection hook. "
+ "Running cancelled!"
+ )
+
+ asyncio.create_task(_run_hook(bot))
+
+ def _bot_disconnect(self, bot: "Bot") -> None:
+ """在连接断开后,调用该函数来注销 bot 对象"""
+ if bot.self_id in self._clients:
+ del self._clients[bot.self_id]
+
+ async def _run_hook(bot: "Bot") -> None:
+ coros = list(map(lambda x: x(bot=bot), self._bot_disconnection_hook))
+ if coros:
+ try:
+ await asyncio.gather(*coros)
+ except Exception as e:
+ logger.opt(colors=True, exception=e).error(
+ "Error when running WebSocketDisConnection hook. "
+ "Running cancelled!"
+ )
+
+ asyncio.create_task(_run_hook(bot))
+
+
+class ForwardMixin(abc.ABC):
+ """客户端混入基类。"""
+
+ @property
+ @abc.abstractmethod
+ def type(self) -> str:
+ """客户端驱动类型名称"""
+ raise NotImplementedError
+
+ @abc.abstractmethod
+ async def request(self, setup: Request) -> Response:
+ """发送一个 HTTP 请求"""
+ raise NotImplementedError
+
+ @abc.abstractmethod
+ @asynccontextmanager
+ async def websocket(self, setup: Request) -> AsyncGenerator[WebSocket, None]:
+ """发起一个 WebSocket 连接"""
+ raise NotImplementedError
+ yield # used for static type checking's generator detection
+
+
+class ForwardDriver(Driver, ForwardMixin):
+ """客户端基类。将客户端框架封装,以满足适配器使用。"""
+
+
+class ReverseDriver(Driver):
+ """服务端基类。将后端框架封装,以满足适配器使用。"""
+
+ @property
+ @abc.abstractmethod
+ def server_app(self) -> Any:
+ """驱动 APP 对象"""
+ raise NotImplementedError
+
+ @property
+ @abc.abstractmethod
+ def asgi(self) -> Any:
+ """驱动 ASGI 对象"""
+ raise NotImplementedError
+
+ @abc.abstractmethod
+ def setup_http_server(self, setup: "HTTPServerSetup") -> None:
+ """设置一个 HTTP 服务器路由配置"""
+ raise NotImplementedError
+
+ @abc.abstractmethod
+ def setup_websocket_server(self, setup: "WebSocketServerSetup") -> None:
+ """设置一个 WebSocket 服务器路由配置"""
+ raise NotImplementedError
+
+
+def combine_driver(driver: Type[Driver], *mixins: Type[ForwardMixin]) -> Type[Driver]:
+ """将一个驱动器和多个混入类合并。"""
+ # check first
+ assert issubclass(driver, Driver), "`driver` must be subclass of Driver"
+ assert all(
+ map(lambda m: issubclass(m, ForwardMixin), mixins)
+ ), "`mixins` must be subclass of ForwardMixin"
+
+ if not mixins:
+ return driver
+
+ class CombinedDriver(*mixins, driver, ForwardDriver): # type: ignore
+ @property
+ def type(self) -> str:
+ return (
+ driver.type.__get__(self)
+ + "+"
+ + "+".join(map(lambda x: x.type.__get__(self), mixins))
+ )
+
+ return CombinedDriver
diff --git a/nonebot/drivers/_model.py b/nonebot/internal/driver/model.py
similarity index 93%
rename from nonebot/drivers/_model.py
rename to nonebot/internal/driver/model.py
index 0484e054..b3797e4f 100644
--- a/nonebot/drivers/_model.py
+++ b/nonebot/internal/driver/model.py
@@ -1,5 +1,6 @@
import abc
from enum import Enum
+from dataclasses import dataclass
from http.cookiejar import Cookie, CookieJar
from typing import (
IO,
@@ -9,8 +10,10 @@ from typing import (
Tuple,
Union,
Mapping,
+ Callable,
Iterator,
Optional,
+ Awaitable,
MutableMapping,
)
@@ -168,8 +171,7 @@ class WebSocket(abc.ABC):
@abc.abstractmethod
def closed(self) -> bool:
"""
- :类型: ``bool``
- :说明: 连接是否已经关闭
+ 连接是否已经关闭
"""
raise NotImplementedError
@@ -315,3 +317,22 @@ class Cookies(MutableMapping):
)
return f""
+
+
+@dataclass
+class HTTPServerSetup:
+ """HTTP 服务器路由配置。"""
+
+ path: URL # path should not be absolute, check it by URL.is_absolute() == False
+ method: str
+ name: str
+ handle_func: Callable[[Request], Awaitable[Response]]
+
+
+@dataclass
+class WebSocketServerSetup:
+ """WebSocket 服务器路由配置。"""
+
+ path: URL # path should not be absolute, check it by URL.is_absolute() == False
+ name: str
+ handle_func: Callable[[WebSocket], Awaitable[Any]]
diff --git a/nonebot/internal/matcher.py b/nonebot/internal/matcher.py
new file mode 100644
index 00000000..16ba232f
--- /dev/null
+++ b/nonebot/internal/matcher.py
@@ -0,0 +1,721 @@
+from types import ModuleType
+from datetime import datetime
+from contextvars import ContextVar
+from collections import defaultdict
+from contextlib import AsyncExitStack
+from typing import (
+ TYPE_CHECKING,
+ Any,
+ Dict,
+ List,
+ Type,
+ Union,
+ TypeVar,
+ Callable,
+ NoReturn,
+ Optional,
+)
+
+from nonebot.log import logger
+from nonebot.dependencies import Dependent
+from nonebot.consts import (
+ ARG_KEY,
+ RECEIVE_KEY,
+ REJECT_TARGET,
+ LAST_RECEIVE_KEY,
+ REJECT_CACHE_TARGET,
+)
+from nonebot.typing import (
+ Any,
+ T_State,
+ T_Handler,
+ T_TypeUpdater,
+ T_DependencyCache,
+ T_PermissionUpdater,
+)
+from nonebot.exception import (
+ TypeMisMatch,
+ PausedException,
+ StopPropagation,
+ SkippedException,
+ FinishedException,
+ RejectedException,
+)
+
+from .rule import Rule
+from .permission import USER, Permission
+from .adapter import Bot, Event, Message, MessageSegment, MessageTemplate
+from .params import (
+ Depends,
+ ArgParam,
+ BotParam,
+ EventParam,
+ StateParam,
+ DependParam,
+ DefaultParam,
+ MatcherParam,
+)
+
+if TYPE_CHECKING:
+ from nonebot.plugin import Plugin
+
+T = TypeVar("T")
+
+matchers: Dict[int, List[Type["Matcher"]]] = defaultdict(list)
+"""用于存储当前所有的事件响应器"""
+current_bot: ContextVar[Bot] = ContextVar("current_bot")
+current_event: ContextVar[Event] = ContextVar("current_event")
+current_matcher: ContextVar["Matcher"] = ContextVar("current_matcher")
+current_handler: ContextVar[Dependent] = ContextVar("current_handler")
+
+
+class MatcherMeta(type):
+ if TYPE_CHECKING:
+ module: Optional[str]
+ plugin_name: Optional[str]
+ module_name: Optional[str]
+ module_prefix: Optional[str]
+ type: str
+ rule: Rule
+ permission: Permission
+ handlers: List[T_Handler]
+ priority: int
+ block: bool
+ temp: bool
+ expire_time: Optional[datetime]
+
+ def __repr__(self) -> str:
+ return (
+ f""
+ )
+
+ def __str__(self) -> str:
+ return repr(self)
+
+
+class Matcher(metaclass=MatcherMeta):
+ """事件响应器类"""
+
+ plugin: Optional["Plugin"] = None
+ """事件响应器所在插件"""
+ module: Optional[ModuleType] = None
+ """事件响应器所在插件模块"""
+ plugin_name: Optional[str] = None
+ """事件响应器所在插件名"""
+ module_name: Optional[str] = None
+ """事件响应器所在点分割插件模块路径"""
+
+ type: str = ""
+ """事件响应器类型"""
+ rule: Rule = Rule()
+ """事件响应器匹配规则"""
+ permission: Permission = Permission()
+ """事件响应器触发权限"""
+ handlers: List[Dependent[Any]] = []
+ """事件响应器拥有的事件处理函数列表"""
+ priority: int = 1
+ """事件响应器优先级"""
+ block: bool = False
+ """事件响应器是否阻止事件传播"""
+ temp: bool = False
+ """事件响应器是否为临时"""
+ expire_time: Optional[datetime] = None
+ """事件响应器过期时间点"""
+
+ _default_state: T_State = {}
+ """事件响应器默认状态"""
+
+ _default_type_updater: Optional[Dependent[str]] = None
+ """事件响应器类型更新函数"""
+ _default_permission_updater: Optional[Dependent[Permission]] = None
+ """事件响应器权限更新函数"""
+
+ HANDLER_PARAM_TYPES = [
+ DependParam,
+ BotParam,
+ EventParam,
+ StateParam,
+ ArgParam,
+ MatcherParam,
+ DefaultParam,
+ ]
+
+ def __init__(self):
+ self.handlers = self.handlers.copy()
+ self.state = self._default_state.copy()
+
+ def __repr__(self) -> str:
+ return (
+ f""
+ )
+
+ def __str__(self) -> str:
+ return repr(self)
+
+ @classmethod
+ def new(
+ cls,
+ type_: str = "",
+ rule: Optional[Rule] = None,
+ permission: Optional[Permission] = None,
+ handlers: Optional[List[Union[T_Handler, Dependent[Any]]]] = None,
+ temp: bool = False,
+ priority: int = 1,
+ block: bool = False,
+ *,
+ plugin: Optional["Plugin"] = None,
+ module: Optional[ModuleType] = None,
+ expire_time: Optional[datetime] = None,
+ default_state: Optional[T_State] = None,
+ default_type_updater: Optional[Union[T_TypeUpdater, Dependent[str]]] = None,
+ default_permission_updater: Optional[
+ Union[T_PermissionUpdater, Dependent[Permission]]
+ ] = None,
+ ) -> Type["Matcher"]:
+ """
+ 创建一个新的事件响应器,并存储至 `matchers <#matchers>`_
+
+ 参数:
+ type_: 事件响应器类型,与 `event.get_type()` 一致时触发,空字符串表示任意
+ rule: 匹配规则
+ permission: 权限
+ handlers: 事件处理函数列表
+ temp: 是否为临时事件响应器,即触发一次后删除
+ priority: 响应优先级
+ block: 是否阻止事件向更低优先级的响应器传播
+ plugin: 事件响应器所在插件
+ module: 事件响应器所在模块
+ default_state: 默认状态 `state`
+ expire_time: 事件响应器最终有效时间点,过时即被删除
+
+ 返回:
+ Type[Matcher]: 新的事件响应器类
+ """
+ NewMatcher = type(
+ "Matcher",
+ (Matcher,),
+ {
+ "plugin": plugin,
+ "module": module,
+ "plugin_name": plugin and plugin.name,
+ "module_name": module and module.__name__,
+ "type": type_,
+ "rule": rule or Rule(),
+ "permission": permission or Permission(),
+ "handlers": [
+ handler
+ if isinstance(handler, Dependent)
+ else Dependent[Any].parse(
+ call=handler, allow_types=cls.HANDLER_PARAM_TYPES
+ )
+ for handler in handlers
+ ]
+ if handlers
+ else [],
+ "temp": temp,
+ "expire_time": expire_time,
+ "priority": priority,
+ "block": block,
+ "_default_state": default_state or {},
+ "_default_type_updater": (
+ default_type_updater
+ if isinstance(default_type_updater, Dependent)
+ else default_type_updater
+ and Dependent[str].parse(
+ call=default_type_updater, allow_types=cls.HANDLER_PARAM_TYPES
+ )
+ ),
+ "_default_permission_updater": (
+ default_permission_updater
+ if isinstance(default_permission_updater, Dependent)
+ else default_permission_updater
+ and Dependent[Permission].parse(
+ call=default_permission_updater,
+ allow_types=cls.HANDLER_PARAM_TYPES,
+ )
+ ),
+ },
+ )
+
+ logger.trace(f"Define new matcher {NewMatcher}")
+
+ matchers[priority].append(NewMatcher)
+
+ return NewMatcher
+
+ @classmethod
+ async def check_perm(
+ cls,
+ bot: Bot,
+ event: Event,
+ stack: Optional[AsyncExitStack] = None,
+ dependency_cache: Optional[T_DependencyCache] = None,
+ ) -> bool:
+ """检查是否满足触发权限
+
+ 参数:
+ bot: Bot 对象
+ event: 上报事件
+ stack: 异步上下文栈
+ dependency_cache: 依赖缓存
+
+ 返回:
+ 是否满足权限
+ """
+ event_type = event.get_type()
+ return event_type == (cls.type or event_type) and await cls.permission(
+ bot, event, stack, dependency_cache
+ )
+
+ @classmethod
+ async def check_rule(
+ cls,
+ bot: Bot,
+ event: Event,
+ state: T_State,
+ stack: Optional[AsyncExitStack] = None,
+ dependency_cache: Optional[T_DependencyCache] = None,
+ ) -> bool:
+ """检查是否满足匹配规则
+
+ 参数:
+ bot: Bot 对象
+ event: 上报事件
+ state: 当前状态
+ stack: 异步上下文栈
+ dependency_cache: 依赖缓存
+
+ 返回:
+ 是否满足匹配规则
+ """
+ event_type = event.get_type()
+ return event_type == (cls.type or event_type) and await cls.rule(
+ bot, event, state, stack, dependency_cache
+ )
+
+ @classmethod
+ def type_updater(cls, func: T_TypeUpdater) -> T_TypeUpdater:
+ """装饰一个函数来更改当前事件响应器的默认响应事件类型更新函数
+
+ 参数:
+ func: 响应事件类型更新函数
+ """
+ cls._default_type_updater = Dependent[str].parse(
+ call=func, allow_types=cls.HANDLER_PARAM_TYPES
+ )
+ return func
+
+ @classmethod
+ def permission_updater(cls, func: T_PermissionUpdater) -> T_PermissionUpdater:
+ """装饰一个函数来更改当前事件响应器的默认会话权限更新函数
+
+ 参数:
+ func: 会话权限更新函数
+ """
+ cls._default_permission_updater = Dependent[Permission].parse(
+ call=func, allow_types=cls.HANDLER_PARAM_TYPES
+ )
+ return func
+
+ @classmethod
+ def append_handler(
+ cls, handler: T_Handler, parameterless: Optional[List[Any]] = None
+ ) -> Dependent[Any]:
+ handler_ = Dependent[Any].parse(
+ call=handler,
+ parameterless=parameterless,
+ allow_types=cls.HANDLER_PARAM_TYPES,
+ )
+ cls.handlers.append(handler_)
+ return handler_
+
+ @classmethod
+ def handle(
+ cls, parameterless: Optional[List[Any]] = None
+ ) -> Callable[[T_Handler], T_Handler]:
+ """装饰一个函数来向事件响应器直接添加一个处理函数
+
+ 参数:
+ parameterless: 非参数类型依赖列表
+ """
+
+ def _decorator(func: T_Handler) -> T_Handler:
+ cls.append_handler(func, parameterless=parameterless)
+ return func
+
+ return _decorator
+
+ @classmethod
+ def receive(
+ cls, id: str = "", parameterless: Optional[List[Any]] = None
+ ) -> Callable[[T_Handler], T_Handler]:
+ """装饰一个函数来指示 NoneBot 在接收用户新的一条消息后继续运行该函数
+
+ 参数:
+ id: 消息 ID
+ parameterless: 非参数类型依赖列表
+ """
+
+ async def _receive(event: Event, matcher: "Matcher") -> Union[None, NoReturn]:
+ matcher.set_target(RECEIVE_KEY.format(id=id))
+ if matcher.get_target() == RECEIVE_KEY.format(id=id):
+ matcher.set_receive(id, event)
+ return
+ if matcher.get_receive(id, ...) is not ...:
+ return
+ await matcher.reject()
+
+ _parameterless = [Depends(_receive), *(parameterless or [])]
+
+ def _decorator(func: T_Handler) -> T_Handler:
+
+ if cls.handlers and cls.handlers[-1].call is func:
+ func_handler = cls.handlers[-1]
+ for depend in reversed(_parameterless):
+ func_handler.prepend_parameterless(depend)
+ else:
+ cls.append_handler(func, parameterless=_parameterless)
+
+ return func
+
+ return _decorator
+
+ @classmethod
+ def got(
+ cls,
+ key: str,
+ prompt: Optional[Union[str, Message, MessageSegment, MessageTemplate]] = None,
+ parameterless: Optional[List[Any]] = None,
+ ) -> Callable[[T_Handler], T_Handler]:
+ """装饰一个函数来指示 NoneBot 获取一个参数 `key`
+
+ 当要获取的 `key` 不存在时接收用户新的一条消息再运行该函数,如果 `key` 已存在则直接继续运行
+
+ 参数:
+ key: 参数名
+ prompt: 在参数不存在时向用户发送的消息
+ parameterless: 非参数类型依赖列表
+ """
+
+ async def _key_getter(event: Event, matcher: "Matcher"):
+ matcher.set_target(ARG_KEY.format(key=key))
+ if matcher.get_target() == ARG_KEY.format(key=key):
+ matcher.set_arg(key, event.get_message())
+ return
+ if matcher.get_arg(key, ...) is not ...:
+ return
+ await matcher.reject(prompt)
+
+ _parameterless = [
+ Depends(_key_getter),
+ *(parameterless or []),
+ ]
+
+ def _decorator(func: T_Handler) -> T_Handler:
+
+ if cls.handlers and cls.handlers[-1].call is func:
+ func_handler = cls.handlers[-1]
+ for depend in reversed(_parameterless):
+ func_handler.prepend_parameterless(depend)
+ else:
+ cls.append_handler(func, parameterless=_parameterless)
+
+ return func
+
+ return _decorator
+
+ @classmethod
+ async def send(
+ cls,
+ message: Union[str, Message, MessageSegment, MessageTemplate],
+ **kwargs: Any,
+ ) -> Any:
+ """发送一条消息给当前交互用户
+
+ 参数:
+ message: 消息内容
+ kwargs: {ref}`nonebot.adapters.Bot.send` 的参数,请参考对应 adapter 的 bot 对象 api
+ """
+ bot = current_bot.get()
+ event = current_event.get()
+ state = current_matcher.get().state
+ if isinstance(message, MessageTemplate):
+ _message = message.format(**state)
+ else:
+ _message = message
+ return await bot.send(event=event, message=_message, **kwargs)
+
+ @classmethod
+ async def finish(
+ cls,
+ message: Optional[Union[str, Message, MessageSegment, MessageTemplate]] = None,
+ **kwargs,
+ ) -> NoReturn:
+ """发送一条消息给当前交互用户并结束当前事件响应器
+
+ 参数:
+ message: 消息内容
+ kwargs: {ref}`nonebot.adapters.Bot.send` 的参数,请参考对应 adapter 的 bot 对象 api
+ """
+ if message is not None:
+ await cls.send(message, **kwargs)
+ raise FinishedException
+
+ @classmethod
+ async def pause(
+ cls,
+ prompt: Optional[Union[str, Message, MessageSegment, MessageTemplate]] = None,
+ **kwargs,
+ ) -> NoReturn:
+ """发送一条消息给当前交互用户并暂停事件响应器,在接收用户新的一条消息后继续下一个处理函数
+
+ 参数:
+ prompt: 消息内容
+ kwargs: {ref}`nonebot.adapters.Bot.send` 的参数,请参考对应 adapter 的 bot 对象 api
+ """
+ if prompt is not None:
+ await cls.send(prompt, **kwargs)
+ raise PausedException
+
+ @classmethod
+ async def reject(
+ cls,
+ prompt: Optional[Union[str, Message, MessageSegment, MessageTemplate]] = None,
+ **kwargs,
+ ) -> NoReturn:
+ """最近使用 `got` / `receive` 接收的消息不符合预期,
+ 发送一条消息给当前交互用户并将当前事件处理流程中断在当前位置,在接收用户新的一个事件后从头开始执行当前处理函数
+
+ 参数:
+ prompt: 消息内容
+ kwargs: {ref}`nonebot.adapters.Bot.send` 的参数,请参考对应 adapter 的 bot 对象 api
+ """
+ if prompt is not None:
+ await cls.send(prompt, **kwargs)
+ raise RejectedException
+
+ @classmethod
+ async def reject_arg(
+ cls,
+ key: str,
+ prompt: Optional[Union[str, Message, MessageSegment, MessageTemplate]] = None,
+ **kwargs,
+ ) -> NoReturn:
+ """最近使用 `got` 接收的消息不符合预期,
+ 发送一条消息给当前交互用户并将当前事件处理流程中断在当前位置,在接收用户新的一条消息后从头开始执行当前处理函数
+
+ 参数:
+ key: 参数名
+ prompt: 消息内容
+ kwargs: {ref}`nonebot.adapters.Bot.send` 的参数,请参考对应 adapter 的 bot 对象 api
+ """
+ matcher = current_matcher.get()
+ matcher.set_target(ARG_KEY.format(key=key))
+ if prompt is not None:
+ await cls.send(prompt, **kwargs)
+ raise RejectedException
+
+ @classmethod
+ async def reject_receive(
+ cls,
+ id: str = "",
+ prompt: Optional[Union[str, Message, MessageSegment, MessageTemplate]] = None,
+ **kwargs,
+ ) -> NoReturn:
+ """最近使用 `receive` 接收的消息不符合预期,
+ 发送一条消息给当前交互用户并将当前事件处理流程中断在当前位置,在接收用户新的一个事件后从头开始执行当前处理函数
+
+ 参数:
+ id: 消息 id
+ prompt: 消息内容
+ kwargs: {ref}`nonebot.adapters.Bot.send` 的参数,请参考对应 adapter 的 bot 对象 api
+ """
+ matcher = current_matcher.get()
+ matcher.set_target(RECEIVE_KEY.format(id=id))
+ if prompt is not None:
+ await cls.send(prompt, **kwargs)
+ raise RejectedException
+
+ @classmethod
+ def skip(cls) -> NoReturn:
+ """跳过当前事件处理函数,继续下一个处理函数
+
+ 通常在事件处理函数的依赖中使用。
+ """
+ raise SkippedException
+
+ def get_receive(self, id: str, default: T = None) -> Union[Event, T]:
+ """获取一个 `receive` 事件
+
+ 如果没有找到对应的事件,返回 `default` 值
+ """
+ return self.state.get(RECEIVE_KEY.format(id=id), default)
+
+ def set_receive(self, id: str, event: Event) -> None:
+ """设置一个 `receive` 事件"""
+ self.state[RECEIVE_KEY.format(id=id)] = event
+ self.state[LAST_RECEIVE_KEY] = event
+
+ def get_last_receive(self, default: T = None) -> Union[Event, T]:
+ """获取最近一次 `receive` 事件
+
+ 如果没有事件,返回 `default` 值
+ """
+ return self.state.get(LAST_RECEIVE_KEY, default)
+
+ def get_arg(self, key: str, default: T = None) -> Union[Message, T]:
+ """获取一个 `got` 消息
+
+ 如果没有找到对应的消息,返回 `default` 值
+ """
+ return self.state.get(ARG_KEY.format(key=key), default)
+
+ def set_arg(self, key: str, message: Message) -> None:
+ """设置一个 `got` 消息"""
+ self.state[ARG_KEY.format(key=key)] = message
+
+ def set_target(self, target: str, cache: bool = True) -> None:
+ if cache:
+ self.state[REJECT_CACHE_TARGET] = target
+ else:
+ self.state[REJECT_TARGET] = target
+
+ def get_target(self, default: T = None) -> Union[str, T]:
+ return self.state.get(REJECT_TARGET, default)
+
+ def stop_propagation(self):
+ """阻止事件传播"""
+ self.block = True
+
+ async def update_type(self, bot: Bot, event: Event) -> str:
+ updater = self.__class__._default_type_updater
+ if not updater:
+ return "message"
+ return await updater(bot=bot, event=event, state=self.state, matcher=self)
+
+ async def update_permission(self, bot: Bot, event: Event) -> Permission:
+ updater = self.__class__._default_permission_updater
+ if not updater:
+ return USER(event.get_session_id(), perm=self.permission)
+ return await updater(bot=bot, event=event, state=self.state, matcher=self)
+
+ async def resolve_reject(self):
+ handler = current_handler.get()
+ self.handlers.insert(0, handler)
+ if REJECT_CACHE_TARGET in self.state:
+ self.state[REJECT_TARGET] = self.state[REJECT_CACHE_TARGET]
+
+ async def simple_run(
+ self,
+ bot: Bot,
+ event: Event,
+ state: T_State,
+ stack: Optional[AsyncExitStack] = None,
+ dependency_cache: Optional[T_DependencyCache] = None,
+ ):
+ logger.trace(
+ f"Matcher {self} run with incoming args: "
+ f"bot={bot}, event={event}, state={state}"
+ )
+ b_t = current_bot.set(bot)
+ e_t = current_event.set(event)
+ m_t = current_matcher.set(self)
+ try:
+ # Refresh preprocess state
+ self.state.update(state)
+
+ while self.handlers:
+ handler = self.handlers.pop(0)
+ current_handler.set(handler)
+ logger.debug(f"Running handler {handler}")
+ try:
+ await handler(
+ matcher=self,
+ bot=bot,
+ event=event,
+ state=self.state,
+ stack=stack,
+ dependency_cache=dependency_cache,
+ )
+ except TypeMisMatch as e:
+ logger.debug(
+ f"Handler {handler} param {e.param.name} value {e.value} "
+ f"mismatch type {e.param._type_display()}, skipped"
+ )
+ except SkippedException as e:
+ logger.debug(f"Handler {handler} skipped")
+ except StopPropagation:
+ self.block = True
+ finally:
+ logger.info(f"Matcher {self} running complete")
+ current_bot.reset(b_t)
+ current_event.reset(e_t)
+ current_matcher.reset(m_t)
+
+ # 运行handlers
+ async def run(
+ self,
+ bot: Bot,
+ event: Event,
+ state: T_State,
+ stack: Optional[AsyncExitStack] = None,
+ dependency_cache: Optional[T_DependencyCache] = None,
+ ):
+ try:
+ await self.simple_run(bot, event, state, stack, dependency_cache)
+
+ except RejectedException:
+ await self.resolve_reject()
+ type_ = await self.update_type(bot, event)
+ permission = await self.update_permission(bot, event)
+
+ Matcher.new(
+ type_,
+ Rule(),
+ permission,
+ self.handlers,
+ temp=True,
+ priority=0,
+ block=True,
+ plugin=self.plugin,
+ module=self.module,
+ expire_time=datetime.now() + bot.config.session_expire_timeout,
+ default_state=self.state,
+ default_type_updater=self.__class__._default_type_updater,
+ default_permission_updater=self.__class__._default_permission_updater,
+ )
+ except PausedException:
+ type_ = await self.update_type(bot, event)
+ permission = await self.update_permission(bot, event)
+
+ Matcher.new(
+ type_,
+ Rule(),
+ permission,
+ self.handlers,
+ temp=True,
+ priority=0,
+ block=True,
+ plugin=self.plugin,
+ module=self.module,
+ expire_time=datetime.now() + bot.config.session_expire_timeout,
+ default_state=self.state,
+ default_type_updater=self.__class__._default_type_updater,
+ default_permission_updater=self.__class__._default_permission_updater,
+ )
+ except FinishedException:
+ pass
+
+
+__autodoc__ = {
+ "MatcherMeta": False,
+ "Matcher.get_target": False,
+ "Matcher.set_target": False,
+ "Matcher.update_type": False,
+ "Matcher.update_permission": False,
+ "Matcher.resolve_reject": False,
+ "Matcher.simple_run": False,
+}
diff --git a/nonebot/internal/params.py b/nonebot/internal/params.py
new file mode 100644
index 00000000..23fd4176
--- /dev/null
+++ b/nonebot/internal/params.py
@@ -0,0 +1,378 @@
+import asyncio
+import inspect
+import warnings
+from typing_extensions import Literal
+from typing import TYPE_CHECKING, Any, Callable, Optional, cast
+from contextlib import AsyncExitStack, contextmanager, asynccontextmanager
+
+from pydantic.fields import Required, Undefined, ModelField
+
+from nonebot.log import logger
+from nonebot.exception import TypeMisMatch
+from nonebot.dependencies.utils import check_field_type
+from nonebot.dependencies import Param, Dependent, CustomConfig
+from nonebot.typing import T_State, T_Handler, T_DependencyCache
+from nonebot.utils import (
+ get_name,
+ run_sync,
+ is_gen_callable,
+ run_sync_ctx_manager,
+ is_async_gen_callable,
+ is_coroutine_callable,
+ generic_check_issubclass,
+)
+
+if TYPE_CHECKING:
+ from nonebot.matcher import Matcher
+ from nonebot.adapters import Bot, Event
+
+
+class DependsInner:
+ def __init__(
+ self,
+ dependency: Optional[T_Handler] = None,
+ *,
+ use_cache: bool = True,
+ ) -> None:
+ self.dependency = dependency
+ self.use_cache = use_cache
+
+ def __repr__(self) -> str:
+ dep = get_name(self.dependency)
+ cache = "" if self.use_cache else ", use_cache=False"
+ return f"{self.__class__.__name__}({dep}{cache})"
+
+
+def Depends(
+ dependency: Optional[T_Handler] = None,
+ *,
+ use_cache: bool = True,
+) -> Any:
+ """子依赖装饰器
+
+ 参数:
+ dependency: 依赖函数。默认为参数的类型注释。
+ use_cache: 是否使用缓存。默认为 `True`。
+
+ 用法:
+ ```python
+ def depend_func() -> Any:
+ return ...
+
+ def depend_gen_func():
+ try:
+ yield ...
+ finally:
+ ...
+
+ async def handler(param_name: Any = Depends(depend_func), gen: Any = Depends(depend_gen_func)):
+ ...
+ ```
+ """
+ return DependsInner(dependency, use_cache=use_cache)
+
+
+class DependParam(Param):
+ """子依赖参数"""
+
+ @classmethod
+ def _check_param(
+ cls,
+ dependent: Dependent,
+ name: str,
+ param: inspect.Parameter,
+ ) -> Optional["DependParam"]:
+ if isinstance(param.default, DependsInner):
+ dependency: T_Handler
+ if param.default.dependency is None:
+ assert param.annotation is not param.empty, "Dependency cannot be empty"
+ dependency = param.annotation
+ else:
+ dependency = param.default.dependency
+ sub_dependent = Dependent[Any].parse(
+ call=dependency,
+ allow_types=dependent.allow_types,
+ )
+ dependent.pre_checkers.extend(sub_dependent.pre_checkers)
+ sub_dependent.pre_checkers.clear()
+ return cls(
+ Required, use_cache=param.default.use_cache, dependent=sub_dependent
+ )
+
+ @classmethod
+ def _check_parameterless(
+ cls, dependent: "Dependent", value: Any
+ ) -> Optional["Param"]:
+ if isinstance(value, DependsInner):
+ assert value.dependency, "Dependency cannot be empty"
+ dependent = Dependent[Any].parse(
+ call=value.dependency, allow_types=dependent.allow_types
+ )
+ return cls(Required, use_cache=value.use_cache, dependent=dependent)
+
+ async def _solve(
+ self,
+ stack: Optional[AsyncExitStack] = None,
+ dependency_cache: Optional[T_DependencyCache] = None,
+ **kwargs: Any,
+ ) -> Any:
+ use_cache: bool = self.extra["use_cache"]
+ dependency_cache = {} if dependency_cache is None else dependency_cache
+
+ sub_dependent: Dependent = self.extra["dependent"]
+ sub_dependent.call = cast(Callable[..., Any], sub_dependent.call)
+ call = sub_dependent.call
+
+ # solve sub dependency with current cache
+ sub_values = await sub_dependent.solve(
+ stack=stack,
+ dependency_cache=dependency_cache,
+ **kwargs,
+ )
+
+ # run dependency function
+ task: asyncio.Task[Any]
+ if use_cache and call in dependency_cache:
+ solved = await dependency_cache[call]
+ elif is_gen_callable(call) or is_async_gen_callable(call):
+ assert isinstance(
+ stack, AsyncExitStack
+ ), "Generator dependency should be called in context"
+ if is_gen_callable(call):
+ cm = run_sync_ctx_manager(contextmanager(call)(**sub_values))
+ else:
+ cm = asynccontextmanager(call)(**sub_values)
+ task = asyncio.create_task(stack.enter_async_context(cm))
+ dependency_cache[call] = task
+ solved = await task
+ elif is_coroutine_callable(call):
+ task = asyncio.create_task(call(**sub_values))
+ dependency_cache[call] = task
+ solved = await task
+ else:
+ task = asyncio.create_task(run_sync(call)(**sub_values))
+ dependency_cache[call] = task
+ solved = await task
+
+ return solved
+
+
+class _BotChecker(Param):
+ async def _solve(self, bot: "Bot", **kwargs: Any) -> Any:
+ field: ModelField = self.extra["field"]
+ try:
+ return check_field_type(field, bot)
+ except TypeMisMatch:
+ logger.debug(
+ f"Bot type {type(bot)} not match "
+ f"annotation {field._type_display()}, ignored"
+ )
+ raise
+
+
+class BotParam(Param):
+ """{ref}`nonebot.adapters.Bot` 参数"""
+
+ @classmethod
+ def _check_param(
+ cls, dependent: Dependent, name: str, param: inspect.Parameter
+ ) -> Optional["BotParam"]:
+ from nonebot.adapters import Bot
+
+ if param.default == param.empty:
+ if generic_check_issubclass(param.annotation, Bot):
+ if param.annotation is not Bot:
+ dependent.pre_checkers.append(
+ _BotChecker(
+ Required,
+ field=ModelField(
+ name=name,
+ type_=param.annotation,
+ class_validators=None,
+ model_config=CustomConfig,
+ default=None,
+ required=True,
+ ),
+ )
+ )
+ return cls(Required)
+ elif param.annotation == param.empty and name == "bot":
+ return cls(Required)
+
+ async def _solve(self, bot: "Bot", **kwargs: Any) -> Any:
+ return bot
+
+
+class _EventChecker(Param):
+ async def _solve(self, event: "Event", **kwargs: Any) -> Any:
+ field: ModelField = self.extra["field"]
+ try:
+ return check_field_type(field, event)
+ except TypeMisMatch:
+ logger.debug(
+ f"Event type {type(event)} not match "
+ f"annotation {field._type_display()}, ignored"
+ )
+ raise
+
+
+class EventParam(Param):
+ """{ref}`nonebot.adapters.Event` 参数"""
+
+ @classmethod
+ def _check_param(
+ cls, dependent: Dependent, name: str, param: inspect.Parameter
+ ) -> Optional["EventParam"]:
+ from nonebot.adapters import Event
+
+ if param.default == param.empty:
+ if generic_check_issubclass(param.annotation, Event):
+ if param.annotation is not Event:
+ dependent.pre_checkers.append(
+ _EventChecker(
+ Required,
+ field=ModelField(
+ name=name,
+ type_=param.annotation,
+ class_validators=None,
+ model_config=CustomConfig,
+ default=None,
+ required=True,
+ ),
+ )
+ )
+ return cls(Required)
+ elif param.annotation == param.empty and name == "event":
+ return cls(Required)
+
+ async def _solve(self, event: "Event", **kwargs: Any) -> Any:
+ return event
+
+
+class StateInner(T_State):
+ ...
+
+
+def State() -> T_State:
+ """**Deprecated**: 事件处理状态参数,请直接使用 {ref}`nonebot.typing.T_State`"""
+ warnings.warn("State() is deprecated, use `T_State` instead", DeprecationWarning)
+ return StateInner()
+
+
+class StateParam(Param):
+ """事件处理状态参数"""
+
+ @classmethod
+ def _check_param(
+ cls, dependent: Dependent, name: str, param: inspect.Parameter
+ ) -> Optional["StateParam"]:
+ if isinstance(param.default, StateInner):
+ return cls(Required)
+ elif param.default == param.empty:
+ if param.annotation is T_State:
+ return cls(Required)
+ elif param.annotation == param.empty and name == "state":
+ return cls(Required)
+
+ async def _solve(self, state: T_State, **kwargs: Any) -> Any:
+ return state
+
+
+class MatcherParam(Param):
+ """事件响应器实例参数"""
+
+ @classmethod
+ def _check_param(
+ cls, dependent: Dependent, name: str, param: inspect.Parameter
+ ) -> Optional["MatcherParam"]:
+ from nonebot.matcher import Matcher
+
+ if generic_check_issubclass(param.annotation, Matcher) or (
+ param.annotation == param.empty and name == "matcher"
+ ):
+ return cls(Required)
+
+ async def _solve(self, matcher: "Matcher", **kwargs: Any) -> Any:
+ return matcher
+
+
+class ArgInner:
+ def __init__(
+ self, key: Optional[str], type: Literal["message", "str", "plaintext"]
+ ) -> None:
+ self.key = key
+ self.type = type
+
+
+def Arg(key: Optional[str] = None) -> Any:
+ """`got` 的 Arg 参数消息"""
+ return ArgInner(key, "message")
+
+
+def ArgStr(key: Optional[str] = None) -> str:
+ """`got` 的 Arg 参数消息文本"""
+ return ArgInner(key, "str") # type: ignore
+
+
+def ArgPlainText(key: Optional[str] = None) -> str:
+ """`got` 的 Arg 参数消息纯文本"""
+ return ArgInner(key, "plaintext") # type: ignore
+
+
+class ArgParam(Param):
+ """`got` 的 Arg 参数"""
+
+ @classmethod
+ def _check_param(
+ cls, dependent: Dependent, name: str, param: inspect.Parameter
+ ) -> Optional["ArgParam"]:
+ if isinstance(param.default, ArgInner):
+ return cls(Required, key=param.default.key or name, type=param.default.type)
+
+ async def _solve(self, matcher: "Matcher", **kwargs: Any) -> Any:
+ message = matcher.get_arg(self.extra["key"])
+ if message is None:
+ return message
+ if self.extra["type"] == "message":
+ return message
+ elif self.extra["type"] == "str":
+ return str(message)
+ else:
+ return message.extract_plain_text()
+
+
+class ExceptionParam(Param):
+ """`run_postprocessor` 的异常参数"""
+
+ @classmethod
+ def _check_param(
+ cls, dependent: Dependent, name: str, param: inspect.Parameter
+ ) -> Optional["ExceptionParam"]:
+ if generic_check_issubclass(param.annotation, Exception) or (
+ param.annotation == param.empty and name == "exception"
+ ):
+ return cls(Required)
+
+ async def _solve(self, exception: Optional[Exception] = None, **kwargs: Any) -> Any:
+ return exception
+
+
+class DefaultParam(Param):
+ """默认值参数"""
+
+ @classmethod
+ def _check_param(
+ cls, dependent: Dependent, name: str, param: inspect.Parameter
+ ) -> Optional["DefaultParam"]:
+ if param.default != param.empty:
+ return cls(param.default)
+
+ async def _solve(self, **kwargs: Any) -> Any:
+ return Undefined
+
+
+__autodoc__ = {
+ "DependsInner": False,
+ "StateInner": False,
+ "ArgInner": False,
+}
diff --git a/nonebot/internal/permission.py b/nonebot/internal/permission.py
new file mode 100644
index 00000000..5d43d5b2
--- /dev/null
+++ b/nonebot/internal/permission.py
@@ -0,0 +1,133 @@
+import asyncio
+from contextlib import AsyncExitStack
+from typing import Any, Set, Tuple, Union, NoReturn, Optional, Coroutine
+
+from nonebot.dependencies import Dependent
+from nonebot.exception import SkippedException
+from nonebot.typing import T_DependencyCache, T_PermissionChecker
+
+from .adapter import Bot, Event
+from .params import BotParam, EventParam, DependParam, DefaultParam
+
+
+async def _run_coro_with_catch(coro: Coroutine[Any, Any, Any]):
+ try:
+ return await coro
+ except SkippedException:
+ return False
+
+
+class Permission:
+ """{ref}`nonebot.matcher.Matcher` 权限类。
+
+ 当事件传递时,在 {ref}`nonebot.matcher.Matcher` 运行前进行检查。
+
+ 参数:
+ checkers: PermissionChecker
+
+ 用法:
+ ```python
+ Permission(async_function) | sync_function
+ # 等价于
+ Permission(async_function, sync_function)
+ ```
+ """
+
+ __slots__ = ("checkers",)
+
+ HANDLER_PARAM_TYPES = [
+ DependParam,
+ BotParam,
+ EventParam,
+ DefaultParam,
+ ]
+
+ def __init__(self, *checkers: Union[T_PermissionChecker, Dependent[bool]]) -> None:
+ self.checkers: Set[Dependent[bool]] = set(
+ checker
+ if isinstance(checker, Dependent)
+ else Dependent[bool].parse(
+ call=checker, allow_types=self.HANDLER_PARAM_TYPES
+ )
+ for checker in checkers
+ )
+ """存储 `PermissionChecker`"""
+
+ async def __call__(
+ self,
+ bot: Bot,
+ event: Event,
+ stack: Optional[AsyncExitStack] = None,
+ dependency_cache: Optional[T_DependencyCache] = None,
+ ) -> bool:
+ """检查是否满足某个权限
+
+ 参数:
+ bot: Bot 对象
+ event: Event 对象
+ stack: 异步上下文栈
+ dependency_cache: 依赖缓存
+ """
+ if not self.checkers:
+ return True
+ results = await asyncio.gather(
+ *(
+ _run_coro_with_catch(
+ checker(
+ bot=bot,
+ event=event,
+ stack=stack,
+ dependency_cache=dependency_cache,
+ )
+ )
+ for checker in self.checkers
+ ),
+ )
+ return any(results)
+
+ def __and__(self, other) -> NoReturn:
+ raise RuntimeError("And operation between Permissions is not allowed.")
+
+ def __or__(
+ self, other: Optional[Union["Permission", T_PermissionChecker]]
+ ) -> "Permission":
+ if other is None:
+ return self
+ elif isinstance(other, Permission):
+ return Permission(*self.checkers, *other.checkers)
+ else:
+ return Permission(*self.checkers, other)
+
+
+class User:
+ """检查当前事件是否属于指定会话
+
+ 参数:
+ users: 会话 ID 元组
+ perm: 需同时满足的权限
+ """
+
+ __slots__ = ("users", "perm")
+
+ def __init__(
+ self, users: Tuple[str, ...], perm: Optional[Permission] = None
+ ) -> None:
+ self.users = users
+ self.perm = perm
+
+ async def __call__(self, bot: Bot, event: Event) -> bool:
+ return bool(
+ event.get_session_id() in self.users
+ and (self.perm is None or await self.perm(bot, event))
+ )
+
+
+def USER(*users: str, perm: Optional[Permission] = None):
+ """匹配当前事件属于指定会话
+
+ 参数:
+ user: 会话白名单
+ perm: 需要同时满足的权限
+ """
+
+ return Permission(User(users, perm))
diff --git a/nonebot/internal/rule.py b/nonebot/internal/rule.py
new file mode 100644
index 00000000..8d596f39
--- /dev/null
+++ b/nonebot/internal/rule.py
@@ -0,0 +1,95 @@
+import asyncio
+from contextlib import AsyncExitStack
+from typing import Set, Union, NoReturn, Optional
+
+from nonebot.dependencies import Dependent
+from nonebot.exception import SkippedException
+from nonebot.typing import T_State, T_RuleChecker, T_DependencyCache
+
+from .adapter import Bot, Event
+from .params import BotParam, EventParam, StateParam, DependParam, DefaultParam
+
+
+class Rule:
+ """{ref}`nonebot.matcher.Matcher` 规则类。
+
+ 当事件传递时,在 {ref}`nonebot.matcher.Matcher` 运行前进行检查。
+
+ 参数:
+ *checkers: RuleChecker
+
+ 用法:
+ ```python
+ Rule(async_function) & sync_function
+ # 等价于
+ Rule(async_function, sync_function)
+ ```
+ """
+
+ __slots__ = ("checkers",)
+
+ HANDLER_PARAM_TYPES = [
+ DependParam,
+ BotParam,
+ EventParam,
+ StateParam,
+ DefaultParam,
+ ]
+
+ def __init__(self, *checkers: Union[T_RuleChecker, Dependent[bool]]) -> None:
+ self.checkers: Set[Dependent[bool]] = set(
+ checker
+ if isinstance(checker, Dependent)
+ else Dependent[bool].parse(
+ call=checker, allow_types=self.HANDLER_PARAM_TYPES
+ )
+ for checker in checkers
+ )
+ """存储 `RuleChecker`"""
+
+ async def __call__(
+ self,
+ bot: Bot,
+ event: Event,
+ state: T_State,
+ stack: Optional[AsyncExitStack] = None,
+ dependency_cache: Optional[T_DependencyCache] = None,
+ ) -> bool:
+ """检查是否符合所有规则
+
+ 参数:
+ bot: Bot 对象
+ event: Event 对象
+ state: 当前 State
+ stack: 异步上下文栈
+ dependency_cache: 依赖缓存
+ """
+ if not self.checkers:
+ return True
+ try:
+ results = await asyncio.gather(
+ *(
+ checker(
+ bot=bot,
+ event=event,
+ state=state,
+ stack=stack,
+ dependency_cache=dependency_cache,
+ )
+ for checker in self.checkers
+ )
+ )
+ except SkippedException:
+ return False
+ return all(results)
+
+ def __and__(self, other: Optional[Union["Rule", T_RuleChecker]]) -> "Rule":
+ if other is None:
+ return self
+ elif isinstance(other, Rule):
+ return Rule(*self.checkers, *other.checkers)
+ else:
+ return Rule(*self.checkers, other)
+
+ def __or__(self, other) -> NoReturn:
+ raise RuntimeError("Or operation between rules is not allowed.")
diff --git a/nonebot/log.py b/nonebot/log.py
index 859353c2..87edd816 100644
--- a/nonebot/log.py
+++ b/nonebot/log.py
@@ -1,13 +1,15 @@
-"""
-日志
-====
+"""本模块定义了 NoneBot 的日志记录 Logger。
-NoneBot 使用 `loguru`_ 来记录日志信息。
+NoneBot 使用 [`loguru`][loguru] 来记录日志信息。
-自定义 logger 请参考 `loguru`_ 文档。
+自定义 logger 请参考 [自定义日志](https://v2.nonebot.dev/docs/tutorial/custom-logger)
+以及 [`loguru`][loguru] 文档。
-.. _loguru:
- https://github.com/Delgan/loguru
+[loguru]: https://github.com/Delgan/loguru
+
+FrontMatter:
+ sidebar_position: 7
+ description: nonebot.log 模块
"""
import sys
@@ -21,24 +23,22 @@ if TYPE_CHECKING:
# because loguru module do not have `Logger` class actually
from loguru import Logger
+ from nonebot.plugin import Plugin
+
# logger = logging.getLogger("nonebot")
logger: "Logger" = loguru.logger
-"""
-:说明:
+"""NoneBot 日志记录器对象。
- NoneBot 日志记录器对象。
+默认信息:
-:默认信息:
-
- * 格式: ``[%(asctime)s %(name)s] %(levelname)s: %(message)s``
- * 等级: ``INFO`` ,根据 ``config.log_level`` 配置改变
- * 输出: 输出至 stdout
-
-:用法:
-
-.. code-block:: python
+- 格式: `[%(asctime)s %(name)s] %(levelname)s: %(message)s`
+- 等级: `INFO` ,根据 `config.log_level` 配置改变
+- 输出: 输出至 stdout
+用法:
+ ```python
from nonebot.log import logger
+ ```
"""
# default_handler = logging.StreamHandler(sys.stdout)
@@ -53,9 +53,11 @@ class Filter:
def __call__(self, record):
module_name: str = record["name"]
- module = sys.modules.get(module_name)
- if module:
- module_name = getattr(module, "__module_name__", module_name)
+ # TODO: get plugin name instead of module name
+ # module = sys.modules.get(module_name)
+ # if module and hasattr(module, "__plugin__"):
+ # plugin: "Plugin" = getattr(module, "__plugin__")
+ # module_name = plugin.module_name
record["name"] = module_name.split(".")[0]
levelno = (
logger.level(self.level).no if isinstance(self.level, str) else self.level
@@ -81,14 +83,16 @@ class LoguruHandler(logging.Handler): # pragma: no cover
logger.remove()
-default_filter = Filter()
-default_format = (
+default_filter: Filter = Filter()
+"""默认日志等级过滤器"""
+default_format: str = (
"{time:MM-DD HH:mm:ss} "
"[{level}] "
"{name} | "
# "{function}:{line}| "
"{message}"
)
+"""默认日志格式"""
logger_id = logger.add(
sys.stdout,
level=0,
@@ -97,3 +101,5 @@ logger_id = logger.add(
filter=default_filter,
format=default_format,
)
+
+__autodoc__ = {"Filter": False, "LoguruHandler": False}
diff --git a/nonebot/matcher.py b/nonebot/matcher.py
index c00548f5..f747a7e6 100644
--- a/nonebot/matcher.py
+++ b/nonebot/matcher.py
@@ -1,784 +1,18 @@
-"""
-事件响应器
-==========
+"""本模块实现事件响应器的创建与运行,并提供一些快捷方法来帮助用户更好的与机器人进行对话。
-该模块实现事件响应器的创建与运行,并提供一些快捷方法来帮助用户更好的与机器人进行对话 。
+FrontMatter:
+ sidebar_position: 3
+ description: nonebot.matcher 模块
"""
-from types import ModuleType
-from datetime import datetime
-from contextvars import ContextVar
-from collections import defaultdict
-from contextlib import AsyncExitStack
-from typing import (
- TYPE_CHECKING,
- Any,
- Dict,
- List,
- Type,
- Union,
- TypeVar,
- Callable,
- NoReturn,
- Optional,
-)
-
-from nonebot import params
-from nonebot.rule import Rule
-from nonebot.log import logger
-from nonebot.dependencies import Dependent
-from nonebot.permission import USER, Permission
-from nonebot.adapters import (
- Bot,
- Event,
- Message,
- MessageSegment,
- MessageTemplate,
-)
-from nonebot.consts import (
- ARG_KEY,
- RECEIVE_KEY,
- REJECT_TARGET,
- LAST_RECEIVE_KEY,
- REJECT_CACHE_TARGET,
-)
-from nonebot.typing import (
- Any,
- T_State,
- T_Handler,
- T_TypeUpdater,
- T_DependencyCache,
- T_PermissionUpdater,
-)
-from nonebot.exception import (
- TypeMisMatch,
- PausedException,
- StopPropagation,
- SkippedException,
- FinishedException,
- RejectedException,
-)
-
-if TYPE_CHECKING:
- from nonebot.plugin import Plugin
-
-T = TypeVar("T")
-
-matchers: Dict[int, List[Type["Matcher"]]] = defaultdict(list)
-"""
-:类型: ``Dict[int, List[Type[Matcher]]]``
-:说明: 用于存储当前所有的事件响应器
-"""
-current_bot: ContextVar[Bot] = ContextVar("current_bot")
-current_event: ContextVar[Event] = ContextVar("current_event")
-current_matcher: ContextVar["Matcher"] = ContextVar("current_matcher")
-current_handler: ContextVar[Dependent] = ContextVar("current_handler")
-
-
-class MatcherMeta(type):
- if TYPE_CHECKING:
- module: Optional[str]
- plugin_name: Optional[str]
- module_name: Optional[str]
- module_prefix: Optional[str]
- type: str
- rule: Rule
- permission: Permission
- handlers: List[T_Handler]
- priority: int
- block: bool
- temp: bool
- expire_time: Optional[datetime]
-
- def __repr__(self) -> str:
- return (
- f""
- )
-
- def __str__(self) -> str:
- return repr(self)
-
-
-class Matcher(metaclass=MatcherMeta):
- """事件响应器类"""
-
- plugin: Optional["Plugin"] = None
- """
- :类型: ``Optional[Plugin]``
- :说明: 事件响应器所在插件
- """
- module: Optional[ModuleType] = None
- """
- :类型: ``Optional[ModuleType]``
- :说明: 事件响应器所在插件模块
- """
- plugin_name: Optional[str] = None
- """
- :类型: ``Optional[str]``
- :说明: 事件响应器所在插件名
- """
- module_name: Optional[str] = None
- """
- :类型: ``Optional[str]``
- :说明: 事件响应器所在点分割插件模块路径
- """
-
- type: str = ""
- """
- :类型: ``str``
- :说明: 事件响应器类型
- """
- rule: Rule = Rule()
- """
- :类型: ``Rule``
- :说明: 事件响应器匹配规则
- """
- permission: Permission = Permission()
- """
- :类型: ``Permission``
- :说明: 事件响应器触发权限
- """
- handlers: List[Dependent[Any]] = []
- """
- :类型: ``List[Handler]``
- :说明: 事件响应器拥有的事件处理函数列表
- """
- priority: int = 1
- """
- :类型: ``int``
- :说明: 事件响应器优先级
- """
- block: bool = False
- """
- :类型: ``bool``
- :说明: 事件响应器是否阻止事件传播
- """
- temp: bool = False
- """
- :类型: ``bool``
- :说明: 事件响应器是否为临时
- """
- expire_time: Optional[datetime] = None
- """
- :类型: ``Optional[datetime]``
- :说明: 事件响应器过期时间点
- """
-
- _default_state: T_State = {}
- """
- :类型: ``T_State``
- :说明: 事件响应器默认状态
- """
-
- _default_type_updater: Optional[Dependent[str]] = None
- """
- :类型: ``Optional[Dependent]``
- :说明: 事件响应器类型更新函数
- """
- _default_permission_updater: Optional[Dependent[Permission]] = None
- """
- :类型: ``Optional[Dependent]``
- :说明: 事件响应器权限更新函数
- """
-
- HANDLER_PARAM_TYPES = [
- params.DependParam,
- params.BotParam,
- params.EventParam,
- params.StateParam,
- params.ArgParam,
- params.MatcherParam,
- params.DefaultParam,
- ]
-
- def __init__(self):
- """实例化 Matcher 以便运行"""
- self.handlers = self.handlers.copy()
- self.state = self._default_state.copy()
-
- def __repr__(self) -> str:
- return (
- f""
- )
-
- def __str__(self) -> str:
- return repr(self)
-
- @classmethod
- def new(
- cls,
- type_: str = "",
- rule: Optional[Rule] = None,
- permission: Optional[Permission] = None,
- handlers: Optional[List[Union[T_Handler, Dependent[Any]]]] = None,
- temp: bool = False,
- priority: int = 1,
- block: bool = False,
- *,
- plugin: Optional["Plugin"] = None,
- module: Optional[ModuleType] = None,
- expire_time: Optional[datetime] = None,
- default_state: Optional[T_State] = None,
- default_type_updater: Optional[T_TypeUpdater] = None,
- default_permission_updater: Optional[T_PermissionUpdater] = None,
- ) -> Type["Matcher"]:
- """
- :说明:
-
- 创建一个新的事件响应器,并存储至 `matchers <#matchers>`_
-
- :参数:
-
- * ``type_: str``: 事件响应器类型,与 ``event.get_type()`` 一致时触发,空字符串表示任意
- * ``rule: Optional[Rule]``: 匹配规则
- * ``permission: Optional[Permission]``: 权限
- * ``handlers: Optional[List[T_Handler]]``: 事件处理函数列表
- * ``temp: bool``: 是否为临时事件响应器,即触发一次后删除
- * ``priority: int``: 响应优先级
- * ``block: bool``: 是否阻止事件向更低优先级的响应器传播
- * ``plugin: Optional[Plugin]``: 事件响应器所在插件
- * ``module: Optional[ModuleType]``: 事件响应器所在模块
- * ``default_state: Optional[T_State]``: 默认状态 ``state``
- * ``expire_time: Optional[datetime]``: 事件响应器最终有效时间点,过时即被删除
-
- :返回:
-
- - ``Type[Matcher]``: 新的事件响应器类
- """
- NewMatcher = type(
- "Matcher",
- (Matcher,),
- {
- "plugin": plugin,
- "module": module,
- "plugin_name": plugin and plugin.name,
- "module_name": module and module.__name__,
- "type": type_,
- "rule": rule or Rule(),
- "permission": permission or Permission(),
- "handlers": [
- handler
- if isinstance(handler, Dependent)
- else Dependent[Any].parse(
- call=handler, allow_types=cls.HANDLER_PARAM_TYPES
- )
- for handler in handlers
- ]
- if handlers
- else [],
- "temp": temp,
- "expire_time": expire_time,
- "priority": priority,
- "block": block,
- "_default_state": default_state or {},
- "_default_type_updater": default_type_updater,
- "_default_permission_updater": default_permission_updater,
- },
- )
-
- logger.trace(f"Define new matcher {NewMatcher}")
-
- matchers[priority].append(NewMatcher)
-
- return NewMatcher
-
- @classmethod
- async def check_perm(
- cls,
- bot: Bot,
- event: Event,
- stack: Optional[AsyncExitStack] = None,
- dependency_cache: Optional[T_DependencyCache] = None,
- ) -> bool:
- """
- :说明:
-
- 检查是否满足触发权限
-
- :参数:
-
- * ``bot: Bot``: Bot 对象
- * ``event: Event``: 上报事件
-
- :返回:
-
- - ``bool``: 是否满足权限
- """
- event_type = event.get_type()
- return event_type == (cls.type or event_type) and await cls.permission(
- bot, event, stack, dependency_cache
- )
-
- @classmethod
- async def check_rule(
- cls,
- bot: Bot,
- event: Event,
- state: T_State,
- stack: Optional[AsyncExitStack] = None,
- dependency_cache: Optional[T_DependencyCache] = None,
- ) -> bool:
- """
- :说明:
-
- 检查是否满足匹配规则
-
- :参数:
-
- * ``bot: Bot``: Bot 对象
- * ``event: Event``: 上报事件
- * ``state: T_State``: 当前状态
-
- :返回:
-
- - ``bool``: 是否满足匹配规则
- """
- event_type = event.get_type()
- return event_type == (cls.type or event_type) and await cls.rule(
- bot, event, state, stack, dependency_cache
- )
-
- @classmethod
- def type_updater(cls, func: T_TypeUpdater) -> T_TypeUpdater:
- """
- :说明:
-
- 装饰一个函数来更改当前事件响应器的默认响应事件类型更新函数
-
- :参数:
-
- * ``func: T_TypeUpdater``: 响应事件类型更新函数
- """
- cls._default_type_updater = Dependent[str].parse(
- call=func, allow_types=cls.HANDLER_PARAM_TYPES
- )
- return func
-
- @classmethod
- def permission_updater(cls, func: T_PermissionUpdater) -> T_PermissionUpdater:
- """
- :说明:
-
- 装饰一个函数来更改当前事件响应器的默认会话权限更新函数
-
- :参数:
-
- * ``func: T_PermissionUpdater``: 会话权限更新函数
- """
- cls._default_permission_updater = Dependent[Permission].parse(
- call=func, allow_types=cls.HANDLER_PARAM_TYPES
- )
- return func
-
- @classmethod
- def append_handler(
- cls, handler: T_Handler, parameterless: Optional[List[Any]] = None
- ) -> Dependent[Any]:
- handler_ = Dependent[Any].parse(
- call=handler,
- parameterless=parameterless,
- allow_types=cls.HANDLER_PARAM_TYPES,
- )
- cls.handlers.append(handler_)
- return handler_
-
- @classmethod
- def handle(
- cls, parameterless: Optional[List[Any]] = None
- ) -> Callable[[T_Handler], T_Handler]:
- """
- :说明:
-
- 装饰一个函数来向事件响应器直接添加一个处理函数
-
- :参数:
-
- * ``parameterless: Optional[List[Any]]``: 非参数类型依赖列表
- """
-
- def _decorator(func: T_Handler) -> T_Handler:
- cls.append_handler(func, parameterless=parameterless)
- return func
-
- return _decorator
-
- @classmethod
- def receive(
- cls, id: str = "", parameterless: Optional[List[Any]] = None
- ) -> Callable[[T_Handler], T_Handler]:
- """
- :说明:
-
- 装饰一个函数来指示 NoneBot 在接收用户新的一条消息后继续运行该函数
-
- :参数:
-
- * ``id: str``: 消息 ID
- * ``parameterless: Optional[List[Any]]``: 非参数类型依赖列表
- """
-
- async def _receive(event: Event, matcher: "Matcher") -> Union[None, NoReturn]:
- matcher.set_target(RECEIVE_KEY.format(id=id))
- if matcher.get_target() == RECEIVE_KEY.format(id=id):
- matcher.set_receive(id, event)
- return
- if matcher.get_receive(id):
- return
- await matcher.reject()
-
- _parameterless = [params.Depends(_receive), *(parameterless or [])]
-
- def _decorator(func: T_Handler) -> T_Handler:
-
- if cls.handlers and cls.handlers[-1].call is func:
- func_handler = cls.handlers[-1]
- for depend in reversed(_parameterless):
- func_handler.prepend_parameterless(depend)
- else:
- cls.append_handler(func, parameterless=_parameterless)
-
- return func
-
- return _decorator
-
- @classmethod
- def got(
- cls,
- key: str,
- prompt: Optional[Union[str, Message, MessageSegment, MessageTemplate]] = None,
- parameterless: Optional[List[Any]] = None,
- ) -> Callable[[T_Handler], T_Handler]:
- """
- :说明:
-
- 装饰一个函数来指示 NoneBot 当要获取的 ``key`` 不存在时接收用户新的一条消息并经过 ``ArgsParser`` 处理后再运行该函数,如果 ``key`` 已存在则直接继续运行
-
- :参数:
-
- * ``key: str``: 参数名
- * ``prompt: Optional[Union[str, Message, MessageSegment, MessageFormatter]]``: 在参数不存在时向用户发送的消息
- * ``args_parser: Optional[T_ArgsParser]``: 可选参数解析函数,空则使用默认解析函数
- * ``parameterless: Optional[List[Any]]``: 非参数类型依赖列表
- """
-
- async def _key_getter(event: Event, matcher: "Matcher"):
- matcher.set_target(ARG_KEY.format(key=key))
- if matcher.get_target() == ARG_KEY.format(key=key):
- matcher.set_arg(key, event.get_message())
- return
- if matcher.get_arg(key):
- return
- await matcher.reject(prompt)
-
- _parameterless = [
- params.Depends(_key_getter),
- *(parameterless or []),
- ]
-
- def _decorator(func: T_Handler) -> T_Handler:
-
- if cls.handlers and cls.handlers[-1].call is func:
- func_handler = cls.handlers[-1]
- for depend in reversed(_parameterless):
- func_handler.prepend_parameterless(depend)
- else:
- cls.append_handler(func, parameterless=_parameterless)
-
- return func
-
- return _decorator
-
- @classmethod
- async def send(
- cls,
- message: Union[str, Message, MessageSegment, MessageTemplate],
- **kwargs: Any,
- ) -> Any:
- """
- :说明:
-
- 发送一条消息给当前交互用户
-
- :参数:
-
- * ``message: Union[str, Message, MessageSegment]``: 消息内容
- * ``**kwargs``: 其他传递给 ``bot.send`` 的参数,请参考对应 adapter 的 bot 对象 api
- """
- bot = current_bot.get()
- event = current_event.get()
- state = current_matcher.get().state
- if isinstance(message, MessageTemplate):
- _message = message.format(**state)
- else:
- _message = message
- return await bot.send(event=event, message=_message, **kwargs)
-
- @classmethod
- async def finish(
- cls,
- message: Optional[Union[str, Message, MessageSegment, MessageTemplate]] = None,
- **kwargs,
- ) -> NoReturn:
- """
- :说明:
-
- 发送一条消息给当前交互用户并结束当前事件响应器
-
- :参数:
-
- * ``message: Union[str, Message, MessageSegment, MessageTemplate]``: 消息内容
- * ``**kwargs``: 其他传递给 ``bot.send`` 的参数,请参考对应 adapter 的 bot 对象 api
- """
- if message is not None:
- await cls.send(message, **kwargs)
- raise FinishedException
-
- @classmethod
- async def pause(
- cls,
- prompt: Optional[Union[str, Message, MessageSegment, MessageTemplate]] = None,
- **kwargs,
- ) -> NoReturn:
- """
- :说明:
-
- 发送一条消息给当前交互用户并暂停事件响应器,在接收用户新的一条消息后继续下一个处理函数
-
- :参数:
-
- * ``prompt: Union[str, Message, MessageSegment, MessageTemplate]``: 消息内容
- * ``**kwargs``: 其他传递给 ``bot.send`` 的参数,请参考对应 adapter 的 bot 对象 api
- """
- if prompt is not None:
- await cls.send(prompt, **kwargs)
- raise PausedException
-
- @classmethod
- async def reject(
- cls,
- prompt: Optional[Union[str, Message, MessageSegment, MessageTemplate]] = None,
- **kwargs,
- ) -> NoReturn:
- """
- :说明:
-
- 最近使用 ``got`` / ``receive`` 接收的消息不符合预期,发送一条消息给当前交互用户并暂停事件响应器,
- 在接收用户新的一条消息后继续当前处理函数
-
- :参数:
-
- * ``prompt: Union[str, Message, MessageSegment, MessageTemplate]``: 消息内容
- * ``**kwargs``: 其他传递给 ``bot.send`` 的参数,请参考对应 adapter 的 bot 对象 api
- """
- if prompt is not None:
- await cls.send(prompt, **kwargs)
- raise RejectedException
-
- @classmethod
- async def reject_arg(
- cls,
- key: str,
- prompt: Optional[Union[str, Message, MessageSegment, MessageTemplate]] = None,
- **kwargs,
- ) -> NoReturn:
- """
- :说明:
-
- 最近使用 ``got`` 接收的消息不符合预期,发送一条消息给当前交互用户并暂停事件响应器,
- 在接收用户新的一条消息后继续当前处理函数
-
- :参数:
-
- * ``key: str``: 参数名
- * ``prompt: Union[str, Message, MessageSegment, MessageTemplate]``: 消息内容
- * ``**kwargs``: 其他传递给 ``bot.send`` 的参数,请参考对应 adapter 的 bot 对象 api
- """
- matcher = current_matcher.get()
- matcher.set_target(ARG_KEY.format(key=key))
- if prompt is not None:
- await cls.send(prompt, **kwargs)
- raise RejectedException
-
- @classmethod
- async def reject_receive(
- cls,
- id: str = "",
- prompt: Optional[Union[str, Message, MessageSegment, MessageTemplate]] = None,
- **kwargs,
- ) -> NoReturn:
- """
- :说明:
-
- 最近使用 ``got`` 接收的消息不符合预期,发送一条消息给当前交互用户并暂停事件响应器,
- 在接收用户新的一条消息后继续当前处理函数
-
- :参数:
-
- * ``id: str``: 消息 id
- * ``prompt: Union[str, Message, MessageSegment, MessageTemplate]``: 消息内容
- * ``**kwargs``: 其他传递给 ``bot.send`` 的参数,请参考对应 adapter 的 bot 对象 api
- """
- matcher = current_matcher.get()
- matcher.set_target(RECEIVE_KEY.format(id=id))
- if prompt is not None:
- await cls.send(prompt, **kwargs)
- raise RejectedException
-
- @classmethod
- def skip(cls) -> NoReturn:
- raise SkippedException
-
- def get_receive(self, id: str, default: T = None) -> Union[Event, T]:
- return self.state.get(RECEIVE_KEY.format(id=id), default)
-
- def set_receive(self, id: str, event: Event) -> None:
- self.state[RECEIVE_KEY.format(id=id)] = event
- self.state[LAST_RECEIVE_KEY] = event
-
- def get_last_receive(self, default: T = None) -> Union[Event, T]:
- return self.state.get(LAST_RECEIVE_KEY, default)
-
- def get_arg(self, key: str, default: T = None) -> Union[Message, T]:
- return self.state.get(ARG_KEY.format(key=key), default)
-
- def set_arg(self, key: str, message: Message) -> None:
- self.state[ARG_KEY.format(key=key)] = message
-
- def set_target(self, target: str, cache: bool = True) -> None:
- if cache:
- self.state[REJECT_CACHE_TARGET] = target
- else:
- self.state[REJECT_TARGET] = target
-
- def get_target(self, default: T = None) -> Union[str, T]:
- return self.state.get(REJECT_TARGET, default)
-
- def stop_propagation(self):
- """
- :说明:
-
- 阻止事件传播
- """
- self.block = True
-
- async def update_type(self, bot: Bot, event: Event) -> str:
- updater = self.__class__._default_type_updater
- if not updater:
- return "message"
- return await updater(bot=bot, event=event, state=self.state, matcher=self)
-
- async def update_permission(self, bot: Bot, event: Event) -> Permission:
- updater = self.__class__._default_permission_updater
- if not updater:
- return USER(event.get_session_id(), perm=self.permission)
- return await updater(bot=bot, event=event, state=self.state, matcher=self)
-
- async def resolve_reject(self):
- handler = current_handler.get()
- self.handlers.insert(0, handler)
- if REJECT_CACHE_TARGET in self.state:
- self.state[REJECT_TARGET] = self.state[REJECT_CACHE_TARGET]
-
- async def simple_run(
- self,
- bot: Bot,
- event: Event,
- state: T_State,
- stack: Optional[AsyncExitStack] = None,
- dependency_cache: Optional[T_DependencyCache] = None,
- ):
- logger.trace(
- f"Matcher {self} run with incoming args: "
- f"bot={bot}, event={event}, state={state}"
- )
- b_t = current_bot.set(bot)
- e_t = current_event.set(event)
- m_t = current_matcher.set(self)
- try:
- # Refresh preprocess state
- self.state.update(state)
-
- while self.handlers:
- handler = self.handlers.pop(0)
- current_handler.set(handler)
- logger.debug(f"Running handler {handler}")
- try:
- await handler(
- matcher=self,
- bot=bot,
- event=event,
- state=self.state,
- stack=stack,
- dependency_cache=dependency_cache,
- )
- except TypeMisMatch as e:
- logger.debug(
- f"Handler {handler} param {e.param.name} value {e.value} "
- f"mismatch type {e.param._type_display()}, skipped"
- )
- except SkippedException as e:
- logger.debug(f"Handler {handler} skipped")
- except StopPropagation:
- self.block = True
- finally:
- logger.info(f"Matcher {self} running complete")
- current_bot.reset(b_t)
- current_event.reset(e_t)
- current_matcher.reset(m_t)
-
- # 运行handlers
- async def run(
- self,
- bot: Bot,
- event: Event,
- state: T_State,
- stack: Optional[AsyncExitStack] = None,
- dependency_cache: Optional[T_DependencyCache] = None,
- ):
- try:
- await self.simple_run(bot, event, state, stack, dependency_cache)
-
- except RejectedException:
- await self.resolve_reject()
- type_ = await self.update_type(bot, event)
- permission = await self.update_permission(bot, event)
-
- Matcher.new(
- type_,
- Rule(),
- permission,
- self.handlers,
- temp=True,
- priority=0,
- block=True,
- plugin=self.plugin,
- module=self.module,
- expire_time=datetime.now() + bot.config.session_expire_timeout,
- default_state=self.state,
- default_type_updater=self.__class__._default_type_updater,
- default_permission_updater=self.__class__._default_permission_updater,
- )
- except PausedException:
- type_ = await self.update_type(bot, event)
- permission = await self.update_permission(bot, event)
-
- Matcher.new(
- type_,
- Rule(),
- permission,
- self.handlers,
- temp=True,
- priority=0,
- block=True,
- plugin=self.plugin,
- module=self.module,
- expire_time=datetime.now() + bot.config.session_expire_timeout,
- default_state=self.state,
- default_type_updater=self.__class__._default_type_updater,
- default_permission_updater=self.__class__._default_permission_updater,
- )
- except FinishedException:
- pass
+from nonebot.internal.matcher import Matcher as Matcher
+from nonebot.internal.matcher import matchers as matchers
+from nonebot.internal.matcher import current_bot as current_bot
+from nonebot.internal.matcher import current_event as current_event
+from nonebot.internal.matcher import current_handler as current_handler
+from nonebot.internal.matcher import current_matcher as current_matcher
+
+__autodoc__ = {
+ "Matcher": True,
+ "matchers": True,
+}
diff --git a/nonebot/message.py b/nonebot/message.py
index 6611598b..4c6c3391 100644
--- a/nonebot/message.py
+++ b/nonebot/message.py
@@ -1,8 +1,10 @@
-"""
-事件处理
-========
+"""本模块定义了事件处理主要流程。
NoneBot 内部处理并按优先级分发事件给所有事件响应器,提供了多个插槽以进行事件的预处理等。
+
+FrontMatter:
+ sidebar_position: 2
+ description: nonebot.message 模块
"""
import asyncio
@@ -10,7 +12,6 @@ from datetime import datetime
from contextlib import AsyncExitStack
from typing import TYPE_CHECKING, Any, Set, Dict, Type, Optional, Coroutine
-from nonebot import params
from nonebot.log import logger
from nonebot.rule import TrieRule
from nonebot.utils import escape_tag
@@ -30,87 +31,81 @@ from nonebot.typing import (
T_EventPreProcessor,
T_EventPostProcessor,
)
+from nonebot.internal.params import (
+ ArgParam,
+ BotParam,
+ EventParam,
+ StateParam,
+ DependParam,
+ DefaultParam,
+ MatcherParam,
+ ExceptionParam,
+)
if TYPE_CHECKING:
from nonebot.adapters import Bot, Event
-_event_preprocessors: Set[Dependent[None]] = set()
-_event_postprocessors: Set[Dependent[None]] = set()
-_run_preprocessors: Set[Dependent[None]] = set()
-_run_postprocessors: Set[Dependent[None]] = set()
+_event_preprocessors: Set[Dependent[Any]] = set()
+_event_postprocessors: Set[Dependent[Any]] = set()
+_run_preprocessors: Set[Dependent[Any]] = set()
+_run_postprocessors: Set[Dependent[Any]] = set()
EVENT_PCS_PARAMS = [
- params.DependParam,
- params.BotParam,
- params.EventParam,
- params.StateParam,
- params.DefaultParam,
+ DependParam,
+ BotParam,
+ EventParam,
+ StateParam,
+ DefaultParam,
]
RUN_PREPCS_PARAMS = [
- params.DependParam,
- params.BotParam,
- params.EventParam,
- params.StateParam,
- params.ArgParam,
- params.MatcherParam,
- params.DefaultParam,
+ DependParam,
+ BotParam,
+ EventParam,
+ StateParam,
+ ArgParam,
+ MatcherParam,
+ DefaultParam,
]
RUN_POSTPCS_PARAMS = [
- params.DependParam,
- params.ExceptionParam,
- params.BotParam,
- params.EventParam,
- params.StateParam,
- params.ArgParam,
- params.MatcherParam,
- params.DefaultParam,
+ DependParam,
+ ExceptionParam,
+ BotParam,
+ EventParam,
+ StateParam,
+ ArgParam,
+ MatcherParam,
+ DefaultParam,
]
def event_preprocessor(func: T_EventPreProcessor) -> T_EventPreProcessor:
- """
- :说明:
-
- 事件预处理。装饰一个函数,使它在每次接收到事件并分发给各响应器之前执行。
- """
+ """事件预处理。装饰一个函数,使它在每次接收到事件并分发给各响应器之前执行。"""
_event_preprocessors.add(
- Dependent[None].parse(call=func, allow_types=EVENT_PCS_PARAMS)
+ Dependent[Any].parse(call=func, allow_types=EVENT_PCS_PARAMS)
)
return func
def event_postprocessor(func: T_EventPostProcessor) -> T_EventPostProcessor:
- """
- :说明:
-
- 事件后处理。装饰一个函数,使它在每次接收到事件并分发给各响应器之后执行。
- """
+ """事件后处理。装饰一个函数,使它在每次接收到事件并分发给各响应器之后执行。"""
_event_postprocessors.add(
- Dependent[None].parse(call=func, allow_types=EVENT_PCS_PARAMS)
+ Dependent[Any].parse(call=func, allow_types=EVENT_PCS_PARAMS)
)
return func
def run_preprocessor(func: T_RunPreProcessor) -> T_RunPreProcessor:
- """
- :说明:
-
- 运行预处理。装饰一个函数,使它在每次事件响应器运行前执行。
- """
+ """运行预处理。装饰一个函数,使它在每次事件响应器运行前执行。"""
_run_preprocessors.add(
- Dependent[None].parse(call=func, allow_types=RUN_PREPCS_PARAMS)
+ Dependent[Any].parse(call=func, allow_types=RUN_PREPCS_PARAMS)
)
return func
def run_postprocessor(func: T_RunPostProcessor) -> T_RunPostProcessor:
- """
- :说明:
-
- 运行后处理。装饰一个函数,使它在每次事件响应器运行后执行。
- """
+ """运行后处理。装饰一个函数,使它在每次事件响应器运行后执行。"""
_run_postprocessors.add(
- Dependent[None].parse(call=func, allow_types=RUN_POSTPCS_PARAMS)
+ Dependent[Any].parse(call=func, allow_types=RUN_POSTPCS_PARAMS)
)
return func
@@ -241,22 +236,17 @@ async def _run_matcher(
async def handle_event(bot: "Bot", event: "Event") -> None:
- """
- :说明:
+ """处理一个事件。调用该函数以实现分发事件。
- 处理一个事件。调用该函数以实现分发事件。
-
- :参数:
-
- * ``bot: Bot``: Bot 对象
- * ``event: Event``: Event 对象
-
- :示例:
-
- .. code-block:: python
+ 参数:
+ bot: Bot 对象
+ event: Event 对象
+ 用法:
+ ```python
import asyncio
asyncio.create_task(handle_event(bot, event))
+ ```
"""
show_log = True
log_msg = f"{escape_tag(bot.type.upper())} {escape_tag(bot.self_id)} | "
diff --git a/nonebot/params.py b/nonebot/params.py
index be6baaee..9dca0ab2 100644
--- a/nonebot/params.py
+++ b/nonebot/params.py
@@ -1,16 +1,28 @@
-import asyncio
-import inspect
-from typing_extensions import Literal
-from typing import Any, Dict, List, Tuple, Callable, Optional, cast
-from contextlib import AsyncExitStack, contextmanager, asynccontextmanager
+"""本模块定义了依赖注入的各类参数。
-from pydantic.fields import Required, Undefined, ModelField
+FrontMatter:
+ sidebar_position: 4
+ description: nonebot.params 模块
+"""
-from nonebot.log import logger
-from nonebot.exception import TypeMisMatch
-from nonebot.adapters import Bot, Event, Message
-from nonebot.dependencies import Param, Dependent, CustomConfig
-from nonebot.typing import T_State, T_Handler, T_DependencyCache
+from typing import Any, Dict, List, Tuple, Optional
+
+from nonebot.typing import T_State
+from nonebot.matcher import Matcher
+from nonebot.adapters import Event, Message
+from nonebot.internal.params import Arg as Arg
+from nonebot.internal.params import State as State
+from nonebot.internal.params import ArgStr as ArgStr
+from nonebot.internal.params import Depends as Depends
+from nonebot.internal.params import ArgParam as ArgParam
+from nonebot.internal.params import BotParam as BotParam
+from nonebot.internal.params import EventParam as EventParam
+from nonebot.internal.params import StateParam as StateParam
+from nonebot.internal.params import DependParam as DependParam
+from nonebot.internal.params import ArgPlainText as ArgPlainText
+from nonebot.internal.params import DefaultParam as DefaultParam
+from nonebot.internal.params import MatcherParam as MatcherParam
+from nonebot.internal.params import ExceptionParam as ExceptionParam
from nonebot.consts import (
CMD_KEY,
PREFIX_KEY,
@@ -22,228 +34,6 @@ from nonebot.consts import (
REGEX_GROUP,
REGEX_MATCHED,
)
-from nonebot.utils import (
- get_name,
- run_sync,
- is_gen_callable,
- run_sync_ctx_manager,
- is_async_gen_callable,
- is_coroutine_callable,
- generic_check_issubclass,
-)
-
-
-class DependsInner:
- def __init__(
- self,
- dependency: Optional[T_Handler] = None,
- *,
- use_cache: bool = True,
- ) -> None:
- self.dependency = dependency
- self.use_cache = use_cache
-
- def __repr__(self) -> str:
- dep = get_name(self.dependency)
- cache = "" if self.use_cache else ", use_cache=False"
- return f"{self.__class__.__name__}({dep}{cache})"
-
-
-def Depends(
- dependency: Optional[T_Handler] = None,
- *,
- use_cache: bool = True,
-) -> Any:
- """
- :说明:
-
- 参数依赖注入装饰器
-
- :参数:
-
- * ``dependency: Optional[Callable[..., Any]] = None``: 依赖函数。默认为参数的类型注释。
- * ``use_cache: bool = True``: 是否使用缓存。默认为 ``True``。
-
- .. code-block:: python
-
- def depend_func() -> Any:
- return ...
-
- def depend_gen_func():
- try:
- yield ...
- finally:
- ...
-
- async def handler(param_name: Any = Depends(depend_func), gen: Any = Depends(depend_gen_func)):
- ...
- """
- return DependsInner(dependency, use_cache=use_cache)
-
-
-class DependParam(Param):
- @classmethod
- def _check_param(
- cls,
- dependent: Dependent,
- name: str,
- param: inspect.Parameter,
- ) -> Optional["DependParam"]:
- if isinstance(param.default, DependsInner):
- dependency: T_Handler
- if param.default.dependency is None:
- assert param.annotation is not param.empty, "Dependency cannot be empty"
- dependency = param.annotation
- else:
- dependency = param.default.dependency
- sub_dependent = Dependent[Any].parse(
- call=dependency,
- allow_types=dependent.allow_types,
- )
- dependent.pre_checkers.extend(sub_dependent.pre_checkers)
- sub_dependent.pre_checkers.clear()
- return cls(
- Required, use_cache=param.default.use_cache, dependent=sub_dependent
- )
-
- @classmethod
- def _check_parameterless(
- cls, dependent: "Dependent", value: Any
- ) -> Optional["Param"]:
- if isinstance(value, DependsInner):
- assert value.dependency, "Dependency cannot be empty"
- dependent = Dependent[Any].parse(
- call=value.dependency, allow_types=dependent.allow_types
- )
- return cls(Required, use_cache=value.use_cache, dependent=dependent)
-
- async def _solve(
- self,
- stack: Optional[AsyncExitStack] = None,
- dependency_cache: Optional[T_DependencyCache] = None,
- **kwargs: Any,
- ) -> Any:
- use_cache: bool = self.extra["use_cache"]
- dependency_cache = {} if dependency_cache is None else dependency_cache
-
- sub_dependent: Dependent = self.extra["dependent"]
- sub_dependent.call = cast(Callable[..., Any], sub_dependent.call)
- call = sub_dependent.call
-
- # solve sub dependency with current cache
- sub_values = await sub_dependent.solve(
- stack=stack,
- dependency_cache=dependency_cache,
- **kwargs,
- )
-
- # run dependency function
- task: asyncio.Task[Any]
- if use_cache and call in dependency_cache:
- solved = await dependency_cache[call]
- elif is_gen_callable(call) or is_async_gen_callable(call):
- assert isinstance(
- stack, AsyncExitStack
- ), "Generator dependency should be called in context"
- if is_gen_callable(call):
- cm = run_sync_ctx_manager(contextmanager(call)(**sub_values))
- else:
- cm = asynccontextmanager(call)(**sub_values)
- task = asyncio.create_task(stack.enter_async_context(cm))
- dependency_cache[call] = task
- solved = await task
- elif is_coroutine_callable(call):
- task = asyncio.create_task(call(**sub_values))
- dependency_cache[call] = task
- solved = await task
- else:
- task = asyncio.create_task(run_sync(call)(**sub_values))
- dependency_cache[call] = task
- solved = await task
-
- return solved
-
-
-class _BotChecker(Param):
- async def _solve(self, bot: Bot, **kwargs: Any) -> Any:
- field: ModelField = self.extra["field"]
- _, errs_ = field.validate(bot, {}, loc=("bot",))
- if errs_:
- logger.debug(
- f"Bot type {type(bot)} not match "
- f"annotation {field._type_display()}, ignored"
- )
- raise TypeMisMatch(field, bot)
-
-
-class BotParam(Param):
- @classmethod
- def _check_param(
- cls, dependent: Dependent, name: str, param: inspect.Parameter
- ) -> Optional["BotParam"]:
- if param.default == param.empty:
- if generic_check_issubclass(param.annotation, Bot):
- if param.annotation is not Bot:
- dependent.pre_checkers.append(
- _BotChecker(
- Required,
- field=ModelField(
- name=name,
- type_=param.annotation,
- class_validators=None,
- model_config=CustomConfig,
- default=None,
- required=True,
- ),
- )
- )
- return cls(Required)
- elif param.annotation == param.empty and name == "bot":
- return cls(Required)
-
- async def _solve(self, bot: Bot, **kwargs: Any) -> Any:
- return bot
-
-
-class _EventChecker(Param):
- async def _solve(self, event: Event, **kwargs: Any) -> Any:
- field: ModelField = self.extra["field"]
- _, errs_ = field.validate(event, {}, loc=("event",))
- if errs_:
- logger.debug(
- f"Event type {type(event)} not match "
- f"annotation {field._type_display()}, ignored"
- )
- raise TypeMisMatch(field, event)
-
-
-class EventParam(Param):
- @classmethod
- def _check_param(
- cls, dependent: Dependent, name: str, param: inspect.Parameter
- ) -> Optional["EventParam"]:
- if param.default == param.empty:
- if generic_check_issubclass(param.annotation, Event):
- if param.annotation is not Event:
- dependent.pre_checkers.append(
- _EventChecker(
- Required,
- field=ModelField(
- name=name,
- type_=param.annotation,
- class_validators=None,
- model_config=CustomConfig,
- default=None,
- required=True,
- ),
- )
- )
- return cls(Required)
- elif param.annotation == param.empty and name == "event":
- return cls(Required)
-
- async def _solve(self, event: Event, **kwargs: Any) -> Any:
- return event
async def _event_type(event: Event) -> str:
@@ -251,6 +41,7 @@ async def _event_type(event: Event) -> str:
def EventType() -> str:
+ """{ref}`nonebot.adapters.Event` 类型参数"""
return Depends(_event_type)
@@ -259,6 +50,7 @@ async def _event_message(event: Event) -> Message:
def EventMessage() -> Any:
+ """{ref}`nonebot.adapters.Event` 消息参数"""
return Depends(_event_message)
@@ -267,6 +59,7 @@ async def _event_plain_text(event: Event) -> str:
def EventPlainText() -> str:
+ """{ref}`nonebot.adapters.Event` 纯文本消息参数"""
return Depends(_event_plain_text)
@@ -275,108 +68,85 @@ async def _event_to_me(event: Event) -> bool:
def EventToMe() -> bool:
+ """{ref}`nonebot.adapters.Event` `to_me` 参数"""
return Depends(_event_to_me)
-class StateInner:
- ...
-
-
-def State() -> T_State:
- return StateInner() # type: ignore
-
-
-class StateParam(Param):
- @classmethod
- def _check_param(
- cls, dependent: Dependent, name: str, param: inspect.Parameter
- ) -> Optional["StateParam"]:
- if isinstance(param.default, StateInner):
- return cls(Required)
-
- async def _solve(self, state: T_State, **kwargs: Any) -> Any:
- return state
-
-
-def _command(state=State()) -> Message:
+def _command(state: T_State) -> Message:
return state[PREFIX_KEY][CMD_KEY]
def Command() -> Tuple[str, ...]:
- return Depends(_command, use_cache=False)
+ """消息命令元组"""
+ return Depends(_command)
-def _raw_command(state=State()) -> Message:
+def _raw_command(state: T_State) -> Message:
return state[PREFIX_KEY][RAW_CMD_KEY]
def RawCommand() -> str:
- return Depends(_raw_command, use_cache=False)
+ """消息命令文本"""
+ return Depends(_raw_command)
-def _command_arg(state=State()) -> Message:
+def _command_arg(state: T_State) -> Message:
return state[PREFIX_KEY][CMD_ARG_KEY]
def CommandArg() -> Any:
- return Depends(_command_arg, use_cache=False)
+ """消息命令参数"""
+ return Depends(_command_arg)
-def _shell_command_args(state=State()) -> Any:
+def _shell_command_args(state: T_State) -> Any:
return state[SHELL_ARGS]
def ShellCommandArgs():
+ """shell 命令解析后的参数字典"""
return Depends(_shell_command_args, use_cache=False)
-def _shell_command_argv(state=State()) -> List[str]:
+def _shell_command_argv(state: T_State) -> List[str]:
return state[SHELL_ARGV]
def ShellCommandArgv() -> Any:
+ """shell 命令原始参数列表"""
return Depends(_shell_command_argv, use_cache=False)
-def _regex_matched(state=State()) -> str:
+def _regex_matched(state: T_State) -> str:
return state[REGEX_MATCHED]
def RegexMatched() -> str:
+ """正则匹配结果"""
return Depends(_regex_matched, use_cache=False)
-def _regex_group(state=State()):
+def _regex_group(state: T_State):
return state[REGEX_GROUP]
def RegexGroup() -> Tuple[Any, ...]:
+ """正则匹配结果 group 元组"""
return Depends(_regex_group, use_cache=False)
-def _regex_dict(state=State()):
+def _regex_dict(state: T_State):
return state[REGEX_DICT]
def RegexDict() -> Dict[str, Any]:
+ """正则匹配结果 group 字典"""
return Depends(_regex_dict, use_cache=False)
-class MatcherParam(Param):
- @classmethod
- def _check_param(
- cls, dependent: Dependent, name: str, param: inspect.Parameter
- ) -> Optional["MatcherParam"]:
- if generic_check_issubclass(param.annotation, Matcher) or (
- param.annotation == param.empty and name == "matcher"
- ):
- return cls(Required)
-
- async def _solve(self, matcher: "Matcher", **kwargs: Any) -> Any:
- return matcher
-
-
def Received(id: Optional[str] = None, default: Any = None) -> Any:
+ """`receive` 事件参数"""
+
def _received(matcher: "Matcher"):
return matcher.get_receive(id or "", default)
@@ -384,76 +154,26 @@ def Received(id: Optional[str] = None, default: Any = None) -> Any:
def LastReceived(default: Any = None) -> Any:
+ """`last_receive` 事件参数"""
+
def _last_received(matcher: "Matcher") -> Any:
return matcher.get_last_receive(default)
return Depends(_last_received, use_cache=False)
-class ArgInner:
- def __init__(
- self, key: Optional[str], type: Literal["message", "str", "plaintext"]
- ) -> None:
- self.key = key
- self.type = type
-
-
-def Arg(key: Optional[str] = None) -> Any:
- return ArgInner(key, "message")
-
-
-def ArgStr(key: Optional[str] = None) -> str:
- return ArgInner(key, "str") # type: ignore
-
-
-def ArgPlainText(key: Optional[str] = None) -> str:
- return ArgInner(key, "plaintext") # type: ignore
-
-
-class ArgParam(Param):
- @classmethod
- def _check_param(
- cls, dependent: Dependent, name: str, param: inspect.Parameter
- ) -> Optional["ArgParam"]:
- if isinstance(param.default, ArgInner):
- return cls(Required, key=param.default.key or name, type=param.default.type)
-
- async def _solve(self, matcher: "Matcher", **kwargs: Any) -> Any:
- message = matcher.get_arg(self.extra["key"])
- if message is None:
- return message
- if self.extra["type"] == "message":
- return message
- elif self.extra["type"] == "str":
- return str(message)
- else:
- return message.extract_plain_text()
-
-
-class ExceptionParam(Param):
- @classmethod
- def _check_param(
- cls, dependent: Dependent, name: str, param: inspect.Parameter
- ) -> Optional["ExceptionParam"]:
- if generic_check_issubclass(param.annotation, Exception) or (
- param.annotation == param.empty and name == "exception"
- ):
- return cls(Required)
-
- async def _solve(self, exception: Optional[Exception] = None, **kwargs: Any) -> Any:
- return exception
-
-
-class DefaultParam(Param):
- @classmethod
- def _check_param(
- cls, dependent: Dependent, name: str, param: inspect.Parameter
- ) -> Optional["DefaultParam"]:
- if param.default != param.empty:
- return cls(param.default)
-
- async def _solve(self, **kwargs: Any) -> Any:
- return Undefined
-
-
-from nonebot.matcher import Matcher
+__autodoc__ = {
+ "Arg": True,
+ "State": True,
+ "ArgStr": True,
+ "Depends": True,
+ "ArgParam": True,
+ "BotParam": True,
+ "EventParam": True,
+ "StateParam": True,
+ "DependParam": True,
+ "ArgPlainText": True,
+ "DefaultParam": True,
+ "MatcherParam": True,
+ "ExceptionParam": True,
+}
diff --git a/nonebot/permission.py b/nonebot/permission.py
index afb527cc..1373fbb6 100644
--- a/nonebot/permission.py
+++ b/nonebot/permission.py
@@ -1,210 +1,83 @@
-r"""
-权限
-====
+"""本模块是 {ref}`nonebot.matcher.Matcher.permission` 的类型定义。
-每个 ``Matcher`` 拥有一个 ``Permission`` ,其中是 ``PermissionChecker`` 的集合,只要有一个 ``PermissionChecker`` 检查结果为 ``True`` 时就会继续运行。
+每个 {ref}`nonebot.matcher.Matcher` 拥有一个 {ref}`nonebot.permission.Permission` ,
+其中是 `PermissionChecker` 的集合,只要有一个 `PermissionChecker` 检查结果为 `True` 时就会继续运行。
-\:\:\:tip 提示
-``PermissionChecker`` 既可以是 async function 也可以是 sync function
-\:\:\:
+FrontMatter:
+ sidebar_position: 6
+ description: nonebot.permission 模块
"""
-import asyncio
-from contextlib import AsyncExitStack
-from typing import Any, Set, Tuple, Union, NoReturn, Optional, Coroutine
-
+from nonebot.params import EventType
from nonebot.adapters import Bot, Event
-from nonebot.dependencies import Dependent
-from nonebot.exception import SkippedException
-from nonebot.typing import T_Handler, T_DependencyCache, T_PermissionChecker
-from nonebot.params import (
- BotParam,
- EventType,
- EventParam,
- DependParam,
- DefaultParam,
-)
-
-
-async def _run_coro_with_catch(coro: Coroutine[Any, Any, Any]):
- try:
- return await coro
- except SkippedException:
- return False
-
-
-class Permission:
- """
- :说明:
-
- ``Matcher`` 规则类,当事件传递时,在 ``Matcher`` 运行前进行检查。
-
- :示例:
-
- .. code-block:: python
-
- Permission(async_function) | sync_function
- # 等价于
- from nonebot.utils import run_sync
- Permission(async_function, run_sync(sync_function))
- """
-
- __slots__ = ("checkers",)
-
- HANDLER_PARAM_TYPES = [
- DependParam,
- BotParam,
- EventParam,
- DefaultParam,
- ]
-
- def __init__(self, *checkers: Union[T_PermissionChecker, Dependent[bool]]) -> None:
- """
- :参数:
-
- * ``*checkers: Union[T_PermissionChecker, Dependent[bool]``: PermissionChecker
- """
-
- self.checkers: Set[Dependent[bool]] = set(
- checker
- if isinstance(checker, Dependent)
- else Dependent[bool].parse(
- call=checker, allow_types=self.HANDLER_PARAM_TYPES
- )
- for checker in checkers
- )
- """
- :说明:
-
- 存储 ``PermissionChecker``
-
- :类型:
-
- * ``Set[Dependent[bool]]``
- """
-
- async def __call__(
- self,
- bot: Bot,
- event: Event,
- stack: Optional[AsyncExitStack] = None,
- dependency_cache: Optional[T_DependencyCache] = None,
- ) -> bool:
- """
- :说明:
-
- 检查是否满足某个权限
-
- :参数:
-
- * ``bot: Bot``: Bot 对象
- * ``event: Event``: Event 对象
- * ``stack: Optional[AsyncExitStack]``: 异步上下文栈
- * ``dependency_cache: Optional[CacheDict[T_Handler, Any]]``: 依赖缓存
-
- :返回:
-
- - ``bool``
- """
- if not self.checkers:
- return True
- results = await asyncio.gather(
- *(
- _run_coro_with_catch(
- checker(
- bot=bot,
- event=event,
- stack=stack,
- dependency_cache=dependency_cache,
- )
- )
- for checker in self.checkers
- ),
- )
- return any(results)
-
- def __and__(self, other) -> NoReturn:
- raise RuntimeError("And operation between Permissions is not allowed.")
-
- def __or__(
- self, other: Optional[Union["Permission", T_PermissionChecker]]
- ) -> "Permission":
- if other is None:
- return self
- elif isinstance(other, Permission):
- return Permission(*self.checkers, *other.checkers)
- else:
- return Permission(*self.checkers, other)
+from nonebot.internal.permission import USER as USER
+from nonebot.internal.permission import User as User
+from nonebot.internal.permission import Permission as Permission
class Message:
+ """检查是否为消息事件"""
+
+ __slots__ = ()
+
async def __call__(self, type: str = EventType()) -> bool:
return type == "message"
class Notice:
+ """检查是否为通知事件"""
+
+ __slots__ = ()
+
async def __call__(self, type: str = EventType()) -> bool:
return type == "notice"
class Request:
+ """检查是否为请求事件"""
+
+ __slots__ = ()
+
async def __call__(self, type: str = EventType()) -> bool:
return type == "request"
class MetaEvent:
+ """检查是否为元事件"""
+
+ __slots__ = ()
+
async def __call__(self, type: str = EventType()) -> bool:
return type == "meta_event"
-MESSAGE = Permission(Message())
+MESSAGE: Permission = Permission(Message())
+"""匹配任意 `message` 类型事件
+
+仅在需要同时捕获不同类型事件时使用,优先使用 message type 的 Matcher。
"""
-- **说明**: 匹配任意 ``message`` 类型事件,仅在需要同时捕获不同类型事件时使用。优先使用 message type 的 Matcher。
+NOTICE: Permission = Permission(Notice())
+"""匹配任意 `notice` 类型事件
+
+仅在需要同时捕获不同类型事件时使用,优先使用 notice type 的 Matcher。
"""
-NOTICE = Permission(Notice())
+REQUEST: Permission = Permission(Request())
+"""匹配任意 `request` 类型事件
+
+仅在需要同时捕获不同类型事件时使用,优先使用 request type 的 Matcher。
"""
-- **说明**: 匹配任意 ``notice`` 类型事件,仅在需要同时捕获不同类型事件时使用。优先使用 notice type 的 Matcher。
+METAEVENT: Permission = Permission(MetaEvent())
+"""匹配任意 `meta_event` 类型事件
+
+仅在需要同时捕获不同类型事件时使用,优先使用 meta_event type 的 Matcher。
"""
-REQUEST = Permission(Request())
-"""
-- **说明**: 匹配任意 ``request`` 类型事件,仅在需要同时捕获不同类型事件时使用。优先使用 request type 的 Matcher。
-"""
-METAEVENT = Permission(MetaEvent())
-"""
-- **说明**: 匹配任意 ``meta_event`` 类型事件,仅在需要同时捕获不同类型事件时使用。优先使用 meta_event type 的 Matcher。
-"""
-
-
-class User:
- def __init__(
- self, users: Tuple[str, ...], perm: Optional[Permission] = None
- ) -> None:
- self.users = users
- self.perm = perm
-
- async def __call__(self, bot: Bot, event: Event) -> bool:
- return bool(
- event.get_session_id() in self.users
- and (self.perm is None or await self.perm(bot, event))
- )
-
-
-def USER(*users: str, perm: Optional[Permission] = None):
- """
- :说明:
-
- ``event`` 的 ``session_id`` 在白名单内且满足 perm
-
- :参数:
-
- * ``*user: str``: 白名单
- * ``perm: Optional[Permission]``: 需要同时满足的权限
- """
-
- return Permission(User(users, perm))
class SuperUser:
+ """检查当前事件是否是消息事件且属于超级管理员"""
+
+ __slots__ = ()
+
async def __call__(self, bot: Bot, event: Event) -> bool:
return event.get_type() == "message" and (
f"{bot.adapter.get_name().split(maxsplit=1)[0].lower()}:{event.get_user_id()}"
@@ -213,7 +86,12 @@ class SuperUser:
)
-SUPERUSER = Permission(SuperUser())
-"""
-- **说明**: 匹配任意超级用户消息类型事件
-"""
+SUPERUSER: Permission = Permission(SuperUser())
+"""匹配任意超级用户消息类型事件"""
+
+__autodoc__ = {
+ "Permission": True,
+ "Permission.__call__": True,
+ "User": True,
+ "USER": True,
+}
diff --git a/nonebot/plugin/__init__.py b/nonebot/plugin/__init__.py
index e55e1180..7898518f 100644
--- a/nonebot/plugin/__init__.py
+++ b/nonebot/plugin/__init__.py
@@ -1,8 +1,37 @@
-"""
-插件
-====
+"""本模块为 NoneBot 插件开发提供便携的定义函数。
-为 NoneBot 插件开发提供便携的定义函数。
+## 快捷导入
+
+为方便使用,本模块从子模块导入了部分内容,以下内容可以直接通过本模块导入:
+
+- `on` => {ref}``on` `
+- `on_metaevent` => {ref}``on_metaevent` `
+- `on_message` => {ref}``on_message` `
+- `on_notice` => {ref}``on_notice` `
+- `on_request` => {ref}``on_request` `
+- `on_startswith` => {ref}``on_startswith` `
+- `on_endswith` => {ref}``on_endswith` `
+- `on_keyword` => {ref}``on_keyword` `
+- `on_command` => {ref}``on_command` `
+- `on_shell_command` => {ref}``on_shell_command` `
+- `on_regex` => {ref}``on_regex` `
+- `CommandGroup` => {ref}``CommandGroup` `
+- `Matchergroup` => {ref}``MatcherGroup` `
+- `load_plugin` => {ref}``load_plugin` `
+- `load_plugins` => {ref}``load_plugins` `
+- `load_all_plugins` => {ref}``load_all_plugins` `
+- `load_from_json` => {ref}``load_from_json` `
+- `load_from_toml` => {ref}``load_from_toml` `
+- `load_builtin_plugin` => {ref}``load_builtin_plugin` `
+- `load_builtin_plugins` => {ref}``load_builtin_plugins` `
+- `get_plugin` => {ref}``get_plugin` `
+- `get_loaded_plugins` => {ref}``get_loaded_plugins` `
+- `export` => {ref}``export` `
+- `require` => {ref}``require` `
+
+FrontMatter:
+ sidebar_position: 0
+ description: nonebot.plugin 模块
"""
from typing import List, Optional
@@ -37,5 +66,6 @@ from .load import load_from_json as load_from_json
from .load import load_from_toml as load_from_toml
from .on import on_shell_command as on_shell_command
from .load import load_all_plugins as load_all_plugins
+from .load import load_builtin_plugin as load_builtin_plugin
from .plugin import get_loaded_plugins as get_loaded_plugins
from .load import load_builtin_plugins as load_builtin_plugins
diff --git a/nonebot/plugin/export.py b/nonebot/plugin/export.py
index 2a792a01..d49cc362 100644
--- a/nonebot/plugin/export.py
+++ b/nonebot/plugin/export.py
@@ -1,16 +1,20 @@
+"""本模块定义了插件导出的内容对象。
+
+在新版插件系统中,推荐优先使用直接 import 所需要的插件内容。
+
+FrontMatter:
+ sidebar_position: 4
+ description: nonebot.plugin.export 模块
+"""
+
from . import _current_plugin
class Export(dict):
- """
- :说明:
-
- 插件导出内容以使得其他插件可以获得。
-
- :示例:
-
- .. code-block:: python
+ """插件导出内容以使得其他插件可以获得。
+ 用法:
+ ```python
nonebot.export().default = "bar"
@nonebot.export()
@@ -25,6 +29,7 @@ class Export(dict):
@nonebot.export().sub
def something_else():
pass
+ ```
"""
def __call__(self, func, **kwargs):
@@ -45,15 +50,7 @@ class Export(dict):
def export() -> Export:
- """
- :说明:
-
- 获取插件的导出内容对象
-
- :返回:
-
- - ``Export``
- """
+ """获取当前插件的导出内容对象"""
plugin = _current_plugin.get()
if not plugin:
raise RuntimeError("Export outside of the plugin!")
diff --git a/nonebot/plugin/load.py b/nonebot/plugin/load.py
index 26d2d7e3..03d5dbde 100644
--- a/nonebot/plugin/load.py
+++ b/nonebot/plugin/load.py
@@ -1,3 +1,9 @@
+"""本模块定义插件加载接口。
+
+FrontMatter:
+ sidebar_position: 1
+ description: nonebot.plugin.load 模块
+"""
import json
import warnings
from typing import Set, Iterable, Optional
@@ -11,18 +17,10 @@ from .plugin import Plugin, get_plugin
def load_plugin(module_path: str) -> Optional[Plugin]:
- """
- :说明:
+ """加载单个插件,可以是本地插件或是通过 `pip` 安装的插件。
- 使用 ``PluginManager`` 加载单个插件,可以是本地插件或是通过 ``pip`` 安装的插件。
-
- :参数:
-
- * ``module_path: str``: 插件名称 ``path.to.your.plugin``
-
- :返回:
-
- - ``Optional[Plugin]``
+ 参数:
+ module_path: 插件名称 `path.to.your.plugin`
"""
manager = PluginManager([module_path])
@@ -31,18 +29,10 @@ def load_plugin(module_path: str) -> Optional[Plugin]:
def load_plugins(*plugin_dir: str) -> Set[Plugin]:
- """
- :说明:
+ """导入文件夹下多个插件,以 `_` 开头的插件不会被导入!
- 导入目录下多个插件,以 ``_`` 开头的插件不会被导入!
-
- :参数:
-
- - ``*plugin_dir: str``: 插件路径
-
- :返回:
-
- - ``Set[Plugin]``
+ 参数:
+ plugin_dir: 文件夹路径
"""
manager = PluginManager(search_path=plugin_dir)
_managers.append(manager)
@@ -52,19 +42,11 @@ def load_plugins(*plugin_dir: str) -> Set[Plugin]:
def load_all_plugins(
module_path: Iterable[str], plugin_dir: Iterable[str]
) -> Set[Plugin]:
- """
- :说明:
+ """导入指定列表中的插件以及指定目录下多个插件,以 `_` 开头的插件不会被导入!
- 导入指定列表中的插件以及指定目录下多个插件,以 ``_`` 开头的插件不会被导入!
-
- :参数:
-
- - ``module_path: Iterable[str]``: 指定插件集合
- - ``plugin_dir: Iterable[str]``: 指定插件路径集合
-
- :返回:
-
- - ``Set[Plugin]``
+ 参数:
+ module_path: 指定插件集合
+ plugin_dir: 指定文件夹路径集合
"""
manager = PluginManager(module_path, plugin_dir)
_managers.append(manager)
@@ -72,19 +54,23 @@ def load_all_plugins(
def load_from_json(file_path: str, encoding: str = "utf-8") -> Set[Plugin]:
- """
- :说明:
+ """导入指定 json 文件中的 `plugins` 以及 `plugin_dirs` 下多个插件,以 `_` 开头的插件不会被导入!
- 导入指定 json 文件中的 ``plugins`` 以及 ``plugin_dirs`` 下多个插件,以 ``_`` 开头的插件不会被导入!
+ 参数:
+ file_path: 指定 json 文件路径
+ encoding: 指定 json 文件编码
- :参数:
+ 用法:
+ ```json title=plugins.json
+ {
+ "plugins": ["some_plugin"],
+ "plugin_dirs": ["some_dir"]
+ }
+ ```
- - ``file_path: str``: 指定 json 文件路径
- - ``encoding: str``: 指定 json 文件编码
-
- :返回:
-
- - ``Set[Plugin]``
+ ```python
+ nonebot.load_from_json("plugins.json")
+ ```
"""
with open(file_path, "r", encoding=encoding) as f:
data = json.load(f)
@@ -96,20 +82,22 @@ def load_from_json(file_path: str, encoding: str = "utf-8") -> Set[Plugin]:
def load_from_toml(file_path: str, encoding: str = "utf-8") -> Set[Plugin]:
- """
- :说明:
+ """导入指定 toml 文件 `[tool.nonebot]` 中的 `plugins` 以及 `plugin_dirs` 下多个插件,以 `_` 开头的插件不会被导入!
- 导入指定 toml 文件 ``[tool.nonebot]`` 中的 ``plugins`` 以及 ``plugin_dirs`` 下多个插件,
- 以 ``_`` 开头的插件不会被导入!
+ 参数:
+ file_path: 指定 toml 文件路径
+ encoding: 指定 toml 文件编码
- :参数:
+ 用法:
+ ```toml title=pyproject.toml
+ [tool.nonebot]
+ plugins = ["some_plugin"]
+ plugin_dirs = ["some_dir"]
+ ```
- - ``file_path: str``: 指定 toml 文件路径
- - ``encoding: str``: 指定 toml 文件编码
-
- :返回:
-
- - ``Set[Plugin]``
+ ```python
+ nonebot.load_from_toml("pyproject.toml")
+ ```
"""
with open(file_path, "r", encoding=encoding) as f:
data = tomlkit.parse(f.read()) # type: ignore
@@ -131,37 +119,48 @@ def load_from_toml(file_path: str, encoding: str = "utf-8") -> Set[Plugin]:
return load_all_plugins(plugins, plugin_dirs)
-def load_builtin_plugins(name: str) -> Optional[Plugin]:
- """
- :说明:
+def load_builtin_plugin(name: str) -> Optional[Plugin]:
+ """导入 NoneBot 内置插件。
- 导入 NoneBot 内置插件
-
- :返回:
-
- - ``Plugin``
+ 参数:
+ name: 插件名称
"""
return load_plugin(f"nonebot.plugins.{name}")
+def load_builtin_plugins(*plugins) -> Set[Plugin]:
+ """导入多个 NoneBot 内置插件。
+
+ 参数:
+ plugins: 插件名称列表
+ """
+ return load_all_plugins([f"nonebot.plugins.{p}" for p in plugins], [])
+
+
+def _find_manager_by_name(name: str) -> Optional[PluginManager]:
+ for manager in reversed(_managers):
+ if name in manager.plugins or name in manager.searched_plugins:
+ return manager
+
+
def require(name: str) -> Export:
+ """获取一个插件的导出内容。
+
+ 如果为 `load_plugins` 文件夹导入的插件,则为文件(夹)名。
+
+ 参数:
+ name: 插件名,即 {ref}`nonebot.plugin.plugin.Plugin.name`。
+
+ 异常:
+ RuntimeError: 插件无法加载
"""
- :说明:
-
- 获取一个插件的导出内容
-
- :参数:
-
- * ``name: str``: 插件名,与 ``load_plugin`` 参数一致。如果为 ``load_plugins`` 导入的插件,则为文件(夹)名。
-
- :返回:
-
- - ``Export``
-
- :异常:
- - ``RuntimeError``: 插件无法加载
- """
- plugin = get_plugin(name) or load_plugin(name)
+ plugin = get_plugin(name.rsplit(".", 1)[-1])
if not plugin:
- raise RuntimeError(f'Cannot load plugin "{name}"!')
+ manager = _find_manager_by_name(name)
+ if manager:
+ plugin = manager.load_plugin(name)
+ else:
+ plugin = load_plugin(name)
+ if not plugin:
+ raise RuntimeError(f'Cannot load plugin "{name}"!')
return plugin.export
diff --git a/nonebot/plugin/manager.py b/nonebot/plugin/manager.py
index 23597eb1..7e8b2826 100644
--- a/nonebot/plugin/manager.py
+++ b/nonebot/plugin/manager.py
@@ -1,3 +1,11 @@
+"""本模块实现插件加载流程。
+
+参考: [import hooks](https://docs.python.org/3/reference/import.html#import-hooks), [PEP302](https://www.python.org/dev/peps/pep-0302/)
+
+FrontMatter:
+ sidebar_position: 5
+ description: nonebot.plugin.manager 模块
+"""
import sys
import pkgutil
import importlib
@@ -10,8 +18,9 @@ from typing import Set, Dict, List, Union, Iterable, Optional, Sequence
from nonebot.log import logger
from nonebot.utils import escape_tag
-from .plugin import Plugin, _new_plugin
+
from . import _managers, _current_plugin
+from .plugin import Plugin, _new_plugin, _confirm_plugin
class PluginManager:
@@ -44,7 +53,10 @@ class PluginManager:
return [
*chain.from_iterable(
- [*manager.plugins, *manager.searched_plugins.keys()]
+ [
+ *map(lambda x: x.rsplit(".", 1)[-1], manager.plugins),
+ *manager.searched_plugins.keys(),
+ ]
for manager in _pre_managers
)
]
@@ -56,7 +68,7 @@ class PluginManager:
third_party_plugins: Set[str] = set()
for plugin in self.plugins:
- name = plugin.rsplit(".", 1)[-1] if "." in plugin else plugin
+ name = plugin.rsplit(".", 1)[-1]
if name in third_party_plugins or name in previous_plugins:
raise RuntimeError(
f"Plugin already exists: {name}! Check your plugin name"
@@ -86,21 +98,27 @@ class PluginManager:
return third_party_plugins | set(self.searched_plugins.keys())
- def load_plugin(self, name) -> Optional[Plugin]:
+ def load_plugin(self, name: str) -> Optional[Plugin]:
try:
if name in self.plugins:
module = importlib.import_module(name)
- elif name not in self.searched_plugins:
- raise RuntimeError(f"Plugin not found: {name}! Check your plugin name")
- else:
+ elif name in self.searched_plugins:
module = importlib.import_module(
self._path_to_module_name(self.searched_plugins[name])
)
+ else:
+ raise RuntimeError(f"Plugin not found: {name}! Check your plugin name")
logger.opt(colors=True).success(
f'Succeeded to import "{escape_tag(name)}"'
)
- return getattr(module, "__plugin__", None)
+ plugin = getattr(module, "__plugin__", None)
+ if plugin is None:
+ raise RuntimeError(
+ f"Module {module.__name__} is not loaded as a plugin! "
+ "Make sure not to import it before loading."
+ )
+ return plugin
except Exception as e:
logger.opt(colors=True, exception=e).error(
f'Failed to import "{escape_tag(name)}"'
@@ -120,7 +138,6 @@ class PluginFinder(MetaPathFinder):
target: Optional[ModuleType] = None,
):
if _managers:
- index = -1
module_spec = PathFinder.find_spec(fullname, path, target)
if not module_spec:
return
@@ -129,17 +146,13 @@ class PluginFinder(MetaPathFinder):
return
module_path = Path(module_origin).resolve()
- while -index <= len(_managers):
- manager = _managers[index]
-
+ for manager in reversed(_managers):
if (
fullname in manager.plugins
or module_path in manager.searched_plugins.values()
):
module_spec.loader = PluginLoader(manager, fullname, module_origin)
return module_spec
-
- index -= 1
return
@@ -180,6 +193,8 @@ class PluginLoader(SourceFileLoader):
# ) from e
super().exec_module(module)
+ _confirm_plugin(plugin)
+
_current_plugin.reset(_plugin_token)
return
diff --git a/nonebot/plugin/on.py b/nonebot/plugin/on.py
index b0ab2377..266a0fbc 100644
--- a/nonebot/plugin/on.py
+++ b/nonebot/plugin/on.py
@@ -1,3 +1,9 @@
+"""本模块定义事件响应器便携定义函数。
+
+FrontMatter:
+ sidebar_position: 2
+ description: nonebot.plugin.on 模块
+"""
import re
import sys
import inspect
@@ -5,15 +11,9 @@ from types import ModuleType
from typing import Any, Set, Dict, List, Type, Tuple, Union, Optional
from nonebot.matcher import Matcher
-from .manager import _current_plugin
from nonebot.permission import Permission
from nonebot.dependencies import Dependent
-from nonebot.typing import (
- T_State,
- T_Handler,
- T_RuleChecker,
- T_PermissionChecker,
-)
+from nonebot.typing import T_State, T_Handler, T_RuleChecker, T_PermissionChecker
from nonebot.rule import (
Rule,
ArgumentParser,
@@ -25,6 +25,8 @@ from nonebot.rule import (
shell_command,
)
+from .manager import _current_plugin
+
def _store_matcher(matcher: Type[Matcher]) -> None:
plugin = _current_plugin.get()
@@ -55,24 +57,17 @@ def on(
_depth: int = 0,
) -> Type[Matcher]:
"""
- :说明:
+ 注册一个基础事件响应器,可自定义类型。
- 注册一个基础事件响应器,可自定义类型。
-
- :参数:
-
- * ``type: str``: 事件响应器类型
- * ``rule: Optional[Union[Rule, T_RuleChecker]]``: 事件响应规则
- * ``permission: Optional[Union[Permission, T_PermissionChecker]] =]]``: 事件响应权限
- * ``handlers: Optional[List[Union[T_Handler, Dependent]]]``: 事件处理函数列表
- * ``temp: bool``: 是否为临时事件响应器(仅执行一次)
- * ``priority: int``: 事件响应器优先级
- * ``block: bool``: 是否阻止事件向更低优先级传递
- * ``state: Optional[T_State]``: 默认 state
-
- :返回:
-
- - ``Type[Matcher]``
+ 参数:
+ type: 事件响应器类型
+ rule: 事件响应规则
+ permission: 事件响应权限
+ handlers: 事件处理函数列表
+ temp: 是否为临时事件响应器(仅执行一次)
+ priority: 事件响应器优先级
+ block: 是否阻止事件向更低优先级传递
+ state: 默认 state
"""
matcher = Matcher.new(
type,
@@ -101,22 +96,15 @@ def on_metaevent(
_depth: int = 0,
) -> Type[Matcher]:
"""
- :说明:
+ 注册一个元事件响应器。
- 注册一个元事件响应器。
-
- :参数:
-
- * ``rule: Optional[Union[Rule, T_RuleChecker]]``: 事件响应规则
- * ``handlers: Optional[List[Union[T_Handler, Dependent]]]``: 事件处理函数列表
- * ``temp: bool``: 是否为临时事件响应器(仅执行一次)
- * ``priority: int``: 事件响应器优先级
- * ``block: bool``: 是否阻止事件向更低优先级传递
- * ``state: Optional[T_State]``: 默认 state
-
- :返回:
-
- - ``Type[Matcher]``
+ 参数:
+ rule: 事件响应规则
+ handlers: 事件处理函数列表
+ temp: 是否为临时事件响应器(仅执行一次)
+ priority: 事件响应器优先级
+ block: 是否阻止事件向更低优先级传递
+ state: 默认 state
"""
matcher = Matcher.new(
"meta_event",
@@ -146,23 +134,16 @@ def on_message(
_depth: int = 0,
) -> Type[Matcher]:
"""
- :说明:
+ 注册一个消息事件响应器。
- 注册一个消息事件响应器。
-
- :参数:
-
- * ``rule: Optional[Union[Rule, T_RuleChecker]]``: 事件响应规则
- * ``permission: Optional[Union[Permission, T_PermissionChecker]] =]]``: 事件响应权限
- * ``handlers: Optional[List[Union[T_Handler, Dependent]]]``: 事件处理函数列表
- * ``temp: bool``: 是否为临时事件响应器(仅执行一次)
- * ``priority: int``: 事件响应器优先级
- * ``block: bool``: 是否阻止事件向更低优先级传递
- * ``state: Optional[T_State]``: 默认 state
-
- :返回:
-
- - ``Type[Matcher]``
+ 参数:
+ rule: 事件响应规则
+ permission: 事件响应权限
+ handlers: 事件处理函数列表
+ temp: 是否为临时事件响应器(仅执行一次)
+ priority: 事件响应器优先级
+ block: 是否阻止事件向更低优先级传递
+ state: 默认 state
"""
matcher = Matcher.new(
"message",
@@ -191,22 +172,15 @@ def on_notice(
_depth: int = 0,
) -> Type[Matcher]:
"""
- :说明:
+ 注册一个通知事件响应器。
- 注册一个通知事件响应器。
-
- :参数:
-
- * ``rule: Optional[Union[Rule, T_RuleChecker]]``: 事件响应规则
- * ``handlers: Optional[List[Union[T_Handler, Dependent]]]``: 事件处理函数列表
- * ``temp: bool``: 是否为临时事件响应器(仅执行一次)
- * ``priority: int``: 事件响应器优先级
- * ``block: bool``: 是否阻止事件向更低优先级传递
- * ``state: Optional[T_State]``: 默认 state
-
- :返回:
-
- - ``Type[Matcher]``
+ 参数:
+ rule: 事件响应规则
+ handlers: 事件处理函数列表
+ temp: 是否为临时事件响应器(仅执行一次)
+ priority: 事件响应器优先级
+ block: 是否阻止事件向更低优先级传递
+ state: 默认 state
"""
matcher = Matcher.new(
"notice",
@@ -235,22 +209,15 @@ def on_request(
_depth: int = 0,
) -> Type[Matcher]:
"""
- :说明:
+ 注册一个请求事件响应器。
- 注册一个请求事件响应器。
-
- :参数:
-
- * ``rule: Optional[Union[Rule, T_RuleChecker]]``: 事件响应规则
- * ``handlers: Optional[List[Union[T_Handler, Dependent]]]``: 事件处理函数列表
- * ``temp: bool``: 是否为临时事件响应器(仅执行一次)
- * ``priority: int``: 事件响应器优先级
- * ``block: bool``: 是否阻止事件向更低优先级传递
- * ``state: Optional[T_State]``: 默认 state
-
- :返回:
-
- - ``Type[Matcher]``
+ 参数:
+ rule: 事件响应规则
+ handlers: 事件处理函数列表
+ temp: 是否为临时事件响应器(仅执行一次)
+ priority: 事件响应器优先级
+ block: 是否阻止事件向更低优先级传递
+ state: 默认 state
"""
matcher = Matcher.new(
"request",
@@ -276,25 +243,18 @@ def on_startswith(
**kwargs,
) -> Type[Matcher]:
"""
- :说明:
+ 注册一个消息事件响应器,并且当消息的**文本部分**以指定内容开头时响应。
- 注册一个消息事件响应器,并且当消息的**文本部分**以指定内容开头时响应。
-
- :参数:
-
- * ``msg: Union[str, Tuple[str, ...]]``: 指定消息开头内容
- * ``rule: Optional[Union[Rule, T_RuleChecker]]``: 事件响应规则
- * ``ignorecase: bool``: 是否忽略大小写
- * ``permission: Optional[Union[Permission, T_PermissionChecker]] =]]``: 事件响应权限
- * ``handlers: Optional[List[Union[T_Handler, Dependent]]]``: 事件处理函数列表
- * ``temp: bool``: 是否为临时事件响应器(仅执行一次)
- * ``priority: int``: 事件响应器优先级
- * ``block: bool``: 是否阻止事件向更低优先级传递
- * ``state: Optional[T_State]``: 默认 state
-
- :返回:
-
- - ``Type[Matcher]``
+ 参数:
+ msg: 指定消息开头内容
+ rule: 事件响应规则
+ ignorecase: 是否忽略大小写
+ permission: 事件响应权限
+ handlers: 事件处理函数列表
+ temp: 是否为临时事件响应器(仅执行一次)
+ priority: 事件响应器优先级
+ block: 是否阻止事件向更低优先级传递
+ state: 默认 state
"""
return on_message(startswith(msg, ignorecase) & rule, **kwargs, _depth=_depth + 1)
@@ -307,25 +267,18 @@ def on_endswith(
**kwargs,
) -> Type[Matcher]:
"""
- :说明:
+ 注册一个消息事件响应器,并且当消息的**文本部分**以指定内容结尾时响应。
- 注册一个消息事件响应器,并且当消息的**文本部分**以指定内容结尾时响应。
-
- :参数:
-
- * ``msg: Union[str, Tuple[str, ...]]``: 指定消息结尾内容
- * ``rule: Optional[Union[Rule, T_RuleChecker]]``: 事件响应规则
- * ``ignorecase: bool``: 是否忽略大小写
- * ``permission: Optional[Union[Permission, T_PermissionChecker]] =]]``: 事件响应权限
- * ``handlers: Optional[List[Union[T_Handler, Dependent]]]``: 事件处理函数列表
- * ``temp: bool``: 是否为临时事件响应器(仅执行一次)
- * ``priority: int``: 事件响应器优先级
- * ``block: bool``: 是否阻止事件向更低优先级传递
- * ``state: Optional[T_State]``: 默认 state
-
- :返回:
-
- - ``Type[Matcher]``
+ 参数:
+ msg: 指定消息结尾内容
+ rule: 事件响应规则
+ ignorecase: 是否忽略大小写
+ permission: 事件响应权限
+ handlers: 事件处理函数列表
+ temp: 是否为临时事件响应器(仅执行一次)
+ priority: 事件响应器优先级
+ block: 是否阻止事件向更低优先级传递
+ state: 默认 state
"""
return on_message(endswith(msg, ignorecase) & rule, **kwargs, _depth=_depth + 1)
@@ -337,24 +290,17 @@ def on_keyword(
**kwargs,
) -> Type[Matcher]:
"""
- :说明:
+ 注册一个消息事件响应器,并且当消息纯文本部分包含关键词时响应。
- 注册一个消息事件响应器,并且当消息纯文本部分包含关键词时响应。
-
- :参数:
-
- * ``keywords: Set[str]``: 关键词列表
- * ``rule: Optional[Union[Rule, T_RuleChecker]]``: 事件响应规则
- * ``permission: Optional[Union[Permission, T_PermissionChecker]] =]]``: 事件响应权限
- * ``handlers: Optional[List[Union[T_Handler, Dependent]]]``: 事件处理函数列表
- * ``temp: bool``: 是否为临时事件响应器(仅执行一次)
- * ``priority: int``: 事件响应器优先级
- * ``block: bool``: 是否阻止事件向更低优先级传递
- * ``state: Optional[T_State]``: 默认 state
-
- :返回:
-
- - ``Type[Matcher]``
+ 参数:
+ keywords: 关键词列表
+ rule: 事件响应规则
+ permission: 事件响应权限
+ handlers: 事件处理函数列表
+ temp: 是否为临时事件响应器(仅执行一次)
+ priority: 事件响应器优先级
+ block: 是否阻止事件向更低优先级传递
+ state: 默认 state
"""
return on_message(keyword(*keywords) & rule, **kwargs, _depth=_depth + 1)
@@ -367,27 +313,20 @@ def on_command(
**kwargs,
) -> Type[Matcher]:
"""
- :说明:
+ 注册一个消息事件响应器,并且当消息以指定命令开头时响应。
- 注册一个消息事件响应器,并且当消息以指定命令开头时响应。
+ 命令匹配规则参考: `命令形式匹配 `_
- 命令匹配规则参考: `命令形式匹配 `_
-
- :参数:
-
- * ``cmd: Union[str, Tuple[str, ...]]``: 指定命令内容
- * ``rule: Optional[Union[Rule, T_RuleChecker]]``: 事件响应规则
- * ``aliases: Optional[Set[Union[str, Tuple[str, ...]]]]``: 命令别名
- * ``permission: Optional[Union[Permission, T_PermissionChecker]] =]]``: 事件响应权限
- * ``handlers: Optional[List[Union[T_Handler, Dependent]]]``: 事件处理函数列表
- * ``temp: bool``: 是否为临时事件响应器(仅执行一次)
- * ``priority: int``: 事件响应器优先级
- * ``block: bool``: 是否阻止事件向更低优先级传递
- * ``state: Optional[T_State]``: 默认 state
-
- :返回:
-
- - ``Type[Matcher]``
+ 参数:
+ cmd: 指定命令内容
+ rule: 事件响应规则
+ aliases: 命令别名
+ permission: 事件响应权限
+ handlers: 事件处理函数列表
+ temp: 是否为临时事件响应器(仅执行一次)
+ priority: 事件响应器优先级
+ block: 是否阻止事件向更低优先级传递
+ state: 默认 state
"""
commands = set([cmd]) | (aliases or set())
@@ -406,30 +345,23 @@ def on_shell_command(
**kwargs,
) -> Type[Matcher]:
"""
- :说明:
+ 注册一个支持 `shell_like` 解析参数的命令消息事件响应器。
- 注册一个支持 ``shell_like`` 解析参数的命令消息事件响应器。
+ 与普通的 `on_command` 不同的是,在添加 `parser` 参数时, 响应器会自动处理消息。
- 与普通的 ``on_command`` 不同的是,在添加 ``parser`` 参数时, 响应器会自动处理消息。
+ 并将用户输入的原始参数列表保存在 `state["argv"]`, `parser` 处理的参数保存在 `state["args"]` 中
- 并将用户输入的原始参数列表保存在 ``state["argv"]``, ``parser`` 处理的参数保存在 ``state["args"]`` 中
-
- :参数:
-
- * ``cmd: Union[str, Tuple[str, ...]]``: 指定命令内容
- * ``rule: Optional[Union[Rule, T_RuleChecker]]``: 事件响应规则
- * ``aliases: Optional[Set[Union[str, Tuple[str, ...]]]]``: 命令别名
- * ``parser: Optional[ArgumentParser]``: ``nonebot.rule.ArgumentParser`` 对象
- * ``permission: Optional[Union[Permission, T_PermissionChecker]] =]]``: 事件响应权限
- * ``handlers: Optional[List[Union[T_Handler, Dependent]]]``: 事件处理函数列表
- * ``temp: bool``: 是否为临时事件响应器(仅执行一次)
- * ``priority: int``: 事件响应器优先级
- * ``block: bool``: 是否阻止事件向更低优先级传递
- * ``state: Optional[T_State]``: 默认 state
-
- :返回:
-
- - ``Type[Matcher]``
+ 参数:
+ cmd: 指定命令内容
+ rule: 事件响应规则
+ aliases: 命令别名
+ parser: `nonebot.rule.ArgumentParser` 对象
+ permission: 事件响应权限
+ handlers: 事件处理函数列表
+ temp: 是否为临时事件响应器(仅执行一次)
+ priority: 事件响应器优先级
+ block: 是否阻止事件向更低优先级传递
+ state: 默认 state
"""
commands = set([cmd]) | (aliases or set())
@@ -448,27 +380,20 @@ def on_regex(
**kwargs,
) -> Type[Matcher]:
"""
- :说明:
+ 注册一个消息事件响应器,并且当消息匹配正则表达式时响应。
- 注册一个消息事件响应器,并且当消息匹配正则表达式时响应。
+ 命令匹配规则参考: `正则匹配 `_
- 命令匹配规则参考: `正则匹配 `_
-
- :参数:
-
- * ``pattern: str``: 正则表达式
- * ``flags: Union[int, re.RegexFlag]``: 正则匹配标志
- * ``rule: Optional[Union[Rule, T_RuleChecker]]``: 事件响应规则
- * ``permission: Optional[Union[Permission, T_PermissionChecker]] =]]``: 事件响应权限
- * ``handlers: Optional[List[Union[T_Handler, Dependent]]]``: 事件处理函数列表
- * ``temp: bool``: 是否为临时事件响应器(仅执行一次)
- * ``priority: int``: 事件响应器优先级
- * ``block: bool``: 是否阻止事件向更低优先级传递
- * ``state: Optional[T_State]``: 默认 state
-
- :返回:
-
- - ``Type[Matcher]``
+ 参数:
+ pattern: 正则表达式
+ flags: 正则匹配标志
+ rule: 事件响应规则
+ permission: 事件响应权限
+ handlers: 事件处理函数列表
+ temp: 是否为临时事件响应器(仅执行一次)
+ priority: 事件响应器优先级
+ block: 是否阻止事件向更低优先级传递
+ state: 默认 state
"""
return on_message(regex(pattern, flags) & rule, **kwargs, _depth=_depth + 1)
@@ -478,38 +403,28 @@ class CommandGroup:
def __init__(self, cmd: Union[str, Tuple[str, ...]], **kwargs):
"""
- :参数:
-
- * ``cmd: Union[str, Tuple[str, ...]]``: 命令前缀
- * ``**kwargs``: 其他传递给 ``on_command`` 的参数默认值,参考 `on_command <#on-command-cmd-rule-none-aliases-none-kwargs>`_
+ 参数:
+ cmd: 命令前缀
+ **kwargs: `on_command` 的参数默认值,参考 `on_command <#on-command-cmd-rule-none-aliases-none-kwargs>`_
"""
self.basecmd: Tuple[str, ...] = (cmd,) if isinstance(cmd, str) else cmd
"""
- - **类型**: ``Tuple[str, ...]``
- - **说明**: 命令前缀
+ 命令前缀
"""
if "aliases" in kwargs:
del kwargs["aliases"]
self.base_kwargs: Dict[str, Any] = kwargs
"""
- - **类型**: ``Dict[str, Any]``
- - **说明**: 其他传递给 ``on_command`` 的参数默认值
+ 其他传递给 `on_command` 的参数默认值
"""
def command(self, cmd: Union[str, Tuple[str, ...]], **kwargs) -> Type[Matcher]:
"""
- :说明:
+ 注册一个新的命令。
- 注册一个新的命令。
-
- :参数:
-
- * ``cmd: Union[str, Tuple[str, ...]]``: 命令前缀
- * ``**kwargs``: 其他传递给 ``on_command`` 的参数,将会覆盖命令组默认值
-
- :返回:
-
- - ``Type[Matcher]``
+ 参数:
+ cmd: 命令前缀
+ **kwargs: `on_command` 的参数,将会覆盖命令组默认值
"""
sub_cmd = (cmd,) if isinstance(cmd, str) else cmd
cmd = self.basecmd + sub_cmd
@@ -522,18 +437,11 @@ class CommandGroup:
self, cmd: Union[str, Tuple[str, ...]], **kwargs
) -> Type[Matcher]:
"""
- :说明:
+ 注册一个新的命令。
- 注册一个新的命令。
-
- :参数:
-
- * ``cmd: Union[str, Tuple[str, ...]]``: 命令前缀
- * ``**kwargs``: 其他传递给 ``on_shell_command`` 的参数,将会覆盖命令组默认值
-
- :返回:
-
- - ``Type[Matcher]``
+ 参数:
+ cmd: 命令前缀
+ **kwargs: `on_shell_command` 的参数,将会覆盖命令组默认值
"""
sub_cmd = (cmd,) if isinstance(cmd, str) else cmd
cmd = self.basecmd + sub_cmd
@@ -544,45 +452,34 @@ class CommandGroup:
class MatcherGroup:
- """事件响应器组合,统一管理。为 ``Matcher`` 创建提供默认属性。"""
+ """事件响应器组合,统一管理。为 `Matcher` 创建提供默认属性。"""
def __init__(self, **kwargs):
"""
- :说明:
-
- 创建一个事件响应器组合,参数为默认值,与 ``on`` 一致
+ 创建一个事件响应器组合,参数为默认值,与 `on` 一致
"""
self.matchers: List[Type[Matcher]] = []
"""
- :类型: ``List[Type[Matcher]]``
- :说明: 组内事件响应器列表
+ 组内事件响应器列表
"""
self.base_kwargs: Dict[str, Any] = kwargs
"""
- - **类型**: ``Dict[str, Any]``
- - **说明**: 其他传递给 ``on`` 的参数默认值
+ 其他传递给 `on` 的参数默认值
"""
def on(self, **kwargs) -> Type[Matcher]:
"""
- :说明:
+ 注册一个基础事件响应器,可自定义类型。
- 注册一个基础事件响应器,可自定义类型。
-
- :参数:
-
- * ``type: str``: 事件响应器类型
- * ``rule: Optional[Union[Rule, T_RuleChecker]]``: 事件响应规则
- * ``permission: Optional[Union[Permission, T_PermissionChecker]] =]]``: 事件响应权限
- * ``handlers: Optional[List[Union[T_Handler, Dependent]]]``: 事件处理函数列表
- * ``temp: bool``: 是否为临时事件响应器(仅执行一次)
- * ``priority: int``: 事件响应器优先级
- * ``block: bool``: 是否阻止事件向更低优先级传递
- * ``state: Optional[T_State]``: 默认 state
-
- :返回:
-
- - ``Type[Matcher]``
+ 参数:
+ type: 事件响应器类型
+ rule: 事件响应规则
+ permission: 事件响应权限
+ handlers: 事件处理函数列表
+ temp: 是否为临时事件响应器(仅执行一次)
+ priority: 事件响应器优先级
+ block: 是否阻止事件向更低优先级传递
+ state: 默认 state
"""
final_kwargs = self.base_kwargs.copy()
final_kwargs.update(kwargs)
@@ -592,22 +489,15 @@ class MatcherGroup:
def on_metaevent(self, **kwargs) -> Type[Matcher]:
"""
- :说明:
+ 注册一个元事件响应器。
- 注册一个元事件响应器。
-
- :参数:
-
- * ``rule: Optional[Union[Rule, T_RuleChecker]]``: 事件响应规则
- * ``handlers: Optional[List[Union[T_Handler, Dependent]]]``: 事件处理函数列表
- * ``temp: bool``: 是否为临时事件响应器(仅执行一次)
- * ``priority: int``: 事件响应器优先级
- * ``block: bool``: 是否阻止事件向更低优先级传递
- * ``state: Optional[T_State]``: 默认 state
-
- :返回:
-
- - ``Type[Matcher]``
+ 参数:
+ rule: 事件响应规则
+ handlers: 事件处理函数列表
+ temp: 是否为临时事件响应器(仅执行一次)
+ priority: 事件响应器优先级
+ block: 是否阻止事件向更低优先级传递
+ state: 默认 state
"""
final_kwargs = self.base_kwargs.copy()
final_kwargs.update(kwargs)
@@ -619,23 +509,16 @@ class MatcherGroup:
def on_message(self, **kwargs) -> Type[Matcher]:
"""
- :说明:
+ 注册一个消息事件响应器。
- 注册一个消息事件响应器。
-
- :参数:
-
- * ``rule: Optional[Union[Rule, T_RuleChecker]]``: 事件响应规则
- * ``permission: Optional[Union[Permission, T_PermissionChecker]] =]]``: 事件响应权限
- * ``handlers: Optional[List[Union[T_Handler, Dependent]]]``: 事件处理函数列表
- * ``temp: bool``: 是否为临时事件响应器(仅执行一次)
- * ``priority: int``: 事件响应器优先级
- * ``block: bool``: 是否阻止事件向更低优先级传递
- * ``state: Optional[T_State]``: 默认 state
-
- :返回:
-
- - ``Type[Matcher]``
+ 参数:
+ rule: 事件响应规则
+ permission: 事件响应权限
+ handlers: 事件处理函数列表
+ temp: 是否为临时事件响应器(仅执行一次)
+ priority: 事件响应器优先级
+ block: 是否阻止事件向更低优先级传递
+ state: 默认 state
"""
final_kwargs = self.base_kwargs.copy()
final_kwargs.update(kwargs)
@@ -646,22 +529,15 @@ class MatcherGroup:
def on_notice(self, **kwargs) -> Type[Matcher]:
"""
- :说明:
+ 注册一个通知事件响应器。
- 注册一个通知事件响应器。
-
- :参数:
-
- * ``rule: Optional[Union[Rule, T_RuleChecker]]``: 事件响应规则
- * ``handlers: Optional[List[Union[T_Handler, Dependent]]]``: 事件处理函数列表
- * ``temp: bool``: 是否为临时事件响应器(仅执行一次)
- * ``priority: int``: 事件响应器优先级
- * ``block: bool``: 是否阻止事件向更低优先级传递
- * ``state: Optional[T_State]``: 默认 state
-
- :返回:
-
- - ``Type[Matcher]``
+ 参数:
+ rule: 事件响应规则
+ handlers: 事件处理函数列表
+ temp: 是否为临时事件响应器(仅执行一次)
+ priority: 事件响应器优先级
+ block: 是否阻止事件向更低优先级传递
+ state: 默认 state
"""
final_kwargs = self.base_kwargs.copy()
final_kwargs.update(kwargs)
@@ -672,22 +548,15 @@ class MatcherGroup:
def on_request(self, **kwargs) -> Type[Matcher]:
"""
- :说明:
+ 注册一个请求事件响应器。
- 注册一个请求事件响应器。
-
- :参数:
-
- * ``rule: Optional[Union[Rule, T_RuleChecker]]``: 事件响应规则
- * ``handlers: Optional[List[Union[T_Handler, Dependent]]]``: 事件处理函数列表
- * ``temp: bool``: 是否为临时事件响应器(仅执行一次)
- * ``priority: int``: 事件响应器优先级
- * ``block: bool``: 是否阻止事件向更低优先级传递
- * ``state: Optional[T_State]``: 默认 state
-
- :返回:
-
- - ``Type[Matcher]``
+ 参数:
+ rule: 事件响应规则
+ handlers: 事件处理函数列表
+ temp: 是否为临时事件响应器(仅执行一次)
+ priority: 事件响应器优先级
+ block: 是否阻止事件向更低优先级传递
+ state: 默认 state
"""
final_kwargs = self.base_kwargs.copy()
final_kwargs.update(kwargs)
@@ -700,25 +569,18 @@ class MatcherGroup:
self, msg: Union[str, Tuple[str, ...]], **kwargs
) -> Type[Matcher]:
"""
- :说明:
+ 注册一个消息事件响应器,并且当消息的**文本部分**以指定内容开头时响应。
- 注册一个消息事件响应器,并且当消息的**文本部分**以指定内容开头时响应。
-
- :参数:
-
- * ``msg: Union[str, Tuple[str, ...]]``: 指定消息开头内容
- * ``ignorecase: bool``: 是否忽略大小写
- * ``rule: Optional[Union[Rule, T_RuleChecker]]``: 事件响应规则
- * ``permission: Optional[Union[Permission, T_PermissionChecker]] =]]``: 事件响应权限
- * ``handlers: Optional[List[Union[T_Handler, Dependent]]]``: 事件处理函数列表
- * ``temp: bool``: 是否为临时事件响应器(仅执行一次)
- * ``priority: int``: 事件响应器优先级
- * ``block: bool``: 是否阻止事件向更低优先级传递
- * ``state: Optional[T_State]``: 默认 state
-
- :返回:
-
- - ``Type[Matcher]``
+ 参数:
+ msg: 指定消息开头内容
+ ignorecase: 是否忽略大小写
+ rule: 事件响应规则
+ permission: 事件响应权限
+ handlers: 事件处理函数列表
+ temp: 是否为临时事件响应器(仅执行一次)
+ priority: 事件响应器优先级
+ block: 是否阻止事件向更低优先级传递
+ state: 默认 state
"""
final_kwargs = self.base_kwargs.copy()
final_kwargs.update(kwargs)
@@ -729,25 +591,18 @@ class MatcherGroup:
def on_endswith(self, msg: Union[str, Tuple[str, ...]], **kwargs) -> Type[Matcher]:
"""
- :说明:
+ 注册一个消息事件响应器,并且当消息的**文本部分**以指定内容结尾时响应。
- 注册一个消息事件响应器,并且当消息的**文本部分**以指定内容结尾时响应。
-
- :参数:
-
- * ``msg: Union[str, Tuple[str, ...]]``: 指定消息结尾内容
- * ``ignorecase: bool``: 是否忽略大小写
- * ``rule: Optional[Union[Rule, T_RuleChecker]]``: 事件响应规则
- * ``permission: Optional[Union[Permission, T_PermissionChecker]] =]]``: 事件响应权限
- * ``handlers: Optional[List[Union[T_Handler, Dependent]]]``: 事件处理函数列表
- * ``temp: bool``: 是否为临时事件响应器(仅执行一次)
- * ``priority: int``: 事件响应器优先级
- * ``block: bool``: 是否阻止事件向更低优先级传递
- * ``state: Optional[T_State]``: 默认 state
-
- :返回:
-
- - ``Type[Matcher]``
+ 参数:
+ msg: 指定消息结尾内容
+ ignorecase: 是否忽略大小写
+ rule: 事件响应规则
+ permission: 事件响应权限
+ handlers: 事件处理函数列表
+ temp: 是否为临时事件响应器(仅执行一次)
+ priority: 事件响应器优先级
+ block: 是否阻止事件向更低优先级传递
+ state: 默认 state
"""
final_kwargs = self.base_kwargs.copy()
final_kwargs.update(kwargs)
@@ -758,24 +613,17 @@ class MatcherGroup:
def on_keyword(self, keywords: Set[str], **kwargs) -> Type[Matcher]:
"""
- :说明:
+ 注册一个消息事件响应器,并且当消息纯文本部分包含关键词时响应。
- 注册一个消息事件响应器,并且当消息纯文本部分包含关键词时响应。
-
- :参数:
-
- * ``keywords: Set[str]``: 关键词列表
- * ``rule: Optional[Union[Rule, T_RuleChecker]]``: 事件响应规则
- * ``permission: Optional[Union[Permission, T_PermissionChecker]] =]]``: 事件响应权限
- * ``handlers: Optional[List[Union[T_Handler, Dependent]]]``: 事件处理函数列表
- * ``temp: bool``: 是否为临时事件响应器(仅执行一次)
- * ``priority: int``: 事件响应器优先级
- * ``block: bool``: 是否阻止事件向更低优先级传递
- * ``state: Optional[T_State]``: 默认 state
-
- :返回:
-
- - ``Type[Matcher]``
+ 参数:
+ keywords: 关键词列表
+ rule: 事件响应规则
+ permission: 事件响应权限
+ handlers: 事件处理函数列表
+ temp: 是否为临时事件响应器(仅执行一次)
+ priority: 事件响应器优先级
+ block: 是否阻止事件向更低优先级传递
+ state: 默认 state
"""
final_kwargs = self.base_kwargs.copy()
final_kwargs.update(kwargs)
@@ -791,27 +639,20 @@ class MatcherGroup:
**kwargs,
) -> Type[Matcher]:
"""
- :说明:
+ 注册一个消息事件响应器,并且当消息以指定命令开头时响应。
- 注册一个消息事件响应器,并且当消息以指定命令开头时响应。
+ 命令匹配规则参考: `命令形式匹配 `_
- 命令匹配规则参考: `命令形式匹配 `_
-
- :参数:
-
- * ``cmd: Union[str, Tuple[str, ...]]``: 指定命令内容
- * ``aliases: Optional[Set[Union[str, Tuple[str, ...]]]]``: 命令别名
- * ``rule: Optional[Union[Rule, T_RuleChecker]]``: 事件响应规则
- * ``permission: Optional[Union[Permission, T_PermissionChecker]] =]]``: 事件响应权限
- * ``handlers: Optional[List[Union[T_Handler, Dependent]]]``: 事件处理函数列表
- * ``temp: bool``: 是否为临时事件响应器(仅执行一次)
- * ``priority: int``: 事件响应器优先级
- * ``block: bool``: 是否阻止事件向更低优先级传递
- * ``state: Optional[T_State]``: 默认 state
-
- :返回:
-
- - ``Type[Matcher]``
+ 参数:
+ cmd: 指定命令内容
+ aliases: 命令别名
+ rule: 事件响应规则
+ permission: 事件响应权限
+ handlers: 事件处理函数列表
+ temp: 是否为临时事件响应器(仅执行一次)
+ priority: 事件响应器优先级
+ block: 是否阻止事件向更低优先级传递
+ state: 默认 state
"""
final_kwargs = self.base_kwargs.copy()
final_kwargs.update(kwargs)
@@ -828,30 +669,23 @@ class MatcherGroup:
**kwargs,
) -> Type[Matcher]:
"""
- :说明:
+ 注册一个支持 `shell_like` 解析参数的命令消息事件响应器。
- 注册一个支持 ``shell_like`` 解析参数的命令消息事件响应器。
+ 与普通的 `on_command` 不同的是,在添加 `parser` 参数时, 响应器会自动处理消息。
- 与普通的 ``on_command`` 不同的是,在添加 ``parser`` 参数时, 响应器会自动处理消息。
+ 并将用户输入的原始参数列表保存在 `state["argv"]`, `parser` 处理的参数保存在 `state["args"]` 中
- 并将用户输入的原始参数列表保存在 ``state["argv"]``, ``parser`` 处理的参数保存在 ``state["args"]`` 中
-
- :参数:
-
- * ``cmd: Union[str, Tuple[str, ...]]``: 指定命令内容
- * ``aliases: Optional[Set[Union[str, Tuple[str, ...]]]]``: 命令别名
- * ``parser: Optional[ArgumentParser]``: ``nonebot.rule.ArgumentParser`` 对象
- * ``rule: Optional[Union[Rule, T_RuleChecker]]``: 事件响应规则
- * ``permission: Optional[Union[Permission, T_PermissionChecker]] =]]``: 事件响应权限
- * ``handlers: Optional[List[Union[T_Handler, Dependent]]]``: 事件处理函数列表
- * ``temp: bool``: 是否为临时事件响应器(仅执行一次)
- * ``priority: int``: 事件响应器优先级
- * ``block: bool``: 是否阻止事件向更低优先级传递
- * ``state: Optional[T_State]``: 默认 state
-
- :返回:
-
- - ``Type[Matcher]``
+ 参数:
+ cmd: 指定命令内容
+ aliases: 命令别名
+ parser: `nonebot.rule.ArgumentParser` 对象
+ rule: 事件响应规则
+ permission: 事件响应权限
+ handlers: 事件处理函数列表
+ temp: 是否为临时事件响应器(仅执行一次)
+ priority: 事件响应器优先级
+ block: 是否阻止事件向更低优先级传递
+ state: 默认 state
"""
final_kwargs = self.base_kwargs.copy()
final_kwargs.update(kwargs)
@@ -866,27 +700,20 @@ class MatcherGroup:
self, pattern: str, flags: Union[int, re.RegexFlag] = 0, **kwargs
) -> Type[Matcher]:
"""
- :说明:
+ 注册一个消息事件响应器,并且当消息匹配正则表达式时响应。
- 注册一个消息事件响应器,并且当消息匹配正则表达式时响应。
+ 命令匹配规则参考: `正则匹配 `_
- 命令匹配规则参考: `正则匹配 `_
-
- :参数:
-
- * ``pattern: str``: 正则表达式
- * ``flags: Union[int, re.RegexFlag]``: 正则匹配标志
- * ``rule: Optional[Union[Rule, T_RuleChecker]]``: 事件响应规则
- * ``permission: Optional[Union[Permission, T_PermissionChecker]] =]]``: 事件响应权限
- * ``handlers: Optional[List[Union[T_Handler, Dependent]]]``: 事件处理函数列表
- * ``temp: bool``: 是否为临时事件响应器(仅执行一次)
- * ``priority: int``: 事件响应器优先级
- * ``block: bool``: 是否阻止事件向更低优先级传递
- * ``state: Optional[T_State]``: 默认 state
-
- :返回:
-
- - ``Type[Matcher]``
+ 参数:
+ pattern: 正则表达式
+ flags: 正则匹配标志
+ rule: 事件响应规则
+ permission: 事件响应权限
+ handlers: 事件处理函数列表
+ temp: 是否为临时事件响应器(仅执行一次)
+ priority: 事件响应器优先级
+ block: 是否阻止事件向更低优先级传递
+ state: 默认 state
"""
final_kwargs = self.base_kwargs.copy()
final_kwargs.update(kwargs)
diff --git a/nonebot/plugin/on.pyi b/nonebot/plugin/on.pyi
index 8cf990fd..68f6873a 100644
--- a/nonebot/plugin/on.pyi
+++ b/nonebot/plugin/on.pyi
@@ -5,12 +5,7 @@ from nonebot.matcher import Matcher
from nonebot.permission import Permission
from nonebot.dependencies import Dependent
from nonebot.rule import Rule, ArgumentParser
-from nonebot.typing import (
- T_State,
- T_Handler,
- T_RuleChecker,
- T_PermissionChecker,
-)
+from nonebot.typing import T_State, T_Handler, T_RuleChecker, T_PermissionChecker
def on(
type: str = "",
diff --git a/nonebot/plugin/plugin.py b/nonebot/plugin/plugin.py
index 88ebd304..10e43723 100644
--- a/nonebot/plugin/plugin.py
+++ b/nonebot/plugin/plugin.py
@@ -1,18 +1,22 @@
+"""本模块定义插件对象。
+
+FrontMatter:
+ sidebar_position: 3
+ description: nonebot.plugin.plugin 模块
+"""
from types import ModuleType
from dataclasses import field, dataclass
from typing import TYPE_CHECKING, Set, Dict, Type, Optional
-from .export import Export
from nonebot.matcher import Matcher
+from .export import Export
+
if TYPE_CHECKING:
from .manager import PluginManager
plugins: Dict[str, "Plugin"] = {}
-"""
-:类型: ``Dict[str, Plugin]``
-:说明: 已加载的插件
-"""
+"""已加载的插件"""
@dataclass(eq=False)
@@ -20,74 +24,36 @@ class Plugin(object):
"""存储插件信息"""
name: str
- """
- - **类型**: ``str``
- - **说明**: 插件名称,使用 文件/文件夹 名称作为插件名
- """
+ """插件名称,使用 文件/文件夹 名称作为插件名"""
module: ModuleType
- """
- - **类型**: ``ModuleType``
- - **说明**: 插件模块对象
- """
+ """插件模块对象"""
module_name: str
- """
- - **类型**: ``str``
- - **说明**: 点分割模块路径
- """
+ """点分割模块路径"""
manager: "PluginManager"
- """
- - **类型**: ``PluginManager``
- - **说明**: 导入该插件的插件管理器
- """
+ """导入该插件的插件管理器"""
export: Export = field(default_factory=Export)
- """
- - **类型**: ``Export``
- - **说明**: 插件内定义的导出内容
- """
+ """插件内定义的导出内容"""
matcher: Set[Type[Matcher]] = field(default_factory=set)
- """
- - **类型**: ``Set[Type[Matcher]]``
- - **说明**: 插件内定义的 ``Matcher``
- """
+ """插件内定义的 `Matcher`"""
parent_plugin: Optional["Plugin"] = None
- """
- - **类型**: ``Optional[Plugin]``
- - **说明**: 父插件
- """
+ """父插件"""
sub_plugins: Set["Plugin"] = field(default_factory=set)
- """
- - **类型**: ``Set[Plugin]``
- - **说明**: 子插件集合
- """
+ """子插件集合"""
def get_plugin(name: str) -> Optional[Plugin]:
- """
- :说明:
+ """获取已经导入的某个插件。
- 获取当前导入的某个插件。
+ 如果为 `load_plugins` 文件夹导入的插件,则为文件(夹)名。
- :参数:
-
- * ``name: str``: 插件名,与 ``load_plugin`` 参数一致。如果为 ``load_plugins`` 导入的插件,则为文件(夹)名。
-
- :返回:
-
- - ``Optional[Plugin]``
+ 参数:
+ name: 插件名,即 {ref}`nonebot.plugin.plugin.Plugin.name`。
"""
return plugins.get(name)
def get_loaded_plugins() -> Set[Plugin]:
- """
- :说明:
-
- 获取当前已导入的所有插件。
-
- :返回:
-
- - ``Set[Plugin]``
- """
+ """获取当前已导入的所有插件。"""
return set(plugins.values())
@@ -96,5 +62,10 @@ def _new_plugin(fullname: str, module: ModuleType, manager: "PluginManager") ->
if name in plugins:
raise RuntimeError("Plugin already exists! Check your plugin name.")
plugin = Plugin(name, module, fullname, manager)
- plugins[name] = plugin
return plugin
+
+
+def _confirm_plugin(plugin: Plugin) -> None:
+ if plugin.name in plugins:
+ raise RuntimeError("Plugin already exists! Check your plugin name.")
+ plugins[plugin.name] = plugin
diff --git a/nonebot/plugins/single_session.py b/nonebot/plugins/single_session.py
index e76e1a1b..9253bd02 100644
--- a/nonebot/plugins/single_session.py
+++ b/nonebot/plugins/single_session.py
@@ -1,34 +1,31 @@
-from typing import Dict
+from typing import Dict, AsyncGenerator
from nonebot.adapters import Event
-from nonebot.message import (
- IgnoredException,
- run_preprocessor,
- run_postprocessor,
-)
+from nonebot.params import Depends
+from nonebot.message import IgnoredException, event_preprocessor
_running_matcher: Dict[str, int] = {}
-@run_preprocessor
-async def preprocess(event: Event):
+async def matcher_mutex(event: Event) -> AsyncGenerator[bool, None]:
+ result = False
try:
session_id = event.get_session_id()
except Exception:
- return
- current_event_id = id(event)
- event_id = _running_matcher.get(session_id, None)
- if event_id and event_id != current_event_id:
+ yield result
+ else:
+ current_event_id = id(event)
+ event_id = _running_matcher.get(session_id, None)
+ if event_id:
+ result = event_id != current_event_id
+ else:
+ _running_matcher[session_id] = current_event_id
+ yield result
+ if not result:
+ del _running_matcher[session_id]
+
+
+@event_preprocessor
+async def preprocess(mutex: bool = Depends(matcher_mutex)):
+ if mutex:
raise IgnoredException("Another matcher running")
-
- _running_matcher[session_id] = current_event_id
-
-
-@run_postprocessor
-async def postprocess(event: Event):
- try:
- session_id = event.get_session_id()
- except Exception:
- return
- if session_id in _running_matcher:
- del _running_matcher[session_id]
diff --git a/nonebot/rule.py b/nonebot/rule.py
index b4cf827c..f49d38fc 100644
--- a/nonebot/rule.py
+++ b/nonebot/rule.py
@@ -1,32 +1,37 @@
-r"""
-规则
-====
+"""本模块是 {ref}`nonebot.matcher.Matcher.rule` 的类型定义。
-每个事件响应器 ``Matcher`` 拥有一个匹配规则 ``Rule`` ,其中是 ``RuleChecker`` 的集合,只有当所有 ``RuleChecker`` 检查结果为 ``True`` 时继续运行。
+每个事件响应器 {ref}`nonebot.matcher.Matcher` 拥有一个匹配规则 {ref}`nonebot.rule.Rule`
+其中是 `RuleChecker` 的集合,只有当所有 `RuleChecker` 检查结果为 `True` 时继续运行。
-\:\:\:tip 提示
-``RuleChecker`` 既可以是 async function 也可以是 sync function
-\:\:\:
+FrontMatter:
+ sidebar_position: 5
+ description: nonebot.rule 模块
"""
import re
import shlex
-import asyncio
from itertools import product
from argparse import Namespace
-from contextlib import AsyncExitStack
from typing_extensions import TypedDict
from argparse import ArgumentParser as ArgParser
-from typing import Any, Set, List, Tuple, Union, NoReturn, Optional, Sequence
+from typing import Any, List, Tuple, Union, Optional, Sequence
from pygtrie import CharTrie
from nonebot import get_driver
from nonebot.log import logger
-from nonebot.dependencies import Dependent
-from nonebot.exception import ParserExit, SkippedException
+from nonebot.typing import T_State
+from nonebot.exception import ParserExit
+from nonebot.internal.rule import Rule as Rule
from nonebot.adapters import Bot, Event, Message, MessageSegment
-from nonebot.typing import T_State, T_RuleChecker, T_DependencyCache
+from nonebot.params import (
+ Command,
+ EventToMe,
+ EventType,
+ CommandArg,
+ EventMessage,
+ EventPlainText,
+)
from nonebot.consts import (
CMD_KEY,
PREFIX_KEY,
@@ -38,19 +43,6 @@ from nonebot.consts import (
REGEX_GROUP,
REGEX_MATCHED,
)
-from nonebot.params import (
- State,
- Command,
- BotParam,
- EventToMe,
- EventType,
- EventParam,
- StateParam,
- DependParam,
- DefaultParam,
- EventMessage,
- EventPlainText,
-)
CMD_RESULT = TypedDict(
"CMD_RESULT",
@@ -62,113 +54,6 @@ CMD_RESULT = TypedDict(
)
-class Rule:
- """
- :说明:
-
- ``Matcher`` 规则类,当事件传递时,在 ``Matcher`` 运行前进行检查。
-
- :示例:
-
- .. code-block:: python
-
- Rule(async_function) & sync_function
- # 等价于
- from nonebot.utils import run_sync
- Rule(async_function, run_sync(sync_function))
- """
-
- __slots__ = ("checkers",)
-
- HANDLER_PARAM_TYPES = [
- DependParam,
- BotParam,
- EventParam,
- StateParam,
- DefaultParam,
- ]
-
- def __init__(self, *checkers: Union[T_RuleChecker, Dependent[bool]]) -> None:
- """
- :参数:
-
- * ``*checkers: Union[T_RuleChecker, Dependent[bool]]``: RuleChecker
-
- """
- self.checkers: Set[Dependent[bool]] = set(
- checker
- if isinstance(checker, Dependent)
- else Dependent[bool].parse(
- call=checker, allow_types=self.HANDLER_PARAM_TYPES
- )
- for checker in checkers
- )
- """
- :说明:
-
- 存储 ``RuleChecker``
-
- :类型:
-
- * ``Set[Dependent[bool]]``
- """
-
- async def __call__(
- self,
- bot: Bot,
- event: Event,
- state: T_State,
- stack: Optional[AsyncExitStack] = None,
- dependency_cache: Optional[T_DependencyCache] = None,
- ) -> bool:
- """
- :说明:
-
- 检查是否符合所有规则
-
- :参数:
-
- * ``bot: Bot``: Bot 对象
- * ``event: Event``: Event 对象
- * ``state: T_State``: 当前 State
- * ``stack: Optional[AsyncExitStack]``: 异步上下文栈
- * ``dependency_cache: Optional[CacheDict[T_Handler, Any]]``: 依赖缓存
-
- :返回:
-
- - ``bool``
- """
- if not self.checkers:
- return True
- try:
- results = await asyncio.gather(
- *(
- checker(
- bot=bot,
- event=event,
- state=state,
- stack=stack,
- dependency_cache=dependency_cache,
- )
- for checker in self.checkers
- )
- )
- except SkippedException:
- return False
- return all(results)
-
- def __and__(self, other: Optional[Union["Rule", T_RuleChecker]]) -> "Rule":
- if other is None:
- return self
- elif isinstance(other, Rule):
- return Rule(*self.checkers, *other.checkers)
- else:
- return Rule(*self.checkers, other)
-
- def __or__(self, other) -> NoReturn:
- raise RuntimeError("Or operation between rules is not allowed.")
-
-
class TrieRule:
prefix: CharTrie = CharTrie()
@@ -205,6 +90,15 @@ class TrieRule:
class StartswithRule:
+ """检查消息纯文本是否以指定字符串开头。
+
+ 参数:
+ msg: 指定消息开头字符串元组
+ ignorecase: 是否忽略大小写
+ """
+
+ __slots__ = ("msg", "ignorecase")
+
def __init__(self, msg: Tuple[str, ...], ignorecase: bool = False):
self.msg = msg
self.ignorecase = ignorecase
@@ -224,14 +118,11 @@ class StartswithRule:
def startswith(msg: Union[str, Tuple[str, ...]], ignorecase: bool = False) -> Rule:
- """
- :说明:
+ """匹配消息纯文本开头。
- 匹配消息开头
-
- :参数:
-
- * ``msg: str``: 消息开头字符串
+ 参数:
+ msg: 指定消息开头字符串元组
+ ignorecase: 是否忽略大小写
"""
if isinstance(msg, str):
msg = (msg,)
@@ -240,6 +131,15 @@ def startswith(msg: Union[str, Tuple[str, ...]], ignorecase: bool = False) -> Ru
class EndswithRule:
+ """检查消息纯文本是否以指定字符串结尾。
+
+ 参数:
+ msg: 指定消息结尾字符串元组
+ ignorecase: 是否忽略大小写
+ """
+
+ __slots__ = ("msg", "ignorecase")
+
def __init__(self, msg: Tuple[str, ...], ignorecase: bool = False):
self.msg = msg
self.ignorecase = ignorecase
@@ -259,14 +159,11 @@ class EndswithRule:
def endswith(msg: Union[str, Tuple[str, ...]], ignorecase: bool = False) -> Rule:
- """
- :说明:
+ """匹配消息纯文本结尾。
- 匹配消息结尾
-
- :参数:
-
- * ``msg: str``: 消息结尾字符串
+ 参数:
+ msg: 指定消息开头字符串元组
+ ignorecase: 是否忽略大小写
"""
if isinstance(msg, str):
msg = (msg,)
@@ -275,6 +172,14 @@ def endswith(msg: Union[str, Tuple[str, ...]], ignorecase: bool = False) -> Rule
class KeywordsRule:
+ """检查消息纯文本是否包含指定关键字。
+
+ 参数:
+ keywords: 指定关键字元组
+ """
+
+ __slots__ = ("keywords",)
+
def __init__(self, *keywords: str):
self.keywords = keywords
@@ -287,20 +192,24 @@ class KeywordsRule:
def keyword(*keywords: str) -> Rule:
- """
- :说明:
+ """匹配消息纯文本关键词。
- 匹配消息关键词
-
- :参数:
-
- * ``*keywords: str``: 关键词
+ 参数:
+ keywords: 指定关键字元组
"""
return Rule(KeywordsRule(*keywords))
class CommandRule:
+ """检查消息是否为指定命令。
+
+ 参数:
+ cmds: 指定命令元组列表
+ """
+
+ __slots__ = ("cmds",)
+
def __init__(self, cmds: List[Tuple[str, ...]]):
self.cmds = cmds
@@ -312,27 +221,27 @@ class CommandRule:
def command(*cmds: Union[str, Tuple[str, ...]]) -> Rule:
- r"""
- :说明:
+ """匹配消息命令。
- 命令形式匹配,根据配置里提供的 ``command_start``, ``command_sep`` 判断消息是否为命令。
+ 根据配置里提供的 {ref}``command_start` `,
+ {ref}``command_sep` ` 判断消息是否为命令。
- 可以通过 ``state["_prefix"]["command"]`` 获取匹配成功的命令(例:``("test",)``),通过 ``state["_prefix"]["raw_command"]`` 获取匹配成功的原始命令文本(例:``"/test"``)。
+ 可以通过 {ref}`nonebot.params.Command` 获取匹配成功的命令(例: `("test",)`),
+ 通过 {ref}`nonebot.params.RawCommand` 获取匹配成功的原始命令文本(例: `"/test"`),
+ 通过 {ref}`nonebot.params.CommandArg` 获取匹配成功的命令参数。
- :参数:
+ 参数:
+ cmds: 命令文本或命令元组
- * ``*cmds: Union[str, Tuple[str, ...]]``: 命令内容
+ 用法:
+ 使用默认 `command_start`, `command_sep` 配置
- :示例:
+ 命令 `("test",)` 可以匹配: `/test` 开头的消息
+ 命令 `("test", "sub")` 可以匹配: `/test.sub` 开头的消息
- 使用默认 ``command_start``, ``command_sep`` 配置
-
- 命令 ``("test",)`` 可以匹配:``/test`` 开头的消息
- 命令 ``("test", "sub")`` 可以匹配”``/test.sub`` 开头的消息
-
- \:\:\:tip 提示
- 命令内容与后续消息间无需空格!
- \:\:\:
+ :::tip 提示
+ 命令内容与后续消息间无需空格!
+ :::
"""
config = get_driver().config
@@ -356,10 +265,11 @@ def command(*cmds: Union[str, Tuple[str, ...]]) -> Rule:
class ArgumentParser(ArgParser):
- """
- :说明:
+ """`shell_like` 命令参数解析器,解析出错时不会退出程序。
- ``shell_like`` 命令参数解析器,解析出错时不会退出程序。
+ 用法:
+ 用法与 `argparse.ArgumentParser` 相同,
+ 参考文档: [argparse](https://docs.python.org/3/library/argparse.html)
"""
def _print_message(self, message, file=None):
@@ -384,20 +294,28 @@ class ArgumentParser(ArgParser):
class ShellCommandRule:
+ """检查消息是否为指定 shell 命令。
+
+ 参数:
+ cmds: 指定命令元组列表
+ parser: 可选参数解析器
+ """
+
+ __slots__ = ("cmds", "parser")
+
def __init__(self, cmds: List[Tuple[str, ...]], parser: Optional[ArgumentParser]):
self.cmds = cmds
self.parser = parser
async def __call__(
self,
+ state: T_State,
cmd: Optional[Tuple[str, ...]] = Command(),
- msg: Message = EventMessage(),
- state: T_State = State(),
+ msg: Optional[Message] = CommandArg(),
) -> bool:
- if cmd in self.cmds:
+ if cmd in self.cmds and msg is not None:
message = str(msg)
- strip_message = message[len(state[PREFIX_KEY][RAW_CMD_KEY]) :].lstrip()
- state[SHELL_ARGV] = shlex.split(strip_message)
+ state[SHELL_ARGV] = shlex.split(message)
if self.parser:
try:
args = self.parser.parse_args(state[SHELL_ARGV])
@@ -412,38 +330,40 @@ class ShellCommandRule:
def shell_command(
*cmds: Union[str, Tuple[str, ...]], parser: Optional[ArgumentParser] = None
) -> Rule:
- r"""
- :说明:
+ """匹配 `shell_like` 形式的消息命令。
- 支持 ``shell_like`` 解析参数的命令形式匹配,根据配置里提供的 ``command_start``, ``command_sep`` 判断消息是否为命令。
+ 根据配置里提供的 {ref}``command_start` `,
+ {ref}``command_sep` ` 判断消息是否为命令。
- 可以通过 ``state["_prefix"]["command"]`` 获取匹配成功的命令(例:``("test",)``),通过 ``state["_prefix"]["raw_command"]`` 获取匹配成功的原始命令文本(例:``"/test"``)。
+ 可以通过 {ref}`nonebot.params.Command` 获取匹配成功的命令(例: `("test",)`),
+ 通过 {ref}`nonebot.params.RawCommand` 获取匹配成功的原始命令文本(例: `"/test"`),
+ 通过 {ref}`nonebot.params.ShellCommandArgv` 获取解析前的参数列表(例: `["arg", "-h"]`),
+ 通过 {ref}`nonebot.params.ShellCommandArgs` 获取解析后的参数字典(例: `{"arg": "arg", "h": True}`)。
- 可以通过 ``state["argv"]`` 获取用户输入的原始参数列表
+ :::warning 警告
+ 如果参数解析失败,则通过 {ref}`nonebot.params.ShellCommandArgs`
+ 获取的将是 {ref}`nonebot.exception.ParserExit` 异常。
+ :::
- 添加 ``parser`` 参数后, 可以自动处理消息并将结果保存在 ``state["args"]`` 中。
+ 参数:
+ cmds: 命令文本或命令元组
+ parser: {ref}`nonebot.rule.ArgumentParser` 对象
- :参数:
-
- * ``*cmds: Union[str, Tuple[str, ...]]``: 命令内容
- * ``parser: Optional[ArgumentParser]``: ``nonebot.rule.ArgumentParser`` 对象
-
- :示例:
-
- 使用默认 ``command_start``, ``command_sep`` 配置,更多示例参考 ``argparse`` 标准库文档。
-
- .. code-block:: python
+ 用法:
+ 使用默认 `command_start`, `command_sep` 配置,更多示例参考 `argparse` 标准库文档。
+ ```python
from nonebot.rule import ArgumentParser
parser = ArgumentParser()
parser.add_argument("-a", action="store_true")
rule = shell_command("ls", parser=parser)
+ ```
- \:\:\:tip 提示
- 命令内容与后续消息间无需空格!
- \:\:\:
+ :::tip 提示
+ 命令内容与后续消息间无需空格!
+ :::
"""
if parser is not None and not isinstance(parser, ArgumentParser):
raise TypeError("`parser` must be an instance of nonebot.rule.ArgumentParser")
@@ -469,15 +389,24 @@ def shell_command(
class RegexRule:
+ """检查消息字符串是否符合指定正则表达式。
+
+ 参数:
+ regex: 正则表达式
+ flags: 正则表达式标记
+ """
+
+ __slots__ = ("regex", "flags")
+
def __init__(self, regex: str, flags: int = 0):
self.regex = regex
self.flags = flags
async def __call__(
self,
+ state: T_State,
type: str = EventType(),
msg: Message = EventMessage(),
- state: T_State = State(),
) -> bool:
if type != "message":
return False
@@ -492,41 +421,47 @@ class RegexRule:
def regex(regex: str, flags: Union[int, re.RegexFlag] = 0) -> Rule:
- r"""
- :说明:
+ """匹配符合正则表达式的消息字符串。
- 根据正则表达式进行匹配。
+ 可以通过 {ref}`nonebot.params.RegexMatched` 获取匹配成功的字符串,
+ 通过 {ref}`nonebot.params.RegexGroup` 获取匹配成功的 group 元组,
+ 通过 {ref}`nonebot.params.RegexDict` 获取匹配成功的 group 字典。
- 可以通过 ``state["_matched"]`` ``state["_matched_groups"]`` ``state["_matched_dict"]``
- 获取正则表达式匹配成功的文本。
+ 参数:
+ regex: 正则表达式
+ flags: 正则表达式标记
- :参数:
+ :::tip 提示
+ 正则表达式匹配使用 search 而非 match,如需从头匹配请使用 `r"^xxx"` 来确保匹配开头
+ :::
- * ``regex: str``: 正则表达式
- * ``flags: Union[int, re.RegexFlag]``: 正则标志
-
- \:\:\:tip 提示
- 正则表达式匹配使用 search 而非 match,如需从头匹配请使用 ``r"^xxx"`` 来确保匹配开头
- \:\:\:
+ :::tip 提示
+ 正则表达式匹配使用 `EventMessage` 的 `str` 字符串,而非 `EventMessage` 的 `PlainText` 纯文本字符串
+ :::
"""
return Rule(RegexRule(regex, flags))
class ToMeRule:
+ """检查事件是否与机器人有关。"""
+
+ __slots__ = ()
+
async def __call__(self, to_me: bool = EventToMe()) -> bool:
return to_me
def to_me() -> Rule:
- """
- :说明:
-
- 通过 ``event.is_tome()`` 判断事件是否与机器人有关
-
- :参数:
-
- * 无
- """
+ """匹配与机器人有关的事件。"""
return Rule(ToMeRule())
+
+
+__autodoc__ = {
+ "Rule": True,
+ "Rule.__call__": True,
+ "TrieRule": False,
+ "ArgumentParser.exit": False,
+ "ArgumentParser.parse_args": False,
+}
diff --git a/nonebot/typing.py b/nonebot/typing.py
index 55774ca1..f9a62dd3 100644
--- a/nonebot/typing.py
+++ b/nonebot/typing.py
@@ -1,21 +1,15 @@
-"""
-类型
-====
+"""本模块定义了 NoneBot 模块中共享的一些类型。
-下面的文档中,「类型」部分使用 Python 的 Type Hint 语法,见 `PEP 484`_、`PEP 526`_ 和 `typing`_。
+下面的文档中,「类型」部分使用 Python 的 Type Hint 语法,
+参考 [`PEP 484`](https://www.python.org/dev/peps/pep-0484/),
+[`PEP 526`](https://www.python.org/dev/peps/pep-0526/) 和
+[`typing`](https://docs.python.org/3/library/typing.html)。
除了 Python 内置的类型,下面还出现了如下 NoneBot 自定类型,实际上它们是 Python 内置类型的别名。
-以下类型均可从 nonebot.typing 模块导入。
-
-.. _PEP 484:
- https://www.python.org/dev/peps/pep-0484/
-
-.. _PEP 526:
- https://www.python.org/dev/peps/pep-0526/
-
-.. _typing:
- https://docs.python.org/3/library/typing.html
+FrontMatter:
+ sidebar_position: 11
+ description: nonebot.typing 模块
"""
from typing import (
TYPE_CHECKING,
@@ -31,13 +25,15 @@ from typing import (
if TYPE_CHECKING:
from asyncio import Task
- from nonebot.adapters import Bot, Event
+ from nonebot.adapters import Bot
from nonebot.permission import Permission
T_Wrapped = TypeVar("T_Wrapped", bound=Callable)
-def overrides(InterfaceClass: object):
+def overrides(InterfaceClass: object) -> Callable[[T_Wrapped], T_Wrapped]:
+ """标记一个方法为父类 interface 的 implement"""
+
def overrider(func: T_Wrapped) -> T_Wrapped:
assert func.__name__ in dir(InterfaceClass), f"Error method: {func.__name__}"
return func
@@ -46,194 +42,114 @@ def overrides(InterfaceClass: object):
T_State = Dict[Any, Any]
-"""
-:类型: ``Dict[Any, Any]``
+"""事件处理状态 State 类型"""
-:说明:
-
- 事件处理状态 State 类型
-"""
-
-T_BotConnectionHook = Callable[["Bot"], Awaitable[None]]
-"""
-:类型: ``Callable[[Bot], Awaitable[None]]``
-
-:说明:
-
- Bot 连接建立时执行的函数
-"""
-T_BotDisconnectionHook = Callable[["Bot"], Awaitable[None]]
-"""
-:类型: ``Callable[[Bot], Awaitable[None]]``
-
-:说明:
-
- Bot 连接断开时执行的函数
-"""
-T_CallingAPIHook = Callable[["Bot", str, Dict[str, Any]], Awaitable[None]]
-"""
-:类型: ``Callable[[Bot, str, Dict[str, Any]], Awaitable[None]]``
-
-:说明:
-
- ``bot.call_api`` 时执行的函数
-"""
+T_BotConnectionHook = Callable[..., Awaitable[Any]]
+"""Bot 连接建立时钩子函数"""
+T_BotDisconnectionHook = Callable[..., Awaitable[Any]]
+"""Bot 连接断开时钩子函数"""
+T_CallingAPIHook = Callable[["Bot", str, Dict[str, Any]], Awaitable[Any]]
+"""`bot.call_api` 钩子函数"""
T_CalledAPIHook = Callable[
- ["Bot", Optional[Exception], str, Dict[str, Any], Any], Awaitable[None]
+ ["Bot", Optional[Exception], str, Dict[str, Any], Any], Awaitable[Any]
]
+"""`bot.call_api` 后执行的函数,参数分别为 bot, exception, api, data, result"""
+
+T_EventPreProcessor = Callable[..., Union[Any, Awaitable[Any]]]
+"""事件预处理函数 EventPreProcessor 类型
+
+依赖参数:
+
+- DependParam: 子依赖参数
+- BotParam: Bot 对象
+- EventParam: Event 对象
+- StateParam: State 对象
+- DefaultParam: 带有默认值的参数
"""
-:类型: ``Callable[[Bot, Optional[Exception], str, Dict[str, Any], Any], Awaitable[None]]``
+T_EventPostProcessor = Callable[..., Union[Any, Awaitable[Any]]]
+"""事件预处理函数 EventPostProcessor 类型
-:说明:
+依赖参数:
- ``bot.call_api`` 后执行的函数,参数分别为 bot, exception, api, data, result
+- DependParam: 子依赖参数
+- BotParam: Bot 对象
+- EventParam: Event 对象
+- StateParam: State 对象
+- DefaultParam: 带有默认值的参数
"""
+T_RunPreProcessor = Callable[..., Union[Any, Awaitable[Any]]]
+"""事件响应器运行前预处理函数 RunPreProcessor 类型
-T_EventPreProcessor = Callable[..., Union[None, Awaitable[None]]]
+依赖参数:
+
+- DependParam: 子依赖参数
+- BotParam: Bot 对象
+- EventParam: Event 对象
+- StateParam: State 对象
+- MatcherParam: Matcher 对象
+- DefaultParam: 带有默认值的参数
"""
-:类型: ``Callable[..., Union[None, Awaitable[None]]]``
+T_RunPostProcessor = Callable[..., Union[Any, Awaitable[Any]]]
+"""事件响应器运行前预处理函数 RunPostProcessor 类型
-:依赖参数:
+依赖参数:
- * ``DependParam``: 子依赖参数
- * ``BotParam``: Bot 对象
- * ``EventParam``: Event 对象
- * ``StateParam``: State 对象
- * ``DefaultParam``: 带有默认值的参数
-
-:说明:
-
- 事件预处理函数 EventPreProcessor 类型
-"""
-T_EventPostProcessor = Callable[..., Union[None, Awaitable[None]]]
-"""
-:类型: ``Callable[..., Union[None, Awaitable[None]]]``
-
-:依赖参数:
-
- * ``DependParam``: 子依赖参数
- * ``BotParam``: Bot 对象
- * ``EventParam``: Event 对象
- * ``StateParam``: State 对象
- * ``DefaultParam``: 带有默认值的参数
-
-:说明:
-
- 事件预处理函数 EventPostProcessor 类型
-"""
-T_RunPreProcessor = Callable[..., Union[None, Awaitable[None]]]
-"""
-:类型: ``Callable[..., Union[None, Awaitable[None]]]``
-
-:依赖参数:
-
- * ``DependParam``: 子依赖参数
- * ``BotParam``: Bot 对象
- * ``EventParam``: Event 对象
- * ``StateParam``: State 对象
- * ``MatcherParam``: Matcher 对象
- * ``DefaultParam``: 带有默认值的参数
-
-:说明:
-
- 事件响应器运行前预处理函数 RunPreProcessor 类型
-"""
-T_RunPostProcessor = Callable[..., Union[None, Awaitable[None]]]
-"""
-:类型: ``Callable[..., Union[None, Awaitable[None]]]``
-
-:依赖参数:
-
- * ``DependParam``: 子依赖参数
- * ``BotParam``: Bot 对象
- * ``EventParam``: Event 对象
- * ``StateParam``: State 对象
- * ``MatcherParam``: Matcher 对象
- * ``ExceptionParam``: 异常对象(可能为 None)
- * ``DefaultParam``: 带有默认值的参数
-
-:说明:
-
- 事件响应器运行前预处理函数 RunPostProcessor 类型,第二个参数为运行时产生的错误(如果存在)
+- DependParam: 子依赖参数
+- BotParam: Bot 对象
+- EventParam: Event 对象
+- StateParam: State 对象
+- MatcherParam: Matcher 对象
+- ExceptionParam: 异常对象(可能为 None)
+- DefaultParam: 带有默认值的参数
"""
T_RuleChecker = Callable[..., Union[bool, Awaitable[bool]]]
-"""
-:类型: ``Callable[..., Union[bool, Awaitable[bool]]]``
+"""RuleChecker 即判断是否响应事件的处理函数。
-:依赖参数:
+依赖参数:
- * ``DependParam``: 子依赖参数
- * ``BotParam``: Bot 对象
- * ``EventParam``: Event 对象
- * ``StateParam``: State 对象
- * ``DefaultParam``: 带有默认值的参数
-
-:说明:
-
- RuleChecker 即判断是否响应事件的处理函数。
+- DependParam: 子依赖参数
+- BotParam: Bot 对象
+- EventParam: Event 对象
+- StateParam: State 对象
+- DefaultParam: 带有默认值的参数
"""
T_PermissionChecker = Callable[..., Union[bool, Awaitable[bool]]]
-"""
-:类型: ``Callable[..., Union[bool, Awaitable[bool]]]``
+"""PermissionChecker 即判断事件是否满足权限的处理函数。
-:依赖参数:
+依赖参数:
- * ``DependParam``: 子依赖参数
- * ``BotParam``: Bot 对象
- * ``EventParam``: Event 对象
- * ``DefaultParam``: 带有默认值的参数
-
-:说明:
-
- RuleChecker 即判断是否响应消息的处理函数。
+- DependParam: 子依赖参数
+- BotParam: Bot 对象
+- EventParam: Event 对象
+- DefaultParam: 带有默认值的参数
"""
T_Handler = Callable[..., Any]
-"""
-:类型: ``Callable[..., Any]``
-
-:说明:
-
- Handler 处理函数。
-"""
+"""Handler 处理函数。"""
T_TypeUpdater = Callable[..., Union[str, Awaitable[str]]]
-"""
-:类型: ``Callable[..., Union[None, Awaitable[None]]]``
+"""TypeUpdater 在 Matcher.pause, Matcher.reject 时被运行,用于更新响应的事件类型。默认会更新为 `message`。
-:依赖参数:
+依赖参数:
- * ``DependParam``: 子依赖参数
- * ``BotParam``: Bot 对象
- * ``EventParam``: Event 对象
- * ``StateParam``: State 对象
- * ``MatcherParam``: Matcher 对象
- * ``DefaultParam``: 带有默认值的参数
-
-:说明:
-
- TypeUpdater 在 Matcher.pause, Matcher.reject 时被运行,用于更新响应的事件类型。默认会更新为 ``message``。
+- DependParam: 子依赖参数
+- BotParam: Bot 对象
+- EventParam: Event 对象
+- StateParam: State 对象
+- MatcherParam: Matcher 对象
+- DefaultParam: 带有默认值的参数
"""
T_PermissionUpdater = Callable[..., Union["Permission", Awaitable["Permission"]]]
-"""
-:类型: ``Callable[..., Union[Permission, Awaitable[Permission]]]``
+"""PermissionUpdater 在 Matcher.pause, Matcher.reject 时被运行,用于更新会话对象权限。默认会更新为当前事件的触发对象。
-:依赖参数:
+依赖参数:
- * ``DependParam``: 子依赖参数
- * ``BotParam``: Bot 对象
- * ``EventParam``: Event 对象
- * ``StateParam``: State 对象
- * ``MatcherParam``: Matcher 对象
- * ``DefaultParam``: 带有默认值的参数
-
-:说明:
-
- PermissionUpdater 在 Matcher.pause, Matcher.reject 时被运行,用于更新会话对象权限。默认会更新为当前事件的触发对象。
+- DependParam: 子依赖参数
+- BotParam: Bot 对象
+- EventParam: Event 对象
+- StateParam: State 对象
+- MatcherParam: Matcher 对象
+- DefaultParam: 带有默认值的参数
"""
T_DependencyCache = Dict[Callable[..., Any], "Task[Any]"]
-"""
-:类型: ``Dict[Callable[..., Any], Task[Any]]``
-:说明:
- 依赖缓存, 用于存储依赖函数的返回值
-"""
+"""依赖缓存, 用于存储依赖函数的返回值"""
diff --git a/nonebot/utils.py b/nonebot/utils.py
index da03d690..e0900d12 100644
--- a/nonebot/utils.py
+++ b/nonebot/utils.py
@@ -1,3 +1,10 @@
+"""本模块包含了 NoneBot 的一些工具函数
+
+FrontMatter:
+ sidebar_position: 8
+ description: nonebot.utils 模块
+"""
+
import re
import json
import asyncio
@@ -15,10 +22,13 @@ from typing import (
Callable,
Optional,
Awaitable,
+ Coroutine,
AsyncGenerator,
ContextManager,
)
+from pydantic.typing import is_union, is_none_type
+
from nonebot.log import logger
from nonebot.typing import overrides
@@ -30,18 +40,12 @@ V = TypeVar("V")
def escape_tag(s: str) -> str:
- """
- :说明:
+ """用于记录带颜色日志时转义 `` 类型特殊标签
- 用于记录带颜色日志时转义 ```` 类型特殊标签
+ 参考: [loguru color 标签](https://loguru.readthedocs.io/en/stable/api/logger.html#color)
- :参数:
-
- * ``s: str``: 需要转义的字符串
-
- :返回:
-
- - ``str``
+ 参数:
+ s: 需要转义的字符串
"""
return re.sub(r"?((?:[fb]g\s)?[^<>\s]*)>", r"\\\g<0>", s)
@@ -49,13 +53,18 @@ def escape_tag(s: str) -> str:
def generic_check_issubclass(
cls: Any, class_or_tuple: Union[Type[Any], Tuple[Type[Any], ...]]
) -> bool:
+ """检查 cls 是否是 class_or_tuple 中的一个类型子类。
+
+ 特别的,如果 cls 是 `typing.Union` 或 `types.UnionType` 类型,
+ 则会检查其中的类型是否是 class_or_tuple 中的一个类型子类。(None 会被忽略)
+ """
try:
return issubclass(cls, class_or_tuple)
except TypeError:
origin = get_origin(cls)
- if origin is Union:
+ if is_union(origin):
for type_ in get_args(cls):
- if type_ is not type(None) and not generic_check_issubclass(
+ if not is_none_type(type_) and not generic_check_issubclass(
type_, class_or_tuple
):
return False
@@ -66,6 +75,7 @@ def generic_check_issubclass(
def is_coroutine_callable(call: Callable[..., Any]) -> bool:
+ """检查 call 是否是一个 callable 协程函数"""
if inspect.isroutine(call):
return inspect.iscoroutinefunction(call)
if inspect.isclass(call):
@@ -75,6 +85,7 @@ def is_coroutine_callable(call: Callable[..., Any]) -> bool:
def is_gen_callable(call: Callable[..., Any]) -> bool:
+ """检查 call 是否是一个生成器函数"""
if inspect.isgeneratorfunction(call):
return True
func_ = getattr(call, "__call__", None)
@@ -82,25 +93,18 @@ def is_gen_callable(call: Callable[..., Any]) -> bool:
def is_async_gen_callable(call: Callable[..., Any]) -> bool:
+ """检查 call 是否是一个异步生成器函数"""
if inspect.isasyncgenfunction(call):
return True
func_ = getattr(call, "__call__", None)
return inspect.isasyncgenfunction(func_)
-def run_sync(call: Callable[P, R]) -> Callable[P, Awaitable[R]]:
- """
- :说明:
+def run_sync(call: Callable[P, R]) -> Callable[P, Coroutine[None, None, R]]:
+ """一个用于包装 sync function 为 async function 的装饰器
- 一个用于包装 sync function 为 async function 的装饰器
-
- :参数:
-
- * ``call: Callable[P, R]``: 被装饰的同步函数
-
- :返回:
-
- - ``Callable[P, Awaitable[R]]``
+ 参数:
+ call: 被装饰的同步函数
"""
@wraps(call)
@@ -117,6 +121,7 @@ def run_sync(call: Callable[P, R]) -> Callable[P, Awaitable[R]]:
async def run_sync_ctx_manager(
cm: ContextManager[T],
) -> AsyncGenerator[T, None]:
+ """一个用于包装 sync context manager 为 async context manager 的执行函数"""
try:
yield await run_sync(cm.__enter__)()
except Exception as e:
@@ -128,17 +133,14 @@ async def run_sync_ctx_manager(
def get_name(obj: Any) -> str:
+ """获取对象的名称"""
if inspect.isfunction(obj) or inspect.isclass(obj):
return obj.__name__
return obj.__class__.__name__
class DataclassEncoder(json.JSONEncoder):
- """
- :说明:
-
- 在JSON序列化 ``Message`` (List[Dataclass]) 时使用的 ``JSONEncoder``
- """
+ """在JSON序列化 {re}`nonebot.adapters._message.Message` (List[Dataclass]) 时使用的 `JSONEncoder`"""
@overrides(json.JSONEncoder)
def default(self, o):
@@ -148,16 +150,17 @@ class DataclassEncoder(json.JSONEncoder):
def logger_wrapper(logger_name: str):
- """
- :说明:
+ """用于打印 adapter 的日志。
- 用于打印 adapter 的日志。
+ 参数:
+ logger_name: adapter 的名称
- :log 参数:
+ 返回:
+ 日志记录函数
- * ``level: Literal["CRITICAL", "WARNING", "INFO", "DEBUG", "TRACE"]``: 日志等级
- * ``message: str``: 日志信息
- * ``exception: Optional[Exception]``: 异常信息
+ - level: 日志等级
+ - message: 日志信息
+ - exception: 异常信息
"""
def log(level: str, message: str, exception: Optional[Exception] = None):
diff --git a/packages/nonebot-plugin-docs/nonebot_plugin_docs/drivers/fastapi.py b/packages/nonebot-plugin-docs/nonebot_plugin_docs/drivers/fastapi.py
index 6afba9cb..e58e4553 100644
--- a/packages/nonebot-plugin-docs/nonebot_plugin_docs/drivers/fastapi.py
+++ b/packages/nonebot-plugin-docs/nonebot_plugin_docs/drivers/fastapi.py
@@ -1,8 +1,9 @@
from pathlib import Path
-from nonebot.drivers.fastapi import Driver
from fastapi.staticfiles import StaticFiles
+from nonebot.drivers.fastapi import Driver
+
def register_route(driver: Driver):
app = driver.server_app
diff --git a/packages/nonebot-plugin-docs/pyproject.toml b/packages/nonebot-plugin-docs/pyproject.toml
index 521d6ad0..bcc1c2f9 100644
--- a/packages/nonebot-plugin-docs/pyproject.toml
+++ b/packages/nonebot-plugin-docs/pyproject.toml
@@ -17,21 +17,6 @@ nonebot2 = "^2.0.0-beta.1"
[tool.poetry.dev-dependencies]
-[tool.black]
-line-length = 88
-target-version = ["py37", "py38", "py39"]
-include = '\.pyi?$'
-extend-exclude = '''
-'''
-
-[tool.isort]
-profile = "black"
-line_length = 80
-length_sort = true
-skip_gitignore = true
-force_sort_within_sections = true
-extra_standard_library = ["typing_extensions"]
-
[build-system]
requires = ["poetry-core>=1.0.0"]
build-backend = "poetry.core.masonry.api"
diff --git a/poetry.lock b/poetry.lock
index f91e24f1..8734d5bd 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -53,17 +53,9 @@ python-versions = ">=3.6"
[package.dependencies]
frozenlist = ">=1.1.0"
-[[package]]
-name = "alabaster"
-version = "0.7.12"
-description = "A configurable sidebar-enabled Sphinx theme"
-category = "dev"
-optional = false
-python-versions = "*"
-
[[package]]
name = "anyio"
-version = "3.4.0"
+version = "3.5.0"
description = "High level compatibility layer for multiple asynchronous event loop implementations"
category = "main"
optional = false
@@ -75,17 +67,17 @@ sniffio = ">=1.1"
typing-extensions = {version = "*", markers = "python_version < \"3.8\""}
[package.extras]
-doc = ["sphinx-rtd-theme", "sphinx-autodoc-typehints (>=1.2.0)"]
+doc = ["packaging", "sphinx-rtd-theme", "sphinx-autodoc-typehints (>=1.2.0)"]
test = ["coverage[toml] (>=4.5)", "hypothesis (>=4.0)", "pytest (>=6.0)", "pytest-mock (>=3.6.1)", "trustme", "contextlib2", "uvloop (<0.15)", "mock (>=4)", "uvloop (>=0.15)"]
trio = ["trio (>=0.16)"]
[[package]]
name = "asgiref"
-version = "3.4.1"
+version = "3.5.0"
description = "ASGI specs, helper code, and adapters"
category = "main"
optional = false
-python-versions = ">=3.6"
+python-versions = ">=3.7"
[package.dependencies]
typing-extensions = {version = "*", markers = "python_version < \"3.8\""}
@@ -146,42 +138,27 @@ docs = ["furo", "sphinx", "zope.interface", "sphinx-notfound-page"]
tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface", "cloudpickle"]
tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "cloudpickle"]
-[[package]]
-name = "babel"
-version = "2.9.1"
-description = "Internationalization utilities"
-category = "dev"
-optional = false
-python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
-
-[package.dependencies]
-pytz = ">=2015.7"
-
[[package]]
name = "black"
-version = "21.12b0"
+version = "22.1.0"
description = "The uncompromising code formatter."
category = "dev"
optional = false
python-versions = ">=3.6.2"
[package.dependencies]
-click = ">=7.1.2"
+click = ">=8.0.0"
mypy-extensions = ">=0.4.3"
-pathspec = ">=0.9.0,<1"
+pathspec = ">=0.9.0"
platformdirs = ">=2"
-tomli = ">=0.2.6,<2.0.0"
+tomli = ">=1.1.0"
typed-ast = {version = ">=1.4.2", markers = "python_version < \"3.8\" and implementation_name == \"cpython\""}
-typing-extensions = [
- {version = ">=3.10.0.0", markers = "python_version < \"3.10\""},
- {version = "!=3.10.0.1", markers = "python_version >= \"3.10\""},
-]
+typing-extensions = {version = ">=3.10.0.0", markers = "python_version < \"3.10\""}
[package.extras]
colorama = ["colorama (>=0.4.3)"]
d = ["aiohttp (>=3.7.4)"]
jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"]
-python2 = ["typed-ast (>=1.4.3)"]
uvloop = ["uvloop (>=0.15.2)"]
[[package]]
@@ -227,9 +204,17 @@ python-versions = "*"
[package.dependencies]
pycparser = "*"
+[[package]]
+name = "cfgv"
+version = "3.3.1"
+description = "Validate configuration and produce human readable error messages."
+category = "dev"
+optional = false
+python-versions = ">=3.6.1"
+
[[package]]
name = "charset-normalizer"
-version = "2.0.10"
+version = "2.0.12"
description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet."
category = "main"
optional = false
@@ -260,11 +245,11 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
[[package]]
name = "coverage"
-version = "6.2"
+version = "6.3.1"
description = "Code coverage measurement for Python"
category = "dev"
optional = false
-python-versions = ">=3.6"
+python-versions = ">=3.7"
[package.dependencies]
tomli = {version = "*", optional = true, markers = "extra == \"toml\""}
@@ -273,16 +258,27 @@ tomli = {version = "*", optional = true, markers = "extra == \"toml\""}
toml = ["tomli"]
[[package]]
-name = "docutils"
-version = "0.17.1"
-description = "Docutils -- Python Documentation Utilities"
+name = "distlib"
+version = "0.3.4"
+description = "Distribution utilities"
+category = "dev"
+optional = false
+python-versions = "*"
+
+[[package]]
+name = "execnet"
+version = "1.9.0"
+description = "execnet: rapid multi-Python deployment"
category = "dev"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
+[package.extras]
+testing = ["pre-commit"]
+
[[package]]
name = "fastapi"
-version = "0.70.1"
+version = "0.73.0"
description = "FastAPI framework, high performance, easy to learn, fast to code, ready for production"
category = "main"
optional = false
@@ -290,21 +286,33 @@ python-versions = ">=3.6.1"
[package.dependencies]
pydantic = ">=1.6.2,<1.7 || >1.7,<1.7.1 || >1.7.1,<1.7.2 || >1.7.2,<1.7.3 || >1.7.3,<1.8 || >1.8,<1.8.1 || >1.8.1,<2.0.0"
-starlette = "0.16.0"
+starlette = "0.17.1"
[package.extras]
all = ["requests (>=2.24.0,<3.0.0)", "jinja2 (>=2.11.2,<4.0.0)", "python-multipart (>=0.0.5,<0.0.6)", "itsdangerous (>=1.1.0,<3.0.0)", "pyyaml (>=5.3.1,<6.0.0)", "ujson (>=4.0.1,<5.0.0)", "orjson (>=3.2.1,<4.0.0)", "email_validator (>=1.1.1,<2.0.0)", "uvicorn[standard] (>=0.12.0,<0.16.0)"]
dev = ["python-jose[cryptography] (>=3.3.0,<4.0.0)", "passlib[bcrypt] (>=1.7.2,<2.0.0)", "autoflake (>=1.4.0,<2.0.0)", "flake8 (>=3.8.3,<4.0.0)", "uvicorn[standard] (>=0.12.0,<0.16.0)"]
-doc = ["mkdocs (>=1.1.2,<2.0.0)", "mkdocs-material (>=7.1.9,<8.0.0)", "mdx-include (>=1.4.1,<2.0.0)", "mkdocs-markdownextradata-plugin (>=0.1.7,<0.3.0)", "typer-cli (>=0.0.12,<0.0.13)", "pyyaml (>=5.3.1,<6.0.0)"]
+doc = ["mkdocs (>=1.1.2,<2.0.0)", "mkdocs-material (>=8.1.4,<9.0.0)", "mdx-include (>=1.4.1,<2.0.0)", "mkdocs-markdownextradata-plugin (>=0.1.7,<0.3.0)", "typer-cli (>=0.0.12,<0.0.13)", "pyyaml (>=5.3.1,<6.0.0)"]
test = ["pytest (>=6.2.4,<7.0.0)", "pytest-cov (>=2.12.0,<4.0.0)", "mypy (==0.910)", "flake8 (>=3.8.3,<4.0.0)", "black (==21.9b0)", "isort (>=5.0.6,<6.0.0)", "requests (>=2.24.0,<3.0.0)", "httpx (>=0.14.0,<0.19.0)", "email_validator (>=1.1.1,<2.0.0)", "sqlalchemy (>=1.3.18,<1.5.0)", "peewee (>=3.13.3,<4.0.0)", "databases[sqlite] (>=0.3.2,<0.6.0)", "orjson (>=3.2.1,<4.0.0)", "ujson (>=4.0.1,<5.0.0)", "python-multipart (>=0.0.5,<0.0.6)", "flask (>=1.1.2,<3.0.0)", "anyio[trio] (>=3.2.1,<4.0.0)", "types-ujson (==0.1.1)", "types-orjson (==3.6.0)", "types-dataclasses (==0.1.7)"]
+[[package]]
+name = "filelock"
+version = "3.4.2"
+description = "A platform independent file lock."
+category = "dev"
+optional = false
+python-versions = ">=3.7"
+
+[package.extras]
+docs = ["furo (>=2021.8.17b43)", "sphinx (>=4.1)", "sphinx-autodoc-typehints (>=1.12)"]
+testing = ["covdefaults (>=1.2.0)", "coverage (>=4)", "pytest (>=4)", "pytest-cov", "pytest-timeout (>=1.4.2)"]
+
[[package]]
name = "frozenlist"
-version = "1.2.0"
+version = "1.3.0"
description = "A list-like structure which implements collections.abc.MutableSequence"
category = "main"
optional = true
-python-versions = ">=3.6"
+python-versions = ">=3.7"
[[package]]
name = "h11"
@@ -334,17 +342,9 @@ category = "main"
optional = true
python-versions = ">=3.6.1"
-[[package]]
-name = "html2text"
-version = "2020.1.16"
-description = "Turn HTML into equivalent Markdown-structured text."
-category = "dev"
-optional = false
-python-versions = ">=3.5"
-
[[package]]
name = "httpcore"
-version = "0.14.4"
+version = "0.14.7"
description = "A minimal low-level HTTP client."
category = "main"
optional = true
@@ -358,21 +358,22 @@ sniffio = ">=1.0.0,<2.0.0"
[package.extras]
http2 = ["h2 (>=3,<5)"]
+socks = ["socksio (>=1.0.0,<2.0.0)"]
[[package]]
name = "httptools"
-version = "0.2.0"
+version = "0.3.0"
description = "A collection of framework independent HTTP protocol utils."
category = "main"
optional = false
-python-versions = "*"
+python-versions = ">=3.5.0"
[package.extras]
-test = ["Cython (==0.29.22)"]
+test = ["Cython (>=0.29.24,<0.30.0)"]
[[package]]
name = "httpx"
-version = "0.21.3"
+version = "0.22.0"
description = "The next generation HTTP client."
category = "main"
optional = true
@@ -382,7 +383,7 @@ python-versions = ">=3.6"
certifi = "*"
charset-normalizer = "*"
h2 = {version = ">=3,<5", optional = true, markers = "extra == \"http2\""}
-httpcore = ">=0.14.0,<0.15.0"
+httpcore = ">=0.14.5,<0.15.0"
rfc3986 = {version = ">=1.3,<2", extras = ["idna2008"]}
sniffio = "*"
@@ -390,6 +391,7 @@ sniffio = "*"
brotli = ["brotlicffi", "brotli"]
cli = ["click (>=8.0.0,<9.0.0)", "rich (>=10.0.0,<11.0.0)", "pygments (>=2.0.0,<3.0.0)"]
http2 = ["h2 (>=3,<5)"]
+socks = ["socksio (>=1.0.0,<2.0.0)"]
[[package]]
name = "hypercorn"
@@ -420,6 +422,17 @@ category = "main"
optional = true
python-versions = ">=3.6.1"
+[[package]]
+name = "identify"
+version = "2.4.9"
+description = "File identification library for Python"
+category = "dev"
+optional = false
+python-versions = ">=3.7"
+
+[package.extras]
+license = ["ukkonen"]
+
[[package]]
name = "idna"
version = "3.3"
@@ -428,17 +441,9 @@ category = "main"
optional = false
python-versions = ">=3.5"
-[[package]]
-name = "imagesize"
-version = "1.3.0"
-description = "Getting image size from png/jpeg/jpeg2000/gif file"
-category = "dev"
-optional = false
-python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
-
[[package]]
name = "importlib-metadata"
-version = "4.10.0"
+version = "4.11.0"
description = "Read metadata from Python packages"
category = "main"
optional = false
@@ -488,7 +493,7 @@ name = "jinja2"
version = "3.0.3"
description = "A very fast and expressive template engine."
category = "main"
-optional = false
+optional = true
python-versions = ">=3.6"
[package.dependencies]
@@ -499,7 +504,7 @@ i18n = ["Babel (>=2.7)"]
[[package]]
name = "loguru"
-version = "0.5.3"
+version = "0.6.0"
description = "Python logging made (stupidly) simple"
category = "main"
optional = false
@@ -510,14 +515,14 @@ colorama = {version = ">=0.3.4", markers = "sys_platform == \"win32\""}
win32-setctime = {version = ">=1.0.0", markers = "sys_platform == \"win32\""}
[package.extras]
-dev = ["codecov (>=2.0.15)", "colorama (>=0.3.4)", "flake8 (>=3.7.7)", "tox (>=3.9.0)", "tox-travis (>=0.12)", "pytest (>=4.6.2)", "pytest-cov (>=2.7.1)", "Sphinx (>=2.2.1)", "sphinx-autobuild (>=0.7.1)", "sphinx-rtd-theme (>=0.4.3)", "black (>=19.10b0)", "isort (>=5.1.1)"]
+dev = ["colorama (>=0.3.4)", "docutils (==0.16)", "flake8 (>=3.7.7)", "tox (>=3.9.0)", "pytest (>=4.6.2)", "pytest-cov (>=2.7.1)", "black (>=19.10b0)", "isort (>=5.1.1)", "Sphinx (>=4.1.1)", "sphinx-autobuild (>=0.7.1)", "sphinx-rtd-theme (>=0.4.3)"]
[[package]]
name = "markupsafe"
version = "2.0.1"
description = "Safely add untrusted strings to HTML/XML markup."
category = "main"
-optional = false
+optional = true
python-versions = ">=3.6"
[[package]]
@@ -536,9 +541,37 @@ category = "dev"
optional = false
python-versions = "*"
+[[package]]
+name = "nb-autodoc"
+version = "0.1.0"
+description = "API doc generator for NoneBot."
+category = "dev"
+optional = false
+python-versions = ">=3.7"
+develop = false
+
+[package.dependencies]
+attrs = ">=21.4,<22.0"
+click = ">=8.0.3"
+six = ">=1.6.1"
+
+[package.source]
+type = "git"
+url = "https://github.com/nonebot/nb-autodoc.git"
+reference = "master"
+resolved_reference = "29c51256be92e05ed181561a4908f9d1e6378465"
+
+[[package]]
+name = "nodeenv"
+version = "1.6.0"
+description = "Node.js virtual environment builder"
+category = "dev"
+optional = false
+python-versions = "*"
+
[[package]]
name = "nonebug"
-version = "0.2.0"
+version = "0.2.1"
description = "nonebot2 test framework"
category = "dev"
optional = false
@@ -546,16 +579,17 @@ python-versions = "^3.7.3"
develop = false
[package.dependencies]
+asgiref = "^3.4.0"
async-asgi-testclient = "^1.4.8"
nonebot2 = "^2.0.0-beta.1"
-pytest = "^6.2.5"
-pytest-asyncio = "^0.16.0"
+pytest = "^7.0.0"
+typing-extensions = "^4.0.0"
[package.source]
type = "git"
url = "https://github.com/nonebot/nonebug.git"
reference = "master"
-resolved_reference = "123916d7281a49e45a1e6b7472a682bec16290ac"
+resolved_reference = "b4e8efcdd7e87f005a2a7ed255486ee34ef564d0"
[[package]]
name = "packaging"
@@ -578,7 +612,7 @@ python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7"
[[package]]
name = "platformdirs"
-version = "2.4.1"
+version = "2.5.0"
description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"."
category = "dev"
optional = false
@@ -603,6 +637,23 @@ importlib-metadata = {version = ">=0.12", markers = "python_version < \"3.8\""}
dev = ["pre-commit", "tox"]
testing = ["pytest", "pytest-benchmark"]
+[[package]]
+name = "pre-commit"
+version = "2.17.0"
+description = "A framework for managing and maintaining multi-language pre-commit hooks."
+category = "dev"
+optional = false
+python-versions = ">=3.6.1"
+
+[package.dependencies]
+cfgv = ">=2.0.0"
+identify = ">=1.0.0"
+importlib-metadata = {version = "*", markers = "python_version < \"3.8\""}
+nodeenv = ">=0.11.1"
+pyyaml = ">=5.1"
+toml = "*"
+virtualenv = ">=20.0.8"
+
[[package]]
name = "priority"
version = "2.0.0"
@@ -657,25 +708,6 @@ typing-extensions = ">=3.7.4.3"
dotenv = ["python-dotenv (>=0.10.4)"]
email = ["email-validator (>=1.0.3)"]
-[[package]]
-name = "pydash"
-version = "5.1.0"
-description = "The kitchen sink of Python utility libraries for doing \"stuff\" in a functional way. Based on the Lo-Dash Javascript library."
-category = "dev"
-optional = false
-python-versions = ">=3.6"
-
-[package.extras]
-dev = ["black", "coverage", "docformatter", "flake8", "flake8-black", "flake8-bugbear", "flake8-isort", "invoke", "isort", "pylint", "pytest", "pytest-cov", "pytest-flake8", "pytest-pylint", "sphinx", "sphinx-rtd-theme", "tox", "twine", "wheel"]
-
-[[package]]
-name = "pygments"
-version = "2.11.2"
-description = "Pygments is a syntax highlighting package written in Python."
-category = "dev"
-optional = false
-python-versions = ">=3.5"
-
[[package]]
name = "pygtrie"
version = "2.4.2"
@@ -686,7 +718,7 @@ python-versions = "*"
[[package]]
name = "pyparsing"
-version = "3.0.6"
+version = "3.0.7"
description = "Python parsing module"
category = "dev"
optional = false
@@ -697,7 +729,7 @@ diagrams = ["jinja2", "railroad-diagrams"]
[[package]]
name = "pytest"
-version = "6.2.5"
+version = "7.0.1"
description = "pytest: simple powerful testing with Python"
category = "dev"
optional = false
@@ -712,24 +744,25 @@ iniconfig = "*"
packaging = "*"
pluggy = ">=0.12,<2.0"
py = ">=1.8.2"
-toml = "*"
+tomli = ">=1.0.0"
[package.extras]
-testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xmlschema"]
+testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "xmlschema"]
[[package]]
name = "pytest-asyncio"
-version = "0.16.0"
-description = "Pytest support for asyncio."
+version = "0.18.1"
+description = "Pytest support for asyncio"
category = "dev"
optional = false
-python-versions = ">= 3.6"
+python-versions = ">=3.7"
[package.dependencies]
-pytest = ">=5.4.0"
+pytest = ">=6.1.0"
+typing-extensions = {version = ">=3.7.2", markers = "python_version < \"3.8\""}
[package.extras]
-testing = ["coverage", "hypothesis (>=5.7.1)"]
+testing = ["coverage (==6.2)", "hypothesis (>=5.7.1)", "flaky (>=3.5.0)", "mypy (==0.931)"]
[[package]]
name = "pytest-cov"
@@ -746,6 +779,36 @@ pytest = ">=4.6"
[package.extras]
testing = ["fields", "hunter", "process-tests", "six", "pytest-xdist", "virtualenv"]
+[[package]]
+name = "pytest-forked"
+version = "1.4.0"
+description = "run tests in isolated forked subprocesses"
+category = "dev"
+optional = false
+python-versions = ">=3.6"
+
+[package.dependencies]
+py = "*"
+pytest = ">=3.10"
+
+[[package]]
+name = "pytest-xdist"
+version = "2.5.0"
+description = "pytest xdist plugin for distributed testing and loop-on-failing modes"
+category = "dev"
+optional = false
+python-versions = ">=3.6"
+
+[package.dependencies]
+execnet = ">=1.1"
+pytest = ">=6.2.0"
+pytest-forked = "*"
+
+[package.extras]
+psutil = ["psutil (>=3.0)"]
+setproctitle = ["setproctitle"]
+testing = ["filelock"]
+
[[package]]
name = "python-dotenv"
version = "0.19.2"
@@ -757,14 +820,6 @@ python-versions = ">=3.5"
[package.extras]
cli = ["click (>=5.0)"]
-[[package]]
-name = "pytz"
-version = "2021.3"
-description = "World timezone definitions, modern and historical"
-category = "dev"
-optional = false
-python-versions = "*"
-
[[package]]
name = "pyyaml"
version = "6.0"
@@ -775,7 +830,7 @@ python-versions = ">=3.6"
[[package]]
name = "quart"
-version = "0.16.2"
+version = "0.16.3"
description = "A Python ASGI web microframework with the same API as Flask"
category = "main"
optional = true
@@ -828,6 +883,14 @@ idna = {version = "*", optional = true, markers = "extra == \"idna2008\""}
[package.extras]
idna2008 = ["idna"]
+[[package]]
+name = "six"
+version = "1.16.0"
+description = "Python 2 and 3 compatibility utilities"
+category = "dev"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*"
+
[[package]]
name = "sniffio"
version = "1.2.0"
@@ -836,141 +899,9 @@ category = "main"
optional = false
python-versions = ">=3.5"
-[[package]]
-name = "snowballstemmer"
-version = "2.2.0"
-description = "This package provides 29 stemmers for 28 languages generated from Snowball algorithms."
-category = "dev"
-optional = false
-python-versions = "*"
-
-[[package]]
-name = "sphinx"
-version = "4.3.2"
-description = "Python documentation generator"
-category = "dev"
-optional = false
-python-versions = ">=3.6"
-
-[package.dependencies]
-alabaster = ">=0.7,<0.8"
-babel = ">=1.3"
-colorama = {version = ">=0.3.5", markers = "sys_platform == \"win32\""}
-docutils = ">=0.14,<0.18"
-imagesize = "*"
-Jinja2 = ">=2.3"
-packaging = "*"
-Pygments = ">=2.0"
-requests = ">=2.5.0"
-snowballstemmer = ">=1.1"
-sphinxcontrib-applehelp = "*"
-sphinxcontrib-devhelp = "*"
-sphinxcontrib-htmlhelp = ">=2.0.0"
-sphinxcontrib-jsmath = "*"
-sphinxcontrib-qthelp = "*"
-sphinxcontrib-serializinghtml = ">=1.1.5"
-
-[package.extras]
-docs = ["sphinxcontrib-websupport"]
-lint = ["flake8 (>=3.5.0)", "isort", "mypy (>=0.920)", "docutils-stubs", "types-typed-ast", "types-pkg-resources", "types-requests"]
-test = ["pytest", "pytest-cov", "html5lib", "cython", "typed-ast"]
-
-[[package]]
-name = "sphinx-markdown-builder"
-version = "0.5.4"
-description = "sphinx builder that outputs markdown files"
-category = "dev"
-optional = false
-python-versions = "*"
-develop = false
-
-[package.dependencies]
-html2text = "*"
-pydash = "*"
-sphinx = "*"
-unify = "*"
-yapf = "*"
-
-[package.source]
-type = "git"
-url = "https://github.com/nonebot/sphinx-markdown-builder.git"
-reference = "master"
-resolved_reference = "2204923f5938a8f7354c6a69ed58079edd180a43"
-
-[[package]]
-name = "sphinxcontrib-applehelp"
-version = "1.0.2"
-description = "sphinxcontrib-applehelp is a sphinx extension which outputs Apple help books"
-category = "dev"
-optional = false
-python-versions = ">=3.5"
-
-[package.extras]
-lint = ["flake8", "mypy", "docutils-stubs"]
-test = ["pytest"]
-
-[[package]]
-name = "sphinxcontrib-devhelp"
-version = "1.0.2"
-description = "sphinxcontrib-devhelp is a sphinx extension which outputs Devhelp document."
-category = "dev"
-optional = false
-python-versions = ">=3.5"
-
-[package.extras]
-lint = ["flake8", "mypy", "docutils-stubs"]
-test = ["pytest"]
-
-[[package]]
-name = "sphinxcontrib-htmlhelp"
-version = "2.0.0"
-description = "sphinxcontrib-htmlhelp is a sphinx extension which renders HTML help files"
-category = "dev"
-optional = false
-python-versions = ">=3.6"
-
-[package.extras]
-lint = ["flake8", "mypy", "docutils-stubs"]
-test = ["pytest", "html5lib"]
-
-[[package]]
-name = "sphinxcontrib-jsmath"
-version = "1.0.1"
-description = "A sphinx extension which renders display math in HTML via JavaScript"
-category = "dev"
-optional = false
-python-versions = ">=3.5"
-
-[package.extras]
-test = ["pytest", "flake8", "mypy"]
-
-[[package]]
-name = "sphinxcontrib-qthelp"
-version = "1.0.3"
-description = "sphinxcontrib-qthelp is a sphinx extension which outputs QtHelp document."
-category = "dev"
-optional = false
-python-versions = ">=3.5"
-
-[package.extras]
-lint = ["flake8", "mypy", "docutils-stubs"]
-test = ["pytest"]
-
-[[package]]
-name = "sphinxcontrib-serializinghtml"
-version = "1.1.5"
-description = "sphinxcontrib-serializinghtml is a sphinx extension which outputs \"serialized\" HTML files (json and pickle)."
-category = "dev"
-optional = false
-python-versions = ">=3.5"
-
-[package.extras]
-lint = ["flake8", "mypy", "docutils-stubs"]
-test = ["pytest"]
-
[[package]]
name = "starlette"
-version = "0.16.0"
+version = "0.17.1"
description = "The little ASGI library that shines."
category = "main"
optional = false
@@ -981,7 +912,7 @@ anyio = ">=3.0.0,<4"
typing-extensions = {version = "*", markers = "python_version < \"3.8\""}
[package.extras]
-full = ["itsdangerous", "jinja2", "python-multipart", "pyyaml", "requests", "graphene"]
+full = ["itsdangerous", "jinja2", "python-multipart", "pyyaml", "requests"]
[[package]]
name = "toml"
@@ -993,23 +924,23 @@ python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*"
[[package]]
name = "tomli"
-version = "1.2.3"
+version = "2.0.1"
description = "A lil' TOML parser"
category = "dev"
optional = false
-python-versions = ">=3.6"
+python-versions = ">=3.7"
[[package]]
name = "tomlkit"
-version = "0.7.2"
+version = "0.9.2"
description = "Style preserving TOML library"
category = "main"
optional = false
-python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
+python-versions = ">=3.6,<4.0"
[[package]]
name = "typed-ast"
-version = "1.5.1"
+version = "1.5.2"
description = "a fork of Python 2 and 3 ast modules with type comment support"
category = "dev"
optional = false
@@ -1017,34 +948,15 @@ python-versions = ">=3.6"
[[package]]
name = "typing-extensions"
-version = "4.0.1"
+version = "4.1.0"
description = "Backported and Experimental Type Hints for Python 3.6+"
category = "main"
optional = false
python-versions = ">=3.6"
-[[package]]
-name = "unify"
-version = "0.5"
-description = "Modifies strings to all use the same (single/double) quote where possible."
-category = "dev"
-optional = false
-python-versions = "*"
-
-[package.dependencies]
-untokenize = "*"
-
-[[package]]
-name = "untokenize"
-version = "0.1.1"
-description = "Transforms tokens into original source code (while preserving whitespace)."
-category = "dev"
-optional = false
-python-versions = "*"
-
[[package]]
name = "urllib3"
-version = "1.26.7"
+version = "1.26.8"
description = "HTTP library with thread-safe connection pooling, file post, and more."
category = "dev"
optional = false
@@ -1057,27 +969,27 @@ socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"]
[[package]]
name = "uvicorn"
-version = "0.15.0"
+version = "0.17.4"
description = "The lightning-fast ASGI server."
category = "main"
optional = false
-python-versions = "*"
+python-versions = ">=3.7"
[package.dependencies]
asgiref = ">=3.4.0"
click = ">=7.0"
colorama = {version = ">=0.4", optional = true, markers = "sys_platform == \"win32\" and extra == \"standard\""}
h11 = ">=0.8"
-httptools = {version = ">=0.2.0,<0.3.0", optional = true, markers = "extra == \"standard\""}
+httptools = {version = ">=0.2.0,<0.4.0", optional = true, markers = "extra == \"standard\""}
python-dotenv = {version = ">=0.13", optional = true, markers = "extra == \"standard\""}
PyYAML = {version = ">=5.1", optional = true, markers = "extra == \"standard\""}
typing-extensions = {version = "*", markers = "python_version < \"3.8\""}
uvloop = {version = ">=0.14.0,<0.15.0 || >0.15.0,<0.15.1 || >0.15.1", optional = true, markers = "sys_platform != \"win32\" and sys_platform != \"cygwin\" and platform_python_implementation != \"PyPy\" and extra == \"standard\""}
watchgod = {version = ">=0.6", optional = true, markers = "extra == \"standard\""}
-websockets = {version = ">=9.1", optional = true, markers = "extra == \"standard\""}
+websockets = {version = ">=10.0", optional = true, markers = "extra == \"standard\""}
[package.extras]
-standard = ["websockets (>=9.1)", "httptools (>=0.2.0,<0.3.0)", "watchgod (>=0.6)", "python-dotenv (>=0.13)", "PyYAML (>=5.1)", "uvloop (>=0.14.0,!=0.15.0,!=0.15.1)", "colorama (>=0.4)"]
+standard = ["websockets (>=10.0)", "httptools (>=0.2.0,<0.4.0)", "watchgod (>=0.6)", "python-dotenv (>=0.13)", "PyYAML (>=5.1)", "uvloop (>=0.14.0,!=0.15.0,!=0.15.1)", "colorama (>=0.4)"]
[[package]]
name = "uvloop"
@@ -1092,6 +1004,25 @@ dev = ["Cython (>=0.29.24,<0.30.0)", "pytest (>=3.6.0)", "Sphinx (>=4.1.2,<4.2.0
docs = ["Sphinx (>=4.1.2,<4.2.0)", "sphinxcontrib-asyncio (>=0.3.0,<0.4.0)", "sphinx-rtd-theme (>=0.5.2,<0.6.0)"]
test = ["aiohttp", "flake8 (>=3.9.2,<3.10.0)", "psutil", "pycodestyle (>=2.7.0,<2.8.0)", "pyOpenSSL (>=19.0.0,<19.1.0)", "mypy (>=0.800)"]
+[[package]]
+name = "virtualenv"
+version = "20.13.1"
+description = "Virtual Python Environment builder"
+category = "dev"
+optional = false
+python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7"
+
+[package.dependencies]
+distlib = ">=0.3.1,<1"
+filelock = ">=3.2,<4"
+importlib-metadata = {version = ">=0.12", markers = "python_version < \"3.8\""}
+platformdirs = ">=2,<3"
+six = ">=1.9.0,<2"
+
+[package.extras]
+docs = ["proselint (>=0.10.2)", "sphinx (>=3)", "sphinx-argparse (>=0.2.5)", "sphinx-rtd-theme (>=0.4.3)", "towncrier (>=21.3)"]
+testing = ["coverage (>=4)", "coverage-enable-subprocess (>=1)", "flaky (>=3)", "pytest (>=4)", "pytest-env (>=0.6.2)", "pytest-freezegun (>=0.4.1)", "pytest-mock (>=2)", "pytest-randomly (>=1)", "pytest-timeout (>=1)", "packaging (>=20.0)"]
+
[[package]]
name = "watchgod"
version = "0.7"
@@ -1110,7 +1041,7 @@ python-versions = ">=3.7"
[[package]]
name = "werkzeug"
-version = "2.0.2"
+version = "2.0.3"
description = "The comprehensive WSGI web application library."
category = "main"
optional = true
@@ -1121,7 +1052,7 @@ watchdog = ["watchdog"]
[[package]]
name = "win32-setctime"
-version = "1.0.4"
+version = "1.1.0"
description = "A small Python utility to set file creation time on Windows"
category = "main"
optional = false
@@ -1141,14 +1072,6 @@ python-versions = ">=3.6.1"
[package.dependencies]
h11 = ">=0.9.0,<1"
-[[package]]
-name = "yapf"
-version = "0.32.0"
-description = "A formatter for Python code."
-category = "dev"
-optional = false
-python-versions = "*"
-
[[package]]
name = "yarl"
version = "1.7.2"
@@ -1184,7 +1107,7 @@ websockets = ["websockets"]
[metadata]
lock-version = "1.1"
python-versions = "^3.7.3"
-content-hash = "971e0c7ff39af96ea87d0281359f44d6cd29e514f974e47184c2c4aa27ad0061"
+content-hash = "4263e47aed741d46d30489e9e85912d4f3dddd6821f97fa27ca5b5bf9b10b2c1"
[metadata.files]
aiodns = [
@@ -1273,17 +1196,13 @@ aiosignal = [
{file = "aiosignal-1.2.0-py3-none-any.whl", hash = "sha256:26e62109036cd181df6e6ad646f91f0dcfd05fe16d0cb924138ff2ab75d64e3a"},
{file = "aiosignal-1.2.0.tar.gz", hash = "sha256:78ed67db6c7b7ced4f98e495e572106d5c432a93e1ddd1bf475e1dc05f5b7df2"},
]
-alabaster = [
- {file = "alabaster-0.7.12-py2.py3-none-any.whl", hash = "sha256:446438bdcca0e05bd45ea2de1668c1d9b032e1a9154c2c259092d77031ddd359"},
- {file = "alabaster-0.7.12.tar.gz", hash = "sha256:a661d72d58e6ea8a57f7a86e37d86716863ee5e92788398526d58b26a4e4dc02"},
-]
anyio = [
- {file = "anyio-3.4.0-py3-none-any.whl", hash = "sha256:2855a9423524abcdd652d942f8932fda1735210f77a6b392eafd9ff34d3fe020"},
- {file = "anyio-3.4.0.tar.gz", hash = "sha256:24adc69309fb5779bc1e06158e143e0b6d2c56b302a3ac3de3083c705a6ed39d"},
+ {file = "anyio-3.5.0-py3-none-any.whl", hash = "sha256:b5fa16c5ff93fa1046f2eeb5bbff2dad4d3514d6cda61d02816dba34fa8c3c2e"},
+ {file = "anyio-3.5.0.tar.gz", hash = "sha256:a0aeffe2fb1fdf374a8e4b471444f0f3ac4fb9f5a5b542b48824475e0042a5a6"},
]
asgiref = [
- {file = "asgiref-3.4.1-py3-none-any.whl", hash = "sha256:ffc141aa908e6f175673e7b1b3b7af4fdb0ecb738fc5c8b88f69f055c2415214"},
- {file = "asgiref-3.4.1.tar.gz", hash = "sha256:4ef1ab46b484e3c706329cedeff284a5d40824200638503f5768edb6de7d58e9"},
+ {file = "asgiref-3.5.0-py3-none-any.whl", hash = "sha256:88d59c13d634dcffe0510be048210188edd79aeccb6a6c9028cdad6f31d730a9"},
+ {file = "asgiref-3.5.0.tar.gz", hash = "sha256:2f8abc20f7248433085eda803936d98992f1343ddb022065779f37c5da0181d0"},
]
async-asgi-testclient = [
{file = "async-asgi-testclient-1.4.9.tar.gz", hash = "sha256:ae507f44a53699611cff81ad548090dad24055fba02cce398e1ca9b84d1e1288"},
@@ -1304,13 +1223,30 @@ attrs = [
{file = "attrs-21.4.0-py2.py3-none-any.whl", hash = "sha256:2d27e3784d7a565d36ab851fe94887c5eccd6a463168875832a1be79c82828b4"},
{file = "attrs-21.4.0.tar.gz", hash = "sha256:626ba8234211db98e869df76230a137c4c40a12d72445c45d5f5b716f076e2fd"},
]
-babel = [
- {file = "Babel-2.9.1-py2.py3-none-any.whl", hash = "sha256:ab49e12b91d937cd11f0b67cb259a57ab4ad2b59ac7a3b41d6c06c0ac5b0def9"},
- {file = "Babel-2.9.1.tar.gz", hash = "sha256:bc0c176f9f6a994582230df350aa6e05ba2ebe4b3ac317eab29d9be5d2768da0"},
-]
black = [
- {file = "black-21.12b0-py3-none-any.whl", hash = "sha256:a615e69ae185e08fdd73e4715e260e2479c861b5740057fde6e8b4e3b7dd589f"},
- {file = "black-21.12b0.tar.gz", hash = "sha256:77b80f693a569e2e527958459634f18df9b0ba2625ba4e0c2d5da5be42e6f2b3"},
+ {file = "black-22.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:1297c63b9e1b96a3d0da2d85d11cd9bf8664251fd69ddac068b98dc4f34f73b6"},
+ {file = "black-22.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2ff96450d3ad9ea499fc4c60e425a1439c2120cbbc1ab959ff20f7c76ec7e866"},
+ {file = "black-22.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0e21e1f1efa65a50e3960edd068b6ae6d64ad6235bd8bfea116a03b21836af71"},
+ {file = "black-22.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e2f69158a7d120fd641d1fa9a921d898e20d52e44a74a6fbbcc570a62a6bc8ab"},
+ {file = "black-22.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:228b5ae2c8e3d6227e4bde5920d2fc66cc3400fde7bcc74f480cb07ef0b570d5"},
+ {file = "black-22.1.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:b1a5ed73ab4c482208d20434f700d514f66ffe2840f63a6252ecc43a9bc77e8a"},
+ {file = "black-22.1.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:35944b7100af4a985abfcaa860b06af15590deb1f392f06c8683b4381e8eeaf0"},
+ {file = "black-22.1.0-cp36-cp36m-win_amd64.whl", hash = "sha256:7835fee5238fc0a0baf6c9268fb816b5f5cd9b8793423a75e8cd663c48d073ba"},
+ {file = "black-22.1.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:dae63f2dbf82882fa3b2a3c49c32bffe144970a573cd68d247af6560fc493ae1"},
+ {file = "black-22.1.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5fa1db02410b1924b6749c245ab38d30621564e658297484952f3d8a39fce7e8"},
+ {file = "black-22.1.0-cp37-cp37m-win_amd64.whl", hash = "sha256:c8226f50b8c34a14608b848dc23a46e5d08397d009446353dad45e04af0c8e28"},
+ {file = "black-22.1.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:2d6f331c02f0f40aa51a22e479c8209d37fcd520c77721c034517d44eecf5912"},
+ {file = "black-22.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:742ce9af3086e5bd07e58c8feb09dbb2b047b7f566eb5f5bc63fd455814979f3"},
+ {file = "black-22.1.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:fdb8754b453fb15fad3f72cd9cad3e16776f0964d67cf30ebcbf10327a3777a3"},
+ {file = "black-22.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5660feab44c2e3cb24b2419b998846cbb01c23c7fe645fee45087efa3da2d61"},
+ {file = "black-22.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:6f2f01381f91c1efb1451998bd65a129b3ed6f64f79663a55fe0e9b74a5f81fd"},
+ {file = "black-22.1.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:efbadd9b52c060a8fc3b9658744091cb33c31f830b3f074422ed27bad2b18e8f"},
+ {file = "black-22.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8871fcb4b447206904932b54b567923e5be802b9b19b744fdff092bd2f3118d0"},
+ {file = "black-22.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ccad888050f5393f0d6029deea2a33e5ae371fd182a697313bdbd835d3edaf9c"},
+ {file = "black-22.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:07e5c049442d7ca1a2fc273c79d1aecbbf1bc858f62e8184abe1ad175c4f7cc2"},
+ {file = "black-22.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:373922fc66676133ddc3e754e4509196a8c392fec3f5ca4486673e685a421321"},
+ {file = "black-22.1.0-py3-none-any.whl", hash = "sha256:3524739d76b6b3ed1132422bf9d82123cd1705086723bc3e235ca39fd21c667d"},
+ {file = "black-22.1.0.tar.gz", hash = "sha256:a7c0192d35635f6fc1174be575cb7915e92e5dd629ee79fdaf0dcfa41a80afb5"},
]
blinker = [
{file = "blinker-1.4.tar.gz", hash = "sha256:471aee25f3992bd325afa3772f1063dbdbbca947a041b8b89466dc00d606f8b6"},
@@ -1451,9 +1387,13 @@ cffi = [
{file = "cffi-1.15.0-cp39-cp39-win_amd64.whl", hash = "sha256:3773c4d81e6e818df2efbc7dd77325ca0dcb688116050fb2b3011218eda36139"},
{file = "cffi-1.15.0.tar.gz", hash = "sha256:920f0d66a896c2d99f0adbb391f990a84091179542c205fa53ce5787aff87954"},
]
+cfgv = [
+ {file = "cfgv-3.3.1-py2.py3-none-any.whl", hash = "sha256:c6a0883f3917a037485059700b9e75da2464e6c27051014ad85ba6aaa5884426"},
+ {file = "cfgv-3.3.1.tar.gz", hash = "sha256:f5a830efb9ce7a445376bb66ec94c638a9787422f96264c98edc6bdeed8ab736"},
+]
charset-normalizer = [
- {file = "charset-normalizer-2.0.10.tar.gz", hash = "sha256:876d180e9d7432c5d1dfd4c5d26b72f099d503e8fcc0feb7532c9289be60fcbd"},
- {file = "charset_normalizer-2.0.10-py3-none-any.whl", hash = "sha256:cb957888737fc0bbcd78e3df769addb41fd1ff8cf950dc9e7ad7793f1bf44455"},
+ {file = "charset-normalizer-2.0.12.tar.gz", hash = "sha256:2857e29ff0d34db842cd7ca3230549d1a697f96ee6d3fb071cfa6c7393832597"},
+ {file = "charset_normalizer-2.0.12-py3-none-any.whl", hash = "sha256:6881edbebdb17b39b4eaaa821b438bf6eddffb4468cf344f09f89def34a8b1df"},
]
click = [
{file = "click-8.0.3-py3-none-any.whl", hash = "sha256:353f466495adaeb40b6b5f592f9f91cb22372351c84caeb068132442a4518ef3"},
@@ -1464,135 +1404,124 @@ colorama = [
{file = "colorama-0.4.4.tar.gz", hash = "sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b"},
]
coverage = [
- {file = "coverage-6.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6dbc1536e105adda7a6312c778f15aaabe583b0e9a0b0a324990334fd458c94b"},
- {file = "coverage-6.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:174cf9b4bef0db2e8244f82059a5a72bd47e1d40e71c68ab055425172b16b7d0"},
- {file = "coverage-6.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:92b8c845527eae547a2a6617d336adc56394050c3ed8a6918683646328fbb6da"},
- {file = "coverage-6.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:c7912d1526299cb04c88288e148c6c87c0df600eca76efd99d84396cfe00ef1d"},
- {file = "coverage-6.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d5d2033d5db1d58ae2d62f095e1aefb6988af65b4b12cb8987af409587cc0739"},
- {file = "coverage-6.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:3feac4084291642165c3a0d9eaebedf19ffa505016c4d3db15bfe235718d4971"},
- {file = "coverage-6.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:276651978c94a8c5672ea60a2656e95a3cce2a3f31e9fb2d5ebd4c215d095840"},
- {file = "coverage-6.2-cp310-cp310-win32.whl", hash = "sha256:f506af4f27def639ba45789fa6fde45f9a217da0be05f8910458e4557eed020c"},
- {file = "coverage-6.2-cp310-cp310-win_amd64.whl", hash = "sha256:3f7c17209eef285c86f819ff04a6d4cbee9b33ef05cbcaae4c0b4e8e06b3ec8f"},
- {file = "coverage-6.2-cp311-cp311-macosx_10_14_x86_64.whl", hash = "sha256:13362889b2d46e8d9f97c421539c97c963e34031ab0cb89e8ca83a10cc71ac76"},
- {file = "coverage-6.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:22e60a3ca5acba37d1d4a2ee66e051f5b0e1b9ac950b5b0cf4aa5366eda41d47"},
- {file = "coverage-6.2-cp311-cp311-win_amd64.whl", hash = "sha256:b637c57fdb8be84e91fac60d9325a66a5981f8086c954ea2772efe28425eaf64"},
- {file = "coverage-6.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:f467bbb837691ab5a8ca359199d3429a11a01e6dfb3d9dcc676dc035ca93c0a9"},
- {file = "coverage-6.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2641f803ee9f95b1f387f3e8f3bf28d83d9b69a39e9911e5bfee832bea75240d"},
- {file = "coverage-6.2-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:1219d760ccfafc03c0822ae2e06e3b1248a8e6d1a70928966bafc6838d3c9e48"},
- {file = "coverage-6.2-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:9a2b5b52be0a8626fcbffd7e689781bf8c2ac01613e77feda93d96184949a98e"},
- {file = "coverage-6.2-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:8e2c35a4c1f269704e90888e56f794e2d9c0262fb0c1b1c8c4ee44d9b9e77b5d"},
- {file = "coverage-6.2-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:5d6b09c972ce9200264c35a1d53d43ca55ef61836d9ec60f0d44273a31aa9f17"},
- {file = "coverage-6.2-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:e3db840a4dee542e37e09f30859f1612da90e1c5239a6a2498c473183a50e781"},
- {file = "coverage-6.2-cp36-cp36m-win32.whl", hash = "sha256:4e547122ca2d244f7c090fe3f4b5a5861255ff66b7ab6d98f44a0222aaf8671a"},
- {file = "coverage-6.2-cp36-cp36m-win_amd64.whl", hash = "sha256:01774a2c2c729619760320270e42cd9e797427ecfddd32c2a7b639cdc481f3c0"},
- {file = "coverage-6.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:fb8b8ee99b3fffe4fd86f4c81b35a6bf7e4462cba019997af2fe679365db0c49"},
- {file = "coverage-6.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:619346d57c7126ae49ac95b11b0dc8e36c1dd49d148477461bb66c8cf13bb521"},
- {file = "coverage-6.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:0a7726f74ff63f41e95ed3a89fef002916c828bb5fcae83b505b49d81a066884"},
- {file = "coverage-6.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:cfd9386c1d6f13b37e05a91a8583e802f8059bebfccde61a418c5808dea6bbfa"},
- {file = "coverage-6.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:17e6c11038d4ed6e8af1407d9e89a2904d573be29d51515f14262d7f10ef0a64"},
- {file = "coverage-6.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c254b03032d5a06de049ce8bca8338a5185f07fb76600afff3c161e053d88617"},
- {file = "coverage-6.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:dca38a21e4423f3edb821292e97cec7ad38086f84313462098568baedf4331f8"},
- {file = "coverage-6.2-cp37-cp37m-win32.whl", hash = "sha256:600617008aa82032ddeace2535626d1bc212dfff32b43989539deda63b3f36e4"},
- {file = "coverage-6.2-cp37-cp37m-win_amd64.whl", hash = "sha256:bf154ba7ee2fd613eb541c2bc03d3d9ac667080a737449d1a3fb342740eb1a74"},
- {file = "coverage-6.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f9afb5b746781fc2abce26193d1c817b7eb0e11459510fba65d2bd77fe161d9e"},
- {file = "coverage-6.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:edcada2e24ed68f019175c2b2af2a8b481d3d084798b8c20d15d34f5c733fa58"},
- {file = "coverage-6.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:a9c8c4283e17690ff1a7427123ffb428ad6a52ed720d550e299e8291e33184dc"},
- {file = "coverage-6.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f614fc9956d76d8a88a88bb41ddc12709caa755666f580af3a688899721efecd"},
- {file = "coverage-6.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:9365ed5cce5d0cf2c10afc6add145c5037d3148585b8ae0e77cc1efdd6aa2953"},
- {file = "coverage-6.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:8bdfe9ff3a4ea37d17f172ac0dff1e1c383aec17a636b9b35906babc9f0f5475"},
- {file = "coverage-6.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:63c424e6f5b4ab1cf1e23a43b12f542b0ec2e54f99ec9f11b75382152981df57"},
- {file = "coverage-6.2-cp38-cp38-win32.whl", hash = "sha256:49dbff64961bc9bdd2289a2bda6a3a5a331964ba5497f694e2cbd540d656dc1c"},
- {file = "coverage-6.2-cp38-cp38-win_amd64.whl", hash = "sha256:9a29311bd6429be317c1f3fe4bc06c4c5ee45e2fa61b2a19d4d1d6111cb94af2"},
- {file = "coverage-6.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:03b20e52b7d31be571c9c06b74746746d4eb82fc260e594dc662ed48145e9efd"},
- {file = "coverage-6.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:215f8afcc02a24c2d9a10d3790b21054b58d71f4b3c6f055d4bb1b15cecce685"},
- {file = "coverage-6.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:a4bdeb0a52d1d04123b41d90a4390b096f3ef38eee35e11f0b22c2d031222c6c"},
- {file = "coverage-6.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:c332d8f8d448ded473b97fefe4a0983265af21917d8b0cdcb8bb06b2afe632c3"},
- {file = "coverage-6.2-cp39-cp39-win32.whl", hash = "sha256:6e1394d24d5938e561fbeaa0cd3d356207579c28bd1792f25a068743f2d5b282"},
- {file = "coverage-6.2-cp39-cp39-win_amd64.whl", hash = "sha256:86f2e78b1eff847609b1ca8050c9e1fa3bd44ce755b2ec30e70f2d3ba3844644"},
- {file = "coverage-6.2-pp36.pp37.pp38-none-any.whl", hash = "sha256:5829192582c0ec8ca4a2532407bc14c2f338d9878a10442f5d03804a95fac9de"},
- {file = "coverage-6.2.tar.gz", hash = "sha256:e2cad8093172b7d1595b4ad66f24270808658e11acf43a8f95b41276162eb5b8"},
+ {file = "coverage-6.3.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:eeffd96882d8c06d31b65dddcf51db7c612547babc1c4c5db6a011abe9798525"},
+ {file = "coverage-6.3.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:621f6ea7260ea2ffdaec64fe5cb521669984f567b66f62f81445221d4754df4c"},
+ {file = "coverage-6.3.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:84f2436d6742c01136dd940ee158bfc7cf5ced3da7e4c949662b8703b5cd8145"},
+ {file = "coverage-6.3.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:de73fca6fb403dd72d4da517cfc49fcf791f74eee697d3219f6be29adf5af6ce"},
+ {file = "coverage-6.3.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78fbb2be068a13a5d99dce9e1e7d168db880870f7bc73f876152130575bd6167"},
+ {file = "coverage-6.3.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:f5a4551dfd09c3bd12fca8144d47fe7745275adf3229b7223c2f9e29a975ebda"},
+ {file = "coverage-6.3.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:7bff3a98f63b47464480de1b5bdd80c8fade0ba2832c9381253c9b74c4153c27"},
+ {file = "coverage-6.3.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a06c358f4aed05fa1099c39decc8022261bb07dfadc127c08cfbd1391b09689e"},
+ {file = "coverage-6.3.1-cp310-cp310-win32.whl", hash = "sha256:9fff3ff052922cb99f9e52f63f985d4f7a54f6b94287463bc66b7cdf3eb41217"},
+ {file = "coverage-6.3.1-cp310-cp310-win_amd64.whl", hash = "sha256:276b13cc085474e482566c477c25ed66a097b44c6e77132f3304ac0b039f83eb"},
+ {file = "coverage-6.3.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:56c4a409381ddd7bbff134e9756077860d4e8a583d310a6f38a2315b9ce301d0"},
+ {file = "coverage-6.3.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9eb494070aa060ceba6e4bbf44c1bc5fa97bfb883a0d9b0c9049415f9e944793"},
+ {file = "coverage-6.3.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5e15d424b8153756b7c903bde6d4610be0c3daca3986173c18dd5c1a1625e4cd"},
+ {file = "coverage-6.3.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:61d47a897c1e91f33f177c21de897267b38fbb45f2cd8e22a710bcef1df09ac1"},
+ {file = "coverage-6.3.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:25e73d4c81efa8ea3785274a2f7f3bfbbeccb6fcba2a0bdd3be9223371c37554"},
+ {file = "coverage-6.3.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:fac0bcc5b7e8169bffa87f0dcc24435446d329cbc2b5486d155c2e0f3b493ae1"},
+ {file = "coverage-6.3.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:72128176fea72012063200b7b395ed8a57849282b207321124d7ff14e26988e8"},
+ {file = "coverage-6.3.1-cp37-cp37m-win32.whl", hash = "sha256:1bc6d709939ff262fd1432f03f080c5042dc6508b6e0d3d20e61dd045456a1a0"},
+ {file = "coverage-6.3.1-cp37-cp37m-win_amd64.whl", hash = "sha256:618eeba986cea7f621d8607ee378ecc8c2504b98b3fdc4952b30fe3578304687"},
+ {file = "coverage-6.3.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d5ed164af5c9078596cfc40b078c3b337911190d3faeac830c3f1274f26b8320"},
+ {file = "coverage-6.3.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:352c68e233409c31048a3725c446a9e48bbff36e39db92774d4f2380d630d8f8"},
+ {file = "coverage-6.3.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:448d7bde7ceb6c69e08474c2ddbc5b4cd13c9e4aa4a717467f716b5fc938a734"},
+ {file = "coverage-6.3.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9fde6b90889522c220dd56a670102ceef24955d994ff7af2cb786b4ba8fe11e4"},
+ {file = "coverage-6.3.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e647a0be741edbb529a72644e999acb09f2ad60465f80757da183528941ff975"},
+ {file = "coverage-6.3.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6a5cdc3adb4f8bb8d8f5e64c2e9e282bc12980ef055ec6da59db562ee9bdfefa"},
+ {file = "coverage-6.3.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:2dd70a167843b4b4b2630c0c56f1b586fe965b4f8ac5da05b6690344fd065c6b"},
+ {file = "coverage-6.3.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:9ad0a117b8dc2061ce9461ea4c1b4799e55edceb236522c5b8f958ce9ed8fa9a"},
+ {file = "coverage-6.3.1-cp38-cp38-win32.whl", hash = "sha256:e92c7a5f7d62edff50f60a045dc9542bf939758c95b2fcd686175dd10ce0ed10"},
+ {file = "coverage-6.3.1-cp38-cp38-win_amd64.whl", hash = "sha256:482fb42eea6164894ff82abbcf33d526362de5d1a7ed25af7ecbdddd28fc124f"},
+ {file = "coverage-6.3.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c5b81fb37db76ebea79aa963b76d96ff854e7662921ce742293463635a87a78d"},
+ {file = "coverage-6.3.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a4f923b9ab265136e57cc14794a15b9dcea07a9c578609cd5dbbfff28a0d15e6"},
+ {file = "coverage-6.3.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:56d296cbc8254a7dffdd7bcc2eb70be5a233aae7c01856d2d936f5ac4e8ac1f1"},
+ {file = "coverage-6.3.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1245ab82e8554fa88c4b2ab1e098ae051faac5af829efdcf2ce6b34dccd5567c"},
+ {file = "coverage-6.3.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3f2b05757c92ad96b33dbf8e8ec8d4ccb9af6ae3c9e9bd141c7cc44d20c6bcba"},
+ {file = "coverage-6.3.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9e3dd806f34de38d4c01416344e98eab2437ac450b3ae39c62a0ede2f8b5e4ed"},
+ {file = "coverage-6.3.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:d651fde74a4d3122e5562705824507e2f5b2d3d57557f1916c4b27635f8fbe3f"},
+ {file = "coverage-6.3.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:704f89b87c4f4737da2860695a18c852b78ec7279b24eedacab10b29067d3a38"},
+ {file = "coverage-6.3.1-cp39-cp39-win32.whl", hash = "sha256:2aed4761809640f02e44e16b8b32c1a5dee5e80ea30a0ff0912158bde9c501f2"},
+ {file = "coverage-6.3.1-cp39-cp39-win_amd64.whl", hash = "sha256:9976fb0a5709988778ac9bc44f3d50fccd989987876dfd7716dee28beed0a9fa"},
+ {file = "coverage-6.3.1-pp36.pp37.pp38-none-any.whl", hash = "sha256:463e52616ea687fd323888e86bf25e864a3cc6335a043fad6bbb037dbf49bbe2"},
+ {file = "coverage-6.3.1.tar.gz", hash = "sha256:6c3f6158b02ac403868eea390930ae64e9a9a2a5bbfafefbb920d29258d9f2f8"},
]
-docutils = [
- {file = "docutils-0.17.1-py2.py3-none-any.whl", hash = "sha256:cf316c8370a737a022b72b56874f6602acf974a37a9fba42ec2876387549fc61"},
- {file = "docutils-0.17.1.tar.gz", hash = "sha256:686577d2e4c32380bb50cbb22f575ed742d58168cee37e99117a854bcd88f125"},
+distlib = [
+ {file = "distlib-0.3.4-py2.py3-none-any.whl", hash = "sha256:6564fe0a8f51e734df6333d08b8b94d4ea8ee6b99b5ed50613f731fd4089f34b"},
+ {file = "distlib-0.3.4.zip", hash = "sha256:e4b58818180336dc9c529bfb9a0b58728ffc09ad92027a3f30b7cd91e3458579"},
+]
+execnet = [
+ {file = "execnet-1.9.0-py2.py3-none-any.whl", hash = "sha256:a295f7cc774947aac58dde7fdc85f4aa00c42adf5d8f5468fc630c1acf30a142"},
+ {file = "execnet-1.9.0.tar.gz", hash = "sha256:8f694f3ba9cc92cab508b152dcfe322153975c29bda272e2fd7f3f00f36e47c5"},
]
fastapi = [
- {file = "fastapi-0.70.1-py3-none-any.whl", hash = "sha256:5367226c7bcd7bfb2e17edaf225fd9a983095b1372281e9a3eb661336fb93748"},
- {file = "fastapi-0.70.1.tar.gz", hash = "sha256:21d03979b5336375c66fa5d1f3126c6beca650d5d2166fbb78345a30d33c8d06"},
+ {file = "fastapi-0.73.0-py3-none-any.whl", hash = "sha256:f0a618aff5f6942862f2d3f20f39b1c037e33314d1b8207fd1c3a2cca76dfd8c"},
+ {file = "fastapi-0.73.0.tar.gz", hash = "sha256:dcfee92a7f9a72b5d4b7ca364bd2b009f8fc10d95ed5769be20e94f39f7e5a15"},
+]
+filelock = [
+ {file = "filelock-3.4.2-py3-none-any.whl", hash = "sha256:cf0fc6a2f8d26bd900f19bf33915ca70ba4dd8c56903eeb14e1e7a2fd7590146"},
+ {file = "filelock-3.4.2.tar.gz", hash = "sha256:38b4f4c989f9d06d44524df1b24bd19e167d851f19b50bf3e3559952dddc5b80"},
]
frozenlist = [
- {file = "frozenlist-1.2.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:977a1438d0e0d96573fd679d291a1542097ea9f4918a8b6494b06610dfeefbf9"},
- {file = "frozenlist-1.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a8d86547a5e98d9edd47c432f7a14b0c5592624b496ae9880fb6332f34af1edc"},
- {file = "frozenlist-1.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:181754275d5d32487431a0a29add4f897968b7157204bc1eaaf0a0ce80c5ba7d"},
- {file = "frozenlist-1.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5df31bb2b974f379d230a25943d9bf0d3bc666b4b0807394b131a28fca2b0e5f"},
- {file = "frozenlist-1.2.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4766632cd8a68e4f10f156a12c9acd7b1609941525569dd3636d859d79279ed3"},
- {file = "frozenlist-1.2.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:16eef427c51cb1203a7c0ab59d1b8abccaba9a4f58c4bfca6ed278fc896dc193"},
- {file = "frozenlist-1.2.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:01d79515ed5aa3d699b05f6bdcf1fe9087d61d6b53882aa599a10853f0479c6c"},
- {file = "frozenlist-1.2.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:28e164722ea0df0cf6d48c4d5bdf3d19e87aaa6dfb39b0ba91153f224b912020"},
- {file = "frozenlist-1.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e63ad0beef6ece06475d29f47d1f2f29727805376e09850ebf64f90777962792"},
- {file = "frozenlist-1.2.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:41de4db9b9501679cf7cddc16d07ac0f10ef7eb58c525a1c8cbff43022bddca4"},
- {file = "frozenlist-1.2.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:c6a9d84ee6427b65a81fc24e6ef589cb794009f5ca4150151251c062773e7ed2"},
- {file = "frozenlist-1.2.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:f5f3b2942c3b8b9bfe76b408bbaba3d3bb305ee3693e8b1d631fe0a0d4f93673"},
- {file = "frozenlist-1.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c98d3c04701773ad60d9545cd96df94d955329efc7743fdb96422c4b669c633b"},
- {file = "frozenlist-1.2.0-cp310-cp310-win32.whl", hash = "sha256:72cfbeab7a920ea9e74b19aa0afe3b4ad9c89471e3badc985d08756efa9b813b"},
- {file = "frozenlist-1.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:11ff401951b5ac8c0701a804f503d72c048173208490c54ebb8d7bb7c07a6d00"},
- {file = "frozenlist-1.2.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:b46f997d5ed6d222a863b02cdc9c299101ee27974d9bbb2fd1b3c8441311c408"},
- {file = "frozenlist-1.2.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:351686ca020d1bcd238596b1fa5c8efcbc21bffda9d0efe237aaa60348421e2a"},
- {file = "frozenlist-1.2.0-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bfbaa08cf1452acad9cb1c1d7b89394a41e712f88df522cea1a0f296b57782a0"},
- {file = "frozenlist-1.2.0-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2ae2f5e9fa10805fb1c9adbfefaaecedd9e31849434be462c3960a0139ed729"},
- {file = "frozenlist-1.2.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:6790b8d96bbb74b7a6f4594b6f131bd23056c25f2aa5d816bd177d95245a30e3"},
- {file = "frozenlist-1.2.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:41f62468af1bd4e4b42b5508a3fe8cc46a693f0cdd0ca2f443f51f207893d837"},
- {file = "frozenlist-1.2.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:ec6cf345771cdb00791d271af9a0a6fbfc2b6dd44cb753f1eeaa256e21622adb"},
- {file = "frozenlist-1.2.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:14a5cef795ae3e28fb504b73e797c1800e9249f950e1c964bb6bdc8d77871161"},
- {file = "frozenlist-1.2.0-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:8b54cdd2fda15467b9b0bfa78cee2ddf6dbb4585ef23a16e14926f4b076dfae4"},
- {file = "frozenlist-1.2.0-cp36-cp36m-musllinux_1_1_s390x.whl", hash = "sha256:f025f1d6825725b09c0038775acab9ae94264453a696cc797ce20c0769a7b367"},
- {file = "frozenlist-1.2.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:84e97f59211b5b9083a2e7a45abf91cfb441369e8bb6d1f5287382c1c526def3"},
- {file = "frozenlist-1.2.0-cp36-cp36m-win32.whl", hash = "sha256:c5328ed53fdb0a73c8a50105306a3bc013e5ca36cca714ec4f7bd31d38d8a97f"},
- {file = "frozenlist-1.2.0-cp36-cp36m-win_amd64.whl", hash = "sha256:9ade70aea559ca98f4b1b1e5650c45678052e76a8ab2f76d90f2ac64180215a2"},
- {file = "frozenlist-1.2.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a0d3ffa8772464441b52489b985d46001e2853a3b082c655ec5fad9fb6a3d618"},
- {file = "frozenlist-1.2.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3457f8cf86deb6ce1ba67e120f1b0128fcba1332a180722756597253c465fc1d"},
- {file = "frozenlist-1.2.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5a72eecf37eface331636951249d878750db84034927c997d47f7f78a573b72b"},
- {file = "frozenlist-1.2.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:acc4614e8d1feb9f46dd829a8e771b8f5c4b1051365d02efb27a3229048ade8a"},
- {file = "frozenlist-1.2.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:87521e32e18a2223311afc2492ef2d99946337da0779ddcda77b82ee7319df59"},
- {file = "frozenlist-1.2.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:8b4c7665a17c3a5430edb663e4ad4e1ad457614d1b2f2b7f87052e2ef4fa45ca"},
- {file = "frozenlist-1.2.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:ed58803563a8c87cf4c0771366cf0ad1aa265b6b0ae54cbbb53013480c7ad74d"},
- {file = "frozenlist-1.2.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:aa44c4740b4e23fcfa259e9dd52315d2b1770064cde9507457e4c4a65a04c397"},
- {file = "frozenlist-1.2.0-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:2de5b931701257d50771a032bba4e448ff958076380b049fd36ed8738fdb375b"},
- {file = "frozenlist-1.2.0-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:6e105013fa84623c057a4381dc8ea0361f4d682c11f3816cc80f49a1f3bc17c6"},
- {file = "frozenlist-1.2.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:705c184b77565955a99dc360f359e8249580c6b7eaa4dc0227caa861ef46b27a"},
- {file = "frozenlist-1.2.0-cp37-cp37m-win32.whl", hash = "sha256:a37594ad6356e50073fe4f60aa4187b97d15329f2138124d252a5a19c8553ea4"},
- {file = "frozenlist-1.2.0-cp37-cp37m-win_amd64.whl", hash = "sha256:25b358aaa7dba5891b05968dd539f5856d69f522b6de0bf34e61f133e077c1a4"},
- {file = "frozenlist-1.2.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:af2a51c8a381d76eabb76f228f565ed4c3701441ecec101dd18be70ebd483cfd"},
- {file = "frozenlist-1.2.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:82d22f6e6f2916e837c91c860140ef9947e31194c82aaeda843d6551cec92f19"},
- {file = "frozenlist-1.2.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:1cfe6fef507f8bac40f009c85c7eddfed88c1c0d38c75e72fe10476cef94e10f"},
- {file = "frozenlist-1.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:26f602e380a5132880fa245c92030abb0fc6ff34e0c5500600366cedc6adb06a"},
- {file = "frozenlist-1.2.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4ad065b2ebd09f32511ff2be35c5dfafee6192978b5a1e9d279a5c6e121e3b03"},
- {file = "frozenlist-1.2.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bc93f5f62df3bdc1f677066327fc81f92b83644852a31c6aa9b32c2dde86ea7d"},
- {file = "frozenlist-1.2.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:89fdfc84c6bf0bff2ff3170bb34ecba8a6911b260d318d377171429c4be18c73"},
- {file = "frozenlist-1.2.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:47b2848e464883d0bbdcd9493c67443e5e695a84694efff0476f9059b4cb6257"},
- {file = "frozenlist-1.2.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:4f52d0732e56906f8ddea4bd856192984650282424049c956857fed43697ea43"},
- {file = "frozenlist-1.2.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:16ef7dd5b7d17495404a2e7a49bac1bc13d6d20c16d11f4133c757dd94c4144c"},
- {file = "frozenlist-1.2.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:1cf63243bc5f5c19762943b0aa9e0d3fb3723d0c514d820a18a9b9a5ef864315"},
- {file = "frozenlist-1.2.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:54a1e09ab7a69f843cd28fefd2bcaf23edb9e3a8d7680032c8968b8ac934587d"},
- {file = "frozenlist-1.2.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:954b154a4533ef28bd3e83ffdf4eadf39deeda9e38fb8feaf066d6069885e034"},
- {file = "frozenlist-1.2.0-cp38-cp38-win32.whl", hash = "sha256:cb3957c39668d10e2b486acc85f94153520a23263b6401e8f59422ef65b9520d"},
- {file = "frozenlist-1.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:0a7c7cce70e41bc13d7d50f0e5dd175f14a4f1837a8549b0936ed0cbe6170bf9"},
- {file = "frozenlist-1.2.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:4c457220468d734e3077580a3642b7f682f5fd9507f17ddf1029452450912cdc"},
- {file = "frozenlist-1.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:e74f8b4d8677ebb4015ac01fcaf05f34e8a1f22775db1f304f497f2f88fdc697"},
- {file = "frozenlist-1.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:fbd4844ff111449f3bbe20ba24fbb906b5b1c2384d0f3287c9f7da2354ce6d23"},
- {file = "frozenlist-1.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f0081a623c886197ff8de9e635528fd7e6a387dccef432149e25c13946cb0cd0"},
- {file = "frozenlist-1.2.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9b6e21e5770df2dea06cb7b6323fbc008b13c4a4e3b52cb54685276479ee7676"},
- {file = "frozenlist-1.2.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:406aeb340613b4b559db78d86864485f68919b7141dec82aba24d1477fd2976f"},
- {file = "frozenlist-1.2.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:878ebe074839d649a1cdb03a61077d05760624f36d196884a5cafb12290e187b"},
- {file = "frozenlist-1.2.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:1fef737fd1388f9b93bba8808c5f63058113c10f4e3c0763ced68431773f72f9"},
- {file = "frozenlist-1.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:4a495c3d513573b0b3f935bfa887a85d9ae09f0627cf47cad17d0cc9b9ba5c38"},
- {file = "frozenlist-1.2.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:e7d0dd3e727c70c2680f5f09a0775525229809f1a35d8552b92ff10b2b14f2c2"},
- {file = "frozenlist-1.2.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:66a518731a21a55b7d3e087b430f1956a36793acc15912e2878431c7aec54210"},
- {file = "frozenlist-1.2.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:94728f97ddf603d23c8c3dd5cae2644fa12d33116e69f49b1644a71bb77b89ae"},
- {file = "frozenlist-1.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c1e8e9033d34c2c9e186e58279879d78c94dd365068a3607af33f2bc99357a53"},
- {file = "frozenlist-1.2.0-cp39-cp39-win32.whl", hash = "sha256:83334e84a290a158c0c4cc4d22e8c7cfe0bba5b76d37f1c2509dabd22acafe15"},
- {file = "frozenlist-1.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:735f386ec522e384f511614c01d2ef9cf799f051353876b4c6fb93ef67a6d1ee"},
- {file = "frozenlist-1.2.0.tar.gz", hash = "sha256:68201be60ac56aff972dc18085800b6ee07973c49103a8aba669dee3d71079de"},
+ {file = "frozenlist-1.3.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d2257aaba9660f78c7b1d8fea963b68f3feffb1a9d5d05a18401ca9eb3e8d0a3"},
+ {file = "frozenlist-1.3.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:4a44ebbf601d7bac77976d429e9bdb5a4614f9f4027777f9e54fd765196e9d3b"},
+ {file = "frozenlist-1.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:45334234ec30fc4ea677f43171b18a27505bfb2dba9aca4398a62692c0ea8868"},
+ {file = "frozenlist-1.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:47be22dc27ed933d55ee55845d34a3e4e9f6fee93039e7f8ebadb0c2f60d403f"},
+ {file = "frozenlist-1.3.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:03a7dd1bfce30216a3f51a84e6dd0e4a573d23ca50f0346634916ff105ba6e6b"},
+ {file = "frozenlist-1.3.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:691ddf6dc50480ce49f68441f1d16a4c3325887453837036e0fb94736eae1e58"},
+ {file = "frozenlist-1.3.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bde99812f237f79eaf3f04ebffd74f6718bbd216101b35ac7955c2d47c17da02"},
+ {file = "frozenlist-1.3.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6a202458d1298ced3768f5a7d44301e7c86defac162ace0ab7434c2e961166e8"},
+ {file = "frozenlist-1.3.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b9e3e9e365991f8cc5f5edc1fd65b58b41d0514a6a7ad95ef5c7f34eb49b3d3e"},
+ {file = "frozenlist-1.3.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:04cb491c4b1c051734d41ea2552fde292f5f3a9c911363f74f39c23659c4af78"},
+ {file = "frozenlist-1.3.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:436496321dad302b8b27ca955364a439ed1f0999311c393dccb243e451ff66aa"},
+ {file = "frozenlist-1.3.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:754728d65f1acc61e0f4df784456106e35afb7bf39cfe37227ab00436fb38676"},
+ {file = "frozenlist-1.3.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6eb275c6385dd72594758cbe96c07cdb9bd6becf84235f4a594bdf21e3596c9d"},
+ {file = "frozenlist-1.3.0-cp310-cp310-win32.whl", hash = "sha256:e30b2f9683812eb30cf3f0a8e9f79f8d590a7999f731cf39f9105a7c4a39489d"},
+ {file = "frozenlist-1.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:f7353ba3367473d1d616ee727945f439e027f0bb16ac1a750219a8344d1d5d3c"},
+ {file = "frozenlist-1.3.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:88aafd445a233dbbf8a65a62bc3249a0acd0d81ab18f6feb461cc5a938610d24"},
+ {file = "frozenlist-1.3.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4406cfabef8f07b3b3af0f50f70938ec06d9f0fc26cbdeaab431cbc3ca3caeaa"},
+ {file = "frozenlist-1.3.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8cf829bd2e2956066dd4de43fd8ec881d87842a06708c035b37ef632930505a2"},
+ {file = "frozenlist-1.3.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:603b9091bd70fae7be28bdb8aa5c9990f4241aa33abb673390a7f7329296695f"},
+ {file = "frozenlist-1.3.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:25af28b560e0c76fa41f550eacb389905633e7ac02d6eb3c09017fa1c8cdfde1"},
+ {file = "frozenlist-1.3.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:94c7a8a9fc9383b52c410a2ec952521906d355d18fccc927fca52ab575ee8b93"},
+ {file = "frozenlist-1.3.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:65bc6e2fece04e2145ab6e3c47428d1bbc05aede61ae365b2c1bddd94906e478"},
+ {file = "frozenlist-1.3.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:3f7c935c7b58b0d78c0beea0c7358e165f95f1fd8a7e98baa40d22a05b4a8141"},
+ {file = "frozenlist-1.3.0-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:bd89acd1b8bb4f31b47072615d72e7f53a948d302b7c1d1455e42622de180eae"},
+ {file = "frozenlist-1.3.0-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:6983a31698490825171be44ffbafeaa930ddf590d3f051e397143a5045513b01"},
+ {file = "frozenlist-1.3.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:adac9700675cf99e3615eb6a0eb5e9f5a4143c7d42c05cea2e7f71c27a3d0846"},
+ {file = "frozenlist-1.3.0-cp37-cp37m-win32.whl", hash = "sha256:0c36e78b9509e97042ef869c0e1e6ef6429e55817c12d78245eb915e1cca7468"},
+ {file = "frozenlist-1.3.0-cp37-cp37m-win_amd64.whl", hash = "sha256:57f4d3f03a18facacb2a6bcd21bccd011e3b75d463dc49f838fd699d074fabd1"},
+ {file = "frozenlist-1.3.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:8c905a5186d77111f02144fab5b849ab524f1e876a1e75205cd1386a9be4b00a"},
+ {file = "frozenlist-1.3.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b5009062d78a8c6890d50b4e53b0ddda31841b3935c1937e2ed8c1bda1c7fb9d"},
+ {file = "frozenlist-1.3.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2fdc3cd845e5a1f71a0c3518528bfdbfe2efaf9886d6f49eacc5ee4fd9a10953"},
+ {file = "frozenlist-1.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:92e650bd09b5dda929523b9f8e7f99b24deac61240ecc1a32aeba487afcd970f"},
+ {file = "frozenlist-1.3.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:40dff8962b8eba91fd3848d857203f0bd704b5f1fa2b3fc9af64901a190bba08"},
+ {file = "frozenlist-1.3.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:768efd082074bb203c934e83a61654ed4931ef02412c2fbdecea0cff7ecd0274"},
+ {file = "frozenlist-1.3.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:006d3595e7d4108a12025ddf415ae0f6c9e736e726a5db0183326fd191b14c5e"},
+ {file = "frozenlist-1.3.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:871d42623ae15eb0b0e9df65baeee6976b2e161d0ba93155411d58ff27483ad8"},
+ {file = "frozenlist-1.3.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:aff388be97ef2677ae185e72dc500d19ecaf31b698986800d3fc4f399a5e30a5"},
+ {file = "frozenlist-1.3.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:9f892d6a94ec5c7b785e548e42722e6f3a52f5f32a8461e82ac3e67a3bd073f1"},
+ {file = "frozenlist-1.3.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:e982878792c971cbd60ee510c4ee5bf089a8246226dea1f2138aa0bb67aff148"},
+ {file = "frozenlist-1.3.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:c6c321dd013e8fc20735b92cb4892c115f5cdb82c817b1e5b07f6b95d952b2f0"},
+ {file = "frozenlist-1.3.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:30530930410855c451bea83f7b272fb1c495ed9d5cc72895ac29e91279401db3"},
+ {file = "frozenlist-1.3.0-cp38-cp38-win32.whl", hash = "sha256:40ec383bc194accba825fbb7d0ef3dda5736ceab2375462f1d8672d9f6b68d07"},
+ {file = "frozenlist-1.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:f20baa05eaa2bcd5404c445ec51aed1c268d62600362dc6cfe04fae34a424bd9"},
+ {file = "frozenlist-1.3.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:0437fe763fb5d4adad1756050cbf855bbb2bf0d9385c7bb13d7a10b0dd550486"},
+ {file = "frozenlist-1.3.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b684c68077b84522b5c7eafc1dc735bfa5b341fb011d5552ebe0968e22ed641c"},
+ {file = "frozenlist-1.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:93641a51f89473837333b2f8100f3f89795295b858cd4c7d4a1f18e299dc0a4f"},
+ {file = "frozenlist-1.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d6d32ff213aef0fd0bcf803bffe15cfa2d4fde237d1d4838e62aec242a8362fa"},
+ {file = "frozenlist-1.3.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:31977f84828b5bb856ca1eb07bf7e3a34f33a5cddce981d880240ba06639b94d"},
+ {file = "frozenlist-1.3.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3c62964192a1c0c30b49f403495911298810bada64e4f03249ca35a33ca0417a"},
+ {file = "frozenlist-1.3.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4eda49bea3602812518765810af732229b4291d2695ed24a0a20e098c45a707b"},
+ {file = "frozenlist-1.3.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:acb267b09a509c1df5a4ca04140da96016f40d2ed183cdc356d237286c971b51"},
+ {file = "frozenlist-1.3.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:e1e26ac0a253a2907d654a37e390904426d5ae5483150ce3adedb35c8c06614a"},
+ {file = "frozenlist-1.3.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f96293d6f982c58ebebb428c50163d010c2f05de0cde99fd681bfdc18d4b2dc2"},
+ {file = "frozenlist-1.3.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:e84cb61b0ac40a0c3e0e8b79c575161c5300d1d89e13c0e02f76193982f066ed"},
+ {file = "frozenlist-1.3.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:ff9310f05b9d9c5c4dd472983dc956901ee6cb2c3ec1ab116ecdde25f3ce4951"},
+ {file = "frozenlist-1.3.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d26b650b71fdc88065b7a21f8ace70175bcf3b5bdba5ea22df4bfd893e795a3b"},
+ {file = "frozenlist-1.3.0-cp39-cp39-win32.whl", hash = "sha256:01a73627448b1f2145bddb6e6c2259988bb8aee0fb361776ff8604b99616cd08"},
+ {file = "frozenlist-1.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:772965f773757a6026dea111a15e6e2678fbd6216180f82a48a40b27de1ee2ab"},
+ {file = "frozenlist-1.3.0.tar.gz", hash = "sha256:ce6f2ba0edb7b0c1d8976565298ad2deba6f8064d2bebb6ffce2ca896eb35b0b"},
]
h11 = [
{file = "h11-0.12.0-py3-none-any.whl", hash = "sha256:36a3cb8c0a032f56e2da7084577878a035d3b61d104230d4bd49c0c6b555a9c6"},
@@ -1606,34 +1535,39 @@ hpack = [
{file = "hpack-4.0.0-py3-none-any.whl", hash = "sha256:84a076fad3dc9a9f8063ccb8041ef100867b1878b25ef0ee63847a5d53818a6c"},
{file = "hpack-4.0.0.tar.gz", hash = "sha256:fc41de0c63e687ebffde81187a948221294896f6bdc0ae2312708df339430095"},
]
-html2text = [
- {file = "html2text-2020.1.16-py3-none-any.whl", hash = "sha256:c7c629882da0cf377d66f073329ccf34a12ed2adf0169b9285ae4e63ef54c82b"},
- {file = "html2text-2020.1.16.tar.gz", hash = "sha256:e296318e16b059ddb97f7a8a1d6a5c1d7af4544049a01e261731d2d5cc277bbb"},
-]
httpcore = [
- {file = "httpcore-0.14.4-py3-none-any.whl", hash = "sha256:9410fe352bea732311f2b2bee0555c8cc5e62b9a73b9d3272fe125a2aa6eb28e"},
- {file = "httpcore-0.14.4.tar.gz", hash = "sha256:d4305811f604d3c2e22869147392f134796976ff946c96a8cfba87f4e0171d83"},
+ {file = "httpcore-0.14.7-py3-none-any.whl", hash = "sha256:47d772f754359e56dd9d892d9593b6f9870a37aeb8ba51e9a88b09b3d68cfade"},
+ {file = "httpcore-0.14.7.tar.gz", hash = "sha256:7503ec1c0f559066e7e39bc4003fd2ce023d01cf51793e3c173b864eb456ead1"},
]
httptools = [
- {file = "httptools-0.2.0-cp35-cp35m-macosx_10_14_x86_64.whl", hash = "sha256:79dbc21f3612a78b28384e989b21872e2e3cf3968532601544696e4ed0007ce5"},
- {file = "httptools-0.2.0-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:78d03dd39b09c99ec917d50189e6743adbfd18c15d5944392d2eabda688bf149"},
- {file = "httptools-0.2.0-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:a23166e5ae2775709cf4f7ad4c2048755ebfb272767d244e1a96d55ac775cca7"},
- {file = "httptools-0.2.0-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:3ab1f390d8867f74b3b5ee2a7ecc9b8d7f53750bd45714bf1cb72a953d7dfa77"},
- {file = "httptools-0.2.0-cp36-cp36m-win_amd64.whl", hash = "sha256:a7594f9a010cdf1e16a58b3bf26c9da39bbf663e3b8d46d39176999d71816658"},
- {file = "httptools-0.2.0-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:01b392a166adcc8bc2f526a939a8aabf89fe079243e1543fd0e7dc1b58d737cb"},
- {file = "httptools-0.2.0-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:80ffa04fe8c8dfacf6e4cef8277347d35b0442c581f5814f3b0cf41b65c43c6e"},
- {file = "httptools-0.2.0-cp37-cp37m-win_amd64.whl", hash = "sha256:d5682eeb10cca0606c4a8286a3391d4c3c5a36f0c448e71b8bd05be4e1694bfb"},
- {file = "httptools-0.2.0-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:a289c27ccae399a70eacf32df9a44059ca2ba4ac444604b00a19a6c1f0809943"},
- {file = "httptools-0.2.0-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:813871f961edea6cb2fe312f2d9b27d12a51ba92545380126f80d0de1917ea15"},
- {file = "httptools-0.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:cc9be041e428c10f8b6ab358c6b393648f9457094e1dcc11b4906026d43cd380"},
- {file = "httptools-0.2.0-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:b08d00d889a118f68f37f3c43e359aab24ee29eb2e3fe96d64c6a2ba8b9d6557"},
- {file = "httptools-0.2.0-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:fd3b8905e21431ad306eeaf56644a68fdd621bf8f3097eff54d0f6bdf7262065"},
- {file = "httptools-0.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:200fc1cdf733a9ff554c0bb97a4047785cfaad9875307d6087001db3eb2b417f"},
- {file = "httptools-0.2.0.tar.gz", hash = "sha256:94505026be56652d7a530ab03d89474dc6021019d6b8682281977163b3471ea0"},
+ {file = "httptools-0.3.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:4137137de8976511a392e27bfdcf231bd926ac13d375e0414e927b08217d779e"},
+ {file = "httptools-0.3.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9f475b642c48b1b78584bdd12a5143e2c512485664331eade9c29ef769a17598"},
+ {file = "httptools-0.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4687dfc116a9f1eb22a7d797f0dc6f6e17190d406ca4e729634b38aa98044b17"},
+ {file = "httptools-0.3.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:72ee0e3fb9c6437ab3ae34e9abee67fcee6876f4f58504e3f613dd5882aafdb7"},
+ {file = "httptools-0.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:3787c1f46e9722ef7f07ea5c76b0103037483d1b12e34a02c53ceca5afa4e09a"},
+ {file = "httptools-0.3.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:c0ac2e0ce6733c55858932e7d37fcc7b67ba6bb23e9648593c55f663de031b93"},
+ {file = "httptools-0.3.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79717080dc3f8b1eeb7f820b9b81528acbc04be6041f323fdd97550da2062575"},
+ {file = "httptools-0.3.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:eda95634027200f4b2a6d499e7c2e7fa9b8ee57e045dfda26958ea0af27c070b"},
+ {file = "httptools-0.3.0-cp36-cp36m-win_amd64.whl", hash = "sha256:3f82eb106e1474c63dba36a176067e65b48385f4cecddf3616411aa5d1fbdfec"},
+ {file = "httptools-0.3.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c14576b737d9e6e4f2a86af04918dbe9b62f57ce8102a8695c9a382dbe405c7f"},
+ {file = "httptools-0.3.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:113816f9af7dcfc4aa71ebb5354d77365f666ecf96ac7ff2aa1d24b6bca44165"},
+ {file = "httptools-0.3.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:b8ac7dee63af4346e02b1e6d32202e3b5b3706a9928bec6da6d7a5b066217422"},
+ {file = "httptools-0.3.0-cp37-cp37m-win_amd64.whl", hash = "sha256:04114db99605c9b56ea22a8ec4d7b1485b908128ed4f4a8f6438489c428da794"},
+ {file = "httptools-0.3.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6e676bc3bb911b11f3d7e2144b9a53600bf6b9b21e0e4437aa308e1eef094d97"},
+ {file = "httptools-0.3.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cdc3975db86c29817e6d13df14e037c931fc893a710fb71097777a4147090068"},
+ {file = "httptools-0.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8ac842df4fc3952efa7820b277961ea55e068bbc54cb59a0820400de7ae358d8"},
+ {file = "httptools-0.3.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:47dba2345aaa01b87e4981e8756af441349340708d5b60712c98c55a4d28f4af"},
+ {file = "httptools-0.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:5a836bd85ae1fb4304f674808488dae403e136d274aa5bafd0e6ee456f11c371"},
+ {file = "httptools-0.3.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:1a8f26327023fa1a947d36e60a0582149e182fbbc949c8a65ec8665754dbbe69"},
+ {file = "httptools-0.3.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:32a10a5903b5bc0eb647d01cd1e95bec3bb614a9bf53f0af1e01360b2debdf81"},
+ {file = "httptools-0.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:21e948034f70e47c8abfa2d5e6f1a5661f87a2cddc7bcc70f61579cc87897c70"},
+ {file = "httptools-0.3.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:074afd8afdeec0fa6786cd4a1676e0c0be23dc9a017a86647efa6b695168104f"},
+ {file = "httptools-0.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:2119fa619a4c53311f594f25c0205d619350fcb32140ec5057f861952e9b2b4f"},
+ {file = "httptools-0.3.0.tar.gz", hash = "sha256:3f9b4856d46ba1f0c850f4e84b264a9a8b4460acb20e865ec00978ad9fbaa4cf"},
]
httpx = [
- {file = "httpx-0.21.3-py3-none-any.whl", hash = "sha256:df9a0fd43fa79dbab411d83eb1ea6f7a525c96ad92e60c2d7f40388971b25777"},
- {file = "httpx-0.21.3.tar.gz", hash = "sha256:7a3eb67ef0b8abbd6d9402248ef2f84a76080fa1c839f8662e6eb385640e445a"},
+ {file = "httpx-0.22.0-py3-none-any.whl", hash = "sha256:e35e83d1d2b9b2a609ef367cc4c1e66fd80b750348b20cc9e19d1952fc2ca3f6"},
+ {file = "httpx-0.22.0.tar.gz", hash = "sha256:d8e778f76d9bbd46af49e7f062467e3157a5a3d2ae4876a4bbfd8a51ed9c9cb4"},
]
hypercorn = [
{file = "Hypercorn-0.13.2-py3-none-any.whl", hash = "sha256:ca18f91ab3fa823cbe9e949738f9f2cc07027cd647c80d8f93e4b1a2a175f112"},
@@ -1643,17 +1577,17 @@ hyperframe = [
{file = "hyperframe-6.0.1-py3-none-any.whl", hash = "sha256:0ec6bafd80d8ad2195c4f03aacba3a8265e57bc4cff261e802bf39970ed02a15"},
{file = "hyperframe-6.0.1.tar.gz", hash = "sha256:ae510046231dc8e9ecb1a6586f63d2347bf4c8905914aa84ba585ae85f28a914"},
]
+identify = [
+ {file = "identify-2.4.9-py2.py3-none-any.whl", hash = "sha256:bff7c4959d68510bc28b99d664b6a623e36c6eadc933f89a4e0a9ddff9b4fee4"},
+ {file = "identify-2.4.9.tar.gz", hash = "sha256:e926ae3b3dc142b6a7a9c65433eb14ccac751b724ee255f7c2ed3b5970d764fb"},
+]
idna = [
{file = "idna-3.3-py3-none-any.whl", hash = "sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff"},
{file = "idna-3.3.tar.gz", hash = "sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d"},
]
-imagesize = [
- {file = "imagesize-1.3.0-py2.py3-none-any.whl", hash = "sha256:1db2f82529e53c3e929e8926a1fa9235aa82d0bd0c580359c67ec31b2fddaa8c"},
- {file = "imagesize-1.3.0.tar.gz", hash = "sha256:cd1750d452385ca327479d45b64d9c7729ecf0b3969a58148298c77092261f9d"},
-]
importlib-metadata = [
- {file = "importlib_metadata-4.10.0-py3-none-any.whl", hash = "sha256:b7cf7d3fef75f1e4c80a96ca660efbd51473d7e8f39b5ab9210febc7809012a4"},
- {file = "importlib_metadata-4.10.0.tar.gz", hash = "sha256:92a8b58ce734b2a4494878e0ecf7d79ccd7a128b5fc6014c401e0b61f006f0f6"},
+ {file = "importlib_metadata-4.11.0-py3-none-any.whl", hash = "sha256:6affcdb3aec542dd98df8211e730bba6c5f2bec8288d47bacacde898f548c9ad"},
+ {file = "importlib_metadata-4.11.0.tar.gz", hash = "sha256:9e5e553bbba1843cb4a00823014b907616be46ee503d2b9ba001d214a8da218f"},
]
iniconfig = [
{file = "iniconfig-1.1.1-py2.py3-none-any.whl", hash = "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3"},
@@ -1672,8 +1606,8 @@ jinja2 = [
{file = "Jinja2-3.0.3.tar.gz", hash = "sha256:611bb273cd68f3b993fabdc4064fc858c5b47a973cb5aa7999ec1ba405c87cd7"},
]
loguru = [
- {file = "loguru-0.5.3-py3-none-any.whl", hash = "sha256:f8087ac396b5ee5f67c963b495d615ebbceac2796379599820e324419d53667c"},
- {file = "loguru-0.5.3.tar.gz", hash = "sha256:b28e72ac7a98be3d28ad28570299a393dfcd32e5e3f6a353dec94675767b6319"},
+ {file = "loguru-0.6.0-py3-none-any.whl", hash = "sha256:4e2414d534a2ab57573365b3e6d0234dfb1d84b68b7f3b948e6fb743860a77c3"},
+ {file = "loguru-0.6.0.tar.gz", hash = "sha256:066bd06758d0a513e9836fd9c6b5a75bfb3fd36841f4b996bc60b547a309d41c"},
]
markupsafe = [
{file = "MarkupSafe-2.0.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d8446c54dc28c01e5a2dbac5a25f071f6653e6e40f3a8818e8b45d790fe6ef53"},
@@ -1824,6 +1758,11 @@ mypy-extensions = [
{file = "mypy_extensions-0.4.3-py2.py3-none-any.whl", hash = "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d"},
{file = "mypy_extensions-0.4.3.tar.gz", hash = "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8"},
]
+nb-autodoc = []
+nodeenv = [
+ {file = "nodeenv-1.6.0-py2.py3-none-any.whl", hash = "sha256:621e6b7076565ddcacd2db0294c0381e01fd28945ab36bcf00f41c5daf63bef7"},
+ {file = "nodeenv-1.6.0.tar.gz", hash = "sha256:3ef13ff90291ba2a4a7a4ff9a979b63ffdd00a464dbe04acf0ea6471517a4c2b"},
+]
nonebug = []
packaging = [
{file = "packaging-21.3-py3-none-any.whl", hash = "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522"},
@@ -1834,13 +1773,17 @@ pathspec = [
{file = "pathspec-0.9.0.tar.gz", hash = "sha256:e564499435a2673d586f6b2130bb5b95f04a3ba06f81b8f895b651a3c76aabb1"},
]
platformdirs = [
- {file = "platformdirs-2.4.1-py3-none-any.whl", hash = "sha256:1d7385c7db91728b83efd0ca99a5afb296cab9d0ed8313a45ed8ba17967ecfca"},
- {file = "platformdirs-2.4.1.tar.gz", hash = "sha256:440633ddfebcc36264232365d7840a970e75e1018d15b4327d11f91909045fda"},
+ {file = "platformdirs-2.5.0-py3-none-any.whl", hash = "sha256:30671902352e97b1eafd74ade8e4a694782bd3471685e78c32d0fdfd3aa7e7bb"},
+ {file = "platformdirs-2.5.0.tar.gz", hash = "sha256:8ec11dfba28ecc0715eb5fb0147a87b1bf325f349f3da9aab2cd6b50b96b692b"},
]
pluggy = [
{file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"},
{file = "pluggy-1.0.0.tar.gz", hash = "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159"},
]
+pre-commit = [
+ {file = "pre_commit-2.17.0-py2.py3-none-any.whl", hash = "sha256:725fa7459782d7bec5ead072810e47351de01709be838c2ce1726b9591dad616"},
+ {file = "pre_commit-2.17.0.tar.gz", hash = "sha256:c1a8040ff15ad3d648c70cc3e55b93e4d2d5b687320955505587fd79bbaed06a"},
+]
priority = [
{file = "priority-2.0.0-py3-none-any.whl", hash = "sha256:6f8eefce5f3ad59baf2c080a664037bb4725cd0a790d53d59ab4059288faf6aa"},
{file = "priority-2.0.0.tar.gz", hash = "sha256:c965d54f1b8d0d0b19479db3924c7c36cf672dbf2aec92d43fbdaf4492ba18c0"},
@@ -1923,41 +1866,37 @@ pydantic = [
{file = "pydantic-1.9.0-py3-none-any.whl", hash = "sha256:085ca1de245782e9b46cefcf99deecc67d418737a1fd3f6a4f511344b613a5b3"},
{file = "pydantic-1.9.0.tar.gz", hash = "sha256:742645059757a56ecd886faf4ed2441b9c0cd406079c2b4bee51bcc3fbcd510a"},
]
-pydash = [
- {file = "pydash-5.1.0-py3-none-any.whl", hash = "sha256:ced4fedb163eb07fbee376e474bca74029eb9fab215614449fe13164f71dd9e3"},
- {file = "pydash-5.1.0.tar.gz", hash = "sha256:1b2b050ac1bae049cd07f5920b14fabbe52638f485d9ada1eb115a9eebff6835"},
-]
-pygments = [
- {file = "Pygments-2.11.2-py3-none-any.whl", hash = "sha256:44238f1b60a76d78fc8ca0528ee429702aae011c265fe6a8dd8b63049ae41c65"},
- {file = "Pygments-2.11.2.tar.gz", hash = "sha256:4e426f72023d88d03b2fa258de560726ce890ff3b630f88c21cbb8b2503b8c6a"},
-]
pygtrie = [
{file = "pygtrie-2.4.2.tar.gz", hash = "sha256:43205559d28863358dbbf25045029f58e2ab357317a59b11f11ade278ac64692"},
]
pyparsing = [
- {file = "pyparsing-3.0.6-py3-none-any.whl", hash = "sha256:04ff808a5b90911829c55c4e26f75fa5ca8a2f5f36aa3a51f68e27033341d3e4"},
- {file = "pyparsing-3.0.6.tar.gz", hash = "sha256:d9bdec0013ef1eb5a84ab39a3b3868911598afa494f5faa038647101504e2b81"},
+ {file = "pyparsing-3.0.7-py3-none-any.whl", hash = "sha256:a6c06a88f252e6c322f65faf8f418b16213b51bdfaece0524c1c1bc30c63c484"},
+ {file = "pyparsing-3.0.7.tar.gz", hash = "sha256:18ee9022775d270c55187733956460083db60b37d0d0fb357445f3094eed3eea"},
]
pytest = [
- {file = "pytest-6.2.5-py3-none-any.whl", hash = "sha256:7310f8d27bc79ced999e760ca304d69f6ba6c6649c0b60fb0e04a4a77cacc134"},
- {file = "pytest-6.2.5.tar.gz", hash = "sha256:131b36680866a76e6781d13f101efb86cf674ebb9762eb70d3082b6f29889e89"},
+ {file = "pytest-7.0.1-py3-none-any.whl", hash = "sha256:9ce3ff477af913ecf6321fe337b93a2c0dcf2a0a1439c43f5452112c1e4280db"},
+ {file = "pytest-7.0.1.tar.gz", hash = "sha256:e30905a0c131d3d94b89624a1cc5afec3e0ba2fbdb151867d8e0ebd49850f171"},
]
pytest-asyncio = [
- {file = "pytest-asyncio-0.16.0.tar.gz", hash = "sha256:7496c5977ce88c34379df64a66459fe395cd05543f0a2f837016e7144391fcfb"},
- {file = "pytest_asyncio-0.16.0-py3-none-any.whl", hash = "sha256:5f2a21273c47b331ae6aa5b36087047b4899e40f03f18397c0e65fa5cca54e9b"},
+ {file = "pytest-asyncio-0.18.1.tar.gz", hash = "sha256:c43fcdfea2335dd82ffe0f2774e40285ddfea78a8e81e56118d47b6a90fbb09e"},
+ {file = "pytest_asyncio-0.18.1-py3-none-any.whl", hash = "sha256:c9ec48e8bbf5cc62755e18c4d8bc6907843ec9c5f4ac8f61464093baeba24a7e"},
]
pytest-cov = [
{file = "pytest-cov-3.0.0.tar.gz", hash = "sha256:e7f0f5b1617d2210a2cabc266dfe2f4c75a8d32fb89eafb7ad9d06f6d076d470"},
{file = "pytest_cov-3.0.0-py3-none-any.whl", hash = "sha256:578d5d15ac4a25e5f961c938b85a05b09fdaae9deef3bb6de9a6e766622ca7a6"},
]
+pytest-forked = [
+ {file = "pytest-forked-1.4.0.tar.gz", hash = "sha256:8b67587c8f98cbbadfdd804539ed5455b6ed03802203485dd2f53c1422d7440e"},
+ {file = "pytest_forked-1.4.0-py3-none-any.whl", hash = "sha256:bbbb6717efc886b9d64537b41fb1497cfaf3c9601276be8da2cccfea5a3c8ad8"},
+]
+pytest-xdist = [
+ {file = "pytest-xdist-2.5.0.tar.gz", hash = "sha256:4580deca3ff04ddb2ac53eba39d76cb5dd5edeac050cb6fbc768b0dd712b4edf"},
+ {file = "pytest_xdist-2.5.0-py3-none-any.whl", hash = "sha256:6fe5c74fec98906deb8f2d2b616b5c782022744978e7bd4695d39c8f42d0ce65"},
+]
python-dotenv = [
{file = "python-dotenv-0.19.2.tar.gz", hash = "sha256:a5de49a31e953b45ff2d2fd434bbc2670e8db5273606c1e737cc6b93eff3655f"},
{file = "python_dotenv-0.19.2-py2.py3-none-any.whl", hash = "sha256:32b2bdc1873fd3a3c346da1c6db83d0053c3c62f28f1f38516070c4c8971b1d3"},
]
-pytz = [
- {file = "pytz-2021.3-py2.py3-none-any.whl", hash = "sha256:3672058bc3453457b622aab7a1c3bfd5ab0bdae451512f6cf25f64ed37f5b87c"},
- {file = "pytz-2021.3.tar.gz", hash = "sha256:acad2d8b20a1af07d4e4c9d2e9285c5ed9104354062f275f3fcd88dcef4f1326"},
-]
pyyaml = [
{file = "PyYAML-6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53"},
{file = "PyYAML-6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9df7ed3b3d2e0ecfe09e14741b857df43adb5a3ddadc919a2d94fbdf78fea53c"},
@@ -1994,8 +1933,8 @@ pyyaml = [
{file = "PyYAML-6.0.tar.gz", hash = "sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2"},
]
quart = [
- {file = "Quart-0.16.2-py3-none-any.whl", hash = "sha256:c1bcc4989c7e0b6c3301df10b6285c09ee0a1d75fa4cebd936f0d17312294e36"},
- {file = "Quart-0.16.2.tar.gz", hash = "sha256:356f4fd795fbf5a7a97bdeb7ca908b5051d0e6e4c0499b2b7c30b743a6938a7e"},
+ {file = "Quart-0.16.3-py3-none-any.whl", hash = "sha256:556d07f24a8789db3b2dca78e0fe764c5a97a75ca800b1b7e5c4cfb7c3da2ea1"},
+ {file = "Quart-0.16.3.tar.gz", hash = "sha256:16521d8cf062461b158433d820fff509f98fb997ae6c28740eda061d9cba7d5e"},
]
requests = [
{file = "requests-2.27.1-py2.py3-none-any.whl", hash = "sha256:f22fa1e554c9ddfd16e6e41ac79759e17be9e492b3587efa038054674760e72d"},
@@ -2005,97 +1944,67 @@ rfc3986 = [
{file = "rfc3986-1.5.0-py2.py3-none-any.whl", hash = "sha256:a86d6e1f5b1dc238b218b012df0aa79409667bb209e58da56d0b94704e712a97"},
{file = "rfc3986-1.5.0.tar.gz", hash = "sha256:270aaf10d87d0d4e095063c65bf3ddbc6ee3d0b226328ce21e036f946e421835"},
]
+six = [
+ {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"},
+ {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"},
+]
sniffio = [
{file = "sniffio-1.2.0-py3-none-any.whl", hash = "sha256:471b71698eac1c2112a40ce2752bb2f4a4814c22a54a3eed3676bc0f5ca9f663"},
{file = "sniffio-1.2.0.tar.gz", hash = "sha256:c4666eecec1d3f50960c6bdf61ab7bc350648da6c126e3cf6898d8cd4ddcd3de"},
]
-snowballstemmer = [
- {file = "snowballstemmer-2.2.0-py2.py3-none-any.whl", hash = "sha256:c8e1716e83cc398ae16824e5572ae04e0d9fc2c6b985fb0f900f5f0c96ecba1a"},
- {file = "snowballstemmer-2.2.0.tar.gz", hash = "sha256:09b16deb8547d3412ad7b590689584cd0fe25ec8db3be37788be3810cbf19cb1"},
-]
-sphinx = [
- {file = "Sphinx-4.3.2-py3-none-any.whl", hash = "sha256:6a11ea5dd0bdb197f9c2abc2e0ce73e01340464feaece525e64036546d24c851"},
- {file = "Sphinx-4.3.2.tar.gz", hash = "sha256:0a8836751a68306b3fe97ecbe44db786f8479c3bf4b80e3a7f5c838657b4698c"},
-]
-sphinx-markdown-builder = []
-sphinxcontrib-applehelp = [
- {file = "sphinxcontrib-applehelp-1.0.2.tar.gz", hash = "sha256:a072735ec80e7675e3f432fcae8610ecf509c5f1869d17e2eecff44389cdbc58"},
- {file = "sphinxcontrib_applehelp-1.0.2-py2.py3-none-any.whl", hash = "sha256:806111e5e962be97c29ec4c1e7fe277bfd19e9652fb1a4392105b43e01af885a"},
-]
-sphinxcontrib-devhelp = [
- {file = "sphinxcontrib-devhelp-1.0.2.tar.gz", hash = "sha256:ff7f1afa7b9642e7060379360a67e9c41e8f3121f2ce9164266f61b9f4b338e4"},
- {file = "sphinxcontrib_devhelp-1.0.2-py2.py3-none-any.whl", hash = "sha256:8165223f9a335cc1af7ffe1ed31d2871f325254c0423bc0c4c7cd1c1e4734a2e"},
-]
-sphinxcontrib-htmlhelp = [
- {file = "sphinxcontrib-htmlhelp-2.0.0.tar.gz", hash = "sha256:f5f8bb2d0d629f398bf47d0d69c07bc13b65f75a81ad9e2f71a63d4b7a2f6db2"},
- {file = "sphinxcontrib_htmlhelp-2.0.0-py2.py3-none-any.whl", hash = "sha256:d412243dfb797ae3ec2b59eca0e52dac12e75a241bf0e4eb861e450d06c6ed07"},
-]
-sphinxcontrib-jsmath = [
- {file = "sphinxcontrib-jsmath-1.0.1.tar.gz", hash = "sha256:a9925e4a4587247ed2191a22df5f6970656cb8ca2bd6284309578f2153e0c4b8"},
- {file = "sphinxcontrib_jsmath-1.0.1-py2.py3-none-any.whl", hash = "sha256:2ec2eaebfb78f3f2078e73666b1415417a116cc848b72e5172e596c871103178"},
-]
-sphinxcontrib-qthelp = [
- {file = "sphinxcontrib-qthelp-1.0.3.tar.gz", hash = "sha256:4c33767ee058b70dba89a6fc5c1892c0d57a54be67ddd3e7875a18d14cba5a72"},
- {file = "sphinxcontrib_qthelp-1.0.3-py2.py3-none-any.whl", hash = "sha256:bd9fc24bcb748a8d51fd4ecaade681350aa63009a347a8c14e637895444dfab6"},
-]
-sphinxcontrib-serializinghtml = [
- {file = "sphinxcontrib-serializinghtml-1.1.5.tar.gz", hash = "sha256:aa5f6de5dfdf809ef505c4895e51ef5c9eac17d0f287933eb49ec495280b6952"},
- {file = "sphinxcontrib_serializinghtml-1.1.5-py2.py3-none-any.whl", hash = "sha256:352a9a00ae864471d3a7ead8d7d79f5fc0b57e8b3f95e9867eb9eb28999b92fd"},
-]
starlette = [
- {file = "starlette-0.16.0-py3-none-any.whl", hash = "sha256:38eb24bf705a2c317e15868e384c1b8a12ca396e5a3c3a003db7e667c43f939f"},
- {file = "starlette-0.16.0.tar.gz", hash = "sha256:e1904b5d0007aee24bdd3c43994be9b3b729f4f58e740200de1d623f8c3a8870"},
+ {file = "starlette-0.17.1-py3-none-any.whl", hash = "sha256:26a18cbda5e6b651c964c12c88b36d9898481cd428ed6e063f5f29c418f73050"},
+ {file = "starlette-0.17.1.tar.gz", hash = "sha256:57eab3cc975a28af62f6faec94d355a410634940f10b30d68d31cb5ec1b44ae8"},
]
toml = [
{file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"},
{file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"},
]
tomli = [
- {file = "tomli-1.2.3-py3-none-any.whl", hash = "sha256:e3069e4be3ead9668e21cb9b074cd948f7b3113fd9c8bba083f48247aab8b11c"},
- {file = "tomli-1.2.3.tar.gz", hash = "sha256:05b6166bff487dc068d322585c7ea4ef78deed501cc124060e0f238e89a9231f"},
+ {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"},
+ {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"},
]
tomlkit = [
- {file = "tomlkit-0.7.2-py2.py3-none-any.whl", hash = "sha256:173ad840fa5d2aac140528ca1933c29791b79a374a0861a80347f42ec9328117"},
- {file = "tomlkit-0.7.2.tar.gz", hash = "sha256:d7a454f319a7e9bd2e249f239168729327e4dd2d27b17dc68be264ad1ce36754"},
+ {file = "tomlkit-0.9.2-py3-none-any.whl", hash = "sha256:daf4f9c5f2fbf6b861d6adfc51940b98dee36c13e1d88749a6dc9fb280fff304"},
+ {file = "tomlkit-0.9.2.tar.gz", hash = "sha256:ebd982d61446af95a1e082b103e250cb9e6d152eae2581d4a07d31a70b34ab0f"},
]
typed-ast = [
- {file = "typed_ast-1.5.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5d8314c92414ce7481eee7ad42b353943679cf6f30237b5ecbf7d835519e1212"},
- {file = "typed_ast-1.5.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b53ae5de5500529c76225d18eeb060efbcec90ad5e030713fe8dab0fb4531631"},
- {file = "typed_ast-1.5.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:24058827d8f5d633f97223f5148a7d22628099a3d2efe06654ce872f46f07cdb"},
- {file = "typed_ast-1.5.1-cp310-cp310-win_amd64.whl", hash = "sha256:a6d495c1ef572519a7bac9534dbf6d94c40e5b6a608ef41136133377bba4aa08"},
- {file = "typed_ast-1.5.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:de4ecae89c7d8b56169473e08f6bfd2df7f95015591f43126e4ea7865928677e"},
- {file = "typed_ast-1.5.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:256115a5bc7ea9e665c6314ed6671ee2c08ca380f9d5f130bd4d2c1f5848d695"},
- {file = "typed_ast-1.5.1-cp36-cp36m-win_amd64.whl", hash = "sha256:7c42707ab981b6cf4b73490c16e9d17fcd5227039720ca14abe415d39a173a30"},
- {file = "typed_ast-1.5.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:71dcda943a471d826ea930dd449ac7e76db7be778fcd722deb63642bab32ea3f"},
- {file = "typed_ast-1.5.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:4f30a2bcd8e68adbb791ce1567fdb897357506f7ea6716f6bbdd3053ac4d9471"},
- {file = "typed_ast-1.5.1-cp37-cp37m-win_amd64.whl", hash = "sha256:ca9e8300d8ba0b66d140820cf463438c8e7b4cdc6fd710c059bfcfb1531d03fb"},
- {file = "typed_ast-1.5.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9caaf2b440efb39ecbc45e2fabde809cbe56272719131a6318fd9bf08b58e2cb"},
- {file = "typed_ast-1.5.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c9bcad65d66d594bffab8575f39420fe0ee96f66e23c4d927ebb4e24354ec1af"},
- {file = "typed_ast-1.5.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:591bc04e507595887160ed7aa8d6785867fb86c5793911be79ccede61ae96f4d"},
- {file = "typed_ast-1.5.1-cp38-cp38-win_amd64.whl", hash = "sha256:a80d84f535642420dd17e16ae25bb46c7f4c16ee231105e7f3eb43976a89670a"},
- {file = "typed_ast-1.5.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:38cf5c642fa808300bae1281460d4f9b7617cf864d4e383054a5ef336e344d32"},
- {file = "typed_ast-1.5.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5b6ab14c56bc9c7e3c30228a0a0b54b915b1579613f6e463ba6f4eb1382e7fd4"},
- {file = "typed_ast-1.5.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a2b8d7007f6280e36fa42652df47087ac7b0a7d7f09f9468f07792ba646aac2d"},
- {file = "typed_ast-1.5.1-cp39-cp39-win_amd64.whl", hash = "sha256:b6d17f37f6edd879141e64a5db17b67488cfeffeedad8c5cec0392305e9bc775"},
- {file = "typed_ast-1.5.1.tar.gz", hash = "sha256:484137cab8ecf47e137260daa20bafbba5f4e3ec7fda1c1e69ab299b75fa81c5"},
+ {file = "typed_ast-1.5.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:183b183b7771a508395d2cbffd6db67d6ad52958a5fdc99f450d954003900266"},
+ {file = "typed_ast-1.5.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:676d051b1da67a852c0447621fdd11c4e104827417bf216092ec3e286f7da596"},
+ {file = "typed_ast-1.5.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bc2542e83ac8399752bc16e0b35e038bdb659ba237f4222616b4e83fb9654985"},
+ {file = "typed_ast-1.5.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:74cac86cc586db8dfda0ce65d8bcd2bf17b58668dfcc3652762f3ef0e6677e76"},
+ {file = "typed_ast-1.5.2-cp310-cp310-win_amd64.whl", hash = "sha256:18fe320f354d6f9ad3147859b6e16649a0781425268c4dde596093177660e71a"},
+ {file = "typed_ast-1.5.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:31d8c6b2df19a777bc8826770b872a45a1f30cfefcfd729491baa5237faae837"},
+ {file = "typed_ast-1.5.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:963a0ccc9a4188524e6e6d39b12c9ca24cc2d45a71cfdd04a26d883c922b4b78"},
+ {file = "typed_ast-1.5.2-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:0eb77764ea470f14fcbb89d51bc6bbf5e7623446ac4ed06cbd9ca9495b62e36e"},
+ {file = "typed_ast-1.5.2-cp36-cp36m-win_amd64.whl", hash = "sha256:294a6903a4d087db805a7656989f613371915fc45c8cc0ddc5c5a0a8ad9bea4d"},
+ {file = "typed_ast-1.5.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:26a432dc219c6b6f38be20a958cbe1abffcc5492821d7e27f08606ef99e0dffd"},
+ {file = "typed_ast-1.5.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c7407cfcad702f0b6c0e0f3e7ab876cd1d2c13b14ce770e412c0c4b9728a0f88"},
+ {file = "typed_ast-1.5.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f30ddd110634c2d7534b2d4e0e22967e88366b0d356b24de87419cc4410c41b7"},
+ {file = "typed_ast-1.5.2-cp37-cp37m-win_amd64.whl", hash = "sha256:8c08d6625bb258179b6e512f55ad20f9dfef019bbfbe3095247401e053a3ea30"},
+ {file = "typed_ast-1.5.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:90904d889ab8e81a956f2c0935a523cc4e077c7847a836abee832f868d5c26a4"},
+ {file = "typed_ast-1.5.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:bbebc31bf11762b63bf61aaae232becb41c5bf6b3461b80a4df7e791fabb3aca"},
+ {file = "typed_ast-1.5.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c29dd9a3a9d259c9fa19d19738d021632d673f6ed9b35a739f48e5f807f264fb"},
+ {file = "typed_ast-1.5.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:58ae097a325e9bb7a684572d20eb3e1809802c5c9ec7108e85da1eb6c1a3331b"},
+ {file = "typed_ast-1.5.2-cp38-cp38-win_amd64.whl", hash = "sha256:da0a98d458010bf4fe535f2d1e367a2e2060e105978873c04c04212fb20543f7"},
+ {file = "typed_ast-1.5.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:33b4a19ddc9fc551ebabca9765d54d04600c4a50eda13893dadf67ed81d9a098"},
+ {file = "typed_ast-1.5.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1098df9a0592dd4c8c0ccfc2e98931278a6c6c53cb3a3e2cf7e9ee3b06153344"},
+ {file = "typed_ast-1.5.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42c47c3b43fe3a39ddf8de1d40dbbfca60ac8530a36c9b198ea5b9efac75c09e"},
+ {file = "typed_ast-1.5.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f290617f74a610849bd8f5514e34ae3d09eafd521dceaa6cf68b3f4414266d4e"},
+ {file = "typed_ast-1.5.2-cp39-cp39-win_amd64.whl", hash = "sha256:df05aa5b241e2e8045f5f4367a9f6187b09c4cdf8578bb219861c4e27c443db5"},
+ {file = "typed_ast-1.5.2.tar.gz", hash = "sha256:525a2d4088e70a9f75b08b3f87a51acc9cde640e19cc523c7e41aa355564ae27"},
]
typing-extensions = [
- {file = "typing_extensions-4.0.1-py3-none-any.whl", hash = "sha256:7f001e5ac290a0c0401508864c7ec868be4e701886d5b573a9528ed3973d9d3b"},
- {file = "typing_extensions-4.0.1.tar.gz", hash = "sha256:4ca091dea149f945ec56afb48dae714f21e8692ef22a395223bcd328961b6a0e"},
-]
-unify = [
- {file = "unify-0.5.tar.gz", hash = "sha256:8ddce812b2457212b7598fe574c9e6eb3ad69710f445391338270c7f8a71723c"},
-]
-untokenize = [
- {file = "untokenize-0.1.1.tar.gz", hash = "sha256:3865dbbbb8efb4bb5eaa72f1be7f3e0be00ea8b7f125c69cbd1f5fda926f37a2"},
+ {file = "typing_extensions-4.1.0-py3-none-any.whl", hash = "sha256:c13180fbaa7cd97065a4915ceba012bdb31dc34743e63ddee16360161d358414"},
+ {file = "typing_extensions-4.1.0.tar.gz", hash = "sha256:ba97c5143e5bb067b57793c726dd857b1671d4b02ced273ca0538e71ff009095"},
]
urllib3 = [
- {file = "urllib3-1.26.7-py2.py3-none-any.whl", hash = "sha256:c4fdf4019605b6e5423637e01bc9fe4daef873709a7973e195ceba0a62bbc844"},
- {file = "urllib3-1.26.7.tar.gz", hash = "sha256:4987c65554f7a2dbf30c18fd48778ef124af6fab771a377103da0585e2336ece"},
+ {file = "urllib3-1.26.8-py2.py3-none-any.whl", hash = "sha256:000ca7f471a233c2251c6c7023ee85305721bfdf18621ebff4fd17a8653427ed"},
+ {file = "urllib3-1.26.8.tar.gz", hash = "sha256:0e7c33d9a63e7ddfcb86780aac87befc2fbddf46c58dbb487e0855f7ceec283c"},
]
uvicorn = [
- {file = "uvicorn-0.15.0-py3-none-any.whl", hash = "sha256:17f898c64c71a2640514d4089da2689e5db1ce5d4086c2d53699bf99513421c1"},
- {file = "uvicorn-0.15.0.tar.gz", hash = "sha256:d9a3c0dd1ca86728d3e235182683b4cf94cd53a867c288eaeca80ee781b2caff"},
+ {file = "uvicorn-0.17.4-py3-none-any.whl", hash = "sha256:e85872d84fb651cccc4c5d2a71cf7ead055b8fb4d8f1e78e36092282c0cf2aec"},
+ {file = "uvicorn-0.17.4.tar.gz", hash = "sha256:25850bbc86195a71a6477b3e4b3b7b4c861fb687fb96912972ce5324472b1011"},
]
uvloop = [
{file = "uvloop-0.16.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:6224f1401025b748ffecb7a6e2652b17768f30b1a6a3f7b44660e5b5b690b12d"},
@@ -2115,6 +2024,10 @@ uvloop = [
{file = "uvloop-0.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1e5f2e2ff51aefe6c19ee98af12b4ae61f5be456cd24396953244a30880ad861"},
{file = "uvloop-0.16.0.tar.gz", hash = "sha256:f74bc20c7b67d1c27c72601c78cf95be99d5c2cdd4514502b4f3eb0933ff1228"},
]
+virtualenv = [
+ {file = "virtualenv-20.13.1-py2.py3-none-any.whl", hash = "sha256:45e1d053cad4cd453181ae877c4ffc053546ae99e7dd049b9ff1d9be7491abf7"},
+ {file = "virtualenv-20.13.1.tar.gz", hash = "sha256:e0621bcbf4160e4e1030f05065c8834b4e93f4fcc223255db2a823440aca9c14"},
+]
watchgod = [
{file = "watchgod-0.7-py3-none-any.whl", hash = "sha256:d6c1ea21df37847ac0537ca0d6c2f4cdf513562e95f77bb93abbcf05573407b7"},
{file = "watchgod-0.7.tar.gz", hash = "sha256:48140d62b0ebe9dd9cf8381337f06351e1f2e70b2203fa9c6eff4e572ca84f29"},
@@ -2170,21 +2083,17 @@ websockets = [
{file = "websockets-10.1.tar.gz", hash = "sha256:181d2b25de5a437b36aefedaf006ecb6fa3aa1328ec0236cdde15f32f9d3ff6d"},
]
werkzeug = [
- {file = "Werkzeug-2.0.2-py3-none-any.whl", hash = "sha256:63d3dc1cf60e7b7e35e97fa9861f7397283b75d765afcaefd993d6046899de8f"},
- {file = "Werkzeug-2.0.2.tar.gz", hash = "sha256:aa2bb6fc8dee8d6c504c0ac1e7f5f7dc5810a9903e793b6f715a9f015bdadb9a"},
+ {file = "Werkzeug-2.0.3-py3-none-any.whl", hash = "sha256:1421ebfc7648a39a5c58c601b154165d05cf47a3cd0ccb70857cbdacf6c8f2b8"},
+ {file = "Werkzeug-2.0.3.tar.gz", hash = "sha256:b863f8ff057c522164b6067c9e28b041161b4be5ba4d0daceeaa50a163822d3c"},
]
win32-setctime = [
- {file = "win32_setctime-1.0.4-py3-none-any.whl", hash = "sha256:7964234073ad9bc7a689ef2ebe6ce931976b644fe73fd50cf7729c996b7d8385"},
- {file = "win32_setctime-1.0.4.tar.gz", hash = "sha256:2b72b798fdc1d909fb3cc0d25e0be52a42f4848857e3588dd3947c6a18b42609"},
+ {file = "win32_setctime-1.1.0-py3-none-any.whl", hash = "sha256:231db239e959c2fe7eb1d7dc129f11172354f98361c4fa2d6d2d7e278baa8aad"},
+ {file = "win32_setctime-1.1.0.tar.gz", hash = "sha256:15cf5750465118d6929ae4de4eb46e8edae9a5634350c01ba582df868e932cb2"},
]
wsproto = [
{file = "wsproto-1.0.0-py3-none-any.whl", hash = "sha256:d8345d1808dd599b5ffb352c25a367adb6157e664e140dbecba3f9bc007edb9f"},
{file = "wsproto-1.0.0.tar.gz", hash = "sha256:868776f8456997ad0d9720f7322b746bbe9193751b5b290b7f924659377c8c38"},
]
-yapf = [
- {file = "yapf-0.32.0-py2.py3-none-any.whl", hash = "sha256:8fea849025584e486fd06d6ba2bed717f396080fd3cc236ba10cb97c4c51cf32"},
- {file = "yapf-0.32.0.tar.gz", hash = "sha256:a3f5085d37ef7e3e004c4ba9f9b3e40c54ff1901cd111f05145ae313a7c67d1b"},
-]
yarl = [
{file = "yarl-1.7.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f2a8508f7350512434e41065684076f640ecce176d262a7d54f0da41d99c5a95"},
{file = "yarl-1.7.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:da6df107b9ccfe52d3a48165e48d72db0eca3e3029b5b8cb4fe6ee3cb870ba8b"},
diff --git a/pyproject.toml b/pyproject.toml
index 2b4ce0a9..6b33411a 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -24,25 +24,27 @@ include = ["nonebot/py.typed"]
[tool.poetry.dependencies]
python = "^3.7.3"
yarl = "^1.7.2"
-loguru = "^0.5.1"
+loguru = "^0.6.0"
pygtrie = "^2.4.1"
-tomlkit = "^0.7.0"
-fastapi = "^0.70.0"
+tomlkit = "^0.9.0"
+fastapi = "^0.73.0"
typing-extensions = ">=3.10.0,<5.0.0"
Quart = { version = "^0.16.0", optional = true }
-websockets = { version=">=9.1", optional = true }
+websockets = { version="^10.0", optional = true }
pydantic = { version = "~1.9.0", extras = ["dotenv"] }
-uvicorn = { version = "^0.15.0", extras = ["standard"] }
+uvicorn = { version = "^0.17.0", extras = ["standard"] }
aiohttp = { version = "^3.7.4", extras = ["speedups"], optional = true }
httpx = { version = ">=0.20.0, <1.0.0", extras = ["http2"], optional = true }
[tool.poetry.dev-dependencies]
-sphinx = "^4.1.1"
isort = "^5.10.1"
-black = "^21.11b1"
+black = "^22.1.0"
pytest-cov = "^3.0.0"
+pre-commit = "^2.16.0"
+pytest-xdist = "^2.5.0"
+pytest-asyncio = "^0.18.1"
nonebug = { git = "https://github.com/nonebot/nonebug.git" }
-sphinx-markdown-builder = { git = "https://github.com/nonebot/sphinx-markdown-builder.git" }
+nb-autodoc = { git = "https://github.com/nonebot/nb-autodoc.git" }
[tool.poetry.extras]
quart = ["quart"]
@@ -57,6 +59,7 @@ all = ["quart", "aiohttp", "httpx", "websockets"]
# default = true
[tool.pytest.ini_options]
+asyncio_mode = "auto"
addopts = "--cov=nonebot --cov-report=term-missing"
[tool.black]
@@ -68,11 +71,11 @@ extend-exclude = '''
[tool.isort]
profile = "black"
-line_length = 80
+line_length = 88
length_sort = true
skip_gitignore = true
force_sort_within_sections = true
-known_local_folder = ["nonebot"]
+src_paths = ["nonebot", "tests"]
extra_standard_library = ["typing_extensions"]
[build-system]
diff --git a/tests/.isort.cfg b/tests/.isort.cfg
deleted file mode 100644
index 68396bdd..00000000
--- a/tests/.isort.cfg
+++ /dev/null
@@ -1,8 +0,0 @@
-[settings]
-profile=black
-line_length=80
-length_sort=true
-skip_gitignore=true
-force_sort_within_sections=true
-known_local_folder=plugins
-extra_standard_library=typing_extensions
diff --git a/tests/plugins/param/param_state.py b/tests/plugins/param/param_state.py
index beec94b8..636015fb 100644
--- a/tests/plugins/param/param_state.py
+++ b/tests/plugins/param/param_state.py
@@ -3,7 +3,6 @@ from typing import List, Tuple
from nonebot.typing import T_State
from nonebot.adapters import Message
from nonebot.params import (
- State,
Command,
RegexDict,
CommandArg,
@@ -15,7 +14,7 @@ from nonebot.params import (
)
-async def state(x: T_State = State()) -> T_State:
+async def state(x: T_State) -> T_State:
return x
diff --git a/tests/plugins/require.py b/tests/plugins/require.py
index 2b22504f..5764431c 100644
--- a/tests/plugins/require.py
+++ b/tests/plugins/require.py
@@ -1,6 +1,6 @@
from nonebot import require
-
from plugins.export import test
+
from .export import test as test_related
test_require = require("export").test
diff --git a/tests/test_adapters/test_message.py b/tests/test_adapters/test_message.py
new file mode 100644
index 00000000..800ecd90
--- /dev/null
+++ b/tests/test_adapters/test_message.py
@@ -0,0 +1,153 @@
+from pydantic import ValidationError, parse_obj_as
+
+from utils import make_fake_message
+
+
+def test_segment_add():
+ Message = make_fake_message()
+ MessageSegment = Message.get_segment_class()
+
+ assert MessageSegment.text("text") + MessageSegment.text("text") == Message(
+ [MessageSegment.text("text"), MessageSegment.text("text")]
+ )
+
+ assert MessageSegment.text("text") + "text" == Message(
+ [MessageSegment.text("text"), MessageSegment.text("text")]
+ )
+
+ assert (
+ MessageSegment.text("text") + Message([MessageSegment.text("text")])
+ ) == Message([MessageSegment.text("text"), MessageSegment.text("text")])
+
+ assert "text" + MessageSegment.text("text") == Message(
+ [MessageSegment.text("text"), MessageSegment.text("text")]
+ )
+
+
+def test_segment_validate():
+ Message = make_fake_message()
+ MessageSegment = Message.get_segment_class()
+
+ assert parse_obj_as(
+ MessageSegment, {"type": "text", "data": {"text": "text"}}
+ ) == MessageSegment.text("text")
+
+ try:
+ parse_obj_as(MessageSegment, "some str")
+ assert False
+ except ValidationError:
+ assert True
+
+
+def test_segment():
+ Message = make_fake_message()
+ MessageSegment = Message.get_segment_class()
+
+ assert len(MessageSegment.text("text")) == 4
+ assert MessageSegment.text("text") != MessageSegment.text("other")
+ assert MessageSegment.text("text").get("data") == {"text": "text"}
+ assert list(MessageSegment.text("text").keys()) == ["type", "data"]
+ assert list(MessageSegment.text("text").values()) == ["text", {"text": "text"}]
+ assert list(MessageSegment.text("text").items()) == [
+ ("type", "text"),
+ ("data", {"text": "text"}),
+ ]
+
+ origin = MessageSegment.text("text")
+ copy = origin.copy()
+ assert origin is not copy
+ assert origin == copy
+
+
+def test_message_add():
+ Message = make_fake_message()
+ MessageSegment = Message.get_segment_class()
+
+ assert (
+ Message([MessageSegment.text("text")]) + MessageSegment.text("text")
+ ) == Message([MessageSegment.text("text"), MessageSegment.text("text")])
+
+ assert Message([MessageSegment.text("text")]) + "text" == Message(
+ [MessageSegment.text("text"), MessageSegment.text("text")]
+ )
+
+ assert (
+ Message([MessageSegment.text("text")]) + Message([MessageSegment.text("text")])
+ ) == Message([MessageSegment.text("text"), MessageSegment.text("text")])
+
+ assert "text" + Message([MessageSegment.text("text")]) == Message(
+ [MessageSegment.text("text"), MessageSegment.text("text")]
+ )
+
+ msg = Message([MessageSegment.text("text")])
+ msg += MessageSegment.text("text")
+ assert msg == Message([MessageSegment.text("text"), MessageSegment.text("text")])
+
+
+def test_message_getitem():
+
+ Message = make_fake_message()
+ MessageSegment = Message.get_segment_class()
+
+ message = Message(
+ [
+ MessageSegment.text("test"),
+ MessageSegment.image("test2"),
+ MessageSegment.image("test3"),
+ MessageSegment.text("test4"),
+ ]
+ )
+
+ assert message[0] == MessageSegment.text("test")
+
+ assert message[0:2] == Message(
+ [MessageSegment.text("test"), MessageSegment.image("test2")]
+ )
+
+ assert message["image"] == Message(
+ [MessageSegment.image("test2"), MessageSegment.image("test3")]
+ )
+
+ assert message["image", 0] == MessageSegment.image("test2")
+ assert message["image", 0:2] == message["image"]
+
+ assert message.index(message[0]) == 0
+ assert message.index("image") == 1
+
+ assert message.get("image") == message["image"]
+ assert message.get("image", 114514) == message["image"]
+ assert message.get("image", 1) == Message([message["image", 0]])
+
+ assert message.count("image") == 2
+
+
+def test_message_validate():
+ Message = make_fake_message()
+ MessageSegment = Message.get_segment_class()
+
+ Message_ = make_fake_message()
+
+ assert parse_obj_as(Message, Message([])) == Message([])
+
+ try:
+ parse_obj_as(Message, Message_([]))
+ assert False
+ except ValidationError:
+ assert True
+
+ assert parse_obj_as(Message, "text") == Message([MessageSegment.text("text")])
+
+ assert parse_obj_as(Message, {"type": "text", "data": {"text": "text"}}) == Message(
+ [MessageSegment.text("text")]
+ )
+
+ assert parse_obj_as(
+ Message,
+ [MessageSegment.text("text"), {"type": "text", "data": {"text": "text"}}],
+ ) == Message([MessageSegment.text("text"), MessageSegment.text("text")])
+
+ try:
+ parse_obj_as(Message, object())
+ assert False
+ except ValidationError:
+ assert True
diff --git a/tests/test_adapters/test_template.py b/tests/test_adapters/test_template.py
index 3dbef541..84856625 100644
--- a/tests/test_adapters/test_template.py
+++ b/tests/test_adapters/test_template.py
@@ -1,17 +1,41 @@
-from utils import make_fake_message
+from utils import escape_text, make_fake_message
-def test_message_template():
+def test_template_basis():
from nonebot.adapters import MessageTemplate
- Message = make_fake_message()
+ template = MessageTemplate("{key:.3%}")
+ formatted = template.format(key=0.123456789)
+ assert formatted == "12.346%"
- template = MessageTemplate("{a:custom}{b:text}{c:image}", Message)
+
+def test_template_message():
+ Message = make_fake_message()
+ template = Message.template("{a:custom}{b:text}{c:image}")
@template.add_format_spec
def custom(input: str) -> str:
return input + "-custom!"
- formatted = template.format(a="test", b="test", c="https://example.com/test")
- assert formatted.extract_plain_text() == "test-custom!test"
- assert str(formatted) == "test-custom!test[fake:image]"
+ try:
+ template.add_format_spec(custom)
+ except ValueError:
+ pass
+ else:
+ raise AssertionError("Should raise ValueError")
+
+ format_args = {"a": "custom", "b": "text", "c": "https://example.com/test"}
+ formatted = template.format(**format_args)
+
+ assert template.format_map(format_args) == formatted
+ assert formatted.extract_plain_text() == "custom-custom!text"
+ assert str(formatted) == "custom-custom!text[fake:image]"
+
+
+def test_message_injection():
+ Message = make_fake_message()
+
+ template = Message.template("{name}Is Bad")
+ message = template.format(name="[fake:image]")
+
+ assert message.extract_plain_text() == escape_text("[fake:image]Is Bad")
diff --git a/tests/test_examples/test_weather.py b/tests/test_examples/test_weather.py
index 08bab064..086e2c1c 100644
--- a/tests/test_examples/test_weather.py
+++ b/tests/test_examples/test_weather.py
@@ -29,7 +29,11 @@ async def test_weather(app: App):
event = make_fake_event(_message=msg, _to_me=True)()
ctx.receive_event(bot, event)
- ctx.should_call_send(event, Message("你想查询的城市 南京 暂不支持,请重新输入!"), True)
+ ctx.should_call_send(
+ event,
+ Message.template("你想查询的城市 {} 暂不支持,请重新输入!").format("南京"),
+ True,
+ )
ctx.should_rejected()
msg = Message("北京")
@@ -53,7 +57,11 @@ async def test_weather(app: App):
event = make_fake_event(_message=msg)()
ctx.receive_event(bot, event)
- ctx.should_call_send(event, Message("你想查询的城市 杭州 暂不支持,请重新输入!"), True)
+ ctx.should_call_send(
+ event,
+ Message.template("你想查询的城市 {} 暂不支持,请重新输入!").format("杭州"),
+ True,
+ )
ctx.should_rejected()
msg = Message("北京")
diff --git a/tests/test_init.py b/tests/test_init.py
index 46911755..6d36dccd 100644
--- a/tests/test_init.py
+++ b/tests/test_init.py
@@ -1,12 +1,7 @@
import os
-import sys
-from typing import TYPE_CHECKING, Set
import pytest
-if TYPE_CHECKING:
- from nonebot.plugin import Plugin
-
os.environ["CONFIG_FROM_ENV"] = '{"test": "test"}'
@@ -74,23 +69,3 @@ async def test_get(monkeypatch: pytest.MonkeyPatch, nonebug_clear):
assert get_bot() == "test"
assert get_bot("test") == "test"
assert get_bots() == {"test": "test"}
-
-
-@pytest.mark.asyncio
-async def test_load_plugin(load_plugin: Set["Plugin"]):
- import nonebot
-
- loaded_plugins = set(
- plugin for plugin in nonebot.get_loaded_plugins() if not plugin.parent_plugin
- )
- assert loaded_plugins == load_plugin
- plugin = nonebot.get_plugin("export")
- assert plugin
- assert plugin.module_name == "plugins.export"
- assert "plugins.export" in sys.modules
-
- try:
- nonebot.load_plugin("plugins.export")
- assert False
- except RuntimeError:
- assert True
diff --git a/tests/test_matcher.py b/tests/test_matcher.py
index abaf1a77..f1d66054 100644
--- a/tests/test_matcher.py
+++ b/tests/test_matcher.py
@@ -78,10 +78,7 @@ async def test_matcher(app: App, load_plugin):
@pytest.mark.asyncio
async def test_type_updater(app: App, load_plugin):
- from plugins.matcher.matcher_type import (
- test_type_updater,
- test_custom_updater,
- )
+ from plugins.matcher.matcher_type import test_type_updater, test_custom_updater
event = make_fake_event()()
@@ -103,7 +100,6 @@ async def test_type_updater(app: App, load_plugin):
@pytest.mark.asyncio
async def test_permission_updater(app: App, load_plugin):
from nonebot.permission import User
-
from plugins.matcher.matcher_permission import (
default_permission,
test_custom_updater,
diff --git a/tests/test_param.py b/tests/test_param.py
index 576d0cbc..e5157635 100644
--- a/tests/test_param.py
+++ b/tests/test_param.py
@@ -7,7 +7,6 @@ from utils import make_fake_event, make_fake_message
@pytest.mark.asyncio
async def test_depend(app: App, load_plugin):
from nonebot.params import DependParam
-
from plugins.param.param_depend import (
ClassDependency,
runned,
@@ -37,7 +36,6 @@ async def test_depend(app: App, load_plugin):
@pytest.mark.asyncio
async def test_bot(app: App, load_plugin):
from nonebot.params import BotParam
-
from plugins.param.param_bot import get_bot
async with app.test_dependent(get_bot, allow_types=[BotParam]) as ctx:
@@ -49,7 +47,6 @@ async def test_bot(app: App, load_plugin):
@pytest.mark.asyncio
async def test_event(app: App, load_plugin):
from nonebot.params import EventParam, DependParam
-
from plugins.param.param_event import (
event,
event_type,
@@ -104,7 +101,6 @@ async def test_state(app: App, load_plugin):
REGEX_GROUP,
REGEX_MATCHED,
)
-
from plugins.param.param_state import (
state,
command,
@@ -184,7 +180,6 @@ async def test_state(app: App, load_plugin):
async def test_matcher(app: App, load_plugin):
from nonebot.matcher import Matcher
from nonebot.params import DependParam, MatcherParam
-
from plugins.param.param_matcher import matcher, receive, last_receive
fake_matcher = Matcher()
@@ -215,7 +210,6 @@ async def test_matcher(app: App, load_plugin):
async def test_arg(app: App, load_plugin):
from nonebot.matcher import Matcher
from nonebot.params import ArgParam
-
from plugins.param.param_arg import arg, arg_str, arg_plain_text
matcher = Matcher()
@@ -238,7 +232,6 @@ async def test_arg(app: App, load_plugin):
@pytest.mark.asyncio
async def test_exception(app: App, load_plugin):
from nonebot.params import ExceptionParam
-
from plugins.param.param_exception import exc
exception = ValueError("test")
@@ -250,7 +243,6 @@ async def test_exception(app: App, load_plugin):
@pytest.mark.asyncio
async def test_default(app: App, load_plugin):
from nonebot.params import DefaultParam
-
from plugins.param.param_default import default
async with app.test_dependent(default, allow_types=[DefaultParam]) as ctx:
diff --git a/tests/test_plugin/test_load.py b/tests/test_plugin/test_load.py
new file mode 100644
index 00000000..c0c0c8f6
--- /dev/null
+++ b/tests/test_plugin/test_load.py
@@ -0,0 +1,89 @@
+import sys
+from typing import TYPE_CHECKING, Set
+
+import pytest
+from nonebug import App
+
+if TYPE_CHECKING:
+ from nonebot.plugin import Plugin
+
+
+@pytest.mark.asyncio
+async def test_load_plugin(load_plugin: Set["Plugin"]):
+ import nonebot
+
+ loaded_plugins = set(
+ plugin for plugin in nonebot.get_loaded_plugins() if not plugin.parent_plugin
+ )
+ assert loaded_plugins == load_plugin
+ plugin = nonebot.get_plugin("export")
+ assert plugin
+ assert plugin.module_name == "plugins.export"
+ assert "plugins.export" in sys.modules
+
+ try:
+ nonebot.load_plugin("plugins.export")
+ assert False
+ except RuntimeError:
+ assert True
+
+ assert nonebot.load_plugin("some_plugin_not_exist") is None
+
+
+@pytest.mark.asyncio
+async def test_require_loaded(app: App, monkeypatch: pytest.MonkeyPatch):
+ import nonebot
+
+ def _patched_find(name: str):
+ assert False
+
+ monkeypatch.setattr("nonebot.plugin.load._find_manager_by_name", _patched_find)
+
+ nonebot.load_plugin("plugins.export")
+
+ nonebot.require("plugins.export")
+
+
+@pytest.mark.asyncio
+async def test_require_not_loaded(app: App, monkeypatch: pytest.MonkeyPatch):
+ import nonebot
+ from nonebot.plugin import _managers
+ from nonebot.plugin.manager import PluginManager
+
+ m = PluginManager(["plugins.export"])
+ _managers.append(m)
+
+ origin_load = PluginManager.load_plugin
+
+ def _patched_load(self: PluginManager, name: str):
+ assert self is m
+ return origin_load(self, name)
+
+ monkeypatch.setattr(PluginManager, "load_plugin", _patched_load)
+
+ nonebot.require("plugins.export")
+
+ assert len(_managers) == 1
+
+
+@pytest.mark.asyncio
+async def test_require_not_declared(app: App):
+ import nonebot
+ from nonebot.plugin import _managers
+
+ nonebot.require("plugins.export")
+
+ assert len(_managers) == 1
+ assert _managers[-1].plugins == {"plugins.export"}
+
+
+@pytest.mark.asyncio
+async def test_require_not_found(app: App):
+ import nonebot
+ from nonebot.plugin import _managers
+
+ try:
+ nonebot.require("some_plugin_not_exist")
+ assert False
+ except RuntimeError:
+ assert True
diff --git a/tests/test_single_session.py b/tests/test_single_session.py
new file mode 100644
index 00000000..1a2bc67f
--- /dev/null
+++ b/tests/test_single_session.py
@@ -0,0 +1,36 @@
+from contextlib import asynccontextmanager
+
+import pytest
+
+from utils import make_fake_event
+
+
+@pytest.mark.asyncio
+async def test_matcher_mutex():
+ from nonebot.plugins.single_session import matcher_mutex, _running_matcher
+
+ am = asynccontextmanager(matcher_mutex)
+ event = make_fake_event()()
+ event_1 = make_fake_event()()
+ event_2 = make_fake_event(_session_id="test1")()
+ event_3 = make_fake_event(_session_id=None)()
+
+ async with am(event) as ctx:
+ assert ctx == False
+ assert not _running_matcher
+
+ async with am(event) as ctx:
+ async with am(event_1) as ctx_1:
+ assert ctx == False
+ assert ctx_1 == True
+ assert not _running_matcher
+
+ async with am(event) as ctx:
+ async with am(event_2) as ctx_2:
+ assert ctx == False
+ assert ctx_2 == False
+ assert not _running_matcher
+
+ async with am(event_3) as ctx_3:
+ assert ctx_3 == False
+ assert not _running_matcher
diff --git a/tests/utils.py b/tests/utils.py
index 09b2a987..0cd94be4 100644
--- a/tests/utils.py
+++ b/tests/utils.py
@@ -1,4 +1,4 @@
-from typing import TYPE_CHECKING, Type, Optional
+from typing import TYPE_CHECKING, Type, Union, Mapping, Iterable, Optional
from pydantic import create_model
@@ -6,7 +6,14 @@ if TYPE_CHECKING:
from nonebot.adapters import Event, Message
-def make_fake_message() -> Type["Message"]:
+def escape_text(s: str, *, escape_comma: bool = True) -> str:
+ s = s.replace("&", "&").replace("[", "[").replace("]", "]")
+ if escape_comma:
+ s = s.replace(",", ",")
+ return s
+
+
+def make_fake_message():
from nonebot.adapters import Message, MessageSegment
class FakeMessageSegment(MessageSegment):
@@ -21,9 +28,9 @@ def make_fake_message() -> Type["Message"]:
def text(cls, text: str):
return cls("text", {"text": text})
- @classmethod
- def image(cls, url: str):
- return cls("image", {"url": url})
+ @staticmethod
+ def image(url: str):
+ return FakeMessageSegment("image", {"url": url})
def is_text(self) -> bool:
return self.type == "text"
@@ -34,8 +41,17 @@ def make_fake_message() -> Type["Message"]:
return FakeMessageSegment
@staticmethod
- def _construct(msg: str):
- yield FakeMessageSegment.text(msg)
+ def _construct(msg: Union[str, Iterable[Mapping]]):
+ if isinstance(msg, str):
+ yield FakeMessageSegment.text(msg)
+ else:
+ for seg in msg:
+ yield FakeMessageSegment(**seg)
+ return
+
+ def __add__(self, other):
+ other = escape_text(other) if isinstance(other, str) else other
+ return super().__add__(other)
return FakeMessage
@@ -45,7 +61,7 @@ def make_fake_event(
_name: str = "test",
_description: str = "test",
_user_id: str = "test",
- _session_id: str = "test",
+ _session_id: Optional[str] = "test",
_message: Optional["Message"] = None,
_to_me: bool = True,
**fields,
@@ -68,7 +84,9 @@ def make_fake_event(
return _user_id
def get_session_id(self) -> str:
- return _session_id
+ if _session_id is not None:
+ return _session_id
+ raise NotImplementedError
def get_message(self) -> "Message":
if _message is not None:
diff --git a/website/babel.config.js b/website/babel.config.js
index e00595da..bfd75dbd 100644
--- a/website/babel.config.js
+++ b/website/babel.config.js
@@ -1,3 +1,3 @@
module.exports = {
- presets: [require.resolve('@docusaurus/core/lib/babel/preset')],
+ presets: [require.resolve("@docusaurus/core/lib/babel/preset")],
};
diff --git a/website/docs/README.md b/website/docs/README.md
index f630b109..9e864dff 100644
--- a/website/docs/README.md
+++ b/website/docs/README.md
@@ -8,7 +8,7 @@ slug: /
NoneBot2 是一个现代、跨平台、可扩展的 Python 聊天机器人框架,它基于 Python 的类型注解和异步特性,能够为你的需求实现提供便捷灵活的支持。
-需要注意的是,NoneBot 仅支持 **Python 3.7.3 以上版本**
+需要注意的是,NoneBot2 仅支持 **Python 3.7.3 以上版本**
## 特色
@@ -18,15 +18,15 @@ NoneBot2 基于 Python [asyncio](https://docs.python.org/3/library/asyncio.html)
### 完整的类型注解
-NoneBot2 参考 [PEP 484](https://www.python.org/dev/peps/pep-0484/) 等 PEP 完整实现了类型注解,通过 `pyright`/`pylance` 检查。配合编辑器的类型推导功能,能将绝大多数的 Bug 杜绝在编辑器中 ([编辑器支持](./start/editor-support))。
+NoneBot2 参考 [PEP 484](https://www.python.org/dev/peps/pep-0484/) 等 PEP 完整实现了类型注解,通过 `pyright`/`pylance` 检查。配合编辑器的类型推导功能,能将绝大多数的 Bug 杜绝在编辑器中([编辑器支持](./start/editor-support))。
### 开箱即用
-NoneBot2 提供了使用便捷、具有交互式功能的命令行工具 -- `nb-cli`,使得初次接触 NoneBot 时更容易上手。详细使用方法请参考各文档章节以及 [使用脚手架](./start/nb-cli)。
+NoneBot2 提供了使用便捷、具有交互式功能的命令行工具--`nb-cli`,使得初次接触 NoneBot2 时更容易上手。详细使用方法请参考各文档章节以及[使用脚手架](./start/nb-cli)。
### 插件系统
-插件系统是 NoneBot 的核心,通过它可以实现机器人的模块化以及功能扩展,便于维护和管理。
+插件系统是 NoneBot2 的核心,通过它可以实现机器人的模块化以及功能扩展,便于维护和管理。
### 依赖注入系统
@@ -34,15 +34,15 @@ NoneBot2 采用了一套自行定义的依赖注入系统,可以让事件的
#### 什么是依赖注入
-[**"依赖注入"**](https://zh.m.wikipedia.org/wiki/%E6%8E%A7%E5%88%B6%E5%8F%8D%E8%BD%AC)意思是,在编程中,有一种方法可以让你的代码声明它工作和使用所需要的东西, 即"**依赖**"。
+[**“依赖注入”**](https://zh.m.wikipedia.org/wiki/%E6%8E%A7%E5%88%B6%E5%8F%8D%E8%BD%AC)意思是,在编程中,有一种方法可以让你的代码声明它工作和使用所需要的东西,即**“依赖”**。
-系统 (在这里是指 `NoneBot` ) 将负责做任何需要的事情,为你的代码提供这些必要依赖 (即"**注入**"依赖性)
+系统(在这里是指 NoneBot2)将负责做任何需要的事情,为你的代码提供这些必要依赖(即**“注入”**依赖性)
-这在你有以下情形的需求时非常有用:
+这在你有以下情形的需求时非常有用:
-- 这部分代码拥有共享的逻辑(同样的代码逻辑多次重复)
+- 这部分代码拥有共享的逻辑(同样的代码逻辑多次重复)
- 共享数据库以及网络请求连接会话
- - 比如 `httpx.AsyncClient`, `aiohttp.ClientSession` 和 `sqlalchemy.Session`
+ - 比如 `httpx.AsyncClient`、`aiohttp.ClientSession` 和 `sqlalchemy.Session`
- 用户权限检查以及认证
- 还有更多...
diff --git a/website/docs/advanced/README.md b/website/docs/advanced/README.md
index 06c6dacc..7e375409 100644
--- a/website/docs/advanced/README.md
+++ b/website/docs/advanced/README.md
@@ -1,6 +1,6 @@
---
id: index
-slug: /advanced
+slug: /advanced/
options:
menu:
@@ -16,33 +16,33 @@ options:
## 它如何工作?
-如同[概览](../README.md)所言:
+如同[概览](../README.md)所言:
> NoneBot2 是一个可扩展的 Python 异步机器人框架,它会对机器人收到的事件进行解析和处理,并以插件化的形式,按优先级分发给事件所对应的事件响应器,来完成具体的功能。
-`Nonebot2` 是一个可以对机器人上报的事件进行处理并完成具体功能的机器人框架,在这里,我们将简要讲述它的工作内容。
+NoneBot2 是一个可以对机器人上报的事件进行处理并完成具体功能的机器人框架,在这里,我们将简要讲述它的工作内容。
-**便捷起见,以下内容对 `Nonebot2` 会被称为 `nonebot`,与 `Nonebot2` 交互的机器人实现会被称为 `协议端`**。
+**便捷起见,以下内容对 NoneBot2 会被称为 NoneBot,与 NoneBot2 交互的机器人实现会被称为协议端**。
-在实际应用中,`nonebot` 会充当一个高性能,轻量级的 Python 微服务框架。协议端可以通过 `http`, `websocket` 等方式与之通信,这个通信往往是双向的:一方面,协议端可以上报数据给 `nonebot`,`nonebot` 会处理数据并返回响应给协议端;另一方面,`nonebot` 可以主动推送数据给协议端。而 `nonebot` 便是围绕双向通信进行工作的。
+在实际应用中,NoneBot 会充当一个高性能,轻量级的 Python 微服务框架。协议端可以通过 http、websocket 等方式与之通信,这个通信往往是双向的:一方面,协议端可以上报数据给 NoneBot,NoneBot 会处理数据并返回响应给协议端;另一方面,NoneBot 可以主动推送数据给协议端。而 NoneBot 便是围绕双向通信进行工作的。
-在开始工作之前,`nonebot` 需要进行准备工作:
+在开始工作之前,NoneBot 需要进行准备工作:
-1. **运行 `nonebot.init` 初始化函数**,它会读取配置文件,并初始化 `nonebot` 和后端驱动 `driver` 对象。
-2. **注册协议适配器 `adapter`** 。
+1. **运行 `nonebot.init` 初始化函数**,它会读取配置文件,并初始化 NoneBot 和后端驱动 `Driver` 对象。
+2. **注册协议适配器 `Adapter`**。
3. **加载插件**。
-准备工作完成后,`nonebot` 会利用 `uvicorn` 启动,并运行 `on_startup` 钩子函数。
+准备工作完成后,NoneBot 会利用 uvicorn 启动,并运行 `on_startup` 钩子函数。
-随后,倘若一个协议端与 `nonebot` 进行了连接,`nonebot` 的后端驱动 `driver` 就会将 `adapter` 实例化为 `bot`,`nonebot` 便会利用 `bot` 开始工作,它的工作内容分为两个方面:
+随后,倘若一个协议端与 NoneBot 进行了连接,NoneBot 的后端驱动 `Driver` 就会将数据交给 `Adapter`,然后会实例化 `Bot`,NoneBot 便会利用 `Bot` 开始工作,它的工作内容分为两个方面:
-1. **事件处理**,`bot` 会将协议端上报的数据转化为 `事件`(`Event`),之后 `nonebot` 会根据一套既定流程来处理 `事件`。
+1. **事件处理**,`Bot` 会将协议端上报的数据转化为 `Event`(事件),之后 NoneBot 会根据一套既定流程来处理事件。
-2. **调用 `API`**, 在**事件处理**的过程中,`nonebot` 可以通过 `bot` 调用协议端指定的 `API` 来获取更多数据,或者反馈响应给协议端; `nonebot` 也可以通过调用 `API` 向协议端主动请求数据或者主动推送数据。
+2. **调用 `API`**,在**事件处理**的过程中,NoneBot 可以通过 `Bot` 调用协议端指定的 `API` 来获取更多数据,或者反馈响应给协议端;NoneBot 也可以通过调用 `API` 向协议端主动请求数据或者主动推送数据。
-在**指南**模块, 我们已经叙述了[如何配置 nonebot](../tutorial/configuration.md), [如何注册协议适配器](../tutorial/register-adapter.md),[如何加载插件](../tutorial/plugin/load-plugin.md), 在这里便不再赘述。
+在**指南**模块,我们已经叙述了[如何配置 NoneBot](../tutorial/configuration.md)、[如何注册协议适配器](../tutorial/register-adapter.md)以及[如何加载插件](../tutorial/plugin/load-plugin.md),这里便不再赘述。
-下面,我们将对**事件处理**, **调用 API**进行说明。
+下面,我们将对**事件处理**,**调用 API** 进行说明。
## 事件处理
@@ -50,143 +50,156 @@ options:

-在流程图里,我们可以看到,`nonebot` 会有三个阶段来处理事件:
+在流程图里,我们可以看到,NoneBot 会有三个阶段来处理事件:
-1. **driver 处理上报数据**
-2. **adapter 处理原始数据**
-3. **nonebot 处理 Event**
+1. **Driver 接收上报数据**
+2. **Adapter 处理原始数据**
+3. **NoneBot 处理 Event**
我们将顺序说明这三个阶段。其中,会将第三个阶段拆分成**概念解释**,**处理 Event**,**特殊异常处理**三个部分来说明。
-### driver 处理上报数据
+### Driver 接收上报数据
-1. 协议端会通过 `websocket` 或者 `http` 等方式与 `nonebot` 的后端驱动 `driver` 连接,`driver` 会根据之前注册的 `adapter` 和配置文件的内容来进行鉴权,从而获得这个连接的唯一识别 id `self-id`,随后 `adapter` 就会利用 `self-id` 实例化为 `bot` 对象。
+1. 协议端会通过 websocket 或 http 等方式与 NoneBot 的后端驱动 `Driver` 连接,协议端上报数据后,`Driver` 会将原始数据交给 `Adapter` 处理。
- ::: tip
- 需要注意的是,如果协议端通过 `websocket` 与 `nonebot` 连接,这个步骤只会在建立连接时进行,并在之后运行 `on_bot_connect` 钩子函数;通过 `http` 方式连接时,会在协议端每次上报数据时都进行这个步骤。
- :::
+:::warning
+连接之前必须要注册 `Adapter`
+:::
- ::: warning
- 连接之前必须要注册 `adapter`
- :::
+### Adapter 处理原始数据
- ::: warning
- `self-id` 是帐号的唯一识别 ID,这意味着不能出现相同的 `self-id`。
- :::
+1. `Adapter` 检查授权许可,并获取 `self-id` 作为唯一识别 id 。
-2. `driver` 会将接收到的数据转交给 `bot` 对象进一步处理。
+:::tip
+如果协议端通过 websocket 上报数据,这个步骤只会在建立连接时进行,并在之后运行 `on_bot_connect` 钩子函数;通过 http 方式连接时,会在协议端每次上报数据时都进行这个步骤。
+:::
-### adapter 处理原始数据
+:::warning
+`self-id` 是帐号的唯一识别 ID ,这意味着不能出现相同的 `self-id`。
+:::
-1. `bot` 会利用事先定义好的 `Event Model` 对上报的数据进行分析处理,将数据转化为 `nonebot` 可以处理的 `Event` 对象。
+2. 根据 `self-id` 实例化 `Adapter` 相应的 `Bot` 。
- ::: tip
- `adapter` 在转换数据格式的同时可以进行一系列的特殊操作,例如 `CQHTTP` 会对 `reply` 信息进行提取。
- :::
+3. 根据 `Event Model` 将原始数据转化为 NoneBot 可以处理的 `Event` 对象。
-2. `Event` 会传入 `nonebot` 做进一步处理。
+:::tip
+`Adapter` 在转换数据格式的同时可以进行一系列的特殊操作,例如 OneBot 适配器会对 reply 信息进行提取。
+:::
-### nonebot 处理 Event
+4. `Bot` 和 `Event` 交由 NoneBot 进一步处理。
+
+### NoneBot 处理 Event
在讲述这个阶段之前,我们需要先对几个概念进行解释。
#### 概念解释
-1. **hook**,或者说**钩子函数**,它们可以在 `nonebot` 处理 `Event` 的不同时刻进行拦截,修改或者扩展,在 `nonebot` 中,钩子函数分为 `事件预处理hook`,`运行预处理hook`,`运行后处理hook` 和 `事件后处理hook`。
+1. **hook** ,或者说**钩子函数**,它们可以在 NoneBot 处理 `Event` 的不同时刻进行拦截,修改或者扩展,在 NoneBot 中,事件钩子函数分为`事件预处理 hook`、`运行预处理 hook`、`运行后处理 hook` 和`事件后处理 hook`。
- ::: tip
- 关于`hook`的更多信息,可以查阅[这里](./runtime-hook.md)
- :::
+:::tip
+关于 `hook` 的更多信息,可以查阅[这里](./runtime-hook.md)。
+:::
-2. **Matcher**与**matcher**,在**指南**中,我们讲述了[如何注册事件响应器](../tutorial/plugin/create-matcher.md),这里的事件响应器或者说 `Matcher` 并不是一个具体的实例 `instance`,而是一个具有特定属性的类 `class`。只有当 `Matcher` **响应事件**时,才会实例化为具体的 `instance`,也就是 `matcher`。`matcher` 可以认为是 `nonebot` 处理 `Event` 的基本单位,运行 `matcher` 是`nonebot`工作的主要内容。
+2. **Matcher** 与 **matcher**,在**指南**中,我们讲述了[如何注册事件响应器](../tutorial/plugin/create-matcher.md),这里的事件响应器或者说 `Matcher` 并不是一个具体的实例 `instance`,而是一个具有特定属性的类 `class`。只有当 `Matcher` **响应事件**时,才会实例化为具体的 `instance`,也就是 `matcher` 。`matcher` 可以认为是 NoneBot 处理 `Event` 的基本单位,运行 `matcher` 是 NoneBot 工作的主要内容。
-3. **handler**,或者说**事件处理函数**, 它们可以认为是 `nonebot` 处理 `Event` 的最小单位。在不考虑 `hook` 的情况下,**运行 matcher 就是顺序运行 matcher.handlers**,这句话换种表达方式就是,`handler` 只有添加到 `matcher.handlers` 时,才可以参与到 `nonebot` 的工作中来。
+3. **handler**,或者说**事件处理函数**,它们可以认为是 NoneBot 处理 `Event` 的最小单位。在不考虑 `hook` 的情况下,**运行 matcher 就是顺序运行 matcher.handlers**,这句话换种表达方式就是,`handler` 只有添加到 `matcher.handlers` 时,才可以参与到 NoneBot 的工作中来。
- ::: tip
- 如何让 `handler` 添加到 `matcher.handlers`?
+:::tip
+如何让 `handler` 添加到 `matcher.handlers`?
- 一方面,我们可以参照[这里](../tutorial/plugin/create-handler.md)利用装饰器来添加;另一方面,我们在用 `on()` 或者 `on_*()` 注册事件响应器时,可以添加 `handlers=[handler1, handler2, ...]` 这样的关键词参数来添加。
-
- :::
+一方面,我们可以参照[这里](../tutorial/plugin/create-handler.md)利用装饰器来添加;另一方面,我们在用 `on()` 或者 `on_*()` 注册事件响应器时,可以添加 `handlers=[handler1, handler2, ...]` 这样的关键词参数来添加。
+:::
#### 处理 Event
-1. **执行事件预处理 hook**, `nonebot` 接收到 `Event` 后,会传入到 `事件预处理hook` 中进行处理。
+1. **执行事件预处理 hook**, NoneBot 接收到 `Event` 后,会传入到 `事件预处理 hook` 中进行处理。
- ::: warning
- 需要注意的是,执行多个 `事件预处理hook` 时并无顺序可言,它们是**并行运行**的。这个原则同样适用于其他的 `hook`。
- :::
+:::warning
+需要注意的是,执行多个 `事件预处理 hook` 时并无顺序可言,它们是**并发运行**的。这个原则同样适用于其他的 `hook`。
+:::
-2. **按优先级升序选出同一优先级的 Matcher**,`nonebot` 提供了一个全局字典 `matchers`,这个字典的 `key` 是优先级 `priority`,`value` 是一个 `list`,里面存放着同一优先级的 `Matcher`。在注册 `Matcher` 时,它和优先级 `priority` 会添加到里面。
+2. **按优先级升序选出同一优先级的 Matcher**,NoneBot 提供了一个全局字典 `matchers`,这个字典的 `key` 是优先级 `priority`,`value` 是一个 `list`,里面存放着同一优先级的 `Matcher`。在注册 `Matcher` 时,它和优先级 `priority` 会添加到里面。
- 在执行 `事件预处理hook` 后,`nonebot` 会对 `matchers` 的 `key` 升序排序并选择出当前最小优先级的 `Matcher`。
+ 在执行 `事件预处理 hook` 后,NoneBot 会对 `matchers` 的 `key` 升序排序并选择出当前最小优先级的 `Matcher`。
-3. **根据 Matcher 定义的 Rule, Permission 判断是否运行**,在选出 `Matcher` 后,`nonebot` 会将 `bot`,`Event` 传入到 `Matcher.check_rule` 和 `Matcher.check_perm` 两个函数中,两个函数分别对 Matcher 定义的 Rule, Permission 进行 check,当 check 通过后,这个 `Matcher` 就会响应事件。但是当同一个优先级的所有 `Matcher` 均没有响应时,`nonebot` 会返回到上一个步骤,选择出下一优先级的 `Matcher`。
+3. **根据 Matcher 定义的 Rule、Permission 判断是否运行**,在选出 `Matcher` 后,NoneBot 会将 `bot`,`Event` 传入到 `Matcher.check_rule` 和 `Matcher.check_perm` 两个函数中,两个函数分别对 Matcher 定义的 `Rule`、`Permission` 进行 check,当 check 通过后,这个 `Matcher` 就会响应事件。当同一个优先级的所有 `Matcher` 均没有响应时,NoneBot 会返回到上一个步骤,选择出下一优先级的 `Matcher`。
-4. **实例化 matcher 并执行运行预处理 hook**,当 `Matcher` 响应事件后,它便会实例化为 `matcher`,并执行 `运行预处理hook`。
+4. **实例化 matcher 并执行运行预处理 hook**,当 `Matcher` 响应事件后,它便会实例化为 `matcher`,并执行 `运行预处理 hook`。
-5. **顺序运行 matcher 的所有 handlers**,`运行预处理hook` 执行完毕后,便会运行 `matcher`,也就是**顺序运行**它的 `handlers`。
+5. **顺序运行 matcher 的所有 handlers**,`运行预处理 hook` 执行完毕后,便会运行 `matcher`,也就是**顺序运行**它的 `handlers`。
- ::: tip
- `matcher` 运行 `handlers` 的顺序是: 先运行该 `matcher` 的类 `Matcher` 注册时添加的 `handlers`(如果有的话),再按照装饰器装饰顺序运行装饰的 `handlers`。
- :::
+:::tip
+`matcher` 运行 `handlers` 的顺序是:先运行该 `matcher` 的类 `Matcher` 注册时添加的 `handlers`(如果有的话),再按照装饰器装饰顺序运行装饰的 `handlers`。
+:::
-6. **执行运行后处理 hook**,`matcher` 的 `handlers` 运行完毕后,会执行 `运行后处理hook`。
+6. **执行运行后处理 hook**,`matcher` 的 `handlers` 运行完毕后,会执行 `运行后处理 hook`。
-7. **判断是否停止事件传播**,`nonebot` 会根据当前优先级所有 `matcher` 的 `block` 参数或者 `StopPropagation` 异常判断是否停止传播 `Event`,如果事件没有停止传播,`nonebot` 便会返回到第 2 步, 选择出下一优先级的 `Matcher`。
+7. **判断是否停止事件传播**,NoneBot 会根据当前优先级所有 `matcher` 的 `block` 参数或者 `StopPropagation` 异常判断是否停止传播 `Event`,如果事件没有停止传播,NoneBot 便会返回到第 2 步, 选择出下一优先级的 `Matcher`。
-8. **执行事件后处理 hook**,在 `Event` 停止传播或执行完所有响应的 `Matcher` 后,`nonebot` 会执行 `事件后处理hook`。
+8. **执行事件后处理 hook**,在 `Event` 停止传播或执行完所有响应的 `Matcher` 后,NoneBot 会执行 `事件后处理 hook`。
- 当 `事件后处理hook` 执行完毕后,当前`Event`的处理周期就顺利结束了。
+ 当 `事件后处理 hook` 执行完毕后,当前 `Event` 的处理周期就顺利结束了。
#### 特殊异常处理
-在这个阶段,`nonebot` 规定了几个特殊的异常,当 `nonebot` 捕获到它们时,会用特定的行为来处理它们。
+在这个阶段,NoneBot 规定了几个特殊的异常,当 NoneBot 捕获到它们时,会用特定的行为来处理它们。
1. **IgnoredException**
- 这个异常可以在 `事件预处理hook` 和 `运行预处理hook` 抛出。
+ 这个异常可以在 `事件预处理 hook` 和 `运行预处理 hook` 抛出。
- 当 `事件预处理hook` 抛出它时,`nonebot` 会忽略当前的 `Event`,不进行处理。
+ 当 `事件预处理 hook` 抛出它时,NoneBot 会忽略当前的 `Event`,不进行处理。
- 当 `运行预处理hook` 抛出它时,`nonebot` 会忽略当前的 `matcher`,结束当前 `matcher` 的运行。
+ 当 `运行预处理 hook` 抛出它时,NoneBot 会忽略当前的 `matcher`,结束当前 `matcher` 的运行。
- ::: warning
- 当 `hook` 需要抛出这个异常时,要写明原因。
- :::
+:::warning
+当 `hook` 需要抛出这个异常时,要写明原因。
+:::
2. **PausedException**
这个异常可以在 `handler` 中由 `Matcher.pause` 抛出。
- 当 `nonebot` 捕获到它时,会停止运行当前 `handler` 并结束当前 `matcher` 的运行,并将后续的 `handler` 交给一个临时 `Matcher` 来响应当前交互用户的下一个消息事件,当临时 `Matcher` 响应时,临时 `Matcher` 会运行后续的 handlers。
+ 当 NoneBot 捕获到它时,会停止运行当前 `handler` 并结束当前 `matcher` 的运行,并将后续的 `handler` 交给一个临时 `Matcher` 来响应当前交互用户的下一个消息事件,当临时 `Matcher` 响应时,临时 `Matcher` 会运行后续的 `handler`。
3. **RejectedException**
这个异常可以在 `handler` 中由 `Matcher.reject` 抛出。
- 当 `nonebot` 捕获到它时,会停止运行当前 `handler` 并结束当前 `matcher` 的运行,并将当前 handler 和后续 `handler` 交给一个临时 `Matcher` 来响应当前交互用户的下一个消息事件,当临时 `Matcher` 响应时,临时 `Matcher` 会运行当前 `handler` 和后续的 `handler`。
+ 当 NoneBot 捕获到它时,会停止运行当前 `handler` 并结束当前 `matcher` 的运行,并将当前 handler 和后续 `handler` 交给一个临时 `Matcher` 来响应当前交互用户的下一个消息事件,当临时 `Matcher` 响应时,临时 `Matcher` 会运行当前 `handler` 和后续的 `handler` 。
4. **FinishedException**
这个异常可以在 `handler` 中由 `Matcher.finish` 抛出。
- 当 `nonebot` 捕获到它时,会停止运行当前 `handler` 并结束当前 `matcher` 的运行。
+ 当 NoneBot 捕获到它时,会停止运行当前 `handler` 并结束当前 `matcher` 的运行。
5. **StopPropagation**
- 这个异常一般会在执行 `运行后处理hook` 后抛出。
+ 这个异常一般会在执行 `运行后处理 hook` 后抛出。
- 当 `nonebot` 捕获到它时, 会停止传播当前 `Event`,不再寻找下一优先级的 `Matcher`,直接执行 `事件后处理hook`。
+ 当 NoneBot 捕获到它时, 会停止传播当前 `Event` ,不再寻找下一优先级的 `Matcher` ,直接执行 `事件后处理 hook` 。
## 调用 API
-`nonebot` 可以通过 `bot` 来调用 `API` ,`API` 可以向协议端发送数据,也可以向协议端请求更多的数据。
+NoneBot 可以通过 `bot` 来调用 `API`,`API` 可以向协议端发送数据,也可以向协议端请求更多的数据。
-::: tip
+NoneBot 调用 `API` 会有如下过程:
+
+1. 调用 `calling_api_hook` 预处理钩子。
+
+2. `adapter` 将信息处理为原始数据,并转交 `driver`,`driver` 交给协议端处理。
+
+3. `driver` 接收协议端的结果,交给`adapter` 处理之后将结果反馈给 NoneBot 。
+
+4. 调用 `called_api_hook` 后处理钩子。
+
+在调用 `API` 时同样规定了特殊的异常,叫做 `MockApiException` 。该异常会由预处理钩子和后处理钩子触发,当预处理钩子触发时,NoneBot 会跳过之后的调用过程,直接执行后处理钩子。
+
+:::tip
不同 `adapter` 规定了不同的 API,对应的 API 列表请参照协议规范。
:::
-一般来说,我们可以用 `bot.*` 来调用 `API`(\*是 `API` 的 `action` 或者 `endpoint`)。
+一般来说,我们可以用 `bot.*` 来调用 `API`(\*是 `API` 的 `action` 或者 `endpoint`)。
-对于发送消息而言,一方面可以调用既有的 API;另一方面 `nonebot` 实现了两个便捷方法,`bot.send(event, message, **kwargs)` 方法和可以在 `handler` 中使用的 `Matcher.send(message, **kwargs)` 方法,来向事件主体发送消息。
+对于发送消息而言,一方面可以调用既有的 `API` ;另一方面 NoneBot 实现了两个便捷方法,`bot.send(event, message, **kwargs)` 方法和可以在 `handler` 中使用的 `Matcher.send(message, **kwargs)` 方法,来向事件主体发送消息。
diff --git a/website/docs/advanced/di/dependency-injection.md b/website/docs/advanced/di/dependency-injection.md
index 57a1e515..66645709 100644
--- a/website/docs/advanced/di/dependency-injection.md
+++ b/website/docs/advanced/di/dependency-injection.md
@@ -10,91 +10,85 @@ options:
# 简介
-受 [`FastApi`](https://fastapi.tiangolo.com/tutorial/dependencies/) 启发,NoneBot 同样编写了一个简易的依赖注入模块,使得开发者可以通过事件处理函数参数的类型标注来自动注入依赖。
+受 [FastAPI](https://fastapi.tiangolo.com/tutorial/dependencies/) 启发,NoneBot 同样编写了一个简易的依赖注入模块,使得开发者可以通过事件处理函数参数的类型标注来自动注入依赖。
## 什么是依赖注入?
-~~交给 mix 了~~
+[依赖注入](https://zh.wikipedia.org/wiki/%E4%BE%9D%E8%B5%96%E6%B3%A8%E5%85%A5)
+
+> 在软件工程中,**依赖注入**(dependency injection)的意思为,给予调用方它所需要的事物。 “依赖”是指可被方法调用的事物。依赖注入形式下,调用方不再直接使用“依赖”,取而代之是“注入” 。“注入”是指将“依赖”传递给调用方的过程。在“注入”之后,调用方才会调用该“依赖。 传递依赖给调用方,而不是让让调用方直接获得依赖,这个是该设计的根本需求。
+
+依赖注入往往起到了分离依赖和调用方的作用,这样一方面能让代码更为整洁可读,一方面可以提升代码的复用性。
## 使用依赖注入
以下通过一个简单的例子来说明依赖注入的使用方法:
-### 编写依赖函数
-
-这里我们编写了一个简单的函数 `depend` 作为依赖函数
-
-```python {7-9}
-from nonebot.log import logger
-from nonebot.params import Depends
-from nonebot import on_command, on_message
+```python {2,7-8,11}
+from nonebot import on_command
+from nonebot.params import Depends # 1.引用 Depends
+from nonebot.adapters.onebot.v11 import MessageEvent
test = on_command("123")
-def depend(state: dict):
- # do something with state
- return {**state, "depend": "depend"}
+async def depend(event: MessageEvent): # 2.编写依赖函数
+ return {"uid": event.get_user_id(), "nickname": event.sender.nickname}
@test.handle()
-async def _(x: dict = Depends(depend)):
- print(x)
+async def _(x: dict = Depends(depend)): # 3.在事件处理函数里声明依赖项
+ print(x["uid"], x["nickname"])
```
-它和普通的事件处理函数并无区别,同样可以接受 `bot`, `event` 等参数,你可以把它当作一个普通的事件处理函数但是去除了装饰器(并没有使用 `matcher.handle()` 等来进行装饰),并且它可以返回任何类型的值。
+如注释所言,可以用三步来说明依赖注入的使用过程:
-在这个例子中,依赖函数接受一个参数:
+1. 引用 `Depends` 。
-- `state: dict`:当前事件处理状态字典。
+2. 编写依赖函数。依赖函数和普通的事件处理函数并无区别,同样可以接收 `bot`, `event`, `state` 等参数,你可以把它当作一个普通的事件处理函数,但是去除了装饰器(没有使用 `matcher.handle()` 等来装饰),并且可以返回任何类型的值。
-并且返回了一个 `state` 的复制以及一个附加的键值 `depend` 。
+ 在这里我们接受了 `event`,并以 `onebot` 的 `MessageEvent` 作为类型标注,返回一个新的字典,包括 `uid` 和 `nickname` 两个键值。
-### Import `Depends`
-
-```python {2}
-from nonebot.log import logger
-from nonebot.params import Depends
-from nonebot import on_command, on_message
-
-test = on_command("123")
-
-def depend(state: dict):
- # do something with state
- return {**state, "depend": "depend"}
-
-@test.handle()
-async def _(x: dict = Depends(depend)):
- print(x)
-```
-
-### 在事件处理函数里声明依赖函数
-
-与 FastAPI 类似,你可以在函数中添加一个新的参数,并且使用 `Depends` 来声明它的依赖。
-
-```python {12}
-from nonebot.log import logger
-from nonebot.params import Depends
-from nonebot import on_command, on_message
-
-test = on_command("123")
-
-def depend(state: dict):
- # do something with state
- return {**state, "depend": "depend"}
-
-@test.handle()
-async def _(x: dict = Depends(depend)):
- print(x)
-```
-
-你需要给 `Depends` 指定一个依赖函数,这个依赖函数的返回值会被作为 `x` 的值。
-
-`Depends` 的首个参数即是依赖函数,或者其他 `Callable` 对象,在之后会对更多形式的依赖对象进行介绍。
+3. 在事件处理函数中声明依赖项。依赖项必须要 `Depends` 包裹依赖函数作为默认值。
:::tip
-参数 `x` 的类型标注并不会影响事件处理函数的运行,类型检查并不会对依赖函数的返回值以及类型标注进行检查。
+请注意,参数 `x` 的类型标注将会影响到事件处理函数的运行,与类型标注不符的值将会导致事件处理函数被跳过。
:::
-当接收到事件时,NoneBot 会进行以下处理:
+:::tip
+事实上,bot、event、state 它们本身只是依赖注入的一个特例,它们无需声明这是依赖即可注入。
+:::
+
+虽然声明依赖项的方式和其他参数如 `bot`, `event` 并无二样,但他的参数有一些限制,必须是**可调用对象**,函数自然是可调用对象,类和生成器也是,我们会在接下来的小节说明。
+
+一般来说,当接收到事件时,`NoneBot2` 会进行以下处理:
+
+1. 准备依赖函数所需要的参数。
+2. 调用依赖函数并获得返回值。
+3. 将返回值作为事件处理函数中的参数值传入。
+
+## 依赖缓存
+
+在使用 `Depends` 包裹依赖函数时,有一个参数 `use_cache` ,它默认为 `True` ,这个参数会决定 `Nonebot2` 在依赖注入的处理中是否使用缓存。
+
+```python {11}
+import random
+from nonebot import on_command
+from nonebot.params import Depends
+
+test = on_command("123")
+
+async def always_run():
+ return random.randint(1, 100)
+
+@test.handle()
+async def _(x: int = Depends(always_run, use_cache=False)):
+ print(x)
+```
+
+:::tip
+缓存是针对单次事件处理来说的,在事件处理中 `Depends` 第一次被调用时,结果存入缓存,在之后都会直接返回缓存中的值,在事件处理结束后缓存就会被清除。
+:::
+
+当使用缓存时,依赖注入会这样处理:
1. 查询缓存,如果缓存中有相应的值,则直接返回。
2. 准备依赖函数所需要的参数。
@@ -102,8 +96,148 @@ async def _(x: dict = Depends(depend)):
4. 将返回值存入缓存。
5. 将返回值作为事件处理函数中的参数值传入。
-## 依赖缓存
+## 同步支持
+
+我们在编写依赖函数时,可以简单地用同步函数,`NoneBot2` 的内部流程会进行处理:
+
+```python {2,8-9,12}
+from nonebot.log import logger
+from nonebot.params import Depends # 1.引用 Depends
+from nonebot import on_command, on_message
+from nonebot.adapters.onebot.v11 import MessageEvent
+
+test = on_command("123")
+
+def depend(event: MessageEvent): # 2.编写同步依赖函数
+ return {"uid": event.get_user_id(), "nickname": event.sender.nickname}
+
+@test.handle()
+async def _(x: dict = Depends(depend)): # 3.在事件处理函数里声明依赖项
+ print(x["uid"], x["nickname"])
+```
## Class 作为依赖
-## Generator 作为依赖
+我们可以看下面的代码段:
+
+```python
+class A:
+ def __init__(self):
+ pass
+a = A()
+```
+
+在我们实例化类 `A` 的时候,其实我们就在**调用**它,类本身也是一个**可调用对象**,所以类可以被 `Depends` 包裹成为依赖项。
+
+因此我们对第一节的代码段做一下改造:
+
+```python {2,7-10,13}
+from nonebot import on_command
+from nonebot.params import Depends # 1.引用 Depends
+from nonebot.adapters.onebot.v11 import MessageEvent
+
+test = on_command("123")
+
+class DependClass: # 2.编写依赖类
+ def __init__(self, event: MessageEvent):
+ self.uid = event.get_user_id()
+ self.nickname = event.sender.nickname
+
+@test.handle()
+async def _(x: DependClass = Depends(DependClass)): # 3.在事件处理函数里声明依赖项
+ print(x.uid, x.nickname)
+```
+
+依然可以用三步说明如何用类作为依赖项:
+
+1. 引用 `Depends` 。
+2. 编写依赖类。类的 `__init__` 函数可以接收 `bot`, `event`, `state` 等参数,在这里我们接受了 `event`,并以 `onebot` 的 `MessageEvent` 作为类型标注。
+3. 在事件处理函数中声明依赖项。当用类作为依赖项时,它会是一个对应的实例,在这里 `x` 就是 `DependClass` 实例。
+
+### 另一种依赖项声明方式
+
+当使用类作为依赖项时,`Depends` 的参数可以为空,`NoneBot2` 会根据参数的类型标注进行推断并进行依赖注入。
+
+```python
+@test.handle()
+async def _(x: DependClass = Depends()): # 在事件处理函数里声明依赖项
+ print(x.uid, x.nickname)
+```
+
+## 生成器作为依赖
+
+:::warning
+`yield` 语句只能写一次,否则会引发异常。
+如果对此有疑问并想探究原因,可以看 [contextmanager](https://docs.python.org/zh-cn/3/library/contextlib.html#contextlib.contextmanager) 和 [asynccontextmanager](https://docs.python.org/zh-cn/3/library/contextlib.html#contextlib.asynccontextmanager) 文档,实际上,`Nonebot2` 的内部就使用了这两个装饰器。
+:::
+
+:::tips
+生成器是 `Python` 高级特性,如果你对此处文档感到疑惑那说明暂时你还用不上这个功能。
+:::
+
+与 `FastAPI` 一样,`NoneBot2` 的依赖注入支持依赖项在事件处理结束后进行一些额外的工作,比如数据库 session 或者网络 IO 的关闭,互斥锁的解锁等等。
+
+要实现上述功能,我们可以用生成器函数作为依赖项,我们用 `yield` 关键字取代 `return` 关键字,并在 `yield` 之后进行额外的工作。
+
+我们可以看下述代码段, 使用 `httpx.AsyncClient` 异步网络 IO:
+
+```python {3,7-10,13}
+import httpx
+from nonebot import on_command
+from nonebot.params import Depends # 1.引用 Depends
+
+test = on_command("123")
+
+async def get_client(): # 2.编写异步生成器函数
+ async with httpx.AsyncClient() as client:
+ yield client
+ print("调用结束")
+
+@test.handle()
+async def _(x: httpx.AsyncClient = Depends(get_client)): # 3.在事件处理函数里声明依赖项
+ resp = await x.get("https://v2.nonebot.dev")
+ # do something
+```
+
+我们用 `yield` 代码段作为生成器函数的“返回”,在事件处理函数里用返回出来的 `client` 做自己需要的工作。在 `NoneBot2` 结束事件处理时,会执行 `yield` 之后的代码。
+
+## 创造可调用对象作为依赖
+
+:::tips
+魔法方法 `__call__` 是 `Python` 高级特性,如果你对此处文档感到疑惑那说明暂时你还用不上这个功能。
+:::
+
+在 `Python` 的里,类的 `__call__` 方法会让类的实例变成**可调用对象**,我们可以利用这个魔法方法做一个简单的尝试:
+
+```python{3,9-14,16,19}
+from typing import Type
+from nonebot.log import logger
+from nonebot.params import Depends # 1.引用 Depends
+from nonebot import on_command
+from nonebot.adapters.onebot.v11 import MessageEvent, GroupMessageEvent
+
+test = on_command("123")
+
+class EventChecker: # 2.编写需要的类
+ def __init__(self, EventClass: Type[MessageEvent]):
+ self.event_class = EventClass
+
+ def __call__(self, event: MessageEvent) -> bool:
+ return isinstance(event, self.event_class)
+
+checker = EventChecker(GroupMessageEvent) # 3.将类实例化
+
+@test.handle()
+async def _(x: bool = Depends(checker)): # 4.在事件处理函数里声明依赖项
+ if x:
+ print("这是群聊消息")
+ else:
+ print("这不是群聊消息")
+```
+
+这是判断 `onebot` 的消息事件是不是群聊消息事件的一个例子,我们可以用四步来说明这个例子:
+
+1. 引用 `Depends` 。
+2. 编写需要的类。类的 `__init__` 函数接收参数 `EventClass`,它将接收事件类本身。类的 `__call__` 函数将接受消息事件对象,并返回一个 `bool` 类型的判定结果。
+3. 将类实例化。我们传入群聊消息事件作为参数实例化 `checker` 。
+4. 在事件处理函数里声明依赖项。`NoneBot2` 将会调用 `checker` 的 `__call__` 方法,返回给参数 `x` 相应的判断结果。
diff --git a/website/docs/advanced/di/overload.md b/website/docs/advanced/di/overload.md
index b1ab1650..9ed910d2 100644
--- a/website/docs/advanced/di/overload.md
+++ b/website/docs/advanced/di/overload.md
@@ -10,19 +10,17 @@ options:
# 事件处理函数重载
-当我们在编写 `nonebot2` 应用时,常常会遇到这样一个问题:该怎么让同一类型的不同事件执行不同的响应逻辑?又或者如何让不同的 `adapter` 针对同一类型的事件作出不同响应?
+当我们在编写 NoneBot2 应用时,常常会遇到这样一个问题:该怎么让同一类型的不同事件执行不同的响应逻辑?又或者如何让不同的 `bot` 针对同一类型的事件作出不同响应?
-针对这个问题, `nonebot2` 提供一个便捷而高效的解决方案:事件处理函数重载机制。简单地说,`handler` (事件处理函数) 会根据其参数的 `type hints` ([PEP484 类型标注](https://www.python.org/dev/peps/pep-0484/)) 来对相对应的 `adapter` 和 `Event` 进行响应,并且会忽略不符合其参数类型标注的情况。
+针对这个问题, NoneBot2 提供一个便捷而高效的解决方案:事件处理函数重载机制。简单地说,`handler`(事件处理函数)会根据其参数的 `type hints`([PEP484 类型标注](https://www.python.org/dev/peps/pep-0484/))来对相对应的 `bot` 和 `event` 进行响应,并且会忽略不符合其参数类型标注的情况。
-
+
:::tip 提示
-
如果想了解更多关于 `inspect` 标准库的信息,可以查看[官方文档](https://docs.python.org/zh-cn/3.9/library/inspect.html)。
-
:::
-下面,我们会以 `CQHTTP` 中的 `群聊消息事件` 和 `私聊消息事件` 为例,对该机制的应用进行简单的介绍。
+下面,我们会以 OneBot 适配器中的群聊消息事件和私聊消息事件为例,对该机制的应用进行简单的介绍。
## 一个例子
@@ -30,16 +28,16 @@ options:
```python
from nonebot import on_command
-from nonebot.adapters.cqhttp import Bot, GroupMessageEvent, PrivateMessageEvent
+from nonebot.adapters.onebot.v11 import Bot, GroupMessageEvent, PrivateMessageEvent
```
-之后,我们可以注册一个 `Matcher` 来响应 `消息事件` 。
+之后,我们可以注册一个 `Matcher` 来响应消息事件。
```python
-matcher = on_command("testoverload")
+matcher = on_command("test_overload")
```
-最后, 我们编写不同的 `handler` 并编写不同的类型标注来实现事件处理函数重载:
+最后,我们编写不同的 `handler` 并编写不同的类型标注来实现事件处理函数重载:
```python
@matcher.handle()
@@ -52,13 +50,13 @@ async def _(bot: Bot, event: PrivateMessageEvent):
await matcher.send("私聊消息事件响应成功!")
```
-此时,我们可以在群聊或私聊中对我们的机器人发送 `testoverload` ,它会在不同的场景做出不同的应答。
+此时,我们可以在群聊或私聊中对我们的机器人发送 `test_overload`,它会在不同的场景做出不同的应答。
这样一个简单的事件处理函数重载就完成了。
## 进阶
-事件处理函数重载机制同样支持被 `matcher.got` 等装饰器装饰的函数。 例如:
+事件处理函数重载机制同样支持被 `matcher.got` 等装饰器装饰的函数。例如:
```python
@matcher.got("key1", prompt="群事件提问")
@@ -72,3 +70,7 @@ async def _(bot: Bot, event: PrivateMessageEvent):
```
只有触发事件符合的函数才会触发装饰器。
+
+:::warning 注意
+bot 和 event 参数具有最高的检查优先级,因此,如果参数类型不符合,所有的依赖项 `Depends` 等都不会被执行。
+:::
diff --git a/website/docs/advanced/di/sync-support.md b/website/docs/advanced/di/sync-support.md
deleted file mode 100644
index 47d6f4df..00000000
--- a/website/docs/advanced/di/sync-support.md
+++ /dev/null
@@ -1,11 +0,0 @@
----
-sidebar_position: 2
-description: 同步函数作为依赖
-
-options:
- menu:
- weight: 61
- category: advanced
----
-
-# 同步支持
diff --git a/website/docs/advanced/export-and-require.md b/website/docs/advanced/export-and-require.md
index c1e7358e..2e87144b 100644
--- a/website/docs/advanced/export-and-require.md
+++ b/website/docs/advanced/export-and-require.md
@@ -7,32 +7,32 @@ options:
# 跨插件访问
-由于 `nonebot2` 独特的插件加载机制,在使用 python 原有的 import 机制来进行插件之间的访问时,很可能会有奇怪的或者意料以外的情况发生。为了避免这种情况的发生,您可以有两种方法来实现跨插件访问:
+由于 NoneBot2 独特的插件加载机制,直接使用 Python 原生 import 机制来进行插件之间的访问时,很可能会发生奇怪或意料以外的情况。为了避免这种情况发生,您可以使用如下方法来实现跨插件访问:
1. 将插件间的要使用的公共代码剥离出来,作为公共文件或者文件夹,提供给插件加以调用。
-2. 使用 `nonebot2` 提供的 `export` 和 `require` 机制,来实现插件间的互相调用。
+2. 使用 NoneBot2 提供的 export 和 require 机制,来实现插件间的互相调用。
+3. 在保证插件被加载的情况下,可以采用 import 来访问。
-第一种方法比较容易理解和实现,这里不再赘述,但需要注意的是,请不要将公共文件或者公共文件夹作为**插件**被 `nonebot2` 加载。
+第一种方法比较容易理解和实现,这里不再赘述,但需要注意的是,请不要将公共文件或者公共文件夹作为**插件**被 NoneBot2 加载。
+第三种方法需要保证插件被加载,插件加载的方式可以参阅[加载插件](../tutorial/plugin/load-plugin)。
-下面将介绍第二种方法—— `export` 和 `require` 机制:
+下面将介绍第二种方法——export 和 require 机制:
## 使用 export 和 require
-现在,假定有两个插件 `pluginA` 和 `pluginB`,需要在 `pluginB` 中调用 `pluginA` 中的一个变量 `varA` 和一个函数 `funcA`。
+现在,假定有两个插件 pluginA 和 pluginB,需要在 pluginB 中调用 pluginA 中的一个变量 `varA` 和一个函数 `funcA`。
-在上面的条件中涉及到了两种操作:一种是在 `pluginA` 的 `导出对象` 操作;而另一种是在 `pluginB` 的 `导入对象` 操作。在 `nonebot2` 中,`导出对象` 的操作用 `export` 机制来实现,`导入对象` 的操作用 `require` 机制来实现。下面,我们将逐一进行介绍。
+在上面的条件中涉及到了两种操作:一种是在 pluginA 的导出对象操作;而另一种是在 pluginB 的导入对象操作。在 NoneBot2 中,导出对象的操作用 export 机制来实现,导入对象的操作用 require 机制来实现。下面,我们将逐一进行介绍。
:::warning 警告
-
-使用这个方法进行跨插件访问时,**需要先加载`导出对象`的插件,再加载`导入对象`的插件。**
-
+使用这个方法进行跨插件访问时,**需要先加载导出对象的插件,再加载导入对象的插件。**
:::
### 使用 export
-在 `pluginA` 中,我们调用 `export` 机制 `导出对象`。
+在 pluginA 中,我们调用 export 机制 导出对象。
-在 `export` 机制调用前,我们需要保证导出的对象已经被定义,比如:
+在 export 机制调用前,我们需要保证导出的对象已经被定义,比如:
```python
varA = "varA"
@@ -42,7 +42,7 @@ def funcA():
return "funcA"
```
-在确保定义之后,我们可以从 `nonebot.plugin` 导入 `export()` 方法, `export()` 方法会返回一个特殊的字典 `export`:
+在确保定义之后,我们可以从 `nonebot.plugin` 导入 `export()` 方法,`export()` 方法会返回一个特殊的字典 `export`:
```python
from nonebot.plugin import export
@@ -50,21 +50,21 @@ from nonebot.plugin import export
export=export()
```
-这个字典可以用来装载导出的对象,它的 key 是对象导出后的命名,value 是对象本身,我们可以直接创建新的 `key` - `value` 对导出对象:
+这个字典可以用来装载导出的对象,它的 key 是对象导出后的命名,value 是对象本身,我们可以直接创建新的 key - value 对导出对象:
```python
export.vA = varA
export.fA = funcA
```
-除此之外,也支持 `嵌套` 导出对象:
+除此之外,也支持嵌套导出对象:
```python
export.sub.vA = varA
export.sub.fA = funcA
```
-特别地,对于 `函数对象` 而言,`export` 支持用 `装饰器` 的方法来导出,因此,我们可以这样定义 `funcA`:
+特别地,对于函数对象而言,export 支持用装饰器的方法来导出,因此,我们可以这样定义 `funcA`:
```python
@export.sub
@@ -72,7 +72,7 @@ def funcA():
return "funcA"
```
-或者:
+或者:
```python
@export
@@ -80,7 +80,7 @@ def funcA():
return "funcA"
```
-通过 `装饰器` 的方法导出函数时,命名固定为函数的命名,也就是说,上面的两个例子等同于:
+通过装饰器的方法导出函数时,命名固定为函数的命名,也就是说,上面的两个例子等同于:
```python
export.sub.funcA = funcA
@@ -90,16 +90,14 @@ export.funcA = funcA
这样,我们就成功导出 `varA` 和 `funcA` 对象了。
-下面我们将介绍如何在 `pluginB` 中导入这些对象。
+下面我们将介绍如何在 pluginB 中导入这些对象。
### 使用 require
-在 `pluginB` 中,我们调用 `require` 机制 `导入对象`。
+在 pluginB 中,我们调用 require 机制导入对象。
:::warning 警告
-
-在导入来自其他插件的对象时, 请确保导出该对象的插件在引用该对象的插件之前加载。如果该插件并未被加载,则会尝试加载,加载失败则会返回 `None`。
-
+在导入来自其他插件的对象时,请确保导出该对象的插件在引用该对象的插件之前加载。如果该插件并未被加载,则会尝试加载,加载失败则会返回 `None`。
:::
我们可以从 `nonebot.plugin` 中导入 `require()` 方法:
@@ -108,17 +106,17 @@ export.funcA = funcA
from nonebot.plugin import require
```
-`require()` 方法的参数是插件名, 它会返回在指定插件中,用 `export()` 方法创建的字典。
+`require()` 方法的参数是插件名,它会返回在指定插件中,用 `export()` 方法创建的字典。
```python
require_A = require('pluginA')
```
-在之前,这个字典已经存入了 `'vA'` - `varA`, `'fA'` - `funcA` 或 `'funcA'` - `funcA` 这样的 `key` - `value` 对。因此在这里我们直接用 `属性` 的方法来获取导入对象:
+在之前,这个字典已经存入了 `'vA'` - `varA`、`'fA'` - `funcA` 或 `'funcA'` - `funcA` 这样的 key - value 对。因此在这里我们直接调用属性来获取导入对象:
```python
varA = require_A.vA
funcA = require_A.fA or require_A.funcA
```
-这样,我们就在 `pluginB` 中成功导入了 `varA` 和 `funcA` 对象了。
+这样,我们就在 pluginB 中成功导入了 `varA` 和 `funcA` 对象了。
diff --git a/website/docs/advanced/images/Handle-Event.png b/website/docs/advanced/images/Handle-Event.png
index 70a12ec7..ab63c489 100644
Binary files a/website/docs/advanced/images/Handle-Event.png and b/website/docs/advanced/images/Handle-Event.png differ
diff --git a/website/docs/advanced/permission.md b/website/docs/advanced/permission.md
index a8ba5738..ef9a0701 100644
--- a/website/docs/advanced/permission.md
+++ b/website/docs/advanced/permission.md
@@ -7,66 +7,61 @@ options:
# 权限控制
-**权限控制**是机器人在实际应用中需要解决的重点问题之一,`Nonebot` 提供了十分完善且灵活的权限控制机制—— `Permission` 机制。接下来我们将对这个机制进行简单的说明。
+**权限控制**是机器人在实际应用中需要解决的重点问题之一,NoneBot2 提供了灵活的权限控制机制——`Permission`,接下来我们将简单说明。
## 应用
-如同 `Rule` 一样, `Permission` 可以在[注册事件响应器](../tutorial/plugin/create-matcher.md)时添加 `permission` 参数来加以应用,这样 `Nonebot` 会在事件响应时检测事件主体的权限。下面我们以 `SUPERUSER` 为例,对该机制的应用做一下介绍。
+如同 `Rule` 一样,`Permission` 可以在[注册事件响应器](../tutorial/plugin/create-matcher.md)时添加 `permission` 参数来加以应用,这样 NoneBot2 会在事件响应时检测事件主体的权限。下面我们以 `SUPERUSER` 为例,对该机制的应用做一下介绍。
```python
from nonebot.permission import SUPERUSER
-from nonebot.adapters import Bot
from nonebot import on_command
matcher = on_command("测试超管", permission=SUPERUSER)
@matcher.handle()
-async def _(bot: Bot):
+async def _():
await matcher.send("超管命令测试成功")
@matcher.got("key1", "超管提问")
-async def _(bot: Bot, event: Event):
- await matcher.send("超管命令got成功")
+async def _():
+ await matcher.send("超管命令 got 成功")
```
在这段代码中,我们事件响应器指定了 `SUPERUSER` 这样一个权限,那么机器人只会响应超级管理员的 `测试超管` 命令,并且会响应该超级管理员的连续对话。
-::: tip 提示
-
-在这里需要强调的是,`Permission` 与 `Rule` 的表现并不相同, `Rule` 只会在初次响应时生效,在余下的对话中并没有限制事件;但是 `Permission` 会持续生效,在连续对话中会一直对事件主体加以限制。
-
+:::tip 提示
+在这里需要强调的是,`Permission` 与 `Rule` 的表现并不相同, `Rule` 只会在初次响应时生效,在余下的对话中并没有限制事件;但是 `Permission` 会持续生效,在连续对话中一直对事件主体加以限制。
:::
## 进阶
-`Permission` 除了可以在注册事件响应器时加以应用,还可以在编写事件处理函数 `handler` 时主动调用,我们可以利用这个特性在一个 `handler` 里对不同权限的事件主体进行区别响应,下面我们以 `CQHTTP` 中的 `GROUP_ADMIN` (普通管理员非群主)和 `GROUP_OWNER` 为例,说明下怎么进行主动调用。
+`Permission` 除了可以在注册事件响应器时加以应用,还可以在编写事件处理函数 `handler` 时主动调用,我们可以利用这个特性在一个 `handler` 里对不同权限的事件主体进行区别响应,下面我们以 OneBot 适配器中的 `GROUP_ADMIN`(普通管理员非群主)和 `GROUP_OWNER` 为例,说明下怎么进行主动调用。
```python
from nonebot import on_command
-from nonebot.adapters.cqhttp import Bot
-from nonebot.adapters.cqhttp import GroupMessageEvent
-from nonebot.adapters.cqhttp import GROUP_ADMIN, GROUP_OWNER
+from nonebot.adapters.onebot.v11 import GroupMessageEvent
+from nonebot.adapters.onebot.v11 import GROUP_ADMIN, GROUP_OWNER
matcher = on_command("测试权限")
@matcher.handle()
-async def _(bot: Bot, event: GroupMessageEvent):
- if await GROUP_ADMIN(bot, event):
+async def _(event: GroupMessageEvent):
+ if await GROUP_ADMIN(event):
await matcher.send("管理员测试成功")
- elif await GROUP_OWNER(bot, event):
+ elif await GROUP_OWNER(event):
await matcher.send("群主测试成功")
else:
await matcher.send("群员测试成功")
-
```
在这段代码里,我们并没有对命令的权限指定,这个命令会响应所有在群聊中的 `测试权限` 命令,但是在 `handler` 里,我们对两个 `Permission` 进行主动调用,从而可以对不同的角色进行不同的响应。
## 自定义
-如同 `Rule` 一样, `Permission` 也是由非负数个 `PermissionChecker` 组成的,但只需其中一个返回 `True` 时就会匹配成功。下面则是 `PermissionChecker` 和 `Permission` 示例:
+如同 `Rule` 一样,`Permission` 也是由非负数个 `PermissionChecker` 组成的,但只需其中一个返回 `True` 时就会匹配成功。下面是自定义 `PermissionChecker` 和 `Permission` 的示例:
```python
from nonebot.adapters import Bot, Event
@@ -86,7 +81,7 @@ def check(arg1, arg2):
return Permission(_checker)
```
-`Permission` 和 `PermissionChecker` 之间可以使用 `或 |` 互相组合:
+`Permission` 和 `PermissionChecker` 之间可以使用 `|`(或符号)互相组合:
```python
from nonebot.permission import Permission
@@ -94,4 +89,4 @@ from nonebot.permission import Permission
Permission(async_checker1) | sync_checker | async_checker2
```
-同样地,如果想用 `Permission(*checkers)` 包裹构造 `Permission` ,函数必须是异步的;但是在利用 `或 |` 符号连接构造时, `Nonebot` 会自动包裹同步函数为异步函数。
+同样地,如果想用 `Permission(*checkers)` 包裹构造 `Permission`,函数必须是异步的;但是在利用 `|`(或符号)连接构造时,NoneBot2 会自动包裹同步函数为异步函数。
diff --git a/website/docs/advanced/publish-plugin.md b/website/docs/advanced/publish-plugin.md
index 47bd15f6..fe6293b3 100644
--- a/website/docs/advanced/publish-plugin.md
+++ b/website/docs/advanced/publish-plugin.md
@@ -9,61 +9,61 @@ options:
## 前注
-本章节仅包含插件发布流程指导,插件开发请查阅 **[创建插件](../tutorial/plugin/config-plugin.md)** 章节与 **[Plugin API 文档](../api/plugin.md)** 。
+本章节仅包含插件发布流程指导,插件开发请查阅[**创建插件**](../tutorial/plugin/introduction.md)章节与[**Plugin API 文档**](../api/plugin/index.md)。
## 插件发布流程
### 发布到 PyPI
-您可以选择任意自己喜欢的方式将您的插件发布到 **[PyPI](https://pypi.org/)** ,如使用 **[setuptools](https://pypi.org/project/setuptools/)** 或 **[poetry](https://pypi.org/project/poetry/)** 进行 PyPI 发布。
+您可以选择自己喜欢的方式将插件发布到 [**PyPI**](https://pypi.org/),如使用 [**setuptools**](https://pypi.org/project/setuptools/) 或 [**Poetry**](https://pypi.org/project/poetry/)。
-发布时,请您为自己的插件取一个清晰易懂的名字。通常而言,一款 NoneBot2 插件名称使用 `nonebot-plugin-` 作为前缀(如`nonebot-plugin-foo`),以 `nonebot_plugin_` 作为导入名的前缀(如`nonebot_plugin_foo`),这并非是强制规范, 而是为了防止与其他 PyPI 包产生冲突, 所以我们推荐您在没有特殊需求的情况下这样做。
+发布时,请您为自己的插件取一个清晰易懂的名字。通常而言,一款 NoneBot2 插件名称使用 `nonebot-plugin-` 作为前缀(如`nonebot-plugin-foo`),以 `nonebot_plugin_` 作为包名的前缀(如`nonebot_plugin_foo`),这并非强制规范,而是为了防止与其他 PyPI 包产生冲突,所以我们推荐您在没有特殊需求的情况下这样做。
-发布后,请确保您的插件已能公开的从 PyPI 访问到,请检查您的插件在 PyPI 的地址:`https://pypi.org/project/<您的Nonebot2插件项目名>`
+发布后,请确保您的插件已能公开的从 PyPI 访问到,试着检查您的插件在 PyPI 的地址,如 `https://pypi.org/project/<您的 NoneBot2 插件项目名>`。
### 托管您的插件源代码
-将插件源代码及相关构建文件(如`pyproject.toml`或`setup.py`等与 PyPI 包构建相关的文件)托管在公开代码仓。
+将插件源代码及相关构建文件(如 `pyproject.toml` 或 `setup.py` 等与 PyPI 包构建相关的文件)托管在公开代码仓。
-请确保您的代码仓地址能够被正确的访问,检查您的插件在代码仓的地址,如 `https://github.com/<您的Github用户名>/<您的插件Github项目名>` 。
+请确保您的代码仓库地址能够被正确的访问,检查您的插件在代码仓的地址,如 `https://github.com/<您的 Github 用户名>/<您的插件 Github 项目名>`。
-### 申请发布到 Nonebot2 插件商店
+### 申请发布到 NoneBot2 插件商店
-完成在 PyPI 的插件发布流程与源代码托管流程后,请您前往 **[NoneBot2 商店](https://v2.nonebot.dev/store.html)** 页面,切换到 **插件** 页签,点击 **发布插件** 按钮。
+完成在 PyPI 的插件发布流程与源代码托管流程后,请您前往 [**NoneBot2 商店**](https://v2.nonebot.dev/store.html)页面,切换到**插件**页签,点击**发布插件**按钮。

如图所示,在弹出的插件信息提交表单内,填入您所要发布的相应插件信息:
```text
-插件名称: 您的Nonebot2插件名称
-插件介绍: 为您的插件提供的简短介绍信息
-PyPI项目名: 您的插件所在的PyPI Project名,如 nonebot-plugin-xxxx
-import包名: 您的插件通过Python导入时使用的包名,如 nonebot_plugin_xxxx
-仓库/主页: 您的插件托管地址,如 https://github.com/<您的Github用户名>/nonebot-plugin-xxxx
-标签: 一个或多个可选颜色的TAG,每填写一个点击添加标签,若要删除,点击标签即可;标签长度不超过10字符,标签个数不超过3个
-特定标签内容Adapter:点击Type的Adapter,将创建一个 a: 开头的标签,填入内容以指定您插件使用的adapter
-特定标签内容Topic:点击Type的Topic,将创建一个 t: 开头的标签,填入内容以指定您插件的主题
+插件名称:您的 NoneBot2 插件名称
+插件介绍:为您的插件提供的简短介绍信息
+PyPI 项目名:您的插件所在的 PyPI Project 名,如 nonebot-plugin-xxxx
+import 包名:您的插件通过 Python 导入时使用的包名,如 nonebot_plugin_xxxx
+仓库/主页:您的插件托管地址,如 https://github.com/<您的 Github 用户名>/nonebot-plugin-xxxx
+标签:一个或多个可选颜色的 TAG,每填写一个点击添加标签,若要删除,点击标签即可;标签长度不超过 10 字符,标签个数不超过 3 个
+特定标签内容 Adapter:点击 Type 的 Adapter,将创建一个 a: 开头的标签,填入内容以指定您插件使用的 adapter
+特定标签内容 Topic:点击 Type 的 Topic,将创建一个 t: 开头的标签,填入内容以指定您插件的主题
```

-完成填写后,请点击 **发布** 按钮,这将自动在 **[NoneBot2](https://github.com/nonebot/nonebot2)** 代码仓内创建发布您的插件的对应 Issue。
+完成填写后,请点击**发布**按钮,这将自动在[**NoneBot2**](https://github.com/nonebot/nonebot2)代码仓内创建发布您的插件的对应 Issue。
### 等待插件发布处理
-您的插件发布 Issue 创建后,将会经过*Nonebot2 Publish Bot*的检查,以确保插件信息正确无误。
+您的插件发布 Issue 创建后,将会经过 _NoneBot2 Publish Bot_ 的检查,以确保插件信息正确无误。
-若您的插件发布 Issue 未通过检查,您可以 **直接修改** Issue 内容以更新发布请求。*Nonebot2 Publish Bot*在您修改 Issue 内容后将会自动重新执行检查。您无需关闭、重新提交发布申请。
+若您的插件发布 Issue 未通过检查,您可以**直接修改** Issue 内容以更新发布请求。_NoneBot2 Publish Bot_ 在您修改 Issue 内容后将会自动重新执行检查。您无需关闭、重新提交发布申请。
之后,NoneBot2 的维护者们将会对插件进行进一步的检查,以确保用户能够正常安装并使用该插件。
-完成这些步骤后,您的插件将会被合并到 **[NoneBot2 商店](https://v2.nonebot.dev/store.html)** ,而您也将成为 **[NoneBot2 贡献者](https://github.com/nonebot/nonebot2/graphs/contributors)** 的一员。
+完成这些步骤后,您的插件将会被合并到 [**NoneBot2 商店**](https://v2.nonebot.dev/store.html),而您也将成为 [**NoneBot2 贡献者**](https://github.com/nonebot/nonebot2/graphs/contributors)中的一员。
## 完成
-恭喜您,经过上述的发布流程,您的插件已经成功发布到 Nonebot2 商店了。
+恭喜您,经过上述的发布流程,您的插件已经成功发布到 NoneBot2 商店了。
-此时,您可以在 **[NoneBot2 商店](https://v2.nonebot.dev/store.html)** 的插件页签查找到您的插件。同时,欢迎您成为 **[NoneBot2 贡献者](https://github.com/nonebot/nonebot2/graphs/contributors)** !
+此时,您可以在 [**NoneBot2 商店**](https://v2.nonebot.dev/store.html)的插件页签查找到您的插件。同时,欢迎您成为 [**NoneBot2 贡献者**](https://github.com/nonebot/nonebot2/graphs/contributors)!
**Congratulations!**
diff --git a/website/docs/advanced/runtime-hook.md b/website/docs/advanced/runtime-hook.md
index cf0dd928..1b77a7b5 100644
--- a/website/docs/advanced/runtime-hook.md
+++ b/website/docs/advanced/runtime-hook.md
@@ -7,17 +7,17 @@ options:
# 钩子函数
-[`钩子编程`](https://zh.wikipedia.org/wiki/%E9%92%A9%E5%AD%90%E7%BC%96%E7%A8%8B)
+[钩子编程](https://zh.wikipedia.org/wiki/%E9%92%A9%E5%AD%90%E7%BC%96%E7%A8%8B)
> 钩子编程(hooking),也称作“挂钩”,是计算机程序设计术语,指通过拦截软件模块间的函数调用、消息传递、事件传递来修改或扩展操作系统、应用程序或其他软件组件的行为的各种技术。处理被拦截的函数调用、事件、消息的代码,被称为钩子(hook)。
-在 `nonebot2` 中有一系列预定义的钩子函数,分为两类:`全局钩子函数` 和 `事件钩子函数` ,这些钩子函数可以用装饰器的形式来使用。
+在 NoneBot2 中有一系列预定义的钩子函数,分为两类:**全局钩子函数**和**事件钩子函数**,这些钩子函数可以用装饰器的形式来使用。
## 全局钩子函数
-全局钩子函数是指 `nonebot2` 针对其本身运行过程的钩子函数。
+全局钩子函数是指 NoneBot2 针对其本身运行过程的钩子函数。
-这些钩子函数是由其后端驱动 `driver`来运行的,故需要先获得全局 `driver` 对象:
+这些钩子函数是由其后端驱动 `Driver` 来运行的,故需要先获得全局 `Driver` 对象:
```python
from nonebot import get_driver
@@ -30,7 +30,7 @@ driver=get_driver()
### 启动准备
-这个钩子函数会在 `nonebot2` 启动时运行。
+这个钩子函数会在 NoneBot2 启动时运行。
```python
@driver.on_startup
@@ -40,7 +40,7 @@ async def do_something():
### 终止处理
-这个钩子函数会在 `nonebot2` 终止时运行。
+这个钩子函数会在 NoneBot2 终止时运行。
```python
@driver.on_shutdown
@@ -48,9 +48,9 @@ async def do_something():
pass
```
-### bot 连接处理
+### Bot 连接处理
-这个钩子函数会在 `bot` 通过 `websocket` 连接到 `nonebot2` 时运行。
+这个钩子函数会在 `Bot` 通过 websocket 连接到 NoneBot2 时运行。
```python
@driver.on_bot_connect
@@ -60,7 +60,7 @@ async def do_something(bot: Bot):
### bot 断开处理
-这个钩子函数会在 `bot` 断开与 `nonebot2` 的 `websocket` 连接时运行。
+这个钩子函数会在 `Bot` 断开与 NoneBot2 的 websocket 连接时运行。
```python
@driver.on_bot_disconnect
@@ -92,17 +92,15 @@ async def handle_api_result(bot: Bot, exception: Optional[Exception], api: str,
pass
```
-## 事件处理钩子
+## 事件钩子函数
-这些钩子函数指的是影响 `nonebot2` 进行 `事件处理` 的函数。
+这些钩子函数指的是影响 NoneBot2 进行**事件处理**的函数, 这些函数可以认为跟普通的事件处理函数一样,接受相应的参数。
:::tip 提示
-
-关于 `事件处理` 的流程,可以在[这里](./README.md)查阅。
-
+关于**事件处理**的流程,可以在[这里](./README.md)查阅。
:::
-:::warning 注意
+:::warning
1.在事件处理钩子函数中,与 `matcher` 运行状态相关的函数将不可用,如 `matcher.finish()`
@@ -113,7 +111,7 @@ from nonebot.exception import IgnoredException
@event_preprocessor
-async def do_something(bot: Bot, event: Event, state: T_State):
+async def do_something():
raise IgnoredException("reason")
```
@@ -123,48 +121,48 @@ async def do_something(bot: Bot, event: Event, state: T_State):
### 事件预处理
-这个钩子函数会在 `Event` 上报到 `nonebot2` 时运行
+这个钩子函数会在 `Event` 上报到 NoneBot2 时运行
```python
from nonebot.message import event_preprocessor
@event_preprocessor
-async def do_something(bot: Bot, event: Event, state: T_State):
+async def do_something():
pass
```
### 事件后处理
-这个钩子函数会在 `nonebot2` 处理 `Event` 后运行
+这个钩子函数会在 NoneBot2 处理 `Event` 后运行
```python
from nonebot.message import event_postprocessor
@event_postprocessor
-async def do_something(bot: Bot, event: Event, state: T_State):
+async def do_something():
pass
```
### 运行预处理
-这个钩子函数会在 `nonebot2`运行 `matcher` 前运行。
+这个钩子函数会在 NoneBot2 运行 `matcher` 前运行。
```python
from nonebot.message import run_preprocessor
@run_preprocessor
-async def do_something(matcher: Matcher, bot: Bot, event: Event, state: T_State):
+async def do_something():
pass
```
### 运行后处理
-这个钩子函数会在 `nonebot2`运行 `matcher` 后运行。
+这个钩子函数会在 NoneBot2 运行 `matcher` 后运行。
```python
from nonebot.message import run_postprocessor
@run_postprocessor
-async def do_something(matcher: Matcher, exception: Optional[Exception], bot: Bot, event: Event, state: T_State):
+async def do_something():
pass
```
diff --git a/website/docs/advanced/scheduler.md b/website/docs/advanced/scheduler.md
index dd45a15b..20c1d1d1 100644
--- a/website/docs/advanced/scheduler.md
+++ b/website/docs/advanced/scheduler.md
@@ -7,33 +7,33 @@ options:
# 定时任务
-[`APScheduler`](https://apscheduler.readthedocs.io/en/3.x/) —— Advanced Python Scheduler
+[APScheduler](https://apscheduler.readthedocs.io/en/3.x/) —— Advanced Python Scheduler
> Advanced Python Scheduler (APScheduler) is a Python library that lets you schedule your Python code to be executed later, either just once or periodically. You can add new jobs or remove old ones on the fly as you please. If you store your jobs in a database, they will also survive scheduler restarts and maintain their state. When the scheduler is restarted, it will then run all the jobs it should have run while it was offline.
## 从 NoneBot v1 迁移
-`APScheduler` 作为 `nonebot` v1 的可选依赖,为众多 bot 提供了方便的定时任务功能。`nonebot2` 已将 `APScheduler` 独立为 `nonebot_plugin_apscheduler` 插件,你可以在 [商店](https://v2.nonebot.dev/store.html) 中找到它。
+`APScheduler` 作为 NoneBot v1 的可选依赖,为众多 bot 提供了方便的定时任务功能。NoneBot2 已将 `APScheduler` 独立为 nonebot_plugin_apscheduler 插件,你可以在[商店](https://v2.nonebot.dev/store.html)中找到它。
-相比于 `nonebot` v1,`nonebot` v2 只需要安装插件并修改 `scheduler` 的导入方式即可完成迁移。
+相比于 NoneBot v1,NoneBot v2 只需要安装插件并修改 `scheduler` 的导入方式即可完成迁移。
## 安装插件
### 通过 nb-cli
-如正在使用 `nb-cli` 构建项目,你可以从插件市场复制安装命令或手动输入以下命令以添加 `nonebot_plugin_apscheduler`。
+如正在使用 nb-cli 构建项目,你可以从插件市场复制安装命令或手动输入以下命令以添加 nonebot_plugin_apscheduler。
```bash
nb plugin install nonebot_plugin_apscheduler
```
:::tip 提示
-`nb-cli` 默认通过 `pypi` 安装,你可以添加命令参数 `-i [mirror]` 或 `--index [mirror]` 以使用镜像源安装。
+nb-cli 默认通过 PyPI 安装,你可以添加命令参数 `-i [mirror]` 或 `--index [mirror]` 以使用镜像源安装。
:::
-### 通过 poetry
+### 通过 Poetry
-执行以下命令以添加 `nonebot_plugin_apscheduler`
+执行以下命令以添加 nonebot_plugin_apscheduler
```bash
poetry add nonebot-plugin-apscheduler
@@ -45,7 +45,7 @@ poetry add nonebot-plugin-apscheduler
## 快速上手
-1. 在需要设置定时任务的插件中,通过 `nonebot.require` 从 `nonebot_plugin_apscheduler` 导入 `scheduler` 对象
+1. 在需要设置定时任务的插件中,通过 `nonebot.require` 从 nonebot_plugin_apscheduler 导入 `scheduler` 对象
2. 在该对象的基础上,根据 `APScheduler` 的使用方法进一步配置定时任务
@@ -69,11 +69,11 @@ scheduler.add_job(run_every_day_from_program_start, "interval", days=1, id="xxx"
为了使插件能够实现定时任务,需要先将 `scheduler` 对象导入插件。
-`nonebot2` 提供了 `nonebot.require` 方法来实现导入其他插件的内容,此处我们使用这个方法来导入 `scheduler` 对象。
+NoneBot2 提供了 `nonebot.require` 方法来实现导入其他插件的内容,此处我们使用这个方法来导入 `scheduler` 对象。
-`nonebot` 使用的 `scheduler` 对象为 `AsyncScheduler` 。
+NoneBot2 使用的 `scheduler` 对象为 `AsyncScheduler` 。
-> 使用该方法传入的插件本身也需要有对应实现,关于该方法的更多介绍可以参阅 [这里](./export-and-require.md)
+> 使用该方法传入的插件本身也需要有对应实现,关于该方法的更多介绍可以参阅[这里](./export-and-require.md)
```python
from nonebot import require
@@ -87,10 +87,10 @@ scheduler = require("nonebot_plugin_apscheduler").scheduler
### 配置插件选项
-根据项目的 `.env` 文件设置,向 `.env.*` 或 `bot.py` 文件添加 `nonebot_plugin_apscheduler` 的可选配置项
+根据项目的 `.env` 文件设置,向 `.env.*` 或 `bot.py` 文件添加 nonebot_plugin_apscheduler 的可选配置项
:::warning 注意
-`.env.*` 文件的编写应遵循 nonebot2 对 `.env.*` 文件的编写要求
+`.env.*` 文件的编写应遵循 NoneBot2 对 `.env.*` 文件的编写要求
:::
#### `apscheduler_autostart`
@@ -101,7 +101,7 @@ scheduler = require("nonebot_plugin_apscheduler").scheduler
是否自动启动 `APScheduler`。
-对于大多数情况,我们需要在 `nonebot2` 项目被启动时启动定时任务,则此处设为 `true`
+对于大多数情况,我们需要在 NoneBot2 项目被启动时启动定时任务,则此处设为 `true`
##### 在 `.env` 中添加
diff --git a/website/docs/api/adapters/_category_.json b/website/docs/api/adapters/_category_.json
index 3714fde8..a2253e3d 100644
--- a/website/docs/api/adapters/_category_.json
+++ b/website/docs/api/adapters/_category_.json
@@ -1,3 +1,3 @@
{
- "position": 14
+ "position": 15
}
diff --git a/website/versioned_docs/version-2.0.0-beta.1/api/drivers/_category_.json b/website/docs/api/dependencies/_category_.json
similarity index 100%
rename from website/versioned_docs/version-2.0.0-beta.1/api/drivers/_category_.json
rename to website/docs/api/dependencies/_category_.json
diff --git a/website/docs/api/drivers/_category_.json b/website/docs/api/drivers/_category_.json
index 6bd1772a..3714fde8 100644
--- a/website/docs/api/drivers/_category_.json
+++ b/website/docs/api/drivers/_category_.json
@@ -1,3 +1,3 @@
{
- "position": 13
+ "position": 14
}
diff --git a/website/docs/api/plugin/_category_.json b/website/docs/api/plugin/_category_.json
new file mode 100644
index 00000000..14e3de02
--- /dev/null
+++ b/website/docs/api/plugin/_category_.json
@@ -0,0 +1,3 @@
+{
+ "position": 12
+}
diff --git a/website/docs/start/editor-support.md b/website/docs/start/editor-support.md
index 6afe0b3c..559561fa 100644
--- a/website/docs/start/editor-support.md
+++ b/website/docs/start/editor-support.md
@@ -5,7 +5,7 @@ description: 编辑器支持
# 编辑器支持
-框架基于 [PEP484](https://www.python.org/dev/peps/pep-0484/), [PEP 561](https://www.python.org/dev/peps/pep-0517/), [PEP8](https://www.python.org/dev/peps/pep-0008/) 等规范进行开发并且是 **Fully Typed**。框架使用 `pyright` (`pylance`) 工具进行类型检查,确保代码可以被编辑器正确解析。
+框架基于 [PEP484](https://www.python.org/dev/peps/pep-0484/)、[PEP 561](https://www.python.org/dev/peps/pep-0517/)、[PEP8](https://www.python.org/dev/peps/pep-0008/) 等规范进行开发并且是 **Fully Typed**。框架使用 `pyright`(`pylance`)工具进行类型检查,确保代码可以被编辑器正确解析。
## 编辑器推荐配置
diff --git a/website/docs/start/install-adapter.md b/website/docs/start/install-adapter.md
deleted file mode 100644
index 1959c619..00000000
--- a/website/docs/start/install-adapter.md
+++ /dev/null
@@ -1,40 +0,0 @@
----
-sidebar_position: 2
-description: 通过脚手架, pip 安装适配器
----
-
-# 安装协议适配器
-
-## 查看
-
-前往 [商店](/store) 即可查看所有协议适配器。
-
-或者使用 `nb-cli` 命令行查看:
-
-```bash
-nb adapter list
-```
-
-## 安装
-
-前往 [商店](/store) 点击复制 `nb-cli` 安装命令至命令行执行即可安装。
-
-或者自行输入命令安装:
-
-```bash
-nb adapter install
-```
-
-或者使用交互模式安装:
-
-```bash
-nb adapter install
-```
-
-也可以使用 `pip` 安装
-
-```bash
-pip install
-```
-
-
diff --git a/website/docs/start/install-adapter.mdx b/website/docs/start/install-adapter.mdx
new file mode 100644
index 00000000..1c2f6d11
--- /dev/null
+++ b/website/docs/start/install-adapter.mdx
@@ -0,0 +1,45 @@
+---
+sidebar_position: 2
+description: 通过脚手架或 pip 安装适配器
+---
+
+import Asciinema from "@site/src/components/Asciinema";
+
+# 安装协议适配器
+
+## 查看
+
+前往[商店](/store)即可查看所有协议适配器。
+
+或者使用 nb-cli 命令行查看:
+
+```bash
+nb adapter list
+```
+
+## 安装
+
+前往[商店](/store)点击复制 nb-cli 安装命令至命令行执行即可安装。
+
+或者自行输入命令安装:
+
+```bash
+nb adapter install
+```
+
+或者使用交互模式安装:
+
+```bash
+nb adapter install
+```
+
+也可以使用 pip 安装
+
+```bash
+pip install
+```
+
+
diff --git a/website/docs/start/install-driver.md b/website/docs/start/install-driver.md
deleted file mode 100644
index 8845821f..00000000
--- a/website/docs/start/install-driver.md
+++ /dev/null
@@ -1,42 +0,0 @@
----
-sidebar_position: 1
-description: 通过脚手架, pip 安装驱动器
----
-
-# 安装驱动器
-
-NoneBot 在默认安装情况下内置了 `fastapi` 服务端驱动器,其他驱动器如 `httpx`, `aiohttp` 则需要额外安装。
-
-## 查看
-
-前往 [商店](/store) 即可查看所有驱动器。
-
-或者使用 `nb-cli` 命令行查看:
-
-```bash
-nb driver list
-```
-
-## 安装
-
-前往 [商店](/store) 点击复制 `nb-cli` 安装命令至命令行执行即可安装。
-
-或者自行输入命令安装:
-
-```bash
-nb driver install
-```
-
-或者使用交互模式安装:
-
-```bash
-nb driver install
-```
-
-也可以使用 `pip` 安装
-
-```bash
-pip install
-```
-
-
diff --git a/website/docs/start/install-driver.mdx b/website/docs/start/install-driver.mdx
new file mode 100644
index 00000000..983faa5c
--- /dev/null
+++ b/website/docs/start/install-driver.mdx
@@ -0,0 +1,47 @@
+---
+sidebar_position: 1
+description: 通过脚手架或 pip 安装驱动器
+---
+
+import Asciinema from "@site/src/components/Asciinema";
+
+# 安装驱动器
+
+NoneBot 在默认安装情况下内置了 `fastapi` 服务端驱动器,其他驱动器如 `httpx`、`aiohttp` 则需要额外安装。
+
+## 查看
+
+前往[商店](/store)即可查看所有驱动器。
+
+或者使用 nb-cli 命令行查看:
+
+```bash
+nb driver list
+```
+
+## 安装
+
+前往[商店](/store)点击复制 nb-cli 安装命令至命令行执行即可安装。
+
+或者自行输入命令安装:
+
+```bash
+nb driver install
+```
+
+或者使用交互模式安装:
+
+```bash
+nb driver install
+```
+
+也可以使用 pip 安装
+
+```bash
+pip install
+```
+
+
diff --git a/website/docs/start/install-plugin.md b/website/docs/start/install-plugin.md
deleted file mode 100644
index a2acd1e1..00000000
--- a/website/docs/start/install-plugin.md
+++ /dev/null
@@ -1,40 +0,0 @@
----
-sidebar_position: 3
-description: 通过脚手架, pip 安装插件
----
-
-# 安装第三方插件
-
-## 查看
-
-前往 [商店](/store) 即可查看所有发布的插件。
-
-或者使用 `nb-cli` 命令行查看:
-
-```bash
-nb plugin list
-```
-
-## 安装
-
-前往 [商店](/store) 点击复制 `nb-cli` 安装命令至命令行执行即可安装。
-
-或者自行输入命令安装:
-
-```bash
-nb plugin install
-```
-
-或者使用交互模式安装:
-
-```bash
-nb plugin install
-```
-
-也可以使用 `pip` 安装
-
-```bash
-pip install
-```
-
-
diff --git a/website/docs/start/install-plugin.mdx b/website/docs/start/install-plugin.mdx
new file mode 100644
index 00000000..def46369
--- /dev/null
+++ b/website/docs/start/install-plugin.mdx
@@ -0,0 +1,45 @@
+---
+sidebar_position: 3
+description: 通过脚手架或 pip 安装插件
+---
+
+import Asciinema from "@site/src/components/Asciinema";
+
+# 安装第三方插件
+
+## 查看
+
+前往[商店](/store)即可查看所有发布的插件。
+
+或者使用 nb-cli 命令行查看:
+
+```bash
+nb plugin list
+```
+
+## 安装
+
+前往[商店](/store)点击复制 nb-cli 安装命令至命令行执行即可安装。
+
+或者自行输入命令安装:
+
+```bash
+nb plugin install
+```
+
+或者使用交互模式安装:
+
+```bash
+nb plugin install
+```
+
+也可以使用 pip 安装
+
+```bash
+pip install
+```
+
+
diff --git a/website/docs/start/installation.md b/website/docs/start/installation.md
deleted file mode 100644
index dfa8d798..00000000
--- a/website/docs/start/installation.md
+++ /dev/null
@@ -1,75 +0,0 @@
----
-sidebar_position: 0
-description: 通过脚手架, PyPI, GitHub 安装 NoneBot
-
-options:
- menu:
- weight: 10
- category: guide
----
-
-# 安装 NoneBot
-
-:::warning 注意
-请确保你的 Python 版本 >= 3.7.3。
-:::
-
-:::warning 注意
-请在安装 NoneBot v2 之前卸载 NoneBot v1
-
-```bash
-pip uninstall nonebot
-```
-
-:::
-
-## 通过脚手架安装 (推荐)
-
-1. (可选) 使用你喜欢的 Python 环境管理工具 (如 `poetry`, `venv`, `conda` 等) 创建新的虚拟环境
-2. 使用 `pip` 或 其他包管理工具 安装 `nb-cli`,`nonebot2` 会作为其依赖被一起安装
-
- ```bash
- pip install nb-cli
- ```
-
-
-
-:::important 提示
-`nb-cli` 的使用方法详见 [使用脚手架](./nb-cli.md)
-:::
-
-## 不使用脚手架 (纯净安装)
-
-如果你不想使用脚手架,可以直接安装 `nonebot2`,并自行完成开发配置。
-
-```bash
-pip install nonebot2
-# 也可以通过 poetry 安装
-poetry add nonebot2
-```
-
-## 从 GitHub 安装
-
-如果你需要使用最新的(可能**尚未发布**的)特性,可以直接从 GitHub 仓库安装:
-
-:::warning 注意
-直接从 Github 仓库中安装意味着你将使用最新提交的代码,它们并没有进行充分的稳定性测试
-
-在任何情况下请不要将其应用于生产环境!
-:::
-
-```bash title="Install From Github"
-# master分支
-poetry add git+https://github.com/nonebot/nonebot2.git#master
-# dev分支
-poetry add git+https://github.com/nonebot/nonebot2.git#dev
-```
-
-或者在克隆 Git 仓库后手动安装:
-
-```bash
-git clone https://github.com/nonebot/nonebot2.git
-cd nonebot2
-poetry install --no-dev # 推荐
-pip install . # 不推荐
-```
diff --git a/website/docs/start/installation.mdx b/website/docs/start/installation.mdx
new file mode 100644
index 00000000..87730ed2
--- /dev/null
+++ b/website/docs/start/installation.mdx
@@ -0,0 +1,80 @@
+---
+sidebar_position: 0
+description: 通过脚手架、PyPI 或 GitHub 安装 NoneBot2
+
+options:
+ menu:
+ weight: 10
+ category: guide
+---
+
+import Asciinema from "@site/src/components/Asciinema";
+
+# 安装 NoneBot2
+
+:::warning 注意
+请确保你的 Python 版本 >= 3.7.3。
+:::
+
+:::warning 注意
+请在安装 NoneBot v2 之前卸载 NoneBot v1
+
+```bash
+pip uninstall nonebot
+```
+
+:::
+
+## 通过脚手架安装(推荐)
+
+1. (可选)使用你喜欢的 Python 环境管理工具(如 Poetry、venv、Conda 等)创建新的虚拟环境
+2. 使用 pip 或其他包管理工具安装 nb-cli,NoneBot2 会作为其依赖被一起安装
+
+ ```bash
+ pip install nb-cli
+ ```
+
+
+
+:::important 提示
+nb-cli 的使用方法详见[使用脚手架](./nb-cli.md)
+:::
+
+## 不使用脚手架(纯净安装)
+
+如果你不想使用脚手架,可以直接安装 NoneBot2,并自行完成开发配置。
+
+```bash
+pip install nonebot2
+# 也可以通过 Poetry 安装
+poetry add nonebot2
+```
+
+## 从 GitHub 安装
+
+如果你需要使用最新的(可能**尚未发布**的)特性,可以直接从 GitHub 仓库安装:
+
+:::warning 注意
+直接从 GitHub 仓库中安装意味着你将使用最新提交的代码,它们并没有进行充分的稳定性测试
+
+在任何情况下请不要将其应用于生产环境!
+:::
+
+```bash title="Install From GitHub"
+# master分支
+poetry add git+https://github.com/nonebot/nonebot2.git#master
+# dev分支
+poetry add git+https://github.com/nonebot/nonebot2.git#dev
+```
+
+或者在克隆 Git 仓库后手动安装:
+
+```bash
+git clone https://github.com/nonebot/nonebot2.git
+cd nonebot2
+poetry install --no-dev # 推荐
+pip install . # 不推荐
+```
diff --git a/website/docs/start/nb-cli.md b/website/docs/start/nb-cli.md
index 6472d4e7..8ee75185 100644
--- a/website/docs/start/nb-cli.md
+++ b/website/docs/start/nb-cli.md
@@ -10,4 +10,75 @@ options:
# 使用脚手架
-
+## 安装
+
+```bash
+pip install nb-cli
+```
+
+## 初次使用
+
+在安装完成之后,即可在命令行使用 nb-cli 的命令 `nb` 进行开发:
+
+```bash
+# 直接使用 nb 命令
+nb
+# 或使用 Python 执行 module
+python -m nb_cli
+```
+
+:::warning 注意
+通常情况下,你可以直接在命令行使用 `nb` 命令,但如果命令行出现 `Command not found` 错误,这是由于环境变量 `PATH` 没有正确配置或未配置导致的,可以使用第二种方式代替。
+:::
+
+## 使用方式
+
+nb-cli 具有两种使用方式:
+
+1. 命令行指令
+
+ 查看帮助信息:
+
+ ```bash
+ $ nb --help
+ Usage: nb [OPTIONS] COMMAND [ARGS]...
+
+ Options:
+ -V, --version Show the version and exit.
+ --help Show this message and exit.
+
+ ...
+ ```
+
+ 查看子命令帮助:
+
+ ```bash
+ $ nb plugin --help
+ Usage: nb plugin [OPTIONS] COMMAND [ARGS]...
+
+ Manage Bot Plugin.
+
+ Options:
+ --help Show this message and exit.
+
+ ...
+ ```
+
+2. 交互式选择(支持鼠标)
+
+ 交互式选择菜单:
+
+ ```bash
+ $ nb
+ Welcome to NoneBot CLI!
+ [?] What do you want to do? (Use ↑ and ↓ to choose, Enter to submit)
+ ...
+ ```
+
+ 交互式子命令菜单:
+
+ ```bash
+ $ nb plugin
+ [?] What do you want to do? (Use ↑ and ↓ to choose, Enter to submit)
+ ...
+ ```
diff --git a/website/docs/start/question.md b/website/docs/start/question.md
index 41e30d5c..6ec940f2 100644
--- a/website/docs/start/question.md
+++ b/website/docs/start/question.md
@@ -7,22 +7,22 @@ description: 如何获取帮助
如果在安装或者开发过程中遇到了任何问题,可以通过以下方式解决:
-1. 点击下方链接前往 GitHub ~~点击 star~~ ,前往 Issues 页面,在 `New Issue` Template 中选择 `Question`
+1. 点击下方链接前往 GitHub,前往 Issues 页面,在 `New Issue` Template 中选择 `Question`
- NoneBot2: [](https://github.com/nonebot/nonebot2)
+ NoneBot2:[](https://github.com/nonebot/nonebot2)
-2. 通过 QQ 群 (点击下方链接直达)
+2. 通过 QQ 群(点击下方链接直达)
[](https://jq.qq.com/?_wv=1027&k=5OFifDh)
3. 通过 QQ 频道
- 前往 QQ 频道搜索 `NoneBot` 点击加入
+ 前往 QQ 频道搜索 NoneBot 点击加入
-4. 通过 Telegram 群 (点击下方链接直达)
+4. 通过 Telegram 群(点击下方链接直达)
[](https://t.me/cqhttp)
-5. 通过 Discord 服务器 (点击下方链接直达)
+5. 通过 Discord 服务器(点击下方链接直达)
[](https://discord.gg/VKtE6Gdc4h)
diff --git a/website/docs/tutorial/add-custom-api.md b/website/docs/tutorial/add-custom-api.md
new file mode 100644
index 00000000..b4cb8f74
--- /dev/null
+++ b/website/docs/tutorial/add-custom-api.md
@@ -0,0 +1,42 @@
+---
+sidebar_position: 10
+description: 扩展自定义服务端 API
+---
+
+# 添加自定义 API
+
+由于 NoneBot2 可以使用 `ReverseDriver` (即服务端框架)来进行驱动,因此可以将 NoneBot2 来作为一个服务端程序来提供 API 接口等功能。
+
+在扩展 API 之前,你首先需要确保 NoneBot2 使用的是 `ReverseDriver`,详情可以参考 [选择驱动器](./choose-driver.md)。下面我们以 FastAPI 驱动器为例,来演示如何添加自定义 API。
+
+## 获取 APP 实例
+
+在定义 API 接口之前,需要先获取到驱动器框架的 APP 实例。
+
+```python {4}
+import nonebot
+from fastapi import FastAPI
+
+app: FastAPI = nonebot.get_app()
+
+@app.get("/api")
+async def custom_api():
+ return {"message": "Hello, world!"}
+```
+
+## 添加接口
+
+在获取到当前驱动器的 APP 实例后,即可以直接使用驱动器框架提供的方法来添加 API 接口。
+
+在下面的代码中,我们添加了一个 `GET` 类型的 `/api` 接口,具体方法参考 [FastAPI 文档](https://fastapi.tiangolo.com/)。
+
+```python {6-8}
+import nonebot
+from fastapi import FastAPI
+
+app: FastAPI = nonebot.get_app()
+
+@app.get("/api")
+async def custom_api():
+ return {"message": "Hello, world!"}
+```
diff --git a/website/docs/tutorial/call-api.md b/website/docs/tutorial/call-api.md
new file mode 100644
index 00000000..1971ef51
--- /dev/null
+++ b/website/docs/tutorial/call-api.md
@@ -0,0 +1,29 @@
+---
+sidebar_position: 8
+description: 调用机器人平台 API,完成更多的功能
+
+options:
+ menu:
+ weight: 29
+ category: guide
+---
+
+# 调用平台 API
+
+在使用机器人功能时,除了发送消息以外,还可能需要调用机器人平台的 API 来完成更多的功能。
+
+NoneBot 提供了两种方式来调用机器人平台 API,两种方式都需要首先获得 Bot 实例,然后调用相应的方法。
+
+例如,如果需要调用机器人平台的 `get_user_info` API,可以这样做:
+
+```python
+from nonebot import get_bot
+
+bot = get_bot("bot_id")
+result = await bot.get_user_info(user_id=12345678)
+await bot.call_api("get_user_info", user_id=12345678)
+```
+
+:::tip 提示
+API 由平台提供,请参考平台文档。
+:::
diff --git a/website/docs/tutorial/choose-driver.md b/website/docs/tutorial/choose-driver.md
index b157b128..66f56f4b 100644
--- a/website/docs/tutorial/choose-driver.md
+++ b/website/docs/tutorial/choose-driver.md
@@ -15,17 +15,17 @@ options:
:::
:::tip 提示
-如何**安装**驱动器请参考 [安装驱动器](../start/install-driver.md)
+如何**安装**驱动器请参考[安装驱动器](../start/install-driver.mdx)。
-如何**使用**驱动器请参考 [配置](./configuration.md#driver)
+如何**使用**驱动器请参考[配置](./configuration.md#driver)。
:::
## 驱动器的类型
驱动器的类型有两种:
-- `ForwardDriver`: 即客户端类型驱动器,多用于使用 HTTP 轮询,WebSocket 连接服务器的情形。
-- `ReverseDriver`: 即服务端类型驱动器,多用于使用 WebHook 情形。
+- `ForwardDriver`:即客户端类型驱动器,多用于使用 HTTP 轮询,WebSocket 连接服务器的情形。
+- `ReverseDriver`:即服务端类型驱动器,多用于使用 WebHook 情形。
其中 `ReverseDriver` 可以配合 `ForwardDriver` 一起使用,即可以同时使用客户端功能和服务端功能。
@@ -35,8 +35,8 @@ options:
### ForwardDriver
-1. 异步发送 HTTP 请求,自定义 `HTTP Method`, `URL`, `Header`, `Body`, `Cookie`, `Proxy`, `Timeout` 等。
-2. 异步建立 WebSocket 连接上下文,自定义 `WebSocket URL`, `Header`, `Cookie`, `Proxy`, `Timeout` 等。
+1. 异步发送 HTTP 请求,自定义 `HTTP Method`、`URL`、`Header`、`Body`、`Cookie`、`Proxy`、`Timeout` 等。
+2. 异步建立 WebSocket 连接上下文,自定义 `WebSocket URL`、`Header`、`Cookie`、`Proxy`、`Timeout` 等。
### ReverseDriver
@@ -46,17 +46,17 @@ options:
## 内置驱动器
-### FastAPI (默认)
+### FastAPI(默认)
-类型: `ReverseDriver`
+类型:`ReverseDriver`
> FastAPI is a modern, fast (high-performance), web framework for building APIs with Python 3.6+ based on standard Python type hints.
-FastAPI 是一个易上手、高性能的异步 Web 框架,具有极佳的编写体验,可以挂载其他 ASGI, WSGI 应用。
+FastAPI 是一个易上手、高性能的异步 Web 框架,具有极佳的编写体验,可以挂载其他 ASGI、WSGI 应用。
-FastAPI: [文档](https://fastapi.tiangolo.com/), [仓库](https://github.com/tiangolo/fastapi)
+FastAPI:[文档](https://fastapi.tiangolo.com/)、[仓库](https://github.com/tiangolo/fastapi)
-驱动器: [API](../api/drivers/fastapi.md), [源码](https://github.com/nonebot/nonebot2/blob/master/nonebot/drivers/fastapi.py)
+驱动器:[API](../api/drivers/fastapi.md)、[源码](https://github.com/nonebot/nonebot2/blob/master/nonebot/drivers/fastapi.py)
```env
DRIVER=~fastapi
@@ -66,27 +66,33 @@ DRIVER=~fastapi
##### `fastapi_openapi_url`
-类型: `Optional[str]`
-默认值: `None`
-说明: `FastAPI` 提供的 `OpenAPI` JSON 定义地址,如果为 `None`,则不提供 `OpenAPI` JSON 定义。
+类型:`Optional[str]`
+默认值:`None`
+说明:`FastAPI` 提供的 `OpenAPI` JSON 定义地址,如果为 `None`,则不提供 `OpenAPI` JSON 定义。
##### `fastapi_docs_url`
-类型: `Optional[str]`
-默认值: `None`
-说明: `FastAPI` 提供的 `Swagger` 文档地址,如果为 `None`,则不提供 `Swagger` 文档。
+类型:`Optional[str]`
+默认值:`None`
+说明:`FastAPI` 提供的 `Swagger` 文档地址,如果为 `None`,则不提供 `Swagger` 文档。
##### `fastapi_redoc_url`
-类型: `Optional[str]`
-默认值: `None`
-说明: `FastAPI` 提供的 `ReDoc` 文档地址,如果为 `None`,则不提供 `ReDoc` 文档。
+类型:`Optional[str]`
+默认值:`None`
+说明:`FastAPI` 提供的 `ReDoc` 文档地址,如果为 `None`,则不提供 `ReDoc` 文档。
+
+##### `fastapi_include_adapter_schema`
+
+类型:`bool`
+默认值:`True`
+说明:`FastAPI` 提供的 `OpenAPI` JSON 定义中是否包含适配器路由的 `Schema`。
##### `fastapi_reload`
-类型: `bool`
-默认值: `False`
-说明: 是否开启 `uvicorn` 的 `reload` 功能,需要提供 asgi 应用路径。
+类型:`bool`
+默认值:`False`
+说明:是否开启 `uvicorn` 的 `reload` 功能,需要提供 asgi 应用路径。
```python title=bot.py
app = nonebot.get_asgi()
@@ -95,39 +101,39 @@ nonebot.run(app="bot:app")
##### `fastapi_reload_dirs`
-类型: `Optional[List[str]]`
-默认值: `None`
-说明: 重载监控文件夹列表,默认为 uvicorn 默认值
+类型:`Optional[List[str]]`
+默认值:`None`
+说明:重载监控文件夹列表,默认为 uvicorn 默认值
##### `fastapi_reload_delay`
-类型: `Optional[float]`
-默认值: `None`
-说明: 重载延迟,默认为 uvicorn 默认值
+类型:`Optional[float]`
+默认值:`None`
+说明:重载延迟,默认为 uvicorn 默认值
##### `fastapi_reload_includes`
-类型: `Optional[List[str]]`
-默认值: `None`
-说明: 要监听的文件列表,支持 glob pattern,默认为 uvicorn 默认值
+类型:`Optional[List[str]]`
+默认值:`None`
+说明:要监听的文件列表,支持 glob pattern,默认为 uvicorn 默认值
##### `fastapi_reload_excludes`
-类型: `Optional[List[str]]`
-默认值: `None`
-说明: 不要监听的文件列表,支持 glob pattern,默认为 uvicorn 默认值
+类型:`Optional[List[str]]`
+默认值:`None`
+说明:不要监听的文件列表,支持 glob pattern,默认为 uvicorn 默认值
### Quart
-类型: `ReverseDriver`
+类型:`ReverseDriver`
> Quart is an asyncio reimplementation of the popular Flask microframework API.
Quart 是一个类 Flask 的异步版本,拥有与 Flask 非常相似的接口和使用方法。
-Quart: [文档](https://pgjones.gitlab.io/quart/), [仓库](https://gitlab.com/pgjones/quart)
+Quart:[文档](https://pgjones.gitlab.io/quart/)、[仓库](https://gitlab.com/pgjones/quart)
-驱动器: [API](../api/drivers/quart.md), [源码](https://github.com/nonebot/nonebot2/blob/master/nonebot/drivers/quart.py)
+驱动器:[API](../api/drivers/quart.md)、[源码](https://github.com/nonebot/nonebot2/blob/master/nonebot/drivers/quart.py)
```env
DRIVER=~quart
@@ -137,9 +143,9 @@ DRIVER=~quart
##### `quart_reload`
-类型: `bool`
-默认值: `False`
-说明: 是否开启 `uvicorn` 的 `reload` 功能,需要提供 asgi 应用路径。
+类型:`bool`
+默认值:`False`
+说明:是否开启 `uvicorn` 的 `reload` 功能,需要提供 asgi 应用路径。
```python title=bot.py
app = nonebot.get_asgi()
@@ -148,31 +154,31 @@ nonebot.run(app="bot:app")
##### `quart_reload_dirs`
-类型: `Optional[List[str]]`
-默认值: `None`
-说明: 重载监控文件夹列表,默认为 uvicorn 默认值
+类型:`Optional[List[str]]`
+默认值:`None`
+说明:重载监控文件夹列表,默认为 uvicorn 默认值
##### `quart_reload_delay`
-类型: `Optional[float]`
-默认值: `None`
-说明: 重载延迟,默认为 uvicorn 默认值
+类型:`Optional[float]`
+默认值:`None`
+说明:重载延迟,默认为 uvicorn 默认值
##### `quart_reload_includes`
-类型: `Optional[List[str]]`
-默认值: `None`
-说明: 要监听的文件列表,支持 glob pattern,默认为 uvicorn 默认值
+类型:`Optional[List[str]]`
+默认值:`None`
+说明:要监听的文件列表,支持 glob pattern,默认为 uvicorn 默认值
##### `quart_reload_excludes`
-类型: `Optional[List[str]]`
-默认值: `None`
-说明: 不要监听的文件列表,支持 glob pattern,默认为 uvicorn 默认值
+类型:`Optional[List[str]]`
+默认值:`None`
+说明:不要监听的文件列表,支持 glob pattern,默认为 uvicorn 默认值
### HTTPX
-类型: `ForwardDriver`
+类型:`ForwardDriver`
:::warning 注意
本驱动器仅支持 HTTP 请求,不支持 WebSocket 请求。
@@ -180,9 +186,9 @@ nonebot.run(app="bot:app")
> HTTPX is a fully featured HTTP client for Python 3, which provides sync and async APIs, and support for both HTTP/1.1 and HTTP/2.
-HTTPX: [文档](https://www.python-httpx.org/), [仓库](https://github.com/encode/httpx/)
+HTTPX:[文档](https://www.python-httpx.org/)、[仓库](https://github.com/encode/httpx/)
-驱动器: [API](../api/drivers/httpx.md), [源码](https://github.com/nonebot/nonebot2/blob/master/nonebot/drivers/httpx.py)
+驱动器:[API](../api/drivers/httpx.md)、[源码](https://github.com/nonebot/nonebot2/blob/master/nonebot/drivers/httpx.py)
```env
DRIVER=~httpx
@@ -194,7 +200,7 @@ DRIVER=~httpx
### websockets
-类型: `ForwardDriver`
+类型:`ForwardDriver`
:::warning 注意
本驱动器仅支持 WebSocket 请求,不支持 HTTP 请求。
@@ -202,9 +208,9 @@ DRIVER=~httpx
> websockets is a library for building WebSocket servers and clients in Python with a focus on correctness, simplicity, robustness, and performance.
-websockets: [文档](https://websockets.readthedocs.io/en/stable/), [仓库](https://github.com/aaugustin/websockets)
+websockets:[文档](https://websockets.readthedocs.io/en/stable/)、[仓库](https://github.com/aaugustin/websockets)
-驱动器: [API](../api/drivers/websockets.md), [源码](https://github.com/nonebot/nonebot2/blob/master/nonebot/drivers/websockets.py)
+驱动器:[API](../api/drivers/websockets.md)、[源码](https://github.com/nonebot/nonebot2/blob/master/nonebot/drivers/websockets.py)
```env
DRIVER=~websockets
@@ -216,13 +222,13 @@ DRIVER=~websockets
### AIOHTTP
-类型: `ForwardDriver`
+类型:`ForwardDriver`
> Asynchronous HTTP Client/Server for asyncio and Python.
-AIOHTTP: [文档](https://docs.aiohttp.org/en/stable/), [仓库](https://github.com/aio-libs/aiohttp)
+AIOHTTP:[文档](https://docs.aiohttp.org/en/stable/)、[仓库](https://github.com/aio-libs/aiohttp)
-驱动器: [API](../api/drivers/aiohttp.md), [源码](https://github.com/nonebot/nonebot2/blob/master/nonebot/drivers/aiohttp.py)
+驱动器:[API](../api/drivers/aiohttp.md)、[源码](https://github.com/nonebot/nonebot2/blob/master/nonebot/drivers/aiohttp.py)
```env
DRIVER=~aiohttp
diff --git a/website/docs/tutorial/configuration.md b/website/docs/tutorial/configuration.md
index d6af925c..59c611c9 100644
--- a/website/docs/tutorial/configuration.md
+++ b/website/docs/tutorial/configuration.md
@@ -20,12 +20,12 @@ options:
### .env 文件
-NoneBot 在启动时将会从系统环境变量或者 `.env` 文件中寻找变量 `ENVIRONMENT` (大小写不敏感),默认值为 `prod`。
+NoneBot 在启动时将会从系统环境变量或者 `.env` 文件中寻找变量 `ENVIRONMENT`(大小写不敏感),默认值为 `prod`。
这将引导 NoneBot 从系统环境变量或者 `.env.{ENVIRONMENT}` 文件中进一步加载具体配置。
`.env` 文件是基础环境配置文件,该文件中的配置项在不同环境下都会被加载,但会被 `.env.{ENVIRONMENT}` 文件中的配置所覆盖。
-NoneBot 使用 [pydantic](https://pydantic-docs.helpmanual.io/) 进行配置处理,并对 `pydantic` 的行为做出了更改,详见下方说明。
+NoneBot 使用 [Pydantic](https://pydantic-docs.helpmanual.io/) 进行配置处理,并对 Pydantic 的行为做出了更改,详见下方说明。
现在,我们在 `.env` 文件中写入当前环境信息:
@@ -42,29 +42,29 @@ CUSTOM_CONFIG=common config # 这个配置项在任何环境中都会被加载
:::
:::warning 提示
-由于 `pydantic` 使用 JSON 解析配置项,请确保配置项值为 JSON 格式的数据。如:
+由于 Pydantic 使用 JSON 解析配置项,请确保配置项值为 JSON 格式的数据。如:
```bash
list=["123456789", "987654321", 1]
test={"hello": "world"}
```
-如果配置项值解析失败将作为 **字符串** 处理。
+如果配置项值解析失败将作为**字符串**处理。
-特别的,如果配置项 **为空** ,则会从 **系统环境变量** 中获取值,如果不存在则为空字符串。
+特别的,如果配置项**为空**,则会从**系统环境变量**中获取值,如果不存在则为空字符串。
:::
### .env.\* 文件
-NoneBot 默认会从 `.env.{ENVIRONMENT}` 文件加载配置,但是可以在 NoneBot 初始化时指定加载某个环境配置文件: `nonebot.init(_env_file=".env.dev")`,这将忽略你在 `.env` 中设置的 `ENVIRONMENT` 。
+NoneBot 默认会从 `.env.{ENVIRONMENT}` 文件加载配置,但是可以在 NoneBot 初始化时指定加载某个环境配置文件:`nonebot.init(_env_file=".env.dev")`,这将忽略你在 `.env` 中设置的 `ENVIRONMENT` 。
配置语法与 `.env` 文件相同。
示例及说明:
```bash
-HOST=0.0.0.0 # 配置 NoneBot 监听的 IP/主机名
-PORT=8080 # 配置 NoneBot 监听的端口
+HOST=0.0.0.0 # 配置 NoneBot2 监听的 IP/主机名
+PORT=8080 # 配置 NoneBot2 监听的端口
SUPERUSERS=["123456789", "987654321"] # 配置 NoneBot 超级用户
NICKNAME=["awesome", "bot"] # 配置机器人的昵称
COMMAND_START=["/", ""] # 配置命令起始字符
@@ -75,7 +75,7 @@ CUSTOM_CONFIG1="config in env file"
CUSTOM_CONFIG2= # 留空则从系统环境变量读取,如不存在则为空字符串
```
-详细的配置项可以参考 [配置项](#详细配置项) 。
+详细的配置项可以参考[配置项](#详细配置项)。
### 系统环境变量
@@ -100,11 +100,11 @@ config.custom_config4 = "new config after init"
## 配置优先级
-`bot.py` 文件( `nonebot.init` ) > 系统环境变量 > `.env`, `.env.*` 文件
+`bot.py` 文件(`nonebot.init`)> 系统环境变量 > `.env`、`.env.*` 文件
## 读取配置项
-配置项可以通过三种类型的对象获取:`driver`, `adapter`, `bot`。
+配置项可以通过三种类型的对象获取:`driver`、`adapter`、`bot`。
```python
import nonebot
@@ -125,13 +125,13 @@ nonebot.get_driver()._adapters["adapter_name"].config.custom_config
- **类型**: `str`
- **默认值**: `"~fastapi"`
-NoneBot 运行所使用的驱动器。主要分为 `ForwardDriver`, `ReverseDriver` 即客户端和服务端两类。
+NoneBot2 运行所使用的驱动器。主要分为 `ForwardDriver`、`ReverseDriver` 即客户端和服务端两类。
配置格式采用特殊语法:`[:][+[:]]*`
其中 `` 为驱动器模块名,可以使用 `~` 作为 `nonebot.drivers.` 的简写;`` 为驱动器类名,默认为 `Driver`;`` 为驱动器混入的类名,默认为 `Mixin`。
-NoneBot 内置了几个常用驱动器,包括了各类常用功能,常见驱动器配置如下:
+NoneBot2 内置了几个常用驱动器,包括了各类常用功能,常见驱动器配置如下:
```env
DRIVER=~fastapi
@@ -140,6 +140,101 @@ DRIVER=~fastapi+~httpx+~websockets
DRIVER=~fastapi+~aiohttp
```
-各驱动器的功能与区别请参考 [选择驱动器](./choose-driver.md) 。
+各驱动器的功能与区别请参考[选择驱动器](./choose-driver.md)。
-
+### Host
+
+- **类型**: `IPvAnyAddress`
+- **默认值**: `127.0.0.1`
+
+使用 `ReversedDriver` 时,NoneBot2 监听的 IP/主机名。
+
+```env
+HOST=127.0.0.1
+```
+
+### Port
+
+- **类型**: `int`
+- **默认值**: `8080`
+
+使用 `ReversedDriver` 时,NoneBot2 监听的端口。
+
+```env
+PORT=8080
+```
+
+### Log Level
+
+- **类型**: `int | str`
+- **默认值**: `INFO`
+
+NoneBot2 日志输出等级,可以为 `int` 类型等级或等级名称
+
+参考 [`loguru 日志等级`](https://loguru.readthedocs.io/en/stable/api/logger.html#levels)。
+
+```env
+LOG_LEVEL=INFO
+```
+
+:::tip 提示
+日志等级名称应为大写,如 `INFO`。
+:::
+
+### API Timeout
+
+- **类型**: `Optional[float]`
+- **默认值**: `30.0`
+
+API 请求超时时间,单位为秒。
+
+```env
+API_TIMEOUT=30.0
+```
+
+### SuperUsers
+
+- **类型**: `Set[str]`
+- **默认值**: `set()`
+
+机器人超级用户,可以使用权限 [`SUPERUSER`](../api/permission.md#SUPERUSER)。
+
+```env
+SUPERUSERS=["1234567890"]
+```
+
+### Nickname
+
+- **类型**: `Set[str]`
+- **默认值**: `set()`
+
+机器人昵称,通常协议适配器会根据用户是否 @user 或者是否以机器人昵称开头来判断是否是向机器人发送的消息。
+
+```env
+NICKNAME=["bot"]
+```
+
+### Command Start 和 Command Separator
+
+- **类型**: `Set[str]`
+- **默认值**:
+ - Command Start: `{"/"}`
+ - Command Separator: `{"."}`
+
+命令消息的起始符和分隔符。用于 [`command`](../api/rule.md#command) 规则。
+
+```env
+COMMAND_START={"/", "!"}
+COMMAND_SEP={".", "/"}
+```
+
+### Session Expire Timeout
+
+- **类型**: `timedelta`
+- **默认值**: `timedelta(minutes=2)`
+
+用户会话超时时间,配置格式参考 [Datetime Types](https://pydantic-docs.helpmanual.io/usage/types/#datetime-types)。
+
+```env
+SESSION_EXPIRE_TIMEOUT=120
+```
diff --git a/website/docs/tutorial/create-project.md b/website/docs/tutorial/create-project.md
deleted file mode 100644
index 194b651e..00000000
--- a/website/docs/tutorial/create-project.md
+++ /dev/null
@@ -1,67 +0,0 @@
----
-sidebar_position: 0
-description: 创建并运行项目
-
-options:
- menu:
- weight: 20
- category: guide
----
-
-# 创建项目
-
-可以使用 `nb-cli` 或者自行创建完整的项目目录:
-
-```bash
-nb create
-```
-
-## 目录结构
-
-```bash title=Project
-AweSome-Bot
-├── "awesome_bot" # 或是 src
-│ └── "plugins"
-├── ".env" # 可选的
-├── ".env.dev" # 可选的
-├── ".env.prod" # 可选的
-├── .gitignore
-├── "bot.py"
-├── docker-compose.yml
-├── Dockerfile
-├── "pyproject.toml"
-└── README.md
-```
-
-- `awesome_bot/plugins` 或 `src/plugins`: 用于存放编写的 bot 插件
-- `.env`, `.env.dev`, `.env.prod`: 各环境配置文件
-- `bot.py`: bot 入口文件
-- `pyproject.toml`: 项目插件配置文件
-- `Dockerfile`, `docker-compose.yml`: Docker 镜像配置文件
-
-## 启动 Bot
-
-:::warning 提示
-如果您使用如 `VSCode` / `PyCharm` 等 IDE 启动 nonebot,请检查 IDE 当前工作空间目录是否与当前侧边栏打开目录一致。
-
-> 注意:在二者不一致的环境下可能导致 nonebot 读取配置文件和插件等不符合预期
-
-:::
-
-1. 通过 `nb-cli`
-
- ```bash
- nb run [--file=bot.py] [--app=app]
- ```
-
- 其中 `--file` 参数可以指定 bot 入口文件,默认为 `bot.py`,`--app` 参数可以指定 asgi server,默认为 `app`。
-
-2. 直接通过 `python` 启动
-
- ```bash
- python bot.py
- ```
-
-:::tip 提示
-如果在 bot 入口文件内定义了 asgi server, `nb-cli` 将会为你启动**冷重载模式**(当文件发生变动时自动重启 NoneBot 实例)
-:::
diff --git a/website/docs/tutorial/create-project.mdx b/website/docs/tutorial/create-project.mdx
new file mode 100644
index 00000000..d6d0ca23
--- /dev/null
+++ b/website/docs/tutorial/create-project.mdx
@@ -0,0 +1,79 @@
+---
+sidebar_position: 0
+description: 创建并运行项目
+
+options:
+ menu:
+ weight: 20
+ category: guide
+---
+
+import Asciinema from "@site/src/components/Asciinema";
+
+# 创建项目
+
+可以使用 `nb-cli` 或者自行创建完整的项目目录:
+
+```bash
+nb create
+```
+
+
+
+## 目录结构
+
+```tree title=Project
+📦 AweSome-Bot
+├── 📂 awesome_bot # 或是 src
+│ └── 📜 plugins
+├── 📜 .env # 可选的
+├── 📜 .env.dev # 可选的
+├── 📜 .env.prod # 可选的
+├── 📜 .gitignore
+├── 📜 bot.py
+├── 📜 docker-compose.yml
+├── 📜 Dockerfile
+├── 📜 pyproject.toml
+└── 📜 README.md
+```
+
+- `awesome_bot/plugins` 或 `src/plugins`: 用于存放编写的 bot 插件
+- `.env`、`.env.dev`、`.env.prod`: 各环境配置文件
+- `bot.py`: bot 入口文件
+- `pyproject.toml`: 项目插件配置文件
+- `Dockerfile`、`docker-compose.yml`: Docker 镜像配置文件
+
+## 启动 Bot
+
+:::warning 提示
+如果您使用如 `VSCode` / `PyCharm` 等 IDE 启动 nonebot,请检查 IDE 当前工作空间目录是否与当前侧边栏打开目录一致。
+
+> 注意: 在二者不一致的环境下可能导致 nonebot 读取配置文件和插件等不符合预期
+
+:::
+
+1. 通过 nb-cli
+
+ ```bash
+ nb run [--file=bot.py] [--app=app]
+ ```
+
+ 其中 `--file` 参数可以指定 bot 入口文件,默认为 `bot.py`,`--app` 参数可以指定 asgi server,默认为 `app`。
+
+
+
+2. 直接通过 Python 启动
+
+ ```bash
+ python bot.py
+ ```
+
+:::tip 提示
+如果在 bot 入口文件内定义了 asgi server,nb-cli 将会为你启动**冷重载模式**(当文件发生变动时自动重启 NoneBot2 实例)
+:::
diff --git a/website/docs/tutorial/custom-logger.md b/website/docs/tutorial/custom-logger.md
index 649e42a0..e28c56cb 100644
--- a/website/docs/tutorial/custom-logger.md
+++ b/website/docs/tutorial/custom-logger.md
@@ -4,3 +4,56 @@ description: 修改日志级别与输出
---
# 自定义日志
+
+NoneBot 使用 [Loguru](https://loguru.readthedocs.io/) 进行日志记录,并提供了一些内置的格式和过滤器等。
+
+## 默认日志
+
+NoneBot 启动时会添加一个默认的日志 handler。此 handler 将会将日志输出到 **stdout**,并且根据配置的日志级别进行过滤。
+
+[默认格式](../api/log.md#default_format)):
+
+```python
+default_format: str = (
+ "{time:MM-DD HH:mm:ss} "
+ "[{level}] "
+ "{name} | "
+ "{message}"
+)
+
+from nonebot.log import default_format
+```
+
+[默认过滤器](../api/log.md#default_filter):
+
+```python
+from nonebot.log import default_filter
+```
+
+## 转移 logging 日志
+
+NoneBot 提供了一个 logging handler 用于将日志输出转移至 loguru 处理。将 logging 的默认 handler 替换为 `LoguruHandler` 即可。
+
+```python
+from nonebot.log import LoguruHandler
+```
+
+## 自定义日志记录
+
+如果需要移除 NoneBot 的默认日志 handler,可以在 `nonebot.init` 之前进行如下操作:
+
+```python
+from nonebot.log import logger, logger_id
+
+logger.remove(logger_id)
+```
+
+如果需要添加自定义的日志 handler,可以在 `nonebot.init` 之前添加 handler,参考 [loguru 文档](https://loguru.readthedocs.io/)。
+
+示例:
+
+```python
+from nonebot.log import logger, default_format
+
+logger.add("error.log", level="ERROR", format=default_format, rotation="1 week")
+```
diff --git a/website/docs/tutorial/deployment.md b/website/docs/tutorial/deployment.md
new file mode 100644
index 00000000..21778506
--- /dev/null
+++ b/website/docs/tutorial/deployment.md
@@ -0,0 +1,230 @@
+---
+sidebar_position: 11
+description: 部署你的机器人
+---
+
+# 部署
+
+在编写完成后,你需要部署你的机器人来使得用户能够使用它。通常,会将机器人部署在服务器上,来保证服务持久运行。
+
+在开发时机器人运行的环境称为开发环境,而在部署后机器人运行的环境称为生产环境。与开发环境不同的是,在生产环境中,开发者通常不能随意地修改/添加/删除代码,开启或停止服务。
+
+## 部署前准备
+
+在生产环境中,为确保机器人能够正常运行,你需要固定你的依赖库版本。下面提供了几种常见的文件格式与生成方式:
+
+- `poetry.lock`
+
+ [poetry](https://python-poetry.org/) 依赖管理工具使用的 lock 文件,通常会在安装依赖时自动生成,或者使用 `poetry lock` 来生成。
+
+- `pdm.lock`
+
+ [pdm](https://pdm.fming.dev/) 依赖管理工具使用的 lock 文件,通常会在安装依赖时自动生成,或者使用 `pdm lock` 来生成。
+
+- `Pipfile.lock`
+
+ [Pipenv](https://pipenv.pypa.io/en/latest/) 依赖管理工具使用的 lock 文件,通常会在安装依赖时自动生成,或者使用 `pipenv lock` 来生成。
+
+- `requirements.txt`
+
+ 如果你未使用任何依赖管理工具,你可以使用 `pip freeze` 来生成这个文件。
+
+## 使用 Docker 部署(推荐)
+
+请自行参考 [Docker 官方文档](https://docs.docker.com/engine/install/) 安装 Docker。
+
+在生产环境安装 [docker-compose](https://docs.docker.com/compose/) 工具以便部署机器人。
+
+### 编译镜像与部署配置
+
+在项目目录下添加以下两个文件(以 poetry 和 FastAPI 驱动器为例):
+
+```dockerfile title=Dockerfile
+FROM python:3.9 as requirements-stage
+
+WORKDIR /tmp
+
+COPY ./pyproject.toml ./poetry.lock* /tmp/
+
+RUN curl -sSL https://install.python-poetry.org -o install-poetry.py
+
+RUN python install-poetry.py --yes
+
+ENV PATH="${PATH}:/root/.local/bin"
+
+RUN poetry export -f requirements.txt --output requirements.txt --without-hashes
+
+FROM tiangolo/uvicorn-gunicorn-fastapi:python3.9
+
+WORKDIR /app
+
+COPY --from=requirements-stage /tmp/requirements.txt /app/requirements.txt
+
+RUN pip install --no-cache-dir --upgrade -r requirements.txt
+
+RUN rm requirements.txt
+
+COPY ./ /app/
+```
+
+```yaml title=docker-compose.yml
+version: "3"
+services:
+ nonebot:
+ build: .
+ ports:
+ - "8080:8080" # 映射端口到宿主机 宿主机端口:容器端口
+ env_file:
+ - ".env.prod" # fastapi 使用的环境变量文件
+ environment:
+ - ENVIRONMENT=prod
+ - APP_MODULE=bot:app
+ - MAX_WORKERS=1
+ network_mode: bridge
+```
+
+配置完成后即可使用 `docker-compose up -d` 命令来启动机器人并在后台运行。
+
+### CI/CD
+
+配合 GitHub Actions 可以完成 CI/CD,在 GitHub 上发布 Release 时自动部署至生产环境。
+
+在 [Docker Hub](https://hub.docker.com/) 上创建仓库,并将下方 workflow 文件中高亮行中的仓库名称替换为你的仓库名称。
+
+前往项目仓库的 `Settings` > `Secrets` > `actions` 栏目 `New Repository Secret` 添加部署所需的密钥:
+
+- `DOCKERHUB_USERNAME`: 你的 Docker Hub 用户名
+- `DOCKERHUB_PASSWORD`: 你的 Docker Hub PAT([创建方法](https://docs.docker.com/docker-hub/access-tokens/))
+- `DEPLOY_HOST`: 部署服务器 IP 地址
+- `DEPLOY_USER`: 部署服务器用户名
+- `DEPLOY_KEY`: 部署服务器私钥
+- `DEPLOY_PATH`: 部署服务器上的项目路径
+
+将以下文件添加至项目下的 `.github/workflows/` 目录下:
+
+```yaml title=.github/workflows/build.yml {30}
+name: Docker Hub Release
+
+on:
+ push:
+ tags:
+ - "v*"
+
+jobs:
+ docker:
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v2
+
+ - name: Setup Docker
+ uses: docker/setup-buildx-action@v1
+
+ - name: Login to DockerHub
+ uses: docker/login-action@v1
+ with:
+ username: ${{ secrets.DOCKERHUB_USERNAME }}
+ password: ${{ secrets.DOCKERHUB_PASSWORD }}
+
+ - name: Generate Tags
+ uses: docker/metadata-action@v3
+ id: metadata
+ with:
+ images: |
+ {organization}/{repository}
+ tags: |
+ type=semver,pattern={{version}}
+ type=sha
+
+ - name: Build and Publish
+ uses: docker/build-push-action@v2
+ with:
+ context: .
+ push: true
+ tags: ${{ steps.metadata.outputs.tags }}
+ labels: ${{ steps.metadata.outputs.labels }}
+```
+
+```yaml title=.github/workflows/deploy.yml
+name: Deploy
+
+on:
+ workflow_run:
+ workflows:
+ - Docker Hub Release
+ types:
+ - completed
+
+jobs:
+ deploy:
+ runs-on: ubuntu-latest
+ if: ${{ github.event.workflow_run.conclusion == 'success' }}
+ steps:
+ - name: start deployment
+ uses: bobheadxi/deployments@v0.6
+ id: deployment
+ with:
+ step: start
+ token: ${{ secrets.GITHUB_TOKEN }}
+ env: official-bot
+
+ - name: remote ssh command
+ uses: appleboy/ssh-action@master
+ env:
+ DEPLOY_PATH: ${{ secrets.DEPLOY_PATH }}
+ with:
+ host: ${{ secrets.DEPLOY_HOST }}
+ username: ${{ secrets.DEPLOY_USER }}
+ key: ${{ secrets.DEPLOY_KEY }}
+ envs: DEPLOY_PATH
+ script: |
+ cd $DEPLOY_PATH
+ docker-compose down
+ docker-compose pull
+ docker-compose up -d
+
+ - name: update deployment status
+ uses: bobheadxi/deployments@v0.6
+ if: always()
+ with:
+ step: finish
+ token: ${{ secrets.GITHUB_TOKEN }}
+ status: ${{ job.status }}
+ deployment_id: ${{ steps.deployment.outputs.deployment_id }}
+```
+
+将上一部分的 `docker-compose.yml` 文件以及 `.env.prod` 配置文件添加至 `DEPLOY_PATH` 目录下,并修改 `docker-compose.yml` 文件中的镜像配置,替换为 Docker Hub 的仓库名称。
+
+```diff
+- build: .
++ image: {organization}/{repository}:latest
+```
+
+## 使用 Supervisor 部署
+
+参考:[Uvicorn - Supervisor](https://www.uvicorn.org/deployment/#supervisor)
+
+```ini
+[supervisord]
+
+[fcgi-program:nonebot]
+socket=tcp://localhost:8080
+command=python3 -m uvicorn --fd 0 bot:app
+directory=/path/to/bot
+autorestart=true
+startsecs=10
+startretries=3
+numprocs=1
+process_name=%(program_name)s-%(process_num)d
+stdout_logfile=/path/to/log/nonebot.out.log
+stdout_logfile_maxbytes=2MB
+```
+
+:::warning 警告
+请配合虚拟环境使用,如 venv 等,请勿直接在 Linux 服务器系统环境中安装。
+:::
+
+## 使用 PM2 部署
+
+
diff --git a/website/docs/tutorial/plugin/config-plugin.md b/website/docs/tutorial/plugin/config-plugin.md
index 28a40a07..a4d6fd8d 100644
--- a/website/docs/tutorial/plugin/config-plugin.md
+++ b/website/docs/tutorial/plugin/config-plugin.md
@@ -9,7 +9,7 @@ description: 规范定义插件配置项
## 定义配置模型
-在 NoneBot 中,我们使用强大高效的 [Pydantic](https://pydantic-docs.helpmanual.io/) 来定义配置模型,这个模型可以被用于配置的读取和类型检查等。例如,我们可以定义一个配置模型包含一个 string 类型的配置项:
+在 NoneBot2 中,我们使用强大高效的 [Pydantic](https://pydantic-docs.helpmanual.io/) 来定义配置模型,这个模型可以被用于配置的读取和类型检查等。例如,我们可以定义一个配置模型包含一个 string 类型的配置项:
```python title=config.py {3,4}
from pydantic import BaseModel, Extra
@@ -19,7 +19,7 @@ class Config(BaseModel, extra=Extra.ignore):
```
:::important 参考
-更多丰富的模型定义方法(默认值,自定义 validator 等),请参考 [Pydantic](https://pydantic-docs.helpmanual.io/) 文档。
+更多丰富的模型定义方法(默认值、自定义 validator 等),请参考 [Pydantic](https://pydantic-docs.helpmanual.io/) 文档。
:::
## 读取配置
diff --git a/website/docs/tutorial/plugin/create-handler.md b/website/docs/tutorial/plugin/create-handler.md
index eaf7c707..097a42bb 100644
--- a/website/docs/tutorial/plugin/create-handler.md
+++ b/website/docs/tutorial/plugin/create-handler.md
@@ -14,7 +14,7 @@ options:
## 添加一个处理依赖
-在事件响应器中,事件处理流程由一个或多个处理依赖组成,每个处理依赖都是一个 `Dependent`,详情可以参考 [进阶 - 依赖注入](../../advanced/di/dependency-injection.md)。下面介绍如何添加一个处理依赖。
+在事件响应器中,事件处理流程由一个或多个处理依赖组成,每个处理依赖都是一个 `Dependent`,详情可以参考[进阶 - 依赖注入](../../advanced/di/dependency-injection.md)。下面介绍如何添加一个处理依赖。
### 使用 `handle` 装饰器
@@ -28,7 +28,7 @@ async def handle_func():
如上方示例所示,我们使用 `matcher` 响应器的 `handle` 装饰器装饰了一个函数 `handle_func` 。`handle_func` 函数会被自动转换为 `Dependent` 对象,并被添加到 `matcher` 的事件处理流程中。
-在 `handle_func` 函数中,我们可以编写任何事件响应逻辑,如:操作数据库,发送消息等。上下文信息可以通过依赖注入的方式获取,参考:[获取上下文信息](#获取上下文信息)。发送消息可以通过 [事件响应器操作](./matcher-operation.md) 或者直接调用 Bot 的方法( API 等,由协议适配器决定)。
+在 `handle_func` 函数中,我们可以编写任何事件响应逻辑,如:操作数据库,发送消息等。上下文信息可以通过依赖注入的方式获取,参考:[获取上下文信息](#获取上下文信息)。发送消息可以通过[事件响应器操作](./matcher-operation.md)或者直接调用 Bot 的方法( API 等,由协议适配器决定)。
:::warning 注意
`handle_func` 函数虽然会被装饰器自动转换为 `Dependent` 对象,但 `handle_func` 仍然为原本的函数,因此 `handle_func` 函数可以进行复用。如:
@@ -57,9 +57,9 @@ async def handle_func(e: Event = Received("id")):
`receive` 装饰器与 `handle` 装饰器一样,可以装饰一个函数添加到事件响应器的事件处理流程中。但与 `handle` 装饰器不同的是,`receive` 装饰器会中断当前事件处理流程,等待接收一个新的事件,就像是会话状态等待用户一个新的事件。可以接收的新的事件类型取决于事件响应器的 [`type`](./create-matcher.md#事件响应器类型-type) 更新值以及 [`permission`](./create-matcher.md#事件触发权限-permission) 更新值,可以通过自定义更新方法来控制会话响应(如进行非消息交互、多人会话、跨群会话等)。
-`receive` 装饰器接受一个可选参数 `id` ,用于标识当前需要接收的事件,如果不指定,则默认为空 `""`。
+`receive` 装饰器接受一个可选参数 `id`,用于标识当前需要接收的事件,如果不指定,则默认为空 `""`。
-在 `handle_func` 函数中,可以通过依赖注入的方式来获取接收到的事件,参考:[`Received`](#received), [`LastReceived`](#lastreceived)。
+在 `handle_func` 函数中,可以通过依赖注入的方式来获取接收到的事件,参考:[`Received`](#received)、[`LastReceived`](#lastreceived)。
:::important 提示
`receive` 装饰器可以和自身与 `got` 装饰器嵌套使用
@@ -93,7 +93,7 @@ async def handle_func(key: Message = Arg()):
`got` 装饰器接受一个参数 `key` 和一个可选参数 `prompt`,当 `key` 不存在时,会向用户发送 `prompt` 消息,并等待用户回复。
-在 `handle_func` 函数中,可以通过依赖注入的方式来获取接收到的消息,参考:[`Arg`](#arg), [`ArgStr`](#argstr), [`ArgPlainText`](#argplaintext)。
+在 `handle_func` 函数中,可以通过依赖注入的方式来获取接收到的消息,参考:[`Arg`](#arg)、[`ArgStr`](#argstr)、[`ArgPlainText`](#argplaintext)。
:::important 提示
`got` 装饰器可以和自身与 `receive` 装饰器嵌套使用
@@ -113,12 +113,16 @@ matcher = on_message(
## 事件处理流程
-
+在一个事件响应器中,事件被添加的处理依赖依次执行,直到所有处理依赖都执行完毕,或者遇到了某个处理依赖需要更多的事件来进行下一步的处理。在下一个事件到来并符合响应要求时,继续执行。更多有关 NoneBot 事件分发与处理流程的详细信息,请参考[进阶 - 深入](../../advanced/README.md)。
## 获取上下文信息
+在事件处理流程中,事件响应器具有自己独立的上下文,例如:当前的事件、机器人等信息,可以通过依赖注入的方式来获取。
+
### Bot
+获取当前事件的 Bot 对象。
+
```python {7-9}
from typing import Union
@@ -133,6 +137,8 @@ async def _(bot): ... # 兼容性处理
### Event
+获取当前事件。
+
```python {6-8}
from typing import Union
@@ -146,6 +152,8 @@ async def _(event): ... # 兼容性处理
### EventType
+获取当前事件的类型。
+
```python {3}
from nonebot.params import EventType
@@ -154,6 +162,8 @@ async def _(foo: str = EventType()): ...
### EventMessage
+获取当前事件的消息。
+
```python {4}
from nonebot.adapters import Message
from nonebot.params import EventMessage
@@ -163,6 +173,8 @@ async def _(foo: str = EventMessage()): ...
### EventPlainText
+获取当前事件的消息纯文本部分。
+
```python {3}
from nonebot.params import EventPlainText
@@ -171,6 +183,8 @@ async def _(foo: str = EventPlainText()): ...
### EventToMe
+获取当前事件是否与机器人相关。
+
```python {3}
from nonebot.params import EventToMe
@@ -179,15 +193,18 @@ async def _(foo: bool = EventToMe()): ...
### State
+获取当前事件处理上下文状态,State 为一个字典,用户可以向 State 中添加数据来保存状态等操作。(请注意不要随意覆盖 State 中 NoneBot 的数据)
+
```python {4}
-from nonebot.params import State
from nonebot.typing import T_State
-async def _(foo: T_State = State()): ...
+async def _(foo: T_State): ...
```
### Command
+获取当前命令型消息的元组形式命令名。
+
```python {7}
from nonebot import on_command
from nonebot.params import Command
@@ -198,8 +215,32 @@ matcher = on_command("cmd")
async def _(foo: Tuple[str, ...] = Command()): ...
```
+:::tip 提示
+命令详情只能在首次接收到命令型消息时获取,如果在事件处理后续流程中获取,则会获取到不同的值。
+:::
+
+### RawCommand
+
+获取当前命令型消息的文本形式命令名。
+
+```python {7}
+from nonebot import on_command
+from nonebot.params import RawCommand
+
+matcher = on_command("cmd")
+
+@matcher.handle()
+async def _(foo: str = RawCommand()): ...
+```
+
+:::tip 提示
+命令详情只能在首次接收到命令型消息时获取,如果在事件处理后续流程中获取,则会获取到不同的值。
+:::
+
### CommandArg
+获取命令型消息命令后跟随的参数。
+
```python {8}
from nonebot import on_command
from nonebot.adapters import Message
@@ -211,22 +252,41 @@ matcher = on_command("cmd")
async def _(foo: Message = CommandArg()): ...
```
+:::tip 提示
+命令详情只能在首次接收到命令型消息时获取,如果在事件处理后续流程中获取,则会获取到不同的值。
+:::
+
### ShellCommandArgs
-```python {7}
-from nonebot import on_command
+获取 shell 命令解析后的参数。
+
+:::tip 提示
+如果参数解析失败,则为 [`ParserExit`](../../api/exception.md#ParserExit) 异常,并携带错误码与错误信息。
+
+由于 `ArgumentParser` 在解析到 `--help` 参数时也会抛出异常,这种情况下错误码为 `0` 且错误信息即为帮助信息。
+:::
+
+```python {8,12}
+from nonebot import on_shell_command
from nonebot.params import ShellCommandArgs
matcher = on_shell_command("cmd", parser)
+# 解析失败
+@matcher.handle()
+async def _(foo: ParserExit = ShellCommandArgs()): ...
+
+# 解析成功
@matcher.handle()
async def _(foo: Dict[str, Any] = ShellCommandArgs()): ...
```
### ShellCommandArgv
+获取 shell 命令解析前的参数列表。
+
```python {7}
-from nonebot import on_command
+from nonebot import on_shell_command
from nonebot.params import ShellCommandArgs
matcher = on_shell_command("cmd")
@@ -237,6 +297,8 @@ async def _(foo: List[str] = ShellCommandArgv()): ...
### RegexMatched
+获取正则匹配结果。
+
```python {7}
from nonebot import on_regex
from nonebot.params import RegexMatched
@@ -249,6 +311,8 @@ async def _(foo: str = RegexMatched()): ...
### RegexGroup
+获取正则匹配结果的 group 元组。
+
```python {7}
from nonebot import on_regex
from nonebot.params import RegexGroup
@@ -261,6 +325,8 @@ async def _(foo: Tuple[Any, ...] = RegexGroup()): ...
### RegexDict
+获取正则匹配结果的 group 字典。
+
```python {7}
from nonebot import on_regex
from nonebot.params import RegexDict
@@ -273,6 +339,8 @@ async def _(foo: Dict[str, Any] = RegexDict()): ...
### Matcher
+获取当前事件响应器实例。
+
```python {7}
from nonebot import on_message
from nonebot.matcher import Matcher
@@ -285,6 +353,8 @@ async def _(matcher: Matcher): ...
### Received
+获取某次 `receive` 接收的事件。
+
```python {8}
from nonebot import on_message
from nonebot.adapters import Event
@@ -298,6 +368,8 @@ async def _(foo: Event = Received("id")): ...
### LastReceived
+获取最近一次 `receive` 接收的事件。
+
```python {8}
from nonebot import on_message
from nonebot.adapters import Event
@@ -311,6 +383,8 @@ async def _(foo: Event = LastReceived()): ...
### Arg
+获取某次 `got` 接收的参数。
+
```python {8-9}
from nonebot.params import Arg
from nonebot import on_message
@@ -325,6 +399,8 @@ async def _(foo: Message = Arg("key")): ...
### ArgStr
+获取某次 `got` 接收的参数,并转换为字符串。
+
```python {7-8}
from nonebot import on_message
from nonebot.params import ArgStr
@@ -338,6 +414,8 @@ async def _(foo: str = ArgStr("key")): ...
### ArgPlainText
+获取某次 `got` 接收的参数的纯文本部分。
+
```python {7-8}
from nonebot import on_message
from nonebot.params import ArgPlainText
@@ -351,6 +429,8 @@ async def _(foo: str = ArgPlainText("key")): ...
### Exception
+获取事件响应器运行中抛出的异常。
+
```python {4}
from nonebot.message import run_postprocessor
@@ -360,6 +440,8 @@ async def _(e: Exception): ...
### Default
+带有默认值的参数,便于复用依赖。
+
```python {1}
async def _(foo="bar"): ...
```
diff --git a/website/docs/tutorial/plugin/create-matcher.md b/website/docs/tutorial/plugin/create-matcher.md
index 6aba5738..56f1243a 100644
--- a/website/docs/tutorial/plugin/create-matcher.md
+++ b/website/docs/tutorial/plugin/create-matcher.md
@@ -10,15 +10,15 @@ options:
# 定义事件响应器
-事件响应器 (`Matcher`) 是对接收到的事件进行响应的基本单元,所有的事件响应器都继承自 `Matcher` 基类。为方便编写插件,NoneBot 在 `nonebot.plugin` 模块中为插件开发定义了一些辅助函数,以便插件开发者可以简化插件开发。首先,让我们来了解一下 `Matcher` 由哪些部分组成。
+事件响应器(`Matcher`)是对接收到的事件进行响应的基本单元,所有的事件响应器都继承自 `Matcher` 基类。为了方便开发者编写插件,NoneBot2 在 `nonebot.plugin` 模块中为插件开发定义了一些辅助函数。首先,让我们来了解一下 `Matcher` 由哪些部分组成。
## 事件响应器的基本组成
### 事件响应器类型 `type`
-事件响应器的类型即是该响应器所要响应的事件类型,只有在接收到的事件类型与该响应器的类型相同时,才会触发该响应器。如果类型留空,则该响应器将会响应所有类型的事件。
+事件响应器的类型即是该响应器所要响应的事件类型,只有在接收到的事件类型与该响应器的类型相同时,才会触发该响应器。如果类型留空,该响应器将会响应所有类型的事件。
-NoneBot 内置了四种主要类型:`meta_event`, `message`, `notice`, `request`。通常情况下,协议适配器会将事件合理的分类至这四种类型中。如果有其他类型的事件需要响应,可以自行定义新的类型。
+NoneBot 内置了四种主要类型:`meta_event`、`message`、`notice`、`request`。通常情况下,协议适配器会将事件合理地分类至这四种类型中。如果有其他类型的事件需要响应,可以自行定义新的类型。
@@ -37,11 +37,11 @@ async def update_type():
:::
-### 事件匹配规则 `rule`
+### 事件匹配规则
事件响应器的匹配规则是一个 `Rule` 对象,它是一系列 `checker` 的集合,当所有的 `checker` 都返回 `True` 时,才会触发该响应器。
-规则编写方法参考 [自定义规则](#自定义规则)。
+规则编写方法参考[自定义规则](#自定义规则)。
:::warning 注意
当会话状态更新时,`rule` 会被清空,以便会话收到新事件时能够正确匹配。
@@ -51,12 +51,12 @@ async def update_type():
事件响应器的触发权限是一个 `Permission` 对象,它也是一系列 `checker` 的集合,当其中一个 `checker` 返回 `True` 时,就会触发该响应器。
-权限编写方法参考 [自定义权限](#自定义权限)。
+权限编写方法参考[自定义权限](#自定义权限)。
:::warning 注意
与 `rule` 不同的是,`permission` 不会在会话状态更新时丢失,因此 `permission` 通常用于会话的响应控制。
-并且, 当会话状态更新时,会执行 `permission_updater` 以更新 `permission`。默认情况下,`permission_updater` 会在原有的 `permission` 基础上添加一个 `USER` 条件,以检查事件的 `session_id` 是否与当前会话一致。
+并且,当会话状态更新时,会执行 `permission_updater` 以更新 `permission`。默认情况下,`permission_updater` 会在原有的 `permission` 基础上添加一个 `USER` 条件,以检查事件的 `session_id` 是否与当前会话一致。
你可以自行定义 `permission_updater` 来控制会话的响应权限更新。`permission_updater` 是一个返回 `Permission` 的函数,可选依赖注入参数参考类型 `T_PermissionUpdater`。
@@ -75,7 +75,7 @@ async def update_type(matcher: Matcher):
事件响应器的优先级代表事件响应器的执行顺序
:::warning 警告
-同一优先级的事件响应器会 **同时执行**,优先级数字 **越小** 越先响应!优先级请从 `1` 开始排序!
+同一优先级的事件响应器会**同时执行**,优先级数字**越小**越先响应!优先级请从 `1` 开始排序!
:::
### 阻断 `block`
@@ -94,7 +94,7 @@ async def handle(matcher: Matcher):
matcher.stop_propagation()
```
-### 有效期 `temp` / `expire_time`
+### 有效期 `temp`/`expire_time`
事件响应器可以设置有效期,当事件响应器超过有效期时,将会被移除。
@@ -111,7 +111,7 @@ from nonebot import on_message
matcher = on_message()
```
-用于定义事件响应器的辅助函数已经在 `nonebot` 主模块中被 `re-export` ,所以直接从 `nonebot` 导入即可。
+用于定义事件响应器的辅助函数已经在 `nonebot` 主模块中被 `re-export`,所以直接从 `nonebot` 导入即可。
辅助函数有以下几种:
diff --git a/website/docs/tutorial/plugin/introduction.md b/website/docs/tutorial/plugin/introduction.md
index b146502b..4448426e 100644
--- a/website/docs/tutorial/plugin/introduction.md
+++ b/website/docs/tutorial/plugin/introduction.md
@@ -9,51 +9,51 @@ description: 插件入门
在编写插件之前,首先我们需要了解一下插件的概念。
-在 NoneBot 中,插件可以是 Python 的一个模块 `module` ,也可以是一个包 `package` 。NoneBot 会在导入时对这些模块或包做一些特殊的处理使得他们成为一个插件。插件间应尽量减少耦合,可以进行有限制的插件间调用,NoneBot 能够正确解析插件间的依赖关系。
+在 NoneBot 中,插件可以是 Python 的一个模块 `module`,也可以是一个包 `package` 。NoneBot 会在导入时对这些模块或包做一些特殊的处理使得他们成为一个插件。插件间应尽量减少耦合,可以进行有限制的插件间调用,NoneBot 能够正确解析插件间的依赖关系。
下面详细介绍两种插件的结构:
### 模块插件(单文件形式)
-在合适的路径创建一个 `.py` 文件即可。例如在 [创建项目](../create-project.md) 中创建的项目中,我们可以在 `awesome_bot/plugins/` 目录中创建一个文件 `foo.py`。
+在合适的路径创建一个 `.py` 文件即可。例如在[创建项目](../create-project.mdx)中创建的项目中,我们可以在 `awesome_bot/plugins/` 目录中创建一个文件 `foo.py`。
-```bash title=Project {4}
-AweSome-Bot
-├── awesome_bot
-│ └── plugins
-| └── foo.py
-├── .env
-├── .env.dev
-├── .env.prod
-├── .gitignore
-├── bot.py
-├── docker-compose.yml
-├── Dockerfile
-├── pyproject.toml
-└── README.md
+```tree title=Project {4}
+📦 AweSome-Bot
+├── 📂 awesome_bot
+│ └── 📂 plugins
+| └── 📜 foo.py
+├── 📜 .env
+├── 📜 .env.dev
+├── 📜 .env.prod
+├── 📜 .gitignore
+├── 📜 bot.py
+├── 📜 docker-compose.yml
+├── 📜 Dockerfile
+├── 📜 pyproject.toml
+└── 📜 README.md
```
这个时候它已经可以被称为一个插件了,尽管它还什么都没做。
### 包插件(文件夹形式)
-在合适的路径创建一个文件夹,并在文件夹内创建文件 `__init__.py` 即可。例如在 [创建项目](../create-project.md) 中创建的项目中,我们可以在 `awesome_bot/plugins/` 目录中创建一个文件夹 `foo`,并在这个文件夹内创建一个文件 `__init__.py`。
+在合适的路径创建一个文件夹,并在文件夹内创建文件 `__init__.py` 即可。例如在[创建项目](../create-project.mdx)中创建的项目中,我们可以在 `awesome_bot/plugins/` 目录中创建一个文件夹 `foo`,并在这个文件夹内创建一个文件 `__init__.py`。
-```bash title=Project {4,5}
-AweSome-Bot
-├── awesome_bot
-│ └── plugins
-| └── foo.py
-| └── __init__.py
-├── .env
-├── .env.dev
-├── .env.prod
-├── .gitignore
-├── bot.py
-├── docker-compose.yml
-├── Dockerfile
-├── pyproject.toml
-└── README.md
+```tree title=Project {4,5}
+📦 AweSome-Bot
+├── 📂 awesome_bot
+│ └── 📂 plugins
+| └── 📂 foo
+| └── 📜 __init__.py
+├── 📜 .env
+├── 📜 .env.dev
+├── 📜 .env.prod
+├── 📜 .gitignore
+├── 📜 bot.py
+├── 📜 docker-compose.yml
+├── 📜 Dockerfile
+├── 📜 pyproject.toml
+└── 📜 README.md
```
这个时候 `foo` 就是一个合法的 Python 包了,同时也是合法的 NoneBot 插件,插件内容可以在 `__init__.py` 中编写。
@@ -64,7 +64,7 @@ AweSome-Bot
请注意,插件名称不能存在重复,即所有模块插件的文件名和所有包插件的文件夹名不能存在相同。
:::
-除了通过手动创建的方式以外,还可以通过 `nb-cli` 来创建插件,`nb-cli` 会为你在合适的位置创建一个模板包插件。
+除了通过手动创建的方式以外,还可以通过 nb-cli 来创建插件,nb-cli 会为你在合适的位置创建一个模板包插件。
```bash
nb plugin create
diff --git a/website/docs/tutorial/plugin/load-plugin.md b/website/docs/tutorial/plugin/load-plugin.md
index 90aed864..60fe36be 100644
--- a/website/docs/tutorial/plugin/load-plugin.md
+++ b/website/docs/tutorial/plugin/load-plugin.md
@@ -11,10 +11,10 @@ options:
# 加载插件
:::danger 警告
-请勿在插件被加载前 `import` 插件模块,这会导致 NoneBot 无法将其转换为插件而损失部分功能。
+请勿在插件被加载前 `import` 插件模块,这会导致 NoneBot2 无法将其转换为插件而损失部分功能。
:::
-加载插件通常在机器人的入口文件进行,例如在 [创建项目](../create-project.md) 中创建的项目中的 `bot.py` 文件。在 NoneBot 初始化完成后即可加载插件。
+加载插件通常在机器人的入口文件进行,例如在[创建项目](../create-project.mdx)中创建的项目中的 `bot.py` 文件。在 NoneBot2 初始化完成后即可加载插件。
```python title=bot.py {5}
import nonebot
@@ -50,7 +50,7 @@ nonebot.load_plugins("src/plugins", "path/to/your/plugins")
## `load_all_plugins`
-这种加载方式是以上两种方式的融合,加载所有传入的插件模块名称,以及所有给定目录下的插件。例如:
+这种加载方式是以上两种方式的混合,加载所有传入的插件模块名称,以及所有给定目录下的插件。例如:
```python
nonebot.load_all_plugins(["path.to.your.plugin"], ["path/to/your/plugins"])
diff --git a/website/docs/tutorial/plugin/matcher-operation.md b/website/docs/tutorial/plugin/matcher-operation.md
index 0d8d6551..2204b1ab 100644
--- a/website/docs/tutorial/plugin/matcher-operation.md
+++ b/website/docs/tutorial/plugin/matcher-operation.md
@@ -10,28 +10,137 @@ options:
# 事件响应器操作
+在事件处理流程中,我们可以使用事件响应器操作来进行一些交互或改变事件处理流程。
+
## send
+向用户回复一条消息。回复的方式或途径由协议适配器自行实现。
+
+可以是 `str`、[`Message`](../../api/adapters/index.md#Message)、[`MessageSegment`](../../api/adapters/index.md#MessageSegment) 或 [`MessageTemplate`](../../api/adapters/index.md#MessageTemplate)。
+
+这个操作等同于使用 `bot.send(event, message, **kwargs)` 但不需要自行传入 `event`。
+
+```python {3}
+@matcher.handle()
+async def _():
+ await matcher.send("Hello world!")
+```
+
## finish
+向用户回复一条消息(可选),并立即结束当前事件的整个处理流程。
+
+参数与 [`send`](#send) 相同。
+
+```python {3}
+@matcher.handle()
+async def _():
+ await matcher.finish("Hello world!")
+ # something never run
+ ...
+```
+
## pause
+向用户回复一条消息(可选),并立即结束当前事件处理依赖并等待接收一个新的事件后进入下一个事件处理依赖。
+
+类似于 `receive` 的行为但可以根据事件来决定是否接收新的事件。
+
+```python {4}
+@matcher.handle()
+async def _():
+ if serious:
+ await matcher.pause("Confirm?")
+
+@matcher.handle()
+async def _():
+ ...
+```
+
## reject
+向用户回复一条消息(可选),并立即结束当前事件处理依赖并等待接收一个新的事件后再次执行当前事件处理依赖。
+
+通常用于拒绝当前 `receive` 接收的事件或 `got` 接收的参数(如:不符合格式或标准)。
+
+```python {4}
+@matcher.got("arg")
+async def _(arg: str = ArgPlainText()):
+ if not is_valid(arg):
+ await matcher.reject("Invalid arg!")
+```
+
## reject_arg
+向用户回复一条消息(可选),并立即结束当前事件处理依赖并等待接收一个新的事件后再次执行当前事件处理依赖。
+
+用于拒绝指定 `got` 接收的参数,通常在嵌套装饰器时使用。
+
+```python {4}
+@matcher.got("a")
+@matcher.got("b")
+async def _(a: str = ArgPlainText(), b: str = ArgPlainText()):
+ if a not in b:
+ await matcher.reject_arg("a", "Invalid a!")
+```
+
## reject_receive
+向用户回复一条消息(可选),并立即结束当前事件处理依赖并等待接收一个新的事件后再次执行当前事件处理依赖。
+
+用于拒绝指定 `receive` 接收的事件,通常在嵌套装饰器时使用。
+
+```python {4}
+@matcher.receive("a")
+@matcher.receive("b")
+async def _(a: Event = Received("a"), b: Event = Received("b")):
+ if a.get_user_id() != b.get_user_id():
+ await matcher.reject_receive("a")
+```
+
## skip
+立即结束当前事件处理依赖,进入下一个事件处理依赖。
+
+通常在子依赖中使用,用于跳过当前事件处理依赖的执行。
+
+```python {2}
+async def dependency(matcher: Matcher):
+ matcher.skip()
+
+
+@matcher.handle()
+async def _(sub=Depends(dependency)):
+ # never run
+ ...
+```
+
## get_receive
+获取一个 `receive` 接收的事件。
+
## set_receive
+设置/覆盖一个 `receive` 接收的事件。
+
## get_last_receive
+获取最近一次 `receive` 接收的事件。
+
## get_arg
+获取一个 `got` 接收的参数。
+
## set_arg
+设置/覆盖一个 `got` 接收的参数。
+
## stop_propagation
+
+阻止事件向更低优先级的事件响应器传播。
+
+```python
+@foo.handle()
+async def _(matcher: Matcher):
+ matcher.stop_propagation()
+```
diff --git a/website/docs/tutorial/process-message.md b/website/docs/tutorial/process-message.md
new file mode 100644
index 00000000..9314ff08
--- /dev/null
+++ b/website/docs/tutorial/process-message.md
@@ -0,0 +1,252 @@
+---
+sidebar_position: 9
+description: 处理消息序列与消息段
+
+options:
+ menu:
+ weight: 30
+ category: guide
+---
+
+# 处理消息
+
+## NoneBot2 中的消息
+
+在不同平台中,一条消息可能会有承载有各种不同的表现形式,它可能是一段纯文本、一张图片、一段语音、一篇富文本文章,也有可能是多种类型的组合等等。
+
+在 NoneBot2 中,为确保消息的正常处理与跨平台兼容性,采用了扁平化的消息序列形式,即 `Message` 对象。
+
+`Message` 是多个消息段 `MessageSegment` 的集合,它继承自 `List[MessageSegment]`,并在此基础上添加或强化了一些特性。
+
+`MessageSegment` 是一个 [`dataclass`](https://docs.python.org/zh-cn/3/library/dataclasses.html#dataclasses.dataclass) ,它具有一个类型标识 `type`,以及一些对应的数据信息 `data`。
+
+此外,NoneBot2 还提供了 `MessageTemplate` ,用于构建支持消息序列以及消息段的特殊消息模板。
+
+## 使用消息序列
+
+通常情况下,适配器在接收到消息时,会将消息转换为消息序列,可以通过 [`EventMessage`](./plugin/create-handler.md#EventMessage) 作为依赖注入, 或者使用 `event.get_message()` 获取。
+
+由于它是`List[MessageSegment]`的子类, 所以你总是可以用和操作 List 类似的方式来处理消息序列
+
+```python
+>>> message = Message([
+ MessageSegment(type='text', data={'text':'hello'}),
+ MessageSegment(type='image', data={'url':'http://example.com/image.png'}),
+ MessageSegment(type='text', data={'text':'world'}),
+])
+>>> for segment in message:
+... print(segment.type, segment.data)
+...
+text {'text': 'hello'}
+image {'url': 'http://example.com/image.png'}
+text {'text': 'world'}
+>>> len(message)
+3
+```
+
+### 构造消息序列
+
+在使用事件响应器操作发送消息时,既可以使用 `str` 作为消息,也可以使用 `Message`、`MessageSegment` 或者 `MessageTemplate`。那么,我们就需要先构造一个消息序列。
+
+#### 直接构造
+
+`Message` 类可以直接实例化,支持 `str`、`MessageSegment`、`Iterable[MessageSegment]` 或适配器自定义类型的参数。
+
+```python
+# str
+Message("Hello, world!")
+# MessageSegment
+Message(MessageSegment.text("Hello, world!"))
+# List[MessageSegment]
+Message([MessageSegment.text("Hello, world!")])
+```
+
+#### 运算构造
+
+`Message` 对象可以通过 `str`、`MessageSegment` 相加构造,详情请参考[拼接消息](#拼接消息)。
+
+#### 从字典数组构造
+
+`Message` 对象支持 Pydantic 自定义类型构造,可以使用 Pydantic 的 `parse_obj_as` (`parse_raw_as`) 方法进行构造。
+
+```python
+from pydantic import parse_obj_as
+
+# 由字典构造消息段
+parse_obj_as(
+ MessageSegment, {"type": "text", "data": {"text": "text"}}
+) == MessageSegment.text("text")
+# 由字典数组构造消息序列
+parse_obj_as(
+ Message,
+ [MessageSegment.text("text"), {"type": "text", "data": {"text": "text"}}],
+) == Message([MessageSegment.text("text"), MessageSegment.text("text")])
+```
+
+:::tip 提示
+以上示例中的字典数据仅做参考,具体的数据格式由适配器自行定义。
+:::
+
+### 获取消息纯文本
+
+由于消息中存在各种类型的消息段,因此 `str(message)` 通常并不能得到消息的纯文本,而是一个消息序列的字符串表示。
+
+NoneBot2 为消息段定义了一个方法 `is_text()` ,可以用于判断消息段是否为纯文本;也可以使用 `message.extract_plain_text()` 方法获取消息纯文本。
+
+```python
+# 判断消息段是否为纯文本
+MessageSegment.text("text").is_text() == True
+# 提取消息纯文本字符串
+Message(
+ [MessageSegment.text("text"), MessageSegment.at(123)]
+).extract_plain_text() == "text"
+```
+
+### 遍历
+
+`Message` 继承自 `List[MessageSegment]` ,因此可以使用 `for` 循环遍历消息段。
+
+```python
+for segment in message:
+ ...
+```
+
+### 索引与切片
+
+`Message` 对列表的索引与切片进行了增强,在原有列表 int 索引与切片的基础上,支持 `type` 过滤索引与切片。
+
+```python
+message = Message(
+ [
+ MessageSegment.text("test"),
+ MessageSegment.image("test2"),
+ MessageSegment.image("test3"),
+ MessageSegment.text("test4"),
+ ]
+)
+
+# 索引
+message[0] == MessageSegment.text("test")
+# 切片
+message[0:2] == Message(
+ [MessageSegment.text("test"), MessageSegment.image("test2")]
+)
+
+# 类型过滤
+message["image"] == Message(
+ [MessageSegment.image("test2"), MessageSegment.image("test3")]
+)
+# 类型索引
+message["image", 0] == MessageSegment.image("test2")
+# 类型切片
+message["image", 0:2] == Message(
+ [MessageSegment.image("test2"), MessageSegment.image("test3")]
+)
+```
+
+同样的,`Message` 对列表的 `index`、`count` 方法也进行了增强,可以用于索引指定类型的消息段。
+
+```python
+# 指定类型首个消息段索引
+message.index("image") == 1
+# 指定类型消息段数量
+message.count("image") == 2
+```
+
+此外,`Message` 添加了一个 `get` 方法,可以用于获取指定类型指定个数的消息段。
+
+```python
+# 获取指定类型指定个数的消息段
+message.get("image", 1) == Message([MessageSegment.image("test2")])
+```
+
+### 拼接消息
+
+`str`、`Message`、`MessageSegment` 对象之间可以直接相加,相加均会返回一个新的 `Message` 对象。
+
+```python
+# 消息序列与消息段相加
+Message([MessageSegment.text("text")]) + MessageSegment.text("text")
+# 消息序列与字符串相加
+Message([MessageSegment.text("text")]) + "text"
+# 消息序列与消息序列相加
+Message([MessageSegment.text("text")]) + Message([MessageSegment.text("text")])
+# 字符串与消息序列相加
+"text" + Message([MessageSegment.text("text")])
+
+# 消息段与消息段相加
+MessageSegment.text("text") + MessageSegment.text("text")
+# 消息段与字符串相加
+MessageSegment.text("text") + "text"
+# 消息段与消息序列相加
+MessageSegment.text("text") + Message([MessageSegment.text("text")])
+# 字符串与消息段相加
+"text" + MessageSegment.text("text")
+```
+
+如果需要在当前消息序列后直接拼接新的消息段,可以使用 `Message.append`、`Message.extend` 方法,或者使用自加。
+
+```python
+msg = Message([MessageSegment.text("text")])
+# 自加
+msg += "text"
+msg += MessageSegment.text("text")
+msg += Message([MessageSegment.text("text")])
+# 附加
+msg.append("text")
+msg.append(MessageSegment.text("text"))
+# 扩展
+msg.extend([MessageSegment.text("text")])
+```
+
+## 使用消息模板
+
+为了提供安全可靠的跨平台模板字符, 我们提供了一个消息模板功能来构建消息序列
+
+它在以下常见场景中尤其有用:
+
+- 多行富文本编排(包含图片,文字以及表情等)
+
+- 客制化(由 Bot 最终用户提供消息模板时)
+
+在事实上, 它的用法和`str.format`极为相近, 所以你在使用的时候, 总是可以参考[Python 文档](https://docs.python.org/zh-cn/3/library/stdtypes.html#str.format)来达到你想要的效果
+
+这里给出几个简单的例子:
+
+:::tip
+这里面所有的`Message`均是用对应 Adapter 的实现导入的, 而不是抽象基类
+:::
+
+```python title="基础格式化用法"
+>>> Message.template("{} {}").format("hello", "world")
+Message(
+ MessageSegment.text("hello"),
+ MessageSegment.text(" "),
+ MessageSegment.text("world")
+)
+```
+
+```python title="对消息段进行安全的拼接"
+>>> Message.template("{} {}").format(MessageSegment.image("file:///..."), "world")
+Message(
+ MessageSegment(type='image', data={'file': 'file:///...'}),
+ MessageSegment(type='text', data={'text': 'world'})
+)
+```
+
+```python title="以消息对象作为模板"
+>>> Message.template(
+... MessageSegment.text('test {user_id}') + MessageSegment.face(233) +
+... MessageSegment.text('test {message}')).format_map({'user_id':123456, 'message':'hello world'}
+... )
+Message(
+ MessageSegment(type='text', data={'text': 'test 123456'}),
+ MessageSegment(type='face', data={'face': 233}),
+ MessageSegment(type='text', data={'text': 'test hello world'})
+)
+```
+
+```python title="使用消息段的拓展格式规格"
+>>> Message.template("{link:image}").format(link='https://...')
+Message(MessageSegment(type='image', data={'file': 'https://...'}))
+```
diff --git a/website/docs/tutorial/register-adapter.md b/website/docs/tutorial/register-adapter.md
index 98638c1f..05824230 100644
--- a/website/docs/tutorial/register-adapter.md
+++ b/website/docs/tutorial/register-adapter.md
@@ -11,20 +11,20 @@ options:
# 使用适配器
:::tip 提示
-如何**安装**协议适配器请参考 [安装协议适配器](../start/install-adapter.md)
+如何**安装**协议适配器请参考[安装协议适配器](../start/install-adapter.mdx)。
:::
## 协议适配器的功能
-由于 NoneBot 的跨平台特性,需要支持不同的协议,因此需要对特定的平台协议编写一个转换器。
+由于 NoneBot2 的跨平台特性,需要支持不同的协议,因此需要对特定的平台协议编写一个转换器。
-协议适配器即是充当中间人的转换器,它将驱动器所收到的数据转换为可以被 NoneBot 处理的事件 Event,并将事件传递给 NoneBot。
+协议适配器即是充当中间人的转换器,它将驱动器所收到的数据转换为可以被 NoneBot2 处理的事件 Event,并将事件传递给 NoneBot2。
同时,协议适配器还会处理 API 调用,转换为可以被驱动器处理的数据发送出去。
## 注册协议适配器
-NoneBot 在默认情况下并不会加载任何协议适配器,需要自己手动注册。下方是个加载协议适配器的例子:
+NoneBot2 在默认情况下并不会加载任何协议适配器,需要自己手动注册。下方是个加载协议适配器的例子:
```python title=bot.py
import nonebot
@@ -56,7 +56,7 @@ nonebot.run()
### 获得驱动器实例
-加载协议适配器需要通过驱动器来进行,因此,你需要先初始化 NoneBot,并获得驱动器实例。
+加载协议适配器需要通过驱动器来进行,因此,你需要先初始化 NoneBot2,并获得驱动器实例。
```python title=bot.py {4,5}
import nonebot
diff --git a/website/docusaurus.config.js b/website/docusaurus.config.js
index 2d09fea6..b98b36c2 100644
--- a/website/docusaurus.config.js
+++ b/website/docusaurus.config.js
@@ -22,7 +22,7 @@ const config = {
"zh-Hans": { label: "简体中文" },
},
},
-
+
scripts: ["/unregister-sw.js"],
presets: [
@@ -36,6 +36,12 @@ const config = {
editUrl: "https://github.com/nonebot/nonebot2/edit/master/website/",
showLastUpdateAuthor: true,
showLastUpdateTime: true,
+ // exclude: [
+ // "**/_*.{js,jsx,ts,tsx,md,mdx}",
+ // "**/_*/**",
+ // "**/*.test.{js,jsx,ts,tsx}",
+ // "**/__tests__/**",
+ // ],
},
sitemap: {
changefreq: "daily",
@@ -149,15 +155,13 @@ const config = {
prism: {
theme: lightCodeTheme,
darkTheme: darkCodeTheme,
+ additionalLanguages: ["docker", "ini"],
},
algolia: {
appId: "X0X5UACHZQ",
apiKey: "ac03e1ac2bd0812e2ea38c0cc1ea38c5",
indexName: "nonebot",
contextualSearch: true,
- // searchParameters: {
- // facetFilters: ["lang:zh-CN"],
- // },
},
tailwindConfig: require("./tailwind.config"),
customCss: [require.resolve("./src/css/custom.css")],
diff --git a/website/package.json b/website/package.json
index 5443b9b7..eafa45e6 100644
--- a/website/package.json
+++ b/website/package.json
@@ -41,6 +41,7 @@
"devDependencies": {
"@docusaurus/module-type-aliases": "2.0.0-beta.9",
"@tsconfig/docusaurus": "^1.0.4",
+ "asciinema-player": "^3.0.0-rc.1",
"typescript": "^4.3.5"
},
"browserslist": {
diff --git a/website/src/components/Asciinema/container.tsx b/website/src/components/Asciinema/container.tsx
new file mode 100644
index 00000000..68ca548f
--- /dev/null
+++ b/website/src/components/Asciinema/container.tsx
@@ -0,0 +1,35 @@
+import * as AsciinemaPlayer from "asciinema-player";
+import React, { useEffect, useRef } from "react";
+
+export type AsciinemaOptions = {
+ cols: number;
+ rows: number;
+ autoPlay: boolean;
+ preload: boolean;
+ loop: boolean;
+ startAt: number | string;
+ speed: number;
+ idleTimeLimit: number;
+ theme: string;
+ poster: string;
+ fit: string;
+ fontSize: string;
+};
+
+export type AsciinemaProps = {
+ url: string;
+ options?: Partial;
+};
+
+export default function AsciinemaContainer({
+ url,
+ options = {},
+}: AsciinemaProps): JSX.Element {
+ const ref = useRef(null);
+
+ useEffect(() => {
+ AsciinemaPlayer.create(url, ref.current, options);
+ }, []);
+
+ return ;
+}
diff --git a/website/src/components/Asciinema/index.tsx b/website/src/components/Asciinema/index.tsx
new file mode 100644
index 00000000..e8f8b04e
--- /dev/null
+++ b/website/src/components/Asciinema/index.tsx
@@ -0,0 +1,18 @@
+import "asciinema-player/dist/bundle/asciinema-player.css";
+
+import "./styles.css";
+
+import React from "react";
+
+import BrowserOnly from "@docusaurus/BrowserOnly";
+
+export default function Asciinema(props): JSX.Element {
+ return (
+ }>
+ {() => {
+ const AsciinemaContainer = require("./container.tsx").default;
+ return ;
+ }}
+
+ );
+}
diff --git a/website/src/components/Asciinema/styles.css b/website/src/components/Asciinema/styles.css
new file mode 100644
index 00000000..48328460
--- /dev/null
+++ b/website/src/components/Asciinema/styles.css
@@ -0,0 +1,3 @@
+.asciinema-player svg {
+ display: inline-block;
+}
diff --git a/website/src/components/Card/index.tsx b/website/src/components/Card/index.tsx
index 58fabfd8..ff9bce28 100644
--- a/website/src/components/Card/index.tsx
+++ b/website/src/components/Card/index.tsx
@@ -3,7 +3,6 @@ import copy from "copy-to-clipboard";
import React, { useState } from "react";
import Link from "@docusaurus/Link";
-import type { IconName } from "@fortawesome/fontawesome-common-types";
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
import type { Obj } from "../../libs/store";
diff --git a/website/src/components/Paginate/index.tsx b/website/src/components/Paginate/index.tsx
index b3df7416..7bbedc28 100644
--- a/website/src/components/Paginate/index.tsx
+++ b/website/src/components/Paginate/index.tsx
@@ -1,5 +1,5 @@
import clsx from "clsx";
-import React, { useCallback, useRef } from "react";
+import React, { useCallback, useState } from "react";
import { usePagination } from "react-use-pagination";
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
@@ -16,19 +16,25 @@ export default function Paginate({
previousEnabled,
nextEnabled,
}: ReturnType): JSX.Element {
- const ref = useRef();
- const maxWidth = useContentWidth(ref.current?.parentElement ?? undefined);
+ const [containerElement, setContainerElement] = useState(
+ null
+ );
+
+ const ref = useCallback(
+ (element: HTMLElement | null) => {
+ setContainerElement(element);
+ },
+ [setContainerElement]
+ );
+
+ const maxWidth = useContentWidth(
+ containerElement?.parentElement ?? undefined
+ );
const maxLength = Math.min(
(maxWidth && Math.floor(maxWidth / 50) - 2) || totalPages,
totalPages
);
- const onPageChange = useCallback(
- (selectedItem: { selected: number }) => {
- setPage(selectedItem.selected);
- },
- [setPage]
- );
const range = useCallback((start: number, end: number) => {
const result = [];
start = start > 0 ? start : 1;
@@ -38,7 +44,6 @@ export default function Paginate({
return result;
}, []);
- // FIXME: responsive width
const pages: (React.ReactNode | number)[] = [];
const ellipsis = ;
diff --git a/website/src/components/Paginate/styles.module.css b/website/src/components/Paginate/styles.module.css
index 0abb409a..bbd2e58b 100644
--- a/website/src/components/Paginate/styles.module.css
+++ b/website/src/components/Paginate/styles.module.css
@@ -24,7 +24,6 @@
@apply bg-hero text-white border-hero;
}
-
.disabled {
@apply opacity-60 pointer-events-none;
}
diff --git a/website/src/pages/changelog.md b/website/src/pages/changelog.md
index 69618083..59cd13b6 100644
--- a/website/src/pages/changelog.md
+++ b/website/src/pages/changelog.md
@@ -4,6 +4,19 @@ description: Changelog
# 更新日志
+## Latest Changes
+
+- 修复 `receive`, `got` 在参数为空消息时依旧会反复询问
+- 修复文档商店分页显示错误
+- 修复插件导入失败时,依然存在于已导入插件列表中
+- 移除 `state` 依赖注入所需的默认值 `State()`
+- 增加 `fastapi` 配置项:是否将适配器路由包含在 schema 中
+- 修改 `load_builtin_plugins` 函数,使其能够支持加载多个内置插件
+- 新增 `load_builtin_plugin` 函数,用于加载单个内置插件
+- 修改 `Message` 和 `MessageSegment` 类,完善 typing,转移 Mapping 构建支持至 pydantic validate
+- 调整项目结构,分离内部定义与用户接口
+- 新增 Bot 连接事件钩子 (如 `driver.on_bot_connect` ) 的依赖注入
+
## v2.0.0b1
- 新增 `MessageTemplate` 对于 `str` 普通模板的支持
diff --git a/website/src/pages/store.mdx b/website/src/pages/store.mdx
index 24037f56..a6db2047 100644
--- a/website/src/pages/store.mdx
+++ b/website/src/pages/store.mdx
@@ -13,6 +13,10 @@ import Bot from "../components/Bot";
# 商店
+:::warning 警告
+商店未带有绿色官方标记的任何适配器、插件均由社区贡献,官方无法对其质量、安全性、可用性负责。
+:::
+
diff --git a/website/static/adapters.json b/website/static/adapters.json
index 1f5f9bff..5342f9c7 100644
--- a/website/static/adapters.json
+++ b/website/static/adapters.json
@@ -5,7 +5,7 @@
"name": "OneBot V11",
"desc": "OneBot V11 协议",
"author": "yanyongyu",
- "homepage": "https://github.com/nonebot/adapter-onebot",
+ "homepage": "https://onebot.adapters.nonebot.dev/",
"tags": [],
"is_official": true
},
@@ -69,4 +69,4 @@
"tags": [],
"is_official": false
}
-]
\ No newline at end of file
+]
diff --git a/website/static/img/setup.svg b/website/static/img/setup.svg
new file mode 100644
index 00000000..79dbeebd
--- /dev/null
+++ b/website/static/img/setup.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/website/static/plugins.json b/website/static/plugins.json
index a1e57eac..e6842a34 100644
--- a/website/static/plugins.json
+++ b/website/static/plugins.json
@@ -1303,4 +1303,4 @@
],
"is_official": false
}
-]
\ No newline at end of file
+]
diff --git a/website/static/unregister-sw.js b/website/static/unregister-sw.js
index 50cdbb9c..8216d0b1 100644
--- a/website/static/unregister-sw.js
+++ b/website/static/unregister-sw.js
@@ -1 +1,16 @@
-navigator.serviceWorker.getRegistrations().then(function(e){for(var r,i=e,t=Array.isArray(i),a=0,i=t?i:i[Symbol.iterator]();;){if(t){if(a>=i.length)break;r=i[a++]}else{if((a=i.next()).done)break;r=a.value}r.unregister()}});
\ No newline at end of file
+navigator.serviceWorker.getRegistrations().then(function (e) {
+ for (
+ var r, i = e, t = Array.isArray(i), a = 0, i = t ? i : i[Symbol.iterator]();
+ ;
+
+ ) {
+ if (t) {
+ if (a >= i.length) break;
+ r = i[a++];
+ } else {
+ if ((a = i.next()).done) break;
+ r = a.value;
+ }
+ r.unregister();
+ }
+});
diff --git a/website/versioned_docs/version-2.0.0-beta.1/README.md b/website/versioned_docs/version-2.0.0-beta.1/README.md
deleted file mode 100644
index f630b109..00000000
--- a/website/versioned_docs/version-2.0.0-beta.1/README.md
+++ /dev/null
@@ -1,49 +0,0 @@
----
-sidebar_position: 0
-id: index
-slug: /
----
-
-# 概览
-
-NoneBot2 是一个现代、跨平台、可扩展的 Python 聊天机器人框架,它基于 Python 的类型注解和异步特性,能够为你的需求实现提供便捷灵活的支持。
-
-需要注意的是,NoneBot 仅支持 **Python 3.7.3 以上版本**
-
-## 特色
-
-### 异步优先
-
-NoneBot2 基于 Python [asyncio](https://docs.python.org/3/library/asyncio.html) 编写,并在异步机制的基础上进行了一定程度的同步函数兼容。
-
-### 完整的类型注解
-
-NoneBot2 参考 [PEP 484](https://www.python.org/dev/peps/pep-0484/) 等 PEP 完整实现了类型注解,通过 `pyright`/`pylance` 检查。配合编辑器的类型推导功能,能将绝大多数的 Bug 杜绝在编辑器中 ([编辑器支持](./start/editor-support))。
-
-### 开箱即用
-
-NoneBot2 提供了使用便捷、具有交互式功能的命令行工具 -- `nb-cli`,使得初次接触 NoneBot 时更容易上手。详细使用方法请参考各文档章节以及 [使用脚手架](./start/nb-cli)。
-
-### 插件系统
-
-插件系统是 NoneBot 的核心,通过它可以实现机器人的模块化以及功能扩展,便于维护和管理。
-
-### 依赖注入系统
-
-NoneBot2 采用了一套自行定义的依赖注入系统,可以让事件的处理过程更加的简洁、清晰,增加代码的可读性,减少代码冗余。
-
-#### 什么是依赖注入
-
-[**"依赖注入"**](https://zh.m.wikipedia.org/wiki/%E6%8E%A7%E5%88%B6%E5%8F%8D%E8%BD%AC)意思是,在编程中,有一种方法可以让你的代码声明它工作和使用所需要的东西, 即"**依赖**"。
-
-系统 (在这里是指 `NoneBot` ) 将负责做任何需要的事情,为你的代码提供这些必要依赖 (即"**注入**"依赖性)
-
-这在你有以下情形的需求时非常有用:
-
-- 这部分代码拥有共享的逻辑(同样的代码逻辑多次重复)
-- 共享数据库以及网络请求连接会话
- - 比如 `httpx.AsyncClient`, `aiohttp.ClientSession` 和 `sqlalchemy.Session`
-- 用户权限检查以及认证
-- 还有更多...
-
-它在完成上述工作的同时,还能尽量减少代码的耦合和重复
diff --git a/website/versioned_docs/version-2.0.0-beta.1/advanced/README.md b/website/versioned_docs/version-2.0.0-beta.1/advanced/README.md
deleted file mode 100644
index 06c6dacc..00000000
--- a/website/versioned_docs/version-2.0.0-beta.1/advanced/README.md
+++ /dev/null
@@ -1,192 +0,0 @@
----
-id: index
-slug: /advanced
-
-options:
- menu:
- weight: 10
- category: advanced
----
-
-# 深入
-
-:::danger 警告
-进阶部分尚未更新完成
-:::
-
-## 它如何工作?
-
-如同[概览](../README.md)所言:
-
-> NoneBot2 是一个可扩展的 Python 异步机器人框架,它会对机器人收到的事件进行解析和处理,并以插件化的形式,按优先级分发给事件所对应的事件响应器,来完成具体的功能。
-
-`Nonebot2` 是一个可以对机器人上报的事件进行处理并完成具体功能的机器人框架,在这里,我们将简要讲述它的工作内容。
-
-**便捷起见,以下内容对 `Nonebot2` 会被称为 `nonebot`,与 `Nonebot2` 交互的机器人实现会被称为 `协议端`**。
-
-在实际应用中,`nonebot` 会充当一个高性能,轻量级的 Python 微服务框架。协议端可以通过 `http`, `websocket` 等方式与之通信,这个通信往往是双向的:一方面,协议端可以上报数据给 `nonebot`,`nonebot` 会处理数据并返回响应给协议端;另一方面,`nonebot` 可以主动推送数据给协议端。而 `nonebot` 便是围绕双向通信进行工作的。
-
-在开始工作之前,`nonebot` 需要进行准备工作:
-
-1. **运行 `nonebot.init` 初始化函数**,它会读取配置文件,并初始化 `nonebot` 和后端驱动 `driver` 对象。
-2. **注册协议适配器 `adapter`** 。
-3. **加载插件**。
-
-准备工作完成后,`nonebot` 会利用 `uvicorn` 启动,并运行 `on_startup` 钩子函数。
-
-随后,倘若一个协议端与 `nonebot` 进行了连接,`nonebot` 的后端驱动 `driver` 就会将 `adapter` 实例化为 `bot`,`nonebot` 便会利用 `bot` 开始工作,它的工作内容分为两个方面:
-
-1. **事件处理**,`bot` 会将协议端上报的数据转化为 `事件`(`Event`),之后 `nonebot` 会根据一套既定流程来处理 `事件`。
-
-2. **调用 `API`**, 在**事件处理**的过程中,`nonebot` 可以通过 `bot` 调用协议端指定的 `API` 来获取更多数据,或者反馈响应给协议端; `nonebot` 也可以通过调用 `API` 向协议端主动请求数据或者主动推送数据。
-
-在**指南**模块, 我们已经叙述了[如何配置 nonebot](../tutorial/configuration.md), [如何注册协议适配器](../tutorial/register-adapter.md),[如何加载插件](../tutorial/plugin/load-plugin.md), 在这里便不再赘述。
-
-下面,我们将对**事件处理**, **调用 API**进行说明。
-
-## 事件处理
-
-我们可以先看事件处理的流程图:
-
-
-
-在流程图里,我们可以看到,`nonebot` 会有三个阶段来处理事件:
-
-1. **driver 处理上报数据**
-2. **adapter 处理原始数据**
-3. **nonebot 处理 Event**
-
-我们将顺序说明这三个阶段。其中,会将第三个阶段拆分成**概念解释**,**处理 Event**,**特殊异常处理**三个部分来说明。
-
-### driver 处理上报数据
-
-1. 协议端会通过 `websocket` 或者 `http` 等方式与 `nonebot` 的后端驱动 `driver` 连接,`driver` 会根据之前注册的 `adapter` 和配置文件的内容来进行鉴权,从而获得这个连接的唯一识别 id `self-id`,随后 `adapter` 就会利用 `self-id` 实例化为 `bot` 对象。
-
- ::: tip
- 需要注意的是,如果协议端通过 `websocket` 与 `nonebot` 连接,这个步骤只会在建立连接时进行,并在之后运行 `on_bot_connect` 钩子函数;通过 `http` 方式连接时,会在协议端每次上报数据时都进行这个步骤。
- :::
-
- ::: warning
- 连接之前必须要注册 `adapter`
- :::
-
- ::: warning
- `self-id` 是帐号的唯一识别 ID,这意味着不能出现相同的 `self-id`。
- :::
-
-2. `driver` 会将接收到的数据转交给 `bot` 对象进一步处理。
-
-### adapter 处理原始数据
-
-1. `bot` 会利用事先定义好的 `Event Model` 对上报的数据进行分析处理,将数据转化为 `nonebot` 可以处理的 `Event` 对象。
-
- ::: tip
- `adapter` 在转换数据格式的同时可以进行一系列的特殊操作,例如 `CQHTTP` 会对 `reply` 信息进行提取。
- :::
-
-2. `Event` 会传入 `nonebot` 做进一步处理。
-
-### nonebot 处理 Event
-
-在讲述这个阶段之前,我们需要先对几个概念进行解释。
-
-#### 概念解释
-
-1. **hook**,或者说**钩子函数**,它们可以在 `nonebot` 处理 `Event` 的不同时刻进行拦截,修改或者扩展,在 `nonebot` 中,钩子函数分为 `事件预处理hook`,`运行预处理hook`,`运行后处理hook` 和 `事件后处理hook`。
-
- ::: tip
- 关于`hook`的更多信息,可以查阅[这里](./runtime-hook.md)
- :::
-
-2. **Matcher**与**matcher**,在**指南**中,我们讲述了[如何注册事件响应器](../tutorial/plugin/create-matcher.md),这里的事件响应器或者说 `Matcher` 并不是一个具体的实例 `instance`,而是一个具有特定属性的类 `class`。只有当 `Matcher` **响应事件**时,才会实例化为具体的 `instance`,也就是 `matcher`。`matcher` 可以认为是 `nonebot` 处理 `Event` 的基本单位,运行 `matcher` 是`nonebot`工作的主要内容。
-
-3. **handler**,或者说**事件处理函数**, 它们可以认为是 `nonebot` 处理 `Event` 的最小单位。在不考虑 `hook` 的情况下,**运行 matcher 就是顺序运行 matcher.handlers**,这句话换种表达方式就是,`handler` 只有添加到 `matcher.handlers` 时,才可以参与到 `nonebot` 的工作中来。
-
- ::: tip
- 如何让 `handler` 添加到 `matcher.handlers`?
-
- 一方面,我们可以参照[这里](../tutorial/plugin/create-handler.md)利用装饰器来添加;另一方面,我们在用 `on()` 或者 `on_*()` 注册事件响应器时,可以添加 `handlers=[handler1, handler2, ...]` 这样的关键词参数来添加。
-
- :::
-
-#### 处理 Event
-
-1. **执行事件预处理 hook**, `nonebot` 接收到 `Event` 后,会传入到 `事件预处理hook` 中进行处理。
-
- ::: warning
- 需要注意的是,执行多个 `事件预处理hook` 时并无顺序可言,它们是**并行运行**的。这个原则同样适用于其他的 `hook`。
- :::
-
-2. **按优先级升序选出同一优先级的 Matcher**,`nonebot` 提供了一个全局字典 `matchers`,这个字典的 `key` 是优先级 `priority`,`value` 是一个 `list`,里面存放着同一优先级的 `Matcher`。在注册 `Matcher` 时,它和优先级 `priority` 会添加到里面。
-
- 在执行 `事件预处理hook` 后,`nonebot` 会对 `matchers` 的 `key` 升序排序并选择出当前最小优先级的 `Matcher`。
-
-3. **根据 Matcher 定义的 Rule, Permission 判断是否运行**,在选出 `Matcher` 后,`nonebot` 会将 `bot`,`Event` 传入到 `Matcher.check_rule` 和 `Matcher.check_perm` 两个函数中,两个函数分别对 Matcher 定义的 Rule, Permission 进行 check,当 check 通过后,这个 `Matcher` 就会响应事件。但是当同一个优先级的所有 `Matcher` 均没有响应时,`nonebot` 会返回到上一个步骤,选择出下一优先级的 `Matcher`。
-
-4. **实例化 matcher 并执行运行预处理 hook**,当 `Matcher` 响应事件后,它便会实例化为 `matcher`,并执行 `运行预处理hook`。
-
-5. **顺序运行 matcher 的所有 handlers**,`运行预处理hook` 执行完毕后,便会运行 `matcher`,也就是**顺序运行**它的 `handlers`。
-
- ::: tip
- `matcher` 运行 `handlers` 的顺序是: 先运行该 `matcher` 的类 `Matcher` 注册时添加的 `handlers`(如果有的话),再按照装饰器装饰顺序运行装饰的 `handlers`。
- :::
-
-6. **执行运行后处理 hook**,`matcher` 的 `handlers` 运行完毕后,会执行 `运行后处理hook`。
-
-7. **判断是否停止事件传播**,`nonebot` 会根据当前优先级所有 `matcher` 的 `block` 参数或者 `StopPropagation` 异常判断是否停止传播 `Event`,如果事件没有停止传播,`nonebot` 便会返回到第 2 步, 选择出下一优先级的 `Matcher`。
-
-8. **执行事件后处理 hook**,在 `Event` 停止传播或执行完所有响应的 `Matcher` 后,`nonebot` 会执行 `事件后处理hook`。
-
- 当 `事件后处理hook` 执行完毕后,当前`Event`的处理周期就顺利结束了。
-
-#### 特殊异常处理
-
-在这个阶段,`nonebot` 规定了几个特殊的异常,当 `nonebot` 捕获到它们时,会用特定的行为来处理它们。
-
-1. **IgnoredException**
-
- 这个异常可以在 `事件预处理hook` 和 `运行预处理hook` 抛出。
-
- 当 `事件预处理hook` 抛出它时,`nonebot` 会忽略当前的 `Event`,不进行处理。
-
- 当 `运行预处理hook` 抛出它时,`nonebot` 会忽略当前的 `matcher`,结束当前 `matcher` 的运行。
-
- ::: warning
- 当 `hook` 需要抛出这个异常时,要写明原因。
- :::
-
-2. **PausedException**
-
- 这个异常可以在 `handler` 中由 `Matcher.pause` 抛出。
-
- 当 `nonebot` 捕获到它时,会停止运行当前 `handler` 并结束当前 `matcher` 的运行,并将后续的 `handler` 交给一个临时 `Matcher` 来响应当前交互用户的下一个消息事件,当临时 `Matcher` 响应时,临时 `Matcher` 会运行后续的 handlers。
-
-3. **RejectedException**
-
- 这个异常可以在 `handler` 中由 `Matcher.reject` 抛出。
-
- 当 `nonebot` 捕获到它时,会停止运行当前 `handler` 并结束当前 `matcher` 的运行,并将当前 handler 和后续 `handler` 交给一个临时 `Matcher` 来响应当前交互用户的下一个消息事件,当临时 `Matcher` 响应时,临时 `Matcher` 会运行当前 `handler` 和后续的 `handler`。
-
-4. **FinishedException**
-
- 这个异常可以在 `handler` 中由 `Matcher.finish` 抛出。
-
- 当 `nonebot` 捕获到它时,会停止运行当前 `handler` 并结束当前 `matcher` 的运行。
-
-5. **StopPropagation**
-
- 这个异常一般会在执行 `运行后处理hook` 后抛出。
-
- 当 `nonebot` 捕获到它时, 会停止传播当前 `Event`,不再寻找下一优先级的 `Matcher`,直接执行 `事件后处理hook`。
-
-## 调用 API
-
-`nonebot` 可以通过 `bot` 来调用 `API` ,`API` 可以向协议端发送数据,也可以向协议端请求更多的数据。
-
-::: tip
-不同 `adapter` 规定了不同的 API,对应的 API 列表请参照协议规范。
-:::
-
-一般来说,我们可以用 `bot.*` 来调用 `API`(\*是 `API` 的 `action` 或者 `endpoint`)。
-
-对于发送消息而言,一方面可以调用既有的 API;另一方面 `nonebot` 实现了两个便捷方法,`bot.send(event, message, **kwargs)` 方法和可以在 `handler` 中使用的 `Matcher.send(message, **kwargs)` 方法,来向事件主体发送消息。
diff --git a/website/versioned_docs/version-2.0.0-beta.1/advanced/di/_category_.json b/website/versioned_docs/version-2.0.0-beta.1/advanced/di/_category_.json
deleted file mode 100644
index af708df3..00000000
--- a/website/versioned_docs/version-2.0.0-beta.1/advanced/di/_category_.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "label": "依赖注入"
-}
diff --git a/website/versioned_docs/version-2.0.0-beta.1/advanced/di/dependency-injection.md b/website/versioned_docs/version-2.0.0-beta.1/advanced/di/dependency-injection.md
deleted file mode 100644
index 57a1e515..00000000
--- a/website/versioned_docs/version-2.0.0-beta.1/advanced/di/dependency-injection.md
+++ /dev/null
@@ -1,109 +0,0 @@
----
-sidebar_position: 1
-description: 依赖注入简介
-
-options:
- menu:
- weight: 60
- category: advanced
----
-
-# 简介
-
-受 [`FastApi`](https://fastapi.tiangolo.com/tutorial/dependencies/) 启发,NoneBot 同样编写了一个简易的依赖注入模块,使得开发者可以通过事件处理函数参数的类型标注来自动注入依赖。
-
-## 什么是依赖注入?
-
-~~交给 mix 了~~
-
-## 使用依赖注入
-
-以下通过一个简单的例子来说明依赖注入的使用方法:
-
-### 编写依赖函数
-
-这里我们编写了一个简单的函数 `depend` 作为依赖函数
-
-```python {7-9}
-from nonebot.log import logger
-from nonebot.params import Depends
-from nonebot import on_command, on_message
-
-test = on_command("123")
-
-def depend(state: dict):
- # do something with state
- return {**state, "depend": "depend"}
-
-@test.handle()
-async def _(x: dict = Depends(depend)):
- print(x)
-```
-
-它和普通的事件处理函数并无区别,同样可以接受 `bot`, `event` 等参数,你可以把它当作一个普通的事件处理函数但是去除了装饰器(并没有使用 `matcher.handle()` 等来进行装饰),并且它可以返回任何类型的值。
-
-在这个例子中,依赖函数接受一个参数:
-
-- `state: dict`:当前事件处理状态字典。
-
-并且返回了一个 `state` 的复制以及一个附加的键值 `depend` 。
-
-### Import `Depends`
-
-```python {2}
-from nonebot.log import logger
-from nonebot.params import Depends
-from nonebot import on_command, on_message
-
-test = on_command("123")
-
-def depend(state: dict):
- # do something with state
- return {**state, "depend": "depend"}
-
-@test.handle()
-async def _(x: dict = Depends(depend)):
- print(x)
-```
-
-### 在事件处理函数里声明依赖函数
-
-与 FastAPI 类似,你可以在函数中添加一个新的参数,并且使用 `Depends` 来声明它的依赖。
-
-```python {12}
-from nonebot.log import logger
-from nonebot.params import Depends
-from nonebot import on_command, on_message
-
-test = on_command("123")
-
-def depend(state: dict):
- # do something with state
- return {**state, "depend": "depend"}
-
-@test.handle()
-async def _(x: dict = Depends(depend)):
- print(x)
-```
-
-你需要给 `Depends` 指定一个依赖函数,这个依赖函数的返回值会被作为 `x` 的值。
-
-`Depends` 的首个参数即是依赖函数,或者其他 `Callable` 对象,在之后会对更多形式的依赖对象进行介绍。
-
-:::tip
-参数 `x` 的类型标注并不会影响事件处理函数的运行,类型检查并不会对依赖函数的返回值以及类型标注进行检查。
-:::
-
-当接收到事件时,NoneBot 会进行以下处理:
-
-1. 查询缓存,如果缓存中有相应的值,则直接返回。
-2. 准备依赖函数所需要的参数。
-3. 调用依赖函数并获得返回值。
-4. 将返回值存入缓存。
-5. 将返回值作为事件处理函数中的参数值传入。
-
-## 依赖缓存
-
-## Class 作为依赖
-
-## Generator 作为依赖
diff --git a/website/versioned_docs/version-2.0.0-beta.1/advanced/di/overload.md b/website/versioned_docs/version-2.0.0-beta.1/advanced/di/overload.md
deleted file mode 100644
index b1ab1650..00000000
--- a/website/versioned_docs/version-2.0.0-beta.1/advanced/di/overload.md
+++ /dev/null
@@ -1,74 +0,0 @@
----
-sidebar_position: 3
-description: 重载事件处理函数
-
-options:
- menu:
- weight: 62
- category: advanced
----
-
-# 事件处理函数重载
-
-当我们在编写 `nonebot2` 应用时,常常会遇到这样一个问题:该怎么让同一类型的不同事件执行不同的响应逻辑?又或者如何让不同的 `adapter` 针对同一类型的事件作出不同响应?
-
-针对这个问题, `nonebot2` 提供一个便捷而高效的解决方案:事件处理函数重载机制。简单地说,`handler` (事件处理函数) 会根据其参数的 `type hints` ([PEP484 类型标注](https://www.python.org/dev/peps/pep-0484/)) 来对相对应的 `adapter` 和 `Event` 进行响应,并且会忽略不符合其参数类型标注的情况。
-
-
-
-:::tip 提示
-
-如果想了解更多关于 `inspect` 标准库的信息,可以查看[官方文档](https://docs.python.org/zh-cn/3.9/library/inspect.html)。
-
-:::
-
-下面,我们会以 `CQHTTP` 中的 `群聊消息事件` 和 `私聊消息事件` 为例,对该机制的应用进行简单的介绍。
-
-## 一个例子
-
-首先,我们需要导入需要的方法、类型。
-
-```python
-from nonebot import on_command
-from nonebot.adapters.cqhttp import Bot, GroupMessageEvent, PrivateMessageEvent
-```
-
-之后,我们可以注册一个 `Matcher` 来响应 `消息事件` 。
-
-```python
-matcher = on_command("testoverload")
-```
-
-最后, 我们编写不同的 `handler` 并编写不同的类型标注来实现事件处理函数重载:
-
-```python
-@matcher.handle()
-async def _(bot: Bot, event: GroupMessageEvent):
- await matcher.send("群聊消息事件响应成功!")
-
-
-@matcher.handle()
-async def _(bot: Bot, event: PrivateMessageEvent):
- await matcher.send("私聊消息事件响应成功!")
-```
-
-此时,我们可以在群聊或私聊中对我们的机器人发送 `testoverload` ,它会在不同的场景做出不同的应答。
-
-这样一个简单的事件处理函数重载就完成了。
-
-## 进阶
-
-事件处理函数重载机制同样支持被 `matcher.got` 等装饰器装饰的函数。 例如:
-
-```python
-@matcher.got("key1", prompt="群事件提问")
-async def _(bot: Bot, event: GroupMessageEvent):
- await matcher.send("群聊消息事件响应成功!")
-
-
-@matcher.got("key2", prompt="私聊事件提问")
-async def _(bot: Bot, event: PrivateMessageEvent):
- await matcher.send("私聊消息事件响应成功!")
-```
-
-只有触发事件符合的函数才会触发装饰器。
diff --git a/website/versioned_docs/version-2.0.0-beta.1/advanced/di/sync-support.md b/website/versioned_docs/version-2.0.0-beta.1/advanced/di/sync-support.md
deleted file mode 100644
index 47d6f4df..00000000
--- a/website/versioned_docs/version-2.0.0-beta.1/advanced/di/sync-support.md
+++ /dev/null
@@ -1,11 +0,0 @@
----
-sidebar_position: 2
-description: 同步函数作为依赖
-
-options:
- menu:
- weight: 61
- category: advanced
----
-
-# 同步支持
diff --git a/website/versioned_docs/version-2.0.0-beta.1/advanced/export-and-require.md b/website/versioned_docs/version-2.0.0-beta.1/advanced/export-and-require.md
deleted file mode 100644
index c1e7358e..00000000
--- a/website/versioned_docs/version-2.0.0-beta.1/advanced/export-and-require.md
+++ /dev/null
@@ -1,124 +0,0 @@
----
-options:
- menu:
- weight: 50
- category: advanced
----
-
-# 跨插件访问
-
-由于 `nonebot2` 独特的插件加载机制,在使用 python 原有的 import 机制来进行插件之间的访问时,很可能会有奇怪的或者意料以外的情况发生。为了避免这种情况的发生,您可以有两种方法来实现跨插件访问:
-
-1. 将插件间的要使用的公共代码剥离出来,作为公共文件或者文件夹,提供给插件加以调用。
-2. 使用 `nonebot2` 提供的 `export` 和 `require` 机制,来实现插件间的互相调用。
-
-第一种方法比较容易理解和实现,这里不再赘述,但需要注意的是,请不要将公共文件或者公共文件夹作为**插件**被 `nonebot2` 加载。
-
-下面将介绍第二种方法—— `export` 和 `require` 机制:
-
-## 使用 export 和 require
-
-现在,假定有两个插件 `pluginA` 和 `pluginB`,需要在 `pluginB` 中调用 `pluginA` 中的一个变量 `varA` 和一个函数 `funcA`。
-
-在上面的条件中涉及到了两种操作:一种是在 `pluginA` 的 `导出对象` 操作;而另一种是在 `pluginB` 的 `导入对象` 操作。在 `nonebot2` 中,`导出对象` 的操作用 `export` 机制来实现,`导入对象` 的操作用 `require` 机制来实现。下面,我们将逐一进行介绍。
-
-:::warning 警告
-
-使用这个方法进行跨插件访问时,**需要先加载`导出对象`的插件,再加载`导入对象`的插件。**
-
-:::
-
-### 使用 export
-
-在 `pluginA` 中,我们调用 `export` 机制 `导出对象`。
-
-在 `export` 机制调用前,我们需要保证导出的对象已经被定义,比如:
-
-```python
-varA = "varA"
-
-
-def funcA():
- return "funcA"
-```
-
-在确保定义之后,我们可以从 `nonebot.plugin` 导入 `export()` 方法, `export()` 方法会返回一个特殊的字典 `export`:
-
-```python
-from nonebot.plugin import export
-
-export=export()
-```
-
-这个字典可以用来装载导出的对象,它的 key 是对象导出后的命名,value 是对象本身,我们可以直接创建新的 `key` - `value` 对导出对象:
-
-```python
-export.vA = varA
-export.fA = funcA
-```
-
-除此之外,也支持 `嵌套` 导出对象:
-
-```python
-export.sub.vA = varA
-export.sub.fA = funcA
-```
-
-特别地,对于 `函数对象` 而言,`export` 支持用 `装饰器` 的方法来导出,因此,我们可以这样定义 `funcA`:
-
-```python
-@export.sub
-def funcA():
- return "funcA"
-```
-
-或者:
-
-```python
-@export
-def funcA():
- return "funcA"
-```
-
-通过 `装饰器` 的方法导出函数时,命名固定为函数的命名,也就是说,上面的两个例子等同于:
-
-```python
-export.sub.funcA = funcA
-
-export.funcA = funcA
-```
-
-这样,我们就成功导出 `varA` 和 `funcA` 对象了。
-
-下面我们将介绍如何在 `pluginB` 中导入这些对象。
-
-### 使用 require
-
-在 `pluginB` 中,我们调用 `require` 机制 `导入对象`。
-
-:::warning 警告
-
-在导入来自其他插件的对象时, 请确保导出该对象的插件在引用该对象的插件之前加载。如果该插件并未被加载,则会尝试加载,加载失败则会返回 `None`。
-
-:::
-
-我们可以从 `nonebot.plugin` 中导入 `require()` 方法:
-
-```python
-from nonebot.plugin import require
-```
-
-`require()` 方法的参数是插件名, 它会返回在指定插件中,用 `export()` 方法创建的字典。
-
-```python
-require_A = require('pluginA')
-```
-
-在之前,这个字典已经存入了 `'vA'` - `varA`, `'fA'` - `funcA` 或 `'funcA'` - `funcA` 这样的 `key` - `value` 对。因此在这里我们直接用 `属性` 的方法来获取导入对象:
-
-```python
-varA = require_A.vA
-funcA = require_A.fA or require_A.funcA
-```
-
-这样,我们就在 `pluginB` 中成功导入了 `varA` 和 `funcA` 对象了。
diff --git a/website/versioned_docs/version-2.0.0-beta.1/advanced/images/Handle-Event.png b/website/versioned_docs/version-2.0.0-beta.1/advanced/images/Handle-Event.png
deleted file mode 100644
index 70a12ec7..00000000
Binary files a/website/versioned_docs/version-2.0.0-beta.1/advanced/images/Handle-Event.png and /dev/null differ
diff --git a/website/versioned_docs/version-2.0.0-beta.1/advanced/images/plugin_store_publish.png b/website/versioned_docs/version-2.0.0-beta.1/advanced/images/plugin_store_publish.png
deleted file mode 100644
index ae83861f..00000000
Binary files a/website/versioned_docs/version-2.0.0-beta.1/advanced/images/plugin_store_publish.png and /dev/null differ
diff --git a/website/versioned_docs/version-2.0.0-beta.1/advanced/images/plugin_store_publish_2.png b/website/versioned_docs/version-2.0.0-beta.1/advanced/images/plugin_store_publish_2.png
deleted file mode 100644
index eb250b1f..00000000
Binary files a/website/versioned_docs/version-2.0.0-beta.1/advanced/images/plugin_store_publish_2.png and /dev/null differ
diff --git a/website/versioned_docs/version-2.0.0-beta.1/advanced/permission.md b/website/versioned_docs/version-2.0.0-beta.1/advanced/permission.md
deleted file mode 100644
index a8ba5738..00000000
--- a/website/versioned_docs/version-2.0.0-beta.1/advanced/permission.md
+++ /dev/null
@@ -1,97 +0,0 @@
----
-options:
- menu:
- weight: 30
- category: advanced
----
-
-# 权限控制
-
-**权限控制**是机器人在实际应用中需要解决的重点问题之一,`Nonebot` 提供了十分完善且灵活的权限控制机制—— `Permission` 机制。接下来我们将对这个机制进行简单的说明。
-
-## 应用
-
-如同 `Rule` 一样, `Permission` 可以在[注册事件响应器](../tutorial/plugin/create-matcher.md)时添加 `permission` 参数来加以应用,这样 `Nonebot` 会在事件响应时检测事件主体的权限。下面我们以 `SUPERUSER` 为例,对该机制的应用做一下介绍。
-
-```python
-from nonebot.permission import SUPERUSER
-from nonebot.adapters import Bot
-from nonebot import on_command
-
-matcher = on_command("测试超管", permission=SUPERUSER)
-
-
-@matcher.handle()
-async def _(bot: Bot):
- await matcher.send("超管命令测试成功")
-
-
-@matcher.got("key1", "超管提问")
-async def _(bot: Bot, event: Event):
- await matcher.send("超管命令got成功")
-```
-
-在这段代码中,我们事件响应器指定了 `SUPERUSER` 这样一个权限,那么机器人只会响应超级管理员的 `测试超管` 命令,并且会响应该超级管理员的连续对话。
-
-::: tip 提示
-
-在这里需要强调的是,`Permission` 与 `Rule` 的表现并不相同, `Rule` 只会在初次响应时生效,在余下的对话中并没有限制事件;但是 `Permission` 会持续生效,在连续对话中会一直对事件主体加以限制。
-
-:::
-
-## 进阶
-
-`Permission` 除了可以在注册事件响应器时加以应用,还可以在编写事件处理函数 `handler` 时主动调用,我们可以利用这个特性在一个 `handler` 里对不同权限的事件主体进行区别响应,下面我们以 `CQHTTP` 中的 `GROUP_ADMIN` (普通管理员非群主)和 `GROUP_OWNER` 为例,说明下怎么进行主动调用。
-
-```python
-from nonebot import on_command
-from nonebot.adapters.cqhttp import Bot
-from nonebot.adapters.cqhttp import GroupMessageEvent
-from nonebot.adapters.cqhttp import GROUP_ADMIN, GROUP_OWNER
-
-matcher = on_command("测试权限")
-
-@matcher.handle()
-async def _(bot: Bot, event: GroupMessageEvent):
- if await GROUP_ADMIN(bot, event):
- await matcher.send("管理员测试成功")
- elif await GROUP_OWNER(bot, event):
- await matcher.send("群主测试成功")
- else:
- await matcher.send("群员测试成功")
-
-```
-
-在这段代码里,我们并没有对命令的权限指定,这个命令会响应所有在群聊中的 `测试权限` 命令,但是在 `handler` 里,我们对两个 `Permission` 进行主动调用,从而可以对不同的角色进行不同的响应。
-
-## 自定义
-
-如同 `Rule` 一样, `Permission` 也是由非负数个 `PermissionChecker` 组成的,但只需其中一个返回 `True` 时就会匹配成功。下面则是 `PermissionChecker` 和 `Permission` 示例:
-
-```python
-from nonebot.adapters import Bot, Event
-from nonebot.permission import Permission
-
-async def async_checker(bot: Bot, event: Event) -> bool:
- return True
-
-def sync_checker(bot: Bot, event: Event) -> bool:
- return True
-
-def check(arg1, arg2):
-
- async def _checker(bot: Bot, event: Event) -> bool:
- return bool(arg1 + arg2)
-
- return Permission(_checker)
-```
-
-`Permission` 和 `PermissionChecker` 之间可以使用 `或 |` 互相组合:
-
-```python
-from nonebot.permission import Permission
-
-Permission(async_checker1) | sync_checker | async_checker2
-```
-
-同样地,如果想用 `Permission(*checkers)` 包裹构造 `Permission` ,函数必须是异步的;但是在利用 `或 |` 符号连接构造时, `Nonebot` 会自动包裹同步函数为异步函数。
diff --git a/website/versioned_docs/version-2.0.0-beta.1/advanced/publish-plugin.md b/website/versioned_docs/version-2.0.0-beta.1/advanced/publish-plugin.md
deleted file mode 100644
index 47bd15f6..00000000
--- a/website/versioned_docs/version-2.0.0-beta.1/advanced/publish-plugin.md
+++ /dev/null
@@ -1,69 +0,0 @@
----
-options:
- menu:
- weight: 70
- category: advanced
----
-
-# 发布插件
-
-## 前注
-
-本章节仅包含插件发布流程指导,插件开发请查阅 **[创建插件](../tutorial/plugin/config-plugin.md)** 章节与 **[Plugin API 文档](../api/plugin.md)** 。
-
-## 插件发布流程
-
-### 发布到 PyPI
-
-您可以选择任意自己喜欢的方式将您的插件发布到 **[PyPI](https://pypi.org/)** ,如使用 **[setuptools](https://pypi.org/project/setuptools/)** 或 **[poetry](https://pypi.org/project/poetry/)** 进行 PyPI 发布。
-
-发布时,请您为自己的插件取一个清晰易懂的名字。通常而言,一款 NoneBot2 插件名称使用 `nonebot-plugin-` 作为前缀(如`nonebot-plugin-foo`),以 `nonebot_plugin_` 作为导入名的前缀(如`nonebot_plugin_foo`),这并非是强制规范, 而是为了防止与其他 PyPI 包产生冲突, 所以我们推荐您在没有特殊需求的情况下这样做。
-
-发布后,请确保您的插件已能公开的从 PyPI 访问到,请检查您的插件在 PyPI 的地址:`https://pypi.org/project/<您的Nonebot2插件项目名>`
-
-### 托管您的插件源代码
-
-将插件源代码及相关构建文件(如`pyproject.toml`或`setup.py`等与 PyPI 包构建相关的文件)托管在公开代码仓。
-
-请确保您的代码仓地址能够被正确的访问,检查您的插件在代码仓的地址,如 `https://github.com/<您的Github用户名>/<您的插件Github项目名>` 。
-
-### 申请发布到 Nonebot2 插件商店
-
-完成在 PyPI 的插件发布流程与源代码托管流程后,请您前往 **[NoneBot2 商店](https://v2.nonebot.dev/store.html)** 页面,切换到 **插件** 页签,点击 **发布插件** 按钮。
-
-
-
-如图所示,在弹出的插件信息提交表单内,填入您所要发布的相应插件信息:
-
-```text
-插件名称: 您的Nonebot2插件名称
-插件介绍: 为您的插件提供的简短介绍信息
-PyPI项目名: 您的插件所在的PyPI Project名,如 nonebot-plugin-xxxx
-import包名: 您的插件通过Python导入时使用的包名,如 nonebot_plugin_xxxx
-仓库/主页: 您的插件托管地址,如 https://github.com/<您的Github用户名>/nonebot-plugin-xxxx
-标签: 一个或多个可选颜色的TAG,每填写一个点击添加标签,若要删除,点击标签即可;标签长度不超过10字符,标签个数不超过3个
-特定标签内容Adapter:点击Type的Adapter,将创建一个 a: 开头的标签,填入内容以指定您插件使用的adapter
-特定标签内容Topic:点击Type的Topic,将创建一个 t: 开头的标签,填入内容以指定您插件的主题
-```
-
-
-
-完成填写后,请点击 **发布** 按钮,这将自动在 **[NoneBot2](https://github.com/nonebot/nonebot2)** 代码仓内创建发布您的插件的对应 Issue。
-
-### 等待插件发布处理
-
-您的插件发布 Issue 创建后,将会经过*Nonebot2 Publish Bot*的检查,以确保插件信息正确无误。
-
-若您的插件发布 Issue 未通过检查,您可以 **直接修改** Issue 内容以更新发布请求。*Nonebot2 Publish Bot*在您修改 Issue 内容后将会自动重新执行检查。您无需关闭、重新提交发布申请。
-
-之后,NoneBot2 的维护者们将会对插件进行进一步的检查,以确保用户能够正常安装并使用该插件。
-
-完成这些步骤后,您的插件将会被合并到 **[NoneBot2 商店](https://v2.nonebot.dev/store.html)** ,而您也将成为 **[NoneBot2 贡献者](https://github.com/nonebot/nonebot2/graphs/contributors)** 的一员。
-
-## 完成
-
-恭喜您,经过上述的发布流程,您的插件已经成功发布到 Nonebot2 商店了。
-
-此时,您可以在 **[NoneBot2 商店](https://v2.nonebot.dev/store.html)** 的插件页签查找到您的插件。同时,欢迎您成为 **[NoneBot2 贡献者](https://github.com/nonebot/nonebot2/graphs/contributors)** !
-
-**Congratulations!**
diff --git a/website/versioned_docs/version-2.0.0-beta.1/advanced/runtime-hook.md b/website/versioned_docs/version-2.0.0-beta.1/advanced/runtime-hook.md
deleted file mode 100644
index cf0dd928..00000000
--- a/website/versioned_docs/version-2.0.0-beta.1/advanced/runtime-hook.md
+++ /dev/null
@@ -1,170 +0,0 @@
----
-options:
- menu:
- weight: 40
- category: advanced
----
-
-# 钩子函数
-
-[`钩子编程`](https://zh.wikipedia.org/wiki/%E9%92%A9%E5%AD%90%E7%BC%96%E7%A8%8B)
-
-> 钩子编程(hooking),也称作“挂钩”,是计算机程序设计术语,指通过拦截软件模块间的函数调用、消息传递、事件传递来修改或扩展操作系统、应用程序或其他软件组件的行为的各种技术。处理被拦截的函数调用、事件、消息的代码,被称为钩子(hook)。
-
-在 `nonebot2` 中有一系列预定义的钩子函数,分为两类:`全局钩子函数` 和 `事件钩子函数` ,这些钩子函数可以用装饰器的形式来使用。
-
-## 全局钩子函数
-
-全局钩子函数是指 `nonebot2` 针对其本身运行过程的钩子函数。
-
-这些钩子函数是由其后端驱动 `driver`来运行的,故需要先获得全局 `driver` 对象:
-
-```python
-from nonebot import get_driver
-
-
-driver=get_driver()
-```
-
-共分为六种函数:
-
-### 启动准备
-
-这个钩子函数会在 `nonebot2` 启动时运行。
-
-```python
-@driver.on_startup
-async def do_something():
- pass
-```
-
-### 终止处理
-
-这个钩子函数会在 `nonebot2` 终止时运行。
-
-```python
-@driver.on_shutdown
-async def do_something():
- pass
-```
-
-### bot 连接处理
-
-这个钩子函数会在 `bot` 通过 `websocket` 连接到 `nonebot2` 时运行。
-
-```python
-@driver.on_bot_connect
-async def do_something(bot: Bot):
- pass
-```
-
-### bot 断开处理
-
-这个钩子函数会在 `bot` 断开与 `nonebot2` 的 `websocket` 连接时运行。
-
-```python
-@driver.on_bot_disconnect
-async def do_something(bot: Bot):
- pass
-```
-
-### bot api 调用钩子
-
-这个钩子函数会在 `Bot` 调用 API 时运行。
-
-```python
-from nonebot.adapters import Bot
-
-@Bot.on_calling_api
-async def handle_api_call(bot: Bot, api: str, data: Dict[str, Any]):
- pass
-```
-
-### bot api 调用后钩子
-
-这个钩子函数会在 `Bot` 调用 API 后运行。
-
-```python
-from nonebot.adapters import Bot
-
-@Bot.on_called_api
-async def handle_api_result(bot: Bot, exception: Optional[Exception], api: str, data: Dict[str, Any], result: Any):
- pass
-```
-
-## 事件处理钩子
-
-这些钩子函数指的是影响 `nonebot2` 进行 `事件处理` 的函数。
-
-:::tip 提示
-
-关于 `事件处理` 的流程,可以在[这里](./README.md)查阅。
-
-:::
-
-:::warning 注意
-
-1.在事件处理钩子函数中,与 `matcher` 运行状态相关的函数将不可用,如 `matcher.finish()`
-
-2.如果需要在事件处理钩子函数中打断整个对话的执行,请参考以下范例:
-
-```python
-from nonebot.exception import IgnoredException
-
-
-@event_preprocessor
-async def do_something(bot: Bot, event: Event, state: T_State):
- raise IgnoredException("reason")
-```
-
-:::
-
-共分为四种函数:
-
-### 事件预处理
-
-这个钩子函数会在 `Event` 上报到 `nonebot2` 时运行
-
-```python
-from nonebot.message import event_preprocessor
-
-@event_preprocessor
-async def do_something(bot: Bot, event: Event, state: T_State):
- pass
-```
-
-### 事件后处理
-
-这个钩子函数会在 `nonebot2` 处理 `Event` 后运行
-
-```python
-from nonebot.message import event_postprocessor
-
-@event_postprocessor
-async def do_something(bot: Bot, event: Event, state: T_State):
- pass
-```
-
-### 运行预处理
-
-这个钩子函数会在 `nonebot2`运行 `matcher` 前运行。
-
-```python
-from nonebot.message import run_preprocessor
-
-@run_preprocessor
-async def do_something(matcher: Matcher, bot: Bot, event: Event, state: T_State):
- pass
-```
-
-### 运行后处理
-
-这个钩子函数会在 `nonebot2`运行 `matcher` 后运行。
-
-```python
-from nonebot.message import run_postprocessor
-
-@run_postprocessor
-async def do_something(matcher: Matcher, exception: Optional[Exception], bot: Bot, event: Event, state: T_State):
- pass
-```
diff --git a/website/versioned_docs/version-2.0.0-beta.1/advanced/scheduler.md b/website/versioned_docs/version-2.0.0-beta.1/advanced/scheduler.md
deleted file mode 100644
index dd45a15b..00000000
--- a/website/versioned_docs/version-2.0.0-beta.1/advanced/scheduler.md
+++ /dev/null
@@ -1,142 +0,0 @@
----
-options:
- menu:
- weight: 20
- category: advanced
----
-
-# 定时任务
-
-[`APScheduler`](https://apscheduler.readthedocs.io/en/3.x/) —— Advanced Python Scheduler
-
-> Advanced Python Scheduler (APScheduler) is a Python library that lets you schedule your Python code to be executed later, either just once or periodically. You can add new jobs or remove old ones on the fly as you please. If you store your jobs in a database, they will also survive scheduler restarts and maintain their state. When the scheduler is restarted, it will then run all the jobs it should have run while it was offline.
-
-## 从 NoneBot v1 迁移
-
-`APScheduler` 作为 `nonebot` v1 的可选依赖,为众多 bot 提供了方便的定时任务功能。`nonebot2` 已将 `APScheduler` 独立为 `nonebot_plugin_apscheduler` 插件,你可以在 [商店](https://v2.nonebot.dev/store.html) 中找到它。
-
-相比于 `nonebot` v1,`nonebot` v2 只需要安装插件并修改 `scheduler` 的导入方式即可完成迁移。
-
-## 安装插件
-
-### 通过 nb-cli
-
-如正在使用 `nb-cli` 构建项目,你可以从插件市场复制安装命令或手动输入以下命令以添加 `nonebot_plugin_apscheduler`。
-
-```bash
-nb plugin install nonebot_plugin_apscheduler
-```
-
-:::tip 提示
-`nb-cli` 默认通过 `pypi` 安装,你可以添加命令参数 `-i [mirror]` 或 `--index [mirror]` 以使用镜像源安装。
-:::
-
-### 通过 poetry
-
-执行以下命令以添加 `nonebot_plugin_apscheduler`
-
-```bash
-poetry add nonebot-plugin-apscheduler
-```
-
-:::tip 提示
-由于稍后我们将使用 `nonebot.require()` 方法进行导入,所以无需额外的 `nonebot.load_plugin()`
-:::
-
-## 快速上手
-
-1. 在需要设置定时任务的插件中,通过 `nonebot.require` 从 `nonebot_plugin_apscheduler` 导入 `scheduler` 对象
-
-2. 在该对象的基础上,根据 `APScheduler` 的使用方法进一步配置定时任务
-
-将上述步骤归纳为最小实现的代码如下:
-
-```python
-from nonebot import require
-
-scheduler = require("nonebot_plugin_apscheduler").scheduler
-
-@scheduler.scheduled_job("cron", hour="*/2", id="xxx", args=[1], kwargs={"arg2": 2})
-async def run_every_2_hour(arg1, arg2):
- pass
-
-scheduler.add_job(run_every_day_from_program_start, "interval", days=1, id="xxx")
-```
-
-## 分步进行
-
-### 导入 scheduler 对象
-
-为了使插件能够实现定时任务,需要先将 `scheduler` 对象导入插件。
-
-`nonebot2` 提供了 `nonebot.require` 方法来实现导入其他插件的内容,此处我们使用这个方法来导入 `scheduler` 对象。
-
-`nonebot` 使用的 `scheduler` 对象为 `AsyncScheduler` 。
-
-> 使用该方法传入的插件本身也需要有对应实现,关于该方法的更多介绍可以参阅 [这里](./export-and-require.md)
-
-```python
-from nonebot import require
-
-scheduler = require("nonebot_plugin_apscheduler").scheduler
-```
-
-### 编写定时任务
-
-由于本部分为标准的通过 `APScheduler` 配置定时任务,有关指南请参阅 [APScheduler 官方文档](https://apscheduler.readthedocs.io/en/3.x/userguide.html#adding-jobs)。
-
-### 配置插件选项
-
-根据项目的 `.env` 文件设置,向 `.env.*` 或 `bot.py` 文件添加 `nonebot_plugin_apscheduler` 的可选配置项
-
-:::warning 注意
-`.env.*` 文件的编写应遵循 nonebot2 对 `.env.*` 文件的编写要求
-:::
-
-#### `apscheduler_autostart`
-
-类型:`bool`
-
-默认值:`True`
-
-是否自动启动 `APScheduler`。
-
-对于大多数情况,我们需要在 `nonebot2` 项目被启动时启动定时任务,则此处设为 `true`
-
-##### 在 `.env` 中添加
-
-```bash
-APSCHEDULER_AUTOSTART=true
-```
-
-##### 在 `bot.py` 中添加
-
-```python
-nonebot.init(apscheduler_autostart=True)
-```
-
-#### `apscheduler_config`
-
-类型:`dict`
-
-默认值:`{"apscheduler.timezone": "Asia/Shanghai"}`
-
-`APScheduler` 相关配置。修改/增加其中配置项需要确保 `prefix: apscheduler`。
-
-对于 `APScheduler` 的相关配置,请参阅 [scheduler-config](https://apscheduler.readthedocs.io/en/3.x/userguide.html#scheduler-config) 和 [BaseScheduler](https://apscheduler.readthedocs.io/en/3.x/modules/schedulers/base.html#apscheduler.schedulers.base.BaseScheduler)
-
-> 官方文档在绝大多数时候能提供最准确和最具时效性的指南
-
-##### 在 `.env` 中添加
-
-```bash
-APSCHEDULER_CONFIG={"apscheduler.timezone": "Asia/Shanghai"}
-```
-
-##### 在 `bot.py` 中添加
-
-```python
-nonebot.init(apscheduler_config={
- "apscheduler.timezone": "Asia/Shanghai"
-})
-```
diff --git a/website/versioned_docs/version-2.0.0-beta.1/advanced/unittest.md b/website/versioned_docs/version-2.0.0-beta.1/advanced/unittest.md
deleted file mode 100644
index f480a2d7..00000000
--- a/website/versioned_docs/version-2.0.0-beta.1/advanced/unittest.md
+++ /dev/null
@@ -1,10 +0,0 @@
----
-description: 编写单元测试
-
-options:
- menu:
- weight: 80
- category: advanced
----
-
-# 单元测试
diff --git a/website/versioned_docs/version-2.0.0-beta.1/api/README.md b/website/versioned_docs/version-2.0.0-beta.1/api/README.md
deleted file mode 100644
index ab35e96d..00000000
--- a/website/versioned_docs/version-2.0.0-beta.1/api/README.md
+++ /dev/null
@@ -1,213 +0,0 @@
----
-sidebar_position: 1
-id: index
-slug: /api
----
-
-# NoneBot 模块
-
-## 快捷导入
-
-为方便使用,`nonebot` 模块从子模块导入了部分内容
-
-- `on_message` => `nonebot.plugin.on_message`
-
-- `on_notice` => `nonebot.plugin.on_notice`
-
-- `on_request` => `nonebot.plugin.on_request`
-
-- `on_metaevent` => `nonebot.plugin.on_metaevent`
-
-- `on_startswith` => `nonebot.plugin.on_startswith`
-
-- `on_endswith` => `nonebot.plugin.on_endswith`
-
-- `on_keyword` => `nonebot.plugin.on_keyword`
-
-- `on_command` => `nonebot.plugin.on_command`
-
-- `on_shell_command` => `nonebot.plugin.on_shell_command`
-
-- `on_regex` => `nonebot.plugin.on_regex`
-
-- `CommandGroup` => `nonebot.plugin.CommandGroup`
-
-- `Matchergroup` => `nonebot.plugin.MatcherGroup`
-
-- `load_plugin` => `nonebot.plugin.load_plugin`
-
-- `load_plugins` => `nonebot.plugin.load_plugins`
-
-- `load_all_plugins` => `nonebot.plugin.load_all_plugins`
-
-- `load_from_json` => `nonebot.plugin.load_from_json`
-
-- `load_from_toml` => `nonebot.plugin.load_from_toml`
-
-- `load_builtin_plugins` => `nonebot.plugin.load_builtin_plugins`
-
-- `get_plugin` => `nonebot.plugin.get_plugin`
-
-- `get_loaded_plugins` => `nonebot.plugin.get_loaded_plugins`
-
-- `export` => `nonebot.plugin.export`
-
-- `require` => `nonebot.plugin.require`
-
-## `get_driver()`
-
-- **说明**
-
- 获取全局 Driver 对象。可用于在计划任务的回调中获取当前 Driver 对象。
-
-- **返回**
-
- - `Driver`: 全局 Driver 对象
-
-- **异常**
-
- - `ValueError`: 全局 Driver 对象尚未初始化 (nonebot.init 尚未调用)
-
-- **用法**
-
-```python
-driver = nonebot.get_driver()
-```
-
-## `get_app()`
-
-- **说明**
-
- 获取全局 Driver 对应 Server App 对象。
-
-- **返回**
-
- - `Any`: Server App 对象
-
-- **异常**
-
- - `ValueError`: 全局 Driver 对象尚未初始化 (nonebot.init 尚未调用)
-
-- **用法**
-
-```python
-app = nonebot.get_app()
-```
-
-## `get_asgi()`
-
-- **说明**
-
- 获取全局 Driver 对应 Asgi 对象。
-
-- **返回**
-
- - `Any`: Asgi 对象
-
-- **异常**
-
- - `ValueError`: 全局 Driver 对象尚未初始化 (nonebot.init 尚未调用)
-
-- **用法**
-
-```python
-asgi = nonebot.get_asgi()
-```
-
-## `get_bot(self_id=None)`
-
-- **说明**
-
- 当提供 self_id 时,此函数是 get_bots()[self_id] 的简写;当不提供时,返回一个 Bot。
-
-- **参数**
-
- - `self_id: Optional[str]`: 用来识别 Bot 的 ID
-
-- **返回**
-
- - `Bot`: Bot 对象
-
-- **异常**
-
- - `KeyError`: 对应 ID 的 Bot 不存在
-
- - `ValueError`: 全局 Driver 对象尚未初始化 (nonebot.init 尚未调用)
-
- - `ValueError`: 没有传入 ID 且没有 Bot 可用
-
-- **用法**
-
-```python
-assert nonebot.get_bot('12345') == nonebot.get_bots()['12345']
-
-another_unspecified_bot = nonebot.get_bot()
-```
-
-## `get_bots()`
-
-- **说明**
-
- 获取所有通过 ws 连接 NoneBot 的 Bot 对象。
-
-- **返回**
-
- - `Dict[str, Bot]`: 一个以字符串 ID 为键,Bot 对象为值的字典
-
-- **异常**
-
- - `ValueError`: 全局 Driver 对象尚未初始化 (nonebot.init 尚未调用)
-
-- **用法**
-
-```python
-bots = nonebot.get_bots()
-```
-
-## `init(*, _env_file=None, **kwargs)`
-
-- **说明**
-
- 初始化 NoneBot 以及 全局 Driver 对象。
-
- NoneBot 将会从 .env 文件中读取环境信息,并使用相应的 env 文件配置。
-
- 你也可以传入自定义的 \_env_file 来指定 NoneBot 从该文件读取配置。
-
-- **参数**
-
- - `_env_file: Optional[str]`: 配置文件名,默认从 .env.{env_name} 中读取配置
-
- - `**kwargs`: 任意变量,将会存储到 Config 对象里
-
-- **返回**
-
- - `None`
-
-- **用法**
-
-```python
-nonebot.init(database=Database(...))
-```
-
-## `run(*args, **kwargs)`
-
-- **说明**
-
- 启动 NoneBot,即运行全局 Driver 对象。
-
-- **参数**
-
- - `*args`: 传入 Driver.run 的位置参数
-
- - `**kwargs`: 传入 Driver.run 的命名参数
-
-- **返回**
-
- - `None`
-
-- **用法**
-
-```python
-nonebot.run(host="127.0.0.1", port=8080)
-```
diff --git a/website/versioned_docs/version-2.0.0-beta.1/api/adapters/README.md b/website/versioned_docs/version-2.0.0-beta.1/api/adapters/README.md
deleted file mode 100644
index 94997941..00000000
--- a/website/versioned_docs/version-2.0.0-beta.1/api/adapters/README.md
+++ /dev/null
@@ -1,327 +0,0 @@
----
-id: index
-slug: /api/adapters/
----
-
-# NoneBot.adapters 模块
-
-## 协议适配基类
-
-各协议请继承以下基类,并使用 `driver.register_adapter` 注册适配器
-
-## _class_ `Bot`
-
-基类:`abc.ABC`
-
-Bot 基类。用于处理上报消息,并提供 API 调用接口。
-
-### `_calling_api_hook`
-
-- **类型**
-
- `Set[T_CallingAPIHook]`
-
-- **说明**
-
- call_api 时执行的函数
-
-### `_called_api_hook`
-
-- **类型**
-
- `Set[T_CalledAPIHook]`
-
-- **说明**
-
- call_api 后执行的函数
-
-### `__init__(adapter, self_id)`
-
-- **参数**
-
- - `self_id: str`: 机器人 ID
-
- - `request: HTTPConnection`: request 连接对象
-
-### `self_id`
-
-机器人 ID
-
-### _async_ `call_api(api, **data)`
-
-- **说明**
-
- 调用机器人 API 接口,可以通过该函数或直接通过 bot 属性进行调用
-
-- **参数**
-
- - `api: str`: API 名称
-
- - `**data`: API 数据
-
-- **示例**
-
-```python
-await bot.call_api("send_msg", message="hello world")
-await bot.send_msg(message="hello world")
-```
-
-### _abstract async_ `send(event, message, **kwargs)`
-
-- **说明**
-
- 调用机器人基础发送消息接口
-
-- **参数**
-
- - `event: Event`: 上报事件
-
- - `message: Union[str, Message, MessageSegment]`: 要发送的消息
-
- - `**kwargs`
-
-### _classmethod_ `on_calling_api(func)`
-
-- **说明**
-
- 调用 api 预处理。
-
-- **参数**
-
- - `bot: Bot`: 当前 bot 对象
-
- - `api: str`: 调用的 api 名称
-
- - `data: Dict[str, Any]`: api 调用的参数字典
-
-### _classmethod_ `on_called_api(func)`
-
-- **说明**
-
- 调用 api 后处理。
-
-- **参数**
-
- - `bot: Bot`: 当前 bot 对象
-
- - `exception: Optional[Exception]`: 调用 api 时发生的错误
-
- - `api: str`: 调用的 api 名称
-
- - `data: Dict[str, Any]`: api 调用的参数字典
-
- - `result: Any`: api 调用的返回
-
-## _class_ `MessageSegment`
-
-基类:`Mapping`, `abc.ABC`, `Generic`[`nonebot.adapters._message.TM`]
-
-消息段基类
-
-### `type`
-
-- 类型: `str`
-
-- 说明: 消息段类型
-
-### `data`
-
-- 类型: `Dict[str, Union[str, list]]`
-
-- 说明: 消息段数据
-
-## _class_ `Message`
-
-基类:`List`[`nonebot.adapters._message.TMS`], `abc.ABC`
-
-消息数组
-
-### `__init__(message=None, *args, **kwargs)`
-
-- **参数**
-
- - `message: Union[str, list, dict, MessageSegment, Message, Any]`: 消息内容
-
-### _classmethod_ `template(format_string)`
-
-- **说明**
-
- 根据创建消息模板, 用法和 `str.format` 大致相同, 但是可以输出消息对象, 并且支持以 `Message` 对象作为消息模板
- 并且提供了拓展的格式化控制符, 可以用适用于该消息类型的 `MessageSegment` 的工厂方法创建消息
-
-- **示例**
-
-```python
->>> Message.template("{} {}").format("hello", "world") # 基础演示
-Message(MessageSegment(type='text', data={'text': 'hello world'}))
->>> Message.template("{} {}").format(MessageSegment.image("file///..."), "world") # 支持消息段等对象
-Message(MessageSegment(type='image', data={'file': 'file///...'}), MessageSegment(type='text', data={'text': 'world'}))
->>> Message.template( # 支持以Message对象作为消息模板
-... MessageSegment.text('test {event.user_id}') + MessageSegment.face(233) +
-... MessageSegment.text('test {event.message}')).format(event={'user_id':123456, 'message':'hello world'})
-Message(MessageSegment(type='text', data={'text': 'test 123456'}),
- MessageSegment(type='face', data={'face': 233}),
- MessageSegment(type='text', data={'text': 'test hello world'}))
->>> Message.template("{link:image}").format(link='https://...') # 支持拓展格式化控制符
-Message(MessageSegment(type='image', data={'file': 'https://...'}))
-```
-
-- **参数**
-
- - `format_string: str`: 格式化字符串
-
-- **返回**
-
- - `MessageFormatter[TM]`: 消息格式化器
-
-### `append(obj)`
-
-- **说明**
-
- 添加一个消息段到消息数组末尾
-
-- **参数**
-
- - `obj: Union[str, MessageSegment]`: 要添加的消息段
-
-### `extend(obj)`
-
-- **说明**
-
- 拼接一个消息数组或多个消息段到消息数组末尾
-
-- **参数**
-
- - `obj: Union[Message, Iterable[MessageSegment]]`: 要添加的消息数组
-
-### `extract_plain_text()`
-
-- **说明**
-
- 提取消息内纯文本消息
-
-## _class_ `Event`
-
-基类:`abc.ABC`, `pydantic.main.BaseModel`
-
-Event 基类。提供获取关键信息的方法,其余信息可直接获取。
-
-### _abstract_ `get_type()`
-
-- **说明**
-
- 获取事件类型的方法,类型通常为 NoneBot 内置的四种类型。
-
-- **返回**
-
- - `Literal["message", "notice", "request", "meta_event"]`
-
- - 其他自定义 `str`
-
-### _abstract_ `get_event_name()`
-
-- **说明**
-
- 获取事件名称的方法。
-
-- **返回**
-
- - `str`
-
-### _abstract_ `get_event_description()`
-
-- **说明**
-
- 获取事件描述的方法,通常为事件具体内容。
-
-- **返回**
-
- - `str`
-
-### `get_log_string()`
-
-- **说明**
-
- 获取事件日志信息的方法,通常你不需要修改这个方法,只有当希望 NoneBot 隐藏该事件日志时,可以抛出 `NoLogException` 异常。
-
-- **返回**
-
- - `str`
-
-- **异常**
-
- - `NoLogException`
-
-### _abstract_ `get_user_id()`
-
-- **说明**
-
- 获取事件主体 id 的方法,通常是用户 id 。
-
-- **返回**
-
- - `str`
-
-### _abstract_ `get_session_id()`
-
-- **说明**
-
- 获取会话 id 的方法,用于判断当前事件属于哪一个会话,通常是用户 id、群组 id 组合。
-
-- **返回**
-
- - `str`
-
-### _abstract_ `get_message()`
-
-- **说明**
-
- 获取事件消息内容的方法。
-
-- **返回**
-
- - `Message`
-
-### `get_plaintext()`
-
-- **说明**
-
- 获取消息纯文本的方法,通常不需要修改,默认通过 `get_message().extract_plain_text` 获取。
-
-- **返回**
-
- - `str`
-
-### _abstract_ `is_tome()`
-
-- **说明**
-
- 获取事件是否与机器人有关的方法。
-
-- **返回**
-
- - `bool`
-
-## _class_ `MessageTemplate`
-
-基类:`string.Formatter`, `Generic`[`nonebot.adapters._template.TF`]
-
-消息模板格式化实现类
-
-### `__init__(template, factory=)`
-
-- **说明**
-
- 创建一个模板
-
-- **参数**
-
- - `template: Union[str, Message]`: 模板
-
- - `factory: Union[str, Message]`: 消息构造类型,默认为 str
-
-### `format(*args, **kwargs)`
-
-- **说明**
-
- 根据模板和参数生成消息对象
diff --git a/website/versioned_docs/version-2.0.0-beta.1/api/adapters/_category_.json b/website/versioned_docs/version-2.0.0-beta.1/api/adapters/_category_.json
deleted file mode 100644
index 3714fde8..00000000
--- a/website/versioned_docs/version-2.0.0-beta.1/api/adapters/_category_.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "position": 14
-}
diff --git a/website/versioned_docs/version-2.0.0-beta.1/api/config.md b/website/versioned_docs/version-2.0.0-beta.1/api/config.md
deleted file mode 100644
index 8fe30e5d..00000000
--- a/website/versioned_docs/version-2.0.0-beta.1/api/config.md
+++ /dev/null
@@ -1,163 +0,0 @@
----
-sidebar_position: 2
----
-
-# NoneBot.config 模块
-
-## 配置
-
-NoneBot 使用 [pydantic](https://pydantic-docs.helpmanual.io/) 以及 [python-dotenv](https://saurabh-kumar.com/python-dotenv/) 来读取配置。
-
-配置项需符合特殊格式或 json 序列化格式。详情见 [pydantic Field Type](https://pydantic-docs.helpmanual.io/usage/types/) 文档。
-
-## _class_ `Env`
-
-基类:`nonebot.config.BaseConfig`
-
-运行环境配置。大小写不敏感。
-
-将会从 `nonebot.init 参数` > `环境变量` > `.env 环境配置文件` 的优先级读取配置。
-
-### `environment`
-
-- **类型**: `str`
-
-- **默认值**: `"prod"`
-
-- **说明**
-
- 当前环境名。 NoneBot 将从 `.env.{environment}` 文件中加载配置。
-
-## _class_ `Config`
-
-基类:`nonebot.config.BaseConfig`
-
-NoneBot 主要配置。大小写不敏感。
-
-除了 NoneBot 的配置项外,还可以自行添加配置项到 `.env.{environment}` 文件中。
-这些配置将会在 json 反序列化后一起带入 `Config` 类中。
-
-### `driver`
-
-- **类型**: `str`
-
-- **默认值**: `"~fastapi"`
-
-- **说明**
-
- NoneBot 运行所使用的 `Driver` 。继承自 `nonebot.drivers.Driver` 。
-
- 配置格式为 `[:][+[:]]*`。
-
- `~` 为 `nonebot.drivers.` 的缩写。
-
-### `host`
-
-- **类型**: `IPvAnyAddress`
-
-- **默认值**: `127.0.0.1`
-
-- **说明**
-
- NoneBot 的 HTTP 和 WebSocket 服务端监听的 IP/主机名。
-
-### `port`
-
-- **类型**: `int`
-
-- **默认值**: `8080`
-
-- **说明**
-
- NoneBot 的 HTTP 和 WebSocket 服务端监听的端口。
-
-### `log_level`
-
-- **类型**: `Union[int, str]`
-
-- **默认值**: `INFO`
-
-- **说明**
-
- 配置 NoneBot 日志输出等级,可以为 `int` 类型等级或等级名称,参考 [loguru 日志等级](https://loguru.readthedocs.io/en/stable/api/logger.html#levels)。
-
-- **示例**
-
-```default
-LOG_LEVEL=25
-LOG_LEVEL=INFO
-```
-
-### `api_timeout`
-
-- **类型**: `Optional[float]`
-
-- **默认值**: `30.`
-
-- **说明**
-
- API 请求超时时间,单位: 秒。
-
-### `superusers`
-
-- **类型**: `Set[str]`
-
-- **默认值**: `set()`
-
-- **说明**
-
- 机器人超级用户。
-
-- **示例**
-
-```default
-SUPERUSERS=["12345789"]
-```
-
-### `nickname`
-
-- **类型**: `Set[str]`
-
-- **默认值**: `set()`
-
-- **说明**
-
- 机器人昵称。
-
-### `command_start`
-
-- **类型**: `Set[str]`
-
-- **默认值**: `{"/"}`
-
-- **说明**
-
- 命令的起始标记,用于判断一条消息是不是命令。
-
-### `command_sep`
-
-- **类型**: `Set[str]`
-
-- **默认值**: `{"."}`
-
-- **说明**
-
- 命令的分隔标记,用于将文本形式的命令切分为元组(实际的命令名)。
-
-### `session_expire_timeout`
-
-- **类型**: `timedelta`
-
-- **默认值**: `timedelta(minutes=2)`
-
-- **说明**
-
- 等待用户回复的超时时间。
-
-- **示例**
-
-```default
-SESSION_EXPIRE_TIMEOUT=120 # 单位: 秒
-SESSION_EXPIRE_TIMEOUT=[DD ][HH:MM]SS[.ffffff]
-SESSION_EXPIRE_TIMEOUT=P[DD]DT[HH]H[MM]M[SS]S # ISO 8601
-```
diff --git a/website/versioned_docs/version-2.0.0-beta.1/api/dependencies.md b/website/versioned_docs/version-2.0.0-beta.1/api/dependencies.md
deleted file mode 100644
index 1fef3131..00000000
--- a/website/versioned_docs/version-2.0.0-beta.1/api/dependencies.md
+++ /dev/null
@@ -1,9 +0,0 @@
----
-sidebar_position: 8
----
-
-# NoneBot.dependencies 模块
-
-## 依赖注入处理模块
-
-该模块实现了依赖注入的定义与处理。
diff --git a/website/versioned_docs/version-2.0.0-beta.1/api/drivers/README.md b/website/versioned_docs/version-2.0.0-beta.1/api/drivers/README.md
deleted file mode 100644
index f7b3eac4..00000000
--- a/website/versioned_docs/version-2.0.0-beta.1/api/drivers/README.md
+++ /dev/null
@@ -1,192 +0,0 @@
----
-id: index
-slug: /api/drivers/
----
-
-# NoneBot.drivers 模块
-
-## 后端驱动适配基类
-
-各驱动请继承以下基类
-
-## _class_ `Driver`
-
-基类:`abc.ABC`
-
-Driver 基类。
-
-### `_adapters`
-
-- **类型**
-
- `Dict[str, Adapter]`
-
-- **说明**
-
- 已注册的适配器列表
-
-### `_bot_connection_hook`
-
-- **类型**
-
- `Set[T_BotConnectionHook]`
-
-- **说明**
-
- Bot 连接建立时执行的函数
-
-### `_bot_disconnection_hook`
-
-- **类型**
-
- `Set[T_BotDisconnectionHook]`
-
-- **说明**
-
- Bot 连接断开时执行的函数
-
-### `__init__(env, config)`
-
-- **参数**
-
- - `env: Env`: 包含环境信息的 Env 对象
-
- - `config: Config`: 包含配置信息的 Config 对象
-
-### `env`
-
-- **类型**
-
- `str`
-
-- **说明**
-
- 环境名称
-
-### `config`
-
-- **类型**
-
- `Config`
-
-- **说明**
-
- 配置对象
-
-### `_clients`
-
-- **类型**
-
- `Dict[str, Bot]`
-
-- **说明**
-
- 已连接的 Bot
-
-### _property_ `bots`
-
-- **类型**
-
- `Dict[str, Bot]`
-
-- **说明**
-
- 获取当前所有已连接的 Bot
-
-### `register_adapter(adapter, **kwargs)`
-
-- **说明**
-
- 注册一个协议适配器
-
-- **参数**
-
- - `name: str`: 适配器名称,用于在连接时进行识别
-
- - `adapter: Type[Bot]`: 适配器 Class
-
- - `**kwargs`: 其他传递给适配器的参数
-
-### _abstract property_ `type`
-
-驱动类型名称
-
-### _abstract property_ `logger`
-
-驱动专属 logger 日志记录器
-
-### _abstract_ `run(*args, **kwargs)`
-
-- **说明**
-
- 启动驱动框架
-
-- **参数**
-
- - `*args`
-
- - `**kwargs`
-
-### _abstract_ `on_startup(func)`
-
-注册一个在驱动启动时运行的函数
-
-### _abstract_ `on_shutdown(func)`
-
-注册一个在驱动停止时运行的函数
-
-### `on_bot_connect(func)`
-
-- **说明**
-
- 装饰一个函数使他在 bot 通过 WebSocket 连接成功时执行。
-
-- **函数参数**
-
- - `bot: Bot`: 当前连接上的 Bot 对象
-
-### `on_bot_disconnect(func)`
-
-- **说明**
-
- 装饰一个函数使他在 bot 通过 WebSocket 连接断开时执行。
-
-- **函数参数**
-
- - `bot: Bot`: 当前连接上的 Bot 对象
-
-### `_bot_connect(bot)`
-
-在 WebSocket 连接成功后,调用该函数来注册 bot 对象
-
-### `_bot_disconnect(bot)`
-
-在 WebSocket 连接断开后,调用该函数来注销 bot 对象
-
-## _class_ `ForwardDriver`
-
-基类:`nonebot.drivers.Driver`, `nonebot.drivers.ForwardMixin`
-
-Forward Driver 基类。将客户端框架封装,以满足适配器使用。
-
-## _class_ `ReverseDriver`
-
-基类:`nonebot.drivers.Driver`
-
-Reverse Driver 基类。将后端框架封装,以满足适配器使用。
-
-### _abstract property_ `server_app`
-
-驱动 APP 对象
-
-### _abstract property_ `asgi`
-
-驱动 ASGI 对象
-
-## _class_ `HTTPServerSetup`
-
-基类:`object`
-
-## _class_ `WebSocketServerSetup`
-
-基类:`object`
diff --git a/website/versioned_docs/version-2.0.0-beta.1/api/drivers/aiohttp.md b/website/versioned_docs/version-2.0.0-beta.1/api/drivers/aiohttp.md
deleted file mode 100644
index 58664ba7..00000000
--- a/website/versioned_docs/version-2.0.0-beta.1/api/drivers/aiohttp.md
+++ /dev/null
@@ -1,5 +0,0 @@
-# NoneBot.drivers.aiohttp 模块
-
-## AIOHTTP 驱动适配
-
-本驱动仅支持客户端连接
diff --git a/website/versioned_docs/version-2.0.0-beta.1/api/drivers/fastapi.md b/website/versioned_docs/version-2.0.0-beta.1/api/drivers/fastapi.md
deleted file mode 100644
index 4c9135d7..00000000
--- a/website/versioned_docs/version-2.0.0-beta.1/api/drivers/fastapi.md
+++ /dev/null
@@ -1,127 +0,0 @@
-# NoneBot.drivers.fastapi 模块
-
-## FastAPI 驱动适配
-
-本驱动同时支持服务端以及客户端连接
-
-后端使用方法请参考: [FastAPI 文档](https://fastapi.tiangolo.com/)
-
-## _class_ `Config`
-
-基类:`pydantic.env_settings.BaseSettings`
-
-FastAPI 驱动框架设置,详情参考 FastAPI 文档
-
-### `fastapi_openapi_url`
-
-- **类型**
-
- `Optional[str]`
-
-- **说明**
-
- `openapi.json` 地址,默认为 `None` 即关闭
-
-### `fastapi_docs_url`
-
-- **类型**
-
- `Optional[str]`
-
-- **说明**
-
- `swagger` 地址,默认为 `None` 即关闭
-
-### `fastapi_redoc_url`
-
-- **类型**
-
- `Optional[str]`
-
-- **说明**
-
- `redoc` 地址,默认为 `None` 即关闭
-
-### `fastapi_reload`
-
-- **类型**
-
- `bool`
-
-- **说明**
-
- 开启/关闭冷重载
-
-### `fastapi_reload_dirs`
-
-- **类型**
-
- `Optional[List[str]]`
-
-- **说明**
-
- 重载监控文件夹列表,默认为 uvicorn 默认值
-
-### `fastapi_reload_delay`
-
-- **类型**
-
- `Optional[float]`
-
-- **说明**
-
- 重载延迟,默认为 uvicorn 默认值
-
-### `fastapi_reload_includes`
-
-- **类型**
-
- `Optional[List[str]]`
-
-- **说明**
-
- 要监听的文件列表,支持 glob pattern,默认为 uvicorn 默认值
-
-### `fastapi_reload_excludes`
-
-- **类型**
-
- `Optional[List[str]]`
-
-- **说明**
-
- 不要监听的文件列表,支持 glob pattern,默认为 uvicorn 默认值
-
-## _class_ `Driver`
-
-基类:[`nonebot.drivers.ReverseDriver`](README.md#nonebot.drivers.ReverseDriver)
-
-FastAPI 驱动框架。包含反向 Server 功能。
-
-### _property_ `type`
-
-驱动名称: `fastapi`
-
-### _property_ `server_app`
-
-`FastAPI APP` 对象
-
-### _property_ `asgi`
-
-`FastAPI APP` 对象
-
-### _property_ `logger`
-
-fastapi 使用的 logger
-
-### `on_startup(func)`
-
-参考文档: [Events](https://fastapi.tiangolo.com/advanced/events/#startup-event)
-
-### `on_shutdown(func)`
-
-参考文档: [Events](https://fastapi.tiangolo.com/advanced/events/#startup-event)
-
-### `run(host=None, port=None, *, app=None, **kwargs)`
-
-使用 `uvicorn` 启动 FastAPI
diff --git a/website/versioned_docs/version-2.0.0-beta.1/api/drivers/httpx.md b/website/versioned_docs/version-2.0.0-beta.1/api/drivers/httpx.md
deleted file mode 100644
index 766f3e41..00000000
--- a/website/versioned_docs/version-2.0.0-beta.1/api/drivers/httpx.md
+++ /dev/null
@@ -1 +0,0 @@
-# NoneBot.drivers.httpx 模块
diff --git a/website/versioned_docs/version-2.0.0-beta.1/api/drivers/quart.md b/website/versioned_docs/version-2.0.0-beta.1/api/drivers/quart.md
deleted file mode 100644
index cee5133d..00000000
--- a/website/versioned_docs/version-2.0.0-beta.1/api/drivers/quart.md
+++ /dev/null
@@ -1,95 +0,0 @@
-# NoneBot.drivers.quart 模块
-
-## Quart 驱动适配
-
-后端使用方法请参考: [Quart 文档](https://pgjones.gitlab.io/quart/index.html)
-
-## _class_ `Config`
-
-基类:`pydantic.env_settings.BaseSettings`
-
-Quart 驱动框架设置
-
-### `quart_reload`
-
-- **类型**
-
- `bool`
-
-- **说明**
-
- 开启/关闭冷重载
-
-### `quart_reload_dirs`
-
-- **类型**
-
- `Optional[List[str]]`
-
-- **说明**
-
- 重载监控文件夹列表,默认为 uvicorn 默认值
-
-### `quart_reload_delay`
-
-- **类型**
-
- `Optional[float]`
-
-- **说明**
-
- 重载延迟,默认为 uvicorn 默认值
-
-### `quart_reload_includes`
-
-- **类型**
-
- `Optional[List[str]]`
-
-- **说明**
-
- 要监听的文件列表,支持 glob pattern,默认为 uvicorn 默认值
-
-### `quart_reload_excludes`
-
-- **类型**
-
- `Optional[List[str]]`
-
-- **说明**
-
- 不要监听的文件列表,支持 glob pattern,默认为 uvicorn 默认值
-
-## _class_ `Driver`
-
-基类:[`nonebot.drivers.ReverseDriver`](README.md#nonebot.drivers.ReverseDriver)
-
-Quart 驱动框架
-
-### _property_ `type`
-
-驱动名称: `quart`
-
-### _property_ `server_app`
-
-`Quart` 对象
-
-### _property_ `asgi`
-
-`Quart` 对象
-
-### _property_ `logger`
-
-Quart 使用的 logger
-
-### `on_startup(func)`
-
-参考文档: [Startup and Shutdown](https://pgjones.gitlab.io/quart/how_to_guides/startup_shutdown.html)
-
-### `on_shutdown(func)`
-
-参考文档: [Startup and Shutdown](https://pgjones.gitlab.io/quart/how_to_guides/startup_shutdown.html)
-
-### `run(host=None, port=None, *, app=None, **kwargs)`
-
-使用 `uvicorn` 启动 Quart
diff --git a/website/versioned_docs/version-2.0.0-beta.1/api/drivers/websockets.md b/website/versioned_docs/version-2.0.0-beta.1/api/drivers/websockets.md
deleted file mode 100644
index 0ffaa1fd..00000000
--- a/website/versioned_docs/version-2.0.0-beta.1/api/drivers/websockets.md
+++ /dev/null
@@ -1 +0,0 @@
-# NoneBot.drivers.websockets 模块
diff --git a/website/versioned_docs/version-2.0.0-beta.1/api/exception.md b/website/versioned_docs/version-2.0.0-beta.1/api/exception.md
deleted file mode 100644
index a36df9d4..00000000
--- a/website/versioned_docs/version-2.0.0-beta.1/api/exception.md
+++ /dev/null
@@ -1,203 +0,0 @@
----
-sidebar_position: 12
----
-
-# NoneBot.exception 模块
-
-## 异常
-
-下列文档中的异常是所有 NoneBot 运行时可能会抛出的。
-这些异常并非所有需要用户处理,在 NoneBot 内部运行时被捕获,并进行对应操作。
-
-## _exception_ `NoneBotException`
-
-基类:`Exception`
-
-- **说明**
-
- 所有 NoneBot 发生的异常基类。
-
-## _exception_ `ParserExit`
-
-基类:`nonebot.exception.NoneBotException`
-
-- **说明**
-
- `shell command` 处理消息失败时返回的异常
-
-- **参数**
-
- - `status`
-
- - `message`
-
-## _exception_ `ProcessException`
-
-基类:`nonebot.exception.NoneBotException`
-
-- **说明**
-
- 事件处理过程中发生的异常基类。
-
-## _exception_ `IgnoredException`
-
-基类:`nonebot.exception.ProcessException`
-
-- **说明**
-
- 指示 NoneBot 应该忽略该事件。可由 PreProcessor 抛出。
-
-- **参数**
-
- - `reason`: 忽略事件的原因
-
-## _exception_ `MockApiException`
-
-基类:`nonebot.exception.ProcessException`
-
-- **说明**
-
- 指示 NoneBot 阻止本次 API 调用或修改本次调用返回值,并返回自定义内容。可由 api hook 抛出。
-
-- **参数**
-
- - `result`: 返回的内容
-
-## _exception_ `StopPropagation`
-
-基类:`nonebot.exception.ProcessException`
-
-- **说明**
-
- 指示 NoneBot 终止事件向下层传播。
-
-- **用法**
-
- 在 `Matcher.block == True` 时抛出。
-
-## _exception_ `MatcherException`
-
-基类:`nonebot.exception.NoneBotException`
-
-- **说明**
-
- 所有 Matcher 发生的异常基类。
-
-## _exception_ `SkippedException`
-
-基类:`nonebot.exception.MatcherException`
-
-- **说明**
-
- 指示 NoneBot 立即结束当前 `Handler` 的处理,继续处理下一个 `Handler`。
-
-- **用法**
-
- 可以在 `Handler` 中通过 `Matcher.skip()` 抛出。
-
-## _exception_ `TypeMisMatch`
-
-基类:`nonebot.exception.SkippedException`
-
-- **说明**
-
- 当前 `Handler` 的参数类型不匹配。
-
-## _exception_ `PausedException`
-
-基类:`nonebot.exception.MatcherException`
-
-- **说明**
-
- 指示 NoneBot 结束当前 `Handler` 并等待下一条消息后继续下一个 `Handler`。
- 可用于用户输入新信息。
-
-- **用法**
-
- 可以在 `Handler` 中通过 `Matcher.pause()` 抛出。
-
-## _exception_ `RejectedException`
-
-基类:`nonebot.exception.MatcherException`
-
-- **说明**
-
- 指示 NoneBot 结束当前 `Handler` 并等待下一条消息后重新运行当前 `Handler`。
- 可用于用户重新输入。
-
-- **用法**
-
- 可以在 `Handler` 中通过 `Matcher.reject()` 抛出。
-
-## _exception_ `FinishedException`
-
-基类:`nonebot.exception.MatcherException`
-
-- **说明**
-
- 指示 NoneBot 结束当前 `Handler` 且后续 `Handler` 不再被运行。
- 可用于结束用户会话。
-
-- **用法**
-
- 可以在 `Handler` 中通过 `Matcher.finish()` 抛出。
-
-## _exception_ `AdapterException`
-
-基类:`nonebot.exception.NoneBotException`
-
-- **说明**
-
- 代表 `Adapter` 抛出的异常,所有的 `Adapter` 都要在内部继承自这个 `Exception`
-
-- **参数**
-
- - `adapter_name: str`: 标识 adapter
-
-## _exception_ `NoLogException`
-
-基类:`nonebot.exception.AdapterException`
-
-- **说明**
-
- 指示 NoneBot 对当前 `Event` 进行处理但不显示 Log 信息,可在 `get_log_string` 时抛出
-
-## _exception_ `ApiNotAvailable`
-
-基类:`nonebot.exception.AdapterException`
-
-- **说明**
-
- 在 API 连接不可用时抛出。
-
-## _exception_ `NetworkError`
-
-基类:`nonebot.exception.AdapterException`
-
-- **说明**
-
- 在网络出现问题时抛出,如: API 请求地址不正确, API 请求无返回或返回状态非正常等。
-
-## _exception_ `ActionFailed`
-
-基类:`nonebot.exception.AdapterException`
-
-- **说明**
-
- API 请求成功返回数据,但 API 操作失败。
-
-## _exception_ `DriverException`
-
-基类:`nonebot.exception.NoneBotException`
-
-- **说明**
-
- `Driver` 抛出的异常基类
-
-## _exception_ `WebSocketClosed`
-
-基类:`nonebot.exception.DriverException`
-
-- **说明**
-
- WebSocket 连接已关闭
diff --git a/website/versioned_docs/version-2.0.0-beta.1/api/log.md b/website/versioned_docs/version-2.0.0-beta.1/api/log.md
deleted file mode 100644
index a8b0845a..00000000
--- a/website/versioned_docs/version-2.0.0-beta.1/api/log.md
+++ /dev/null
@@ -1,31 +0,0 @@
----
-sidebar_position: 9
----
-
-# NoneBot.log 模块
-
-## 日志
-
-NoneBot 使用 [loguru](https://github.com/Delgan/loguru) 来记录日志信息。
-
-自定义 logger 请参考 [loguru](https://github.com/Delgan/loguru) 文档。
-
-## `logger`
-
-- **说明**
-
- NoneBot 日志记录器对象。
-
-- **默认信息**
-
- - 格式: `[%(asctime)s %(name)s] %(levelname)s: %(message)s`
-
- - 等级: `INFO` ,根据 `config.log_level` 配置改变
-
- - 输出: 输出至 stdout
-
-- **用法**
-
-```python
-from nonebot.log import logger
-```
diff --git a/website/versioned_docs/version-2.0.0-beta.1/api/matcher.md b/website/versioned_docs/version-2.0.0-beta.1/api/matcher.md
deleted file mode 100644
index 79183e08..00000000
--- a/website/versioned_docs/version-2.0.0-beta.1/api/matcher.md
+++ /dev/null
@@ -1,390 +0,0 @@
----
-sidebar_position: 5
----
-
-# NoneBot.matcher 模块
-
-## 事件响应器
-
-该模块实现事件响应器的创建与运行,并提供一些快捷方法来帮助用户更好的与机器人进行对话 。
-
-## `matchers`
-
-- **类型**
-
- `Dict[int, List[Type[Matcher]]]`
-
-- **说明**
-
- 用于存储当前所有的事件响应器
-
-## _class_ `Matcher`
-
-基类:`object`
-
-事件响应器类
-
-### `plugin`
-
-- **类型**
-
- `Optional[Plugin]`
-
-- **说明**
-
- 事件响应器所在插件
-
-### `module`
-
-- **类型**
-
- `Optional[ModuleType]`
-
-- **说明**
-
- 事件响应器所在插件模块
-
-### `plugin_name`
-
-- **类型**
-
- `Optional[str]`
-
-- **说明**
-
- 事件响应器所在插件名
-
-### `module_name`
-
-- **类型**
-
- `Optional[str]`
-
-- **说明**
-
- 事件响应器所在点分割插件模块路径
-
-### `type`
-
-- **类型**
-
- `str`
-
-- **说明**
-
- 事件响应器类型
-
-### `rule`
-
-- **类型**
-
- `Rule`
-
-- **说明**
-
- 事件响应器匹配规则
-
-### `permission`
-
-- **类型**
-
- `Permission`
-
-- **说明**
-
- 事件响应器触发权限
-
-### `priority`
-
-- **类型**
-
- `int`
-
-- **说明**
-
- 事件响应器优先级
-
-### `block`
-
-- **类型**
-
- `bool`
-
-- **说明**
-
- 事件响应器是否阻止事件传播
-
-### `temp`
-
-- **类型**
-
- `bool`
-
-- **说明**
-
- 事件响应器是否为临时
-
-### `expire_time`
-
-- **类型**
-
- `Optional[datetime]`
-
-- **说明**
-
- 事件响应器过期时间点
-
-### `_default_state`
-
-- **类型**
-
- `T_State`
-
-- **说明**
-
- 事件响应器默认状态
-
-### `_default_type_updater`
-
-- **类型**
-
- `Optional[Dependent]`
-
-- **说明**
-
- 事件响应器类型更新函数
-
-### `_default_permission_updater`
-
-- **类型**
-
- `Optional[Dependent]`
-
-- **说明**
-
- 事件响应器权限更新函数
-
-### `__init__()`
-
-实例化 Matcher 以便运行
-
-### `handlers`
-
-- **类型**
-
- `List[Handler]`
-
-- **说明**
-
- 事件响应器拥有的事件处理函数列表
-
-### _classmethod_ `new(type_='', rule=None, permission=None, handlers=None, temp=False, priority=1, block=False, *, plugin=None, module=None, expire_time=None, default_state=None, default_type_updater=None, default_permission_updater=None)`
-
-- **说明**
-
- 创建一个新的事件响应器,并存储至 [matchers](#matchers)
-
-- **参数**
-
- - `type_: str`: 事件响应器类型,与 `event.get_type()` 一致时触发,空字符串表示任意
-
- - `rule: Optional[Rule]`: 匹配规则
-
- - `permission: Optional[Permission]`: 权限
-
- - `handlers: Optional[List[T_Handler]]`: 事件处理函数列表
-
- - `temp: bool`: 是否为临时事件响应器,即触发一次后删除
-
- - `priority: int`: 响应优先级
-
- - `block: bool`: 是否阻止事件向更低优先级的响应器传播
-
- - `plugin: Optional[Plugin]`: 事件响应器所在插件
-
- - `module: Optional[ModuleType]`: 事件响应器所在模块
-
- - `default_state: Optional[T_State]`: 默认状态 `state`
-
- - `expire_time: Optional[datetime]`: 事件响应器最终有效时间点,过时即被删除
-
-- **返回**
-
- - `Type[Matcher]`: 新的事件响应器类
-
-### _async classmethod_ `check_perm(bot, event, stack=None, dependency_cache=None)`
-
-- **说明**
-
- 检查是否满足触发权限
-
-- **参数**
-
- - `bot: Bot`: Bot 对象
-
- - `event: Event`: 上报事件
-
-- **返回**
-
- - `bool`: 是否满足权限
-
-### _async classmethod_ `check_rule(bot, event, state, stack=None, dependency_cache=None)`
-
-- **说明**
-
- 检查是否满足匹配规则
-
-- **参数**
-
- - `bot: Bot`: Bot 对象
-
- - `event: Event`: 上报事件
-
- - `state: T_State`: 当前状态
-
-- **返回**
-
- - `bool`: 是否满足匹配规则
-
-### _classmethod_ `type_updater(func)`
-
-- **说明**
-
- 装饰一个函数来更改当前事件响应器的默认响应事件类型更新函数
-
-- **参数**
-
- - `func: T_TypeUpdater`: 响应事件类型更新函数
-
-### _classmethod_ `permission_updater(func)`
-
-- **说明**
-
- 装饰一个函数来更改当前事件响应器的默认会话权限更新函数
-
-- **参数**
-
- - `func: T_PermissionUpdater`: 会话权限更新函数
-
-### _classmethod_ `handle(parameterless=None)`
-
-- **说明**
-
- 装饰一个函数来向事件响应器直接添加一个处理函数
-
-- **参数**
-
- - `parameterless: Optional[List[Any]]`: 非参数类型依赖列表
-
-### _classmethod_ `receive(id='', parameterless=None)`
-
-- **说明**
-
- 装饰一个函数来指示 NoneBot 在接收用户新的一条消息后继续运行该函数
-
-- **参数**
-
- - `id: str`: 消息 ID
-
- - `parameterless: Optional[List[Any]]`: 非参数类型依赖列表
-
-### _classmethod_ `got(key, prompt=None, parameterless=None)`
-
-- **说明**
-
- 装饰一个函数来指示 NoneBot 当要获取的 `key` 不存在时接收用户新的一条消息并经过 `ArgsParser` 处理后再运行该函数,如果 `key` 已存在则直接继续运行
-
-- **参数**
-
- - `key: str`: 参数名
-
- - `prompt: Optional[Union[str, Message, MessageSegment, MessageFormatter]]`: 在参数不存在时向用户发送的消息
-
- - `args_parser: Optional[T_ArgsParser]`: 可选参数解析函数,空则使用默认解析函数
-
- - `parameterless: Optional[List[Any]]`: 非参数类型依赖列表
-
-### _async classmethod_ `send(message, **kwargs)`
-
-- **说明**
-
- 发送一条消息给当前交互用户
-
-- **参数**
-
- - `message: Union[str, Message, MessageSegment]`: 消息内容
-
- - `**kwargs`: 其他传递给 `bot.send` 的参数,请参考对应 adapter 的 bot 对象 api
-
-### _async classmethod_ `finish(message=None, **kwargs)`
-
-- **说明**
-
- 发送一条消息给当前交互用户并结束当前事件响应器
-
-- **参数**
-
- - `message: Union[str, Message, MessageSegment, MessageTemplate]`: 消息内容
-
- - `**kwargs`: 其他传递给 `bot.send` 的参数,请参考对应 adapter 的 bot 对象 api
-
-### _async classmethod_ `pause(prompt=None, **kwargs)`
-
-- **说明**
-
- 发送一条消息给当前交互用户并暂停事件响应器,在接收用户新的一条消息后继续下一个处理函数
-
-- **参数**
-
- - `prompt: Union[str, Message, MessageSegment, MessageTemplate]`: 消息内容
-
- - `**kwargs`: 其他传递给 `bot.send` 的参数,请参考对应 adapter 的 bot 对象 api
-
-### _async classmethod_ `reject(prompt=None, **kwargs)`
-
-- **说明**
-
- 最近使用 `got` / `receive` 接收的消息不符合预期,发送一条消息给当前交互用户并暂停事件响应器,
- 在接收用户新的一条消息后继续当前处理函数
-
-- **参数**
-
- - `prompt: Union[str, Message, MessageSegment, MessageTemplate]`: 消息内容
-
- - `**kwargs`: 其他传递给 `bot.send` 的参数,请参考对应 adapter 的 bot 对象 api
-
-### _async classmethod_ `reject_arg(key, prompt=None, **kwargs)`
-
-- **说明**
-
- 最近使用 `got` 接收的消息不符合预期,发送一条消息给当前交互用户并暂停事件响应器,
- 在接收用户新的一条消息后继续当前处理函数
-
-- **参数**
-
- - `key: str`: 参数名
-
- - `prompt: Union[str, Message, MessageSegment, MessageTemplate]`: 消息内容
-
- - `**kwargs`: 其他传递给 `bot.send` 的参数,请参考对应 adapter 的 bot 对象 api
-
-### _async classmethod_ `reject_receive(id='', prompt=None, **kwargs)`
-
-- **说明**
-
- 最近使用 `got` 接收的消息不符合预期,发送一条消息给当前交互用户并暂停事件响应器,
- 在接收用户新的一条消息后继续当前处理函数
-
-- **参数**
-
- - `id: str`: 消息 id
-
- - `prompt: Union[str, Message, MessageSegment, MessageTemplate]`: 消息内容
-
- - `**kwargs`: 其他传递给 `bot.send` 的参数,请参考对应 adapter 的 bot 对象 api
-
-### `stop_propagation()`
-
-- **说明**
-
- 阻止事件传播
diff --git a/website/versioned_docs/version-2.0.0-beta.1/api/message.md b/website/versioned_docs/version-2.0.0-beta.1/api/message.md
deleted file mode 100644
index 01fd434f..00000000
--- a/website/versioned_docs/version-2.0.0-beta.1/api/message.md
+++ /dev/null
@@ -1,52 +0,0 @@
----
-sidebar_position: 4
----
-
-# NoneBot.message 模块
-
-## 事件处理
-
-NoneBot 内部处理并按优先级分发事件给所有事件响应器,提供了多个插槽以进行事件的预处理等。
-
-## `event_preprocessor(func)`
-
-- **说明**
-
- 事件预处理。装饰一个函数,使它在每次接收到事件并分发给各响应器之前执行。
-
-## `event_postprocessor(func)`
-
-- **说明**
-
- 事件后处理。装饰一个函数,使它在每次接收到事件并分发给各响应器之后执行。
-
-## `run_preprocessor(func)`
-
-- **说明**
-
- 运行预处理。装饰一个函数,使它在每次事件响应器运行前执行。
-
-## `run_postprocessor(func)`
-
-- **说明**
-
- 运行后处理。装饰一个函数,使它在每次事件响应器运行后执行。
-
-## _async_ `handle_event(bot, event)`
-
-- **说明**
-
- 处理一个事件。调用该函数以实现分发事件。
-
-- **参数**
-
- - `bot: Bot`: Bot 对象
-
- - `event: Event`: Event 对象
-
-- **示例**
-
-```python
-import asyncio
-asyncio.create_task(handle_event(bot, event))
-```
diff --git a/website/versioned_docs/version-2.0.0-beta.1/api/permission.md b/website/versioned_docs/version-2.0.0-beta.1/api/permission.md
deleted file mode 100644
index a39e82e2..00000000
--- a/website/versioned_docs/version-2.0.0-beta.1/api/permission.md
+++ /dev/null
@@ -1,98 +0,0 @@
----
-sidebar_position: 7
----
-
-# NoneBot.permission 模块
-
-## 权限
-
-每个 `Matcher` 拥有一个 `Permission` ,其中是 `PermissionChecker` 的集合,只要有一个 `PermissionChecker` 检查结果为 `True` 时就会继续运行。
-
-:::tip 提示
-`PermissionChecker` 既可以是 async function 也可以是 sync function
-:::
-
-## _class_ `Permission`
-
-基类:`object`
-
-- **说明**
-
- `Matcher` 规则类,当事件传递时,在 `Matcher` 运行前进行检查。
-
-- **示例**
-
-```python
-Permission(async_function) | sync_function
-# 等价于
-from nonebot.utils import run_sync
-Permission(async_function, run_sync(sync_function))
-```
-
-### `__init__(*checkers)`
-
-- **参数**
-
- - `*checkers: Union[T_PermissionChecker, Dependent[bool]`: PermissionChecker
-
-### `checkers`
-
-- **说明**
-
- 存储 `PermissionChecker`
-
-- **类型**
-
- - `Set[Dependent[bool]]`
-
-### _async_ `__call__(bot, event, stack=None, dependency_cache=None)`
-
-- **说明**
-
- 检查是否满足某个权限
-
-- **参数**
-
- - `bot: Bot`: Bot 对象
-
- - `event: Event`: Event 对象
-
- - `stack: Optional[AsyncExitStack]`: 异步上下文栈
-
- - `dependency_cache: Optional[CacheDict[T_Handler, Any]]`: 依赖缓存
-
-- **返回**
-
- - `bool`
-
-## `MESSAGE`
-
-- **说明**: 匹配任意 `message` 类型事件,仅在需要同时捕获不同类型事件时使用。优先使用 message type 的 Matcher。
-
-## `NOTICE`
-
-- **说明**: 匹配任意 `notice` 类型事件,仅在需要同时捕获不同类型事件时使用。优先使用 notice type 的 Matcher。
-
-## `REQUEST`
-
-- **说明**: 匹配任意 `request` 类型事件,仅在需要同时捕获不同类型事件时使用。优先使用 request type 的 Matcher。
-
-## `METAEVENT`
-
-- **说明**: 匹配任意 `meta_event` 类型事件,仅在需要同时捕获不同类型事件时使用。优先使用 meta_event type 的 Matcher。
-
-## `USER(*users, perm=None)`
-
-- **说明**
-
- `event` 的 `session_id` 在白名单内且满足 perm
-
-- **参数**
-
- - `*user: str`: 白名单
-
- - `perm: Optional[Permission]`: 需要同时满足的权限
-
-## `SUPERUSER`
-
-- **说明**: 匹配任意超级用户消息类型事件
diff --git a/website/versioned_docs/version-2.0.0-beta.1/api/plugin.md b/website/versioned_docs/version-2.0.0-beta.1/api/plugin.md
deleted file mode 100644
index 2cbc41c3..00000000
--- a/website/versioned_docs/version-2.0.0-beta.1/api/plugin.md
+++ /dev/null
@@ -1,953 +0,0 @@
----
-sidebar_position: 3
----
-
-# NoneBot.plugin 模块
-
-## 插件
-
-为 NoneBot 插件开发提供便携的定义函数。
-
-## `plugins`
-
-- **类型**
-
- `Dict[str, Plugin]`
-
-- **说明**
-
- 已加载的插件
-
-## _class_ `Plugin`
-
-基类:`object`
-
-存储插件信息
-
-### `name`
-
-- **类型**: `str`
-
-- **说明**: 插件名称,使用 文件/文件夹 名称作为插件名
-
-### `module`
-
-- **类型**: `ModuleType`
-
-- **说明**: 插件模块对象
-
-### `module_name`
-
-- **类型**: `str`
-
-- **说明**: 点分割模块路径
-
-### `manager`
-
-- **类型**: `PluginManager`
-
-- **说明**: 导入该插件的插件管理器
-
-### `export`
-
-- **类型**: `Export`
-
-- **说明**: 插件内定义的导出内容
-
-### `matcher`
-
-- **类型**: `Set[Type[Matcher]]`
-
-- **说明**: 插件内定义的 `Matcher`
-
-### `parent_plugin`
-
-- **类型**: `Optional[Plugin]`
-
-- **说明**: 父插件
-
-### `sub_plugins`
-
-- **类型**: `Set[Plugin]`
-
-- **说明**: 子插件集合
-
-## `get_plugin(name)`
-
-- **说明**
-
- 获取当前导入的某个插件。
-
-- **参数**
-
- - `name: str`: 插件名,与 `load_plugin` 参数一致。如果为 `load_plugins` 导入的插件,则为文件(夹)名。
-
-- **返回**
-
- - `Optional[Plugin]`
-
-## `get_loaded_plugins()`
-
-- **说明**
-
- 获取当前已导入的所有插件。
-
-- **返回**
-
- - `Set[Plugin]`
-
-## `on(type='', rule=None, permission=None, *, handlers=None, temp=False, priority=1, block=False, state=None, _depth=0)`
-
-- **说明**
-
- 注册一个基础事件响应器,可自定义类型。
-
-- **参数**
-
- - `type: str`: 事件响应器类型
-
- - `rule: Optional[Union[Rule, T_RuleChecker]]`: 事件响应规则
-
- - `permission: Optional[Union[Permission, T_PermissionChecker]] =]]`: 事件响应权限
-
- - `handlers: Optional[List[Union[T_Handler, Dependent]]]`: 事件处理函数列表
-
- - `temp: bool`: 是否为临时事件响应器(仅执行一次)
-
- - `priority: int`: 事件响应器优先级
-
- - `block: bool`: 是否阻止事件向更低优先级传递
-
- - `state: Optional[T_State]`: 默认 state
-
-- **返回**
-
- - `Type[Matcher]`
-
-## `on_metaevent(rule=None, *, handlers=None, temp=False, priority=1, block=False, state=None, _depth=0)`
-
-- **说明**
-
- 注册一个元事件响应器。
-
-- **参数**
-
- - `rule: Optional[Union[Rule, T_RuleChecker]]`: 事件响应规则
-
- - `handlers: Optional[List[Union[T_Handler, Dependent]]]`: 事件处理函数列表
-
- - `temp: bool`: 是否为临时事件响应器(仅执行一次)
-
- - `priority: int`: 事件响应器优先级
-
- - `block: bool`: 是否阻止事件向更低优先级传递
-
- - `state: Optional[T_State]`: 默认 state
-
-- **返回**
-
- - `Type[Matcher]`
-
-## `on_message(rule=None, permission=None, *, handlers=None, temp=False, priority=1, block=True, state=None, _depth=0)`
-
-- **说明**
-
- 注册一个消息事件响应器。
-
-- **参数**
-
- - `rule: Optional[Union[Rule, T_RuleChecker]]`: 事件响应规则
-
- - `permission: Optional[Union[Permission, T_PermissionChecker]] =]]`: 事件响应权限
-
- - `handlers: Optional[List[Union[T_Handler, Dependent]]]`: 事件处理函数列表
-
- - `temp: bool`: 是否为临时事件响应器(仅执行一次)
-
- - `priority: int`: 事件响应器优先级
-
- - `block: bool`: 是否阻止事件向更低优先级传递
-
- - `state: Optional[T_State]`: 默认 state
-
-- **返回**
-
- - `Type[Matcher]`
-
-## `on_notice(rule=None, *, handlers=None, temp=False, priority=1, block=False, state=None, _depth=0)`
-
-- **说明**
-
- 注册一个通知事件响应器。
-
-- **参数**
-
- - `rule: Optional[Union[Rule, T_RuleChecker]]`: 事件响应规则
-
- - `handlers: Optional[List[Union[T_Handler, Dependent]]]`: 事件处理函数列表
-
- - `temp: bool`: 是否为临时事件响应器(仅执行一次)
-
- - `priority: int`: 事件响应器优先级
-
- - `block: bool`: 是否阻止事件向更低优先级传递
-
- - `state: Optional[T_State]`: 默认 state
-
-- **返回**
-
- - `Type[Matcher]`
-
-## `on_request(rule=None, *, handlers=None, temp=False, priority=1, block=False, state=None, _depth=0)`
-
-- **说明**
-
- 注册一个请求事件响应器。
-
-- **参数**
-
- - `rule: Optional[Union[Rule, T_RuleChecker]]`: 事件响应规则
-
- - `handlers: Optional[List[Union[T_Handler, Dependent]]]`: 事件处理函数列表
-
- - `temp: bool`: 是否为临时事件响应器(仅执行一次)
-
- - `priority: int`: 事件响应器优先级
-
- - `block: bool`: 是否阻止事件向更低优先级传递
-
- - `state: Optional[T_State]`: 默认 state
-
-- **返回**
-
- - `Type[Matcher]`
-
-## `on_startswith(msg, rule=None, ignorecase=False, _depth=0, **kwargs)`
-
-- **说明**
-
- 注册一个消息事件响应器,并且当消息的\*\*文本部分\*\*以指定内容开头时响应。
-
-- **参数**
-
- - `msg: Union[str, Tuple[str, ...]]`: 指定消息开头内容
-
- - `rule: Optional[Union[Rule, T_RuleChecker]]`: 事件响应规则
-
- - `ignorecase: bool`: 是否忽略大小写
-
- - `permission: Optional[Union[Permission, T_PermissionChecker]] =]]`: 事件响应权限
-
- - `handlers: Optional[List[Union[T_Handler, Dependent]]]`: 事件处理函数列表
-
- - `temp: bool`: 是否为临时事件响应器(仅执行一次)
-
- - `priority: int`: 事件响应器优先级
-
- - `block: bool`: 是否阻止事件向更低优先级传递
-
- - `state: Optional[T_State]`: 默认 state
-
-- **返回**
-
- - `Type[Matcher]`
-
-## `on_endswith(msg, rule=None, ignorecase=False, _depth=0, **kwargs)`
-
-- **说明**
-
- 注册一个消息事件响应器,并且当消息的\*\*文本部分\*\*以指定内容结尾时响应。
-
-- **参数**
-
- - `msg: Union[str, Tuple[str, ...]]`: 指定消息结尾内容
-
- - `rule: Optional[Union[Rule, T_RuleChecker]]`: 事件响应规则
-
- - `ignorecase: bool`: 是否忽略大小写
-
- - `permission: Optional[Union[Permission, T_PermissionChecker]] =]]`: 事件响应权限
-
- - `handlers: Optional[List[Union[T_Handler, Dependent]]]`: 事件处理函数列表
-
- - `temp: bool`: 是否为临时事件响应器(仅执行一次)
-
- - `priority: int`: 事件响应器优先级
-
- - `block: bool`: 是否阻止事件向更低优先级传递
-
- - `state: Optional[T_State]`: 默认 state
-
-- **返回**
-
- - `Type[Matcher]`
-
-## `on_keyword(keywords, rule=None, _depth=0, **kwargs)`
-
-- **说明**
-
- 注册一个消息事件响应器,并且当消息纯文本部分包含关键词时响应。
-
-- **参数**
-
- - `keywords: Set[str]`: 关键词列表
-
- - `rule: Optional[Union[Rule, T_RuleChecker]]`: 事件响应规则
-
- - `permission: Optional[Union[Permission, T_PermissionChecker]] =]]`: 事件响应权限
-
- - `handlers: Optional[List[Union[T_Handler, Dependent]]]`: 事件处理函数列表
-
- - `temp: bool`: 是否为临时事件响应器(仅执行一次)
-
- - `priority: int`: 事件响应器优先级
-
- - `block: bool`: 是否阻止事件向更低优先级传递
-
- - `state: Optional[T_State]`: 默认 state
-
-- **返回**
-
- - `Type[Matcher]`
-
-## `on_command(cmd, rule=None, aliases=None, _depth=0, **kwargs)`
-
-- **说明**
-
- 注册一个消息事件响应器,并且当消息以指定命令开头时响应。
-
- 命令匹配规则参考: [命令形式匹配](rule.md#command-command)
-
-- **参数**
-
- - `cmd: Union[str, Tuple[str, ...]]`: 指定命令内容
-
- - `rule: Optional[Union[Rule, T_RuleChecker]]`: 事件响应规则
-
- - `aliases: Optional[Set[Union[str, Tuple[str, ...]]]]`: 命令别名
-
- - `permission: Optional[Union[Permission, T_PermissionChecker]] =]]`: 事件响应权限
-
- - `handlers: Optional[List[Union[T_Handler, Dependent]]]`: 事件处理函数列表
-
- - `temp: bool`: 是否为临时事件响应器(仅执行一次)
-
- - `priority: int`: 事件响应器优先级
-
- - `block: bool`: 是否阻止事件向更低优先级传递
-
- - `state: Optional[T_State]`: 默认 state
-
-- **返回**
-
- - `Type[Matcher]`
-
-## `on_shell_command(cmd, rule=None, aliases=None, parser=None, _depth=0, **kwargs)`
-
-- **说明**
-
- 注册一个支持 `shell_like` 解析参数的命令消息事件响应器。
-
- 与普通的 `on_command` 不同的是,在添加 `parser` 参数时, 响应器会自动处理消息。
-
- 并将用户输入的原始参数列表保存在 `state["argv"]`, `parser` 处理的参数保存在 `state["args"]` 中
-
-- **参数**
-
- - `cmd: Union[str, Tuple[str, ...]]`: 指定命令内容
-
- - `rule: Optional[Union[Rule, T_RuleChecker]]`: 事件响应规则
-
- - `aliases: Optional[Set[Union[str, Tuple[str, ...]]]]`: 命令别名
-
- - `parser: Optional[ArgumentParser]`: `nonebot.rule.ArgumentParser` 对象
-
- - `permission: Optional[Union[Permission, T_PermissionChecker]] =]]`: 事件响应权限
-
- - `handlers: Optional[List[Union[T_Handler, Dependent]]]`: 事件处理函数列表
-
- - `temp: bool`: 是否为临时事件响应器(仅执行一次)
-
- - `priority: int`: 事件响应器优先级
-
- - `block: bool`: 是否阻止事件向更低优先级传递
-
- - `state: Optional[T_State]`: 默认 state
-
-- **返回**
-
- - `Type[Matcher]`
-
-## `on_regex(pattern, flags=0, rule=None, _depth=0, **kwargs)`
-
-- **说明**
-
- 注册一个消息事件响应器,并且当消息匹配正则表达式时响应。
-
- 命令匹配规则参考: [正则匹配](rule.md#regex-regex-flags-0)
-
-- **参数**
-
- - `pattern: str`: 正则表达式
-
- - `flags: Union[int, re.RegexFlag]`: 正则匹配标志
-
- - `rule: Optional[Union[Rule, T_RuleChecker]]`: 事件响应规则
-
- - `permission: Optional[Union[Permission, T_PermissionChecker]] =]]`: 事件响应权限
-
- - `handlers: Optional[List[Union[T_Handler, Dependent]]]`: 事件处理函数列表
-
- - `temp: bool`: 是否为临时事件响应器(仅执行一次)
-
- - `priority: int`: 事件响应器优先级
-
- - `block: bool`: 是否阻止事件向更低优先级传递
-
- - `state: Optional[T_State]`: 默认 state
-
-- **返回**
-
- - `Type[Matcher]`
-
-## _class_ `CommandGroup`
-
-基类:`object`
-
-命令组,用于声明一组有相同名称前缀的命令。
-
-### `__init__(cmd, **kwargs)`
-
-- **参数**
-
- - `cmd: Union[str, Tuple[str, ...]]`: 命令前缀
-
- - `**kwargs`: 其他传递给 `on_command` 的参数默认值,参考 [on_command](#on-command-cmd-rule-none-aliases-none-kwargs)
-
-### `basecmd`
-
-- **类型**: `Tuple[str, ...]`
-
-- **说明**: 命令前缀
-
-### `base_kwargs`
-
-- **类型**: `Dict[str, Any]`
-
-- **说明**: 其他传递给 `on_command` 的参数默认值
-
-### `command(cmd, **kwargs)`
-
-- **说明**
-
- 注册一个新的命令。
-
-- **参数**
-
- - `cmd: Union[str, Tuple[str, ...]]`: 命令前缀
-
- - `**kwargs`: 其他传递给 `on_command` 的参数,将会覆盖命令组默认值
-
-- **返回**
-
- - `Type[Matcher]`
-
-### `shell_command(cmd, **kwargs)`
-
-- **说明**
-
- 注册一个新的命令。
-
-- **参数**
-
- - `cmd: Union[str, Tuple[str, ...]]`: 命令前缀
-
- - `**kwargs`: 其他传递给 `on_shell_command` 的参数,将会覆盖命令组默认值
-
-- **返回**
-
- - `Type[Matcher]`
-
-## _class_ `MatcherGroup`
-
-基类:`object`
-
-事件响应器组合,统一管理。为 `Matcher` 创建提供默认属性。
-
-### `__init__(**kwargs)`
-
-- **说明**
-
- 创建一个事件响应器组合,参数为默认值,与 `on` 一致
-
-### `matchers`
-
-- **类型**
-
- `List[Type[Matcher]]`
-
-- **说明**
-
- 组内事件响应器列表
-
-### `base_kwargs`
-
-- **类型**: `Dict[str, Any]`
-
-- **说明**: 其他传递给 `on` 的参数默认值
-
-### `on(**kwargs)`
-
-- **说明**
-
- 注册一个基础事件响应器,可自定义类型。
-
-- **参数**
-
- - `type: str`: 事件响应器类型
-
- - `rule: Optional[Union[Rule, T_RuleChecker]]`: 事件响应规则
-
- - `permission: Optional[Union[Permission, T_PermissionChecker]] =]]`: 事件响应权限
-
- - `handlers: Optional[List[Union[T_Handler, Dependent]]]`: 事件处理函数列表
-
- - `temp: bool`: 是否为临时事件响应器(仅执行一次)
-
- - `priority: int`: 事件响应器优先级
-
- - `block: bool`: 是否阻止事件向更低优先级传递
-
- - `state: Optional[T_State]`: 默认 state
-
-- **返回**
-
- - `Type[Matcher]`
-
-### `on_metaevent(**kwargs)`
-
-- **说明**
-
- 注册一个元事件响应器。
-
-- **参数**
-
- - `rule: Optional[Union[Rule, T_RuleChecker]]`: 事件响应规则
-
- - `handlers: Optional[List[Union[T_Handler, Dependent]]]`: 事件处理函数列表
-
- - `temp: bool`: 是否为临时事件响应器(仅执行一次)
-
- - `priority: int`: 事件响应器优先级
-
- - `block: bool`: 是否阻止事件向更低优先级传递
-
- - `state: Optional[T_State]`: 默认 state
-
-- **返回**
-
- - `Type[Matcher]`
-
-### `on_message(**kwargs)`
-
-- **说明**
-
- 注册一个消息事件响应器。
-
-- **参数**
-
- - `rule: Optional[Union[Rule, T_RuleChecker]]`: 事件响应规则
-
- - `permission: Optional[Union[Permission, T_PermissionChecker]] =]]`: 事件响应权限
-
- - `handlers: Optional[List[Union[T_Handler, Dependent]]]`: 事件处理函数列表
-
- - `temp: bool`: 是否为临时事件响应器(仅执行一次)
-
- - `priority: int`: 事件响应器优先级
-
- - `block: bool`: 是否阻止事件向更低优先级传递
-
- - `state: Optional[T_State]`: 默认 state
-
-- **返回**
-
- - `Type[Matcher]`
-
-### `on_notice(**kwargs)`
-
-- **说明**
-
- 注册一个通知事件响应器。
-
-- **参数**
-
- - `rule: Optional[Union[Rule, T_RuleChecker]]`: 事件响应规则
-
- - `handlers: Optional[List[Union[T_Handler, Dependent]]]`: 事件处理函数列表
-
- - `temp: bool`: 是否为临时事件响应器(仅执行一次)
-
- - `priority: int`: 事件响应器优先级
-
- - `block: bool`: 是否阻止事件向更低优先级传递
-
- - `state: Optional[T_State]`: 默认 state
-
-- **返回**
-
- - `Type[Matcher]`
-
-### `on_request(**kwargs)`
-
-- **说明**
-
- 注册一个请求事件响应器。
-
-- **参数**
-
- - `rule: Optional[Union[Rule, T_RuleChecker]]`: 事件响应规则
-
- - `handlers: Optional[List[Union[T_Handler, Dependent]]]`: 事件处理函数列表
-
- - `temp: bool`: 是否为临时事件响应器(仅执行一次)
-
- - `priority: int`: 事件响应器优先级
-
- - `block: bool`: 是否阻止事件向更低优先级传递
-
- - `state: Optional[T_State]`: 默认 state
-
-- **返回**
-
- - `Type[Matcher]`
-
-### `on_startswith(msg, **kwargs)`
-
-- **说明**
-
- 注册一个消息事件响应器,并且当消息的\*\*文本部分\*\*以指定内容开头时响应。
-
-- **参数**
-
- - `msg: Union[str, Tuple[str, ...]]`: 指定消息开头内容
-
- - `ignorecase: bool`: 是否忽略大小写
-
- - `rule: Optional[Union[Rule, T_RuleChecker]]`: 事件响应规则
-
- - `permission: Optional[Union[Permission, T_PermissionChecker]] =]]`: 事件响应权限
-
- - `handlers: Optional[List[Union[T_Handler, Dependent]]]`: 事件处理函数列表
-
- - `temp: bool`: 是否为临时事件响应器(仅执行一次)
-
- - `priority: int`: 事件响应器优先级
-
- - `block: bool`: 是否阻止事件向更低优先级传递
-
- - `state: Optional[T_State]`: 默认 state
-
-- **返回**
-
- - `Type[Matcher]`
-
-### `on_endswith(msg, **kwargs)`
-
-- **说明**
-
- 注册一个消息事件响应器,并且当消息的\*\*文本部分\*\*以指定内容结尾时响应。
-
-- **参数**
-
- - `msg: Union[str, Tuple[str, ...]]`: 指定消息结尾内容
-
- - `ignorecase: bool`: 是否忽略大小写
-
- - `rule: Optional[Union[Rule, T_RuleChecker]]`: 事件响应规则
-
- - `permission: Optional[Union[Permission, T_PermissionChecker]] =]]`: 事件响应权限
-
- - `handlers: Optional[List[Union[T_Handler, Dependent]]]`: 事件处理函数列表
-
- - `temp: bool`: 是否为临时事件响应器(仅执行一次)
-
- - `priority: int`: 事件响应器优先级
-
- - `block: bool`: 是否阻止事件向更低优先级传递
-
- - `state: Optional[T_State]`: 默认 state
-
-- **返回**
-
- - `Type[Matcher]`
-
-### `on_keyword(keywords, **kwargs)`
-
-- **说明**
-
- 注册一个消息事件响应器,并且当消息纯文本部分包含关键词时响应。
-
-- **参数**
-
- - `keywords: Set[str]`: 关键词列表
-
- - `rule: Optional[Union[Rule, T_RuleChecker]]`: 事件响应规则
-
- - `permission: Optional[Union[Permission, T_PermissionChecker]] =]]`: 事件响应权限
-
- - `handlers: Optional[List[Union[T_Handler, Dependent]]]`: 事件处理函数列表
-
- - `temp: bool`: 是否为临时事件响应器(仅执行一次)
-
- - `priority: int`: 事件响应器优先级
-
- - `block: bool`: 是否阻止事件向更低优先级传递
-
- - `state: Optional[T_State]`: 默认 state
-
-- **返回**
-
- - `Type[Matcher]`
-
-### `on_command(cmd, aliases=None, **kwargs)`
-
-- **说明**
-
- 注册一个消息事件响应器,并且当消息以指定命令开头时响应。
-
- 命令匹配规则参考: [命令形式匹配](rule.md#command-command)
-
-- **参数**
-
- - `cmd: Union[str, Tuple[str, ...]]`: 指定命令内容
-
- - `aliases: Optional[Set[Union[str, Tuple[str, ...]]]]`: 命令别名
-
- - `rule: Optional[Union[Rule, T_RuleChecker]]`: 事件响应规则
-
- - `permission: Optional[Union[Permission, T_PermissionChecker]] =]]`: 事件响应权限
-
- - `handlers: Optional[List[Union[T_Handler, Dependent]]]`: 事件处理函数列表
-
- - `temp: bool`: 是否为临时事件响应器(仅执行一次)
-
- - `priority: int`: 事件响应器优先级
-
- - `block: bool`: 是否阻止事件向更低优先级传递
-
- - `state: Optional[T_State]`: 默认 state
-
-- **返回**
-
- - `Type[Matcher]`
-
-### `on_shell_command(cmd, aliases=None, parser=None, **kwargs)`
-
-- **说明**
-
- 注册一个支持 `shell_like` 解析参数的命令消息事件响应器。
-
- 与普通的 `on_command` 不同的是,在添加 `parser` 参数时, 响应器会自动处理消息。
-
- 并将用户输入的原始参数列表保存在 `state["argv"]`, `parser` 处理的参数保存在 `state["args"]` 中
-
-- **参数**
-
- - `cmd: Union[str, Tuple[str, ...]]`: 指定命令内容
-
- - `aliases: Optional[Set[Union[str, Tuple[str, ...]]]]`: 命令别名
-
- - `parser: Optional[ArgumentParser]`: `nonebot.rule.ArgumentParser` 对象
-
- - `rule: Optional[Union[Rule, T_RuleChecker]]`: 事件响应规则
-
- - `permission: Optional[Union[Permission, T_PermissionChecker]] =]]`: 事件响应权限
-
- - `handlers: Optional[List[Union[T_Handler, Dependent]]]`: 事件处理函数列表
-
- - `temp: bool`: 是否为临时事件响应器(仅执行一次)
-
- - `priority: int`: 事件响应器优先级
-
- - `block: bool`: 是否阻止事件向更低优先级传递
-
- - `state: Optional[T_State]`: 默认 state
-
-- **返回**
-
- - `Type[Matcher]`
-
-### `on_regex(pattern, flags=0, **kwargs)`
-
-- **说明**
-
- 注册一个消息事件响应器,并且当消息匹配正则表达式时响应。
-
- 命令匹配规则参考: [正则匹配](rule.md#regex-regex-flags-0)
-
-- **参数**
-
- - `pattern: str`: 正则表达式
-
- - `flags: Union[int, re.RegexFlag]`: 正则匹配标志
-
- - `rule: Optional[Union[Rule, T_RuleChecker]]`: 事件响应规则
-
- - `permission: Optional[Union[Permission, T_PermissionChecker]] =]]`: 事件响应权限
-
- - `handlers: Optional[List[Union[T_Handler, Dependent]]]`: 事件处理函数列表
-
- - `temp: bool`: 是否为临时事件响应器(仅执行一次)
-
- - `priority: int`: 事件响应器优先级
-
- - `block: bool`: 是否阻止事件向更低优先级传递
-
- - `state: Optional[T_State]`: 默认 state
-
-- **返回**
-
- - `Type[Matcher]`
-
-## `load_plugin(module_path)`
-
-- **说明**
-
- 使用 `PluginManager` 加载单个插件,可以是本地插件或是通过 `pip` 安装的插件。
-
-- **参数**
-
- - `module_path: str`: 插件名称 `path.to.your.plugin`
-
-- **返回**
-
- - `Optional[Plugin]`
-
-## `load_plugins(*plugin_dir)`
-
-- **说明**
-
- 导入目录下多个插件,以 `_` 开头的插件不会被导入!
-
-- **参数**
-
- - `*plugin_dir: str`: 插件路径
-
-- **返回**
-
- - `Set[Plugin]`
-
-## `load_all_plugins(module_path, plugin_dir)`
-
-- **说明**
-
- 导入指定列表中的插件以及指定目录下多个插件,以 `_` 开头的插件不会被导入!
-
-- **参数**
-
- - `module_path: Iterable[str]`: 指定插件集合
-
- - `plugin_dir: Iterable[str]`: 指定插件路径集合
-
-- **返回**
-
- - `Set[Plugin]`
-
-## `load_from_json(file_path, encoding='utf-8')`
-
-- **说明**
-
- 导入指定 json 文件中的 `plugins` 以及 `plugin_dirs` 下多个插件,以 `_` 开头的插件不会被导入!
-
-- **参数**
-
- - `file_path: str`: 指定 json 文件路径
-
- - `encoding: str`: 指定 json 文件编码
-
-- **返回**
-
- - `Set[Plugin]`
-
-## `load_from_toml(file_path, encoding='utf-8')`
-
-- **说明**
-
- 导入指定 toml 文件 `[tool.nonebot]` 中的 `plugins` 以及 `plugin_dirs` 下多个插件,
- 以 `_` 开头的插件不会被导入!
-
-- **参数**
-
- - `file_path: str`: 指定 toml 文件路径
-
- - `encoding: str`: 指定 toml 文件编码
-
-- **返回**
-
- - `Set[Plugin]`
-
-## `load_builtin_plugins(name)`
-
-- **说明**
-
- 导入 NoneBot 内置插件
-
-- **返回**
-
- - `Plugin`
-
-## `require(name)`
-
-- **说明**
-
- 获取一个插件的导出内容
-
-- **参数**
-
- - `name: str`: 插件名,与 `load_plugin` 参数一致。如果为 `load_plugins` 导入的插件,则为文件(夹)名。
-
-- **返回**
-
- - `Export`
-
-- **异常**
-
- - `RuntimeError`: 插件无法加载
-
-## _class_ `Export`
-
-基类:`dict`
-
-- **说明**
-
- 插件导出内容以使得其他插件可以获得。
-
-- **示例**
-
-```python
-nonebot.export().default = "bar"
-
-@nonebot.export()
-def some_function():
- pass
-
-# this doesn't work before python 3.9
-# use
-# export = nonebot.export(); @export.sub
-# instead
-# See also PEP-614: https://www.python.org/dev/peps/pep-0614/
-@nonebot.export().sub
-def something_else():
- pass
-```
-
-## `export()`
-
-- **说明**
-
- 获取插件的导出内容对象
-
-- **返回**
-
- - `Export`
diff --git a/website/versioned_docs/version-2.0.0-beta.1/api/rule.md b/website/versioned_docs/version-2.0.0-beta.1/api/rule.md
deleted file mode 100644
index 4a711c94..00000000
--- a/website/versioned_docs/version-2.0.0-beta.1/api/rule.md
+++ /dev/null
@@ -1,193 +0,0 @@
----
-sidebar_position: 6
----
-
-# NoneBot.rule 模块
-
-## 规则
-
-每个事件响应器 `Matcher` 拥有一个匹配规则 `Rule` ,其中是 `RuleChecker` 的集合,只有当所有 `RuleChecker` 检查结果为 `True` 时继续运行。
-
-:::tip 提示
-`RuleChecker` 既可以是 async function 也可以是 sync function
-:::
-
-## _class_ `Rule`
-
-基类:`object`
-
-- **说明**
-
- `Matcher` 规则类,当事件传递时,在 `Matcher` 运行前进行检查。
-
-- **示例**
-
-```python
-Rule(async_function) & sync_function
-# 等价于
-from nonebot.utils import run_sync
-Rule(async_function, run_sync(sync_function))
-```
-
-### `__init__(*checkers)`
-
-- **参数**
-
- - `*checkers: Union[T_RuleChecker, Dependent[bool]]`: RuleChecker
-
-### `checkers`
-
-- **说明**
-
- 存储 `RuleChecker`
-
-- **类型**
-
- - `Set[Dependent[bool]]`
-
-### _async_ `__call__(bot, event, state, stack=None, dependency_cache=None)`
-
-- **说明**
-
- 检查是否符合所有规则
-
-- **参数**
-
- - `bot: Bot`: Bot 对象
-
- - `event: Event`: Event 对象
-
- - `state: T_State`: 当前 State
-
- - `stack: Optional[AsyncExitStack]`: 异步上下文栈
-
- - `dependency_cache: Optional[CacheDict[T_Handler, Any]]`: 依赖缓存
-
-- **返回**
-
- - `bool`
-
-## `startswith(msg, ignorecase=False)`
-
-- **说明**
-
- 匹配消息开头
-
-- **参数**
-
- - `msg: str`: 消息开头字符串
-
-## `endswith(msg, ignorecase=False)`
-
-- **说明**
-
- 匹配消息结尾
-
-- **参数**
-
- - `msg: str`: 消息结尾字符串
-
-## `keyword(*keywords)`
-
-- **说明**
-
- 匹配消息关键词
-
-- **参数**
-
- - `*keywords: str`: 关键词
-
-## `command(*cmds)`
-
-- **说明**
-
- 命令形式匹配,根据配置里提供的 `command_start`, `command_sep` 判断消息是否为命令。
-
- 可以通过 `state["_prefix"]["command"]` 获取匹配成功的命令(例:`("test",)`),通过 `state["_prefix"]["raw_command"]` 获取匹配成功的原始命令文本(例:`"/test"`)。
-
-- **参数**
-
- - `*cmds: Union[str, Tuple[str, ...]]`: 命令内容
-
-- **示例**
-
- 使用默认 `command_start`, `command_sep` 配置
-
- 命令 `("test",)` 可以匹配:`/test` 开头的消息
- 命令 `("test", "sub")` 可以匹配”`/test.sub` 开头的消息
-
-:::tip 提示
-命令内容与后续消息间无需空格!
-:::
-
-## _class_ `ArgumentParser`
-
-基类:`argparse.ArgumentParser`
-
-- **说明**
-
- `shell_like` 命令参数解析器,解析出错时不会退出程序。
-
-## `shell_command(*cmds, parser=None)`
-
-- **说明**
-
- 支持 `shell_like` 解析参数的命令形式匹配,根据配置里提供的 `command_start`, `command_sep` 判断消息是否为命令。
-
- 可以通过 `state["_prefix"]["command"]` 获取匹配成功的命令(例:`("test",)`),通过 `state["_prefix"]["raw_command"]` 获取匹配成功的原始命令文本(例:`"/test"`)。
-
- 可以通过 `state["argv"]` 获取用户输入的原始参数列表
-
- 添加 `parser` 参数后, 可以自动处理消息并将结果保存在 `state["args"]` 中。
-
-- **参数**
-
- - `*cmds: Union[str, Tuple[str, ...]]`: 命令内容
-
- - `parser: Optional[ArgumentParser]`: `nonebot.rule.ArgumentParser` 对象
-
-- **示例**
-
- 使用默认 `command_start`, `command_sep` 配置,更多示例参考 `argparse` 标准库文档。
-
-```python
-from nonebot.rule import ArgumentParser
-
-parser = ArgumentParser()
-parser.add_argument("-a", action="store_true")
-
-rule = shell_command("ls", parser=parser)
-```
-
-:::tip 提示
-命令内容与后续消息间无需空格!
-:::
-
-## `regex(regex, flags=0)`
-
-- **说明**
-
- 根据正则表达式进行匹配。
-
- 可以通过 `state["_matched"]` `state["_matched_groups"]` `state["_matched_dict"]`
- 获取正则表达式匹配成功的文本。
-
-- **参数**
-
- - `regex: str`: 正则表达式
-
- - `flags: Union[int, re.RegexFlag]`: 正则标志
-
-:::tip 提示
-正则表达式匹配使用 search 而非 match,如需从头匹配请使用 `r"^xxx"` 来确保匹配开头
-:::
-
-## `to_me()`
-
-- **说明**
-
- 通过 `event.is_tome()` 判断事件是否与机器人有关
-
-- **参数**
-
- - 无
diff --git a/website/versioned_docs/version-2.0.0-beta.1/api/typing.md b/website/versioned_docs/version-2.0.0-beta.1/api/typing.md
deleted file mode 100644
index 73752211..00000000
--- a/website/versioned_docs/version-2.0.0-beta.1/api/typing.md
+++ /dev/null
@@ -1,267 +0,0 @@
----
-sidebar_position: 11
----
-
-# NoneBot.typing 模块
-
-## 类型
-
-下面的文档中,「类型」部分使用 Python 的 Type Hint 语法,见 [PEP 484](https://www.python.org/dev/peps/pep-0484/)、[PEP 526](https://www.python.org/dev/peps/pep-0526/) 和 [typing](https://docs.python.org/3/library/typing.html)。
-
-除了 Python 内置的类型,下面还出现了如下 NoneBot 自定类型,实际上它们是 Python 内置类型的别名。
-
-以下类型均可从 nonebot.typing 模块导入。
-
-## `T_State`
-
-- **类型**
-
- `Dict[Any, Any]`
-
-- **说明**
-
- 事件处理状态 State 类型
-
-## `T_BotConnectionHook`
-
-- **类型**
-
- `Callable[[Bot], Awaitable[None]]`
-
-- **说明**
-
- Bot 连接建立时执行的函数
-
-## `T_BotDisconnectionHook`
-
-- **类型**
-
- `Callable[[Bot], Awaitable[None]]`
-
-- **说明**
-
- Bot 连接断开时执行的函数
-
-## `T_CallingAPIHook`
-
-- **类型**
-
- `Callable[[Bot, str, Dict[str, Any]], Awaitable[None]]`
-
-- **说明**
-
- `bot.call_api` 时执行的函数
-
-## `T_CalledAPIHook`
-
-- **类型**
-
- `Callable[[Bot, Optional[Exception], str, Dict[str, Any], Any], Awaitable[None]]`
-
-- **说明**
-
- `bot.call_api` 后执行的函数,参数分别为 bot, exception, api, data, result
-
-## `T_EventPreProcessor`
-
-- **类型**
-
- `Callable[..., Union[None, Awaitable[None]]]`
-
-- **依赖参数**
-
- - `DependParam`: 子依赖参数
-
- - `BotParam`: Bot 对象
-
- - `EventParam`: Event 对象
-
- - `StateParam`: State 对象
-
- - `DefaultParam`: 带有默认值的参数
-
-- **说明**
-
- 事件预处理函数 EventPreProcessor 类型
-
-## `T_EventPostProcessor`
-
-- **类型**
-
- `Callable[..., Union[None, Awaitable[None]]]`
-
-- **依赖参数**
-
- - `DependParam`: 子依赖参数
-
- - `BotParam`: Bot 对象
-
- - `EventParam`: Event 对象
-
- - `StateParam`: State 对象
-
- - `DefaultParam`: 带有默认值的参数
-
-- **说明**
-
- 事件预处理函数 EventPostProcessor 类型
-
-## `T_RunPreProcessor`
-
-- **类型**
-
- `Callable[..., Union[None, Awaitable[None]]]`
-
-- **依赖参数**
-
- - `DependParam`: 子依赖参数
-
- - `BotParam`: Bot 对象
-
- - `EventParam`: Event 对象
-
- - `StateParam`: State 对象
-
- - `MatcherParam`: Matcher 对象
-
- - `DefaultParam`: 带有默认值的参数
-
-- **说明**
-
- 事件响应器运行前预处理函数 RunPreProcessor 类型
-
-## `T_RunPostProcessor`
-
-- **类型**
-
- `Callable[..., Union[None, Awaitable[None]]]`
-
-- **依赖参数**
-
- - `DependParam`: 子依赖参数
-
- - `BotParam`: Bot 对象
-
- - `EventParam`: Event 对象
-
- - `StateParam`: State 对象
-
- - `MatcherParam`: Matcher 对象
-
- - `ExceptionParam`: 异常对象(可能为 None)
-
- - `DefaultParam`: 带有默认值的参数
-
-- **说明**
-
- 事件响应器运行前预处理函数 RunPostProcessor 类型,第二个参数为运行时产生的错误(如果存在)
-
-## `T_RuleChecker`
-
-- **类型**
-
- `Callable[..., Union[bool, Awaitable[bool]]]`
-
-- **依赖参数**
-
- - `DependParam`: 子依赖参数
-
- - `BotParam`: Bot 对象
-
- - `EventParam`: Event 对象
-
- - `StateParam`: State 对象
-
- - `DefaultParam`: 带有默认值的参数
-
-- **说明**
-
- RuleChecker 即判断是否响应事件的处理函数。
-
-## `T_PermissionChecker`
-
-- **类型**
-
- `Callable[..., Union[bool, Awaitable[bool]]]`
-
-- **依赖参数**
-
- - `DependParam`: 子依赖参数
-
- - `BotParam`: Bot 对象
-
- - `EventParam`: Event 对象
-
- - `DefaultParam`: 带有默认值的参数
-
-- **说明**
-
- RuleChecker 即判断是否响应消息的处理函数。
-
-## `T_Handler`
-
-- **类型**
-
- `Callable[..., Any]`
-
-- **说明**
-
- Handler 处理函数。
-
-## `T_TypeUpdater`
-
-- **类型**
-
- `Callable[..., Union[None, Awaitable[None]]]`
-
-- **依赖参数**
-
- - `DependParam`: 子依赖参数
-
- - `BotParam`: Bot 对象
-
- - `EventParam`: Event 对象
-
- - `StateParam`: State 对象
-
- - `MatcherParam`: Matcher 对象
-
- - `DefaultParam`: 带有默认值的参数
-
-- **说明**
-
- TypeUpdater 在 Matcher.pause, Matcher.reject 时被运行,用于更新响应的事件类型。默认会更新为 `message`。
-
-## `T_PermissionUpdater`
-
-- **类型**
-
- `Callable[..., Union[Permission, Awaitable[Permission]]]`
-
-- **依赖参数**
-
- - `DependParam`: 子依赖参数
-
- - `BotParam`: Bot 对象
-
- - `EventParam`: Event 对象
-
- - `StateParam`: State 对象
-
- - `MatcherParam`: Matcher 对象
-
- - `DefaultParam`: 带有默认值的参数
-
-- **说明**
-
- PermissionUpdater 在 Matcher.pause, Matcher.reject 时被运行,用于更新会话对象权限。默认会更新为当前事件的触发对象。
-
-## `T_DependencyCache`
-
-- **类型**
-
- `Dict[Callable[..., Any], Task[Any]]`
-
-- **说明**
-
- 依赖缓存, 用于存储依赖函数的返回值
diff --git a/website/versioned_docs/version-2.0.0-beta.1/api/utils.md b/website/versioned_docs/version-2.0.0-beta.1/api/utils.md
deleted file mode 100644
index accbea7c..00000000
--- a/website/versioned_docs/version-2.0.0-beta.1/api/utils.md
+++ /dev/null
@@ -1,55 +0,0 @@
----
-sidebar_position: 10
----
-
-# NoneBot.utils 模块
-
-## `escape_tag(s)`
-
-- **说明**
-
- 用于记录带颜色日志时转义 `` 类型特殊标签
-
-- **参数**
-
- - `s: str`: 需要转义的字符串
-
-- **返回**
-
- - `str`
-
-## `run_sync(call)`
-
-- **说明**
-
- 一个用于包装 sync function 为 async function 的装饰器
-
-- **参数**
-
- - `call: Callable[P, R]`: 被装饰的同步函数
-
-- **返回**
-
- - `Callable[P, Awaitable[R]]`
-
-## _class_ `DataclassEncoder`
-
-基类:`json.encoder.JSONEncoder`
-
-- **说明**
-
- 在 JSON 序列化 `Message` (List[Dataclass]) 时使用的 `JSONEncoder`
-
-## `logger_wrapper(logger_name)`
-
-- **说明**
-
-用于打印 adapter 的日志。
-
-- **Log 参数**
-
-- `level: Literal["CRITICAL", "WARNING", "INFO", "DEBUG", "TRACE"]`: 日志等级
-
-- `message: str`: 日志信息
-
-- `exception: Optional[Exception]`: 异常信息
diff --git a/website/versioned_docs/version-2.0.0-beta.1/start/editor-support.md b/website/versioned_docs/version-2.0.0-beta.1/start/editor-support.md
deleted file mode 100644
index 6afe0b3c..00000000
--- a/website/versioned_docs/version-2.0.0-beta.1/start/editor-support.md
+++ /dev/null
@@ -1,33 +0,0 @@
----
-sidebar_position: 80
-description: 编辑器支持
----
-
-# 编辑器支持
-
-框架基于 [PEP484](https://www.python.org/dev/peps/pep-0484/), [PEP 561](https://www.python.org/dev/peps/pep-0517/), [PEP8](https://www.python.org/dev/peps/pep-0008/) 等规范进行开发并且是 **Fully Typed**。框架使用 `pyright` (`pylance`) 工具进行类型检查,确保代码可以被编辑器正确解析。
-
-## 编辑器推荐配置
-
-### Visual Studio Code
-
-在 Visual Studio Code 中,可以使用 `pylance` Language Server 并启用 `Type Checking` 以达到最佳开发体验。
-
-向 `.vscode` 文件夹中对应文件添加以下配置并在 VSCode 插件面板安装推荐插件:
-
-```json title=extensions.json
-{
- "recommendations": ["ms-python.python", "ms-python.vscode-pylance"]
-}
-```
-
-```json title=settings.json
-{
- "python.languageServer": "Pylance",
- "python.analysis.typeCheckingMode": "basic"
-}
-```
-
-### 其他
-
-欢迎提交 Pull Request 添加其他编辑器配置推荐。点击左下角 `Edit this page` 前往编辑。
diff --git a/website/versioned_docs/version-2.0.0-beta.1/start/install-adapter.md b/website/versioned_docs/version-2.0.0-beta.1/start/install-adapter.md
deleted file mode 100644
index 1959c619..00000000
--- a/website/versioned_docs/version-2.0.0-beta.1/start/install-adapter.md
+++ /dev/null
@@ -1,40 +0,0 @@
----
-sidebar_position: 2
-description: 通过脚手架, pip 安装适配器
----
-
-# 安装协议适配器
-
-## 查看
-
-前往 [商店](/store) 即可查看所有协议适配器。
-
-或者使用 `nb-cli` 命令行查看:
-
-```bash
-nb adapter list
-```
-
-## 安装
-
-前往 [商店](/store) 点击复制 `nb-cli` 安装命令至命令行执行即可安装。
-
-或者自行输入命令安装:
-
-```bash
-nb adapter install
-```
-
-或者使用交互模式安装:
-
-```bash
-nb adapter install
-```
-
-也可以使用 `pip` 安装
-
-```bash
-pip install
-```
-
-
diff --git a/website/versioned_docs/version-2.0.0-beta.1/start/install-driver.md b/website/versioned_docs/version-2.0.0-beta.1/start/install-driver.md
deleted file mode 100644
index 8845821f..00000000
--- a/website/versioned_docs/version-2.0.0-beta.1/start/install-driver.md
+++ /dev/null
@@ -1,42 +0,0 @@
----
-sidebar_position: 1
-description: 通过脚手架, pip 安装驱动器
----
-
-# 安装驱动器
-
-NoneBot 在默认安装情况下内置了 `fastapi` 服务端驱动器,其他驱动器如 `httpx`, `aiohttp` 则需要额外安装。
-
-## 查看
-
-前往 [商店](/store) 即可查看所有驱动器。
-
-或者使用 `nb-cli` 命令行查看:
-
-```bash
-nb driver list
-```
-
-## 安装
-
-前往 [商店](/store) 点击复制 `nb-cli` 安装命令至命令行执行即可安装。
-
-或者自行输入命令安装:
-
-```bash
-nb driver install
-```
-
-或者使用交互模式安装:
-
-```bash
-nb driver install
-```
-
-也可以使用 `pip` 安装
-
-```bash
-pip install
-```
-
-
diff --git a/website/versioned_docs/version-2.0.0-beta.1/start/install-plugin.md b/website/versioned_docs/version-2.0.0-beta.1/start/install-plugin.md
deleted file mode 100644
index a2acd1e1..00000000
--- a/website/versioned_docs/version-2.0.0-beta.1/start/install-plugin.md
+++ /dev/null
@@ -1,40 +0,0 @@
----
-sidebar_position: 3
-description: 通过脚手架, pip 安装插件
----
-
-# 安装第三方插件
-
-## 查看
-
-前往 [商店](/store) 即可查看所有发布的插件。
-
-或者使用 `nb-cli` 命令行查看:
-
-```bash
-nb plugin list
-```
-
-## 安装
-
-前往 [商店](/store) 点击复制 `nb-cli` 安装命令至命令行执行即可安装。
-
-或者自行输入命令安装:
-
-```bash
-nb plugin install
-```
-
-或者使用交互模式安装:
-
-```bash
-nb plugin install
-```
-
-也可以使用 `pip` 安装
-
-```bash
-pip install
-```
-
-
diff --git a/website/versioned_docs/version-2.0.0-beta.1/start/installation.md b/website/versioned_docs/version-2.0.0-beta.1/start/installation.md
deleted file mode 100644
index dfa8d798..00000000
--- a/website/versioned_docs/version-2.0.0-beta.1/start/installation.md
+++ /dev/null
@@ -1,75 +0,0 @@
----
-sidebar_position: 0
-description: 通过脚手架, PyPI, GitHub 安装 NoneBot
-
-options:
- menu:
- weight: 10
- category: guide
----
-
-# 安装 NoneBot
-
-:::warning 注意
-请确保你的 Python 版本 >= 3.7.3。
-:::
-
-:::warning 注意
-请在安装 NoneBot v2 之前卸载 NoneBot v1
-
-```bash
-pip uninstall nonebot
-```
-
-:::
-
-## 通过脚手架安装 (推荐)
-
-1. (可选) 使用你喜欢的 Python 环境管理工具 (如 `poetry`, `venv`, `conda` 等) 创建新的虚拟环境
-2. 使用 `pip` 或 其他包管理工具 安装 `nb-cli`,`nonebot2` 会作为其依赖被一起安装
-
- ```bash
- pip install nb-cli
- ```
-
-
-
-:::important 提示
-`nb-cli` 的使用方法详见 [使用脚手架](./nb-cli.md)
-:::
-
-## 不使用脚手架 (纯净安装)
-
-如果你不想使用脚手架,可以直接安装 `nonebot2`,并自行完成开发配置。
-
-```bash
-pip install nonebot2
-# 也可以通过 poetry 安装
-poetry add nonebot2
-```
-
-## 从 GitHub 安装
-
-如果你需要使用最新的(可能**尚未发布**的)特性,可以直接从 GitHub 仓库安装:
-
-:::warning 注意
-直接从 Github 仓库中安装意味着你将使用最新提交的代码,它们并没有进行充分的稳定性测试
-
-在任何情况下请不要将其应用于生产环境!
-:::
-
-```bash title="Install From Github"
-# master分支
-poetry add git+https://github.com/nonebot/nonebot2.git#master
-# dev分支
-poetry add git+https://github.com/nonebot/nonebot2.git#dev
-```
-
-或者在克隆 Git 仓库后手动安装:
-
-```bash
-git clone https://github.com/nonebot/nonebot2.git
-cd nonebot2
-poetry install --no-dev # 推荐
-pip install . # 不推荐
-```
diff --git a/website/versioned_docs/version-2.0.0-beta.1/start/nb-cli.md b/website/versioned_docs/version-2.0.0-beta.1/start/nb-cli.md
deleted file mode 100644
index 6472d4e7..00000000
--- a/website/versioned_docs/version-2.0.0-beta.1/start/nb-cli.md
+++ /dev/null
@@ -1,13 +0,0 @@
----
-sidebar_position: 90
-description: 使用 nb-cli 帮助开发
-
-options:
- menu:
- weight: 11
- category: guide
----
-
-# 使用脚手架
-
-
diff --git a/website/versioned_docs/version-2.0.0-beta.1/start/question.md b/website/versioned_docs/version-2.0.0-beta.1/start/question.md
deleted file mode 100644
index 41e30d5c..00000000
--- a/website/versioned_docs/version-2.0.0-beta.1/start/question.md
+++ /dev/null
@@ -1,28 +0,0 @@
----
-sidebar-position: 100
-description: 如何获取帮助
----
-
-# 遇到问题
-
-如果在安装或者开发过程中遇到了任何问题,可以通过以下方式解决:
-
-1. 点击下方链接前往 GitHub ~~点击 star~~ ,前往 Issues 页面,在 `New Issue` Template 中选择 `Question`
-
- NoneBot2: [](https://github.com/nonebot/nonebot2)
-
-2. 通过 QQ 群 (点击下方链接直达)
-
- [](https://jq.qq.com/?_wv=1027&k=5OFifDh)
-
-3. 通过 QQ 频道
-
- 前往 QQ 频道搜索 `NoneBot` 点击加入
-
-4. 通过 Telegram 群 (点击下方链接直达)
-
- [](https://t.me/cqhttp)
-
-5. 通过 Discord 服务器 (点击下方链接直达)
-
- [](https://discord.gg/VKtE6Gdc4h)
diff --git a/website/versioned_docs/version-2.0.0-beta.1/tutorial/choose-driver.md b/website/versioned_docs/version-2.0.0-beta.1/tutorial/choose-driver.md
deleted file mode 100644
index b157b128..00000000
--- a/website/versioned_docs/version-2.0.0-beta.1/tutorial/choose-driver.md
+++ /dev/null
@@ -1,233 +0,0 @@
----
-sidebar_position: 5
-description: 各驱动器的功能与区别
-
-options:
- menu:
- weight: 22
- category: guide
----
-
-# 选择驱动器
-
-:::warning 注意
-驱动器的选择通常与你所使用的协议适配器相关,如果你不知道该选择哪个驱动器,可以先阅读你想要使用的协议适配器文档说明。
-:::
-
-:::tip 提示
-如何**安装**驱动器请参考 [安装驱动器](../start/install-driver.md)
-
-如何**使用**驱动器请参考 [配置](./configuration.md#driver)
-:::
-
-## 驱动器的类型
-
-驱动器的类型有两种:
-
-- `ForwardDriver`: 即客户端类型驱动器,多用于使用 HTTP 轮询,WebSocket 连接服务器的情形。
-- `ReverseDriver`: 即服务端类型驱动器,多用于使用 WebHook 情形。
-
-其中 `ReverseDriver` 可以配合 `ForwardDriver` 一起使用,即可以同时使用客户端功能和服务端功能。
-
-## 驱动器的功能
-
-在 NoneBot 中,驱动器主要负责数据的收发,不对数据进行处理。通常,驱动器会实现以下功能:
-
-### ForwardDriver
-
-1. 异步发送 HTTP 请求,自定义 `HTTP Method`, `URL`, `Header`, `Body`, `Cookie`, `Proxy`, `Timeout` 等。
-2. 异步建立 WebSocket 连接上下文,自定义 `WebSocket URL`, `Header`, `Cookie`, `Proxy`, `Timeout` 等。
-
-### ReverseDriver
-
-1. 协议适配器自定义 HTTP 上报地址以及对上报数据处理的回调函数。
-2. 协议适配器自定义 WebSocket 连接请求地址以及对 WebSocket 请求处理的回调函数。
-3. 用户可以将 Driver 作为服务端使用,自行添加任何服务端相关功能。
-
-## 内置驱动器
-
-### FastAPI (默认)
-
-类型: `ReverseDriver`
-
-> FastAPI is a modern, fast (high-performance), web framework for building APIs with Python 3.6+ based on standard Python type hints.
-
-FastAPI 是一个易上手、高性能的异步 Web 框架,具有极佳的编写体验,可以挂载其他 ASGI, WSGI 应用。
-
-FastAPI: [文档](https://fastapi.tiangolo.com/), [仓库](https://github.com/tiangolo/fastapi)
-
-驱动器: [API](../api/drivers/fastapi.md), [源码](https://github.com/nonebot/nonebot2/blob/master/nonebot/drivers/fastapi.py)
-
-```env
-DRIVER=~fastapi
-```
-
-#### FastAPI 配置项
-
-##### `fastapi_openapi_url`
-
-类型: `Optional[str]`
-默认值: `None`
-说明: `FastAPI` 提供的 `OpenAPI` JSON 定义地址,如果为 `None`,则不提供 `OpenAPI` JSON 定义。
-
-##### `fastapi_docs_url`
-
-类型: `Optional[str]`
-默认值: `None`
-说明: `FastAPI` 提供的 `Swagger` 文档地址,如果为 `None`,则不提供 `Swagger` 文档。
-
-##### `fastapi_redoc_url`
-
-类型: `Optional[str]`
-默认值: `None`
-说明: `FastAPI` 提供的 `ReDoc` 文档地址,如果为 `None`,则不提供 `ReDoc` 文档。
-
-##### `fastapi_reload`
-
-类型: `bool`
-默认值: `False`
-说明: 是否开启 `uvicorn` 的 `reload` 功能,需要提供 asgi 应用路径。
-
-```python title=bot.py
-app = nonebot.get_asgi()
-nonebot.run(app="bot:app")
-```
-
-##### `fastapi_reload_dirs`
-
-类型: `Optional[List[str]]`
-默认值: `None`
-说明: 重载监控文件夹列表,默认为 uvicorn 默认值
-
-##### `fastapi_reload_delay`
-
-类型: `Optional[float]`
-默认值: `None`
-说明: 重载延迟,默认为 uvicorn 默认值
-
-##### `fastapi_reload_includes`
-
-类型: `Optional[List[str]]`
-默认值: `None`
-说明: 要监听的文件列表,支持 glob pattern,默认为 uvicorn 默认值
-
-##### `fastapi_reload_excludes`
-
-类型: `Optional[List[str]]`
-默认值: `None`
-说明: 不要监听的文件列表,支持 glob pattern,默认为 uvicorn 默认值
-
-### Quart
-
-类型: `ReverseDriver`
-
-> Quart is an asyncio reimplementation of the popular Flask microframework API.
-
-Quart 是一个类 Flask 的异步版本,拥有与 Flask 非常相似的接口和使用方法。
-
-Quart: [文档](https://pgjones.gitlab.io/quart/), [仓库](https://gitlab.com/pgjones/quart)
-
-驱动器: [API](../api/drivers/quart.md), [源码](https://github.com/nonebot/nonebot2/blob/master/nonebot/drivers/quart.py)
-
-```env
-DRIVER=~quart
-```
-
-#### Quart 配置项
-
-##### `quart_reload`
-
-类型: `bool`
-默认值: `False`
-说明: 是否开启 `uvicorn` 的 `reload` 功能,需要提供 asgi 应用路径。
-
-```python title=bot.py
-app = nonebot.get_asgi()
-nonebot.run(app="bot:app")
-```
-
-##### `quart_reload_dirs`
-
-类型: `Optional[List[str]]`
-默认值: `None`
-说明: 重载监控文件夹列表,默认为 uvicorn 默认值
-
-##### `quart_reload_delay`
-
-类型: `Optional[float]`
-默认值: `None`
-说明: 重载延迟,默认为 uvicorn 默认值
-
-##### `quart_reload_includes`
-
-类型: `Optional[List[str]]`
-默认值: `None`
-说明: 要监听的文件列表,支持 glob pattern,默认为 uvicorn 默认值
-
-##### `quart_reload_excludes`
-
-类型: `Optional[List[str]]`
-默认值: `None`
-说明: 不要监听的文件列表,支持 glob pattern,默认为 uvicorn 默认值
-
-### HTTPX
-
-类型: `ForwardDriver`
-
-:::warning 注意
-本驱动器仅支持 HTTP 请求,不支持 WebSocket 请求。
-:::
-
-> HTTPX is a fully featured HTTP client for Python 3, which provides sync and async APIs, and support for both HTTP/1.1 and HTTP/2.
-
-HTTPX: [文档](https://www.python-httpx.org/), [仓库](https://github.com/encode/httpx/)
-
-驱动器: [API](../api/drivers/httpx.md), [源码](https://github.com/nonebot/nonebot2/blob/master/nonebot/drivers/httpx.py)
-
-```env
-DRIVER=~httpx
-```
-
-:::important 注意
-本驱动器支持 `Mixin`
-:::
-
-### websockets
-
-类型: `ForwardDriver`
-
-:::warning 注意
-本驱动器仅支持 WebSocket 请求,不支持 HTTP 请求。
-:::
-
-> websockets is a library for building WebSocket servers and clients in Python with a focus on correctness, simplicity, robustness, and performance.
-
-websockets: [文档](https://websockets.readthedocs.io/en/stable/), [仓库](https://github.com/aaugustin/websockets)
-
-驱动器: [API](../api/drivers/websockets.md), [源码](https://github.com/nonebot/nonebot2/blob/master/nonebot/drivers/websockets.py)
-
-```env
-DRIVER=~websockets
-```
-
-:::important 注意
-本驱动器支持 `Mixin`
-:::
-
-### AIOHTTP
-
-类型: `ForwardDriver`
-
-> Asynchronous HTTP Client/Server for asyncio and Python.
-
-AIOHTTP: [文档](https://docs.aiohttp.org/en/stable/), [仓库](https://github.com/aio-libs/aiohttp)
-
-驱动器: [API](../api/drivers/aiohttp.md), [源码](https://github.com/nonebot/nonebot2/blob/master/nonebot/drivers/aiohttp.py)
-
-```env
-DRIVER=~aiohttp
-```
-
-:::important 注意
-本驱动器支持 `Mixin`
-:::
diff --git a/website/versioned_docs/version-2.0.0-beta.1/tutorial/configuration.md b/website/versioned_docs/version-2.0.0-beta.1/tutorial/configuration.md
deleted file mode 100644
index d6af925c..00000000
--- a/website/versioned_docs/version-2.0.0-beta.1/tutorial/configuration.md
+++ /dev/null
@@ -1,145 +0,0 @@
----
-sidebar_position: 1
-description: 项目配置方式与配置项
-
-options:
- menu:
- weight: 21
- category: guide
----
-
-# 配置
-
-在上一章节中,我们创建了默认的项目结构,其中 `.env` 和 `.env.*` 均为项目的配置文件,下面将介绍几种 NoneBot 配置方式以及配置项。
-
-:::danger 警告
-请勿将敏感信息写入配置文件并提交至开源仓库!
-:::
-
-## 配置方式
-
-### .env 文件
-
-NoneBot 在启动时将会从系统环境变量或者 `.env` 文件中寻找变量 `ENVIRONMENT` (大小写不敏感),默认值为 `prod`。
-这将引导 NoneBot 从系统环境变量或者 `.env.{ENVIRONMENT}` 文件中进一步加载具体配置。
-
-`.env` 文件是基础环境配置文件,该文件中的配置项在不同环境下都会被加载,但会被 `.env.{ENVIRONMENT}` 文件中的配置所覆盖。
-
-NoneBot 使用 [pydantic](https://pydantic-docs.helpmanual.io/) 进行配置处理,并对 `pydantic` 的行为做出了更改,详见下方说明。
-
-现在,我们在 `.env` 文件中写入当前环境信息:
-
-```bash
-# .env
-ENVIRONMENT=dev
-CUSTOM_CONFIG=common config # 这个配置项在任何环境中都会被加载
-```
-
-如你所想,之后 NoneBot 就会从 `.env.dev` 文件中加载环境变量。
-
-:::important 参考文档
-`.env` 相关文件的加载使用 `dotenv` 语法,请参考 [`dotenv` 文档](https://saurabh-kumar.com/python-dotenv/)
-:::
-
-:::warning 提示
-由于 `pydantic` 使用 JSON 解析配置项,请确保配置项值为 JSON 格式的数据。如:
-
-```bash
-list=["123456789", "987654321", 1]
-test={"hello": "world"}
-```
-
-如果配置项值解析失败将作为 **字符串** 处理。
-
-特别的,如果配置项 **为空** ,则会从 **系统环境变量** 中获取值,如果不存在则为空字符串。
-:::
-
-### .env.\* 文件
-
-NoneBot 默认会从 `.env.{ENVIRONMENT}` 文件加载配置,但是可以在 NoneBot 初始化时指定加载某个环境配置文件: `nonebot.init(_env_file=".env.dev")`,这将忽略你在 `.env` 中设置的 `ENVIRONMENT` 。
-
-配置语法与 `.env` 文件相同。
-
-示例及说明:
-
-```bash
-HOST=0.0.0.0 # 配置 NoneBot 监听的 IP/主机名
-PORT=8080 # 配置 NoneBot 监听的端口
-SUPERUSERS=["123456789", "987654321"] # 配置 NoneBot 超级用户
-NICKNAME=["awesome", "bot"] # 配置机器人的昵称
-COMMAND_START=["/", ""] # 配置命令起始字符
-COMMAND_SEP=["."] # 配置命令分割字符
-
-# Custom Configs
-CUSTOM_CONFIG1="config in env file"
-CUSTOM_CONFIG2= # 留空则从系统环境变量读取,如不存在则为空字符串
-```
-
-详细的配置项可以参考 [配置项](#详细配置项) 。
-
-### 系统环境变量
-
-如果在系统环境变量中定义了配置,则一样会被读取。
-
-### bot.py 文件
-
-配置项也可以在 NoneBot 初始化时传入。此处可以传入任意合法 Python 变量。当然也可以在初始化完成后修改或新增。
-
-示例:
-
-```python
-# bot.py
-import nonebot
-
-nonebot.init(custom_config3="config on init")
-
-config = nonebot.get_driver().config
-config.custom_config3 = "changed after init"
-config.custom_config4 = "new config after init"
-```
-
-## 配置优先级
-
-`bot.py` 文件( `nonebot.init` ) > 系统环境变量 > `.env`, `.env.*` 文件
-
-## 读取配置项
-
-配置项可以通过三种类型的对象获取:`driver`, `adapter`, `bot`。
-
-```python
-import nonebot
-# driver
-nonebot.get_driver().config.custom_config
-# bot
-nonebot.get_bot().config.custom_config
-# adapter
-nonebot.get_driver()._adapters["adapter_name"].config.custom_config
-```
-
-## 详细配置项
-
-配置项的 API 文档可以前往 [Class Config](../api/config.md#class-config) 查看。
-
-### Driver
-
-- **类型**: `str`
-- **默认值**: `"~fastapi"`
-
-NoneBot 运行所使用的驱动器。主要分为 `ForwardDriver`, `ReverseDriver` 即客户端和服务端两类。
-
-配置格式采用特殊语法:`[:][+[:]]*`
-
-其中 `` 为驱动器模块名,可以使用 `~` 作为 `nonebot.drivers.` 的简写;`` 为驱动器类名,默认为 `Driver`;`` 为驱动器混入的类名,默认为 `Mixin`。
-
-NoneBot 内置了几个常用驱动器,包括了各类常用功能,常见驱动器配置如下:
-
-```env
-DRIVER=~fastapi
-DRIVER=~httpx+~websockets
-DRIVER=~fastapi+~httpx+~websockets
-DRIVER=~fastapi+~aiohttp
-```
-
-各驱动器的功能与区别请参考 [选择驱动器](./choose-driver.md) 。
-
-
diff --git a/website/versioned_docs/version-2.0.0-beta.1/tutorial/create-project.md b/website/versioned_docs/version-2.0.0-beta.1/tutorial/create-project.md
deleted file mode 100644
index 194b651e..00000000
--- a/website/versioned_docs/version-2.0.0-beta.1/tutorial/create-project.md
+++ /dev/null
@@ -1,67 +0,0 @@
----
-sidebar_position: 0
-description: 创建并运行项目
-
-options:
- menu:
- weight: 20
- category: guide
----
-
-# 创建项目
-
-可以使用 `nb-cli` 或者自行创建完整的项目目录:
-
-```bash
-nb create
-```
-
-## 目录结构
-
-```bash title=Project
-AweSome-Bot
-├── "awesome_bot" # 或是 src
-│ └── "plugins"
-├── ".env" # 可选的
-├── ".env.dev" # 可选的
-├── ".env.prod" # 可选的
-├── .gitignore
-├── "bot.py"
-├── docker-compose.yml
-├── Dockerfile
-├── "pyproject.toml"
-└── README.md
-```
-
-- `awesome_bot/plugins` 或 `src/plugins`: 用于存放编写的 bot 插件
-- `.env`, `.env.dev`, `.env.prod`: 各环境配置文件
-- `bot.py`: bot 入口文件
-- `pyproject.toml`: 项目插件配置文件
-- `Dockerfile`, `docker-compose.yml`: Docker 镜像配置文件
-
-## 启动 Bot
-
-:::warning 提示
-如果您使用如 `VSCode` / `PyCharm` 等 IDE 启动 nonebot,请检查 IDE 当前工作空间目录是否与当前侧边栏打开目录一致。
-
-> 注意:在二者不一致的环境下可能导致 nonebot 读取配置文件和插件等不符合预期
-
-:::
-
-1. 通过 `nb-cli`
-
- ```bash
- nb run [--file=bot.py] [--app=app]
- ```
-
- 其中 `--file` 参数可以指定 bot 入口文件,默认为 `bot.py`,`--app` 参数可以指定 asgi server,默认为 `app`。
-
-2. 直接通过 `python` 启动
-
- ```bash
- python bot.py
- ```
-
-:::tip 提示
-如果在 bot 入口文件内定义了 asgi server, `nb-cli` 将会为你启动**冷重载模式**(当文件发生变动时自动重启 NoneBot 实例)
-:::
diff --git a/website/versioned_docs/version-2.0.0-beta.1/tutorial/custom-logger.md b/website/versioned_docs/version-2.0.0-beta.1/tutorial/custom-logger.md
deleted file mode 100644
index 649e42a0..00000000
--- a/website/versioned_docs/version-2.0.0-beta.1/tutorial/custom-logger.md
+++ /dev/null
@@ -1,6 +0,0 @@
----
-sidebar_position: 100
-description: 修改日志级别与输出
----
-
-# 自定义日志
diff --git a/website/versioned_docs/version-2.0.0-beta.1/tutorial/plugin/_category_.json b/website/versioned_docs/version-2.0.0-beta.1/tutorial/plugin/_category_.json
deleted file mode 100644
index 4ad35288..00000000
--- a/website/versioned_docs/version-2.0.0-beta.1/tutorial/plugin/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "position": 7,
- "label": "插件",
- "collapsible": false
-}
diff --git a/website/versioned_docs/version-2.0.0-beta.1/tutorial/plugin/config-plugin.md b/website/versioned_docs/version-2.0.0-beta.1/tutorial/plugin/config-plugin.md
deleted file mode 100644
index 28a40a07..00000000
--- a/website/versioned_docs/version-2.0.0-beta.1/tutorial/plugin/config-plugin.md
+++ /dev/null
@@ -1,37 +0,0 @@
----
-sidebar_position: 2
-description: 规范定义插件配置项
----
-
-# 定义插件配置
-
-通常,插件可以从配置文件中读取自己的配置项,但是由于额外的全局配置项没有预先定义的问题,导致开发时编辑器无法提示字段与类型,以及运行时没有对配置项直接进行检查。那么就需要一种方式来规范定义插件配置项。
-
-## 定义配置模型
-
-在 NoneBot 中,我们使用强大高效的 [Pydantic](https://pydantic-docs.helpmanual.io/) 来定义配置模型,这个模型可以被用于配置的读取和类型检查等。例如,我们可以定义一个配置模型包含一个 string 类型的配置项:
-
-```python title=config.py {3,4}
-from pydantic import BaseModel, Extra
-
-class Config(BaseModel, extra=Extra.ignore):
- token: str
-```
-
-:::important 参考
-更多丰富的模型定义方法(默认值,自定义 validator 等),请参考 [Pydantic](https://pydantic-docs.helpmanual.io/) 文档。
-:::
-
-## 读取配置
-
-定义完成配置模型后,我们可以在插件加载时获取全局配置,导入插件自身的配置模型:
-
-```python title=__init__.py {5}
-from nonebot import get_driver
-
-from .config import Config
-
-plugin_config = Config.parse_obj(get_driver().config)
-```
-
-至此,插件已经成功读取了自身所需的配置项,并且具有字段和类型提示,也可以对配置进行运行时修改。
diff --git a/website/versioned_docs/version-2.0.0-beta.1/tutorial/plugin/create-handler.md b/website/versioned_docs/version-2.0.0-beta.1/tutorial/plugin/create-handler.md
deleted file mode 100644
index eaf7c707..00000000
--- a/website/versioned_docs/version-2.0.0-beta.1/tutorial/plugin/create-handler.md
+++ /dev/null
@@ -1,365 +0,0 @@
----
-sidebar_position: 4
-description: 定义事件处理流程,完成事件响应
-
-options:
- menu:
- weight: 27
- category: guide
----
-
-# 定义事件处理流程
-
-在上一章节中,我们已经定义了事件响应器,在这一章中,我们将会为事件响应器填充处理流程。
-
-## 添加一个处理依赖
-
-在事件响应器中,事件处理流程由一个或多个处理依赖组成,每个处理依赖都是一个 `Dependent`,详情可以参考 [进阶 - 依赖注入](../../advanced/di/dependency-injection.md)。下面介绍如何添加一个处理依赖。
-
-### 使用 `handle` 装饰器
-
-```python {3-5}
-matcher = on_message()
-
-@matcher.handle()
-async def handle_func():
- # do something here
-```
-
-如上方示例所示,我们使用 `matcher` 响应器的 `handle` 装饰器装饰了一个函数 `handle_func` 。`handle_func` 函数会被自动转换为 `Dependent` 对象,并被添加到 `matcher` 的事件处理流程中。
-
-在 `handle_func` 函数中,我们可以编写任何事件响应逻辑,如:操作数据库,发送消息等。上下文信息可以通过依赖注入的方式获取,参考:[获取上下文信息](#获取上下文信息)。发送消息可以通过 [事件响应器操作](./matcher-operation.md) 或者直接调用 Bot 的方法( API 等,由协议适配器决定)。
-
-:::warning 注意
-`handle_func` 函数虽然会被装饰器自动转换为 `Dependent` 对象,但 `handle_func` 仍然为原本的函数,因此 `handle_func` 函数可以进行复用。如:
-
-```python
-matcher1 = on_message()
-matcher2 = on_message()
-
-@matcher1.handle()
-@matcher2.handle()
-async def handle_func():
- # do something here
-```
-
-:::
-
-### 使用 `receive` 装饰器
-
-```python {3-5}
-matcher = on_message()
-
-@matcher.receive("id")
-async def handle_func(e: Event = Received("id")):
- # do something here
-```
-
-`receive` 装饰器与 `handle` 装饰器一样,可以装饰一个函数添加到事件响应器的事件处理流程中。但与 `handle` 装饰器不同的是,`receive` 装饰器会中断当前事件处理流程,等待接收一个新的事件,就像是会话状态等待用户一个新的事件。可以接收的新的事件类型取决于事件响应器的 [`type`](./create-matcher.md#事件响应器类型-type) 更新值以及 [`permission`](./create-matcher.md#事件触发权限-permission) 更新值,可以通过自定义更新方法来控制会话响应(如进行非消息交互、多人会话、跨群会话等)。
-
-`receive` 装饰器接受一个可选参数 `id` ,用于标识当前需要接收的事件,如果不指定,则默认为空 `""`。
-
-在 `handle_func` 函数中,可以通过依赖注入的方式来获取接收到的事件,参考:[`Received`](#received), [`LastReceived`](#lastreceived)。
-
-:::important 提示
-`receive` 装饰器可以和自身与 `got` 装饰器嵌套使用
-:::
-
-:::warning 注意
-如果存在多个 `receive` 装饰器,则必须指定不相同的多个 `id`;否则相同的 `id` 将会被跳过接收。
-
-```python
-matcher = on_message()
-
-@matcher.receive("id1")
-@matcher.receive("id2")
-async def handle_func():
- # do something here
-```
-
-:::
-
-### 使用 `got` 装饰器
-
-```python {3-5}
-matcher = on_message()
-
-@matcher.got("key")
-async def handle_func(key: Message = Arg()):
- # do something here
-```
-
-`got` 装饰器与 `receive` 装饰器一样,会中断当前事件处理流程,等待接收一个新的事件。但与 `receive` 装饰器不同的是,`got` 装饰器用于接收一条消息,并且可以控制是否向用户发送询问 `prompt` 等,更贴近于对话形式会话。
-
-`got` 装饰器接受一个参数 `key` 和一个可选参数 `prompt`,当 `key` 不存在时,会向用户发送 `prompt` 消息,并等待用户回复。
-
-在 `handle_func` 函数中,可以通过依赖注入的方式来获取接收到的消息,参考:[`Arg`](#arg), [`ArgStr`](#argstr), [`ArgPlainText`](#argplaintext)。
-
-:::important 提示
-`got` 装饰器可以和自身与 `receive` 装饰器嵌套使用
-:::
-
-### 直接添加
-
-```python {2}
-matcher = on_message(
- handlers=[handle_func, or_dependent]
-)
-```
-
-:::warning 注意
-通过该方法添加的处理依赖将会处于整个事件处理流程的最前,因此,如果再使用 `handle` 等装饰器,则会在其之后。
-:::
-
-## 事件处理流程
-
-
-
-## 获取上下文信息
-
-### Bot
-
-```python {7-9}
-from typing import Union
-
-from nonebot.adapters import Bot
-from nonebot.adapters.ding import Bot as DingBot
-from nonebot.adapters.onebot.v11 import Bot as OneBotV11Bot
-
-async def _(foo: Bot): ...
-async def _(foo: Union[DingBot, OneBotV11Bot]): ...
-async def _(bot): ... # 兼容性处理
-```
-
-### Event
-
-```python {6-8}
-from typing import Union
-
-from nonebot.adapters import Event
-from nonebot.adapters.onebot.v11 import PrivateMessageEvent, GroupMessageEvent
-
-async def _(foo: Event): ...
-async def _(foo: Union[PrivateMessageEvent, GroupMessageEvent]): ...
-async def _(event): ... # 兼容性处理
-```
-
-### EventType
-
-```python {3}
-from nonebot.params import EventType
-
-async def _(foo: str = EventType()): ...
-```
-
-### EventMessage
-
-```python {4}
-from nonebot.adapters import Message
-from nonebot.params import EventMessage
-
-async def _(foo: str = EventMessage()): ...
-```
-
-### EventPlainText
-
-```python {3}
-from nonebot.params import EventPlainText
-
-async def _(foo: str = EventPlainText()): ...
-```
-
-### EventToMe
-
-```python {3}
-from nonebot.params import EventToMe
-
-async def _(foo: bool = EventToMe()): ...
-```
-
-### State
-
-```python {4}
-from nonebot.params import State
-from nonebot.typing import T_State
-
-async def _(foo: T_State = State()): ...
-```
-
-### Command
-
-```python {7}
-from nonebot import on_command
-from nonebot.params import Command
-
-matcher = on_command("cmd")
-
-@matcher.handle()
-async def _(foo: Tuple[str, ...] = Command()): ...
-```
-
-### CommandArg
-
-```python {8}
-from nonebot import on_command
-from nonebot.adapters import Message
-from nonebot.params import CommandArg
-
-matcher = on_command("cmd")
-
-@matcher.handle()
-async def _(foo: Message = CommandArg()): ...
-```
-
-### ShellCommandArgs
-
-```python {7}
-from nonebot import on_command
-from nonebot.params import ShellCommandArgs
-
-matcher = on_shell_command("cmd", parser)
-
-@matcher.handle()
-async def _(foo: Dict[str, Any] = ShellCommandArgs()): ...
-```
-
-### ShellCommandArgv
-
-```python {7}
-from nonebot import on_command
-from nonebot.params import ShellCommandArgs
-
-matcher = on_shell_command("cmd")
-
-@matcher.handle()
-async def _(foo: List[str] = ShellCommandArgv()): ...
-```
-
-### RegexMatched
-
-```python {7}
-from nonebot import on_regex
-from nonebot.params import RegexMatched
-
-matcher = on_regex("regex")
-
-@matcher.handle()
-async def _(foo: str = RegexMatched()): ...
-```
-
-### RegexGroup
-
-```python {7}
-from nonebot import on_regex
-from nonebot.params import RegexGroup
-
-matcher = on_regex("regex")
-
-@matcher.handle()
-async def _(foo: Tuple[Any, ...] = RegexGroup()): ...
-```
-
-### RegexDict
-
-```python {7}
-from nonebot import on_regex
-from nonebot.params import RegexDict
-
-matcher = on_regex("regex")
-
-@matcher.handle()
-async def _(foo: Dict[str, Any] = RegexDict()): ...
-```
-
-### Matcher
-
-```python {7}
-from nonebot import on_message
-from nonebot.matcher import Matcher
-
-foo = on_message()
-
-@foo.handle()
-async def _(matcher: Matcher): ...
-```
-
-### Received
-
-```python {8}
-from nonebot import on_message
-from nonebot.adapters import Event
-from nonebot.params import Received
-
-matcher = on_message()
-
-@matcher.receive("id")
-async def _(foo: Event = Received("id")): ...
-```
-
-### LastReceived
-
-```python {8}
-from nonebot import on_message
-from nonebot.adapters import Event
-from nonebot.params import LastReceived
-
-matcher = on_message()
-
-@matcher.receive("any")
-async def _(foo: Event = LastReceived()): ...
-```
-
-### Arg
-
-```python {8-9}
-from nonebot.params import Arg
-from nonebot import on_message
-from nonebot.adapters import Message
-
-matcher = on_message()
-
-@matcher.got("key")
-async def _(key: Message = Arg()): ...
-async def _(foo: Message = Arg("key")): ...
-```
-
-### ArgStr
-
-```python {7-8}
-from nonebot import on_message
-from nonebot.params import ArgStr
-
-matcher = on_message()
-
-@matcher.got("key")
-async def _(key: str = ArgStr()): ...
-async def _(foo: str = ArgStr("key")): ...
-```
-
-### ArgPlainText
-
-```python {7-8}
-from nonebot import on_message
-from nonebot.params import ArgPlainText
-
-matcher = on_message()
-
-@matcher.got("key")
-async def _(key: str = ArgPlainText()): ...
-async def _(foo: str = ArgPlainText("key")): ...
-```
-
-### Exception
-
-```python {4}
-from nonebot.message import run_postprocessor
-
-@run_postprocessor
-async def _(e: Exception): ...
-```
-
-### Default
-
-```python {1}
-async def _(foo="bar"): ...
-```
diff --git a/website/versioned_docs/version-2.0.0-beta.1/tutorial/plugin/create-matcher.md b/website/versioned_docs/version-2.0.0-beta.1/tutorial/plugin/create-matcher.md
deleted file mode 100644
index 6aba5738..00000000
--- a/website/versioned_docs/version-2.0.0-beta.1/tutorial/plugin/create-matcher.md
+++ /dev/null
@@ -1,138 +0,0 @@
----
-sidebar_position: 3
-description: 定义事件响应器,对特定的事件进行处理
-
-options:
- menu:
- weight: 26
- category: guide
----
-
-# 定义事件响应器
-
-事件响应器 (`Matcher`) 是对接收到的事件进行响应的基本单元,所有的事件响应器都继承自 `Matcher` 基类。为方便编写插件,NoneBot 在 `nonebot.plugin` 模块中为插件开发定义了一些辅助函数,以便插件开发者可以简化插件开发。首先,让我们来了解一下 `Matcher` 由哪些部分组成。
-
-## 事件响应器的基本组成
-
-### 事件响应器类型 `type`
-
-事件响应器的类型即是该响应器所要响应的事件类型,只有在接收到的事件类型与该响应器的类型相同时,才会触发该响应器。如果类型留空,则该响应器将会响应所有类型的事件。
-
-NoneBot 内置了四种主要类型:`meta_event`, `message`, `notice`, `request`。通常情况下,协议适配器会将事件合理的分类至这四种类型中。如果有其他类型的事件需要响应,可以自行定义新的类型。
-
-
-
-:::warning 注意
-当会话状态更新时,会执行 `type_updater` 以更新 `type` 属性,以便会话收到新事件时能够正确匹配。
-
-`type_updater` 默认将 `type` 修改为 `message`,你也可以自行定义 `type_updater` 来控制 `type` 属性更新。`type_updater` 是一个返回 `str` 的函数,可选依赖注入参数参考类型 `T_TypeUpdater`。
-
-```python {3-5}
-matcher = on_request()
-
-@matcher.type_updater
-async def update_type():
- return "message"
-```
-
-:::
-
-### 事件匹配规则 `rule`
-
-事件响应器的匹配规则是一个 `Rule` 对象,它是一系列 `checker` 的集合,当所有的 `checker` 都返回 `True` 时,才会触发该响应器。
-
-规则编写方法参考 [自定义规则](#自定义规则)。
-
-:::warning 注意
-当会话状态更新时,`rule` 会被清空,以便会话收到新事件时能够正确匹配。
-:::
-
-### 事件触发权限 `permission`
-
-事件响应器的触发权限是一个 `Permission` 对象,它也是一系列 `checker` 的集合,当其中一个 `checker` 返回 `True` 时,就会触发该响应器。
-
-权限编写方法参考 [自定义权限](#自定义权限)。
-
-:::warning 注意
-与 `rule` 不同的是,`permission` 不会在会话状态更新时丢失,因此 `permission` 通常用于会话的响应控制。
-
-并且, 当会话状态更新时,会执行 `permission_updater` 以更新 `permission`。默认情况下,`permission_updater` 会在原有的 `permission` 基础上添加一个 `USER` 条件,以检查事件的 `session_id` 是否与当前会话一致。
-
-你可以自行定义 `permission_updater` 来控制会话的响应权限更新。`permission_updater` 是一个返回 `Permission` 的函数,可选依赖注入参数参考类型 `T_PermissionUpdater`。
-
-```python {3-5}
-matcher = on_message()
-
-@matcher.permission_updater
-async def update_type(matcher: Matcher):
- return matcher.permission # return same without session_id check
-```
-
-:::
-
-### 优先级 `priority`
-
-事件响应器的优先级代表事件响应器的执行顺序
-
-:::warning 警告
-同一优先级的事件响应器会 **同时执行**,优先级数字 **越小** 越先响应!优先级请从 `1` 开始排序!
-:::
-
-### 阻断 `block`
-
-当有任意事件响应器发出了阻止事件传递信号时,该事件将不再会传递给下一优先级,直接结束处理。
-
-NoneBot 内置的事件响应器中,所有非 `command` 规则的 `message` 类型的事件响应器都会阻断事件传递,其他则不会。
-
-在部分情况中,可以使用 `matcher.stop_propagation()` 方法动态阻止事件传播,该方法需要 `handler` 在参数中获取 `matcher` 实例后调用方法。
-
-```python {5}
-foo = on_request()
-
-@foo.handle()
-async def handle(matcher: Matcher):
- matcher.stop_propagation()
-```
-
-### 有效期 `temp` / `expire_time`
-
-事件响应器可以设置有效期,当事件响应器超过有效期时,将会被移除。
-
-- `temp` 属性:配置事件响应器在下一次响应之后移除。
-- `expire_time` 属性:配置事件响应器在指定时间之后移除。
-
-## 创建事件响应器
-
-在前面的介绍中,我们已经了解了事件响应器的组成,接下来我们就可以使用 `nonebot.plugin` 模块中定义的辅助函数来创建事件响应器。
-
-```python {3}
-from nonebot import on_message
-
-matcher = on_message()
-```
-
-用于定义事件响应器的辅助函数已经在 `nonebot` 主模块中被 `re-export` ,所以直接从 `nonebot` 导入即可。
-
-辅助函数有以下几种:
-
-1. `on`: 创建任何类型的事件响应器。
-2. `on_metaevent`: 创建元事件响应器。
-3. `on_message`: 创建消息事件响应器。
-4. `on_request`: 创建请求事件响应器。
-5. `on_notice`: 创建通知事件响应器。
-6. `on_startswith`: 创建消息开头匹配事件响应器。
-7. `on_endswith`: 创建消息结尾匹配事件响应器。
-8. `on_keyword`: 创建消息关键词匹配事件响应器。
-9. `on_command`: 创建命令消息事件响应器。
-10. `on_shell_command`: 创建 shell 命令消息事件响应器。
-11. `on_regex`: 创建正则表达式匹配事件响应器。
-12. `CommandGroup`: 创建具有共同命令名称前缀的命令组。
-13. `MatcherGroup`: 创建具有共同参数的响应器组。
-
-其中,`on_metaevent` `on_message` `on_request` `on_notice` 函数都是在 `on` 的基础上添加了对应的事件类型 `type`;`on_startswith` `on_endswith` `on_keyword` `on_command` `on_shell_command` `on_regex` 函数都是在 `on_message` 的基础上添加了对应的匹配规则 `rule`。
-
-## 自定义规则
-
-
-
-## 自定义权限
diff --git a/website/versioned_docs/version-2.0.0-beta.1/tutorial/plugin/example.mdx b/website/versioned_docs/version-2.0.0-beta.1/tutorial/plugin/example.mdx
deleted file mode 100644
index e363b0b5..00000000
--- a/website/versioned_docs/version-2.0.0-beta.1/tutorial/plugin/example.mdx
+++ /dev/null
@@ -1,32 +0,0 @@
----
-sidebar_position: 6
-description: 简单插件示例
----
-
-import CodeBlock from "@theme/CodeBlock";
-import Messenger from "@site/src/components/Messenger";
-
-# 插件示例
-
-## 命令式问答示例
-
-import WeatherSource from "!!raw-loader!@site/../tests/examples/weather.py";
-import WeatherTest from "!!raw-loader!@site/../tests/test_examples/test_weather.py";
-
-{WeatherSource}
-
-
-
-
- 测试示例
-
-{WeatherTest}
-
-
diff --git a/website/versioned_docs/version-2.0.0-beta.1/tutorial/plugin/introduction.md b/website/versioned_docs/version-2.0.0-beta.1/tutorial/plugin/introduction.md
deleted file mode 100644
index b146502b..00000000
--- a/website/versioned_docs/version-2.0.0-beta.1/tutorial/plugin/introduction.md
+++ /dev/null
@@ -1,71 +0,0 @@
----
-sidebar_position: 0
-description: 插件入门
----
-
-# 插件入门
-
-## 插件结构
-
-在编写插件之前,首先我们需要了解一下插件的概念。
-
-在 NoneBot 中,插件可以是 Python 的一个模块 `module` ,也可以是一个包 `package` 。NoneBot 会在导入时对这些模块或包做一些特殊的处理使得他们成为一个插件。插件间应尽量减少耦合,可以进行有限制的插件间调用,NoneBot 能够正确解析插件间的依赖关系。
-
-下面详细介绍两种插件的结构:
-
-### 模块插件(单文件形式)
-
-在合适的路径创建一个 `.py` 文件即可。例如在 [创建项目](../create-project.md) 中创建的项目中,我们可以在 `awesome_bot/plugins/` 目录中创建一个文件 `foo.py`。
-
-```bash title=Project {4}
-AweSome-Bot
-├── awesome_bot
-│ └── plugins
-| └── foo.py
-├── .env
-├── .env.dev
-├── .env.prod
-├── .gitignore
-├── bot.py
-├── docker-compose.yml
-├── Dockerfile
-├── pyproject.toml
-└── README.md
-```
-
-这个时候它已经可以被称为一个插件了,尽管它还什么都没做。
-
-### 包插件(文件夹形式)
-
-在合适的路径创建一个文件夹,并在文件夹内创建文件 `__init__.py` 即可。例如在 [创建项目](../create-project.md) 中创建的项目中,我们可以在 `awesome_bot/plugins/` 目录中创建一个文件夹 `foo`,并在这个文件夹内创建一个文件 `__init__.py`。
-
-```bash title=Project {4,5}
-AweSome-Bot
-├── awesome_bot
-│ └── plugins
-| └── foo.py
-| └── __init__.py
-├── .env
-├── .env.dev
-├── .env.prod
-├── .gitignore
-├── bot.py
-├── docker-compose.yml
-├── Dockerfile
-├── pyproject.toml
-└── README.md
-```
-
-这个时候 `foo` 就是一个合法的 Python 包了,同时也是合法的 NoneBot 插件,插件内容可以在 `__init__.py` 中编写。
-
-## 创建插件
-
-:::danger 警告
-请注意,插件名称不能存在重复,即所有模块插件的文件名和所有包插件的文件夹名不能存在相同。
-:::
-
-除了通过手动创建的方式以外,还可以通过 `nb-cli` 来创建插件,`nb-cli` 会为你在合适的位置创建一个模板包插件。
-
-```bash
-nb plugin create
-```
diff --git a/website/versioned_docs/version-2.0.0-beta.1/tutorial/plugin/load-plugin.md b/website/versioned_docs/version-2.0.0-beta.1/tutorial/plugin/load-plugin.md
deleted file mode 100644
index 90aed864..00000000
--- a/website/versioned_docs/version-2.0.0-beta.1/tutorial/plugin/load-plugin.md
+++ /dev/null
@@ -1,106 +0,0 @@
----
-sidebar_position: 1
-description: 通过不同方式加载插件
-
-options:
- menu:
- weight: 25
- category: guide
----
-
-# 加载插件
-
-:::danger 警告
-请勿在插件被加载前 `import` 插件模块,这会导致 NoneBot 无法将其转换为插件而损失部分功能。
-:::
-
-加载插件通常在机器人的入口文件进行,例如在 [创建项目](../create-project.md) 中创建的项目中的 `bot.py` 文件。在 NoneBot 初始化完成后即可加载插件。
-
-```python title=bot.py {5}
-import nonebot
-
-nonebot.init()
-
-# load your plugin here
-
-nonebot.run()
-```
-
-加载插件的方式有多种,但在底层的加载逻辑是一致的。以下是为加载插件提供的几种方式:
-
-## `load_plugin`
-
-通过点分割模块名称来加载插件,通常用于加载单个插件或者是第三方插件。例如:
-
-```python
-nonebot.load_plugin("path.to.your.plugin")
-```
-
-## `load_plugins`
-
-加载传入插件目录中的所有插件,通常用于加载一系列本地编写的插件。例如:
-
-```python
-nonebot.load_plugins("src/plugins", "path/to/your/plugins")
-```
-
-:::warning 警告
-请注意,插件所在目录应该为相对机器人入口文件可导入的,例如与入口文件在同一目录下。
-:::
-
-## `load_all_plugins`
-
-这种加载方式是以上两种方式的融合,加载所有传入的插件模块名称,以及所有给定目录下的插件。例如:
-
-```python
-nonebot.load_all_plugins(["path.to.your.plugin"], ["path/to/your/plugins"])
-```
-
-## `load_from_json`
-
-通过 JSON 文件加载插件,是 [`load_all_plugins`](#load_all_plugins) 的 JSON 变种。通过读取 JSON 文件中的 `plugins` 字段和 `plugin_dirs` 字段进行加载。例如:
-
-```json title=plugin_config.json
-{
- "plugins": ["path.to.your.plugin"],
- "plugin_dirs": ["path/to/your/plugins"]
-}
-```
-
-```python
-nonebot.load_from_json("plugin_config.json", encoding="utf-8")
-```
-
-:::tip 提示
-如果 JSON 配置文件中的字段无法满足你的需求,可以使用 [`load_all_plugins`](#load_all_plugins) 方法自行读取配置来加载插件。
-:::
-
-## `load_from_toml`
-
-通过 TOML 文件加载插件,是 [`load_all_plugins`](#load_all_plugins) 的 TOML 变种。通过读取 TOML 文件中的 `[tool.nonebot]` Table 中的 `plugins` 和 `plugin_dirs` Array 进行加载。例如:
-
-```toml title=plugin_config.toml
-[tool.nonebot]
-plugins = ["path.to.your.plugin"]
-plugin_dirs = ["path/to/your/plugins"]
-```
-
-```python
-nonebot.load_from_toml("plugin_config.toml", encoding="utf-8")
-```
-
-:::tip 提示
-如果 TOML 配置文件中的字段无法满足你的需求,可以使用 [`load_all_plugins`](#load_all_plugins) 方法自行读取配置来加载插件。
-:::
-
-## `load_builtin_plugin`
-
-加载一个内置插件,是 [`load_plugin`](#load_plugin) 的封装。例如:
-
-```python
-nonebot.load_builtin_plugin("echo")
-```
-
-## 嵌套插件
-
-
diff --git a/website/versioned_docs/version-2.0.0-beta.1/tutorial/plugin/matcher-operation.md b/website/versioned_docs/version-2.0.0-beta.1/tutorial/plugin/matcher-operation.md
deleted file mode 100644
index 0d8d6551..00000000
--- a/website/versioned_docs/version-2.0.0-beta.1/tutorial/plugin/matcher-operation.md
+++ /dev/null
@@ -1,37 +0,0 @@
----
-sidebar_position: 5
-description: 使用事件响应器操作,改变事件处理流程
-
-options:
- menu:
- weight: 28
- category: guide
----
-
-# 事件响应器操作
-
-## send
-
-## finish
-
-## pause
-
-## reject
-
-## reject_arg
-
-## reject_receive
-
-## skip
-
-## get_receive
-
-## set_receive
-
-## get_last_receive
-
-## get_arg
-
-## set_arg
-
-## stop_propagation
diff --git a/website/versioned_docs/version-2.0.0-beta.1/tutorial/register-adapter.md b/website/versioned_docs/version-2.0.0-beta.1/tutorial/register-adapter.md
deleted file mode 100644
index 98638c1f..00000000
--- a/website/versioned_docs/version-2.0.0-beta.1/tutorial/register-adapter.md
+++ /dev/null
@@ -1,93 +0,0 @@
----
-sidebar_position: 6
-description: 协议适配器的功能与使用
-
-options:
- menu:
- weight: 23
- category: guide
----
-
-# 使用适配器
-
-:::tip 提示
-如何**安装**协议适配器请参考 [安装协议适配器](../start/install-adapter.md)
-:::
-
-## 协议适配器的功能
-
-由于 NoneBot 的跨平台特性,需要支持不同的协议,因此需要对特定的平台协议编写一个转换器。
-
-协议适配器即是充当中间人的转换器,它将驱动器所收到的数据转换为可以被 NoneBot 处理的事件 Event,并将事件传递给 NoneBot。
-
-同时,协议适配器还会处理 API 调用,转换为可以被驱动器处理的数据发送出去。
-
-## 注册协议适配器
-
-NoneBot 在默认情况下并不会加载任何协议适配器,需要自己手动注册。下方是个加载协议适配器的例子:
-
-```python title=bot.py
-import nonebot
-from your_adapter_package import Adapter
-
-nonebot.init()
-driver = nonebot.get_driver()
-driver.register_adapter(Adapter)
-
-nonebot.run()
-```
-
-加载步骤如下:
-
-### 导入协议适配器
-
-首先从你需要的协议适配器的包中导入适配器类,通常为 `Adapter`
-
-```python title=bot.py {2}
-import nonebot
-from your_adapter_package import Adapter
-
-nonebot.init()
-driver = nonebot.get_driver()
-driver.register_adapter(Adapter)
-
-nonebot.run()
-```
-
-### 获得驱动器实例
-
-加载协议适配器需要通过驱动器来进行,因此,你需要先初始化 NoneBot,并获得驱动器实例。
-
-```python title=bot.py {4,5}
-import nonebot
-from your_adapter_package import Adapter
-
-nonebot.init()
-driver = nonebot.get_driver()
-driver.register_adapter(Adapter)
-
-nonebot.run()
-```
-
-### 注册
-
-获得驱动器实例后,你需要调用 `register_adapter` 方法来注册协议适配器。NoneBot 会通过协议适配器的 `get_name` 方法来获得协议适配器的名字。
-
-:::warning 注意
-你可以多次调用来注册多个协议适配器,但不能注册多次相同的协议适配器,发生这种情况时 NoneBot 会给出一个警告并忽略这次注册。
-:::
-
-```python title=bot.py {6}
-import nonebot
-from your_adapter_package import Adapter
-
-nonebot.init()
-driver = nonebot.get_driver()
-driver.register_adapter(Adapter)
-
-nonebot.run()
-```
-
-:::danger 警告
-协议适配器需要在 NoneBot 启动前进行注册,即 `nonebot.run()` 之前,否则会出现未知的错误。
-:::
diff --git a/website/versioned_sidebars/version-2.0.0-beta.1-sidebars.json b/website/versioned_sidebars/version-2.0.0-beta.1-sidebars.json
deleted file mode 100644
index ac8892b1..00000000
--- a/website/versioned_sidebars/version-2.0.0-beta.1-sidebars.json
+++ /dev/null
@@ -1,50 +0,0 @@
-{
- "version-2.0.0-beta.1/tutorial": [
- {
- "type": "doc",
- "id": "version-2.0.0-beta.1/index"
- },
- {
- "type": "category",
- "label": "开始",
- "items": [
- {
- "type": "autogenerated",
- "dirName": "start"
- }
- ],
- "collapsible": true,
- "collapsed": true
- },
- {
- "type": "category",
- "label": "教程",
- "items": [
- {
- "type": "autogenerated",
- "dirName": "tutorial"
- }
- ],
- "collapsible": true,
- "collapsed": true
- },
- {
- "type": "category",
- "label": "进阶",
- "items": [
- {
- "type": "autogenerated",
- "dirName": "advanced"
- }
- ],
- "collapsible": true,
- "collapsed": true
- }
- ],
- "version-2.0.0-beta.1/api": [
- {
- "type": "autogenerated",
- "dirName": "api"
- }
- ]
-}
diff --git a/website/versions.json b/website/versions.json
deleted file mode 100644
index 782db369..00000000
--- a/website/versions.json
+++ /dev/null
@@ -1,3 +0,0 @@
-[
- "2.0.0-beta.1"
-]
diff --git a/yarn.lock b/yarn.lock
index 8ec51665..74522fe3 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2,149 +2,156 @@
# yarn lockfile v1
-"@algolia/autocomplete-core@1.5.0":
- version "1.5.0"
- resolved "https://registry.npmmirror.com/@algolia/autocomplete-core/download/@algolia/autocomplete-core-1.5.0.tgz#6c91c9de7748e9c103846828a58dfe92bd4d6689"
- integrity sha1-bJHJ3ndI6cEDhGgopY3+kr1NZok=
+"@algolia/autocomplete-core@1.5.2":
+ version "1.5.2"
+ resolved "https://registry.npmmirror.com/@algolia/autocomplete-core/-/autocomplete-core-1.5.2.tgz#ec0178e07b44fd74a057728ac157291b26cecf37"
+ integrity sha512-DY0bhyczFSS1b/CqJlTE/nQRtnTAHl6IemIkBy0nEWnhDzRDdtdx4p5Uuk3vwAFxwEEgi1WqKwgSSMx6DpNL4A==
dependencies:
- "@algolia/autocomplete-shared" "1.5.0"
+ "@algolia/autocomplete-shared" "1.5.2"
-"@algolia/autocomplete-preset-algolia@1.5.0":
- version "1.5.0"
- resolved "https://registry.npmmirror.com/@algolia/autocomplete-preset-algolia/download/@algolia/autocomplete-preset-algolia-1.5.0.tgz#61671f09c0c77133d9baf1356719f8378c48437a"
- integrity sha1-YWcfCcDHcTPZuvE1Zxn4N4xIQ3o=
+"@algolia/autocomplete-preset-algolia@1.5.2":
+ version "1.5.2"
+ resolved "https://registry.npmmirror.com/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.5.2.tgz#36c5638cc6dba6ea46a86e5a0314637ca40a77ca"
+ integrity sha512-3MRYnYQFJyovANzSX2CToS6/5cfVjbLLqFsZTKcvF3abhQzxbqwwaMBlJtt620uBUOeMzhdfasKhCc40+RHiZw==
dependencies:
- "@algolia/autocomplete-shared" "1.5.0"
+ "@algolia/autocomplete-shared" "1.5.2"
-"@algolia/autocomplete-shared@1.5.0":
- version "1.5.0"
- resolved "https://registry.npmmirror.com/@algolia/autocomplete-shared/download/@algolia/autocomplete-shared-1.5.0.tgz#09580bc89408a2ab5f29e312120dad68f58019bd"
- integrity sha1-CVgLyJQIoqtfKeMSEg2taPWAGb0=
+"@algolia/autocomplete-shared@1.5.2":
+ version "1.5.2"
+ resolved "https://registry.npmmirror.com/@algolia/autocomplete-shared/-/autocomplete-shared-1.5.2.tgz#e157f9ad624ab8fd940ff28bd2094cdf199cdd79"
+ integrity sha512-ylQAYv5H0YKMfHgVWX0j0NmL8XBcAeeeVQUmppnnMtzDbDnca6CzhKj3Q8eF9cHCgcdTDdb5K+3aKyGWA0obug==
-"@algolia/cache-browser-local-storage@4.11.0":
- version "4.11.0"
- resolved "https://registry.npmmirror.com/@algolia/cache-browser-local-storage/download/@algolia/cache-browser-local-storage-4.11.0.tgz#1c168add00b398a860db6c86039e33b2843a9425"
- integrity sha1-HBaK3QCzmKhg22yGA54zsoQ6lCU=
+"@algolia/cache-browser-local-storage@4.12.1":
+ version "4.12.1"
+ resolved "https://registry.npmmirror.com/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.12.1.tgz#23f4f219963b96918d0524acd09d4d646541d888"
+ integrity sha512-ERFFOnC9740xAkuO0iZTQqm2AzU7Dpz/s+g7o48GlZgx5p9GgNcsuK5eS0GoW/tAK+fnKlizCtlFHNuIWuvfsg==
dependencies:
- "@algolia/cache-common" "4.11.0"
+ "@algolia/cache-common" "4.12.1"
-"@algolia/cache-common@4.11.0":
- version "4.11.0"
- resolved "https://registry.npmmirror.com/@algolia/cache-common/download/@algolia/cache-common-4.11.0.tgz#066fe6d58b18e4b028dbef9bb8de07c5e22a3594"
- integrity sha512-lODcJRuPXqf+6mp0h6bOxPMlbNoyn3VfjBVcQh70EDP0/xExZbkpecgHyyZK4kWg+evu+mmgvTK3GVHnet/xKw==
+"@algolia/cache-common@4.12.1":
+ version "4.12.1"
+ resolved "https://registry.npmmirror.com/@algolia/cache-common/-/cache-common-4.12.1.tgz#d3f1676ca9c404adce0f78d68f6381bedb44cd9c"
+ integrity sha512-UugTER3V40jT+e19Dmph5PKMeliYKxycNPwrPNADin0RcWNfT2QksK9Ff2N2W7UKraqMOzoeDb4LAJtxcK1a8Q==
-"@algolia/cache-in-memory@4.11.0":
- version "4.11.0"
- resolved "https://registry.npmmirror.com/@algolia/cache-in-memory/download/@algolia/cache-in-memory-4.11.0.tgz#763c8cb655e6fd2261588e04214fca0959ac07c1"
- integrity sha1-djyMtlXm/SJhWI4EIU/KCVmsB8E=
+"@algolia/cache-in-memory@4.12.1":
+ version "4.12.1"
+ resolved "https://registry.npmmirror.com/@algolia/cache-in-memory/-/cache-in-memory-4.12.1.tgz#0ef6aac2f8feab5b46fc130beb682bbd21b55244"
+ integrity sha512-U6iaunaxK1lHsAf02UWF58foKFEcrVLsHwN56UkCtwn32nlP9rz52WOcHsgk6TJrL8NDcO5swMjtOQ5XHESFLw==
dependencies:
- "@algolia/cache-common" "4.11.0"
+ "@algolia/cache-common" "4.12.1"
-"@algolia/client-account@4.11.0":
- version "4.11.0"
- resolved "https://registry.npmmirror.com/@algolia/client-account/download/@algolia/client-account-4.11.0.tgz#67fadd3b0802b013ebaaa4b47bb7babae892374e"
- integrity sha1-Z/rdOwgCsBPrqqS0e7e6uuiSN04=
+"@algolia/client-account@4.12.1":
+ version "4.12.1"
+ resolved "https://registry.npmmirror.com/@algolia/client-account/-/client-account-4.12.1.tgz#e838c9283db2fab32a425dd13c77da321d48fd8b"
+ integrity sha512-jGo4ConJNoMdTCR2zouO0jO/JcJmzOK6crFxMMLvdnB1JhmMbuIKluOTJVlBWeivnmcsqb7r0v7qTCPW5PAyxQ==
dependencies:
- "@algolia/client-common" "4.11.0"
- "@algolia/client-search" "4.11.0"
- "@algolia/transporter" "4.11.0"
+ "@algolia/client-common" "4.12.1"
+ "@algolia/client-search" "4.12.1"
+ "@algolia/transporter" "4.12.1"
-"@algolia/client-analytics@4.11.0":
- version "4.11.0"
- resolved "https://registry.npmmirror.com/@algolia/client-analytics/download/@algolia/client-analytics-4.11.0.tgz#cbdc8128205e2da749cafc79e54708d14c413974"
- integrity sha1-y9yBKCBeLadJyvx55UcI0UxBOXQ=
+"@algolia/client-analytics@4.12.1":
+ version "4.12.1"
+ resolved "https://registry.npmmirror.com/@algolia/client-analytics/-/client-analytics-4.12.1.tgz#2976d658655a1590cf84cfb596aa75a204f6dec4"
+ integrity sha512-h1It7KXzIthlhuhfBk7LteYq72tym9maQDUsyRW0Gft8b6ZQahnRak9gcCvKwhcJ1vJoP7T7JrNYGiYSicTD9g==
dependencies:
- "@algolia/client-common" "4.11.0"
- "@algolia/client-search" "4.11.0"
- "@algolia/requester-common" "4.11.0"
- "@algolia/transporter" "4.11.0"
+ "@algolia/client-common" "4.12.1"
+ "@algolia/client-search" "4.12.1"
+ "@algolia/requester-common" "4.12.1"
+ "@algolia/transporter" "4.12.1"
-"@algolia/client-common@4.11.0":
- version "4.11.0"
- resolved "https://registry.npmmirror.com/@algolia/client-common/download/@algolia/client-common-4.11.0.tgz#9a2d1f6f8eaad25ba5d6d4ce307ba5bd84e6f999"
- integrity sha1-mi0fb46q0lul1tTOMHulvYTm+Zk=
+"@algolia/client-common@4.12.1":
+ version "4.12.1"
+ resolved "https://registry.npmmirror.com/@algolia/client-common/-/client-common-4.12.1.tgz#104ccefe96bda3ff926bc70c31ff6d17c41b6107"
+ integrity sha512-obnJ8eSbv+h94Grk83DTGQ3bqhViSWureV6oK1s21/KMGWbb3DkduHm+lcwFrMFkjSUSzosLBHV9EQUIBvueTw==
dependencies:
- "@algolia/requester-common" "4.11.0"
- "@algolia/transporter" "4.11.0"
+ "@algolia/requester-common" "4.12.1"
+ "@algolia/transporter" "4.12.1"
-"@algolia/client-personalization@4.11.0":
- version "4.11.0"
- resolved "https://registry.npmmirror.com/@algolia/client-personalization/download/@algolia/client-personalization-4.11.0.tgz#d3bf0e760f85df876b4baf5b81996f0aa3a59940"
- integrity sha1-078Odg+F34drS69bgZlvCqOlmUA=
+"@algolia/client-personalization@4.12.1":
+ version "4.12.1"
+ resolved "https://registry.npmmirror.com/@algolia/client-personalization/-/client-personalization-4.12.1.tgz#f63d1890f95de850e1c8e41c1d57adda521d9e7f"
+ integrity sha512-sMSnjjPjRgByGHYygV+5L/E8a6RgU7l2GbpJukSzJ9GRY37tHmBHuvahv8JjdCGJ2p7QDYLnQy5bN5Z02qjc7Q==
dependencies:
- "@algolia/client-common" "4.11.0"
- "@algolia/requester-common" "4.11.0"
- "@algolia/transporter" "4.11.0"
+ "@algolia/client-common" "4.12.1"
+ "@algolia/requester-common" "4.12.1"
+ "@algolia/transporter" "4.12.1"
-"@algolia/client-search@4.11.0":
- version "4.11.0"
- resolved "https://registry.npmmirror.com/@algolia/client-search/download/@algolia/client-search-4.11.0.tgz#c1105d715a2a04ba27231eca86f5d6620f68f4ae"
- integrity sha1-wRBdcVoqBLonIx7KhvXWYg9o9K4=
+"@algolia/client-search@4.12.1":
+ version "4.12.1"
+ resolved "https://registry.npmmirror.com/@algolia/client-search/-/client-search-4.12.1.tgz#fcd7a974be5d39d5c336d7f2e89577ffa66aefdd"
+ integrity sha512-MwwKKprfY6X2nJ5Ki/ccXM2GDEePvVjZnnoOB2io3dLKW4fTqeSRlC5DRXeFD7UM0vOPPHr4ItV2aj19APKNVQ==
dependencies:
- "@algolia/client-common" "4.11.0"
- "@algolia/requester-common" "4.11.0"
- "@algolia/transporter" "4.11.0"
+ "@algolia/client-common" "4.12.1"
+ "@algolia/requester-common" "4.12.1"
+ "@algolia/transporter" "4.12.1"
"@algolia/events@^4.0.1":
version "4.0.1"
- resolved "https://registry.npmmirror.com/@algolia/events/download/@algolia/events-4.0.1.tgz#fd39e7477e7bc703d7f893b556f676c032af3950"
+ resolved "https://registry.npmmirror.com/@algolia/events/-/events-4.0.1.tgz#fd39e7477e7bc703d7f893b556f676c032af3950"
integrity sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ==
-"@algolia/logger-common@4.11.0":
- version "4.11.0"
- resolved "https://registry.npmmirror.com/@algolia/logger-common/download/@algolia/logger-common-4.11.0.tgz#bac1c2d59d29dee378b57412c8edd435b97de663"
- integrity sha1-usHC1Z0p3uN4tXQSyO3UNbl95mM=
+"@algolia/logger-common@4.12.1":
+ version "4.12.1"
+ resolved "https://registry.npmmirror.com/@algolia/logger-common/-/logger-common-4.12.1.tgz#d6501b4d9d242956257ba8e10f6b4bbf6863baa4"
+ integrity sha512-fCgrzlXGATNqdFTxwx0GsyPXK+Uqrx1SZ3iuY2VGPPqdt1a20clAG2n2OcLHJpvaa6vMFPlJyWvbqAgzxdxBlQ==
-"@algolia/logger-console@4.11.0":
- version "4.11.0"
- resolved "https://registry.npmmirror.com/@algolia/logger-console/download/@algolia/logger-console-4.11.0.tgz#ced19e3abb22eb782ed5268d51efb5aa9ef109ef"
- integrity sha1-ztGeOrsi63gu1SaNUe+1qp7xCe8=
+"@algolia/logger-console@4.12.1":
+ version "4.12.1"
+ resolved "https://registry.npmmirror.com/@algolia/logger-console/-/logger-console-4.12.1.tgz#841edd39dd5c5530a69fc66084bfee3254dd0807"
+ integrity sha512-0owaEnq/davngQMYqxLA4KrhWHiXujQ1CU3FFnyUcMyBR7rGHI48zSOUpqnsAXrMBdSH6rH5BDkSUUFwsh8RkQ==
dependencies:
- "@algolia/logger-common" "4.11.0"
+ "@algolia/logger-common" "4.12.1"
-"@algolia/requester-browser-xhr@4.11.0":
- version "4.11.0"
- resolved "https://registry.npmmirror.com/@algolia/requester-browser-xhr/download/@algolia/requester-browser-xhr-4.11.0.tgz#f9e1ad56f185432aa8dde8cad53ae271fd5d6181"
- integrity sha1-+eGtVvGFQyqo3ejK1Tricf1dYYE=
+"@algolia/requester-browser-xhr@4.12.1":
+ version "4.12.1"
+ resolved "https://registry.npmmirror.com/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.12.1.tgz#2d0c18ee188d7cae0e4a930e5e89989e3c4a816b"
+ integrity sha512-OaMxDyG0TZG0oqz1lQh9e3woantAG1bLnuwq3fmypsrQxra4IQZiyn1x+kEb69D2TcXApI5gOgrD4oWhtEVMtw==
dependencies:
- "@algolia/requester-common" "4.11.0"
+ "@algolia/requester-common" "4.12.1"
-"@algolia/requester-common@4.11.0":
- version "4.11.0"
- resolved "https://registry.npmmirror.com/@algolia/requester-common/download/@algolia/requester-common-4.11.0.tgz#d16de98d3ff72434bac39e4d915eab08035946a9"
- integrity sha1-0W3pjT/3JDS6w55NkV6rCANZRqk=
+"@algolia/requester-common@4.12.1":
+ version "4.12.1"
+ resolved "https://registry.npmmirror.com/@algolia/requester-common/-/requester-common-4.12.1.tgz#95bb6539da7199da3e205341cea8f27267f7af29"
+ integrity sha512-XWIrWQNJ1vIrSuL/bUk3ZwNMNxl+aWz6dNboRW6+lGTcMIwc3NBFE90ogbZKhNrFRff8zI4qCF15tjW+Fyhpow==
-"@algolia/requester-node-http@4.11.0":
- version "4.11.0"
- resolved "https://registry.npmmirror.com/@algolia/requester-node-http/download/@algolia/requester-node-http-4.11.0.tgz#beb2b6b68d5f4ce15aec80ede623f0ac96991368"
- integrity sha1-vrK2to1fTOFa7IDt5iPwrJaZE2g=
+"@algolia/requester-node-http@4.12.1":
+ version "4.12.1"
+ resolved "https://registry.npmmirror.com/@algolia/requester-node-http/-/requester-node-http-4.12.1.tgz#c9df97ff1daa7e58c5c2b1f28cf7163005edccb0"
+ integrity sha512-awBtwaD+s0hxkA1aehYn8F0t9wqGoBVWgY4JPHBmp1ChO3pK7RKnnvnv7QQa9vTlllX29oPt/BBVgMo1Z3n1Qg==
dependencies:
- "@algolia/requester-common" "4.11.0"
+ "@algolia/requester-common" "4.12.1"
-"@algolia/transporter@4.11.0":
- version "4.11.0"
- resolved "https://registry.npmmirror.com/@algolia/transporter/download/@algolia/transporter-4.11.0.tgz#a8de3c173093ceceb02b26b577395ce3b3d4b96f"
- integrity sha1-qN48FzCTzs6wKya1dzlc47PUuW8=
+"@algolia/transporter@4.12.1":
+ version "4.12.1"
+ resolved "https://registry.npmmirror.com/@algolia/transporter/-/transporter-4.12.1.tgz#61b9829916c474f42e2d4a6eada0d6c138379945"
+ integrity sha512-BGeNgdEHc6dXIk2g8kdlOoQ6fQ6OIaKQcplEj7HPoi+XZUeAvRi3Pff3QWd7YmybWkjzd9AnTzieTASDWhL+sQ==
dependencies:
- "@algolia/cache-common" "4.11.0"
- "@algolia/logger-common" "4.11.0"
- "@algolia/requester-common" "4.11.0"
+ "@algolia/cache-common" "4.12.1"
+ "@algolia/logger-common" "4.12.1"
+ "@algolia/requester-common" "4.12.1"
+
+"@ampproject/remapping@^2.0.0":
+ version "2.1.0"
+ resolved "https://registry.npmmirror.com/@ampproject/remapping/-/remapping-2.1.0.tgz#72becdf17ee44b2d1ac5651fb12f1952c336fe23"
+ integrity sha512-d5RysTlJ7hmw5Tw4UxgxcY3lkMe92n8sXCcuLPAyIAHK6j8DefDwtGnVVDgOnv+RnEosulDJ9NPKQL27bDId0g==
+ dependencies:
+ "@jridgewell/trace-mapping" "^0.3.0"
"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.8.3":
version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/code-frame/download/@babel/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789"
+ resolved "https://registry.npmmirror.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.13.11", "@babel/compat-data@^7.16.4":
- version "7.16.4"
- resolved "https://registry.npmmirror.com/@babel/compat-data/download/@babel/compat-data-7.16.4.tgz#081d6bbc336ec5c2435c6346b2ae1fb98b5ac68e"
- integrity sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q==
+"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.16.4", "@babel/compat-data@^7.16.8":
+ version "7.17.0"
+ resolved "https://registry.npmmirror.com/@babel/compat-data/-/compat-data-7.17.0.tgz#86850b8597ea6962089770952075dcaabb8dba34"
+ integrity sha512-392byTlpGWXMv4FbyWw3sAZ/FrW/DrwqLGXpy0mbyNe9Taqv1mg9yON5/o0cnr8XYCkFTZbC1eV+c+LAROgrng==
"@babel/core@7.12.9":
version "7.12.9"
- resolved "https://registry.npmmirror.com/@babel/core/download/@babel/core-7.12.9.tgz#fd450c4ec10cdbb980e2928b7aa7a28484593fc8"
+ resolved "https://registry.npmmirror.com/@babel/core/-/core-7.12.9.tgz#fd450c4ec10cdbb980e2928b7aa7a28484593fc8"
integrity sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ==
dependencies:
"@babel/code-frame" "^7.10.4"
@@ -165,45 +172,45 @@
source-map "^0.5.0"
"@babel/core@^7.12.16", "@babel/core@^7.12.3":
- version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/core/download/@babel/core-7.16.7.tgz#db990f931f6d40cb9b87a0dc7d2adc749f1dcbcf"
- integrity sha512-aeLaqcqThRNZYmbMqtulsetOQZ/5gbR/dWruUCJcpas4Qoyy+QeagfDsPdMrqwsPRDNxJvBlRiZxxX7THO7qtA==
+ version "7.17.0"
+ resolved "https://registry.npmmirror.com/@babel/core/-/core-7.17.0.tgz#16b8772b0a567f215839f689c5ded6bb20e864d5"
+ integrity sha512-x/5Ea+RO5MvF9ize5DeVICJoVrNv0Mi2RnIABrZEKYvPEpldXwauPkgvYA17cKa6WpU3LoYvYbuEMFtSNFsarA==
dependencies:
+ "@ampproject/remapping" "^2.0.0"
"@babel/code-frame" "^7.16.7"
- "@babel/generator" "^7.16.7"
+ "@babel/generator" "^7.17.0"
"@babel/helper-compilation-targets" "^7.16.7"
"@babel/helper-module-transforms" "^7.16.7"
- "@babel/helpers" "^7.16.7"
- "@babel/parser" "^7.16.7"
+ "@babel/helpers" "^7.17.0"
+ "@babel/parser" "^7.17.0"
"@babel/template" "^7.16.7"
- "@babel/traverse" "^7.16.7"
- "@babel/types" "^7.16.7"
+ "@babel/traverse" "^7.17.0"
+ "@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"
- source-map "^0.5.0"
-"@babel/generator@^7.12.15", "@babel/generator@^7.12.5", "@babel/generator@^7.16.7":
- version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/generator/download/@babel/generator-7.16.7.tgz#b42bf46a3079fa65e1544135f32e7958f048adbb"
- integrity sha512-/ST3Sg8MLGY5HVYmrjOgL60ENux/HfO/CsUh7y4MalThufhE/Ff/6EibFDHi4jiDCaWfJKoqbE6oTh21c5hrRg==
+"@babel/generator@^7.12.15", "@babel/generator@^7.12.5", "@babel/generator@^7.17.0":
+ version "7.17.0"
+ resolved "https://registry.npmmirror.com/@babel/generator/-/generator-7.17.0.tgz#7bd890ba706cd86d3e2f727322346ffdbf98f65e"
+ integrity sha512-I3Omiv6FGOC29dtlZhkfXO6pgkmukJSlT26QjVvS1DGZe/NzSVCPG41X0tS21oZkJYlovfj9qDWgKP+Cn4bXxw==
dependencies:
- "@babel/types" "^7.16.7"
+ "@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.npmmirror.com/@babel/helper-annotate-as-pure/download/@babel/helper-annotate-as-pure-7.16.7.tgz#bb2339a7534a9c128e3102024c60760a3a7f3862"
+ resolved "https://registry.npmmirror.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-builder-binary-assignment-operator-visitor@^7.16.7":
version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/helper-builder-binary-assignment-operator-visitor/download/@babel/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz#38d138561ea207f0f69eb1626a418e4f7e6a580b"
+ resolved "https://registry.npmmirror.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz#38d138561ea207f0f69eb1626a418e4f7e6a580b"
integrity sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA==
dependencies:
"@babel/helper-explode-assignable-expression" "^7.16.7"
@@ -211,7 +218,7 @@
"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.16.7":
version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/helper-compilation-targets/download/@babel/helper-compilation-targets-7.16.7.tgz#06e66c5f299601e6c7da350049315e83209d551b"
+ resolved "https://registry.npmmirror.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.7.tgz#06e66c5f299601e6c7da350049315e83209d551b"
integrity sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA==
dependencies:
"@babel/compat-data" "^7.16.4"
@@ -219,10 +226,10 @@
browserslist "^4.17.5"
semver "^6.3.0"
-"@babel/helper-create-class-features-plugin@^7.16.7":
- version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/helper-create-class-features-plugin/download/@babel/helper-create-class-features-plugin-7.16.7.tgz#9c5b34b53a01f2097daf10678d65135c1b9f84ba"
- integrity sha512-kIFozAvVfK05DM4EVQYKK+zteWvY85BFdGBRQBytRyY3y+6PX0DkDOn/CZ3lEuczCfrCxEzwt0YtP/87YPTWSw==
+"@babel/helper-create-class-features-plugin@^7.16.10", "@babel/helper-create-class-features-plugin@^7.16.7":
+ version "7.17.1"
+ resolved "https://registry.npmmirror.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.1.tgz#9699f14a88833a7e055ce57dcd3ffdcd25186b21"
+ integrity sha512-JBdSr/LtyYIno/pNnJ75lBcqc3Z1XXujzPanHqjvvrhOA+DTceTFuJi8XjmWTZh4r3fsdfqaCMN0iZemdkxZHQ==
dependencies:
"@babel/helper-annotate-as-pure" "^7.16.7"
"@babel/helper-environment-visitor" "^7.16.7"
@@ -233,17 +240,17 @@
"@babel/helper-split-export-declaration" "^7.16.7"
"@babel/helper-create-regexp-features-plugin@^7.16.7":
- version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/helper-create-regexp-features-plugin/download/@babel/helper-create-regexp-features-plugin-7.16.7.tgz#0cb82b9bac358eb73bfbd73985a776bfa6b14d48"
- integrity sha512-fk5A6ymfp+O5+p2yCkXAu5Kyj6v0xh0RBeNcAkYUMDvvAAoxvSKXn+Jb37t/yWFiQVDFK1ELpUTD8/aLhCPu+g==
+ version "7.17.0"
+ resolved "https://registry.npmmirror.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.0.tgz#1dcc7d40ba0c6b6b25618997c5dbfd310f186fe1"
+ integrity sha512-awO2So99wG6KnlE+TPs6rn83gCz5WlEePJDTnLEqbchMVrBeAujURVphRdigsk094VhvZehFoNOihSlcBjwsXA==
dependencies:
"@babel/helper-annotate-as-pure" "^7.16.7"
- regexpu-core "^4.7.1"
+ regexpu-core "^5.0.1"
-"@babel/helper-define-polyfill-provider@^0.3.0":
- version "0.3.0"
- resolved "https://registry.npmmirror.com/@babel/helper-define-polyfill-provider/download/@babel/helper-define-polyfill-provider-0.3.0.tgz?cache=0&sync_timestamp=1636799847611&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2F%40babel%2Fhelper-define-polyfill-provider%2Fdownload%2F%40babel%2Fhelper-define-polyfill-provider-0.3.0.tgz#c5b10cf4b324ff840140bb07e05b8564af2ae971"
- integrity sha512-7hfT8lUljl/tM3h+izTX/pO3W3frz2ok6Pk+gzys8iJqDfZrZy2pXjRTZAvG2YmfHun1X4q8/UZRLatMfqc5Tg==
+"@babel/helper-define-polyfill-provider@^0.3.1":
+ version "0.3.1"
+ resolved "https://registry.npmmirror.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz#52411b445bdb2e676869e5a74960d2d3826d2665"
+ integrity sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==
dependencies:
"@babel/helper-compilation-targets" "^7.13.0"
"@babel/helper-module-imports" "^7.12.13"
@@ -256,21 +263,21 @@
"@babel/helper-environment-visitor@^7.16.7":
version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/helper-environment-visitor/download/@babel/helper-environment-visitor-7.16.7.tgz#ff484094a839bde9d89cd63cba017d7aae80ecd7"
+ resolved "https://registry.npmmirror.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-explode-assignable-expression@^7.16.7":
version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/helper-explode-assignable-expression/download/@babel/helper-explode-assignable-expression-7.16.7.tgz#12a6d8522fdd834f194e868af6354e8650242b7a"
+ resolved "https://registry.npmmirror.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz#12a6d8522fdd834f194e868af6354e8650242b7a"
integrity sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ==
dependencies:
"@babel/types" "^7.16.7"
"@babel/helper-function-name@^7.16.7":
version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/helper-function-name/download/@babel/helper-function-name-7.16.7.tgz#f1ec51551fb1c8956bc8dd95f38523b6cf375f8f"
+ resolved "https://registry.npmmirror.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"
@@ -279,35 +286,35 @@
"@babel/helper-get-function-arity@^7.16.7":
version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/helper-get-function-arity/download/@babel/helper-get-function-arity-7.16.7.tgz#ea08ac753117a669f1508ba06ebcc49156387419"
+ resolved "https://registry.npmmirror.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.npmmirror.com/@babel/helper-hoist-variables/download/@babel/helper-hoist-variables-7.16.7.tgz#86bcb19a77a509c7b77d0e22323ef588fa58c246"
+ resolved "https://registry.npmmirror.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-member-expression-to-functions@^7.16.7":
version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/helper-member-expression-to-functions/download/@babel/helper-member-expression-to-functions-7.16.7.tgz#42b9ca4b2b200123c3b7e726b0ae5153924905b0"
+ resolved "https://registry.npmmirror.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.7.tgz#42b9ca4b2b200123c3b7e726b0ae5153924905b0"
integrity sha512-VtJ/65tYiU/6AbMTDwyoXGPKHgTsfRarivm+YbB5uAzKUyuPjgZSgAFeG87FCigc7KNHu2Pegh1XIT3lXjvz3Q==
dependencies:
"@babel/types" "^7.16.7"
"@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.16.7":
version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/helper-module-imports/download/@babel/helper-module-imports-7.16.7.tgz#25612a8091a999704461c8a222d0efec5d091437"
+ resolved "https://registry.npmmirror.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.12.1", "@babel/helper-module-transforms@^7.16.7":
version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/helper-module-transforms/download/@babel/helper-module-transforms-7.16.7.tgz#7665faeb721a01ca5327ddc6bba15a5cb34b6a41"
+ resolved "https://registry.npmmirror.com/@babel/helper-module-transforms/-/helper-module-transforms-7.16.7.tgz#7665faeb721a01ca5327ddc6bba15a5cb34b6a41"
integrity sha512-gaqtLDxJEFCeQbYp9aLAefjhkKdjKcdh6DB7jniIGU3Pz52WAmP268zK0VgPz9hUNkMSYeH976K2/Y6yPadpng==
dependencies:
"@babel/helper-environment-visitor" "^7.16.7"
@@ -321,33 +328,33 @@
"@babel/helper-optimise-call-expression@^7.16.7":
version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/helper-optimise-call-expression/download/@babel/helper-optimise-call-expression-7.16.7.tgz#a34e3560605abbd31a18546bd2aad3e6d9a174f2"
+ resolved "https://registry.npmmirror.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz#a34e3560605abbd31a18546bd2aad3e6d9a174f2"
integrity sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==
dependencies:
"@babel/types" "^7.16.7"
"@babel/helper-plugin-utils@7.10.4":
version "7.10.4"
- resolved "https://registry.npmmirror.com/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.10.4.tgz#2f75a831269d4f677de49986dff59927533cf375"
- integrity sha1-L3WoMSadT2d95JmG3/WZJ1M883U=
+ resolved "https://registry.npmmirror.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz#2f75a831269d4f677de49986dff59927533cf375"
+ integrity sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==
"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3":
version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.16.7.tgz#aa3a8ab4c3cceff8e65eb9e73d87dc4ff320b2f5"
+ resolved "https://registry.npmmirror.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz#aa3a8ab4c3cceff8e65eb9e73d87dc4ff320b2f5"
integrity sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==
-"@babel/helper-remap-async-to-generator@^7.16.7":
- version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/helper-remap-async-to-generator/download/@babel/helper-remap-async-to-generator-7.16.7.tgz#5ce2416990d55eb6e099128338848ae8ffa58a9a"
- integrity sha512-C3o117GnP/j/N2OWo+oepeWbFEKRfNaay+F1Eo5Mj3A1SRjyx+qaFhm23nlipub7Cjv2azdUUiDH+VlpdwUFRg==
+"@babel/helper-remap-async-to-generator@^7.16.8":
+ version "7.16.8"
+ resolved "https://registry.npmmirror.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz#29ffaade68a367e2ed09c90901986918d25e57e3"
+ integrity sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw==
dependencies:
"@babel/helper-annotate-as-pure" "^7.16.7"
- "@babel/helper-wrap-function" "^7.16.7"
- "@babel/types" "^7.16.7"
+ "@babel/helper-wrap-function" "^7.16.8"
+ "@babel/types" "^7.16.8"
"@babel/helper-replace-supers@^7.16.7":
version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/helper-replace-supers/download/@babel/helper-replace-supers-7.16.7.tgz#e9f5f5f32ac90429c1a4bdec0f231ef0c2838ab1"
+ resolved "https://registry.npmmirror.com/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz#e9f5f5f32ac90429c1a4bdec0f231ef0c2838ab1"
integrity sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==
dependencies:
"@babel/helper-environment-visitor" "^7.16.7"
@@ -358,96 +365,96 @@
"@babel/helper-simple-access@^7.16.7":
version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/helper-simple-access/download/@babel/helper-simple-access-7.16.7.tgz#d656654b9ea08dbb9659b69d61063ccd343ff0f7"
+ resolved "https://registry.npmmirror.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-skip-transparent-expression-wrappers@^7.16.0":
version "7.16.0"
- resolved "https://registry.npmmirror.com/@babel/helper-skip-transparent-expression-wrappers/download/@babel/helper-skip-transparent-expression-wrappers-7.16.0.tgz?cache=0&sync_timestamp=1635567015488&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2F%40babel%2Fhelper-skip-transparent-expression-wrappers%2Fdownload%2F%40babel%2Fhelper-skip-transparent-expression-wrappers-7.16.0.tgz#0ee3388070147c3ae051e487eca3ebb0e2e8bb09"
- integrity sha1-DuM4gHAUfDrgUeSH7KPrsOLouwk=
+ resolved "https://registry.npmmirror.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz#0ee3388070147c3ae051e487eca3ebb0e2e8bb09"
+ integrity sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==
dependencies:
"@babel/types" "^7.16.0"
"@babel/helper-split-export-declaration@^7.16.7":
version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/helper-split-export-declaration/download/@babel/helper-split-export-declaration-7.16.7.tgz#0b648c0c42da9d3920d85ad585f2778620b8726b"
+ resolved "https://registry.npmmirror.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.npmmirror.com/@babel/helper-validator-identifier/download/@babel/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad"
+ resolved "https://registry.npmmirror.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.npmmirror.com/@babel/helper-validator-option/download/@babel/helper-validator-option-7.16.7.tgz#b203ce62ce5fe153899b617c08957de860de4d23"
+ resolved "https://registry.npmmirror.com/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz#b203ce62ce5fe153899b617c08957de860de4d23"
integrity sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==
-"@babel/helper-wrap-function@^7.16.7":
- version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/helper-wrap-function/download/@babel/helper-wrap-function-7.16.7.tgz#8ddf9eaa770ed43de4bc3687f3f3b0d6d5ecf014"
- integrity sha512-7a9sABeVwcunnztZZ7WTgSw6jVYLzM1wua0Z4HIXm9S3/HC96WKQTkFgGEaj5W06SHHihPJ6Le6HzS5cGOQMNw==
+"@babel/helper-wrap-function@^7.16.8":
+ version "7.16.8"
+ resolved "https://registry.npmmirror.com/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz#58afda087c4cd235de92f7ceedebca2c41274200"
+ integrity sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw==
dependencies:
"@babel/helper-function-name" "^7.16.7"
"@babel/template" "^7.16.7"
- "@babel/traverse" "^7.16.7"
- "@babel/types" "^7.16.7"
+ "@babel/traverse" "^7.16.8"
+ "@babel/types" "^7.16.8"
-"@babel/helpers@^7.12.5", "@babel/helpers@^7.16.7":
- version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/helpers/download/@babel/helpers-7.16.7.tgz#7e3504d708d50344112767c3542fc5e357fffefc"
- integrity sha512-9ZDoqtfY7AuEOt3cxchfii6C7GDyyMBffktR5B2jvWv8u2+efwvpnVKXMWzNehqy68tKgAfSwfdw/lWpthS2bw==
+"@babel/helpers@^7.12.5", "@babel/helpers@^7.17.0":
+ version "7.17.0"
+ resolved "https://registry.npmmirror.com/@babel/helpers/-/helpers-7.17.0.tgz#79cdf6c66a579f3a7b5e739371bc63ca0306886b"
+ integrity sha512-Xe/9NFxjPwELUvW2dsukcMZIp6XwPSbI4ojFBJuX5ramHuVE22SVcZIwqzdWo5uCgeTXW8qV97lMvSOjq+1+nQ==
dependencies:
"@babel/template" "^7.16.7"
- "@babel/traverse" "^7.16.7"
- "@babel/types" "^7.16.7"
+ "@babel/traverse" "^7.17.0"
+ "@babel/types" "^7.17.0"
"@babel/highlight@^7.16.7":
- version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/highlight/download/@babel/highlight-7.16.7.tgz#81a01d7d675046f0d96f82450d9d9578bdfd6b0b"
- integrity sha512-aKpPMfLvGO3Q97V0qhw/V2SWNWlwfJknuwAunU7wZLSfrM4xTBvg7E5opUVi1kJTBKihE38CPg4nBiqX83PWYw==
+ version "7.16.10"
+ resolved "https://registry.npmmirror.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.12.16", "@babel/parser@^7.12.7", "@babel/parser@^7.16.7":
- version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/parser/download/@babel/parser-7.16.7.tgz#d372dda9c89fcec340a82630a9f533f2fe15877e"
- integrity sha512-sR4eaSrnM7BV7QPzGfEX5paG/6wrZM3I0HDzfIAK06ESvo9oy3xBuVBxE3MbQaKNhvg8g/ixjMWo2CGpzpHsDA==
+"@babel/parser@^7.12.16", "@babel/parser@^7.12.7", "@babel/parser@^7.16.7", "@babel/parser@^7.17.0":
+ version "7.17.0"
+ resolved "https://registry.npmmirror.com/@babel/parser/-/parser-7.17.0.tgz#f0ac33eddbe214e4105363bb17c3341c5ffcc43c"
+ integrity sha512-VKXSCQx5D8S04ej+Dqsr1CzYvvWgf20jIw2D+YhQCrIlr2UZGaDds23Y0xg75/skOxpLCRpUZvk/1EAVkGoDOw==
"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.16.7":
version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/download/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.7.tgz#4eda6d6c2a0aa79c70fa7b6da67763dfe2141050"
+ resolved "https://registry.npmmirror.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.7.tgz#4eda6d6c2a0aa79c70fa7b6da67763dfe2141050"
integrity sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg==
dependencies:
"@babel/helper-plugin-utils" "^7.16.7"
"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.16.7":
version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/download/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7.tgz#cc001234dfc139ac45f6bcf801866198c8c72ff9"
+ resolved "https://registry.npmmirror.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7.tgz#cc001234dfc139ac45f6bcf801866198c8c72ff9"
integrity sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw==
dependencies:
"@babel/helper-plugin-utils" "^7.16.7"
"@babel/helper-skip-transparent-expression-wrappers" "^7.16.0"
"@babel/plugin-proposal-optional-chaining" "^7.16.7"
-"@babel/plugin-proposal-async-generator-functions@^7.16.7":
- version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/plugin-proposal-async-generator-functions/download/@babel/plugin-proposal-async-generator-functions-7.16.7.tgz#739adc1212a9e4892de440cd7dfffb06172df78d"
- integrity sha512-TTXBT3A5c11eqRzaC6beO6rlFT3Mo9C2e8eB44tTr52ESXSK2CIc2fOp1ynpAwQA8HhBMho+WXhMHWlAe3xkpw==
+"@babel/plugin-proposal-async-generator-functions@^7.16.8":
+ version "7.16.8"
+ resolved "https://registry.npmmirror.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.8.tgz#3bdd1ebbe620804ea9416706cd67d60787504bc8"
+ integrity sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ==
dependencies:
"@babel/helper-plugin-utils" "^7.16.7"
- "@babel/helper-remap-async-to-generator" "^7.16.7"
+ "@babel/helper-remap-async-to-generator" "^7.16.8"
"@babel/plugin-syntax-async-generators" "^7.8.4"
"@babel/plugin-proposal-class-properties@^7.16.7":
version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/plugin-proposal-class-properties/download/@babel/plugin-proposal-class-properties-7.16.7.tgz#925cad7b3b1a2fcea7e59ecc8eb5954f961f91b0"
+ resolved "https://registry.npmmirror.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz#925cad7b3b1a2fcea7e59ecc8eb5954f961f91b0"
integrity sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww==
dependencies:
"@babel/helper-create-class-features-plugin" "^7.16.7"
@@ -455,7 +462,7 @@
"@babel/plugin-proposal-class-static-block@^7.16.7":
version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/plugin-proposal-class-static-block/download/@babel/plugin-proposal-class-static-block-7.16.7.tgz#712357570b612106ef5426d13dc433ce0f200c2a"
+ resolved "https://registry.npmmirror.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.7.tgz#712357570b612106ef5426d13dc433ce0f200c2a"
integrity sha512-dgqJJrcZoG/4CkMopzhPJjGxsIe9A8RlkQLnL/Vhhx8AA9ZuaRwGSlscSh42hazc7WSrya/IK7mTeoF0DP9tEw==
dependencies:
"@babel/helper-create-class-features-plugin" "^7.16.7"
@@ -464,7 +471,7 @@
"@babel/plugin-proposal-dynamic-import@^7.16.7":
version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/plugin-proposal-dynamic-import/download/@babel/plugin-proposal-dynamic-import-7.16.7.tgz#c19c897eaa46b27634a00fee9fb7d829158704b2"
+ resolved "https://registry.npmmirror.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz#c19c897eaa46b27634a00fee9fb7d829158704b2"
integrity sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==
dependencies:
"@babel/helper-plugin-utils" "^7.16.7"
@@ -472,7 +479,7 @@
"@babel/plugin-proposal-export-namespace-from@^7.16.7":
version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/plugin-proposal-export-namespace-from/download/@babel/plugin-proposal-export-namespace-from-7.16.7.tgz#09de09df18445a5786a305681423ae63507a6163"
+ resolved "https://registry.npmmirror.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz#09de09df18445a5786a305681423ae63507a6163"
integrity sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA==
dependencies:
"@babel/helper-plugin-utils" "^7.16.7"
@@ -480,7 +487,7 @@
"@babel/plugin-proposal-json-strings@^7.16.7":
version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/plugin-proposal-json-strings/download/@babel/plugin-proposal-json-strings-7.16.7.tgz#9732cb1d17d9a2626a08c5be25186c195b6fa6e8"
+ resolved "https://registry.npmmirror.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz#9732cb1d17d9a2626a08c5be25186c195b6fa6e8"
integrity sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ==
dependencies:
"@babel/helper-plugin-utils" "^7.16.7"
@@ -488,7 +495,7 @@
"@babel/plugin-proposal-logical-assignment-operators@^7.16.7":
version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/plugin-proposal-logical-assignment-operators/download/@babel/plugin-proposal-logical-assignment-operators-7.16.7.tgz#be23c0ba74deec1922e639832904be0bea73cdea"
+ resolved "https://registry.npmmirror.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz#be23c0ba74deec1922e639832904be0bea73cdea"
integrity sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg==
dependencies:
"@babel/helper-plugin-utils" "^7.16.7"
@@ -496,7 +503,7 @@
"@babel/plugin-proposal-nullish-coalescing-operator@^7.16.7":
version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/plugin-proposal-nullish-coalescing-operator/download/@babel/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz#141fc20b6857e59459d430c850a0011e36561d99"
+ resolved "https://registry.npmmirror.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz#141fc20b6857e59459d430c850a0011e36561d99"
integrity sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ==
dependencies:
"@babel/helper-plugin-utils" "^7.16.7"
@@ -504,7 +511,7 @@
"@babel/plugin-proposal-numeric-separator@^7.16.7":
version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/plugin-proposal-numeric-separator/download/@babel/plugin-proposal-numeric-separator-7.16.7.tgz#d6b69f4af63fb38b6ca2558442a7fb191236eba9"
+ resolved "https://registry.npmmirror.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz#d6b69f4af63fb38b6ca2558442a7fb191236eba9"
integrity sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==
dependencies:
"@babel/helper-plugin-utils" "^7.16.7"
@@ -512,8 +519,8 @@
"@babel/plugin-proposal-object-rest-spread@7.12.1":
version "7.12.1"
- resolved "https://registry.npmmirror.com/@babel/plugin-proposal-object-rest-spread/download/@babel/plugin-proposal-object-rest-spread-7.12.1.tgz#def9bd03cea0f9b72283dac0ec22d289c7691069"
- integrity sha1-3vm9A86g+bcig9rA7CLSicdpEGk=
+ resolved "https://registry.npmmirror.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz#def9bd03cea0f9b72283dac0ec22d289c7691069"
+ integrity sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==
dependencies:
"@babel/helper-plugin-utils" "^7.10.4"
"@babel/plugin-syntax-object-rest-spread" "^7.8.0"
@@ -521,7 +528,7 @@
"@babel/plugin-proposal-object-rest-spread@^7.16.7":
version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/plugin-proposal-object-rest-spread/download/@babel/plugin-proposal-object-rest-spread-7.16.7.tgz#94593ef1ddf37021a25bdcb5754c4a8d534b01d8"
+ resolved "https://registry.npmmirror.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.7.tgz#94593ef1ddf37021a25bdcb5754c4a8d534b01d8"
integrity sha512-3O0Y4+dw94HA86qSg9IHfyPktgR7q3gpNVAeiKQd+8jBKFaU5NQS1Yatgo4wY+UFNuLjvxcSmzcsHqrhgTyBUA==
dependencies:
"@babel/compat-data" "^7.16.4"
@@ -532,7 +539,7 @@
"@babel/plugin-proposal-optional-catch-binding@^7.16.7":
version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/plugin-proposal-optional-catch-binding/download/@babel/plugin-proposal-optional-catch-binding-7.16.7.tgz#c623a430674ffc4ab732fd0a0ae7722b67cb74cf"
+ resolved "https://registry.npmmirror.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz#c623a430674ffc4ab732fd0a0ae7722b67cb74cf"
integrity sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==
dependencies:
"@babel/helper-plugin-utils" "^7.16.7"
@@ -540,24 +547,24 @@
"@babel/plugin-proposal-optional-chaining@^7.16.7":
version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/plugin-proposal-optional-chaining/download/@babel/plugin-proposal-optional-chaining-7.16.7.tgz#7cd629564724816c0e8a969535551f943c64c39a"
+ resolved "https://registry.npmmirror.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz#7cd629564724816c0e8a969535551f943c64c39a"
integrity sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA==
dependencies:
"@babel/helper-plugin-utils" "^7.16.7"
"@babel/helper-skip-transparent-expression-wrappers" "^7.16.0"
"@babel/plugin-syntax-optional-chaining" "^7.8.3"
-"@babel/plugin-proposal-private-methods@^7.16.7":
- version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/plugin-proposal-private-methods/download/@babel/plugin-proposal-private-methods-7.16.7.tgz#e418e3aa6f86edd6d327ce84eff188e479f571e0"
- integrity sha512-7twV3pzhrRxSwHeIvFE6coPgvo+exNDOiGUMg39o2LiLo1Y+4aKpfkcLGcg1UHonzorCt7SNXnoMyCnnIOA8Sw==
+"@babel/plugin-proposal-private-methods@^7.16.11":
+ version "7.16.11"
+ resolved "https://registry.npmmirror.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.11.tgz#e8df108288555ff259f4527dbe84813aac3a1c50"
+ integrity sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw==
dependencies:
- "@babel/helper-create-class-features-plugin" "^7.16.7"
+ "@babel/helper-create-class-features-plugin" "^7.16.10"
"@babel/helper-plugin-utils" "^7.16.7"
"@babel/plugin-proposal-private-property-in-object@^7.16.7":
version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/plugin-proposal-private-property-in-object/download/@babel/plugin-proposal-private-property-in-object-7.16.7.tgz#b0b8cef543c2c3d57e59e2c611994861d46a3fce"
+ resolved "https://registry.npmmirror.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz#b0b8cef543c2c3d57e59e2c611994861d46a3fce"
integrity sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ==
dependencies:
"@babel/helper-annotate-as-pure" "^7.16.7"
@@ -567,7 +574,7 @@
"@babel/plugin-proposal-unicode-property-regex@^7.16.7", "@babel/plugin-proposal-unicode-property-regex@^7.4.4":
version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/plugin-proposal-unicode-property-regex/download/@babel/plugin-proposal-unicode-property-regex-7.16.7.tgz#635d18eb10c6214210ffc5ff4932552de08188a2"
+ resolved "https://registry.npmmirror.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz#635d18eb10c6214210ffc5ff4932552de08188a2"
integrity sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg==
dependencies:
"@babel/helper-create-regexp-features-plugin" "^7.16.7"
@@ -575,156 +582,156 @@
"@babel/plugin-syntax-async-generators@^7.8.4":
version "7.8.4"
- resolved "https://registry.nlark.com/@babel/plugin-syntax-async-generators/download/@babel/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d"
- integrity sha1-qYP7Gusuw/btBCohD2QOkOeG/g0=
+ resolved "https://registry.npmmirror.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d"
+ integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==
dependencies:
"@babel/helper-plugin-utils" "^7.8.0"
"@babel/plugin-syntax-class-properties@^7.12.13":
version "7.12.13"
- resolved "https://registry.nlark.com/@babel/plugin-syntax-class-properties/download/@babel/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10"
- integrity sha1-tcmHJ0xKOoK4lxR5aTGmtTVErhA=
+ resolved "https://registry.npmmirror.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10"
+ integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==
dependencies:
"@babel/helper-plugin-utils" "^7.12.13"
"@babel/plugin-syntax-class-static-block@^7.14.5":
version "7.14.5"
- resolved "https://registry.nlark.com/@babel/plugin-syntax-class-static-block/download/@babel/plugin-syntax-class-static-block-7.14.5.tgz?cache=0&sync_timestamp=1623281106862&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fplugin-syntax-class-static-block%2Fdownload%2F%40babel%2Fplugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406"
- integrity sha1-GV34mxRrS3izv4l/16JXyEZZ1AY=
+ resolved "https://registry.npmmirror.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406"
+ integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==
dependencies:
"@babel/helper-plugin-utils" "^7.14.5"
"@babel/plugin-syntax-dynamic-import@^7.8.3":
version "7.8.3"
- resolved "https://registry.nlark.com/@babel/plugin-syntax-dynamic-import/download/@babel/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3"
- integrity sha1-Yr+Ysto80h1iYVT8lu5bPLaOrLM=
+ resolved "https://registry.npmmirror.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3"
+ integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==
dependencies:
"@babel/helper-plugin-utils" "^7.8.0"
"@babel/plugin-syntax-export-namespace-from@^7.8.3":
version "7.8.3"
- resolved "https://registry.nlark.com/@babel/plugin-syntax-export-namespace-from/download/@babel/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a"
- integrity sha1-AolkqbqA28CUyRXEh618TnpmRlo=
+ resolved "https://registry.npmmirror.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a"
+ integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==
dependencies:
"@babel/helper-plugin-utils" "^7.8.3"
"@babel/plugin-syntax-json-strings@^7.8.3":
version "7.8.3"
- resolved "https://registry.nlark.com/@babel/plugin-syntax-json-strings/download/@babel/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a"
- integrity sha1-AcohtmjNghjJ5kDLbdiMVBKyyWo=
+ resolved "https://registry.npmmirror.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a"
+ integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==
dependencies:
"@babel/helper-plugin-utils" "^7.8.0"
"@babel/plugin-syntax-jsx@7.12.1":
version "7.12.1"
- resolved "https://registry.npmmirror.com/@babel/plugin-syntax-jsx/download/@babel/plugin-syntax-jsx-7.12.1.tgz#9d9d357cc818aa7ae7935917c1257f67677a0926"
- integrity sha1-nZ01fMgYqnrnk1kXwSV/Z2d6CSY=
+ resolved "https://registry.npmmirror.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.1.tgz#9d9d357cc818aa7ae7935917c1257f67677a0926"
+ integrity sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg==
dependencies:
"@babel/helper-plugin-utils" "^7.10.4"
"@babel/plugin-syntax-jsx@^7.16.7":
version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/plugin-syntax-jsx/download/@babel/plugin-syntax-jsx-7.16.7.tgz#50b6571d13f764266a113d77c82b4a6508bbe665"
+ resolved "https://registry.npmmirror.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-syntax-logical-assignment-operators@^7.10.4":
version "7.10.4"
- resolved "https://registry.nlark.com/@babel/plugin-syntax-logical-assignment-operators/download/@babel/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699"
- integrity sha1-ypHvRjA1MESLkGZSusLp/plB9pk=
+ resolved "https://registry.npmmirror.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699"
+ integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==
dependencies:
"@babel/helper-plugin-utils" "^7.10.4"
"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3":
version "7.8.3"
- resolved "https://registry.nlark.com/@babel/plugin-syntax-nullish-coalescing-operator/download/@babel/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9"
- integrity sha1-Fn7XA2iIYIH3S1w2xlqIwDtm0ak=
+ resolved "https://registry.npmmirror.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9"
+ integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==
dependencies:
"@babel/helper-plugin-utils" "^7.8.0"
"@babel/plugin-syntax-numeric-separator@^7.10.4":
version "7.10.4"
- resolved "https://registry.npmmirror.com/@babel/plugin-syntax-numeric-separator/download/@babel/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97"
- integrity sha1-ubBws+M1cM2f0Hun+pHA3Te5r5c=
+ resolved "https://registry.npmmirror.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97"
+ integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==
dependencies:
"@babel/helper-plugin-utils" "^7.10.4"
"@babel/plugin-syntax-object-rest-spread@7.8.3", "@babel/plugin-syntax-object-rest-spread@^7.8.0", "@babel/plugin-syntax-object-rest-spread@^7.8.3":
version "7.8.3"
- resolved "https://registry.nlark.com/@babel/plugin-syntax-object-rest-spread/download/@babel/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871"
- integrity sha1-YOIl7cvZimQDMqLnLdPmbxr1WHE=
+ resolved "https://registry.npmmirror.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871"
+ integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==
dependencies:
"@babel/helper-plugin-utils" "^7.8.0"
"@babel/plugin-syntax-optional-catch-binding@^7.8.3":
version "7.8.3"
- resolved "https://registry.nlark.com/@babel/plugin-syntax-optional-catch-binding/download/@babel/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1"
- integrity sha1-YRGiZbz7Ag6579D9/X0mQCue1sE=
+ resolved "https://registry.npmmirror.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1"
+ integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==
dependencies:
"@babel/helper-plugin-utils" "^7.8.0"
"@babel/plugin-syntax-optional-chaining@^7.8.3":
version "7.8.3"
- resolved "https://registry.nlark.com/@babel/plugin-syntax-optional-chaining/download/@babel/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a"
- integrity sha1-T2nCq5UWfgGAzVM2YT+MV4j31Io=
+ resolved "https://registry.npmmirror.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a"
+ integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==
dependencies:
"@babel/helper-plugin-utils" "^7.8.0"
"@babel/plugin-syntax-private-property-in-object@^7.14.5":
version "7.14.5"
- resolved "https://registry.nlark.com/@babel/plugin-syntax-private-property-in-object/download/@babel/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad"
- integrity sha1-DcZnHsDqIrbpShEU+FeXDNOd4a0=
+ resolved "https://registry.npmmirror.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad"
+ integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==
dependencies:
"@babel/helper-plugin-utils" "^7.14.5"
"@babel/plugin-syntax-top-level-await@^7.14.5":
version "7.14.5"
- resolved "https://registry.nlark.com/@babel/plugin-syntax-top-level-await/download/@babel/plugin-syntax-top-level-await-7.14.5.tgz?cache=0&sync_timestamp=1623281110076&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fplugin-syntax-top-level-await%2Fdownload%2F%40babel%2Fplugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c"
- integrity sha1-wc/a3DWmRiQAAfBhOCR7dBw02Uw=
+ resolved "https://registry.npmmirror.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c"
+ integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==
dependencies:
"@babel/helper-plugin-utils" "^7.14.5"
"@babel/plugin-syntax-typescript@^7.16.7":
version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/plugin-syntax-typescript/download/@babel/plugin-syntax-typescript-7.16.7.tgz#39c9b55ee153151990fb038651d58d3fd03f98f8"
+ resolved "https://registry.npmmirror.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.7.tgz#39c9b55ee153151990fb038651d58d3fd03f98f8"
integrity sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A==
dependencies:
"@babel/helper-plugin-utils" "^7.16.7"
"@babel/plugin-transform-arrow-functions@^7.16.7":
version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/plugin-transform-arrow-functions/download/@babel/plugin-transform-arrow-functions-7.16.7.tgz#44125e653d94b98db76369de9c396dc14bef4154"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz#44125e653d94b98db76369de9c396dc14bef4154"
integrity sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ==
dependencies:
"@babel/helper-plugin-utils" "^7.16.7"
-"@babel/plugin-transform-async-to-generator@^7.16.7":
- version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/plugin-transform-async-to-generator/download/@babel/plugin-transform-async-to-generator-7.16.7.tgz#646e1262ac341b587ff5449844d4492dbb10ac4b"
- integrity sha512-pFEfjnK4DfXCfAlA5I98BYdDJD8NltMzx19gt6DAmfE+2lXRfPUoa0/5SUjT4+TDE1W/rcxU/1lgN55vpAjjdg==
+"@babel/plugin-transform-async-to-generator@^7.16.8":
+ version "7.16.8"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.8.tgz#b83dff4b970cf41f1b819f8b49cc0cfbaa53a808"
+ integrity sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg==
dependencies:
"@babel/helper-module-imports" "^7.16.7"
"@babel/helper-plugin-utils" "^7.16.7"
- "@babel/helper-remap-async-to-generator" "^7.16.7"
+ "@babel/helper-remap-async-to-generator" "^7.16.8"
"@babel/plugin-transform-block-scoped-functions@^7.16.7":
version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/plugin-transform-block-scoped-functions/download/@babel/plugin-transform-block-scoped-functions-7.16.7.tgz#4d0d57d9632ef6062cdf354bb717102ee042a620"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz#4d0d57d9632ef6062cdf354bb717102ee042a620"
integrity sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==
dependencies:
"@babel/helper-plugin-utils" "^7.16.7"
"@babel/plugin-transform-block-scoping@^7.16.7":
version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/plugin-transform-block-scoping/download/@babel/plugin-transform-block-scoping-7.16.7.tgz#f50664ab99ddeaee5bc681b8f3a6ea9d72ab4f87"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz#f50664ab99ddeaee5bc681b8f3a6ea9d72ab4f87"
integrity sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ==
dependencies:
"@babel/helper-plugin-utils" "^7.16.7"
"@babel/plugin-transform-classes@^7.16.7":
version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/plugin-transform-classes/download/@babel/plugin-transform-classes-7.16.7.tgz#8f4b9562850cd973de3b498f1218796eb181ce00"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz#8f4b9562850cd973de3b498f1218796eb181ce00"
integrity sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ==
dependencies:
"@babel/helper-annotate-as-pure" "^7.16.7"
@@ -738,21 +745,21 @@
"@babel/plugin-transform-computed-properties@^7.16.7":
version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/plugin-transform-computed-properties/download/@babel/plugin-transform-computed-properties-7.16.7.tgz#66dee12e46f61d2aae7a73710f591eb3df616470"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz#66dee12e46f61d2aae7a73710f591eb3df616470"
integrity sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw==
dependencies:
"@babel/helper-plugin-utils" "^7.16.7"
"@babel/plugin-transform-destructuring@^7.16.7":
version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/plugin-transform-destructuring/download/@babel/plugin-transform-destructuring-7.16.7.tgz#ca9588ae2d63978a4c29d3f33282d8603f618e23"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.7.tgz#ca9588ae2d63978a4c29d3f33282d8603f618e23"
integrity sha512-VqAwhTHBnu5xBVDCvrvqJbtLUa++qZaWC0Fgr2mqokBlulZARGyIvZDoqbPlPaKImQ9dKAcCzbv+ul//uqu70A==
dependencies:
"@babel/helper-plugin-utils" "^7.16.7"
"@babel/plugin-transform-dotall-regex@^7.16.7", "@babel/plugin-transform-dotall-regex@^7.4.4":
version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/plugin-transform-dotall-regex/download/@babel/plugin-transform-dotall-regex-7.16.7.tgz#6b2d67686fab15fb6a7fd4bd895d5982cfc81241"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz#6b2d67686fab15fb6a7fd4bd895d5982cfc81241"
integrity sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==
dependencies:
"@babel/helper-create-regexp-features-plugin" "^7.16.7"
@@ -760,14 +767,14 @@
"@babel/plugin-transform-duplicate-keys@^7.16.7":
version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/plugin-transform-duplicate-keys/download/@babel/plugin-transform-duplicate-keys-7.16.7.tgz#2207e9ca8f82a0d36a5a67b6536e7ef8b08823c9"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz#2207e9ca8f82a0d36a5a67b6536e7ef8b08823c9"
integrity sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw==
dependencies:
"@babel/helper-plugin-utils" "^7.16.7"
"@babel/plugin-transform-exponentiation-operator@^7.16.7":
version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/plugin-transform-exponentiation-operator/download/@babel/plugin-transform-exponentiation-operator-7.16.7.tgz#efa9862ef97e9e9e5f653f6ddc7b665e8536fe9b"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz#efa9862ef97e9e9e5f653f6ddc7b665e8536fe9b"
integrity sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==
dependencies:
"@babel/helper-builder-binary-assignment-operator-visitor" "^7.16.7"
@@ -775,14 +782,14 @@
"@babel/plugin-transform-for-of@^7.16.7":
version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/plugin-transform-for-of/download/@babel/plugin-transform-for-of-7.16.7.tgz#649d639d4617dff502a9a158c479b3b556728d8c"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz#649d639d4617dff502a9a158c479b3b556728d8c"
integrity sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg==
dependencies:
"@babel/helper-plugin-utils" "^7.16.7"
"@babel/plugin-transform-function-name@^7.16.7":
version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/plugin-transform-function-name/download/@babel/plugin-transform-function-name-7.16.7.tgz#5ab34375c64d61d083d7d2f05c38d90b97ec65cf"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz#5ab34375c64d61d083d7d2f05c38d90b97ec65cf"
integrity sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==
dependencies:
"@babel/helper-compilation-targets" "^7.16.7"
@@ -791,31 +798,31 @@
"@babel/plugin-transform-literals@^7.16.7":
version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/plugin-transform-literals/download/@babel/plugin-transform-literals-7.16.7.tgz#254c9618c5ff749e87cb0c0cef1a0a050c0bdab1"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz#254c9618c5ff749e87cb0c0cef1a0a050c0bdab1"
integrity sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ==
dependencies:
"@babel/helper-plugin-utils" "^7.16.7"
"@babel/plugin-transform-member-expression-literals@^7.16.7":
version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/plugin-transform-member-expression-literals/download/@babel/plugin-transform-member-expression-literals-7.16.7.tgz#6e5dcf906ef8a098e630149d14c867dd28f92384"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz#6e5dcf906ef8a098e630149d14c867dd28f92384"
integrity sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw==
dependencies:
"@babel/helper-plugin-utils" "^7.16.7"
"@babel/plugin-transform-modules-amd@^7.16.7":
version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/plugin-transform-modules-amd/download/@babel/plugin-transform-modules-amd-7.16.7.tgz#b28d323016a7daaae8609781d1f8c9da42b13186"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.7.tgz#b28d323016a7daaae8609781d1f8c9da42b13186"
integrity sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g==
dependencies:
"@babel/helper-module-transforms" "^7.16.7"
"@babel/helper-plugin-utils" "^7.16.7"
babel-plugin-dynamic-import-node "^2.3.3"
-"@babel/plugin-transform-modules-commonjs@^7.16.7":
- version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/plugin-transform-modules-commonjs/download/@babel/plugin-transform-modules-commonjs-7.16.7.tgz#fd119e6a433c527d368425b45df361e1e95d3c1a"
- integrity sha512-h2RP2kE7He1ZWKyAlanMZrAbdv+Acw1pA8dQZhE025WJZE2z0xzFADAinXA9fxd5bn7JnM+SdOGcndGx1ARs9w==
+"@babel/plugin-transform-modules-commonjs@^7.16.8":
+ version "7.16.8"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.8.tgz#cdee19aae887b16b9d331009aa9a219af7c86afe"
+ integrity sha512-oflKPvsLT2+uKQopesJt3ApiaIS2HW+hzHFcwRNtyDGieAeC/dIHZX8buJQ2J2X1rxGPy4eRcUijm3qcSPjYcA==
dependencies:
"@babel/helper-module-transforms" "^7.16.7"
"@babel/helper-plugin-utils" "^7.16.7"
@@ -824,7 +831,7 @@
"@babel/plugin-transform-modules-systemjs@^7.16.7":
version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/plugin-transform-modules-systemjs/download/@babel/plugin-transform-modules-systemjs-7.16.7.tgz#887cefaef88e684d29558c2b13ee0563e287c2d7"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.7.tgz#887cefaef88e684d29558c2b13ee0563e287c2d7"
integrity sha512-DuK5E3k+QQmnOqBR9UkusByy5WZWGRxfzV529s9nPra1GE7olmxfqO2FHobEOYSPIjPBTr4p66YDcjQnt8cBmw==
dependencies:
"@babel/helper-hoist-variables" "^7.16.7"
@@ -835,29 +842,29 @@
"@babel/plugin-transform-modules-umd@^7.16.7":
version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/plugin-transform-modules-umd/download/@babel/plugin-transform-modules-umd-7.16.7.tgz#23dad479fa585283dbd22215bff12719171e7618"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz#23dad479fa585283dbd22215bff12719171e7618"
integrity sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ==
dependencies:
"@babel/helper-module-transforms" "^7.16.7"
"@babel/helper-plugin-utils" "^7.16.7"
-"@babel/plugin-transform-named-capturing-groups-regex@^7.16.7":
- version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/plugin-transform-named-capturing-groups-regex/download/@babel/plugin-transform-named-capturing-groups-regex-7.16.7.tgz#749d90d94e73cf62c60a0cc8d6b94d29305a81f2"
- integrity sha512-kFy35VwmwIQwCjwrAQhl3+c/kr292i4KdLPKp5lPH03Ltc51qnFlIADoyPxc/6Naz3ok3WdYKg+KK6AH+D4utg==
+"@babel/plugin-transform-named-capturing-groups-regex@^7.16.8":
+ version "7.16.8"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.8.tgz#7f860e0e40d844a02c9dcf9d84965e7dfd666252"
+ integrity sha512-j3Jw+n5PvpmhRR+mrgIh04puSANCk/T/UA3m3P1MjJkhlK906+ApHhDIqBQDdOgL/r1UYpz4GNclTXxyZrYGSw==
dependencies:
"@babel/helper-create-regexp-features-plugin" "^7.16.7"
"@babel/plugin-transform-new-target@^7.16.7":
version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/plugin-transform-new-target/download/@babel/plugin-transform-new-target-7.16.7.tgz#9967d89a5c243818e0800fdad89db22c5f514244"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz#9967d89a5c243818e0800fdad89db22c5f514244"
integrity sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg==
dependencies:
"@babel/helper-plugin-utils" "^7.16.7"
"@babel/plugin-transform-object-super@^7.16.7":
version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/plugin-transform-object-super/download/@babel/plugin-transform-object-super-7.16.7.tgz#ac359cf8d32cf4354d27a46867999490b6c32a94"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz#ac359cf8d32cf4354d27a46867999490b6c32a94"
integrity sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==
dependencies:
"@babel/helper-plugin-utils" "^7.16.7"
@@ -865,42 +872,42 @@
"@babel/plugin-transform-parameters@^7.12.1", "@babel/plugin-transform-parameters@^7.16.7":
version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/plugin-transform-parameters/download/@babel/plugin-transform-parameters-7.16.7.tgz#a1721f55b99b736511cb7e0152f61f17688f331f"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz#a1721f55b99b736511cb7e0152f61f17688f331f"
integrity sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw==
dependencies:
"@babel/helper-plugin-utils" "^7.16.7"
"@babel/plugin-transform-property-literals@^7.16.7":
version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/plugin-transform-property-literals/download/@babel/plugin-transform-property-literals-7.16.7.tgz#2dadac85155436f22c696c4827730e0fe1057a55"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz#2dadac85155436f22c696c4827730e0fe1057a55"
integrity sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw==
dependencies:
"@babel/helper-plugin-utils" "^7.16.7"
"@babel/plugin-transform-react-constant-elements@^7.12.1":
version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/plugin-transform-react-constant-elements/download/@babel/plugin-transform-react-constant-elements-7.16.7.tgz#19e9e4c2df2f6c3e6b3aea11778297d81db8df62"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.16.7.tgz#19e9e4c2df2f6c3e6b3aea11778297d81db8df62"
integrity sha512-lF+cfsyTgwWkcw715J88JhMYJ5GpysYNLhLP1PkvkhTRN7B3e74R/1KsDxFxhRpSn0UUD3IWM4GvdBR2PEbbQQ==
dependencies:
"@babel/helper-plugin-utils" "^7.16.7"
"@babel/plugin-transform-react-display-name@^7.16.7":
version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/plugin-transform-react-display-name/download/@babel/plugin-transform-react-display-name-7.16.7.tgz#7b6d40d232f4c0f550ea348593db3b21e2404340"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.16.7.tgz#7b6d40d232f4c0f550ea348593db3b21e2404340"
integrity sha512-qgIg8BcZgd0G/Cz916D5+9kqX0c7nPZyXaP8R2tLNN5tkyIZdG5fEwBrxwplzSnjC1jvQmyMNVwUCZPcbGY7Pg==
dependencies:
"@babel/helper-plugin-utils" "^7.16.7"
"@babel/plugin-transform-react-jsx-development@^7.16.7":
version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/plugin-transform-react-jsx-development/download/@babel/plugin-transform-react-jsx-development-7.16.7.tgz#43a00724a3ed2557ed3f276a01a929e6686ac7b8"
+ resolved "https://registry.npmmirror.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@^7.16.7":
version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/plugin-transform-react-jsx/download/@babel/plugin-transform-react-jsx-7.16.7.tgz#86a6a220552afd0e4e1f0388a68a372be7add0d4"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.16.7.tgz#86a6a220552afd0e4e1f0388a68a372be7add0d4"
integrity sha512-8D16ye66fxiE8m890w0BpPpngG9o9OVBBy0gH2E+2AR7qMR2ZpTYJEqLxAsoroenMId0p/wMW+Blc0meDgu0Ag==
dependencies:
"@babel/helper-annotate-as-pure" "^7.16.7"
@@ -911,7 +918,7 @@
"@babel/plugin-transform-react-pure-annotations@^7.16.7":
version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/plugin-transform-react-pure-annotations/download/@babel/plugin-transform-react-pure-annotations-7.16.7.tgz#232bfd2f12eb551d6d7d01d13fe3f86b45eb9c67"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.16.7.tgz#232bfd2f12eb551d6d7d01d13fe3f86b45eb9c67"
integrity sha512-hs71ToC97k3QWxswh2ElzMFABXHvGiJ01IB1TbYQDGeWRKWz/MPUTh5jGExdHvosYKpnJW5Pm3S4+TA3FyX+GA==
dependencies:
"@babel/helper-annotate-as-pure" "^7.16.7"
@@ -919,40 +926,40 @@
"@babel/plugin-transform-regenerator@^7.16.7":
version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/plugin-transform-regenerator/download/@babel/plugin-transform-regenerator-7.16.7.tgz#9e7576dc476cb89ccc5096fff7af659243b4adeb"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.7.tgz#9e7576dc476cb89ccc5096fff7af659243b4adeb"
integrity sha512-mF7jOgGYCkSJagJ6XCujSQg+6xC1M77/03K2oBmVJWoFGNUtnVJO4WHKJk3dnPC8HCcj4xBQP1Egm8DWh3Pb3Q==
dependencies:
regenerator-transform "^0.14.2"
"@babel/plugin-transform-reserved-words@^7.16.7":
version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/plugin-transform-reserved-words/download/@babel/plugin-transform-reserved-words-7.16.7.tgz#1d798e078f7c5958eec952059c460b220a63f586"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.7.tgz#1d798e078f7c5958eec952059c460b220a63f586"
integrity sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg==
dependencies:
"@babel/helper-plugin-utils" "^7.16.7"
"@babel/plugin-transform-runtime@^7.15.0":
- version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/plugin-transform-runtime/download/@babel/plugin-transform-runtime-7.16.7.tgz#1da184cb83a2287a01956c10c60e66dd503c18aa"
- integrity sha512-2FoHiSAWkdq4L06uaDN3rS43i6x28desUVxq+zAFuE6kbWYQeiLPJI5IC7Sg9xKYVcrBKSQkVUfH6aeQYbl9QA==
+ version "7.17.0"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.17.0.tgz#0a2e08b5e2b2d95c4b1d3b3371a2180617455b70"
+ integrity sha512-fr7zPWnKXNc1xoHfrIU9mN/4XKX4VLZ45Q+oMhfsYIaHvg7mHgmhfOy/ckRWqDK7XF3QDigRpkh5DKq6+clE8A==
dependencies:
"@babel/helper-module-imports" "^7.16.7"
"@babel/helper-plugin-utils" "^7.16.7"
babel-plugin-polyfill-corejs2 "^0.3.0"
- babel-plugin-polyfill-corejs3 "^0.4.0"
+ babel-plugin-polyfill-corejs3 "^0.5.0"
babel-plugin-polyfill-regenerator "^0.3.0"
semver "^6.3.0"
"@babel/plugin-transform-shorthand-properties@^7.16.7":
version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/plugin-transform-shorthand-properties/download/@babel/plugin-transform-shorthand-properties-7.16.7.tgz#e8549ae4afcf8382f711794c0c7b6b934c5fbd2a"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz#e8549ae4afcf8382f711794c0c7b6b934c5fbd2a"
integrity sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==
dependencies:
"@babel/helper-plugin-utils" "^7.16.7"
"@babel/plugin-transform-spread@^7.16.7":
version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/plugin-transform-spread/download/@babel/plugin-transform-spread-7.16.7.tgz#a303e2122f9f12e0105daeedd0f30fb197d8ff44"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz#a303e2122f9f12e0105daeedd0f30fb197d8ff44"
integrity sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg==
dependencies:
"@babel/helper-plugin-utils" "^7.16.7"
@@ -960,29 +967,29 @@
"@babel/plugin-transform-sticky-regex@^7.16.7":
version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/plugin-transform-sticky-regex/download/@babel/plugin-transform-sticky-regex-7.16.7.tgz#c84741d4f4a38072b9a1e2e3fd56d359552e8660"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz#c84741d4f4a38072b9a1e2e3fd56d359552e8660"
integrity sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==
dependencies:
"@babel/helper-plugin-utils" "^7.16.7"
"@babel/plugin-transform-template-literals@^7.16.7":
version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/plugin-transform-template-literals/download/@babel/plugin-transform-template-literals-7.16.7.tgz#f3d1c45d28967c8e80f53666fc9c3e50618217ab"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz#f3d1c45d28967c8e80f53666fc9c3e50618217ab"
integrity sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA==
dependencies:
"@babel/helper-plugin-utils" "^7.16.7"
"@babel/plugin-transform-typeof-symbol@^7.16.7":
version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/plugin-transform-typeof-symbol/download/@babel/plugin-transform-typeof-symbol-7.16.7.tgz#9cdbe622582c21368bd482b660ba87d5545d4f7e"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz#9cdbe622582c21368bd482b660ba87d5545d4f7e"
integrity sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ==
dependencies:
"@babel/helper-plugin-utils" "^7.16.7"
"@babel/plugin-transform-typescript@^7.16.7":
- version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/plugin-transform-typescript/download/@babel/plugin-transform-typescript-7.16.7.tgz#33f8c2c890fbfdc4ef82446e9abb8de8211a3ff3"
- integrity sha512-Hzx1lvBtOCWuCEwMmYOfpQpO7joFeXLgoPuzZZBtTxXqSqUGUubvFGZv2ygo1tB5Bp9q6PXV3H0E/kf7KM0RLA==
+ version "7.16.8"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.16.8.tgz#591ce9b6b83504903fa9dd3652c357c2ba7a1ee0"
+ integrity sha512-bHdQ9k7YpBDO2d0NVfkj51DpQcvwIzIusJ7mEUaMlbZq3Kt/U47j24inXZHQ5MDiYpCs+oZiwnXyKedE8+q7AQ==
dependencies:
"@babel/helper-create-class-features-plugin" "^7.16.7"
"@babel/helper-plugin-utils" "^7.16.7"
@@ -990,31 +997,31 @@
"@babel/plugin-transform-unicode-escapes@^7.16.7":
version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/plugin-transform-unicode-escapes/download/@babel/plugin-transform-unicode-escapes-7.16.7.tgz#da8717de7b3287a2c6d659750c964f302b31ece3"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz#da8717de7b3287a2c6d659750c964f302b31ece3"
integrity sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q==
dependencies:
"@babel/helper-plugin-utils" "^7.16.7"
"@babel/plugin-transform-unicode-regex@^7.16.7":
version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/plugin-transform-unicode-regex/download/@babel/plugin-transform-unicode-regex-7.16.7.tgz#0f7aa4a501198976e25e82702574c34cfebe9ef2"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz#0f7aa4a501198976e25e82702574c34cfebe9ef2"
integrity sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==
dependencies:
"@babel/helper-create-regexp-features-plugin" "^7.16.7"
"@babel/helper-plugin-utils" "^7.16.7"
"@babel/preset-env@^7.12.1", "@babel/preset-env@^7.15.6":
- version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/preset-env/download/@babel/preset-env-7.16.7.tgz#c491088856d0b3177822a2bf06cb74d76327aa56"
- integrity sha512-urX3Cee4aOZbRWOSa3mKPk0aqDikfILuo+C7qq7HY0InylGNZ1fekq9jmlr3pLWwZHF4yD7heQooc2Pow2KMyQ==
+ version "7.16.11"
+ resolved "https://registry.npmmirror.com/@babel/preset-env/-/preset-env-7.16.11.tgz#5dd88fd885fae36f88fd7c8342475c9f0abe2982"
+ integrity sha512-qcmWG8R7ZW6WBRPZK//y+E3Cli151B20W1Rv7ln27vuPaXU/8TKms6jFdiJtF7UDTxcrb7mZd88tAeK9LjdT8g==
dependencies:
- "@babel/compat-data" "^7.16.4"
+ "@babel/compat-data" "^7.16.8"
"@babel/helper-compilation-targets" "^7.16.7"
"@babel/helper-plugin-utils" "^7.16.7"
"@babel/helper-validator-option" "^7.16.7"
"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.16.7"
"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.16.7"
- "@babel/plugin-proposal-async-generator-functions" "^7.16.7"
+ "@babel/plugin-proposal-async-generator-functions" "^7.16.8"
"@babel/plugin-proposal-class-properties" "^7.16.7"
"@babel/plugin-proposal-class-static-block" "^7.16.7"
"@babel/plugin-proposal-dynamic-import" "^7.16.7"
@@ -1026,7 +1033,7 @@
"@babel/plugin-proposal-object-rest-spread" "^7.16.7"
"@babel/plugin-proposal-optional-catch-binding" "^7.16.7"
"@babel/plugin-proposal-optional-chaining" "^7.16.7"
- "@babel/plugin-proposal-private-methods" "^7.16.7"
+ "@babel/plugin-proposal-private-methods" "^7.16.11"
"@babel/plugin-proposal-private-property-in-object" "^7.16.7"
"@babel/plugin-proposal-unicode-property-regex" "^7.16.7"
"@babel/plugin-syntax-async-generators" "^7.8.4"
@@ -1044,7 +1051,7 @@
"@babel/plugin-syntax-private-property-in-object" "^7.14.5"
"@babel/plugin-syntax-top-level-await" "^7.14.5"
"@babel/plugin-transform-arrow-functions" "^7.16.7"
- "@babel/plugin-transform-async-to-generator" "^7.16.7"
+ "@babel/plugin-transform-async-to-generator" "^7.16.8"
"@babel/plugin-transform-block-scoped-functions" "^7.16.7"
"@babel/plugin-transform-block-scoping" "^7.16.7"
"@babel/plugin-transform-classes" "^7.16.7"
@@ -1058,10 +1065,10 @@
"@babel/plugin-transform-literals" "^7.16.7"
"@babel/plugin-transform-member-expression-literals" "^7.16.7"
"@babel/plugin-transform-modules-amd" "^7.16.7"
- "@babel/plugin-transform-modules-commonjs" "^7.16.7"
+ "@babel/plugin-transform-modules-commonjs" "^7.16.8"
"@babel/plugin-transform-modules-systemjs" "^7.16.7"
"@babel/plugin-transform-modules-umd" "^7.16.7"
- "@babel/plugin-transform-named-capturing-groups-regex" "^7.16.7"
+ "@babel/plugin-transform-named-capturing-groups-regex" "^7.16.8"
"@babel/plugin-transform-new-target" "^7.16.7"
"@babel/plugin-transform-object-super" "^7.16.7"
"@babel/plugin-transform-parameters" "^7.16.7"
@@ -1076,17 +1083,17 @@
"@babel/plugin-transform-unicode-escapes" "^7.16.7"
"@babel/plugin-transform-unicode-regex" "^7.16.7"
"@babel/preset-modules" "^0.1.5"
- "@babel/types" "^7.16.7"
+ "@babel/types" "^7.16.8"
babel-plugin-polyfill-corejs2 "^0.3.0"
- babel-plugin-polyfill-corejs3 "^0.4.0"
+ babel-plugin-polyfill-corejs3 "^0.5.0"
babel-plugin-polyfill-regenerator "^0.3.0"
- core-js-compat "^3.19.1"
+ core-js-compat "^3.20.2"
semver "^6.3.0"
"@babel/preset-modules@^0.1.5":
version "0.1.5"
- resolved "https://registry.npmmirror.com/@babel/preset-modules/download/@babel/preset-modules-0.1.5.tgz#ef939d6e7f268827e1841638dc6ff95515e115d9"
- integrity sha1-75Odbn8miCfhhBY43G/5VRXhFdk=
+ resolved "https://registry.npmmirror.com/@babel/preset-modules/-/preset-modules-0.1.5.tgz#ef939d6e7f268827e1841638dc6ff95515e115d9"
+ integrity sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==
dependencies:
"@babel/helper-plugin-utils" "^7.0.0"
"@babel/plugin-proposal-unicode-property-regex" "^7.4.4"
@@ -1096,7 +1103,7 @@
"@babel/preset-react@^7.12.13", "@babel/preset-react@^7.12.5":
version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/preset-react/download/@babel/preset-react-7.16.7.tgz#4c18150491edc69c183ff818f9f2aecbe5d93852"
+ resolved "https://registry.npmmirror.com/@babel/preset-react/-/preset-react-7.16.7.tgz#4c18150491edc69c183ff818f9f2aecbe5d93852"
integrity sha512-fWpyI8UM/HE6DfPBzD8LnhQ/OcH8AgTaqcqP2nGOXEUV+VKBR5JRN9hCk9ai+zQQ57vtm9oWeXguBCPNUjytgA==
dependencies:
"@babel/helper-plugin-utils" "^7.16.7"
@@ -1108,7 +1115,7 @@
"@babel/preset-typescript@^7.12.16":
version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/preset-typescript/download/@babel/preset-typescript-7.16.7.tgz#ab114d68bb2020afc069cd51b37ff98a046a70b9"
+ resolved "https://registry.npmmirror.com/@babel/preset-typescript/-/preset-typescript-7.16.7.tgz#ab114d68bb2020afc069cd51b37ff98a046a70b9"
integrity sha512-WbVEmgXdIyvzB77AQjGBEyYPZx+8tTsO50XtfozQrkW8QB2rLJpH2lgx0TRw5EJrBxOZQ+wCcyPVQvS8tjEHpQ==
dependencies:
"@babel/helper-plugin-utils" "^7.16.7"
@@ -1116,72 +1123,72 @@
"@babel/plugin-transform-typescript" "^7.16.7"
"@babel/runtime-corejs3@^7.15.4":
- version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/runtime-corejs3/download/@babel/runtime-corejs3-7.16.7.tgz#a762745fe8b4d61a26444a9151e6586d36044dde"
- integrity sha512-MiYR1yk8+TW/CpOD0CyX7ve9ffWTKqLk/L6pk8TPl0R8pNi+1pFY8fH9yET55KlvukQ4PAWfXsGr2YHVjcI4Pw==
+ version "7.17.0"
+ resolved "https://registry.npmmirror.com/@babel/runtime-corejs3/-/runtime-corejs3-7.17.0.tgz#9de2f75b3ca4b68628c01bd76410b64faa4644f7"
+ integrity sha512-qeydncU80ravKzovVncW3EYaC1ji3GpntdPgNcJy9g7hHSY6KX+ne1cbV3ov7Zzm4F1z0+QreZPCuw1ynkmYNg==
dependencies:
- core-js-pure "^3.19.0"
+ core-js-pure "^3.20.2"
regenerator-runtime "^0.13.4"
"@babel/runtime@^7.1.2", "@babel/runtime@^7.10.3", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.13", "@babel/runtime@^7.15.4", "@babel/runtime@^7.8.4":
- version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/runtime/download/@babel/runtime-7.16.7.tgz#03ff99f64106588c9c403c6ecb8c3bafbbdff1fa"
- integrity sha512-9E9FJowqAsytyOY6LG+1KuueckRL+aQW+mKvXRXnuFGyRAyepJPmEo9vgMfXUA6O9u3IeEdv9MAkppFcaQwogQ==
+ version "7.17.0"
+ resolved "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.17.0.tgz#b8d142fc0f7664fb3d9b5833fd40dcbab89276c0"
+ integrity sha512-etcO/ohMNaNA2UBdaXBBSX/3aEzFMRrVfaPv8Ptc0k+cWpWW0QFiGZ2XnVqQZI1Cf734LbPGmqBKWESfW4x/dQ==
dependencies:
regenerator-runtime "^0.13.4"
"@babel/template@^7.12.7", "@babel/template@^7.16.7":
version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/template/download/@babel/template-7.16.7.tgz#8d126c8701fde4d66b264b3eba3d96f07666d155"
+ resolved "https://registry.npmmirror.com/@babel/template/-/template-7.16.7.tgz#8d126c8701fde4d66b264b3eba3d96f07666d155"
integrity sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==
dependencies:
"@babel/code-frame" "^7.16.7"
"@babel/parser" "^7.16.7"
"@babel/types" "^7.16.7"
-"@babel/traverse@^7.12.13", "@babel/traverse@^7.12.9", "@babel/traverse@^7.13.0", "@babel/traverse@^7.16.7":
- version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/traverse/download/@babel/traverse-7.16.7.tgz#dac01236a72c2560073658dd1a285fe4e0865d76"
- integrity sha512-8KWJPIb8c2VvY8AJrydh6+fVRo2ODx1wYBU2398xJVq0JomuLBZmVQzLPBblJgHIGYG4znCpUZUZ0Pt2vdmVYQ==
+"@babel/traverse@^7.12.13", "@babel/traverse@^7.12.9", "@babel/traverse@^7.13.0", "@babel/traverse@^7.16.7", "@babel/traverse@^7.16.8", "@babel/traverse@^7.17.0":
+ version "7.17.0"
+ resolved "https://registry.npmmirror.com/@babel/traverse/-/traverse-7.17.0.tgz#3143e5066796408ccc880a33ecd3184f3e75cd30"
+ integrity sha512-fpFIXvqD6kC7c7PUNnZ0Z8cQXlarCLtCUpt2S1Dx7PjoRtCFffvOkHHSom+m5HIxMZn5bIBVb71lhabcmjEsqg==
dependencies:
"@babel/code-frame" "^7.16.7"
- "@babel/generator" "^7.16.7"
+ "@babel/generator" "^7.17.0"
"@babel/helper-environment-visitor" "^7.16.7"
"@babel/helper-function-name" "^7.16.7"
"@babel/helper-hoist-variables" "^7.16.7"
"@babel/helper-split-export-declaration" "^7.16.7"
- "@babel/parser" "^7.16.7"
- "@babel/types" "^7.16.7"
+ "@babel/parser" "^7.17.0"
+ "@babel/types" "^7.17.0"
debug "^4.1.0"
globals "^11.1.0"
-"@babel/types@^7.12.6", "@babel/types@^7.12.7", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.4.4":
- version "7.16.7"
- resolved "https://registry.npmmirror.com/@babel/types/download/@babel/types-7.16.7.tgz#4ed19d51f840ed4bd5645be6ce40775fecf03159"
- integrity sha512-E8HuV7FO9qLpx6OtoGfUQ2cjIYnbFwvZWYBS+87EwtdMvmUPJSwykpovFB+8insbpF0uJcpr8KMUi64XZntZcg==
+"@babel/types@^7.12.6", "@babel/types@^7.12.7", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.4.4":
+ version "7.17.0"
+ resolved "https://registry.npmmirror.com/@babel/types/-/types-7.17.0.tgz#a826e368bccb6b3d84acd76acad5c0d87342390b"
+ integrity sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==
dependencies:
"@babel/helper-validator-identifier" "^7.16.7"
to-fast-properties "^2.0.0"
-"@docsearch/css@3.0.0-alpha.42":
- version "3.0.0-alpha.42"
- resolved "https://registry.npmmirror.com/@docsearch/css/download/@docsearch/css-3.0.0-alpha.42.tgz#deb6049e999d6ca9451eba4793cb5b6da28c8773"
- integrity sha512-AGwI2AXUacYhVOHmYnsXoYDJKO6Ued2W+QO80GERbMLhC7GH5tfvtW5REs/s7jSdcU3vzFoxT8iPDBCh/PkrlQ==
+"@docsearch/css@3.0.0-alpha.50":
+ version "3.0.0-alpha.50"
+ resolved "https://registry.npmmirror.com/@docsearch/css/-/css-3.0.0-alpha.50.tgz#794c6a8d301840a49b55f5b331c7be84b9723643"
+ integrity sha512-QeWFCQOtS9D+Fi20liKsPXF2j/xWKh52e+P2Z1UATIdPMqmH6zoB2lcUz+cgv6PPVgWUtECeR6VSSUm71LT94w==
"@docsearch/react@^3.0.0-alpha.39":
- version "3.0.0-alpha.42"
- resolved "https://registry.npmmirror.com/@docsearch/react/download/@docsearch/react-3.0.0-alpha.42.tgz#1d22a2b05779f24d090ff8d7ff2699e4d50dff5c"
- integrity sha512-1aOslZJDxwUUcm2QRNmlEePUgL8P5fOAeFdOLDMctHQkV2iTja9/rKVbkP8FZbIUnZxuuCCn8ErLrjD/oXWOag==
+ version "3.0.0-alpha.50"
+ resolved "https://registry.npmmirror.com/@docsearch/react/-/react-3.0.0-alpha.50.tgz#a7dc547836c2b221fd3aa8eb87bfb47a579ef141"
+ integrity sha512-oDGV1zZCRYv7MWsh6CyQVthYTRc3b4q+6kKwNYb1/g/Wf/4nJHutpxolFLHdEUDhrJ4Xi8wxwQG+lEwAVBTHPg==
dependencies:
- "@algolia/autocomplete-core" "1.5.0"
- "@algolia/autocomplete-preset-algolia" "1.5.0"
- "@docsearch/css" "3.0.0-alpha.42"
+ "@algolia/autocomplete-core" "1.5.2"
+ "@algolia/autocomplete-preset-algolia" "1.5.2"
+ "@docsearch/css" "3.0.0-alpha.50"
algoliasearch "^4.0.0"
"@docusaurus/core@2.0.0-beta.9":
version "2.0.0-beta.9"
- resolved "https://registry.npmmirror.com/@docusaurus/core/download/@docusaurus/core-2.0.0-beta.9.tgz#59b57c5e60fe83ef9e3c6aa7000d470eb0c52656"
- integrity sha1-WbV8XmD+g++ePGqnAA1HDrDFJlY=
+ resolved "https://registry.npmmirror.com/@docusaurus/core/-/core-2.0.0-beta.9.tgz#59b57c5e60fe83ef9e3c6aa7000d470eb0c52656"
+ integrity sha512-Bf9c6+yftZfAJk2h4HyaDvzBp5TLhqYtfnfWKKNi0Gdw9vRLXhi7IaiGaLWIuNAIJLTi++Ql0BAn+C0OO8EsWA==
dependencies:
"@babel/core" "^7.12.16"
"@babel/generator" "^7.12.15"
@@ -1263,8 +1270,8 @@
"@docusaurus/cssnano-preset@2.0.0-beta.9":
version "2.0.0-beta.9"
- resolved "https://registry.npmmirror.com/@docusaurus/cssnano-preset/download/@docusaurus/cssnano-preset-2.0.0-beta.9.tgz#4ad9079c68b79744c08be6e48e51d2c12907f71f"
- integrity sha1-StkHnGi3l0TAi+bkjlHSwSkH9x8=
+ resolved "https://registry.npmmirror.com/@docusaurus/cssnano-preset/-/cssnano-preset-2.0.0-beta.9.tgz#4ad9079c68b79744c08be6e48e51d2c12907f71f"
+ integrity sha512-oIdoiZ/i4LXRxmuLN2ZmvGpMqtwba+ck9TlaQDWC7wvHx+EA9mvvcewKWgc7e4dxPA00+777cQvrDctAreAqLw==
dependencies:
cssnano-preset-advanced "^5.1.4"
postcss "^8.3.7"
@@ -1272,8 +1279,8 @@
"@docusaurus/mdx-loader@2.0.0-beta.9":
version "2.0.0-beta.9"
- resolved "https://registry.npmmirror.com/@docusaurus/mdx-loader/download/@docusaurus/mdx-loader-2.0.0-beta.9.tgz#e87a1ff22fdabcb6bea59beae8b2d999dfb6eb81"
- integrity sha1-6Hof8i/avLa+pZvq6LLZmd+264E=
+ resolved "https://registry.npmmirror.com/@docusaurus/mdx-loader/-/mdx-loader-2.0.0-beta.9.tgz#e87a1ff22fdabcb6bea59beae8b2d999dfb6eb81"
+ integrity sha512-qb+/Ew69kaAIiot+1lJ13ozsyCY+7/VryzopDTgr60BDCsLUvuDzjNKreBqo1xdC4JxYD/hJMV7UAHkZ8rWB8Q==
dependencies:
"@babel/parser" "^7.12.16"
"@babel/traverse" "^7.12.13"
@@ -1296,8 +1303,8 @@
"@docusaurus/module-type-aliases@2.0.0-beta.9":
version "2.0.0-beta.9"
- resolved "https://registry.npmmirror.com/@docusaurus/module-type-aliases/download/@docusaurus/module-type-aliases-2.0.0-beta.9.tgz#71b9b240b033fcdc6e44bac3d9a83f56a429599b"
- integrity sha1-cbmyQLAz/NxuRLrD2ag/VqQpWZs=
+ resolved "https://registry.npmmirror.com/@docusaurus/module-type-aliases/-/module-type-aliases-2.0.0-beta.9.tgz#71b9b240b033fcdc6e44bac3d9a83f56a429599b"
+ integrity sha512-H8keGRVrGSymmzI1r/9lHx62JVm/9eedja2eJr/eQPkXZlJjht0AEsWt/bwTVJ8qbPthG0G0FPuApJdt+8aK8Q==
dependencies:
"@types/react" "*"
"@types/react-helmet" "*"
@@ -1306,8 +1313,8 @@
"@docusaurus/plugin-content-blog@2.0.0-beta.9":
version "2.0.0-beta.9"
- resolved "https://registry.npmmirror.com/@docusaurus/plugin-content-blog/download/@docusaurus/plugin-content-blog-2.0.0-beta.9.tgz#d72a32013232610552cbc45509ba2ddaea653690"
- integrity sha1-1yoyATIyYQVSy8RVCbot2uplNpA=
+ resolved "https://registry.npmmirror.com/@docusaurus/plugin-content-blog/-/plugin-content-blog-2.0.0-beta.9.tgz#d72a32013232610552cbc45509ba2ddaea653690"
+ integrity sha512-KZ6UmUa/P4SSX8/xnZpwSt7krnAfRg3S/ghZ7zeIzcp12iumSZBmLNi5rIIXcsFVH0IPOnIofEoWEaEIwaNerg==
dependencies:
"@docusaurus/core" "2.0.0-beta.9"
"@docusaurus/mdx-loader" "2.0.0-beta.9"
@@ -1330,8 +1337,8 @@
"@docusaurus/plugin-content-docs@2.0.0-beta.9":
version "2.0.0-beta.9"
- resolved "https://registry.npmmirror.com/@docusaurus/plugin-content-docs/download/@docusaurus/plugin-content-docs-2.0.0-beta.9.tgz#53ac2b43beb0f183c8a9b8fab6201e5e8f444a67"
- integrity sha1-U6wrQ76w8YPIqbj6tiAeXo9ESmc=
+ resolved "https://registry.npmmirror.com/@docusaurus/plugin-content-docs/-/plugin-content-docs-2.0.0-beta.9.tgz#53ac2b43beb0f183c8a9b8fab6201e5e8f444a67"
+ integrity sha512-GC+CvqKuravPpK5fqlYJVmj9hc6nkd/c/rM2ONueFCqw2wyuH7esWL8RpMqgS0JM1qwwuRpi0Dd3R/zdOptHIQ==
dependencies:
"@docusaurus/core" "2.0.0-beta.9"
"@docusaurus/mdx-loader" "2.0.0-beta.9"
@@ -1356,8 +1363,8 @@
"@docusaurus/plugin-content-pages@2.0.0-beta.9":
version "2.0.0-beta.9"
- resolved "https://registry.npmmirror.com/@docusaurus/plugin-content-pages/download/@docusaurus/plugin-content-pages-2.0.0-beta.9.tgz#115309f03bae2864bb9e4cd8fae646ea2e1f31dc"
- integrity sha1-EVMJ8DuuKGS7nkzY+uZG6i4fMdw=
+ resolved "https://registry.npmmirror.com/@docusaurus/plugin-content-pages/-/plugin-content-pages-2.0.0-beta.9.tgz#115309f03bae2864bb9e4cd8fae646ea2e1f31dc"
+ integrity sha512-27nFHhPpZEWra6izyWgY+EkBspr3OAUUHojRXzMUKplYLZ5gIciM224PXbwLyECjpn51eaf8/2Ay+/H9BdTCBw==
dependencies:
"@docusaurus/core" "2.0.0-beta.9"
"@docusaurus/mdx-loader" "2.0.0-beta.9"
@@ -1372,8 +1379,8 @@
"@docusaurus/plugin-sitemap@2.0.0-beta.9":
version "2.0.0-beta.9"
- resolved "https://registry.npmmirror.com/@docusaurus/plugin-sitemap/download/@docusaurus/plugin-sitemap-2.0.0-beta.9.tgz#4c944b6fc4e8fa4625a6fd985ec21d6455c31647"
- integrity sha1-TJRLb8To+kYlpv2YXsIdZFXDFkc=
+ resolved "https://registry.npmmirror.com/@docusaurus/plugin-sitemap/-/plugin-sitemap-2.0.0-beta.9.tgz#4c944b6fc4e8fa4625a6fd985ec21d6455c31647"
+ integrity sha512-p6Qc1vo/yb1v767/u0E72inkGKayx77HDKsDOGrNj2IH0db0cMsskBLeKYcDfVz5+dtmFrR+lubINp7TyofkvA==
dependencies:
"@docusaurus/core" "2.0.0-beta.9"
"@docusaurus/types" "2.0.0-beta.9"
@@ -1386,16 +1393,16 @@
"@docusaurus/react-loadable@5.5.2", "react-loadable@npm:@docusaurus/react-loadable@5.5.2":
version "5.5.2"
- resolved "https://registry.npmmirror.com/@docusaurus/react-loadable/download/@docusaurus/react-loadable-5.5.2.tgz#81aae0db81ecafbdaee3651f12804580868fa6ce"
- integrity sha1-garg24Hsr72u42UfEoBFgIaPps4=
+ resolved "https://registry.npmmirror.com/@docusaurus/react-loadable/-/react-loadable-5.5.2.tgz#81aae0db81ecafbdaee3651f12804580868fa6ce"
+ integrity sha512-A3dYjdBGuy0IGT+wyLIGIKLRE+sAk1iNk0f1HjNDysO7u8lhL4N3VEm+FAubmJbAztn94F7MxBTPmnixbiyFdQ==
dependencies:
"@types/react" "*"
prop-types "^15.6.2"
"@docusaurus/theme-common@2.0.0-beta.9":
version "2.0.0-beta.9"
- resolved "https://registry.npmmirror.com/@docusaurus/theme-common/download/@docusaurus/theme-common-2.0.0-beta.9.tgz#a2bd5eb242baa38b110a191126f9054740267925"
- integrity sha1-or1eskK6o4sRChkRJvkFR0AmeSU=
+ resolved "https://registry.npmmirror.com/@docusaurus/theme-common/-/theme-common-2.0.0-beta.9.tgz#a2bd5eb242baa38b110a191126f9054740267925"
+ integrity sha512-ZsFP+wH1CY6SBqkBGAdj9kHZHkV/7Y77Jw0rnEVbVU4zX2Jh6apWRCOJVaPrroDES8/9D6WWKQgQifeoJ2EeIA==
dependencies:
"@docusaurus/core" "2.0.0-beta.9"
"@docusaurus/plugin-content-blog" "2.0.0-beta.9"
@@ -1409,8 +1416,8 @@
"@docusaurus/types@2.0.0-beta.9":
version "2.0.0-beta.9"
- resolved "https://registry.npmmirror.com/@docusaurus/types/download/@docusaurus/types-2.0.0-beta.9.tgz#3561a0e3ce9bcb0892d02a025161bb854a189d10"
- integrity sha1-NWGg486bywiS0CoCUWG7hUoYnRA=
+ resolved "https://registry.npmmirror.com/@docusaurus/types/-/types-2.0.0-beta.9.tgz#3561a0e3ce9bcb0892d02a025161bb854a189d10"
+ integrity sha512-7qK7PCwRImHzv9RMi5HJ7RoHKQ8r7oqZK79UucmzBXl5nyfZridBC7JQ+LG7GBqYVaIjfOHUflOOLIVn+gK2/g==
dependencies:
commander "^5.1.0"
joi "^17.4.2"
@@ -1421,16 +1428,16 @@
"@docusaurus/utils-common@2.0.0-beta.9":
version "2.0.0-beta.9"
- resolved "https://registry.npmmirror.com/@docusaurus/utils-common/download/@docusaurus/utils-common-2.0.0-beta.9.tgz#3c61db4dd87b4644266e9c240024049cd991f338"
- integrity sha1-PGHbTdh7RkQmbpwkACQEnNmR8zg=
+ resolved "https://registry.npmmirror.com/@docusaurus/utils-common/-/utils-common-2.0.0-beta.9.tgz#3c61db4dd87b4644266e9c240024049cd991f338"
+ integrity sha512-ftVRifnVXW9eQjwOSuTzhEb9P55KSVfqEbQHgUlMm8KYXHC4NNdn4V+9sHmdJ8rDWNU+PA/+FMjGxWLVejMkxg==
dependencies:
"@docusaurus/types" "2.0.0-beta.9"
tslib "^2.3.1"
"@docusaurus/utils-validation@2.0.0-beta.9":
version "2.0.0-beta.9"
- resolved "https://registry.npmmirror.com/@docusaurus/utils-validation/download/@docusaurus/utils-validation-2.0.0-beta.9.tgz#7a4e4ab29627b618a784e8b59fbe4b4bab736594"
- integrity sha1-ek5KspYnthinhOi1n75LS6tzZZQ=
+ resolved "https://registry.npmmirror.com/@docusaurus/utils-validation/-/utils-validation-2.0.0-beta.9.tgz#7a4e4ab29627b618a784e8b59fbe4b4bab736594"
+ integrity sha512-8XZ2wdg+HPSVqgFzhfvntPLwX0+sCypvODatXR8A3YUraZYqQU0NK7SLqD1epLpmHjT/bztSq5DydoGoFRJdIA==
dependencies:
"@docusaurus/utils" "2.0.0-beta.9"
chalk "^4.1.2"
@@ -1439,8 +1446,8 @@
"@docusaurus/utils@2.0.0-beta.9":
version "2.0.0-beta.9"
- resolved "https://registry.npmmirror.com/@docusaurus/utils/download/@docusaurus/utils-2.0.0-beta.9.tgz#b9d2b5e2baaed94b5041288fa759438e0164c408"
- integrity sha1-udK14rqu2UtQQSiPp1lDjgFkxAg=
+ resolved "https://registry.npmmirror.com/@docusaurus/utils/-/utils-2.0.0-beta.9.tgz#b9d2b5e2baaed94b5041288fa759438e0164c408"
+ integrity sha512-f5TUY72Qux0wv1tjxsvjFDjfRnsWtQjsjR5Q/gJ5V021H9lycC9YCk0cEReg3bI3+IVL2iGvQqNnH3R1G7NcRw==
dependencies:
"@docusaurus/types" "2.0.0-beta.9"
"@mdx-js/runtime" "^1.6.22"
@@ -1459,65 +1466,83 @@
"@fortawesome/fontawesome-common-types@^0.2.36":
version "0.2.36"
- resolved "https://registry.npmmirror.com/@fortawesome/fontawesome-common-types/download/@fortawesome/fontawesome-common-types-0.2.36.tgz#b44e52db3b6b20523e0c57ef8c42d315532cb903"
- integrity sha1-tE5S2ztrIFI+DFfvjELTFVMsuQM=
+ resolved "https://registry.npmmirror.com/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-0.2.36.tgz#b44e52db3b6b20523e0c57ef8c42d315532cb903"
+ integrity sha512-a/7BiSgobHAgBWeN7N0w+lAhInrGxksn13uK7231n2m8EDPE3BMCl9NZLTGrj9ZXfCmC6LM0QLqXidIizVQ6yg==
"@fortawesome/fontawesome-svg-core@^1.2.36":
version "1.2.36"
- resolved "https://registry.npmmirror.com/@fortawesome/fontawesome-svg-core/download/@fortawesome/fontawesome-svg-core-1.2.36.tgz#4f2ea6f778298e0c47c6524ce2e7fd58eb6930e3"
- integrity sha1-Ty6m93gpjgxHxlJM4uf9WOtpMOM=
+ resolved "https://registry.npmmirror.com/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-1.2.36.tgz#4f2ea6f778298e0c47c6524ce2e7fd58eb6930e3"
+ integrity sha512-YUcsLQKYb6DmaJjIHdDWpBIGCcyE/W+p/LMGvjQem55Mm2XWVAP5kWTMKWLv9lwpCVjpLxPyOMOyUocP1GxrtA==
dependencies:
"@fortawesome/fontawesome-common-types" "^0.2.36"
"@fortawesome/free-brands-svg-icons@^5.15.4":
version "5.15.4"
- resolved "https://registry.npmmirror.com/@fortawesome/free-brands-svg-icons/download/@fortawesome/free-brands-svg-icons-5.15.4.tgz#ec8a44dd383bcdd58aa7d1c96f38251e6fec9733"
- integrity sha1-7IpE3Tg7zdWKp9HJbzglHm/slzM=
+ resolved "https://registry.npmmirror.com/@fortawesome/free-brands-svg-icons/-/free-brands-svg-icons-5.15.4.tgz#ec8a44dd383bcdd58aa7d1c96f38251e6fec9733"
+ integrity sha512-f1witbwycL9cTENJegcmcZRYyawAFbm8+c6IirLmwbbpqz46wyjbQYLuxOc7weXFXfB7QR8/Vd2u5R3q6JYD9g==
dependencies:
"@fortawesome/fontawesome-common-types" "^0.2.36"
"@fortawesome/free-regular-svg-icons@^5.15.4":
version "5.15.4"
- resolved "https://registry.npmmirror.com/@fortawesome/free-regular-svg-icons/download/@fortawesome/free-regular-svg-icons-5.15.4.tgz#b97edab436954333bbeac09cfc40c6a951081a02"
- integrity sha1-uX7atDaVQzO76sCc/EDGqVEIGgI=
+ resolved "https://registry.npmmirror.com/@fortawesome/free-regular-svg-icons/-/free-regular-svg-icons-5.15.4.tgz#b97edab436954333bbeac09cfc40c6a951081a02"
+ integrity sha512-9VNNnU3CXHy9XednJ3wzQp6SwNwT3XaM26oS4Rp391GsxVYA+0oDR2J194YCIWf7jNRCYKjUCOduxdceLrx+xw==
dependencies:
"@fortawesome/fontawesome-common-types" "^0.2.36"
"@fortawesome/free-solid-svg-icons@^5.15.4":
version "5.15.4"
- resolved "https://registry.npmmirror.com/@fortawesome/free-solid-svg-icons/download/@fortawesome/free-solid-svg-icons-5.15.4.tgz#2a68f3fc3ddda12e52645654142b9e4e8fbb6cc5"
- integrity sha1-Kmjz/D3doS5SZFZUFCueTo+7bMU=
+ resolved "https://registry.npmmirror.com/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-5.15.4.tgz#2a68f3fc3ddda12e52645654142b9e4e8fbb6cc5"
+ integrity sha512-JLmQfz6tdtwxoihXLg6lT78BorrFyCf59SAwBM6qV/0zXyVeDygJVb3fk+j5Qat+Yvcxp1buLTY5iDh1ZSAQ8w==
dependencies:
"@fortawesome/fontawesome-common-types" "^0.2.36"
"@fortawesome/react-fontawesome@^0.1.16":
- version "0.1.16"
- resolved "https://registry.npmmirror.com/@fortawesome/react-fontawesome/download/@fortawesome/react-fontawesome-0.1.16.tgz#ce7665490214e20f929368d6b65f68884a99276a"
- integrity sha1-znZlSQIU4g+Sk2jWtl9oiEqZJ2o=
+ version "0.1.17"
+ resolved "https://registry.npmmirror.com/@fortawesome/react-fontawesome/-/react-fontawesome-0.1.17.tgz#06fc06cb1a721e38e5b50b4a1cb851e9b9c77d7a"
+ integrity sha512-dX43Z5IvMaW7fwzU8farosYjKNGfRb2HB/DgjVBHeJZ/NSnuuaujPPx0YOdcAq+n3mqn70tyCde2HM1mqbhiuw==
dependencies:
- prop-types "^15.7.2"
+ prop-types "^15.8.1"
"@hapi/hoek@^9.0.0":
version "9.2.1"
- resolved "https://registry.npmmirror.com/@hapi/hoek/download/@hapi/hoek-9.2.1.tgz?cache=0&sync_timestamp=1632776302937&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2F%40hapi%2Fhoek%2Fdownload%2F%40hapi%2Fhoek-9.2.1.tgz#9551142a1980503752536b5050fd99f4a7f13b17"
- integrity sha1-lVEUKhmAUDdSU2tQUP2Z9KfxOxc=
+ resolved "https://registry.npmmirror.com/@hapi/hoek/-/hoek-9.2.1.tgz#9551142a1980503752536b5050fd99f4a7f13b17"
+ integrity sha512-gfta+H8aziZsm8pZa0vj04KO6biEiisppNgA1kbJvFrrWu9Vm7eaUEy76DIxsuTaWvti5fkJVhllWc6ZTE+Mdw==
"@hapi/topo@^5.0.0":
version "5.1.0"
- resolved "https://registry.nlark.com/@hapi/topo/download/@hapi/topo-5.1.0.tgz#dc448e332c6c6e37a4dc02fd84ba8d44b9afb012"
- integrity sha1-3ESOMyxsbjek3AL9hLqNRLmvsBI=
+ resolved "https://registry.npmmirror.com/@hapi/topo/-/topo-5.1.0.tgz#dc448e332c6c6e37a4dc02fd84ba8d44b9afb012"
+ integrity sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==
dependencies:
"@hapi/hoek" "^9.0.0"
"@icons/material@^0.2.4":
version "0.2.4"
- resolved "https://registry.nlark.com/@icons/material/download/@icons/material-0.2.4.tgz#e90c9f71768b3736e76d7dd6783fc6c2afa88bc8"
- integrity sha1-6QyfcXaLNzbnbX3WeD/Gwq+oi8g=
+ resolved "https://registry.npmmirror.com/@icons/material/-/material-0.2.4.tgz#e90c9f71768b3736e76d7dd6783fc6c2afa88bc8"
+ integrity sha512-QPcGmICAPbGLGb6F/yNf/KzKqvFx8z5qx3D1yFqVAjoFmXK35EgyW+cJ57Te3CNsmzblwtzakLGFqHPqrfb4Tw==
+
+"@jridgewell/resolve-uri@^3.0.3":
+ version "3.0.4"
+ resolved "https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.4.tgz#b876e3feefb9c8d3aa84014da28b5e52a0640d72"
+ integrity sha512-cz8HFjOFfUBtvN+NXYSFMHYRdxZMaEl0XypVrhzxBgadKIXhIkRd8aMeHhmF56Sl7SuS8OnUpQ73/k9LE4VnLg==
+
+"@jridgewell/sourcemap-codec@^1.4.10":
+ version "1.4.10"
+ resolved "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.10.tgz#baf57b4e2a690d4f38560171f91783656b7f8186"
+ integrity sha512-Ht8wIW5v165atIX1p+JvKR5ONzUyF4Ac8DZIQ5kZs9zrb6M8SJNXpx1zn04rn65VjBMygRoMXcyYwNK0fT7bEg==
+
+"@jridgewell/trace-mapping@^0.3.0":
+ version "0.3.2"
+ resolved "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.2.tgz#e051581782a770c30ba219634f2019241c5d3cde"
+ integrity sha512-9KzzH4kMjA2XmBRHfqG2/Vtl7s92l6uNDd0wW7frDE+EUvQFGqNXhWp0UGJjSkt3v2AYjzOZn1QO9XaTNJIt1Q==
+ dependencies:
+ "@jridgewell/resolve-uri" "^3.0.3"
+ "@jridgewell/sourcemap-codec" "^1.4.10"
"@mdx-js/mdx@1.6.22", "@mdx-js/mdx@^1.6.21":
version "1.6.22"
- resolved "https://registry.npmmirror.com/@mdx-js/mdx/download/@mdx-js/mdx-1.6.22.tgz#8a723157bf90e78f17dc0f27995398e6c731f1ba"
- integrity sha1-inIxV7+Q548X3A8nmVOY5scx8bo=
+ resolved "https://registry.npmmirror.com/@mdx-js/mdx/-/mdx-1.6.22.tgz#8a723157bf90e78f17dc0f27995398e6c731f1ba"
+ integrity sha512-AMxuLxPz2j5/6TpF/XSdKpQP1NlG0z11dFOlq+2IP/lSgl11GY8ji6S/rgsViN/L0BDvHvUMruRb7ub+24LUYA==
dependencies:
"@babel/core" "7.12.9"
"@babel/plugin-syntax-jsx" "7.12.1"
@@ -1541,13 +1566,13 @@
"@mdx-js/react@1.6.22", "@mdx-js/react@^1.6.21":
version "1.6.22"
- resolved "https://registry.npmmirror.com/@mdx-js/react/download/@mdx-js/react-1.6.22.tgz#ae09b4744fddc74714ee9f9d6f17a66e77c43573"
- integrity sha1-rgm0dE/dx0cU7p+dbxembnfENXM=
+ resolved "https://registry.npmmirror.com/@mdx-js/react/-/react-1.6.22.tgz#ae09b4744fddc74714ee9f9d6f17a66e77c43573"
+ integrity sha512-TDoPum4SHdfPiGSAaRBw7ECyI8VaHpK8GJugbJIJuqyh6kzw9ZLJZW3HGL3NNrJGxcAixUvqROm+YuQOo5eXtg==
"@mdx-js/runtime@^1.6.22":
version "1.6.22"
- resolved "https://registry.npmmirror.com/@mdx-js/runtime/download/@mdx-js/runtime-1.6.22.tgz#3edd388bf68a519ffa1aaf9c446b548165102345"
- integrity sha1-Pt04i/aKUZ/6Gq+cRGtUgWUQI0U=
+ resolved "https://registry.npmmirror.com/@mdx-js/runtime/-/runtime-1.6.22.tgz#3edd388bf68a519ffa1aaf9c446b548165102345"
+ integrity sha512-p17spaO2+55VLCuxXA3LVHC4phRx60NR2XMdZ+qgVU1lKvEX4y88dmFNOzGDCPLJ03IZyKrJ/rPWWRiBrd9JrQ==
dependencies:
"@mdx-js/mdx" "1.6.22"
"@mdx-js/react" "1.6.22"
@@ -1555,66 +1580,66 @@
"@mdx-js/util@1.6.22":
version "1.6.22"
- resolved "https://registry.nlark.com/@mdx-js/util/download/@mdx-js/util-1.6.22.tgz#219dfd89ae5b97a8801f015323ffa4b62f45718b"
- integrity sha1-IZ39ia5bl6iAHwFTI/+kti9FcYs=
+ resolved "https://registry.npmmirror.com/@mdx-js/util/-/util-1.6.22.tgz#219dfd89ae5b97a8801f015323ffa4b62f45718b"
+ integrity sha512-H1rQc1ZOHANWBvPcW+JpGwr+juXSxM8Q8YCkm3GhZd8REu1fHR3z99CErO1p9pkcfcxZnMdIZdIsXkOHY0NilA==
"@nodelib/fs.scandir@2.1.5":
version "2.1.5"
- resolved "https://registry.nlark.com/@nodelib/fs.scandir/download/@nodelib/fs.scandir-2.1.5.tgz?cache=0&sync_timestamp=1622792718463&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40nodelib%2Ffs.scandir%2Fdownload%2F%40nodelib%2Ffs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5"
- integrity sha1-dhnC6yGyVIP20WdUi0z9WnSIw9U=
+ resolved "https://registry.npmmirror.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5"
+ integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==
dependencies:
"@nodelib/fs.stat" "2.0.5"
run-parallel "^1.1.9"
"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2":
version "2.0.5"
- resolved "https://registry.npmmirror.com/@nodelib/fs.stat/download/@nodelib/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b"
- integrity sha1-W9Jir5Tp0lvR5xsF3u1Eh2oiLos=
+ resolved "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b"
+ integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
"@nodelib/fs.walk@^1.2.3":
version "1.2.8"
- resolved "https://registry.nlark.com/@nodelib/fs.walk/download/@nodelib/fs.walk-1.2.8.tgz?cache=0&sync_timestamp=1625770050780&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40nodelib%2Ffs.walk%2Fdownload%2F%40nodelib%2Ffs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a"
- integrity sha1-6Vc36LtnRt3t9pxVaVNJTxlv5po=
+ resolved "https://registry.npmmirror.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a"
+ integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==
dependencies:
"@nodelib/fs.scandir" "2.1.5"
fastq "^1.6.0"
"@polka/url@^1.0.0-next.20":
version "1.0.0-next.21"
- resolved "https://registry.npmmirror.com/@polka/url/download/@polka/url-1.0.0-next.21.tgz#5de5a2385a35309427f6011992b544514d559aa1"
- integrity sha1-XeWiOFo1MJQn9gEZkrVEUU1VmqE=
+ resolved "https://registry.npmmirror.com/@polka/url/-/url-1.0.0-next.21.tgz#5de5a2385a35309427f6011992b544514d559aa1"
+ integrity sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==
"@seznam/compose-react-refs@^1.0.6":
version "1.0.6"
- resolved "https://registry.nlark.com/@seznam/compose-react-refs/download/@seznam/compose-react-refs-1.0.6.tgz#6ec4e70bdd6e32f8e70b4100f27267cf306bd8df"
- integrity sha1-bsTnC91uMvjnC0EA8nJnzzBr2N8=
+ resolved "https://registry.npmmirror.com/@seznam/compose-react-refs/-/compose-react-refs-1.0.6.tgz#6ec4e70bdd6e32f8e70b4100f27267cf306bd8df"
+ integrity sha512-izzOXQfeQLonzrIQb8u6LQ8dk+ymz3WXTIXjvOlTXHq6sbzROg3NWU+9TTAOpEoK9Bth24/6F/XrfHJ5yR5n6Q==
"@sideway/address@^4.1.3":
version "4.1.3"
- resolved "https://registry.npmmirror.com/@sideway/address/download/@sideway/address-4.1.3.tgz#d93cce5d45c5daec92ad76db492cc2ee3c64ab27"
+ resolved "https://registry.npmmirror.com/@sideway/address/-/address-4.1.3.tgz#d93cce5d45c5daec92ad76db492cc2ee3c64ab27"
integrity sha512-8ncEUtmnTsMmL7z1YPB47kPUq7LpKWJNFPsRzHiIajGC5uXlWGn+AmkYPcHNl8S4tcEGx+cnORnNYaw2wvL+LQ==
dependencies:
"@hapi/hoek" "^9.0.0"
"@sideway/formula@^3.0.0":
version "3.0.0"
- resolved "https://registry.npm.taobao.org/@sideway/formula/download/@sideway/formula-3.0.0.tgz#fe158aee32e6bd5de85044be615bc08478a0a13c"
- integrity sha1-/hWK7jLmvV3oUES+YVvAhHigoTw=
+ resolved "https://registry.npmmirror.com/@sideway/formula/-/formula-3.0.0.tgz#fe158aee32e6bd5de85044be615bc08478a0a13c"
+ integrity sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg==
"@sideway/pinpoint@^2.0.0":
version "2.0.0"
- resolved "https://registry.npm.taobao.org/@sideway/pinpoint/download/@sideway/pinpoint-2.0.0.tgz#cff8ffadc372ad29fd3f78277aeb29e632cc70df"
- integrity sha1-z/j/rcNyrSn9P3gneusp5jLMcN8=
+ resolved "https://registry.npmmirror.com/@sideway/pinpoint/-/pinpoint-2.0.0.tgz#cff8ffadc372ad29fd3f78277aeb29e632cc70df"
+ integrity sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==
"@sindresorhus/is@^0.14.0":
version "0.14.0"
- resolved "https://registry.nlark.com/@sindresorhus/is/download/@sindresorhus/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea"
- integrity sha1-n7OjzzEyMoFR81PeRjLgHlIQK+o=
+ resolved "https://registry.npmmirror.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea"
+ integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==
"@slorber/static-site-generator-webpack-plugin@^4.0.0":
version "4.0.1"
- resolved "https://registry.nlark.com/@slorber/static-site-generator-webpack-plugin/download/@slorber/static-site-generator-webpack-plugin-4.0.1.tgz#0c8852146441aaa683693deaa5aee2f991d94841"
- integrity sha1-DIhSFGRBqqaDaT3qpa7i+ZHZSEE=
+ resolved "https://registry.npmmirror.com/@slorber/static-site-generator-webpack-plugin/-/static-site-generator-webpack-plugin-4.0.1.tgz#0c8852146441aaa683693deaa5aee2f991d94841"
+ integrity sha512-PSv4RIVO1Y3kvHxjvqeVisk3E9XFoO04uwYBDWe217MFqKspplYswTuKLiJu0aLORQWzuQjfVsSlLPojwfYsLw==
dependencies:
bluebird "^3.7.1"
cheerio "^0.22.0"
@@ -1624,48 +1649,48 @@
"@svgr/babel-plugin-add-jsx-attribute@^5.4.0":
version "5.4.0"
- resolved "https://registry.npmmirror.com/@svgr/babel-plugin-add-jsx-attribute/download/@svgr/babel-plugin-add-jsx-attribute-5.4.0.tgz#81ef61947bb268eb9d50523446f9c638fb355906"
- integrity sha1-ge9hlHuyaOudUFI0RvnGOPs1WQY=
+ resolved "https://registry.npmmirror.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz#81ef61947bb268eb9d50523446f9c638fb355906"
+ integrity sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg==
"@svgr/babel-plugin-remove-jsx-attribute@^5.4.0":
version "5.4.0"
- resolved "https://registry.npmmirror.com/@svgr/babel-plugin-remove-jsx-attribute/download/@svgr/babel-plugin-remove-jsx-attribute-5.4.0.tgz#6b2c770c95c874654fd5e1d5ef475b78a0a962ef"
- integrity sha1-ayx3DJXIdGVP1eHV70dbeKCpYu8=
+ resolved "https://registry.npmmirror.com/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-5.4.0.tgz#6b2c770c95c874654fd5e1d5ef475b78a0a962ef"
+ integrity sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg==
"@svgr/babel-plugin-remove-jsx-empty-expression@^5.0.1":
version "5.0.1"
- resolved "https://registry.npmmirror.com/@svgr/babel-plugin-remove-jsx-empty-expression/download/@svgr/babel-plugin-remove-jsx-empty-expression-5.0.1.tgz#25621a8915ed7ad70da6cea3d0a6dbc2ea933efd"
- integrity sha1-JWIaiRXtetcNps6j0KbbwuqTPv0=
+ resolved "https://registry.npmmirror.com/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-5.0.1.tgz#25621a8915ed7ad70da6cea3d0a6dbc2ea933efd"
+ integrity sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA==
"@svgr/babel-plugin-replace-jsx-attribute-value@^5.0.1":
version "5.0.1"
- resolved "https://registry.npmmirror.com/@svgr/babel-plugin-replace-jsx-attribute-value/download/@svgr/babel-plugin-replace-jsx-attribute-value-5.0.1.tgz#0b221fc57f9fcd10e91fe219e2cd0dd03145a897"
- integrity sha1-CyIfxX+fzRDpH+IZ4s0N0DFFqJc=
+ resolved "https://registry.npmmirror.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-5.0.1.tgz#0b221fc57f9fcd10e91fe219e2cd0dd03145a897"
+ integrity sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ==
"@svgr/babel-plugin-svg-dynamic-title@^5.4.0":
version "5.4.0"
- resolved "https://registry.npmmirror.com/@svgr/babel-plugin-svg-dynamic-title/download/@svgr/babel-plugin-svg-dynamic-title-5.4.0.tgz#139b546dd0c3186b6e5db4fefc26cb0baea729d7"
- integrity sha1-E5tUbdDDGGtuXbT+/CbLC66nKdc=
+ resolved "https://registry.npmmirror.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-5.4.0.tgz#139b546dd0c3186b6e5db4fefc26cb0baea729d7"
+ integrity sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg==
"@svgr/babel-plugin-svg-em-dimensions@^5.4.0":
version "5.4.0"
- resolved "https://registry.npmmirror.com/@svgr/babel-plugin-svg-em-dimensions/download/@svgr/babel-plugin-svg-em-dimensions-5.4.0.tgz#6543f69526632a133ce5cabab965deeaea2234a0"
- integrity sha1-ZUP2lSZjKhM85cq6uWXe6uoiNKA=
+ resolved "https://registry.npmmirror.com/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-5.4.0.tgz#6543f69526632a133ce5cabab965deeaea2234a0"
+ integrity sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw==
"@svgr/babel-plugin-transform-react-native-svg@^5.4.0":
version "5.4.0"
- resolved "https://registry.npmmirror.com/@svgr/babel-plugin-transform-react-native-svg/download/@svgr/babel-plugin-transform-react-native-svg-5.4.0.tgz#00bf9a7a73f1cad3948cdab1f8dfb774750f8c80"
- integrity sha1-AL+aenPxytOUjNqx+N+3dHUPjIA=
+ resolved "https://registry.npmmirror.com/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-5.4.0.tgz#00bf9a7a73f1cad3948cdab1f8dfb774750f8c80"
+ integrity sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q==
"@svgr/babel-plugin-transform-svg-component@^5.5.0":
version "5.5.0"
- resolved "https://registry.npmmirror.com/@svgr/babel-plugin-transform-svg-component/download/@svgr/babel-plugin-transform-svg-component-5.5.0.tgz#583a5e2a193e214da2f3afeb0b9e8d3250126b4a"
- integrity sha1-WDpeKhk+IU2i86/rC56NMlASa0o=
+ resolved "https://registry.npmmirror.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-5.5.0.tgz#583a5e2a193e214da2f3afeb0b9e8d3250126b4a"
+ integrity sha512-q4jSH1UUvbrsOtlo/tKcgSeiCHRSBdXoIoqX1pgcKK/aU3JD27wmMKwGtpB8qRYUYoyXvfGxUVKchLuR5pB3rQ==
"@svgr/babel-preset@^5.5.0":
version "5.5.0"
- resolved "https://registry.npmmirror.com/@svgr/babel-preset/download/@svgr/babel-preset-5.5.0.tgz#8af54f3e0a8add7b1e2b0fcd5a882c55393df327"
- integrity sha1-ivVPPgqK3XseKw/NWogsVTk98yc=
+ resolved "https://registry.npmmirror.com/@svgr/babel-preset/-/babel-preset-5.5.0.tgz#8af54f3e0a8add7b1e2b0fcd5a882c55393df327"
+ integrity sha512-4FiXBjvQ+z2j7yASeGPEi8VD/5rrGQk4Xrq3EdJmoZgz/tpqChpo5hgXDvmEauwtvOc52q8ghhZK4Oy7qph4ig==
dependencies:
"@svgr/babel-plugin-add-jsx-attribute" "^5.4.0"
"@svgr/babel-plugin-remove-jsx-attribute" "^5.4.0"
@@ -1678,8 +1703,8 @@
"@svgr/core@^5.5.0":
version "5.5.0"
- resolved "https://registry.npmmirror.com/@svgr/core/download/@svgr/core-5.5.0.tgz#82e826b8715d71083120fe8f2492ec7d7874a579"
- integrity sha1-gugmuHFdcQgxIP6PJJLsfXh0pXk=
+ resolved "https://registry.npmmirror.com/@svgr/core/-/core-5.5.0.tgz#82e826b8715d71083120fe8f2492ec7d7874a579"
+ integrity sha512-q52VOcsJPvV3jO1wkPtzTuKlvX7Y3xIcWRpCMtBF3MrteZJtBfQw/+u0B1BHy5ColpQc1/YVTrPEtSYIMNZlrQ==
dependencies:
"@svgr/plugin-jsx" "^5.5.0"
camelcase "^6.2.0"
@@ -1687,15 +1712,15 @@
"@svgr/hast-util-to-babel-ast@^5.5.0":
version "5.5.0"
- resolved "https://registry.npmmirror.com/@svgr/hast-util-to-babel-ast/download/@svgr/hast-util-to-babel-ast-5.5.0.tgz#5ee52a9c2533f73e63f8f22b779f93cd432a5461"
- integrity sha1-XuUqnCUz9z5j+PIrd5+TzUMqVGE=
+ resolved "https://registry.npmmirror.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-5.5.0.tgz#5ee52a9c2533f73e63f8f22b779f93cd432a5461"
+ integrity sha512-cAaR/CAiZRB8GP32N+1jocovUtvlj0+e65TB50/6Lcime+EA49m/8l+P2ko+XPJ4dw3xaPS3jOL4F2X4KWxoeQ==
dependencies:
"@babel/types" "^7.12.6"
"@svgr/plugin-jsx@^5.5.0":
version "5.5.0"
- resolved "https://registry.npmmirror.com/@svgr/plugin-jsx/download/@svgr/plugin-jsx-5.5.0.tgz#1aa8cd798a1db7173ac043466d7b52236b369000"
- integrity sha1-GqjNeYodtxc6wENGbXtSI2s2kAA=
+ resolved "https://registry.npmmirror.com/@svgr/plugin-jsx/-/plugin-jsx-5.5.0.tgz#1aa8cd798a1db7173ac043466d7b52236b369000"
+ integrity sha512-V/wVh33j12hGh05IDg8GpIUXbjAPnTdPTKuP4VNLggnwaHMPNQNae2pRnyTAILWCQdz5GyMqtO488g7CKM8CBA==
dependencies:
"@babel/core" "^7.12.3"
"@svgr/babel-preset" "^5.5.0"
@@ -1704,8 +1729,8 @@
"@svgr/plugin-svgo@^5.5.0":
version "5.5.0"
- resolved "https://registry.npmmirror.com/@svgr/plugin-svgo/download/@svgr/plugin-svgo-5.5.0.tgz#02da55d85320549324e201c7b2e53bf431fcc246"
- integrity sha1-AtpV2FMgVJMk4gHHsuU79DH8wkY=
+ resolved "https://registry.npmmirror.com/@svgr/plugin-svgo/-/plugin-svgo-5.5.0.tgz#02da55d85320549324e201c7b2e53bf431fcc246"
+ integrity sha512-r5swKk46GuQl4RrVejVwpeeJaydoxkdwkM1mBKOgJLBUJPGaLci6ylg/IjhrRsREKDkr4kbMWdgOtbXEh0fyLQ==
dependencies:
cosmiconfig "^7.0.0"
deepmerge "^4.2.2"
@@ -1713,8 +1738,8 @@
"@svgr/webpack@^5.5.0":
version "5.5.0"
- resolved "https://registry.npmmirror.com/@svgr/webpack/download/@svgr/webpack-5.5.0.tgz#aae858ee579f5fa8ce6c3166ef56c6a1b381b640"
- integrity sha1-quhY7lefX6jObDFm71bGobOBtkA=
+ resolved "https://registry.npmmirror.com/@svgr/webpack/-/webpack-5.5.0.tgz#aae858ee579f5fa8ce6c3166ef56c6a1b381b640"
+ integrity sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g==
dependencies:
"@babel/core" "^7.12.3"
"@babel/plugin-transform-react-constant-elements" "^7.12.1"
@@ -1727,34 +1752,33 @@
"@szmarczak/http-timer@^1.1.2":
version "1.1.2"
- resolved "https://registry.nlark.com/@szmarczak/http-timer/download/@szmarczak/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421"
- integrity sha1-sWZeLEYaLNkvTBu/UNVFTeDUtCE=
+ resolved "https://registry.npmmirror.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421"
+ integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==
dependencies:
defer-to-connect "^1.0.1"
"@tailwindcss/typography@^0.5.0":
- version "0.5.0"
- resolved "https://registry.npmmirror.com/@tailwindcss/typography/download/@tailwindcss/typography-0.5.0.tgz#47886ec46ac41e1211d24fea05301046d9b30906"
- integrity sha512-1p/3C6C+JJziS/ghtG8ACYalbA2SyLJY27Pm33cVTlAoY6VQ7zfm2H64cPxUMBkVIlWXTtWHhZcZJPobMRmQAA==
+ version "0.5.1"
+ resolved "https://registry.npmmirror.com/@tailwindcss/typography/-/typography-0.5.1.tgz#486248a9426501f11a9b0295f7cfc0eb29659c46"
+ integrity sha512-AmSzZSgLhHKlILKduU+PKBTHL6c+al82syZlRid1xgmlWwXagLigO+O++B4C0scpMfzW//f/3YCRcwwEHWoU3w==
dependencies:
lodash.castarray "^4.4.0"
lodash.isplainobject "^4.0.6"
lodash.merge "^4.6.2"
- lodash.uniq "^4.5.0"
"@trysound/sax@0.2.0":
version "0.2.0"
- resolved "https://registry.nlark.com/@trysound/sax/download/@trysound/sax-0.2.0.tgz?cache=0&sync_timestamp=1630365886388&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40trysound%2Fsax%2Fdownload%2F%40trysound%2Fsax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad"
- integrity sha1-zMqrdYr1Z2Hre/N69vA/Mm3XmK0=
+ resolved "https://registry.npmmirror.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad"
+ integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==
"@tsconfig/docusaurus@^1.0.4":
version "1.0.4"
- resolved "https://registry.nlark.com/@tsconfig/docusaurus/download/@tsconfig/docusaurus-1.0.4.tgz#fc40f87a672568678d83533dd4031a09d75877ca"
- integrity sha1-/ED4emclaGeNg1M91AMaCddYd8o=
+ resolved "https://registry.npmmirror.com/@tsconfig/docusaurus/-/docusaurus-1.0.4.tgz#fc40f87a672568678d83533dd4031a09d75877ca"
+ integrity sha512-I6sziQAzLrrqj9r6S26c7aOAjfGVXIE7gWdNONPwnpDcHiMRMQut1s1YCi/APem3dOy23tAb2rvHfNtGCaWuUQ==
"@types/body-parser@*":
version "1.19.2"
- resolved "https://registry.npmmirror.com/@types/body-parser/download/@types/body-parser-1.19.2.tgz?cache=0&sync_timestamp=1637265217498&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2F%40types%2Fbody-parser%2Fdownload%2F%40types%2Fbody-parser-1.19.2.tgz#aea2059e28b7658639081347ac4fab3de166e6f0"
+ resolved "https://registry.npmmirror.com/@types/body-parser/-/body-parser-1.19.2.tgz#aea2059e28b7658639081347ac4fab3de166e6f0"
integrity sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==
dependencies:
"@types/connect" "*"
@@ -1762,60 +1786,65 @@
"@types/bonjour@^3.5.9":
version "3.5.10"
- resolved "https://registry.npmmirror.com/@types/bonjour/download/@types/bonjour-3.5.10.tgz#0f6aadfe00ea414edc86f5d106357cda9701e275"
+ resolved "https://registry.npmmirror.com/@types/bonjour/-/bonjour-3.5.10.tgz#0f6aadfe00ea414edc86f5d106357cda9701e275"
integrity sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==
dependencies:
"@types/node" "*"
"@types/connect-history-api-fallback@^1.3.5":
version "1.3.5"
- resolved "https://registry.npmmirror.com/@types/connect-history-api-fallback/download/@types/connect-history-api-fallback-1.3.5.tgz#d1f7a8a09d0ed5a57aee5ae9c18ab9b803205dae"
- integrity sha1-0feooJ0O1aV67lrpwYq5uAMgXa4=
+ resolved "https://registry.npmmirror.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz#d1f7a8a09d0ed5a57aee5ae9c18ab9b803205dae"
+ integrity sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==
dependencies:
"@types/express-serve-static-core" "*"
"@types/node" "*"
"@types/connect@*":
version "3.4.35"
- resolved "https://registry.npmmirror.com/@types/connect/download/@types/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1"
- integrity sha1-X89q5EXkAh0fwiGaSHPMc6O7KtE=
+ resolved "https://registry.npmmirror.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1"
+ integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==
dependencies:
"@types/node" "*"
"@types/eslint-scope@^3.7.0":
- version "3.7.2"
- resolved "https://registry.npmmirror.com/@types/eslint-scope/download/@types/eslint-scope-3.7.2.tgz#11e96a868c67acf65bf6f11d10bb89ea71d5e473"
- integrity sha512-TzgYCWoPiTeRg6RQYgtuW7iODtVoKu3RVL72k3WohqhjfaOLK5Mg2T4Tg1o2bSfu0vPkoI48wdQFv5b/Xe04wQ==
+ version "3.7.3"
+ resolved "https://registry.npmmirror.com/@types/eslint-scope/-/eslint-scope-3.7.3.tgz#125b88504b61e3c8bc6f870882003253005c3224"
+ integrity sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==
dependencies:
"@types/eslint" "*"
"@types/estree" "*"
"@types/eslint@*":
- version "8.2.1"
- resolved "https://registry.npmmirror.com/@types/eslint/download/@types/eslint-8.2.1.tgz#13f3d69bac93c2ae008019c28783868d0a1d6605"
- integrity sha512-UP9rzNn/XyGwb5RQ2fok+DzcIRIYwc16qTXse5+Smsy8MOIccCChT15KAwnsgQx4PzJkaMq4myFyZ4CL5TjhIQ==
+ version "8.4.1"
+ resolved "https://registry.npmmirror.com/@types/eslint/-/eslint-8.4.1.tgz#c48251553e8759db9e656de3efc846954ac32304"
+ integrity sha512-GE44+DNEyxxh2Kc6ro/VkIj+9ma0pO0bwv9+uHSyBrikYOHr8zYcdPvnBOp1aw8s+CjRvuSx7CyWqRrNFQ59mA==
dependencies:
"@types/estree" "*"
"@types/json-schema" "*"
-"@types/estree@*", "@types/estree@^0.0.50":
+"@types/estree@*":
+ version "0.0.51"
+ resolved "https://registry.npmmirror.com/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40"
+ integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==
+
+"@types/estree@^0.0.50":
version "0.0.50"
- resolved "https://registry.npmmirror.com/@types/estree/download/@types/estree-0.0.50.tgz?cache=0&sync_timestamp=1637266061438&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2F%40types%2Festree%2Fdownload%2F%40types%2Festree-0.0.50.tgz#1e0caa9364d3fccd2931c3ed96fdbeaa5d4cca83"
- integrity sha1-Hgyqk2TT/M0pMcPtlv2+ql1MyoM=
+ resolved "https://registry.npmmirror.com/@types/estree/-/estree-0.0.50.tgz#1e0caa9364d3fccd2931c3ed96fdbeaa5d4cca83"
+ integrity sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==
"@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.18":
- version "4.17.27"
- resolved "https://registry.npmmirror.com/@types/express-serve-static-core/download/@types/express-serve-static-core-4.17.27.tgz#7a776191e47295d2a05962ecbb3a4ce97e38b401"
- integrity sha512-e/sVallzUTPdyOTiqi8O8pMdBBphscvI6E4JYaKlja4Lm+zh7UFSSdW5VMkRbhDtmrONqOUHOXRguPsDckzxNA==
+ version "4.17.28"
+ resolved "https://registry.npmmirror.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz#c47def9f34ec81dc6328d0b1b5303d1ec98d86b8"
+ integrity sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig==
dependencies:
"@types/node" "*"
"@types/qs" "*"
"@types/range-parser" "*"
-"@types/express@*":
+"@types/express@*", "@types/express@^4.17.13":
version "4.17.13"
- resolved "https://registry.npmmirror.com/@types/express/download/@types/express-4.17.13.tgz#a76e2995728999bab51a33fabce1d705a3709034"
- integrity sha1-p24plXKJmbq1GjP6vOHXBaNwkDQ=
+ resolved "https://registry.npmmirror.com/@types/express/-/express-4.17.13.tgz#a76e2995728999bab51a33fabce1d705a3709034"
+ integrity sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==
dependencies:
"@types/body-parser" "*"
"@types/express-serve-static-core" "^4.17.18"
@@ -1824,122 +1853,122 @@
"@types/github-slugger@^1.3.0":
version "1.3.0"
- resolved "https://registry.npmmirror.com/@types/github-slugger/download/@types/github-slugger-1.3.0.tgz#16ab393b30d8ae2a111ac748a015ac05a1fc5524"
- integrity sha1-Fqs5OzDYrioRGsdIoBWsBaH8VSQ=
+ resolved "https://registry.npmmirror.com/@types/github-slugger/-/github-slugger-1.3.0.tgz#16ab393b30d8ae2a111ac748a015ac05a1fc5524"
+ integrity sha512-J/rMZa7RqiH/rT29TEVZO4nBoDP9XJOjnbbIofg7GQKs4JIduEO3WLpte+6WeUz/TcrXKlY+bM7FYrp8yFB+3g==
"@types/hast@^2.0.0":
version "2.3.4"
- resolved "https://registry.npmmirror.com/@types/hast/download/@types/hast-2.3.4.tgz#8aa5ef92c117d20d974a82bdfb6a648b08c0bafc"
- integrity sha1-iqXvksEX0g2XSoK9+2pkiwjAuvw=
+ resolved "https://registry.npmmirror.com/@types/hast/-/hast-2.3.4.tgz#8aa5ef92c117d20d974a82bdfb6a648b08c0bafc"
+ integrity sha512-wLEm0QvaoawEDoTRwzTXp4b4jpwiJDvR5KMnFnVodm3scufTlBOWRD6N1OBf9TZMhjlNsSfcO5V+7AF4+Vy+9g==
dependencies:
"@types/unist" "*"
-"@types/history@*":
- version "4.7.9"
- resolved "https://registry.npmmirror.com/@types/history/download/@types/history-4.7.9.tgz#1cfb6d60ef3822c589f18e70f8b12f9a28ce8724"
- integrity sha1-HPttYO84IsWJ8Y5w+LEvmijOhyQ=
+"@types/history@^4.7.11":
+ version "4.7.11"
+ resolved "https://registry.npmmirror.com/@types/history/-/history-4.7.11.tgz#56588b17ae8f50c53983a524fc3cc47437969d64"
+ integrity sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==
"@types/html-minifier-terser@^6.0.0":
version "6.1.0"
- resolved "https://registry.npmmirror.com/@types/html-minifier-terser/download/@types/html-minifier-terser-6.1.0.tgz#4fc33a00c1d0c16987b1a20cf92d20614c55ac35"
+ resolved "https://registry.npmmirror.com/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#4fc33a00c1d0c16987b1a20cf92d20614c55ac35"
integrity sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==
-"@types/http-proxy@^1.17.5":
+"@types/http-proxy@^1.17.8":
version "1.17.8"
- resolved "https://registry.npmmirror.com/@types/http-proxy/download/@types/http-proxy-1.17.8.tgz#968c66903e7e42b483608030ee85800f22d03f55"
+ resolved "https://registry.npmmirror.com/@types/http-proxy/-/http-proxy-1.17.8.tgz#968c66903e7e42b483608030ee85800f22d03f55"
integrity sha512-5kPLG5BKpWYkw/LVOGWpiq3nEVqxiN32rTgI53Sk12/xHFQ2rG3ehI9IO+O3W2QoKeyB92dJkoka8SUm6BX1pA==
dependencies:
"@types/node" "*"
"@types/json-schema@*", "@types/json-schema@^7.0.4", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9":
version "7.0.9"
- resolved "https://registry.npmmirror.com/@types/json-schema/download/@types/json-schema-7.0.9.tgz?cache=0&sync_timestamp=1637265456183&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2F%40types%2Fjson-schema%2Fdownload%2F%40types%2Fjson-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d"
- integrity sha1-l+3JA36gw4WFMgsolk3eOznkZg0=
+ resolved "https://registry.npmmirror.com/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d"
+ integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==
"@types/mdast@^3.0.0":
version "3.0.10"
- resolved "https://registry.npmmirror.com/@types/mdast/download/@types/mdast-3.0.10.tgz#4724244a82a4598884cbbe9bcfd73dff927ee8af"
- integrity sha1-RyQkSoKkWYiEy76bz9c9/5J+6K8=
+ resolved "https://registry.npmmirror.com/@types/mdast/-/mdast-3.0.10.tgz#4724244a82a4598884cbbe9bcfd73dff927ee8af"
+ integrity sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==
dependencies:
"@types/unist" "*"
"@types/mime@^1":
version "1.3.2"
- resolved "https://registry.npmmirror.com/@types/mime/download/@types/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a"
- integrity sha1-k+Jb+e51/g/YC1lLxP6w6GIRG1o=
+ resolved "https://registry.npmmirror.com/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a"
+ integrity sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==
"@types/node@*", "@types/node@^17.0.5":
- version "17.0.8"
- resolved "https://registry.npmmirror.com/@types/node/download/@types/node-17.0.8.tgz#50d680c8a8a78fe30abe6906453b21ad8ab0ad7b"
- integrity sha512-YofkM6fGv4gDJq78g4j0mMuGMkZVxZDgtU0JRdx6FgiJDG+0fY0GKVolOV8WqVmEhLCXkQRjwDdKyPxJp/uucg==
+ version "17.0.15"
+ resolved "https://registry.npmmirror.com/@types/node/-/node-17.0.15.tgz#97779282c09c09577120a2162e71d8380003590a"
+ integrity sha512-zWt4SDDv1S9WRBNxLFxFRHxdD9tvH8f5/kg5/IaLFdnSNXsDY4eL3Q3XXN+VxUnWIhyVFDwcsmAprvwXoM/ClA==
"@types/parse-json@^4.0.0":
version "4.0.0"
- resolved "https://registry.npmmirror.com/@types/parse-json/download/@types/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0"
- integrity sha1-L4u0QUNNFjs1+4/9zNcTiSf/uMA=
+ resolved "https://registry.npmmirror.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0"
+ integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==
"@types/parse5@^5.0.0":
version "5.0.3"
- resolved "https://registry.npmmirror.com/@types/parse5/download/@types/parse5-5.0.3.tgz#e7b5aebbac150f8b5fdd4a46e7f0bd8e65e19109"
- integrity sha1-57Wuu6wVD4tf3UpG5/C9jmXhkQk=
+ resolved "https://registry.npmmirror.com/@types/parse5/-/parse5-5.0.3.tgz#e7b5aebbac150f8b5fdd4a46e7f0bd8e65e19109"
+ integrity sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw==
"@types/prop-types@*":
version "15.7.4"
- resolved "https://registry.npmmirror.com/@types/prop-types/download/@types/prop-types-15.7.4.tgz#fcf7205c25dff795ee79af1e30da2c9790808f11"
- integrity sha1-/PcgXCXf95Xuea8eMNosl5CAjxE=
+ resolved "https://registry.npmmirror.com/@types/prop-types/-/prop-types-15.7.4.tgz#fcf7205c25dff795ee79af1e30da2c9790808f11"
+ integrity sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==
"@types/q@^1.5.1":
version "1.5.5"
- resolved "https://registry.npmmirror.com/@types/q/download/@types/q-1.5.5.tgz#75a2a8e7d8ab4b230414505d92335d1dcb53a6df"
+ resolved "https://registry.npmmirror.com/@types/q/-/q-1.5.5.tgz#75a2a8e7d8ab4b230414505d92335d1dcb53a6df"
integrity sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ==
"@types/qs@*":
version "6.9.7"
- resolved "https://registry.npmmirror.com/@types/qs/download/@types/qs-6.9.7.tgz?cache=0&sync_timestamp=1637270140135&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2F%40types%2Fqs%2Fdownload%2F%40types%2Fqs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb"
- integrity sha1-Y7t9Bn2xB8weRXwwO8JdUR/r9ss=
+ resolved "https://registry.npmmirror.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb"
+ integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==
"@types/range-parser@*":
version "1.2.4"
- resolved "https://registry.npmmirror.com/@types/range-parser/download/@types/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc"
- integrity sha1-zWZ7z90CUhOq+3ylkVqTJZCs3Nw=
+ resolved "https://registry.npmmirror.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc"
+ integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==
"@types/react-helmet@*":
version "6.1.5"
- resolved "https://registry.npmmirror.com/@types/react-helmet/download/@types/react-helmet-6.1.5.tgz#35f89a6b1646ee2bc342a33a9a6c8777933f9083"
+ resolved "https://registry.npmmirror.com/@types/react-helmet/-/react-helmet-6.1.5.tgz#35f89a6b1646ee2bc342a33a9a6c8777933f9083"
integrity sha512-/ICuy7OHZxR0YCAZLNg9r7I9aijWUWvxaPR6uTuyxe8tAj5RL4Sw1+R6NhXUtOsarkGYPmaHdBDvuXh2DIN/uA==
dependencies:
"@types/react" "*"
"@types/react-router-config@*":
- version "5.0.4"
- resolved "https://registry.npmmirror.com/@types/react-router-config/download/@types/react-router-config-5.0.4.tgz#fea3b063ed6b6b24f64efce323e5afba4b9b6e96"
- integrity sha512-wJIRO2JcR/prphs4h7Fadx48vlqC3qMyTImqOLHkpwWCYBq9SnC+UAOBVZM4pCrzdIvUoXQy3b18+J6LXEKVpw==
+ version "5.0.6"
+ resolved "https://registry.npmmirror.com/@types/react-router-config/-/react-router-config-5.0.6.tgz#87c5c57e72d241db900d9734512c50ccec062451"
+ integrity sha512-db1mx37a1EJDf1XeX8jJN7R3PZABmJQXR8r28yUjVMFSjkmnQo6X6pOEEmNl+Tp2gYQOGPdYbFIipBtdElZ3Yg==
dependencies:
- "@types/history" "*"
+ "@types/history" "^4.7.11"
"@types/react" "*"
"@types/react-router" "*"
"@types/react-router-dom@*":
- version "5.3.2"
- resolved "https://registry.npmmirror.com/@types/react-router-dom/download/@types/react-router-dom-5.3.2.tgz#ebd8e145cf056db5c66eb1dac63c72f52e8542ee"
- integrity sha1-69jhRc8FbbXGbrHaxjxy9S6FQu4=
+ version "5.3.3"
+ resolved "https://registry.npmmirror.com/@types/react-router-dom/-/react-router-dom-5.3.3.tgz#e9d6b4a66fcdbd651a5f106c2656a30088cc1e83"
+ integrity sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==
dependencies:
- "@types/history" "*"
+ "@types/history" "^4.7.11"
"@types/react" "*"
"@types/react-router" "*"
"@types/react-router@*":
- version "5.1.17"
- resolved "https://registry.npmmirror.com/@types/react-router/download/@types/react-router-5.1.17.tgz#087091006213b11042f39570e5cd414863693968"
- integrity sha1-CHCRAGITsRBC85Vw5c1BSGNpOWg=
+ version "5.1.18"
+ resolved "https://registry.npmmirror.com/@types/react-router/-/react-router-5.1.18.tgz#c8851884b60bc23733500d86c1266e1cfbbd9ef3"
+ integrity sha512-YYknwy0D0iOwKQgz9v8nOzt2J6l4gouBmDnWqUUznltOTaon+r8US8ky8HvN0tXvc38U9m6z/t2RsVsnd1zM0g==
dependencies:
- "@types/history" "*"
+ "@types/history" "^4.7.11"
"@types/react" "*"
"@types/react@*":
- version "17.0.38"
- resolved "https://registry.npmmirror.com/@types/react/download/@types/react-17.0.38.tgz#f24249fefd89357d5fa71f739a686b8d7c7202bd"
- integrity sha512-SI92X1IA+FMnP3qM5m4QReluXzhcmovhZnLNm3pyeQlooi02qI7sLiepEYqT678uNiyc25XfCqxREFpy3W7YhQ==
+ version "17.0.39"
+ resolved "https://registry.npmmirror.com/@types/react/-/react-17.0.39.tgz#d0f4cde092502a6db00a1cded6e6bf2abb7633ce"
+ integrity sha512-UVavlfAxDd/AgAacMa60Azl7ygyQNRwC/DsHZmKgNvPmRR5p70AJ5Q9EAmL2NWOJmeV+vVUI4IAP7GZrN8h8Ug==
dependencies:
"@types/prop-types" "*"
"@types/scheduler" "*"
@@ -1947,82 +1976,82 @@
"@types/retry@^0.12.0":
version "0.12.1"
- resolved "https://registry.npmmirror.com/@types/retry/download/@types/retry-0.12.1.tgz#d8f1c0d0dc23afad6dc16a9e993a0865774b4065"
- integrity sha1-2PHA0Nwjr61twWqemToIZXdLQGU=
+ resolved "https://registry.npmmirror.com/@types/retry/-/retry-0.12.1.tgz#d8f1c0d0dc23afad6dc16a9e993a0865774b4065"
+ integrity sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g==
"@types/sax@^1.2.1":
version "1.2.4"
- resolved "https://registry.npmmirror.com/@types/sax/download/@types/sax-1.2.4.tgz#8221affa7f4f3cb21abd22f244cfabfa63e6a69e"
+ resolved "https://registry.npmmirror.com/@types/sax/-/sax-1.2.4.tgz#8221affa7f4f3cb21abd22f244cfabfa63e6a69e"
integrity sha512-pSAff4IAxJjfAXUG6tFkO7dsSbTmf8CtUpfhhZ5VhkRpC4628tJhh3+V6H1E+/Gs9piSzYKT5yzHO5M4GG9jkw==
dependencies:
"@types/node" "*"
"@types/scheduler@*":
version "0.16.2"
- resolved "https://registry.npmmirror.com/@types/scheduler/download/@types/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39"
- integrity sha1-GmL4lSVyPd4kuhsBsJK/XfitTTk=
+ resolved "https://registry.npmmirror.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39"
+ integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==
"@types/serve-index@^1.9.1":
version "1.9.1"
- resolved "https://registry.npmmirror.com/@types/serve-index/download/@types/serve-index-1.9.1.tgz#1b5e85370a192c01ec6cec4735cf2917337a6278"
- integrity sha1-G16FNwoZLAHsbOxHNc8pFzN6Yng=
+ resolved "https://registry.npmmirror.com/@types/serve-index/-/serve-index-1.9.1.tgz#1b5e85370a192c01ec6cec4735cf2917337a6278"
+ integrity sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==
dependencies:
"@types/express" "*"
"@types/serve-static@*":
version "1.13.10"
- resolved "https://registry.npmmirror.com/@types/serve-static/download/@types/serve-static-1.13.10.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2F%40types%2Fserve-static%2Fdownload%2F%40types%2Fserve-static-1.13.10.tgz#f5e0ce8797d2d7cc5ebeda48a52c96c4fa47a8d9"
- integrity sha1-9eDOh5fS18xevtpIpSyWxPpHqNk=
+ resolved "https://registry.npmmirror.com/@types/serve-static/-/serve-static-1.13.10.tgz#f5e0ce8797d2d7cc5ebeda48a52c96c4fa47a8d9"
+ integrity sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==
dependencies:
"@types/mime" "^1"
"@types/node" "*"
"@types/sockjs@^0.3.33":
version "0.3.33"
- resolved "https://registry.npmmirror.com/@types/sockjs/download/@types/sockjs-0.3.33.tgz#570d3a0b99ac995360e3136fd6045113b1bd236f"
- integrity sha1-Vw06C5msmVNg4xNv1gRRE7G9I28=
+ resolved "https://registry.npmmirror.com/@types/sockjs/-/sockjs-0.3.33.tgz#570d3a0b99ac995360e3136fd6045113b1bd236f"
+ integrity sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==
dependencies:
"@types/node" "*"
"@types/unist@*", "@types/unist@^2.0.0", "@types/unist@^2.0.2", "@types/unist@^2.0.3":
version "2.0.6"
- resolved "https://registry.npmmirror.com/@types/unist/download/@types/unist-2.0.6.tgz#250a7b16c3b91f672a24552ec64678eeb1d3a08d"
- integrity sha1-JQp7FsO5H2cqJFUuxkZ47rHToI0=
+ resolved "https://registry.npmmirror.com/@types/unist/-/unist-2.0.6.tgz#250a7b16c3b91f672a24552ec64678eeb1d3a08d"
+ integrity sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==
"@types/ws@^8.2.2":
version "8.2.2"
- resolved "https://registry.npmmirror.com/@types/ws/download/@types/ws-8.2.2.tgz#7c5be4decb19500ae6b3d563043cd407bf366c21"
+ resolved "https://registry.npmmirror.com/@types/ws/-/ws-8.2.2.tgz#7c5be4decb19500ae6b3d563043cd407bf366c21"
integrity sha512-NOn5eIcgWLOo6qW8AcuLZ7G8PycXu0xTxxkS6Q18VWFxgPUSOwV0pBj2a/4viNZVu25i7RIB7GttdkAIUUXOOg==
dependencies:
"@types/node" "*"
"@webassemblyjs/ast@1.11.1":
version "1.11.1"
- resolved "https://registry.nlark.com/@webassemblyjs/ast/download/@webassemblyjs/ast-1.11.1.tgz?cache=0&sync_timestamp=1625473459015&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40webassemblyjs%2Fast%2Fdownload%2F%40webassemblyjs%2Fast-1.11.1.tgz#2bfd767eae1a6996f432ff7e8d7fc75679c0b6a7"
- integrity sha1-K/12fq4aaZb0Mv9+jX/HVnnAtqc=
+ resolved "https://registry.npmmirror.com/@webassemblyjs/ast/-/ast-1.11.1.tgz#2bfd767eae1a6996f432ff7e8d7fc75679c0b6a7"
+ integrity sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==
dependencies:
"@webassemblyjs/helper-numbers" "1.11.1"
"@webassemblyjs/helper-wasm-bytecode" "1.11.1"
"@webassemblyjs/floating-point-hex-parser@1.11.1":
version "1.11.1"
- resolved "https://registry.nlark.com/@webassemblyjs/floating-point-hex-parser/download/@webassemblyjs/floating-point-hex-parser-1.11.1.tgz#f6c61a705f0fd7a6aecaa4e8198f23d9dc179e4f"
- integrity sha1-9sYacF8P16auyqToGY8j2dwXnk8=
+ resolved "https://registry.npmmirror.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz#f6c61a705f0fd7a6aecaa4e8198f23d9dc179e4f"
+ integrity sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==
"@webassemblyjs/helper-api-error@1.11.1":
version "1.11.1"
- resolved "https://registry.nlark.com/@webassemblyjs/helper-api-error/download/@webassemblyjs/helper-api-error-1.11.1.tgz?cache=0&sync_timestamp=1625473346773&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40webassemblyjs%2Fhelper-api-error%2Fdownload%2F%40webassemblyjs%2Fhelper-api-error-1.11.1.tgz#1a63192d8788e5c012800ba6a7a46c705288fd16"
- integrity sha1-GmMZLYeI5cASgAump6RscFKI/RY=
+ resolved "https://registry.npmmirror.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz#1a63192d8788e5c012800ba6a7a46c705288fd16"
+ integrity sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==
"@webassemblyjs/helper-buffer@1.11.1":
version "1.11.1"
- resolved "https://registry.nlark.com/@webassemblyjs/helper-buffer/download/@webassemblyjs/helper-buffer-1.11.1.tgz?cache=0&sync_timestamp=1625473414638&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40webassemblyjs%2Fhelper-buffer%2Fdownload%2F%40webassemblyjs%2Fhelper-buffer-1.11.1.tgz#832a900eb444884cde9a7cad467f81500f5e5ab5"
- integrity sha1-gyqQDrREiEzemnytRn+BUA9eWrU=
+ resolved "https://registry.npmmirror.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz#832a900eb444884cde9a7cad467f81500f5e5ab5"
+ integrity sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==
"@webassemblyjs/helper-numbers@1.11.1":
version "1.11.1"
- resolved "https://registry.nlark.com/@webassemblyjs/helper-numbers/download/@webassemblyjs/helper-numbers-1.11.1.tgz?cache=0&sync_timestamp=1625473464260&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40webassemblyjs%2Fhelper-numbers%2Fdownload%2F%40webassemblyjs%2Fhelper-numbers-1.11.1.tgz#64d81da219fbbba1e3bd1bfc74f6e8c4e10a62ae"
- integrity sha1-ZNgdohn7u6HjvRv8dPboxOEKYq4=
+ resolved "https://registry.npmmirror.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz#64d81da219fbbba1e3bd1bfc74f6e8c4e10a62ae"
+ integrity sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==
dependencies:
"@webassemblyjs/floating-point-hex-parser" "1.11.1"
"@webassemblyjs/helper-api-error" "1.11.1"
@@ -2030,13 +2059,13 @@
"@webassemblyjs/helper-wasm-bytecode@1.11.1":
version "1.11.1"
- resolved "https://registry.nlark.com/@webassemblyjs/helper-wasm-bytecode/download/@webassemblyjs/helper-wasm-bytecode-1.11.1.tgz?cache=0&sync_timestamp=1625473415013&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40webassemblyjs%2Fhelper-wasm-bytecode%2Fdownload%2F%40webassemblyjs%2Fhelper-wasm-bytecode-1.11.1.tgz#f328241e41e7b199d0b20c18e88429c4433295e1"
- integrity sha1-8ygkHkHnsZnQsgwY6IQpxEMyleE=
+ resolved "https://registry.npmmirror.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz#f328241e41e7b199d0b20c18e88429c4433295e1"
+ integrity sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==
"@webassemblyjs/helper-wasm-section@1.11.1":
version "1.11.1"
- resolved "https://registry.nlark.com/@webassemblyjs/helper-wasm-section/download/@webassemblyjs/helper-wasm-section-1.11.1.tgz?cache=0&sync_timestamp=1625473466570&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40webassemblyjs%2Fhelper-wasm-section%2Fdownload%2F%40webassemblyjs%2Fhelper-wasm-section-1.11.1.tgz#21ee065a7b635f319e738f0dd73bfbda281c097a"
- integrity sha1-Ie4GWntjXzGec48N1zv72igcCXo=
+ resolved "https://registry.npmmirror.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz#21ee065a7b635f319e738f0dd73bfbda281c097a"
+ integrity sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==
dependencies:
"@webassemblyjs/ast" "1.11.1"
"@webassemblyjs/helper-buffer" "1.11.1"
@@ -2045,27 +2074,27 @@
"@webassemblyjs/ieee754@1.11.1":
version "1.11.1"
- resolved "https://registry.nlark.com/@webassemblyjs/ieee754/download/@webassemblyjs/ieee754-1.11.1.tgz#963929e9bbd05709e7e12243a099180812992614"
- integrity sha1-ljkp6bvQVwnn4SJDoJkYCBKZJhQ=
+ resolved "https://registry.npmmirror.com/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz#963929e9bbd05709e7e12243a099180812992614"
+ integrity sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==
dependencies:
"@xtuc/ieee754" "^1.2.0"
"@webassemblyjs/leb128@1.11.1":
version "1.11.1"
- resolved "https://registry.nlark.com/@webassemblyjs/leb128/download/@webassemblyjs/leb128-1.11.1.tgz?cache=0&sync_timestamp=1625473342433&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40webassemblyjs%2Fleb128%2Fdownload%2F%40webassemblyjs%2Fleb128-1.11.1.tgz#ce814b45574e93d76bae1fb2644ab9cdd9527aa5"
- integrity sha1-zoFLRVdOk9drrh+yZEq5zdlSeqU=
+ resolved "https://registry.npmmirror.com/@webassemblyjs/leb128/-/leb128-1.11.1.tgz#ce814b45574e93d76bae1fb2644ab9cdd9527aa5"
+ integrity sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==
dependencies:
"@xtuc/long" "4.2.2"
"@webassemblyjs/utf8@1.11.1":
version "1.11.1"
- resolved "https://registry.nlark.com/@webassemblyjs/utf8/download/@webassemblyjs/utf8-1.11.1.tgz#d1f8b764369e7c6e6bae350e854dec9a59f0a3ff"
- integrity sha1-0fi3ZDaefG5rrjUOhU3smlnwo/8=
+ resolved "https://registry.npmmirror.com/@webassemblyjs/utf8/-/utf8-1.11.1.tgz#d1f8b764369e7c6e6bae350e854dec9a59f0a3ff"
+ integrity sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==
"@webassemblyjs/wasm-edit@1.11.1":
version "1.11.1"
- resolved "https://registry.nlark.com/@webassemblyjs/wasm-edit/download/@webassemblyjs/wasm-edit-1.11.1.tgz?cache=0&sync_timestamp=1625473463093&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40webassemblyjs%2Fwasm-edit%2Fdownload%2F%40webassemblyjs%2Fwasm-edit-1.11.1.tgz#ad206ebf4bf95a058ce9880a8c092c5dec8193d6"
- integrity sha1-rSBuv0v5WgWM6YgKjAksXeyBk9Y=
+ resolved "https://registry.npmmirror.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz#ad206ebf4bf95a058ce9880a8c092c5dec8193d6"
+ integrity sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==
dependencies:
"@webassemblyjs/ast" "1.11.1"
"@webassemblyjs/helper-buffer" "1.11.1"
@@ -2078,8 +2107,8 @@
"@webassemblyjs/wasm-gen@1.11.1":
version "1.11.1"
- resolved "https://registry.nlark.com/@webassemblyjs/wasm-gen/download/@webassemblyjs/wasm-gen-1.11.1.tgz?cache=0&sync_timestamp=1625473361759&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40webassemblyjs%2Fwasm-gen%2Fdownload%2F%40webassemblyjs%2Fwasm-gen-1.11.1.tgz#86c5ea304849759b7d88c47a32f4f039ae3c8f76"
- integrity sha1-hsXqMEhJdZt9iMR6MvTwOa48j3Y=
+ resolved "https://registry.npmmirror.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz#86c5ea304849759b7d88c47a32f4f039ae3c8f76"
+ integrity sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==
dependencies:
"@webassemblyjs/ast" "1.11.1"
"@webassemblyjs/helper-wasm-bytecode" "1.11.1"
@@ -2089,8 +2118,8 @@
"@webassemblyjs/wasm-opt@1.11.1":
version "1.11.1"
- resolved "https://registry.nlark.com/@webassemblyjs/wasm-opt/download/@webassemblyjs/wasm-opt-1.11.1.tgz#657b4c2202f4cf3b345f8a4c6461c8c2418985f2"
- integrity sha1-ZXtMIgL0zzs0X4pMZGHIwkGJhfI=
+ resolved "https://registry.npmmirror.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz#657b4c2202f4cf3b345f8a4c6461c8c2418985f2"
+ integrity sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==
dependencies:
"@webassemblyjs/ast" "1.11.1"
"@webassemblyjs/helper-buffer" "1.11.1"
@@ -2099,8 +2128,8 @@
"@webassemblyjs/wasm-parser@1.11.1":
version "1.11.1"
- resolved "https://registry.npmmirror.com/@webassemblyjs/wasm-parser/download/@webassemblyjs/wasm-parser-1.11.1.tgz#86ca734534f417e9bd3c67c7a1c75d8be41fb199"
- integrity sha1-hspzRTT0F+m9PGfHocddi+QfsZk=
+ resolved "https://registry.npmmirror.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz#86ca734534f417e9bd3c67c7a1c75d8be41fb199"
+ integrity sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==
dependencies:
"@webassemblyjs/ast" "1.11.1"
"@webassemblyjs/helper-api-error" "1.11.1"
@@ -2111,49 +2140,49 @@
"@webassemblyjs/wast-printer@1.11.1":
version "1.11.1"
- resolved "https://registry.nlark.com/@webassemblyjs/wast-printer/download/@webassemblyjs/wast-printer-1.11.1.tgz#d0c73beda8eec5426f10ae8ef55cee5e7084c2f0"
- integrity sha1-0Mc77ajuxUJvEK6O9VzuXnCEwvA=
+ resolved "https://registry.npmmirror.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz#d0c73beda8eec5426f10ae8ef55cee5e7084c2f0"
+ integrity sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==
dependencies:
"@webassemblyjs/ast" "1.11.1"
"@xtuc/long" "4.2.2"
"@xtuc/ieee754@^1.2.0":
version "1.2.0"
- resolved "https://registry.nlark.com/@xtuc/ieee754/download/@xtuc/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790"
- integrity sha1-7vAUoxRa5Hehy8AM0eVSM23Ot5A=
+ resolved "https://registry.npmmirror.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790"
+ integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==
"@xtuc/long@4.2.2":
version "4.2.2"
- resolved "https://registry.npmmirror.com/@xtuc/long/download/@xtuc/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d"
- integrity sha1-0pHGpOl5ibXGHZrPOWrk/hM6cY0=
+ resolved "https://registry.npmmirror.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d"
+ integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==
accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7:
- version "1.3.7"
- resolved "https://registry.nlark.com/accepts/download/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd"
- integrity sha1-UxvHJlF6OytB+FACHGzBXqq1B80=
+ version "1.3.8"
+ resolved "https://registry.npmmirror.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e"
+ integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==
dependencies:
- mime-types "~2.1.24"
- negotiator "0.6.2"
+ mime-types "~2.1.34"
+ negotiator "0.6.3"
acorn-dynamic-import@^4.0.0:
version "4.0.0"
- resolved "https://registry.npm.taobao.org/acorn-dynamic-import/download/acorn-dynamic-import-4.0.0.tgz#482210140582a36b83c3e342e1cfebcaa9240948"
- integrity sha1-SCIQFAWCo2uDw+NC4c/ryqkkCUg=
+ resolved "https://registry.npmmirror.com/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz#482210140582a36b83c3e342e1cfebcaa9240948"
+ integrity sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw==
acorn-import-assertions@^1.7.6:
version "1.8.0"
- resolved "https://registry.npmmirror.com/acorn-import-assertions/download/acorn-import-assertions-1.8.0.tgz?cache=0&sync_timestamp=1633349660084&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Facorn-import-assertions%2Fdownload%2Facorn-import-assertions-1.8.0.tgz#ba2b5939ce62c238db6d93d81c9b111b29b855e9"
- integrity sha1-uitZOc5iwjjbbZPYHJsRGym4Vek=
+ resolved "https://registry.npmmirror.com/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz#ba2b5939ce62c238db6d93d81c9b111b29b855e9"
+ integrity sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==
acorn-jsx@^5.0.1:
version "5.3.2"
- resolved "https://registry.nlark.com/acorn-jsx/download/acorn-jsx-5.3.2.tgz?cache=0&sync_timestamp=1625793240297&other_urls=https%3A%2F%2Fregistry.nlark.com%2Facorn-jsx%2Fdownload%2Facorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937"
- integrity sha1-ftW7VZCLOy8bxVxq8WU7rafweTc=
+ resolved "https://registry.npmmirror.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937"
+ integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
acorn-node@^1.6.1:
version "1.8.2"
- resolved "https://registry.nlark.com/acorn-node/download/acorn-node-1.8.2.tgz#114c95d64539e53dede23de8b9d96df7c7ae2af8"
- integrity sha1-EUyV1kU55T3t4j3oudlt98euKvg=
+ resolved "https://registry.npmmirror.com/acorn-node/-/acorn-node-1.8.2.tgz#114c95d64539e53dede23de8b9d96df7c7ae2af8"
+ integrity sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==
dependencies:
acorn "^7.0.0"
acorn-walk "^7.0.0"
@@ -2161,64 +2190,64 @@ acorn-node@^1.6.1:
acorn-walk@^7.0.0:
version "7.2.0"
- resolved "https://registry.nlark.com/acorn-walk/download/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc"
- integrity sha1-DeiJpgEgOQmw++B7iTjcIdLpZ7w=
+ resolved "https://registry.npmmirror.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc"
+ integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==
acorn-walk@^8.0.0:
version "8.2.0"
- resolved "https://registry.nlark.com/acorn-walk/download/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1"
- integrity sha1-dBIQ8uJCZFRQiFOi9E0KuDt/acE=
+ resolved "https://registry.npmmirror.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1"
+ integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==
acorn@^6.1.1:
version "6.4.2"
- resolved "https://registry.npmmirror.com/acorn/download/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6"
- integrity sha1-NYZv1xBSjpLeEM8GAWSY5H454eY=
+ resolved "https://registry.npmmirror.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6"
+ integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==
acorn@^7.0.0:
version "7.4.1"
- resolved "https://registry.npmmirror.com/acorn/download/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa"
- integrity sha1-/q7SVZc9LndVW4PbwIhRpsY1IPo=
+ resolved "https://registry.npmmirror.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa"
+ integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==
acorn@^8.0.4, acorn@^8.4.1:
version "8.7.0"
- resolved "https://registry.npmmirror.com/acorn/download/acorn-8.7.0.tgz#90951fde0f8f09df93549481e5fc141445b791cf"
+ resolved "https://registry.npmmirror.com/acorn/-/acorn-8.7.0.tgz#90951fde0f8f09df93549481e5fc141445b791cf"
integrity sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==
address@^1.0.1, address@^1.1.2:
version "1.1.2"
- resolved "https://registry.nlark.com/address/download/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6"
- integrity sha1-vxEWycdYxRt6kz0pa3LCIe2UKLY=
+ resolved "https://registry.npmmirror.com/address/-/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6"
+ integrity sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA==
aggregate-error@^3.0.0:
version "3.1.0"
- resolved "https://registry.nlark.com/aggregate-error/download/aggregate-error-3.1.0.tgz?cache=0&sync_timestamp=1618847154458&other_urls=https%3A%2F%2Fregistry.nlark.com%2Faggregate-error%2Fdownload%2Faggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a"
- integrity sha1-kmcP9Q9TWb23o+DUDQ7DDFc3aHo=
+ resolved "https://registry.npmmirror.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a"
+ integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==
dependencies:
clean-stack "^2.0.0"
indent-string "^4.0.0"
ajv-formats@^2.1.1:
version "2.1.1"
- resolved "https://registry.npmmirror.com/ajv-formats/download/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520"
- integrity sha1-bmaUAGWet0lzu/LjMycYCgmWtSA=
+ resolved "https://registry.npmmirror.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520"
+ integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==
dependencies:
ajv "^8.0.0"
ajv-keywords@^3.4.1, ajv-keywords@^3.5.2:
version "3.5.2"
- resolved "https://registry.npmmirror.com/ajv-keywords/download/ajv-keywords-3.5.2.tgz?cache=0&sync_timestamp=1637524372087&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fajv-keywords%2Fdownload%2Fajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d"
- integrity sha1-MfKdpatuANHC0yms97WSlhTVAU0=
+ resolved "https://registry.npmmirror.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d"
+ integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==
ajv-keywords@^5.0.0:
version "5.1.0"
- resolved "https://registry.npmmirror.com/ajv-keywords/download/ajv-keywords-5.1.0.tgz?cache=0&sync_timestamp=1637524372087&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fajv-keywords%2Fdownload%2Fajv-keywords-5.1.0.tgz#69d4d385a4733cdbeab44964a1170a88f87f0e16"
+ resolved "https://registry.npmmirror.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz#69d4d385a4733cdbeab44964a1170a88f87f0e16"
integrity sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==
dependencies:
fast-deep-equal "^3.1.3"
ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5:
version "6.12.6"
- resolved "https://registry.npmmirror.com/ajv/download/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4"
+ resolved "https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4"
integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
dependencies:
fast-deep-equal "^3.1.1"
@@ -2227,9 +2256,9 @@ ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5:
uri-js "^4.2.2"
ajv@^8.0.0, ajv@^8.8.0:
- version "8.8.2"
- resolved "https://registry.npmmirror.com/ajv/download/ajv-8.8.2.tgz#01b4fef2007a28bf75f0b7fc009f62679de4abbb"
- integrity sha512-x9VuX+R/jcFj1DHo/fCp99esgGDWiHENrKxaCENuCxpoMCmAt/COCGVDwA7kleEpEzJjDnvh3yGoOuLu0Dtllw==
+ version "8.10.0"
+ resolved "https://registry.npmmirror.com/ajv/-/ajv-8.10.0.tgz#e573f719bd3af069017e3b66538ab968d040e54d"
+ integrity sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw==
dependencies:
fast-deep-equal "^3.1.1"
json-schema-traverse "^1.0.0"
@@ -2238,131 +2267,134 @@ ajv@^8.0.0, ajv@^8.8.0:
algoliasearch-helper@^3.5.5:
version "3.7.0"
- resolved "https://registry.npmmirror.com/algoliasearch-helper/download/algoliasearch-helper-3.7.0.tgz#c0a0493df84d850360f664ad7a9d4fc78a94fd78"
+ resolved "https://registry.npmmirror.com/algoliasearch-helper/-/algoliasearch-helper-3.7.0.tgz#c0a0493df84d850360f664ad7a9d4fc78a94fd78"
integrity sha512-XJ3QfERBLfeVCyTVx80gon7r3/rgm/CE8Ha1H7cbablRe/X7SfYQ14g/eO+MhjVKIQp+gy9oC6G5ilmLwS1k6w==
dependencies:
"@algolia/events" "^4.0.1"
algoliasearch@^4.0.0, algoliasearch@^4.11.0:
- version "4.11.0"
- resolved "https://registry.npmmirror.com/algoliasearch/download/algoliasearch-4.11.0.tgz?cache=0&sync_timestamp=1634738409044&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Falgoliasearch%2Fdownload%2Falgoliasearch-4.11.0.tgz#234befb3ac355c094077f0edf3777240b1ee013c"
- integrity sha1-I0vvs6w1XAlAd/Dt83dyQLHuATw=
+ version "4.12.1"
+ resolved "https://registry.npmmirror.com/algoliasearch/-/algoliasearch-4.12.1.tgz#574a2c5424c4b6681c026928fb810be2d2ec3924"
+ integrity sha512-c0dM1g3zZBJrkzE5GA/Nu1y3fFxx3LCzxKzcmp2dgGS8P4CjszB/l3lsSh2MSrrK1Hn/KV4BlbBMXtYgG1Bfrw==
dependencies:
- "@algolia/cache-browser-local-storage" "4.11.0"
- "@algolia/cache-common" "4.11.0"
- "@algolia/cache-in-memory" "4.11.0"
- "@algolia/client-account" "4.11.0"
- "@algolia/client-analytics" "4.11.0"
- "@algolia/client-common" "4.11.0"
- "@algolia/client-personalization" "4.11.0"
- "@algolia/client-search" "4.11.0"
- "@algolia/logger-common" "4.11.0"
- "@algolia/logger-console" "4.11.0"
- "@algolia/requester-browser-xhr" "4.11.0"
- "@algolia/requester-common" "4.11.0"
- "@algolia/requester-node-http" "4.11.0"
- "@algolia/transporter" "4.11.0"
-
-alphanum-sort@^1.0.2:
- version "1.0.2"
- resolved "https://registry.nlark.com/alphanum-sort/download/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3"
- integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=
+ "@algolia/cache-browser-local-storage" "4.12.1"
+ "@algolia/cache-common" "4.12.1"
+ "@algolia/cache-in-memory" "4.12.1"
+ "@algolia/client-account" "4.12.1"
+ "@algolia/client-analytics" "4.12.1"
+ "@algolia/client-common" "4.12.1"
+ "@algolia/client-personalization" "4.12.1"
+ "@algolia/client-search" "4.12.1"
+ "@algolia/logger-common" "4.12.1"
+ "@algolia/logger-console" "4.12.1"
+ "@algolia/requester-browser-xhr" "4.12.1"
+ "@algolia/requester-common" "4.12.1"
+ "@algolia/requester-node-http" "4.12.1"
+ "@algolia/transporter" "4.12.1"
ansi-align@^3.0.0:
version "3.0.1"
- resolved "https://registry.npmmirror.com/ansi-align/download/ansi-align-3.0.1.tgz?cache=0&sync_timestamp=1632743673432&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fansi-align%2Fdownload%2Fansi-align-3.0.1.tgz#0cdf12e111ace773a86e9a1fad1225c43cb19a59"
- integrity sha1-DN8S4RGs53OobpofrRIlxDyxmlk=
+ resolved "https://registry.npmmirror.com/ansi-align/-/ansi-align-3.0.1.tgz#0cdf12e111ace773a86e9a1fad1225c43cb19a59"
+ integrity sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==
dependencies:
string-width "^4.1.0"
ansi-html-community@^0.0.8:
version "0.0.8"
- resolved "https://registry.nlark.com/ansi-html-community/download/ansi-html-community-0.0.8.tgz#69fbc4d6ccbe383f9736934ae34c3f8290f1bf41"
- integrity sha1-afvE1sy+OD+XNpNK40w/gpDxv0E=
+ resolved "https://registry.npmmirror.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz#69fbc4d6ccbe383f9736934ae34c3f8290f1bf41"
+ integrity sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==
ansi-regex@^5.0.1:
version "5.0.1"
- resolved "https://registry.nlark.com/ansi-regex/download/ansi-regex-5.0.1.tgz?cache=0&sync_timestamp=1631634988487&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fansi-regex%2Fdownload%2Fansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
- integrity sha1-CCyyyJyf6GWaMRpTvWpNxTAdswQ=
+ resolved "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
+ integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
ansi-regex@^6.0.1:
version "6.0.1"
- resolved "https://registry.nlark.com/ansi-regex/download/ansi-regex-6.0.1.tgz?cache=0&sync_timestamp=1631634988487&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fansi-regex%2Fdownload%2Fansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a"
- integrity sha1-MYPjj66aZdfLXlOUXNWJfQJgoGo=
+ resolved "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a"
+ integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==
ansi-styles@^3.2.1:
version "3.2.1"
- resolved "https://registry.nlark.com/ansi-styles/download/ansi-styles-3.2.1.tgz?cache=0&sync_timestamp=1618995547052&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fansi-styles%2Fdownload%2Fansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
- integrity sha1-QfuyAkPlCxK+DwS43tvwdSDOhB0=
+ resolved "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
+ integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
dependencies:
color-convert "^1.9.0"
ansi-styles@^4.0.0, ansi-styles@^4.1.0:
version "4.3.0"
- resolved "https://registry.nlark.com/ansi-styles/download/ansi-styles-4.3.0.tgz?cache=0&sync_timestamp=1618995547052&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fansi-styles%2Fdownload%2Fansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
- integrity sha1-7dgDYornHATIWuegkG7a00tkiTc=
+ resolved "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
+ integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
dependencies:
color-convert "^2.0.1"
anymatch@~3.1.2:
version "3.1.2"
- resolved "https://registry.nlark.com/anymatch/download/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716"
- integrity sha1-wFV8CWrzLxBhmPT04qODU343hxY=
+ resolved "https://registry.npmmirror.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716"
+ integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==
dependencies:
normalize-path "^3.0.0"
picomatch "^2.0.4"
arg@^5.0.0, arg@^5.0.1:
version "5.0.1"
- resolved "https://registry.npmmirror.com/arg/download/arg-5.0.1.tgz#eb0c9a8f77786cad2af8ff2b862899842d7b6adb"
+ resolved "https://registry.npmmirror.com/arg/-/arg-5.0.1.tgz#eb0c9a8f77786cad2af8ff2b862899842d7b6adb"
integrity sha512-e0hDa9H2Z9AwFkk2qDlwhoMYE4eToKarchkQHovNdLTCYMHZHeRjI71crOh+dio4K6u1IcwubQqo79Ga4CyAQA==
argparse@^1.0.7:
version "1.0.10"
- resolved "https://registry.nlark.com/argparse/download/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
- integrity sha1-vNZ5HqWuCXJeF+WtmIE0zUCz2RE=
+ resolved "https://registry.npmmirror.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
+ integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==
dependencies:
sprintf-js "~1.0.2"
argparse@^2.0.1:
version "2.0.1"
- resolved "https://registry.nlark.com/argparse/download/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38"
- integrity sha1-JG9Q88p4oyQPbJl+ipvR6sSeSzg=
+ resolved "https://registry.npmmirror.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38"
+ integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
array-flatten@1.1.1:
version "1.1.1"
- resolved "https://registry.nlark.com/array-flatten/download/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2"
- integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=
+ resolved "https://registry.npmmirror.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2"
+ integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==
array-flatten@^2.1.0:
version "2.1.2"
- resolved "https://registry.nlark.com/array-flatten/download/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099"
- integrity sha1-JO+AoowaiTYX4hSbDG0NeIKTsJk=
+ resolved "https://registry.npmmirror.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099"
+ integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==
array-union@^2.1.0:
version "2.1.0"
- resolved "https://registry.nlark.com/array-union/download/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d"
- integrity sha1-t5hCCtvrHego2ErNii4j0+/oXo0=
+ resolved "https://registry.npmmirror.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d"
+ integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==
+
+asciinema-player@^3.0.0-rc.1:
+ version "3.0.0-rc.1"
+ resolved "https://registry.npmmirror.com/asciinema-player/-/asciinema-player-3.0.0-rc.1.tgz#dfb6394307490ecfac49bead9381de5c52ebf243"
+ integrity sha512-r0yRCnifQ+UuyInLBwanupOUk7FPIs1NgD3D+egaSCXzK1+PSQf0aHo/dfpZFY2sml9mA0cqUHJFQ4KnuUJS1Q==
+ dependencies:
+ "@babel/runtime" "^7.15.4"
+ solid-js "^1.1.6"
async@^2.6.2:
version "2.6.3"
- resolved "https://registry.npmmirror.com/async/download/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff"
- integrity sha1-1yYl4jRKNlbjo61Pp0n6gymdgv8=
+ resolved "https://registry.npmmirror.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff"
+ integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==
dependencies:
lodash "^4.17.14"
at-least-node@^1.0.0:
version "1.0.0"
- resolved "https://registry.npmmirror.com/at-least-node/download/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2"
- integrity sha1-YCzUtG6EStTv/JKoARo8RuAjjcI=
+ resolved "https://registry.npmmirror.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2"
+ integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==
autoprefixer@^10.3.1, autoprefixer@^10.3.5, autoprefixer@^10.3.7:
- version "10.4.1"
- resolved "https://registry.npmmirror.com/autoprefixer/download/autoprefixer-10.4.1.tgz#1735959d6462420569bc42408016acbc56861c12"
- integrity sha512-B3ZEG7wtzXDRCEFsan7HmR2AeNsxdJB0+sEC0Hc5/c2NbhJqPwuZm+tn233GBVw82L+6CtD6IPSfVruwKjfV3A==
+ version "10.4.2"
+ resolved "https://registry.npmmirror.com/autoprefixer/-/autoprefixer-10.4.2.tgz#25e1df09a31a9fba5c40b578936b90d35c9d4d3b"
+ integrity sha512-9fOPpHKuDW1w/0EKfRmVnxTDt8166MAnLI3mgZ1JCnhNtYWxcJ6Ud5CO/AVOZi/AvFa8DY9RTy3h3+tFBlrrdQ==
dependencies:
browserslist "^4.19.1"
- caniuse-lite "^1.0.30001294"
+ caniuse-lite "^1.0.30001297"
fraction.js "^4.1.2"
normalize-range "^0.1.2"
picocolors "^1.0.0"
@@ -2370,15 +2402,15 @@ autoprefixer@^10.3.1, autoprefixer@^10.3.5, autoprefixer@^10.3.7:
axios@^0.21.1:
version "0.21.4"
- resolved "https://registry.npmmirror.com/axios/download/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575"
+ resolved "https://registry.npmmirror.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575"
integrity sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==
dependencies:
follow-redirects "^1.14.0"
babel-loader@^8.2.2:
version "8.2.3"
- resolved "https://registry.npmmirror.com/babel-loader/download/babel-loader-8.2.3.tgz#8986b40f1a64cacfcb4b8429320085ef68b1342d"
- integrity sha1-iYa0Dxpkys/LS4QpMgCF72ixNC0=
+ resolved "https://registry.npmmirror.com/babel-loader/-/babel-loader-8.2.3.tgz#8986b40f1a64cacfcb4b8429320085ef68b1342d"
+ integrity sha512-n4Zeta8NC3QAsuyiizu0GkmRcQ6clkV9WFUnUf1iXP//IeSKbWjofW3UHyZVwlOB4y039YQKefawyTn64Zwbuw==
dependencies:
find-cache-dir "^3.3.1"
loader-utils "^1.4.0"
@@ -2387,90 +2419,90 @@ babel-loader@^8.2.2:
babel-plugin-apply-mdx-type-prop@1.6.22:
version "1.6.22"
- resolved "https://registry.npm.taobao.org/babel-plugin-apply-mdx-type-prop/download/babel-plugin-apply-mdx-type-prop-1.6.22.tgz#d216e8fd0de91de3f1478ef3231e05446bc8705b"
- integrity sha1-0hbo/Q3pHePxR47zIx4FRGvIcFs=
+ resolved "https://registry.npmmirror.com/babel-plugin-apply-mdx-type-prop/-/babel-plugin-apply-mdx-type-prop-1.6.22.tgz#d216e8fd0de91de3f1478ef3231e05446bc8705b"
+ integrity sha512-VefL+8o+F/DfK24lPZMtJctrCVOfgbqLAGZSkxwhazQv4VxPg3Za/i40fu22KR2m8eEda+IfSOlPLUSIiLcnCQ==
dependencies:
"@babel/helper-plugin-utils" "7.10.4"
"@mdx-js/util" "1.6.22"
babel-plugin-dynamic-import-node@2.3.0:
version "2.3.0"
- resolved "https://registry.nlark.com/babel-plugin-dynamic-import-node/download/babel-plugin-dynamic-import-node-2.3.0.tgz#f00f507bdaa3c3e3ff6e7e5e98d90a7acab96f7f"
- integrity sha1-8A9Qe9qjw+P/bn5emNkKesq5b38=
+ resolved "https://registry.npmmirror.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz#f00f507bdaa3c3e3ff6e7e5e98d90a7acab96f7f"
+ integrity sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ==
dependencies:
object.assign "^4.1.0"
babel-plugin-dynamic-import-node@^2.3.3:
version "2.3.3"
- resolved "https://registry.nlark.com/babel-plugin-dynamic-import-node/download/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3"
- integrity sha1-hP2hnJduxcbe/vV/lCez3vZuF6M=
+ resolved "https://registry.npmmirror.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3"
+ integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==
dependencies:
object.assign "^4.1.0"
babel-plugin-extract-import-names@1.6.22:
version "1.6.22"
- resolved "https://registry.nlark.com/babel-plugin-extract-import-names/download/babel-plugin-extract-import-names-1.6.22.tgz#de5f9a28eb12f3eb2578bf74472204e66d1a13dc"
- integrity sha1-3l+aKOsS8+sleL90RyIE5m0aE9w=
+ resolved "https://registry.npmmirror.com/babel-plugin-extract-import-names/-/babel-plugin-extract-import-names-1.6.22.tgz#de5f9a28eb12f3eb2578bf74472204e66d1a13dc"
+ integrity sha512-yJ9BsJaISua7d8zNT7oRG1ZLBJCIdZ4PZqmH8qa9N5AK01ifk3fnkc98AXhtzE7UkfCsEumvoQWgoYLhOnJ7jQ==
dependencies:
"@babel/helper-plugin-utils" "7.10.4"
babel-plugin-polyfill-corejs2@^0.3.0:
- version "0.3.0"
- resolved "https://registry.npmmirror.com/babel-plugin-polyfill-corejs2/download/babel-plugin-polyfill-corejs2-0.3.0.tgz?cache=0&sync_timestamp=1636800035591&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fbabel-plugin-polyfill-corejs2%2Fdownload%2Fbabel-plugin-polyfill-corejs2-0.3.0.tgz#407082d0d355ba565af24126fb6cb8e9115251fd"
- integrity sha512-wMDoBJ6uG4u4PNFh72Ty6t3EgfA91puCuAwKIazbQlci+ENb/UU9A3xG5lutjUIiXCIn1CY5L15r9LimiJyrSA==
+ version "0.3.1"
+ resolved "https://registry.npmmirror.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz#440f1b70ccfaabc6b676d196239b138f8a2cfba5"
+ integrity sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w==
dependencies:
"@babel/compat-data" "^7.13.11"
- "@babel/helper-define-polyfill-provider" "^0.3.0"
+ "@babel/helper-define-polyfill-provider" "^0.3.1"
semver "^6.1.1"
-babel-plugin-polyfill-corejs3@^0.4.0:
- version "0.4.0"
- resolved "https://registry.npmmirror.com/babel-plugin-polyfill-corejs3/download/babel-plugin-polyfill-corejs3-0.4.0.tgz#0b571f4cf3d67f911512f5c04842a7b8e8263087"
- integrity sha512-YxFreYwUfglYKdLUGvIF2nJEsGwj+RhWSX/ije3D2vQPOXuyMLMtg/cCGMDpOA7Nd+MwlNdnGODbd2EwUZPlsw==
+babel-plugin-polyfill-corejs3@^0.5.0:
+ version "0.5.2"
+ resolved "https://registry.npmmirror.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz#aabe4b2fa04a6e038b688c5e55d44e78cd3a5f72"
+ integrity sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ==
dependencies:
- "@babel/helper-define-polyfill-provider" "^0.3.0"
- core-js-compat "^3.18.0"
+ "@babel/helper-define-polyfill-provider" "^0.3.1"
+ core-js-compat "^3.21.0"
babel-plugin-polyfill-regenerator@^0.3.0:
- version "0.3.0"
- resolved "https://registry.npmmirror.com/babel-plugin-polyfill-regenerator/download/babel-plugin-polyfill-regenerator-0.3.0.tgz?cache=0&sync_timestamp=1636800035395&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fbabel-plugin-polyfill-regenerator%2Fdownload%2Fbabel-plugin-polyfill-regenerator-0.3.0.tgz#9ebbcd7186e1a33e21c5e20cae4e7983949533be"
- integrity sha512-dhAPTDLGoMW5/84wkgwiLRwMnio2i1fUe53EuvtKMv0pn2p3S8OCoV1xAzfJPl0KOX7IB89s2ib85vbYiea3jg==
+ version "0.3.1"
+ resolved "https://registry.npmmirror.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz#2c0678ea47c75c8cc2fbb1852278d8fb68233990"
+ integrity sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==
dependencies:
- "@babel/helper-define-polyfill-provider" "^0.3.0"
+ "@babel/helper-define-polyfill-provider" "^0.3.1"
bail@^1.0.0:
version "1.0.5"
- resolved "https://registry.npmmirror.com/bail/download/bail-1.0.5.tgz?cache=0&sync_timestamp=1636274898174&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fbail%2Fdownload%2Fbail-1.0.5.tgz#b6fa133404a392cbc1f8c4bf63f5953351e7a776"
- integrity sha1-tvoTNASjksvB+MS/Y/WVM1Hnp3Y=
+ resolved "https://registry.npmmirror.com/bail/-/bail-1.0.5.tgz#b6fa133404a392cbc1f8c4bf63f5953351e7a776"
+ integrity sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==
balanced-match@^1.0.0:
version "1.0.2"
- resolved "https://registry.nlark.com/balanced-match/download/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
- integrity sha1-6D46fj8wCzTLnYf2FfoMvzV2kO4=
+ resolved "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
+ integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
batch@0.6.1:
version "0.6.1"
- resolved "https://registry.npmmirror.com/batch/download/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16"
+ resolved "https://registry.npmmirror.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16"
integrity sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==
big.js@^5.2.2:
version "5.2.2"
- resolved "https://registry.npmmirror.com/big.js/download/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328"
- integrity sha1-ZfCvOC9Xi83HQr2cKB6cstd2gyg=
+ resolved "https://registry.npmmirror.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328"
+ integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==
binary-extensions@^2.0.0:
version "2.2.0"
- resolved "https://registry.nlark.com/binary-extensions/download/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d"
- integrity sha1-dfUC7q+f/eQvyYgpZFvk6na9ni0=
+ resolved "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d"
+ integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==
bluebird@^3.7.1:
version "3.7.2"
- resolved "https://registry.nlark.com/bluebird/download/bluebird-3.7.2.tgz?cache=0&sync_timestamp=1622605302685&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fbluebird%2Fdownload%2Fbluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f"
- integrity sha1-nyKcFb4nJFT/qXOs4NvueaGww28=
+ resolved "https://registry.npmmirror.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f"
+ integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==
body-parser@1.19.1:
version "1.19.1"
- resolved "https://registry.npmmirror.com/body-parser/download/body-parser-1.19.1.tgz#1499abbaa9274af3ecc9f6f10396c995943e31d4"
+ resolved "https://registry.npmmirror.com/body-parser/-/body-parser-1.19.1.tgz#1499abbaa9274af3ecc9f6f10396c995943e31d4"
integrity sha512-8ljfQi5eBk8EJfECMrgqNGWPEY5jWP+1IzkzkGdFFEwFQZZyaZ21UqdaHktgiMlH0xLHqIFtE/u2OYE5dOtViA==
dependencies:
bytes "3.1.1"
@@ -2486,8 +2518,8 @@ body-parser@1.19.1:
bonjour@^3.5.0:
version "3.5.0"
- resolved "https://registry.nlark.com/bonjour/download/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5"
- integrity sha1-jokKGD2O6aI5OzhExpGkK897yfU=
+ resolved "https://registry.npmmirror.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5"
+ integrity sha512-RaVTblr+OnEli0r/ud8InrU7D+G0y6aJhlxaLa6Pwty4+xoxboF1BsUI45tujvRpbj9dQVoglChqonGAsjEBYg==
dependencies:
array-flatten "^2.1.0"
deep-equal "^1.0.1"
@@ -2498,13 +2530,13 @@ bonjour@^3.5.0:
boolbase@^1.0.0, boolbase@~1.0.0:
version "1.0.0"
- resolved "https://registry.npm.taobao.org/boolbase/download/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e"
- integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24=
+ resolved "https://registry.npmmirror.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e"
+ integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==
boxen@^5.0.0, boxen@^5.0.1:
version "5.1.2"
- resolved "https://registry.npmmirror.com/boxen/download/boxen-5.1.2.tgz?cache=0&sync_timestamp=1634028640223&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fboxen%2Fdownload%2Fboxen-5.1.2.tgz#788cb686fc83c1f486dfa8a40c68fc2b831d2b50"
- integrity sha1-eIy2hvyDwfSG36ikDGj8K4MdK1A=
+ resolved "https://registry.npmmirror.com/boxen/-/boxen-5.1.2.tgz#788cb686fc83c1f486dfa8a40c68fc2b831d2b50"
+ integrity sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==
dependencies:
ansi-align "^3.0.0"
camelcase "^6.2.0"
@@ -2517,22 +2549,22 @@ boxen@^5.0.0, boxen@^5.0.1:
brace-expansion@^1.1.7:
version "1.1.11"
- resolved "https://registry.npm.taobao.org/brace-expansion/download/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
- integrity sha1-PH/L9SnYcibz0vUrlm/1Jx60Qd0=
+ resolved "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
+ integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
dependencies:
balanced-match "^1.0.0"
concat-map "0.0.1"
braces@^3.0.1, braces@~3.0.2:
version "3.0.2"
- resolved "https://registry.nlark.com/braces/download/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
- integrity sha1-NFThpGLujVmeI23zNs2epPiv4Qc=
+ resolved "https://registry.npmmirror.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
+ integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
dependencies:
fill-range "^7.0.1"
-browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.16.0, browserslist@^4.16.5, browserslist@^4.16.6, browserslist@^4.17.5, browserslist@^4.19.1:
+browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.16.5, browserslist@^4.16.6, browserslist@^4.17.5, browserslist@^4.19.1:
version "4.19.1"
- resolved "https://registry.npmmirror.com/browserslist/download/browserslist-4.19.1.tgz#4ac0435b35ab655896c31d53018b6dd5e9e4c9a3"
+ resolved "https://registry.npmmirror.com/browserslist/-/browserslist-4.19.1.tgz#4ac0435b35ab655896c31d53018b6dd5e9e4c9a3"
integrity sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A==
dependencies:
caniuse-lite "^1.0.30001286"
@@ -2543,8 +2575,8 @@ browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.16.0, browserslist@^4
buble-jsx-only@^0.19.8:
version "0.19.8"
- resolved "https://registry.nlark.com/buble-jsx-only/download/buble-jsx-only-0.19.8.tgz#6e3524aa0f1c523de32496ac9aceb9cc2b493867"
- integrity sha1-bjUkqg8cUj3jJJasms65zCtJOGc=
+ resolved "https://registry.npmmirror.com/buble-jsx-only/-/buble-jsx-only-0.19.8.tgz#6e3524aa0f1c523de32496ac9aceb9cc2b493867"
+ integrity sha512-7AW19pf7PrKFnGTEDzs6u9+JZqQwM1VnLS19OlqYDhXomtFFknnoQJAPHeg84RMFWAvOhYrG7harizJNwUKJsA==
dependencies:
acorn "^6.1.1"
acorn-dynamic-import "^4.0.0"
@@ -2556,28 +2588,28 @@ buble-jsx-only@^0.19.8:
buffer-from@^1.0.0:
version "1.1.2"
- resolved "https://registry.nlark.com/buffer-from/download/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5"
- integrity sha1-KxRqb9cugLT1XSVfNe1Zo6mkG9U=
+ resolved "https://registry.npmmirror.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5"
+ integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==
buffer-indexof@^1.0.0:
version "1.1.1"
- resolved "https://registry.npm.taobao.org/buffer-indexof/download/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c"
- integrity sha1-Uvq8xqYG0aADAoAmSO9o9jnaJow=
+ resolved "https://registry.npmmirror.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c"
+ integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==
bytes@3.0.0:
version "3.0.0"
- resolved "https://registry.npmmirror.com/bytes/download/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048"
- integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=
+ resolved "https://registry.npmmirror.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048"
+ integrity sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==
bytes@3.1.1:
version "3.1.1"
- resolved "https://registry.npmmirror.com/bytes/download/bytes-3.1.1.tgz#3f018291cb4cbad9accb6e6970bca9c8889e879a"
+ resolved "https://registry.npmmirror.com/bytes/-/bytes-3.1.1.tgz#3f018291cb4cbad9accb6e6970bca9c8889e879a"
integrity sha512-dWe4nWO/ruEOY7HkUJ5gFt1DCFV9zPRoJr8pV0/ASQermOZjtq8jMjOprC0Kd10GLN+l7xaUPvxzJFWtxGu8Fg==
cacheable-request@^6.0.0:
version "6.1.0"
- resolved "https://registry.nlark.com/cacheable-request/download/cacheable-request-6.1.0.tgz?cache=0&sync_timestamp=1623237592260&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fcacheable-request%2Fdownload%2Fcacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912"
- integrity sha1-IP+4vRYrpL4R6VZ9gj22UQUsqRI=
+ resolved "https://registry.npmmirror.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912"
+ integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==
dependencies:
clone-response "^1.0.2"
get-stream "^5.1.0"
@@ -2589,59 +2621,59 @@ cacheable-request@^6.0.0:
call-bind@^1.0.0, call-bind@^1.0.2:
version "1.0.2"
- resolved "https://registry.nlark.com/call-bind/download/call-bind-1.0.2.tgz?cache=0&sync_timestamp=1622604538146&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fcall-bind%2Fdownload%2Fcall-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c"
- integrity sha1-sdTonmiBGcPJqQOtMKuy9qkZvjw=
+ resolved "https://registry.npmmirror.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c"
+ integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==
dependencies:
function-bind "^1.1.1"
get-intrinsic "^1.0.2"
callsites@^3.0.0:
version "3.1.0"
- resolved "https://registry.nlark.com/callsites/download/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
- integrity sha1-s2MKvYlDQy9Us/BRkjjjPNffL3M=
+ resolved "https://registry.npmmirror.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
+ integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
camel-case@^4.1.2:
version "4.1.2"
- resolved "https://registry.nlark.com/camel-case/download/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a"
- integrity sha1-lygHKpVPgFIoIlpt7qazhGHhvVo=
+ resolved "https://registry.npmmirror.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a"
+ integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==
dependencies:
pascal-case "^3.1.2"
tslib "^2.0.3"
camelcase-css@2.0.1, camelcase-css@^2.0.1:
version "2.0.1"
- resolved "https://registry.npm.taobao.org/camelcase-css/download/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5"
- integrity sha1-7pePaUeRTMMMa0R0G27R338EP9U=
+ resolved "https://registry.npmmirror.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5"
+ integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==
camelcase@^6.2.0:
version "6.3.0"
- resolved "https://registry.npmmirror.com/camelcase/download/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a"
+ resolved "https://registry.npmmirror.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a"
integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==
caniuse-api@^3.0.0:
version "3.0.0"
- resolved "https://registry.npmmirror.com/caniuse-api/download/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0"
- integrity sha1-Xk2Q4idJYdRikZl99Znj7QCO5MA=
+ resolved "https://registry.npmmirror.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0"
+ integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==
dependencies:
browserslist "^4.0.0"
caniuse-lite "^1.0.0"
lodash.memoize "^4.1.2"
lodash.uniq "^4.5.0"
-caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001286, caniuse-lite@^1.0.30001294:
- version "1.0.30001296"
- resolved "https://registry.npmmirror.com/caniuse-lite/download/caniuse-lite-1.0.30001296.tgz#d99f0f3bee66544800b93d261c4be55a35f1cec8"
- integrity sha512-WfrtPEoNSoeATDlf4y3QvkwiELl9GyPLISV5GejTbbQRtQx4LhsXmc9IQ6XCL2d7UxCyEzToEZNMeqR79OUw8Q==
+caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001286, caniuse-lite@^1.0.30001297:
+ version "1.0.30001309"
+ resolved "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001309.tgz#e0ee78b9bec0704f67304b00ff3c5c0c768a9f62"
+ integrity sha512-Pl8vfigmBXXq+/yUz1jUwULeq9xhMJznzdc/xwl4WclDAuebcTHVefpz8lE/bMI+UN7TOkSSe7B7RnZd6+dzjA==
ccount@^1.0.0, ccount@^1.0.3:
version "1.1.0"
- resolved "https://registry.npmmirror.com/ccount/download/ccount-1.1.0.tgz#246687debb6014735131be8abab2d93898f8d043"
- integrity sha1-JGaH3rtgFHNRMb6KurLZOJj40EM=
+ resolved "https://registry.npmmirror.com/ccount/-/ccount-1.1.0.tgz#246687debb6014735131be8abab2d93898f8d043"
+ integrity sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==
chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2:
version "2.4.2"
- resolved "https://registry.npmmirror.com/chalk/download/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
- integrity sha1-zUJUFnelQzPPVBpJEIwUMrRMlCQ=
+ resolved "https://registry.npmmirror.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"
@@ -2649,30 +2681,30 @@ chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2:
chalk@^4.1.0, chalk@^4.1.2:
version "4.1.2"
- resolved "https://registry.npmmirror.com/chalk/download/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01"
- integrity sha1-qsTit3NKdAhnrrFr8CqtVWoeegE=
+ resolved "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01"
+ integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
dependencies:
ansi-styles "^4.1.0"
supports-color "^7.1.0"
character-entities-legacy@^1.0.0:
version "1.1.4"
- resolved "https://registry.npmmirror.com/character-entities-legacy/download/character-entities-legacy-1.1.4.tgz?cache=0&sync_timestamp=1635911795757&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fcharacter-entities-legacy%2Fdownload%2Fcharacter-entities-legacy-1.1.4.tgz#94bc1845dce70a5bb9d2ecc748725661293d8fc1"
- integrity sha1-lLwYRdznClu50uzHSHJWYSk9j8E=
+ resolved "https://registry.npmmirror.com/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz#94bc1845dce70a5bb9d2ecc748725661293d8fc1"
+ integrity sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==
character-entities@^1.0.0:
version "1.2.4"
- resolved "https://registry.npmmirror.com/character-entities/download/character-entities-1.2.4.tgz?cache=0&sync_timestamp=1635869177182&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fcharacter-entities%2Fdownload%2Fcharacter-entities-1.2.4.tgz#e12c3939b7eaf4e5b15e7ad4c5e28e1d48c5b16b"
- integrity sha1-4Sw5Obfq9OWxXnrUxeKOHUjFsWs=
+ resolved "https://registry.npmmirror.com/character-entities/-/character-entities-1.2.4.tgz#e12c3939b7eaf4e5b15e7ad4c5e28e1d48c5b16b"
+ integrity sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==
character-reference-invalid@^1.0.0:
version "1.1.4"
- resolved "https://registry.npmmirror.com/character-reference-invalid/download/character-reference-invalid-1.1.4.tgz?cache=0&sync_timestamp=1636446246852&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fcharacter-reference-invalid%2Fdownload%2Fcharacter-reference-invalid-1.1.4.tgz#083329cda0eae272ab3dbbf37e9a382c13af1560"
- integrity sha1-CDMpzaDq4nKrPbvzfpo4LBOvFWA=
+ resolved "https://registry.npmmirror.com/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz#083329cda0eae272ab3dbbf37e9a382c13af1560"
+ integrity sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==
cheerio@^0.22.0:
version "0.22.0"
- resolved "https://registry.npmmirror.com/cheerio/download/cheerio-0.22.0.tgz#a9baa860a3f9b595a6b81b1a86873121ed3a269e"
+ resolved "https://registry.npmmirror.com/cheerio/-/cheerio-0.22.0.tgz#a9baa860a3f9b595a6b81b1a86873121ed3a269e"
integrity sha512-8/MzidM6G/TgRelkzDG13y3Y9LxBjCb+8yOEZ9+wwq5gVF2w2pV0wmHvjfT0RvuxGyR7UEuK36r+yYMbT4uKgA==
dependencies:
css-select "~1.2.0"
@@ -2692,10 +2724,10 @@ cheerio@^0.22.0:
lodash.reject "^4.4.0"
lodash.some "^4.4.0"
-chokidar@^3.4.2, chokidar@^3.5.2:
- version "3.5.2"
- resolved "https://registry.npmmirror.com/chokidar/download/chokidar-3.5.2.tgz#dba3976fcadb016f66fd365021d91600d01c1e75"
- integrity sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==
+chokidar@^3.4.2, chokidar@^3.5.2, chokidar@^3.5.3:
+ version "3.5.3"
+ resolved "https://registry.npmmirror.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd"
+ integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==
dependencies:
anymatch "~3.1.2"
braces "~3.0.2"
@@ -2709,40 +2741,40 @@ chokidar@^3.4.2, chokidar@^3.5.2:
chrome-trace-event@^1.0.2:
version "1.0.3"
- resolved "https://registry.nlark.com/chrome-trace-event/download/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac"
- integrity sha1-EBXs7UdB4V0GZkqVfbv1DQQeJqw=
+ resolved "https://registry.npmmirror.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac"
+ integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==
ci-info@^2.0.0:
version "2.0.0"
- resolved "https://registry.npmmirror.com/ci-info/download/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46"
- integrity sha1-Z6npZL4xpR4V5QENWObxKDQAL0Y=
+ resolved "https://registry.npmmirror.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46"
+ integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==
ci-info@^3.1.1:
version "3.3.0"
- resolved "https://registry.npmmirror.com/ci-info/download/ci-info-3.3.0.tgz#b4ed1fb6818dea4803a55c623041f9165d2066b2"
+ resolved "https://registry.npmmirror.com/ci-info/-/ci-info-3.3.0.tgz#b4ed1fb6818dea4803a55c623041f9165d2066b2"
integrity sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==
clean-css@^5.1.5, clean-css@^5.2.2:
- version "5.2.2"
- resolved "https://registry.npmmirror.com/clean-css/download/clean-css-5.2.2.tgz?cache=0&sync_timestamp=1634992314911&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fclean-css%2Fdownload%2Fclean-css-5.2.2.tgz#d3a7c6ee2511011e051719838bdcf8314dc4548d"
- integrity sha1-06fG7iURAR4FFxmDi9z4MU3EVI0=
+ version "5.2.4"
+ resolved "https://registry.npmmirror.com/clean-css/-/clean-css-5.2.4.tgz#982b058f8581adb2ae062520808fb2429bd487a4"
+ integrity sha512-nKseG8wCzEuji/4yrgM/5cthL9oTDc5UOQyFMvW/Q53oP6gLH690o1NbuTh6Y18nujr7BxlsFuS7gXLnLzKJGg==
dependencies:
source-map "~0.6.0"
clean-stack@^2.0.0:
version "2.2.0"
- resolved "https://registry.nlark.com/clean-stack/download/clean-stack-2.2.0.tgz?cache=0&sync_timestamp=1622605328444&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fclean-stack%2Fdownload%2Fclean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b"
- integrity sha1-7oRy27Ep5yezHooQpCfe6d/kAIs=
+ resolved "https://registry.npmmirror.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b"
+ integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==
cli-boxes@^2.2.1:
version "2.2.1"
- resolved "https://registry.nlark.com/cli-boxes/download/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f"
- integrity sha1-3dUDXSUJT84iDpyrQKRYQKRAMY8=
+ resolved "https://registry.npmmirror.com/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f"
+ integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==
clone-deep@^4.0.1:
version "4.0.1"
- resolved "https://registry.nlark.com/clone-deep/download/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387"
- integrity sha1-wZ/Zvbv4WUK0/ZechNz31fB8I4c=
+ resolved "https://registry.npmmirror.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387"
+ integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==
dependencies:
is-plain-object "^2.0.4"
kind-of "^6.0.2"
@@ -2750,20 +2782,20 @@ clone-deep@^4.0.1:
clone-response@^1.0.2:
version "1.0.2"
- resolved "https://registry.nlark.com/clone-response/download/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b"
- integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=
+ resolved "https://registry.npmmirror.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b"
+ integrity sha512-yjLXh88P599UOyPTFX0POsd7WxnbsVsGohcwzHOLspIhhpalPw1BcqED8NblyZLKcGrL8dTgMlcaZxV2jAD41Q==
dependencies:
mimic-response "^1.0.0"
clsx@^1.1.1:
version "1.1.1"
- resolved "https://registry.nlark.com/clsx/download/clsx-1.1.1.tgz#98b3134f9abbdf23b2663491ace13c5c03a73188"
- integrity sha1-mLMTT5q73yOyZjSRrOE8XAOnMYg=
+ resolved "https://registry.npmmirror.com/clsx/-/clsx-1.1.1.tgz#98b3134f9abbdf23b2663491ace13c5c03a73188"
+ integrity sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA==
coa@^2.0.2:
version "2.0.2"
- resolved "https://registry.npmmirror.com/coa/download/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3"
- integrity sha1-Q/bCEVG07yv1cYfbDXPeIp4+fsM=
+ resolved "https://registry.npmmirror.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3"
+ integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==
dependencies:
"@types/q" "^1.5.1"
chalk "^2.4.1"
@@ -2771,89 +2803,89 @@ coa@^2.0.2:
collapse-white-space@^1.0.2:
version "1.0.6"
- resolved "https://registry.npmmirror.com/collapse-white-space/download/collapse-white-space-1.0.6.tgz#e63629c0016665792060dbbeb79c42239d2c5287"
- integrity sha1-5jYpwAFmZXkgYNu+t5xCI50sUoc=
+ resolved "https://registry.npmmirror.com/collapse-white-space/-/collapse-white-space-1.0.6.tgz#e63629c0016665792060dbbeb79c42239d2c5287"
+ integrity sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ==
color-convert@^1.9.0:
version "1.9.3"
- resolved "https://registry.npmmirror.com/color-convert/download/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
- integrity sha1-u3GFBpDh8TZWfeYp0tVHHe2kweg=
+ resolved "https://registry.npmmirror.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
+ integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
dependencies:
color-name "1.1.3"
color-convert@^2.0.1:
version "2.0.1"
- resolved "https://registry.npmmirror.com/color-convert/download/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
- integrity sha1-ctOmjVmMm9s68q0ehPIdiWq9TeM=
+ resolved "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
+ integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
dependencies:
color-name "~1.1.4"
color-name@1.1.3:
version "1.1.3"
- resolved "https://registry.npm.taobao.org/color-name/download/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
- integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
+ resolved "https://registry.npmmirror.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
+ integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==
color-name@^1.1.4, color-name@~1.1.4:
version "1.1.4"
- resolved "https://registry.npm.taobao.org/color-name/download/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
- integrity sha1-wqCah6y95pVD3m9j+jmVyCbFNqI=
+ resolved "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
+ integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
colord@^2.9.1:
version "2.9.2"
- resolved "https://registry.npmmirror.com/colord/download/colord-2.9.2.tgz#25e2bacbbaa65991422c07ea209e2089428effb1"
+ resolved "https://registry.npmmirror.com/colord/-/colord-2.9.2.tgz#25e2bacbbaa65991422c07ea209e2089428effb1"
integrity sha512-Uqbg+J445nc1TKn4FoDPS6ZZqAvEDnwrH42yo8B40JSOgSLxMZ/gt3h4nmCtPLQeXhjJJkqBx7SCY35WnIixaQ==
colorette@^2.0.10:
version "2.0.16"
- resolved "https://registry.npmmirror.com/colorette/download/colorette-2.0.16.tgz?cache=0&sync_timestamp=1633673060735&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fcolorette%2Fdownload%2Fcolorette-2.0.16.tgz#713b9af84fdb000139f04546bd4a93f62a5085da"
- integrity sha1-cTua+E/bAAE58EVGvUqT9ipQhdo=
+ resolved "https://registry.npmmirror.com/colorette/-/colorette-2.0.16.tgz#713b9af84fdb000139f04546bd4a93f62a5085da"
+ integrity sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==
combine-promises@^1.1.0:
version "1.1.0"
- resolved "https://registry.nlark.com/combine-promises/download/combine-promises-1.1.0.tgz#72db90743c0ca7aab7d0d8d2052fd7b0f674de71"
- integrity sha1-ctuQdDwMp6q30NjSBS/XsPZ03nE=
+ resolved "https://registry.npmmirror.com/combine-promises/-/combine-promises-1.1.0.tgz#72db90743c0ca7aab7d0d8d2052fd7b0f674de71"
+ integrity sha512-ZI9jvcLDxqwaXEixOhArm3r7ReIivsXkpbyEWyeOhzz1QS0iSgBPnWvEqvIQtYyamGCYA88gFhmUrs9hrrQ0pg==
comma-separated-tokens@^1.0.0:
version "1.0.8"
- resolved "https://registry.nlark.com/comma-separated-tokens/download/comma-separated-tokens-1.0.8.tgz#632b80b6117867a158f1080ad498b2fbe7e3f5ea"
- integrity sha1-YyuAthF4Z6FY8QgK1Jiy++fj9eo=
+ resolved "https://registry.npmmirror.com/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz#632b80b6117867a158f1080ad498b2fbe7e3f5ea"
+ integrity sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==
commander@^2.20.0:
version "2.20.3"
- resolved "https://registry.npmmirror.com/commander/download/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
+ resolved "https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
commander@^5.1.0:
version "5.1.0"
- resolved "https://registry.npmmirror.com/commander/download/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae"
+ resolved "https://registry.npmmirror.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae"
integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==
commander@^7.2.0:
version "7.2.0"
- resolved "https://registry.npmmirror.com/commander/download/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7"
+ resolved "https://registry.npmmirror.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7"
integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==
commander@^8.3.0:
version "8.3.0"
- resolved "https://registry.npmmirror.com/commander/download/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66"
+ resolved "https://registry.npmmirror.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66"
integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==
commondir@^1.0.1:
version "1.0.1"
- resolved "https://registry.nlark.com/commondir/download/commondir-1.0.1.tgz?cache=0&sync_timestamp=1622605315392&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fcommondir%2Fdownload%2Fcommondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
- integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=
+ resolved "https://registry.npmmirror.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
+ integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==
compressible@~2.0.16:
version "2.0.18"
- resolved "https://registry.nlark.com/compressible/download/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba"
- integrity sha1-r1PMprBw1MPAdQ+9dyhqbXzEb7o=
+ resolved "https://registry.npmmirror.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba"
+ integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==
dependencies:
mime-db ">= 1.43.0 < 2"
compression@^1.7.4:
version "1.7.4"
- resolved "https://registry.nlark.com/compression/download/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f"
- integrity sha1-lVI+/xcMpXwpoMpB5v4TH0Hlu48=
+ resolved "https://registry.npmmirror.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f"
+ integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==
dependencies:
accepts "~1.3.5"
bytes "3.0.0"
@@ -2865,13 +2897,13 @@ compression@^1.7.4:
concat-map@0.0.1:
version "0.0.1"
- resolved "https://registry.npm.taobao.org/concat-map/download/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
- integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
+ resolved "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
+ integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
configstore@^5.0.1:
version "5.0.1"
- resolved "https://registry.nlark.com/configstore/download/configstore-5.0.1.tgz#d365021b5df4b98cdd187d6a3b0e3f6a7cc5ed96"
- integrity sha1-02UCG130uYzdGH1qOw4/anzF7ZY=
+ resolved "https://registry.npmmirror.com/configstore/-/configstore-5.0.1.tgz#d365021b5df4b98cdd187d6a3b0e3f6a7cc5ed96"
+ integrity sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==
dependencies:
dot-prop "^5.2.0"
graceful-fs "^4.1.2"
@@ -2882,63 +2914,63 @@ configstore@^5.0.1:
connect-history-api-fallback@^1.6.0:
version "1.6.0"
- resolved "https://registry.nlark.com/connect-history-api-fallback/download/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc"
- integrity sha1-izIIk1kwjRERFdgcrT/Oq4iPl7w=
+ resolved "https://registry.npmmirror.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc"
+ integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==
consola@^2.15.3:
version "2.15.3"
- resolved "https://registry.npm.taobao.org/consola/download/consola-2.15.3.tgz#2e11f98d6a4be71ff72e0bdf07bd23e12cb61550"
- integrity sha1-LhH5jWpL5x/3LgvfB70j4Sy2FVA=
+ resolved "https://registry.npmmirror.com/consola/-/consola-2.15.3.tgz#2e11f98d6a4be71ff72e0bdf07bd23e12cb61550"
+ integrity sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==
content-disposition@0.5.2:
version "0.5.2"
- resolved "https://registry.npmmirror.com/content-disposition/download/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4"
- integrity sha1-DPaLud318r55YcOoUXjLhdunjLQ=
+ resolved "https://registry.npmmirror.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4"
+ integrity sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==
content-disposition@0.5.4:
version "0.5.4"
- resolved "https://registry.npmmirror.com/content-disposition/download/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe"
+ resolved "https://registry.npmmirror.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe"
integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==
dependencies:
safe-buffer "5.2.1"
content-type@~1.0.4:
version "1.0.4"
- resolved "https://registry.npm.taobao.org/content-type/download/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b"
- integrity sha1-4TjMdeBAxyexlm/l5fjJruJW/js=
+ resolved "https://registry.npmmirror.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b"
+ integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==
convert-source-map@^1.7.0:
version "1.8.0"
- resolved "https://registry.nlark.com/convert-source-map/download/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369"
- integrity sha1-8zc8MtIbTXgN2ABFFGhPt5HKQ2k=
+ resolved "https://registry.npmmirror.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"
cookie-signature@1.0.6:
version "1.0.6"
- resolved "https://registry.nlark.com/cookie-signature/download/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c"
- integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw=
+ resolved "https://registry.npmmirror.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c"
+ integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==
cookie@0.4.1:
version "0.4.1"
- resolved "https://registry.nlark.com/cookie/download/cookie-0.4.1.tgz#afd713fe26ebd21ba95ceb61f9a8116e50a537d1"
- integrity sha1-r9cT/ibr0hupXOth+agRblClN9E=
+ resolved "https://registry.npmmirror.com/cookie/-/cookie-0.4.1.tgz#afd713fe26ebd21ba95ceb61f9a8116e50a537d1"
+ integrity sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==
copy-text-to-clipboard@^3.0.1:
version "3.0.1"
- resolved "https://registry.npmmirror.com/copy-text-to-clipboard/download/copy-text-to-clipboard-3.0.1.tgz#8cbf8f90e0a47f12e4a24743736265d157bce69c"
- integrity sha1-jL+PkOCkfxLkokdDc2Jl0Ve85pw=
+ resolved "https://registry.npmmirror.com/copy-text-to-clipboard/-/copy-text-to-clipboard-3.0.1.tgz#8cbf8f90e0a47f12e4a24743736265d157bce69c"
+ integrity sha512-rvVsHrpFcL4F2P8ihsoLdFHmd404+CMg71S756oRSeQgqk51U3kicGdnvfkrxva0xXH92SjGS62B0XIJsbh+9Q==
copy-to-clipboard@^3.3.1:
version "3.3.1"
- resolved "https://registry.nlark.com/copy-to-clipboard/download/copy-to-clipboard-3.3.1.tgz#115aa1a9998ffab6196f93076ad6da3b913662ae"
- integrity sha1-EVqhqZmP+rYZb5MHatbaO5E2Yq4=
+ resolved "https://registry.npmmirror.com/copy-to-clipboard/-/copy-to-clipboard-3.3.1.tgz#115aa1a9998ffab6196f93076ad6da3b913662ae"
+ integrity sha512-i13qo6kIHTTpCm8/Wup+0b1mVWETvu2kIMzKoK8FpkLkFxlt0znUAHcMzox+T8sPlqtZXq3CulEjQHsYiGFJUw==
dependencies:
toggle-selection "^1.0.6"
copy-webpack-plugin@^9.0.1:
version "9.1.0"
- resolved "https://registry.npmmirror.com/copy-webpack-plugin/download/copy-webpack-plugin-9.1.0.tgz#2d2c460c4c4695ec0a58afb2801a1205256c4e6b"
+ resolved "https://registry.npmmirror.com/copy-webpack-plugin/-/copy-webpack-plugin-9.1.0.tgz#2d2c460c4c4695ec0a58afb2801a1205256c4e6b"
integrity sha512-rxnR7PaGigJzhqETHGmAcxKnLZSR5u1Y3/bcIv/1FnqXedcL/E2ewK7ZCNrArJKCiSv8yVXhTqetJh8inDvfsA==
dependencies:
fast-glob "^3.2.7"
@@ -2948,33 +2980,33 @@ copy-webpack-plugin@^9.0.1:
schema-utils "^3.1.1"
serialize-javascript "^6.0.0"
-core-js-compat@^3.18.0, core-js-compat@^3.19.1:
- version "3.20.2"
- resolved "https://registry.npmmirror.com/core-js-compat/download/core-js-compat-3.20.2.tgz#d1ff6936c7330959b46b2e08b122a8b14e26140b"
- integrity sha512-qZEzVQ+5Qh6cROaTPFLNS4lkvQ6mBzE3R6A6EEpssj7Zr2egMHgsy4XapdifqJDGC9CBiNv7s+ejI96rLNQFdg==
+core-js-compat@^3.20.2, core-js-compat@^3.21.0:
+ version "3.21.0"
+ resolved "https://registry.npmmirror.com/core-js-compat/-/core-js-compat-3.21.0.tgz#bcc86aa5a589cee358e7a7fa0a4979d5a76c3885"
+ integrity sha512-OSXseNPSK2OPJa6GdtkMz/XxeXx8/CJvfhQWTqd6neuUraujcL4jVsjkLQz1OWnax8xVQJnRPe0V2jqNWORA+A==
dependencies:
browserslist "^4.19.1"
semver "7.0.0"
-core-js-pure@^3.19.0:
- version "3.20.2"
- resolved "https://registry.npmmirror.com/core-js-pure/download/core-js-pure-3.20.2.tgz#5d263565f0e34ceeeccdc4422fae3e84ca6b8c0f"
- integrity sha512-CmWHvSKn2vNL6p6StNp1EmMIfVY/pqn3JLAjfZQ8WZGPOlGoO92EkX9/Mk81i6GxvoPXjUqEQnpM3rJ5QxxIOg==
+core-js-pure@^3.20.2:
+ version "3.21.0"
+ resolved "https://registry.npmmirror.com/core-js-pure/-/core-js-pure-3.21.0.tgz#819adc8dfb808205ce25b51d50591becd615db7e"
+ integrity sha512-VaJUunCZLnxuDbo1rNOzwbet9E1K9joiXS5+DQMPtgxd24wfsZbJZMMfQLGYMlCUvSxLfsRUUhoOR2x28mFfeg==
core-js@^3.18.0:
- version "3.20.2"
- resolved "https://registry.npmmirror.com/core-js/download/core-js-3.20.2.tgz#46468d8601eafc8b266bd2dd6bf9dee622779581"
- integrity sha512-nuqhq11DcOAbFBV4zCbKeGbKQsUDRqTX0oqx7AttUBuqe3h20ixsE039QHelbL6P4h+9kytVqyEtyZ6gsiwEYw==
+ version "3.21.0"
+ resolved "https://registry.npmmirror.com/core-js/-/core-js-3.21.0.tgz#f479dbfc3dffb035a0827602dd056839a774aa71"
+ integrity sha512-YUdI3fFu4TF/2WykQ2xzSiTQdldLB4KVuL9WeAy5XONZYt5Cun/fpQvctoKbCgvPhmzADeesTk/j2Rdx77AcKQ==
core-util-is@~1.0.0:
version "1.0.3"
- resolved "https://registry.nlark.com/core-util-is/download/core-util-is-1.0.3.tgz?cache=0&sync_timestamp=1630420570787&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fcore-util-is%2Fdownload%2Fcore-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85"
- integrity sha1-pgQtNjTCsn6TKPg3uWX6yDgI24U=
+ resolved "https://registry.npmmirror.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85"
+ integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==
cosmiconfig@^6.0.0:
version "6.0.0"
- resolved "https://registry.nlark.com/cosmiconfig/download/cosmiconfig-6.0.0.tgz?cache=0&sync_timestamp=1629586699851&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fcosmiconfig%2Fdownload%2Fcosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982"
- integrity sha1-2k/uhTxS9rHmk19BwaL8UL1KmYI=
+ resolved "https://registry.npmmirror.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982"
+ integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==
dependencies:
"@types/parse-json" "^4.0.0"
import-fresh "^3.1.0"
@@ -2984,8 +3016,8 @@ cosmiconfig@^6.0.0:
cosmiconfig@^7.0.0, cosmiconfig@^7.0.1:
version "7.0.1"
- resolved "https://registry.nlark.com/cosmiconfig/download/cosmiconfig-7.0.1.tgz?cache=0&sync_timestamp=1629586699851&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fcosmiconfig%2Fdownload%2Fcosmiconfig-7.0.1.tgz#714d756522cace867867ccb4474c5d01bbae5d6d"
- integrity sha1-cU11ZSLKzoZ4Z8y0R0xdAbuuXW0=
+ resolved "https://registry.npmmirror.com/cosmiconfig/-/cosmiconfig-7.0.1.tgz#714d756522cace867867ccb4474c5d01bbae5d6d"
+ integrity sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==
dependencies:
"@types/parse-json" "^4.0.0"
import-fresh "^3.2.1"
@@ -2995,15 +3027,15 @@ cosmiconfig@^7.0.0, cosmiconfig@^7.0.1:
cross-env@^7.0.3:
version "7.0.3"
- resolved "https://registry.npmmirror.com/cross-env/download/cross-env-7.0.3.tgz#865264b29677dc015ba8418918965dd232fc54cf"
- integrity sha1-hlJkspZ33AFbqEGJGJZd0jL8VM8=
+ resolved "https://registry.npmmirror.com/cross-env/-/cross-env-7.0.3.tgz#865264b29677dc015ba8418918965dd232fc54cf"
+ integrity sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==
dependencies:
cross-spawn "^7.0.1"
cross-spawn@^7.0.1, cross-spawn@^7.0.3:
version "7.0.3"
- resolved "https://registry.nlark.com/cross-spawn/download/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
- integrity sha1-9zqFudXUHQRVUcF34ogtSshXKKY=
+ resolved "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
+ integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
dependencies:
path-key "^3.1.0"
shebang-command "^2.0.0"
@@ -3011,19 +3043,19 @@ cross-spawn@^7.0.1, cross-spawn@^7.0.3:
crypto-random-string@^2.0.0:
version "2.0.0"
- resolved "https://registry.nlark.com/crypto-random-string/download/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5"
- integrity sha1-7yp6lm7BEIM4g2m6oC6+rSKbMNU=
+ resolved "https://registry.npmmirror.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5"
+ integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==
css-declaration-sorter@^6.0.3:
- version "6.1.3"
- resolved "https://registry.npmmirror.com/css-declaration-sorter/download/css-declaration-sorter-6.1.3.tgz#e9852e4cf940ba79f509d9425b137d1f94438dc2"
- integrity sha1-6YUuTPlAunn1CdlCWxN9H5RDjcI=
+ version "6.1.4"
+ resolved "https://registry.npmmirror.com/css-declaration-sorter/-/css-declaration-sorter-6.1.4.tgz#b9bfb4ed9a41f8dcca9bf7184d849ea94a8294b4"
+ integrity sha512-lpfkqS0fctcmZotJGhnxkIyJWvBXgpyi2wsFd4J8VB7wzyrT6Ch/3Q+FMNJpjK4gu1+GN5khOnpU2ZVKrLbhCw==
dependencies:
timsort "^0.3.0"
css-loader@^5.1.1:
version "5.2.7"
- resolved "https://registry.npmmirror.com/css-loader/download/css-loader-5.2.7.tgz#9b9f111edf6fb2be5dc62525644cbc9c232064ae"
+ resolved "https://registry.npmmirror.com/css-loader/-/css-loader-5.2.7.tgz#9b9f111edf6fb2be5dc62525644cbc9c232064ae"
integrity sha512-Q7mOvpBNBG7YrVGMxRxcBJZFL75o+cH2abNASdibkj/fffYD8qWbInZrD0S9ccI6vZclF3DsHE7njGlLtaHbhg==
dependencies:
icss-utils "^5.1.0"
@@ -3038,9 +3070,9 @@ css-loader@^5.1.1:
semver "^7.3.5"
css-minimizer-webpack-plugin@^3.0.2:
- version "3.3.1"
- resolved "https://registry.npmmirror.com/css-minimizer-webpack-plugin/download/css-minimizer-webpack-plugin-3.3.1.tgz#5afc4507a4ec13dd223f043cda8953ee0bf6ecfa"
- integrity sha512-SHA7Hu/EiF0dOwdmV2+agvqYpG+ljlUa7Dvn1AVOmSH3N8KOERoaM9lGpstz9nGsoTjANGyUXdrxl/EwdMScRg==
+ version "3.4.1"
+ resolved "https://registry.npmmirror.com/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.4.1.tgz#ab78f781ced9181992fe7b6e4f3422e76429878f"
+ integrity sha512-1u6D71zeIfgngN2XNRJefc/hY7Ybsxd74Jm4qngIXyUEk7fss3VUzuHxLAq/R8NAba4QU9OUSaMZlbpRc7bM4Q==
dependencies:
cssnano "^5.0.6"
jest-worker "^27.0.2"
@@ -3051,13 +3083,13 @@ css-minimizer-webpack-plugin@^3.0.2:
css-select-base-adapter@^0.1.1:
version "0.1.1"
- resolved "https://registry.nlark.com/css-select-base-adapter/download/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7"
- integrity sha1-Oy/0lyzDYquIVhUHqVQIoUMhNdc=
+ resolved "https://registry.npmmirror.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7"
+ integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==
css-select@^2.0.0:
version "2.1.0"
- resolved "https://registry.npmmirror.com/css-select/download/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef"
- integrity sha1-ajRlM1ZjWTSoG6ymjQJVQyEF2+8=
+ resolved "https://registry.npmmirror.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef"
+ integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==
dependencies:
boolbase "^1.0.0"
css-what "^3.2.1"
@@ -3066,7 +3098,7 @@ css-select@^2.0.0:
css-select@^4.1.3:
version "4.2.1"
- resolved "https://registry.npmmirror.com/css-select/download/css-select-4.2.1.tgz#9e665d6ae4c7f9d65dbe69d0316e3221fb274cdd"
+ resolved "https://registry.npmmirror.com/css-select/-/css-select-4.2.1.tgz#9e665d6ae4c7f9d65dbe69d0316e3221fb274cdd"
integrity sha512-/aUslKhzkTNCQUB2qTX84lVmfia9NyjP3WpDGtj/WxhwBzWBYUV3DgUpurHTme8UTPcPlAD1DJ+b0nN/t50zDQ==
dependencies:
boolbase "^1.0.0"
@@ -3077,8 +3109,8 @@ css-select@^4.1.3:
css-select@~1.2.0:
version "1.2.0"
- resolved "https://registry.npmmirror.com/css-select/download/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858"
- integrity sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=
+ resolved "https://registry.npmmirror.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858"
+ integrity sha512-dUQOBoqdR7QwV90WysXPLXG5LO7nhYBgiWVfxF80DKPF8zx1t/pUd2FYy73emg3zrjtM6dzmYgbHKfV2rxiHQA==
dependencies:
boolbase "~1.0.0"
css-what "2.1"
@@ -3087,145 +3119,145 @@ css-select@~1.2.0:
css-tree@1.0.0-alpha.37:
version "1.0.0-alpha.37"
- resolved "https://registry.npmmirror.com/css-tree/download/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22"
- integrity sha1-mL69YsTB2flg7DQM+fdSLjBwmiI=
+ resolved "https://registry.npmmirror.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22"
+ integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==
dependencies:
mdn-data "2.0.4"
source-map "^0.6.1"
css-tree@^1.1.2, css-tree@^1.1.3:
version "1.1.3"
- resolved "https://registry.npmmirror.com/css-tree/download/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d"
- integrity sha1-60hw+2/XcHMn7JXC/yqwm16NuR0=
+ resolved "https://registry.npmmirror.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d"
+ integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==
dependencies:
mdn-data "2.0.14"
source-map "^0.6.1"
css-what@2.1:
version "2.1.3"
- resolved "https://registry.npmmirror.com/css-what/download/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2"
- integrity sha1-ptdgRXM2X+dGhsPzEcVlE9iChfI=
+ resolved "https://registry.npmmirror.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2"
+ integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==
css-what@^3.2.1:
version "3.4.2"
- resolved "https://registry.npmmirror.com/css-what/download/css-what-3.4.2.tgz#ea7026fcb01777edbde52124e21f327e7ae950e4"
- integrity sha1-6nAm/LAXd+295SEk4h8yfnrpUOQ=
+ resolved "https://registry.npmmirror.com/css-what/-/css-what-3.4.2.tgz#ea7026fcb01777edbde52124e21f327e7ae950e4"
+ integrity sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==
css-what@^5.1.0:
version "5.1.0"
- resolved "https://registry.npmmirror.com/css-what/download/css-what-5.1.0.tgz#3f7b707aadf633baf62c2ceb8579b545bb40f7fe"
- integrity sha1-P3tweq32M7r2LCzrhXm1RbtA9/4=
+ resolved "https://registry.npmmirror.com/css-what/-/css-what-5.1.0.tgz#3f7b707aadf633baf62c2ceb8579b545bb40f7fe"
+ integrity sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==
cssesc@^3.0.0:
version "3.0.0"
- resolved "https://registry.npmmirror.com/cssesc/download/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee"
- integrity sha1-N3QZGZA7hoVl4cCep0dEXNGJg+4=
+ resolved "https://registry.npmmirror.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee"
+ integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==
cssnano-preset-advanced@^5.1.4:
- version "5.1.9"
- resolved "https://registry.npmmirror.com/cssnano-preset-advanced/download/cssnano-preset-advanced-5.1.9.tgz#7f392122a5b26368cb05d30750d7a50d6ede7f8b"
- integrity sha512-lWyaSP22ixL8pi9k+yz7VQwa1OHDCZ3SIZeq5K40NIRDII42ua2pO9HRtWQ9N+xh/AQTTHZR4ZOSxouB7VjCIQ==
+ version "5.1.11"
+ resolved "https://registry.npmmirror.com/cssnano-preset-advanced/-/cssnano-preset-advanced-5.1.11.tgz#43242fc1686dd0ed063affd6aced01df5d9161e7"
+ integrity sha512-M9f/4oRh5oxVUOtpKztACqtwAtcvHoWpEIB7axIxnLwhndvEMi7MtwPAOnKdSPBvH3RDGE80AL2JJ/e3Ruv2Qg==
dependencies:
autoprefixer "^10.3.7"
- cssnano-preset-default "^5.1.9"
- postcss-discard-unused "^5.0.1"
- postcss-merge-idents "^5.0.1"
- postcss-reduce-idents "^5.0.1"
+ cssnano-preset-default "^5.1.11"
+ postcss-discard-unused "^5.0.2"
+ postcss-merge-idents "^5.0.2"
+ postcss-reduce-idents "^5.0.2"
postcss-zindex "^5.0.1"
-cssnano-preset-default@^5.1.9:
- version "5.1.9"
- resolved "https://registry.npmmirror.com/cssnano-preset-default/download/cssnano-preset-default-5.1.9.tgz#79628ac48eccbdad570f70b4018cc38d43d1b7df"
- integrity sha512-RhkEucqlQ+OxEi14K1p8gdXcMQy1mSpo7P1oC44oRls7BYIj8p+cht4IFBFV3W4iOjTP8EUB33XV1fX9KhDzyA==
+cssnano-preset-default@^5.1.11:
+ version "5.1.11"
+ resolved "https://registry.npmmirror.com/cssnano-preset-default/-/cssnano-preset-default-5.1.11.tgz#db10fb1ecee310e8285c5aca45bd8237be206828"
+ integrity sha512-ETet5hqHxmzQq2ynXMOQofKuLm7VOjMiOB7E2zdtm/hSeCKlD9fabzIUV4GoPcRyJRHi+4kGf0vsfGYbQ4nmPw==
dependencies:
css-declaration-sorter "^6.0.3"
- cssnano-utils "^2.0.1"
- postcss-calc "^8.0.0"
- postcss-colormin "^5.2.2"
- postcss-convert-values "^5.0.2"
- postcss-discard-comments "^5.0.1"
- postcss-discard-duplicates "^5.0.1"
- postcss-discard-empty "^5.0.1"
- postcss-discard-overridden "^5.0.1"
- postcss-merge-longhand "^5.0.4"
- postcss-merge-rules "^5.0.3"
- postcss-minify-font-values "^5.0.1"
- postcss-minify-gradients "^5.0.3"
- postcss-minify-params "^5.0.2"
- postcss-minify-selectors "^5.1.0"
- postcss-normalize-charset "^5.0.1"
- postcss-normalize-display-values "^5.0.1"
- postcss-normalize-positions "^5.0.1"
- postcss-normalize-repeat-style "^5.0.1"
- postcss-normalize-string "^5.0.1"
- postcss-normalize-timing-functions "^5.0.1"
- postcss-normalize-unicode "^5.0.1"
+ cssnano-utils "^3.0.1"
+ postcss-calc "^8.2.0"
+ postcss-colormin "^5.2.4"
+ postcss-convert-values "^5.0.3"
+ postcss-discard-comments "^5.0.2"
+ postcss-discard-duplicates "^5.0.2"
+ postcss-discard-empty "^5.0.2"
+ postcss-discard-overridden "^5.0.3"
+ postcss-merge-longhand "^5.0.5"
+ postcss-merge-rules "^5.0.5"
+ postcss-minify-font-values "^5.0.3"
+ postcss-minify-gradients "^5.0.5"
+ postcss-minify-params "^5.0.4"
+ postcss-minify-selectors "^5.1.2"
+ postcss-normalize-charset "^5.0.2"
+ postcss-normalize-display-values "^5.0.2"
+ postcss-normalize-positions "^5.0.3"
+ postcss-normalize-repeat-style "^5.0.3"
+ postcss-normalize-string "^5.0.3"
+ postcss-normalize-timing-functions "^5.0.2"
+ postcss-normalize-unicode "^5.0.3"
postcss-normalize-url "^5.0.4"
- postcss-normalize-whitespace "^5.0.1"
- postcss-ordered-values "^5.0.2"
+ postcss-normalize-whitespace "^5.0.3"
+ postcss-ordered-values "^5.0.4"
postcss-reduce-initial "^5.0.2"
- postcss-reduce-transforms "^5.0.1"
+ postcss-reduce-transforms "^5.0.3"
postcss-svgo "^5.0.3"
- postcss-unique-selectors "^5.0.2"
+ postcss-unique-selectors "^5.0.3"
-cssnano-utils@^2.0.1:
- version "2.0.1"
- resolved "https://registry.npmmirror.com/cssnano-utils/download/cssnano-utils-2.0.1.tgz#8660aa2b37ed869d2e2f22918196a9a8b6498ce2"
- integrity sha1-hmCqKzfthp0uLyKRgZapqLZJjOI=
+cssnano-utils@^3.0.0, cssnano-utils@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.npmmirror.com/cssnano-utils/-/cssnano-utils-3.0.1.tgz#d3cc0a142d3d217f8736837ec0a2ccff6a89c6ea"
+ integrity sha512-VNCHL364lh++/ono+S3j9NlUK+d97KNkxI77NlqZU2W3xd2/qmyN61dsa47pTpb55zuU4G4lI7qFjAXZJH1OAQ==
cssnano@^5.0.6, cssnano@^5.0.8:
- version "5.0.14"
- resolved "https://registry.npmmirror.com/cssnano/download/cssnano-5.0.14.tgz#99bc550f663b48c38e9b8e0ae795697c9de84b47"
- integrity sha512-qzhRkFvBhv08tbyKCIfWbxBXmkIpLl1uNblt8SpTHkgLfON5OCPX/CCnkdNmEosvo8bANQYmTTMEgcVBlisHaw==
+ version "5.0.16"
+ resolved "https://registry.npmmirror.com/cssnano/-/cssnano-5.0.16.tgz#4ee97d30411693f3de24cef70b36f7ae2a843e04"
+ integrity sha512-ryhRI9/B9VFCwPbb1z60LLK5/ldoExi7nwdnJzpkLZkm2/r7j2X3jfY+ZvDVJhC/0fPZlrAguYdHNFg0iglPKQ==
dependencies:
- cssnano-preset-default "^5.1.9"
+ cssnano-preset-default "^5.1.11"
lilconfig "^2.0.3"
yaml "^1.10.2"
csso@^4.0.2, csso@^4.2.0:
version "4.2.0"
- resolved "https://registry.npmmirror.com/csso/download/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529"
- integrity sha1-6jpWE0bo3J9UbW/r7dUBh884lSk=
+ resolved "https://registry.npmmirror.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529"
+ integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==
dependencies:
css-tree "^1.1.2"
csstype@^3.0.2:
version "3.0.10"
- resolved "https://registry.npmmirror.com/csstype/download/csstype-3.0.10.tgz#2ad3a7bed70f35b965707c092e5f30b327c290e5"
+ resolved "https://registry.npmmirror.com/csstype/-/csstype-3.0.10.tgz#2ad3a7bed70f35b965707c092e5f30b327c290e5"
integrity sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA==
debug@2.6.9, debug@^2.6.0:
version "2.6.9"
- resolved "https://registry.npmmirror.com/debug/download/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
+ resolved "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
dependencies:
ms "2.0.0"
debug@^3.1.1:
version "3.2.7"
- resolved "https://registry.npmmirror.com/debug/download/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a"
+ resolved "https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a"
integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==
dependencies:
ms "^2.1.1"
debug@^4.1.0, debug@^4.1.1:
version "4.3.3"
- resolved "https://registry.npmmirror.com/debug/download/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664"
+ resolved "https://registry.npmmirror.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664"
integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==
dependencies:
ms "2.1.2"
decompress-response@^3.3.0:
version "3.3.0"
- resolved "https://registry.npmmirror.com/decompress-response/download/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3"
- integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=
+ resolved "https://registry.npmmirror.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3"
+ integrity sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==
dependencies:
mimic-response "^1.0.0"
deep-equal@^1.0.1:
version "1.1.1"
- resolved "https://registry.nlark.com/deep-equal/download/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a"
- integrity sha1-tcmMlCzv+vfLBR4k4UNKJaLmB2o=
+ resolved "https://registry.npmmirror.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a"
+ integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==
dependencies:
is-arguments "^1.0.4"
is-date-object "^1.0.1"
@@ -3236,47 +3268,47 @@ deep-equal@^1.0.1:
deep-extend@^0.6.0:
version "0.6.0"
- resolved "https://registry.nlark.com/deep-extend/download/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac"
- integrity sha1-xPp8lUBKF6nD6Mp+FTcxK3NjMKw=
+ resolved "https://registry.npmmirror.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac"
+ integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==
deepmerge@^4.2.2:
version "4.2.2"
- resolved "https://registry.nlark.com/deepmerge/download/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955"
- integrity sha1-RNLqNnm49NT/ujPwPYZfwee/SVU=
+ resolved "https://registry.npmmirror.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955"
+ integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==
default-gateway@^6.0.3:
version "6.0.3"
- resolved "https://registry.npmmirror.com/default-gateway/download/default-gateway-6.0.3.tgz#819494c888053bdb743edbf343d6cdf7f2943a71"
- integrity sha1-gZSUyIgFO9t0PtvzQ9bN9/KUOnE=
+ resolved "https://registry.npmmirror.com/default-gateway/-/default-gateway-6.0.3.tgz#819494c888053bdb743edbf343d6cdf7f2943a71"
+ integrity sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==
dependencies:
execa "^5.0.0"
defer-to-connect@^1.0.1:
version "1.1.3"
- resolved "https://registry.npm.taobao.org/defer-to-connect/download/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591"
- integrity sha1-MxrgUMCNz3ifjIOnuB8O2U9KxZE=
+ resolved "https://registry.npmmirror.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591"
+ integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==
define-lazy-prop@^2.0.0:
version "2.0.0"
- resolved "https://registry.nlark.com/define-lazy-prop/download/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f"
- integrity sha1-P3rkIRKbyqrJvHSQXJigAJ7J7n8=
+ resolved "https://registry.npmmirror.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f"
+ integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==
define-properties@^1.1.3:
version "1.1.3"
- resolved "https://registry.nlark.com/define-properties/download/define-properties-1.1.3.tgz?cache=0&sync_timestamp=1622604538602&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fdefine-properties%2Fdownload%2Fdefine-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
- integrity sha1-z4jabL7ib+bbcJT2HYcMvYTO6fE=
+ resolved "https://registry.npmmirror.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
+ integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==
dependencies:
object-keys "^1.0.12"
defined@^1.0.0:
version "1.0.0"
- resolved "https://registry.nlark.com/defined/download/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693"
- integrity sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=
+ resolved "https://registry.npmmirror.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693"
+ integrity sha512-Y2caI5+ZwS5c3RiNDJ6u53VhQHv+hHKwhkI1iHvceKUHw9Df6EK2zRLfjejRgMuCuxK7PfSWIMwWecceVvThjQ==
del@^6.0.0:
version "6.0.0"
- resolved "https://registry.nlark.com/del/download/del-6.0.0.tgz?cache=0&sync_timestamp=1622605333317&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fdel%2Fdownload%2Fdel-6.0.0.tgz#0b40d0332cea743f1614f818be4feb717714c952"
- integrity sha1-C0DQMyzqdD8WFPgYvk/rcXcUyVI=
+ resolved "https://registry.npmmirror.com/del/-/del-6.0.0.tgz#0b40d0332cea743f1614f818be4feb717714c952"
+ integrity sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ==
dependencies:
globby "^11.0.1"
graceful-fs "^4.2.4"
@@ -3289,46 +3321,46 @@ del@^6.0.0:
depd@~1.1.2:
version "1.1.2"
- resolved "https://registry.nlark.com/depd/download/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9"
- integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=
+ resolved "https://registry.npmmirror.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9"
+ integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==
destroy@~1.0.4:
version "1.0.4"
- resolved "https://registry.nlark.com/destroy/download/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80"
- integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=
+ resolved "https://registry.npmmirror.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80"
+ integrity sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg==
detab@2.0.4:
version "2.0.4"
- resolved "https://registry.nlark.com/detab/download/detab-2.0.4.tgz?cache=0&sync_timestamp=1629724300992&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fdetab%2Fdownload%2Fdetab-2.0.4.tgz#b927892069aff405fbb9a186fe97a44a92a94b43"
- integrity sha1-uSeJIGmv9AX7uaGG/pekSpKpS0M=
+ resolved "https://registry.npmmirror.com/detab/-/detab-2.0.4.tgz#b927892069aff405fbb9a186fe97a44a92a94b43"
+ integrity sha512-8zdsQA5bIkoRECvCrNKPla84lyoR7DSAyf7p0YgXzBO9PDJx8KntPUay7NS6yp+KdxdVtiE5SpHKtbp2ZQyA9g==
dependencies:
repeat-string "^1.5.4"
detect-node@^2.0.4:
version "2.1.0"
- resolved "https://registry.nlark.com/detect-node/download/detect-node-2.1.0.tgz?cache=0&sync_timestamp=1621146902208&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fdetect-node%2Fdownload%2Fdetect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1"
- integrity sha1-yccHdaScPQO8LAbZpzvlUPl4+LE=
+ resolved "https://registry.npmmirror.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1"
+ integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==
detect-port-alt@^1.1.6:
version "1.1.6"
- resolved "https://registry.nlark.com/detect-port-alt/download/detect-port-alt-1.1.6.tgz#24707deabe932d4a3cf621302027c2b266568275"
- integrity sha1-JHB96r6TLUo89iEwICfCsmZWgnU=
+ resolved "https://registry.npmmirror.com/detect-port-alt/-/detect-port-alt-1.1.6.tgz#24707deabe932d4a3cf621302027c2b266568275"
+ integrity sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==
dependencies:
address "^1.0.1"
debug "^2.6.0"
detect-port@^1.3.0:
version "1.3.0"
- resolved "https://registry.nlark.com/detect-port/download/detect-port-1.3.0.tgz#d9c40e9accadd4df5cac6a782aefd014d573d1f1"
- integrity sha1-2cQOmsyt1N9crGp4Ku/QFNVz0fE=
+ resolved "https://registry.npmmirror.com/detect-port/-/detect-port-1.3.0.tgz#d9c40e9accadd4df5cac6a782aefd014d573d1f1"
+ integrity sha512-E+B1gzkl2gqxt1IhUzwjrxBKRqx1UzC3WLONHinn8S3T6lwV/agVCyitiFOsGJ/eYuEUBvD71MZHy3Pv1G9doQ==
dependencies:
address "^1.0.1"
debug "^2.6.0"
detective@^5.2.0:
version "5.2.0"
- resolved "https://registry.nlark.com/detective/download/detective-5.2.0.tgz#feb2a77e85b904ecdea459ad897cc90a99bd2a7b"
- integrity sha1-/rKnfoW5BOzepFmtiXzJCpm9Kns=
+ resolved "https://registry.npmmirror.com/detective/-/detective-5.2.0.tgz#feb2a77e85b904ecdea459ad897cc90a99bd2a7b"
+ integrity sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg==
dependencies:
acorn-node "^1.6.1"
defined "^1.0.0"
@@ -3336,56 +3368,56 @@ detective@^5.2.0:
didyoumean@^1.2.2:
version "1.2.2"
- resolved "https://registry.npmmirror.com/didyoumean/download/didyoumean-1.2.2.tgz#989346ffe9e839b4555ecf5666edea0d3e8ad037"
- integrity sha1-mJNG/+noObRVXs9WZu3qDT6K0Dc=
+ resolved "https://registry.npmmirror.com/didyoumean/-/didyoumean-1.2.2.tgz#989346ffe9e839b4555ecf5666edea0d3e8ad037"
+ integrity sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==
dir-glob@^3.0.1:
version "3.0.1"
- resolved "https://registry.nlark.com/dir-glob/download/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f"
- integrity sha1-Vtv3PZkqSpO6FYT0U0Bj/S5BcX8=
+ resolved "https://registry.npmmirror.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f"
+ integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==
dependencies:
path-type "^4.0.0"
dlv@^1.1.3:
version "1.1.3"
- resolved "https://registry.npm.taobao.org/dlv/download/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79"
- integrity sha1-XBmKihFFNZbnUUlNSYdLx3MvLnk=
+ resolved "https://registry.npmmirror.com/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79"
+ integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==
dns-equal@^1.0.0:
version "1.0.0"
- resolved "https://registry.npm.taobao.org/dns-equal/download/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d"
- integrity sha1-s55/HabrCnW6nBcySzR1PEfgZU0=
+ resolved "https://registry.npmmirror.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d"
+ integrity sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==
dns-packet@^1.3.1:
version "1.3.4"
- resolved "https://registry.npmmirror.com/dns-packet/download/dns-packet-1.3.4.tgz#e3455065824a2507ba886c55a89963bb107dec6f"
- integrity sha1-40VQZYJKJQe6iGxVqJljuxB97G8=
+ resolved "https://registry.npmmirror.com/dns-packet/-/dns-packet-1.3.4.tgz#e3455065824a2507ba886c55a89963bb107dec6f"
+ integrity sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==
dependencies:
ip "^1.1.0"
safe-buffer "^5.0.1"
dns-txt@^2.0.2:
version "2.0.2"
- resolved "https://registry.npm.taobao.org/dns-txt/download/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6"
- integrity sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=
+ resolved "https://registry.npmmirror.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6"
+ integrity sha512-Ix5PrWjphuSoUXV/Zv5gaFHjnaJtb02F2+Si3Ht9dyJ87+Z/lMmy+dpNHtTGraNK958ndXq2i+GLkWsWHcKaBQ==
dependencies:
buffer-indexof "^1.0.0"
docusaurus-preset-nonepress@canary:
- version "0.0.0-133"
- resolved "https://registry.npmmirror.com/docusaurus-preset-nonepress/download/docusaurus-preset-nonepress-0.0.0-133.tgz#beaf8d5254f0e316ab739a171601a20f9f5938a3"
- integrity sha512-NQOsTg2st1BjpvBnVrqliwbIKNc7CS7GjXLgSu42owslXCrtX3JpFQ3c6GtedoZHZsNDMRh8BHLrHMN9CRKDhQ==
+ version "0.0.0-137"
+ resolved "https://registry.npmmirror.com/docusaurus-preset-nonepress/-/docusaurus-preset-nonepress-0.0.0-137.tgz#ed8dc0faf65e60753b764aac400f4cac5f2da454"
+ integrity sha512-cqu57PGgDU0I0M+V/MxhuT6qGpky7K5EArNBlqOCXsS0MpRtLqBvo0lWn8bTft9GElYXKkqKhZBgQGVktKxrzQ==
dependencies:
"@docusaurus/core" "2.0.0-beta.9"
"@docusaurus/plugin-content-docs" "2.0.0-beta.9"
"@docusaurus/plugin-content-pages" "2.0.0-beta.9"
"@docusaurus/plugin-sitemap" "2.0.0-beta.9"
- docusaurus-theme-nonepress "0.0.0-133"
+ docusaurus-theme-nonepress "0.0.0-137"
-docusaurus-theme-nonepress@0.0.0-133:
- version "0.0.0-133"
- resolved "https://registry.npmmirror.com/docusaurus-theme-nonepress/download/docusaurus-theme-nonepress-0.0.0-133.tgz#085e6e51c3bd9fae2d6cb30fa00acde149f66792"
- integrity sha512-okNKRhVjkAK6KqWgL6g32ZUlI6GMmCLr9R2XkLXvN4m/HM48+nben1QPdsP/rh9E7f8YRNW22y4NqWXEcZp5Xg==
+docusaurus-theme-nonepress@0.0.0-137:
+ version "0.0.0-137"
+ resolved "https://registry.npmmirror.com/docusaurus-theme-nonepress/-/docusaurus-theme-nonepress-0.0.0-137.tgz#7519e56023b147e40be4b19b6728bf85e3e74286"
+ integrity sha512-vgffDJlS1Thz6EBt7UohZApao2dkFVUF+yzT1zg/YXAKvbAYPrEfH7my2ifo4/SOTMDJ4irvJwlLS66r3LiNhw==
dependencies:
"@docsearch/react" "^3.0.0-alpha.39"
"@docusaurus/core" "2.0.0-beta.9"
@@ -3424,23 +3456,23 @@ docusaurus-theme-nonepress@0.0.0-133:
dom-converter@^0.2.0:
version "0.2.0"
- resolved "https://registry.nlark.com/dom-converter/download/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768"
- integrity sha1-ZyGp2u4uKTaClVtq/kFncWJ7t2g=
+ resolved "https://registry.npmmirror.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768"
+ integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==
dependencies:
utila "~0.4"
dom-serializer@0:
version "0.2.2"
- resolved "https://registry.nlark.com/dom-serializer/download/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51"
- integrity sha1-GvuB9TNxcXXUeGVd68XjMtn5u1E=
+ resolved "https://registry.npmmirror.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51"
+ integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==
dependencies:
domelementtype "^2.0.1"
entities "^2.0.0"
dom-serializer@^1.0.1:
version "1.3.2"
- resolved "https://registry.nlark.com/dom-serializer/download/dom-serializer-1.3.2.tgz#6206437d32ceefaec7161803230c7a20bc1b4d91"
- integrity sha1-YgZDfTLO767HFhgDIwx6ILwbTZE=
+ resolved "https://registry.npmmirror.com/dom-serializer/-/dom-serializer-1.3.2.tgz#6206437d32ceefaec7161803230c7a20bc1b4d91"
+ integrity sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==
dependencies:
domelementtype "^2.0.1"
domhandler "^4.2.0"
@@ -3448,56 +3480,56 @@ dom-serializer@^1.0.1:
dom-serializer@~0.1.0:
version "0.1.1"
- resolved "https://registry.nlark.com/dom-serializer/download/dom-serializer-0.1.1.tgz#1ec4059e284babed36eec2941d4a970a189ce7c0"
- integrity sha1-HsQFnihLq+027sKUHUqXChic58A=
+ resolved "https://registry.npmmirror.com/dom-serializer/-/dom-serializer-0.1.1.tgz#1ec4059e284babed36eec2941d4a970a189ce7c0"
+ integrity sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==
dependencies:
domelementtype "^1.3.0"
entities "^1.1.1"
domelementtype@1, domelementtype@^1.3.0, domelementtype@^1.3.1:
version "1.3.1"
- resolved "https://registry.nlark.com/domelementtype/download/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f"
- integrity sha1-0EjESzew0Qp/Kj1f7j9DM9eQSB8=
+ resolved "https://registry.npmmirror.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f"
+ integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==
domelementtype@^2.0.1, domelementtype@^2.2.0:
version "2.2.0"
- resolved "https://registry.nlark.com/domelementtype/download/domelementtype-2.2.0.tgz#9a0b6c2782ed6a1c7323d42267183df9bd8b1d57"
- integrity sha1-mgtsJ4LtahxzI9QiZxg9+b2LHVc=
+ resolved "https://registry.npmmirror.com/domelementtype/-/domelementtype-2.2.0.tgz#9a0b6c2782ed6a1c7323d42267183df9bd8b1d57"
+ integrity sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==
domhandler@^2.3.0:
version "2.4.2"
- resolved "https://registry.npmmirror.com/domhandler/download/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803"
- integrity sha1-iAUJfpM9ZehVRvcm1g9euItE+AM=
+ resolved "https://registry.npmmirror.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803"
+ integrity sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==
dependencies:
domelementtype "1"
domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.0:
version "4.3.0"
- resolved "https://registry.npmmirror.com/domhandler/download/domhandler-4.3.0.tgz#16c658c626cf966967e306f966b431f77d4a5626"
+ resolved "https://registry.npmmirror.com/domhandler/-/domhandler-4.3.0.tgz#16c658c626cf966967e306f966b431f77d4a5626"
integrity sha512-fC0aXNQXqKSFTr2wDNZDhsEYjCiYsDWl3D01kwt25hm1YIPyDGHvvi3rw+PLqHAl/m71MaiF7d5zvBr0p5UB2g==
dependencies:
domelementtype "^2.2.0"
domutils@1.5.1:
version "1.5.1"
- resolved "https://registry.nlark.com/domutils/download/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf"
- integrity sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=
+ resolved "https://registry.npmmirror.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf"
+ integrity sha512-gSu5Oi/I+3wDENBsOWBiRK1eoGxcywYSqg3rR960/+EfY0CF4EX1VPkgHOZ3WiS/Jg2DtliF6BhWcHlfpYUcGw==
dependencies:
dom-serializer "0"
domelementtype "1"
domutils@^1.5.1, domutils@^1.7.0:
version "1.7.0"
- resolved "https://registry.nlark.com/domutils/download/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a"
- integrity sha1-Vuo0HoNOBuZ0ivehyyXaZ+qfjCo=
+ resolved "https://registry.npmmirror.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a"
+ integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==
dependencies:
dom-serializer "0"
domelementtype "1"
domutils@^2.5.2, domutils@^2.8.0:
version "2.8.0"
- resolved "https://registry.nlark.com/domutils/download/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135"
- integrity sha1-RDfe9dtuLR9dbuhZvZXKfQIEgTU=
+ resolved "https://registry.npmmirror.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135"
+ integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==
dependencies:
dom-serializer "^1.0.1"
domelementtype "^2.2.0"
@@ -3505,95 +3537,95 @@ domutils@^2.5.2, domutils@^2.8.0:
dot-case@^3.0.4:
version "3.0.4"
- resolved "https://registry.npm.taobao.org/dot-case/download/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751"
- integrity sha1-mytnDQCkMWZ6inW6Kc0bmICc51E=
+ resolved "https://registry.npmmirror.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751"
+ integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==
dependencies:
no-case "^3.0.4"
tslib "^2.0.3"
dot-prop@^5.2.0:
version "5.3.0"
- resolved "https://registry.nlark.com/dot-prop/download/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88"
- integrity sha1-kMzOcIzZzYLMTcjD3dmr3VWyDog=
+ resolved "https://registry.npmmirror.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88"
+ integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==
dependencies:
is-obj "^2.0.0"
duplexer3@^0.1.4:
version "0.1.4"
- resolved "https://registry.npmmirror.com/duplexer3/download/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2"
- integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=
+ resolved "https://registry.npmmirror.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2"
+ integrity sha512-CEj8FwwNA4cVH2uFCoHUrmojhYh1vmCdOaneKJXwkeY1i9jnlslVo9dx+hQ5Hl9GnH/Bwy/IjxAyOePyPKYnzA==
duplexer@^0.1.1, duplexer@^0.1.2:
version "0.1.2"
- resolved "https://registry.nlark.com/duplexer/download/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6"
- integrity sha1-Or5DrvODX4rgd9E23c4PJ2sEAOY=
+ resolved "https://registry.npmmirror.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6"
+ integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==
ee-first@1.1.1:
version "1.1.1"
- resolved "https://registry.npm.taobao.org/ee-first/download/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
- integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=
+ resolved "https://registry.npmmirror.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
+ integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==
electron-to-chromium@^1.4.17:
- version "1.4.35"
- resolved "https://registry.npmmirror.com/electron-to-chromium/download/electron-to-chromium-1.4.35.tgz#69aabb73d7030733e71c1e970ec16f5ceefbaea4"
- integrity sha512-wzTOMh6HGFWeALMI3bif0mzgRrVGyP1BdFRx7IvWukFrSC5QVQELENuy+Fm2dCrAdQH9T3nuqr07n94nPDFBWA==
+ version "1.4.65"
+ resolved "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.4.65.tgz#c0820db06e268e0a2fd4dbce38fb5376d38ca449"
+ integrity sha512-0/d8Skk8sW3FxXP0Dd6MnBlrwx7Qo9cqQec3BlIAlvKnrmS3pHsIbaroEi+nd0kZkGpQ6apMEre7xndzjlEnLw==
emoji-regex@^8.0.0:
version "8.0.0"
- resolved "https://registry.npmmirror.com/emoji-regex/download/emoji-regex-8.0.0.tgz?cache=0&sync_timestamp=1632751701660&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Femoji-regex%2Fdownload%2Femoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
- integrity sha1-6Bj9ac5cz8tARZT4QpY79TFkzDc=
+ resolved "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
+ integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
emojis-list@^3.0.0:
version "3.0.0"
- resolved "https://registry.nlark.com/emojis-list/download/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78"
- integrity sha1-VXBmIEatKeLpFucariYKvf9Pang=
+ resolved "https://registry.npmmirror.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78"
+ integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==
emoticon@^3.2.0:
version "3.2.0"
- resolved "https://registry.npmmirror.com/emoticon/download/emoticon-3.2.0.tgz#c008ca7d7620fac742fe1bf4af8ff8fed154ae7f"
- integrity sha1-wAjKfXYg+sdC/hv0r4/4/tFUrn8=
+ resolved "https://registry.npmmirror.com/emoticon/-/emoticon-3.2.0.tgz#c008ca7d7620fac742fe1bf4af8ff8fed154ae7f"
+ integrity sha512-SNujglcLTTg+lDAcApPNgEdudaqQFiAbJCqzjNxJkvN9vAwCGi0uu8IUVvx+f16h+V44KCY6Y2yboroc9pilHg==
encodeurl@~1.0.2:
version "1.0.2"
- resolved "https://registry.nlark.com/encodeurl/download/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
- integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=
+ resolved "https://registry.npmmirror.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
+ integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==
end-of-stream@^1.1.0:
version "1.4.4"
- resolved "https://registry.nlark.com/end-of-stream/download/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0"
- integrity sha1-WuZKX0UFe682JuwU2gyl5LJDHrA=
+ resolved "https://registry.npmmirror.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0"
+ integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==
dependencies:
once "^1.4.0"
enhanced-resolve@^5.8.3:
version "5.8.3"
- resolved "https://registry.nlark.com/enhanced-resolve/download/enhanced-resolve-5.8.3.tgz?cache=0&sync_timestamp=1632130769099&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fenhanced-resolve%2Fdownload%2Fenhanced-resolve-5.8.3.tgz#6d552d465cce0423f5b3d718511ea53826a7b2f0"
- integrity sha1-bVUtRlzOBCP1s9cYUR6lOCansvA=
+ resolved "https://registry.npmmirror.com/enhanced-resolve/-/enhanced-resolve-5.8.3.tgz#6d552d465cce0423f5b3d718511ea53826a7b2f0"
+ integrity sha512-EGAbGvH7j7Xt2nc0E7D99La1OiEs8LnyimkRgwExpUMScN6O+3x9tIWs7PLQZVNx4YD+00skHXPXi1yQHpAmZA==
dependencies:
graceful-fs "^4.2.4"
tapable "^2.2.0"
entities@^1.1.1, entities@~1.1.1:
version "1.1.2"
- resolved "https://registry.nlark.com/entities/download/entities-1.1.2.tgz?cache=0&sync_timestamp=1628508126700&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fentities%2Fdownload%2Fentities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56"
- integrity sha1-vfpzUplmTfr9NFKe1PhSKidf6lY=
+ resolved "https://registry.npmmirror.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56"
+ integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==
entities@^2.0.0:
version "2.2.0"
- resolved "https://registry.nlark.com/entities/download/entities-2.2.0.tgz?cache=0&sync_timestamp=1628508126700&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fentities%2Fdownload%2Fentities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55"
- integrity sha1-CY3JDruD2N/6CJ1VJWs1HTTE2lU=
+ resolved "https://registry.npmmirror.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55"
+ integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==
error-ex@^1.3.1:
version "1.3.2"
- resolved "https://registry.nlark.com/error-ex/download/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
- integrity sha1-tKxAZIEH/c3PriQvQovqihTU8b8=
+ resolved "https://registry.npmmirror.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
+ integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==
dependencies:
is-arrayish "^0.2.1"
es-abstract@^1.17.2, es-abstract@^1.19.1:
version "1.19.1"
- resolved "https://registry.npmmirror.com/es-abstract/download/es-abstract-1.19.1.tgz?cache=0&sync_timestamp=1633234313248&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fes-abstract%2Fdownload%2Fes-abstract-1.19.1.tgz#d4885796876916959de78edaa0df456627115ec3"
- integrity sha1-1IhXlodpFpWd547aoN9FZicRXsM=
+ resolved "https://registry.npmmirror.com/es-abstract/-/es-abstract-1.19.1.tgz#d4885796876916959de78edaa0df456627115ec3"
+ integrity sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==
dependencies:
call-bind "^1.0.2"
es-to-primitive "^1.2.1"
@@ -3618,13 +3650,13 @@ es-abstract@^1.17.2, es-abstract@^1.19.1:
es-module-lexer@^0.9.0:
version "0.9.3"
- resolved "https://registry.npmmirror.com/es-module-lexer/download/es-module-lexer-0.9.3.tgz?cache=0&sync_timestamp=1633645560577&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fes-module-lexer%2Fdownload%2Fes-module-lexer-0.9.3.tgz#6f13db00cc38417137daf74366f535c8eb438f19"
- integrity sha1-bxPbAMw4QXE32vdDZvU1yOtDjxk=
+ resolved "https://registry.npmmirror.com/es-module-lexer/-/es-module-lexer-0.9.3.tgz#6f13db00cc38417137daf74366f535c8eb438f19"
+ integrity sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==
es-to-primitive@^1.2.1:
version "1.2.1"
- resolved "https://registry.nlark.com/es-to-primitive/download/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a"
- integrity sha1-5VzUyc3BiLzvsDs2bHNjI/xciYo=
+ resolved "https://registry.npmmirror.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a"
+ integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==
dependencies:
is-callable "^1.1.4"
is-date-object "^1.0.1"
@@ -3632,100 +3664,100 @@ es-to-primitive@^1.2.1:
escalade@^3.1.1:
version "3.1.1"
- resolved "https://registry.nlark.com/escalade/download/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40"
- integrity sha1-2M/ccACWXFoBdLSoLqpcBVJ0LkA=
+ resolved "https://registry.npmmirror.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40"
+ integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==
escape-goat@^2.0.0:
version "2.1.1"
- resolved "https://registry.npmmirror.com/escape-goat/download/escape-goat-2.1.1.tgz#1b2dc77003676c457ec760b2dc68edb648188675"
- integrity sha1-Gy3HcANnbEV+x2Cy3GjttkgYhnU=
+ resolved "https://registry.npmmirror.com/escape-goat/-/escape-goat-2.1.1.tgz#1b2dc77003676c457ec760b2dc68edb648188675"
+ integrity sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==
escape-html@^1.0.3, escape-html@~1.0.3:
version "1.0.3"
- resolved "https://registry.nlark.com/escape-html/download/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
- integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=
+ resolved "https://registry.npmmirror.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
+ integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==
escape-string-regexp@^1.0.5:
version "1.0.5"
- resolved "https://registry.npm.taobao.org/escape-string-regexp/download/escape-string-regexp-1.0.5.tgz?cache=0&sync_timestamp=1618677243201&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fescape-string-regexp%2Fdownload%2Fescape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
- integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
+ resolved "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
+ integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==
escape-string-regexp@^2.0.0:
version "2.0.0"
- resolved "https://registry.npm.taobao.org/escape-string-regexp/download/escape-string-regexp-2.0.0.tgz?cache=0&sync_timestamp=1618677243201&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fescape-string-regexp%2Fdownload%2Fescape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344"
- integrity sha1-owME6Z2qMuI7L9IPUbq9B8/8o0Q=
+ resolved "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344"
+ integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==
escape-string-regexp@^4.0.0:
version "4.0.0"
- resolved "https://registry.npm.taobao.org/escape-string-regexp/download/escape-string-regexp-4.0.0.tgz?cache=0&sync_timestamp=1618677243201&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fescape-string-regexp%2Fdownload%2Fescape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34"
- integrity sha1-FLqDpdNz49MR5a/KKc9b+tllvzQ=
+ resolved "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34"
+ integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
eslint-scope@5.1.1:
version "5.1.1"
- resolved "https://registry.npmmirror.com/eslint-scope/download/eslint-scope-5.1.1.tgz?cache=0&sync_timestamp=1637466831846&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Feslint-scope%2Fdownload%2Feslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c"
- integrity sha1-54blmmbLkrP2wfsNUIqrF0hI9Iw=
+ resolved "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c"
+ integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==
dependencies:
esrecurse "^4.3.0"
estraverse "^4.1.1"
esprima@^4.0.0:
version "4.0.1"
- resolved "https://registry.npm.taobao.org/esprima/download/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
- integrity sha1-E7BM2z5sXRnfkatph6hpVhmwqnE=
+ resolved "https://registry.npmmirror.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
+ integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
esrecurse@^4.3.0:
version "4.3.0"
- resolved "https://registry.nlark.com/esrecurse/download/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921"
- integrity sha1-eteWTWeauyi+5yzsY3WLHF0smSE=
+ resolved "https://registry.npmmirror.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921"
+ integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==
dependencies:
estraverse "^5.2.0"
estraverse@^4.1.1:
version "4.3.0"
- resolved "https://registry.npmmirror.com/estraverse/download/estraverse-4.3.0.tgz?cache=0&sync_timestamp=1635237706876&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Festraverse%2Fdownload%2Festraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d"
- integrity sha1-OYrT88WiSUi+dyXoPRGn3ijNvR0=
+ resolved "https://registry.npmmirror.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d"
+ integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==
estraverse@^5.2.0:
version "5.3.0"
- resolved "https://registry.npmmirror.com/estraverse/download/estraverse-5.3.0.tgz?cache=0&sync_timestamp=1635237706876&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Festraverse%2Fdownload%2Festraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123"
- integrity sha1-LupSkHAvJquP5TcDcP+GyWXSESM=
+ resolved "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123"
+ integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==
esutils@^2.0.2:
version "2.0.3"
- resolved "https://registry.npm.taobao.org/esutils/download/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
- integrity sha1-dNLrTeC42hKTcRkQ1Qd1ubcQ72Q=
+ resolved "https://registry.npmmirror.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
+ integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
eta@^1.12.3:
version "1.12.3"
- resolved "https://registry.nlark.com/eta/download/eta-1.12.3.tgz#2982d08adfbef39f9fa50e2fbd42d7337e7338b1"
- integrity sha1-KYLQit++85+fpQ4vvULXM35zOLE=
+ resolved "https://registry.npmmirror.com/eta/-/eta-1.12.3.tgz#2982d08adfbef39f9fa50e2fbd42d7337e7338b1"
+ integrity sha512-qHixwbDLtekO/d51Yr4glcaUJCIjGVJyTzuqV4GPlgZo1YpgOKG+avQynErZIYrfM6JIJdtiG2Kox8tbb+DoGg==
etag@~1.8.1:
version "1.8.1"
- resolved "https://registry.nlark.com/etag/download/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
- integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=
+ resolved "https://registry.npmmirror.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
+ integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==
eval@^0.1.4:
version "0.1.6"
- resolved "https://registry.npm.taobao.org/eval/download/eval-0.1.6.tgz#9620d7d8c85515e97e6b47c5814f46ae381cb3cc"
- integrity sha1-liDX2MhVFel+a0fFgU9Grjgcs8w=
+ resolved "https://registry.npmmirror.com/eval/-/eval-0.1.6.tgz#9620d7d8c85515e97e6b47c5814f46ae381cb3cc"
+ integrity sha512-o0XUw+5OGkXw4pJZzQoXUk+H87DHuC+7ZE//oSrRGtatTmr12oTnLfg6QOq9DyTt0c/p4TwzgmkKrBzWTSizyQ==
dependencies:
require-like ">= 0.1.1"
eventemitter3@^4.0.0:
version "4.0.7"
- resolved "https://registry.nlark.com/eventemitter3/download/eventemitter3-4.0.7.tgz?cache=0&sync_timestamp=1622604485818&other_urls=https%3A%2F%2Fregistry.nlark.com%2Feventemitter3%2Fdownload%2Feventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f"
- integrity sha1-Lem2j2Uo1WRO9cWVJqG0oHMGFp8=
+ resolved "https://registry.npmmirror.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f"
+ integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==
events@^3.2.0:
version "3.3.0"
- resolved "https://registry.npmmirror.com/events/download/events-3.3.0.tgz?cache=0&sync_timestamp=1636449286836&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fevents%2Fdownload%2Fevents-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400"
- integrity sha1-Mala0Kkk4tLEGagTrrLE6HjqdAA=
+ resolved "https://registry.npmmirror.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400"
+ integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==
execa@^5.0.0:
version "5.1.1"
- resolved "https://registry.npmmirror.com/execa/download/execa-5.1.1.tgz?cache=0&sync_timestamp=1637147236741&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fexeca%2Fdownload%2Fexeca-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd"
- integrity sha1-+ArZy/Qpj3vR1MlVXCHpN0HEEd0=
+ resolved "https://registry.npmmirror.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd"
+ integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==
dependencies:
cross-spawn "^7.0.3"
get-stream "^6.0.0"
@@ -3739,7 +3771,7 @@ execa@^5.0.0:
express@^4.17.1:
version "4.17.2"
- resolved "https://registry.npmmirror.com/express/download/express-4.17.2.tgz#c18369f265297319beed4e5558753cc8c1364cb3"
+ resolved "https://registry.npmmirror.com/express/-/express-4.17.2.tgz#c18369f265297319beed4e5558753cc8c1364cb3"
integrity sha512-oxlxJxcQlYwqPWKVJJtvQiwHgosH/LrLSPA+H4UxpyvSS6jC5aH+5MoHFM+KABgTOt0APue4w66Ha8jCUo9QGg==
dependencies:
accepts "~1.3.7"
@@ -3775,25 +3807,25 @@ express@^4.17.1:
extend-shallow@^2.0.1:
version "2.0.1"
- resolved "https://registry.nlark.com/extend-shallow/download/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f"
- integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=
+ resolved "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f"
+ integrity sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==
dependencies:
is-extendable "^0.1.0"
extend@^3.0.0:
version "3.0.2"
- resolved "https://registry.nlark.com/extend/download/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
- integrity sha1-+LETa0Bx+9jrFAr/hYsQGewpFfo=
+ resolved "https://registry.npmmirror.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
+ integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==
fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
version "3.1.3"
- resolved "https://registry.nlark.com/fast-deep-equal/download/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
- integrity sha1-On1WtVnWy8PrUSMlJE5hmmXGxSU=
+ resolved "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
+ integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
-fast-glob@^3.1.1, fast-glob@^3.2.7:
- version "3.2.7"
- resolved "https://registry.npmmirror.com/fast-glob/download/fast-glob-3.2.7.tgz#fd6cb7a2d7e9aa7a7846111e85a196d6b2f766a1"
- integrity sha1-/Wy3otfpqnp4RhEehaGW1rL3ZqE=
+fast-glob@^3.2.11, fast-glob@^3.2.7, fast-glob@^3.2.9:
+ version "3.2.11"
+ resolved "https://registry.npmmirror.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9"
+ integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==
dependencies:
"@nodelib/fs.stat" "^2.0.2"
"@nodelib/fs.walk" "^1.2.3"
@@ -3803,61 +3835,61 @@ fast-glob@^3.1.1, fast-glob@^3.2.7:
fast-json-stable-stringify@^2.0.0:
version "2.1.0"
- resolved "https://registry.nlark.com/fast-json-stable-stringify/download/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
- integrity sha1-h0v2nG9ATCtdmcSBNBOZ/VWJJjM=
+ resolved "https://registry.npmmirror.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
+ integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
fast-url-parser@1.1.3:
version "1.1.3"
- resolved "https://registry.nlark.com/fast-url-parser/download/fast-url-parser-1.1.3.tgz#f4af3ea9f34d8a271cf58ad2b3759f431f0b318d"
- integrity sha1-9K8+qfNNiicc9YrSs3WfQx8LMY0=
+ resolved "https://registry.npmmirror.com/fast-url-parser/-/fast-url-parser-1.1.3.tgz#f4af3ea9f34d8a271cf58ad2b3759f431f0b318d"
+ integrity sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ==
dependencies:
punycode "^1.3.2"
fastq@^1.6.0:
version "1.13.0"
- resolved "https://registry.nlark.com/fastq/download/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c"
- integrity sha1-YWdg+Ip1Jr38WWt8q4wYk4w2uYw=
+ resolved "https://registry.npmmirror.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c"
+ integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==
dependencies:
reusify "^1.0.4"
faye-websocket@^0.11.3:
version "0.11.4"
- resolved "https://registry.nlark.com/faye-websocket/download/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da"
- integrity sha1-fw2Sdc/dhqHJY9yLZfzEUe3Lsdo=
+ resolved "https://registry.npmmirror.com/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da"
+ integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==
dependencies:
websocket-driver ">=0.5.1"
feed@^4.2.2:
version "4.2.2"
- resolved "https://registry.npmmirror.com/feed/download/feed-4.2.2.tgz#865783ef6ed12579e2c44bbef3c9113bc4956a7e"
- integrity sha1-hleD727RJXnixEu+88kRO8SVan4=
+ resolved "https://registry.npmmirror.com/feed/-/feed-4.2.2.tgz#865783ef6ed12579e2c44bbef3c9113bc4956a7e"
+ integrity sha512-u5/sxGfiMfZNtJ3OvQpXcvotFpYkL0n9u9mM2vkui2nGo8b4wvDkJ8gAkYqbA8QpGyFCv3RK0Z+Iv+9veCS9bQ==
dependencies:
xml-js "^1.6.11"
file-loader@^6.2.0:
version "6.2.0"
- resolved "https://registry.nlark.com/file-loader/download/file-loader-6.2.0.tgz#baef7cf8e1840df325e4390b4484879480eebe4d"
- integrity sha1-uu98+OGEDfMl5DkLRISHlIDuvk0=
+ resolved "https://registry.npmmirror.com/file-loader/-/file-loader-6.2.0.tgz#baef7cf8e1840df325e4390b4484879480eebe4d"
+ integrity sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==
dependencies:
loader-utils "^2.0.0"
schema-utils "^3.0.0"
filesize@^6.1.0:
version "6.4.0"
- resolved "https://registry.npmmirror.com/filesize/download/filesize-6.4.0.tgz?cache=0&sync_timestamp=1635764078375&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Ffilesize%2Fdownload%2Ffilesize-6.4.0.tgz#914f50471dd66fdca3cefe628bd0cde4ef769bcd"
- integrity sha1-kU9QRx3Wb9yjzv5ii9DN5O92m80=
+ resolved "https://registry.npmmirror.com/filesize/-/filesize-6.4.0.tgz#914f50471dd66fdca3cefe628bd0cde4ef769bcd"
+ integrity sha512-mjFIpOHC4jbfcTfoh4rkWpI31mF7viw9ikj/JyLoKzqlwG/YsefKfvYlYhdYdg/9mtK2z1AzgN/0LvVQ3zdlSQ==
fill-range@^7.0.1:
version "7.0.1"
- resolved "https://registry.nlark.com/fill-range/download/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
- integrity sha1-GRmmp8df44ssfHflGYU12prN2kA=
+ resolved "https://registry.npmmirror.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
+ integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
dependencies:
to-regex-range "^5.0.1"
finalhandler@~1.1.2:
version "1.1.2"
- resolved "https://registry.nlark.com/finalhandler/download/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d"
- integrity sha1-t+fQAP/RGTjQ/bBTUG9uur6fWH0=
+ resolved "https://registry.npmmirror.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d"
+ integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==
dependencies:
debug "2.6.9"
encodeurl "~1.0.2"
@@ -3869,8 +3901,8 @@ finalhandler@~1.1.2:
find-cache-dir@^3.3.1:
version "3.3.2"
- resolved "https://registry.nlark.com/find-cache-dir/download/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b"
- integrity sha1-swxbbv8HMHMa6pu9nb7L2AJW1ks=
+ resolved "https://registry.npmmirror.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b"
+ integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==
dependencies:
commondir "^1.0.1"
make-dir "^3.0.2"
@@ -3878,27 +3910,27 @@ find-cache-dir@^3.3.1:
find-up@^3.0.0:
version "3.0.0"
- resolved "https://registry.npmmirror.com/find-up/download/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73"
- integrity sha1-SRafHXmTQwZG2mHsxa41XCHJe3M=
+ resolved "https://registry.npmmirror.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73"
+ integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==
dependencies:
locate-path "^3.0.0"
find-up@^4.0.0, find-up@^4.1.0:
version "4.1.0"
- resolved "https://registry.npmmirror.com/find-up/download/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19"
- integrity sha1-l6/n1s3AvFkoWEt8jXsW6KmqXRk=
+ resolved "https://registry.npmmirror.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19"
+ integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==
dependencies:
locate-path "^5.0.0"
path-exists "^4.0.0"
follow-redirects@^1.0.0, follow-redirects@^1.14.0:
- version "1.14.6"
- resolved "https://registry.npmmirror.com/follow-redirects/download/follow-redirects-1.14.6.tgz#8cfb281bbc035b3c067d6cd975b0f6ade6e855cd"
- integrity sha512-fhUl5EwSJbbl8AR+uYL2KQDxLkdSjZGR36xy46AO7cOMTrCMON6Sa28FmAnC2tRTDbd/Uuzz3aJBv7EBN7JH8A==
+ version "1.14.7"
+ resolved "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.14.7.tgz#2004c02eb9436eee9a21446a6477debf17e81685"
+ integrity sha512-+hbxoLbFMbRKDwohX8GkTataGqO6Jb7jGwpAlwgy2bIz25XtRm7KEzJM76R1WiNT5SwZkX4Y75SwBolkpmE7iQ==
fork-ts-checker-webpack-plugin@^6.0.5:
version "6.5.0"
- resolved "https://registry.npmmirror.com/fork-ts-checker-webpack-plugin/download/fork-ts-checker-webpack-plugin-6.5.0.tgz#0282b335fa495a97e167f69018f566ea7d2a2b5e"
+ resolved "https://registry.npmmirror.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.0.tgz#0282b335fa495a97e167f69018f566ea7d2a2b5e"
integrity sha512-cS178Y+xxtIjEUorcHddKS7yCMlrDPV31mt47blKKRfMd70Kxu5xruAFE2o9sDY6wVC5deuob/u/alD04YYHnw==
dependencies:
"@babel/code-frame" "^7.8.3"
@@ -3917,23 +3949,23 @@ fork-ts-checker-webpack-plugin@^6.0.5:
forwarded@0.2.0:
version "0.2.0"
- resolved "https://registry.nlark.com/forwarded/download/forwarded-0.2.0.tgz?cache=0&sync_timestamp=1622503508967&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fforwarded%2Fdownload%2Fforwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811"
- integrity sha1-ImmTZCiq1MFcfr6XeahL8LKoGBE=
+ resolved "https://registry.npmmirror.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811"
+ integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==
fraction.js@^4.1.2:
version "4.1.2"
- resolved "https://registry.npmmirror.com/fraction.js/download/fraction.js-4.1.2.tgz#13e420a92422b6cf244dff8690ed89401029fbe8"
+ resolved "https://registry.npmmirror.com/fraction.js/-/fraction.js-4.1.2.tgz#13e420a92422b6cf244dff8690ed89401029fbe8"
integrity sha512-o2RiJQ6DZaR/5+Si0qJUIy637QMRudSi9kU/FFzx9EZazrIdnBgpU+3sEWCxAVhH2RtxW2Oz+T4p2o8uOPVcgA==
fresh@0.5.2:
version "0.5.2"
- resolved "https://registry.nlark.com/fresh/download/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
- integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=
+ resolved "https://registry.npmmirror.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
+ integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==
fs-extra@^10.0.0:
version "10.0.0"
- resolved "https://registry.nlark.com/fs-extra/download/fs-extra-10.0.0.tgz#9ff61b655dde53fb34a82df84bb214ce802e17c1"
- integrity sha1-n/YbZV3eU/s0qC34S7IUzoAuF8E=
+ resolved "https://registry.npmmirror.com/fs-extra/-/fs-extra-10.0.0.tgz#9ff61b655dde53fb34a82df84bb214ce802e17c1"
+ integrity sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==
dependencies:
graceful-fs "^4.2.0"
jsonfile "^6.0.1"
@@ -3941,8 +3973,8 @@ fs-extra@^10.0.0:
fs-extra@^9.0.0:
version "9.1.0"
- resolved "https://registry.nlark.com/fs-extra/download/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d"
- integrity sha1-WVRGDHZKjaIJS6NVS/g55rmnyG0=
+ resolved "https://registry.npmmirror.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d"
+ integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==
dependencies:
at-least-node "^1.0.0"
graceful-fs "^4.2.0"
@@ -3951,33 +3983,33 @@ fs-extra@^9.0.0:
fs-monkey@1.0.3:
version "1.0.3"
- resolved "https://registry.npm.taobao.org/fs-monkey/download/fs-monkey-1.0.3.tgz#ae3ac92d53bb328efe0e9a1d9541f6ad8d48e2d3"
- integrity sha1-rjrJLVO7Mo7+DpodlUH2rY1I4tM=
+ resolved "https://registry.npmmirror.com/fs-monkey/-/fs-monkey-1.0.3.tgz#ae3ac92d53bb328efe0e9a1d9541f6ad8d48e2d3"
+ integrity sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==
fs.realpath@^1.0.0:
version "1.0.0"
- resolved "https://registry.nlark.com/fs.realpath/download/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
- integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
+ resolved "https://registry.npmmirror.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
+ integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
fsevents@~2.3.2:
version "2.3.2"
- resolved "https://registry.npmmirror.com/fsevents/download/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
- integrity sha1-ilJveLj99GI7cJ4Ll1xSwkwC/Ro=
+ resolved "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
+ integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==
function-bind@^1.1.1:
version "1.1.1"
- resolved "https://registry.npm.taobao.org/function-bind/download/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
- integrity sha1-pWiZ0+o8m6uHS7l3O3xe3pL0iV0=
+ resolved "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
+ integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
gensync@^1.0.0-beta.1, gensync@^1.0.0-beta.2:
version "1.0.0-beta.2"
- resolved "https://registry.nlark.com/gensync/download/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0"
- integrity sha1-MqbudsPX9S1GsrGuXZP+qFgKJeA=
+ resolved "https://registry.npmmirror.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0"
+ integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==
get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1:
version "1.1.1"
- resolved "https://registry.nlark.com/get-intrinsic/download/get-intrinsic-1.1.1.tgz?cache=0&sync_timestamp=1622604540833&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fget-intrinsic%2Fdownload%2Fget-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6"
- integrity sha1-FfWfN2+FXERpY5SPDSTNNje0q8Y=
+ resolved "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6"
+ integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==
dependencies:
function-bind "^1.1.1"
has "^1.0.3"
@@ -3985,63 +4017,63 @@ get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1:
get-own-enumerable-property-symbols@^3.0.0:
version "3.0.2"
- resolved "https://registry.nlark.com/get-own-enumerable-property-symbols/download/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664"
- integrity sha1-tf3nfyLL4185C04ImSLFC85u9mQ=
+ resolved "https://registry.npmmirror.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664"
+ integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==
get-stream@^4.1.0:
version "4.1.0"
- resolved "https://registry.nlark.com/get-stream/download/get-stream-4.1.0.tgz?cache=0&sync_timestamp=1622604564806&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fget-stream%2Fdownload%2Fget-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5"
- integrity sha1-wbJVV189wh1Zv8ec09K0axw6VLU=
+ resolved "https://registry.npmmirror.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5"
+ integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==
dependencies:
pump "^3.0.0"
get-stream@^5.1.0:
version "5.2.0"
- resolved "https://registry.nlark.com/get-stream/download/get-stream-5.2.0.tgz?cache=0&sync_timestamp=1622604564806&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fget-stream%2Fdownload%2Fget-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3"
- integrity sha1-SWaheV7lrOZecGxLe+txJX1uItM=
+ resolved "https://registry.npmmirror.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3"
+ integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==
dependencies:
pump "^3.0.0"
get-stream@^6.0.0:
version "6.0.1"
- resolved "https://registry.nlark.com/get-stream/download/get-stream-6.0.1.tgz?cache=0&sync_timestamp=1622604564806&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fget-stream%2Fdownload%2Fget-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7"
- integrity sha1-omLY7vZ6ztV8KFKtYWdSakPL97c=
+ resolved "https://registry.npmmirror.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7"
+ integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==
get-symbol-description@^1.0.0:
version "1.0.0"
- resolved "https://registry.nlark.com/get-symbol-description/download/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6"
- integrity sha1-f9uByQAQH71WTdXxowr1qtweWNY=
+ resolved "https://registry.npmmirror.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6"
+ integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==
dependencies:
call-bind "^1.0.2"
get-intrinsic "^1.1.1"
github-slugger@^1.4.0:
version "1.4.0"
- resolved "https://registry.nlark.com/github-slugger/download/github-slugger-1.4.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fgithub-slugger%2Fdownload%2Fgithub-slugger-1.4.0.tgz#206eb96cdb22ee56fdc53a28d5a302338463444e"
- integrity sha1-IG65bNsi7lb9xToo1aMCM4RjRE4=
+ resolved "https://registry.npmmirror.com/github-slugger/-/github-slugger-1.4.0.tgz#206eb96cdb22ee56fdc53a28d5a302338463444e"
+ integrity sha512-w0dzqw/nt51xMVmlaV1+JRzN+oCa1KfcgGEWhxUG16wbdA+Xnt/yoFO8Z8x/V82ZcZ0wy6ln9QDup5avbhiDhQ==
glob-parent@^5.1.2, glob-parent@~5.1.2:
version "5.1.2"
- resolved "https://registry.npmmirror.com/glob-parent/download/glob-parent-5.1.2.tgz?cache=0&sync_timestamp=1632953697891&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fglob-parent%2Fdownload%2Fglob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
- integrity sha1-hpgyxYA0/mikCTwX3BXoNA2EAcQ=
+ resolved "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
+ integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
dependencies:
is-glob "^4.0.1"
glob-parent@^6.0.1, glob-parent@^6.0.2:
version "6.0.2"
- resolved "https://registry.npmmirror.com/glob-parent/download/glob-parent-6.0.2.tgz?cache=0&sync_timestamp=1632953697891&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fglob-parent%2Fdownload%2Fglob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3"
- integrity sha1-bSN9mQg5UMeSkPJMdkKj3poo+eM=
+ resolved "https://registry.npmmirror.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3"
+ integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==
dependencies:
is-glob "^4.0.3"
glob-to-regexp@^0.4.1:
version "0.4.1"
- resolved "https://registry.nlark.com/glob-to-regexp/download/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e"
- integrity sha1-x1KXCHyFG5pXi9IX3VmpL1n+VG4=
+ resolved "https://registry.npmmirror.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e"
+ integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==
glob@^7.0.0, glob@^7.1.3, glob@^7.1.6:
version "7.2.0"
- resolved "https://registry.npmmirror.com/glob/download/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023"
+ resolved "https://registry.npmmirror.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023"
integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==
dependencies:
fs.realpath "^1.0.0"
@@ -4053,22 +4085,22 @@ glob@^7.0.0, glob@^7.1.3, glob@^7.1.6:
global-dirs@^3.0.0:
version "3.0.0"
- resolved "https://registry.nlark.com/global-dirs/download/global-dirs-3.0.0.tgz#70a76fe84ea315ab37b1f5576cbde7d48ef72686"
- integrity sha1-cKdv6E6jFas3sfVXbL3n1I73JoY=
+ resolved "https://registry.npmmirror.com/global-dirs/-/global-dirs-3.0.0.tgz#70a76fe84ea315ab37b1f5576cbde7d48ef72686"
+ integrity sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==
dependencies:
ini "2.0.0"
global-modules@^2.0.0:
version "2.0.0"
- resolved "https://registry.nlark.com/global-modules/download/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780"
- integrity sha1-mXYFrSNF8n9RU5vqJldEISFcd4A=
+ resolved "https://registry.npmmirror.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780"
+ integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==
dependencies:
global-prefix "^3.0.0"
global-prefix@^3.0.0:
version "3.0.0"
- resolved "https://registry.npm.taobao.org/global-prefix/download/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97"
- integrity sha1-/IX3MGTfafUEIfR/iD/luRO6m5c=
+ resolved "https://registry.npmmirror.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97"
+ integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==
dependencies:
ini "^1.3.5"
kind-of "^6.0.2"
@@ -4076,25 +4108,25 @@ global-prefix@^3.0.0:
globals@^11.1.0:
version "11.12.0"
- resolved "https://registry.npmmirror.com/globals/download/globals-11.12.0.tgz?cache=0&sync_timestamp=1635390798667&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fglobals%2Fdownload%2Fglobals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
- integrity sha1-q4eVM4hooLq9hSV1gBjCp+uVxC4=
+ resolved "https://registry.npmmirror.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
+ integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
globby@^11.0.1, globby@^11.0.2, globby@^11.0.3, globby@^11.0.4:
- version "11.0.4"
- resolved "https://registry.nlark.com/globby/download/globby-11.0.4.tgz#2cbaff77c2f2a62e71e9b2813a67b97a3a3001a5"
- integrity sha1-LLr/d8Lypi5x6bKBOme5ejowAaU=
+ version "11.1.0"
+ resolved "https://registry.npmmirror.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b"
+ integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==
dependencies:
array-union "^2.1.0"
dir-glob "^3.0.1"
- fast-glob "^3.1.1"
- ignore "^5.1.4"
- merge2 "^1.3.0"
+ fast-glob "^3.2.9"
+ ignore "^5.2.0"
+ merge2 "^1.4.1"
slash "^3.0.0"
got@^9.6.0:
version "9.6.0"
- resolved "https://registry.npmmirror.com/got/download/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85"
- integrity sha1-7fRefWf5lUVwXeH3u+7rEhdl7YU=
+ resolved "https://registry.npmmirror.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85"
+ integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==
dependencies:
"@sindresorhus/is" "^0.14.0"
"@szmarczak/http-timer" "^1.1.2"
@@ -4108,15 +4140,15 @@ got@^9.6.0:
to-readable-stream "^1.0.0"
url-parse-lax "^3.0.0"
-graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.6:
+graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9:
version "4.2.9"
- resolved "https://registry.npmmirror.com/graceful-fs/download/graceful-fs-4.2.9.tgz#041b05df45755e587a24942279b9d113146e1c96"
+ resolved "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.9.tgz#041b05df45755e587a24942279b9d113146e1c96"
integrity sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==
gray-matter@^4.0.3:
version "4.0.3"
- resolved "https://registry.nlark.com/gray-matter/download/gray-matter-4.0.3.tgz#e893c064825de73ea1f5f7d88c7a9f7274288798"
- integrity sha1-6JPAZIJd5z6h9ffYjHqfcnQoh5g=
+ resolved "https://registry.npmmirror.com/gray-matter/-/gray-matter-4.0.3.tgz#e893c064825de73ea1f5f7d88c7a9f7274288798"
+ integrity sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==
dependencies:
js-yaml "^3.13.1"
kind-of "^6.0.2"
@@ -4125,67 +4157,67 @@ gray-matter@^4.0.3:
gzip-size@^5.1.1:
version "5.1.1"
- resolved "https://registry.npmmirror.com/gzip-size/download/gzip-size-5.1.1.tgz#cb9bee692f87c0612b232840a873904e4c135274"
- integrity sha1-y5vuaS+HwGErIyhAqHOQTkwTUnQ=
+ resolved "https://registry.npmmirror.com/gzip-size/-/gzip-size-5.1.1.tgz#cb9bee692f87c0612b232840a873904e4c135274"
+ integrity sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA==
dependencies:
duplexer "^0.1.1"
pify "^4.0.1"
gzip-size@^6.0.0:
version "6.0.0"
- resolved "https://registry.npmmirror.com/gzip-size/download/gzip-size-6.0.0.tgz#065367fd50c239c0671cbcbad5be3e2eeb10e462"
- integrity sha1-BlNn/VDCOcBnHLy61b4+LusQ5GI=
+ resolved "https://registry.npmmirror.com/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671cbcbad5be3e2eeb10e462"
+ integrity sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==
dependencies:
duplexer "^0.1.2"
handle-thing@^2.0.0:
version "2.0.1"
- resolved "https://registry.npm.taobao.org/handle-thing/download/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e"
- integrity sha1-hX95zjWVgMNA1DCBzGSJcNC7I04=
+ resolved "https://registry.npmmirror.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e"
+ integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==
has-bigints@^1.0.1:
version "1.0.1"
- resolved "https://registry.npm.taobao.org/has-bigints/download/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113"
- integrity sha1-ZP5qywIGc+O3jbA1pa9pqp0HsRM=
+ resolved "https://registry.npmmirror.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113"
+ integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==
has-flag@^3.0.0:
version "3.0.0"
- resolved "https://registry.nlark.com/has-flag/download/has-flag-3.0.0.tgz?cache=0&sync_timestamp=1626715907927&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fhas-flag%2Fdownload%2Fhas-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
- integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0=
+ resolved "https://registry.npmmirror.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
+ integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==
has-flag@^4.0.0:
version "4.0.0"
- resolved "https://registry.nlark.com/has-flag/download/has-flag-4.0.0.tgz?cache=0&sync_timestamp=1626715907927&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fhas-flag%2Fdownload%2Fhas-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
- integrity sha1-lEdx/ZyByBJlxNaUGGDaBrtZR5s=
+ resolved "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
+ integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
has-symbols@^1.0.1, has-symbols@^1.0.2:
version "1.0.2"
- resolved "https://registry.nlark.com/has-symbols/download/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423"
- integrity sha1-Fl0wcMADCXUqEjakeTMeOsVvFCM=
+ resolved "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423"
+ integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==
has-tostringtag@^1.0.0:
version "1.0.0"
- resolved "https://registry.nlark.com/has-tostringtag/download/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25"
- integrity sha1-fhM4GKfTlHNPlB5zw9P5KR5liyU=
+ resolved "https://registry.npmmirror.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25"
+ integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==
dependencies:
has-symbols "^1.0.2"
has-yarn@^2.1.0:
version "2.1.0"
- resolved "https://registry.nlark.com/has-yarn/download/has-yarn-2.1.0.tgz?cache=0&sync_timestamp=1631299106681&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fhas-yarn%2Fdownload%2Fhas-yarn-2.1.0.tgz#137e11354a7b5bf11aa5cb649cf0c6f3ff2b2e77"
- integrity sha1-E34RNUp7W/EapctknPDG8/8rLnc=
+ resolved "https://registry.npmmirror.com/has-yarn/-/has-yarn-2.1.0.tgz#137e11354a7b5bf11aa5cb649cf0c6f3ff2b2e77"
+ integrity sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==
has@^1.0.3:
version "1.0.3"
- resolved "https://registry.nlark.com/has/download/has-1.0.3.tgz?cache=0&sync_timestamp=1618847173393&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fhas%2Fdownload%2Fhas-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
- integrity sha1-ci18v8H2qoJB8W3YFOAR4fQeh5Y=
+ resolved "https://registry.npmmirror.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
+ integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
dependencies:
function-bind "^1.1.1"
hast-to-hyperscript@^9.0.0:
version "9.0.1"
- resolved "https://registry.nlark.com/hast-to-hyperscript/download/hast-to-hyperscript-9.0.1.tgz#9b67fd188e4c81e8ad66f803855334173920218d"
- integrity sha1-m2f9GI5MgeitZvgDhVM0FzkgIY0=
+ resolved "https://registry.npmmirror.com/hast-to-hyperscript/-/hast-to-hyperscript-9.0.1.tgz#9b67fd188e4c81e8ad66f803855334173920218d"
+ integrity sha512-zQgLKqF+O2F72S1aa4y2ivxzSlko3MAvxkwG8ehGmNiqd98BIN3JM1rAJPmplEyLmGLO2QZYJtIneOSZ2YbJuA==
dependencies:
"@types/unist" "^2.0.3"
comma-separated-tokens "^1.0.0"
@@ -4197,8 +4229,8 @@ hast-to-hyperscript@^9.0.0:
hast-util-from-parse5@^5.0.0:
version "5.0.3"
- resolved "https://registry.nlark.com/hast-util-from-parse5/download/hast-util-from-parse5-5.0.3.tgz#3089dc0ee2ccf6ec8bc416919b51a54a589e097c"
- integrity sha1-MIncDuLM9uyLxBaRm1GlSlieCXw=
+ resolved "https://registry.npmmirror.com/hast-util-from-parse5/-/hast-util-from-parse5-5.0.3.tgz#3089dc0ee2ccf6ec8bc416919b51a54a589e097c"
+ integrity sha512-gOc8UB99F6eWVWFtM9jUikjN7QkWxB3nY0df5Z0Zq1/Nkwl5V4hAAsl0tmwlgWl/1shlTF8DnNYLO8X6wRV9pA==
dependencies:
ccount "^1.0.3"
hastscript "^5.0.0"
@@ -4208,8 +4240,8 @@ hast-util-from-parse5@^5.0.0:
hast-util-from-parse5@^6.0.0:
version "6.0.1"
- resolved "https://registry.nlark.com/hast-util-from-parse5/download/hast-util-from-parse5-6.0.1.tgz#554e34abdeea25ac76f5bd950a1f0180e0b3bc2a"
- integrity sha1-VU40q97qJax29b2VCh8BgOCzvCo=
+ resolved "https://registry.npmmirror.com/hast-util-from-parse5/-/hast-util-from-parse5-6.0.1.tgz#554e34abdeea25ac76f5bd950a1f0180e0b3bc2a"
+ integrity sha512-jeJUWiN5pSxW12Rh01smtVkZgZr33wBokLzKLwinYOUfSzm1Nl/c3GUGebDyOKjdsRgMvoVbV0VpAcpjF4NrJA==
dependencies:
"@types/parse5" "^5.0.0"
hastscript "^6.0.0"
@@ -4220,13 +4252,13 @@ hast-util-from-parse5@^6.0.0:
hast-util-parse-selector@^2.0.0:
version "2.2.5"
- resolved "https://registry.nlark.com/hast-util-parse-selector/download/hast-util-parse-selector-2.2.5.tgz#d57c23f4da16ae3c63b3b6ca4616683313499c3a"
- integrity sha1-1Xwj9NoWrjxjs7bKRhZoMxNJnDo=
+ resolved "https://registry.npmmirror.com/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz#d57c23f4da16ae3c63b3b6ca4616683313499c3a"
+ integrity sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ==
hast-util-raw@6.0.1:
version "6.0.1"
- resolved "https://registry.npmmirror.com/hast-util-raw/download/hast-util-raw-6.0.1.tgz?cache=0&sync_timestamp=1636449577205&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fhast-util-raw%2Fdownload%2Fhast-util-raw-6.0.1.tgz#973b15930b7529a7b66984c98148b46526885977"
- integrity sha1-lzsVkwt1Kae2aYTJgUi0ZSaIWXc=
+ resolved "https://registry.npmmirror.com/hast-util-raw/-/hast-util-raw-6.0.1.tgz#973b15930b7529a7b66984c98148b46526885977"
+ integrity sha512-ZMuiYA+UF7BXBtsTBNcLBF5HzXzkyE6MLzJnL605LKE8GJylNjGc4jjxazAHUtcwT5/CEt6afRKViYB4X66dig==
dependencies:
"@types/hast" "^2.0.0"
hast-util-from-parse5 "^6.0.0"
@@ -4241,8 +4273,8 @@ hast-util-raw@6.0.1:
hast-util-to-parse5@^6.0.0:
version "6.0.0"
- resolved "https://registry.nlark.com/hast-util-to-parse5/download/hast-util-to-parse5-6.0.0.tgz#1ec44650b631d72952066cea9b1445df699f8479"
- integrity sha1-HsRGULYx1ylSBmzqmxRF32mfhHk=
+ resolved "https://registry.npmmirror.com/hast-util-to-parse5/-/hast-util-to-parse5-6.0.0.tgz#1ec44650b631d72952066cea9b1445df699f8479"
+ integrity sha512-Lu5m6Lgm/fWuz8eWnrKezHtVY83JeRGaNQ2kn9aJgqaxvVkFCZQBEhgodZUDUvoodgyROHDb3r5IxAEdl6suJQ==
dependencies:
hast-to-hyperscript "^9.0.0"
property-information "^5.0.0"
@@ -4252,8 +4284,8 @@ hast-util-to-parse5@^6.0.0:
hastscript@^5.0.0:
version "5.1.2"
- resolved "https://registry.nlark.com/hastscript/download/hastscript-5.1.2.tgz#bde2c2e56d04c62dd24e8c5df288d050a355fb8a"
- integrity sha1-veLC5W0Exi3SToxd8ojQUKNV+4o=
+ resolved "https://registry.npmmirror.com/hastscript/-/hastscript-5.1.2.tgz#bde2c2e56d04c62dd24e8c5df288d050a355fb8a"
+ integrity sha512-WlztFuK+Lrvi3EggsqOkQ52rKbxkXL3RwB6t5lwoa8QLMemoWfBuL43eDrwOamJyR7uKQKdmKYaBH1NZBiIRrQ==
dependencies:
comma-separated-tokens "^1.0.0"
hast-util-parse-selector "^2.0.0"
@@ -4262,8 +4294,8 @@ hastscript@^5.0.0:
hastscript@^6.0.0:
version "6.0.0"
- resolved "https://registry.nlark.com/hastscript/download/hastscript-6.0.0.tgz#e8768d7eac56c3fdeac8a92830d58e811e5bf640"
- integrity sha1-6HaNfqxWw/3qyKkoMNWOgR5b9kA=
+ resolved "https://registry.npmmirror.com/hastscript/-/hastscript-6.0.0.tgz#e8768d7eac56c3fdeac8a92830d58e811e5bf640"
+ integrity sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w==
dependencies:
"@types/hast" "^2.0.0"
comma-separated-tokens "^1.0.0"
@@ -4273,13 +4305,13 @@ hastscript@^6.0.0:
he@^1.2.0:
version "1.2.0"
- resolved "https://registry.nlark.com/he/download/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f"
- integrity sha1-hK5l+n6vsWX922FWauFLrwVmTw8=
+ resolved "https://registry.npmmirror.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f"
+ integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==
history@^4.9.0:
version "4.10.1"
- resolved "https://registry.npmmirror.com/history/download/history-4.10.1.tgz#33371a65e3a83b267434e2b3f3b1b4c58aad4cf3"
- integrity sha1-MzcaZeOoOyZ0NOKz87G0xYqtTPM=
+ resolved "https://registry.npmmirror.com/history/-/history-4.10.1.tgz#33371a65e3a83b267434e2b3f3b1b4c58aad4cf3"
+ integrity sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==
dependencies:
"@babel/runtime" "^7.1.2"
loose-envify "^1.2.0"
@@ -4290,15 +4322,15 @@ history@^4.9.0:
hoist-non-react-statics@^3.1.0:
version "3.3.2"
- resolved "https://registry.nlark.com/hoist-non-react-statics/download/hoist-non-react-statics-3.3.2.tgz?cache=0&sync_timestamp=1618847127168&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fhoist-non-react-statics%2Fdownload%2Fhoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45"
- integrity sha1-7OCsr3HWLClpwuxZ/v9CpLGoW0U=
+ resolved "https://registry.npmmirror.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45"
+ integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==
dependencies:
react-is "^16.7.0"
hpack.js@^2.1.6:
version "2.1.6"
- resolved "https://registry.npm.taobao.org/hpack.js/download/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2"
- integrity sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=
+ resolved "https://registry.npmmirror.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2"
+ integrity sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==
dependencies:
inherits "^2.0.1"
obuf "^1.0.0"
@@ -4307,12 +4339,12 @@ hpack.js@^2.1.6:
html-entities@^2.3.2:
version "2.3.2"
- resolved "https://registry.nlark.com/html-entities/download/html-entities-2.3.2.tgz#760b404685cb1d794e4f4b744332e3b00dcfe488"
- integrity sha1-dgtARoXLHXlOT0t0QzLjsA3P5Ig=
+ resolved "https://registry.npmmirror.com/html-entities/-/html-entities-2.3.2.tgz#760b404685cb1d794e4f4b744332e3b00dcfe488"
+ integrity sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ==
html-minifier-terser@^6.0.2:
version "6.1.0"
- resolved "https://registry.npmmirror.com/html-minifier-terser/download/html-minifier-terser-6.1.0.tgz#bfc818934cc07918f6b3669f5774ecdfd48f32ab"
+ resolved "https://registry.npmmirror.com/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#bfc818934cc07918f6b3669f5774ecdfd48f32ab"
integrity sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==
dependencies:
camel-case "^4.1.2"
@@ -4325,17 +4357,17 @@ html-minifier-terser@^6.0.2:
html-tags@^3.1.0:
version "3.1.0"
- resolved "https://registry.npm.taobao.org/html-tags/download/html-tags-3.1.0.tgz#7b5e6f7e665e9fb41f30007ed9e0d41e97fb2140"
- integrity sha1-e15vfmZen7QfMAB+2eDUHpf7IUA=
+ resolved "https://registry.npmmirror.com/html-tags/-/html-tags-3.1.0.tgz#7b5e6f7e665e9fb41f30007ed9e0d41e97fb2140"
+ integrity sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg==
html-void-elements@^1.0.0:
version "1.0.5"
- resolved "https://registry.npmmirror.com/html-void-elements/download/html-void-elements-1.0.5.tgz#ce9159494e86d95e45795b166c2021c2cfca4483"
- integrity sha1-zpFZSU6G2V5FeVsWbCAhws/KRIM=
+ resolved "https://registry.npmmirror.com/html-void-elements/-/html-void-elements-1.0.5.tgz#ce9159494e86d95e45795b166c2021c2cfca4483"
+ integrity sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w==
html-webpack-plugin@^5.4.0:
version "5.5.0"
- resolved "https://registry.npmmirror.com/html-webpack-plugin/download/html-webpack-plugin-5.5.0.tgz#c3911936f57681c1f9f4d8b68c158cd9dfe52f50"
+ resolved "https://registry.npmmirror.com/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz#c3911936f57681c1f9f4d8b68c158cd9dfe52f50"
integrity sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw==
dependencies:
"@types/html-minifier-terser" "^6.0.0"
@@ -4346,8 +4378,8 @@ html-webpack-plugin@^5.4.0:
htmlparser2@^3.9.1:
version "3.10.1"
- resolved "https://registry.npmmirror.com/htmlparser2/download/htmlparser2-3.10.1.tgz?cache=0&sync_timestamp=1636640933377&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fhtmlparser2%2Fdownload%2Fhtmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f"
- integrity sha1-vWedw/WYl7ajS7EHSchVu1OpOS8=
+ resolved "https://registry.npmmirror.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f"
+ integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==
dependencies:
domelementtype "^1.3.1"
domhandler "^2.3.0"
@@ -4358,8 +4390,8 @@ htmlparser2@^3.9.1:
htmlparser2@^6.1.0:
version "6.1.0"
- resolved "https://registry.npmmirror.com/htmlparser2/download/htmlparser2-6.1.0.tgz?cache=0&sync_timestamp=1636640933377&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fhtmlparser2%2Fdownload%2Fhtmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7"
- integrity sha1-xNditsM3GgXb5l6UrkOp+EX7j7c=
+ resolved "https://registry.npmmirror.com/htmlparser2/-/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7"
+ integrity sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==
dependencies:
domelementtype "^2.0.1"
domhandler "^4.0.0"
@@ -4368,17 +4400,17 @@ htmlparser2@^6.1.0:
http-cache-semantics@^4.0.0:
version "4.1.0"
- resolved "https://registry.nlark.com/http-cache-semantics/download/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390"
- integrity sha1-SekcXL82yblLz81xwj1SSex045A=
+ resolved "https://registry.npmmirror.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390"
+ integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==
http-deceiver@^1.2.7:
version "1.2.7"
- resolved "https://registry.nlark.com/http-deceiver/download/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87"
- integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=
+ resolved "https://registry.npmmirror.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87"
+ integrity sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==
http-errors@1.8.1:
version "1.8.1"
- resolved "https://registry.npmmirror.com/http-errors/download/http-errors-1.8.1.tgz#7c3f28577cbc8a207388455dbd62295ed07bd68c"
+ resolved "https://registry.npmmirror.com/http-errors/-/http-errors-1.8.1.tgz#7c3f28577cbc8a207388455dbd62295ed07bd68c"
integrity sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==
dependencies:
depd "~1.1.2"
@@ -4389,8 +4421,8 @@ http-errors@1.8.1:
http-errors@~1.6.2:
version "1.6.3"
- resolved "https://registry.npmmirror.com/http-errors/download/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d"
- integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=
+ resolved "https://registry.npmmirror.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d"
+ integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==
dependencies:
depd "~1.1.2"
inherits "2.0.3"
@@ -4399,15 +4431,15 @@ http-errors@~1.6.2:
http-parser-js@>=0.5.1:
version "0.5.5"
- resolved "https://registry.npmmirror.com/http-parser-js/download/http-parser-js-0.5.5.tgz#d7c30d5d3c90d865b4a2e870181f9d6f22ac7ac5"
+ resolved "https://registry.npmmirror.com/http-parser-js/-/http-parser-js-0.5.5.tgz#d7c30d5d3c90d865b4a2e870181f9d6f22ac7ac5"
integrity sha512-x+JVEkO2PoM8qqpbPbOL3cqHPwerep7OwzK7Ay+sMQjKzaKCqWvjoXm5tqMP9tXWWTnTzAjIhXg+J99XYuPhPA==
http-proxy-middleware@^2.0.0:
- version "2.0.1"
- resolved "https://registry.nlark.com/http-proxy-middleware/download/http-proxy-middleware-2.0.1.tgz#7ef3417a479fb7666a571e09966c66a39bd2c15f"
- integrity sha1-fvNBekeft2ZqVx4Jlmxmo5vSwV8=
+ version "2.0.2"
+ resolved "https://registry.npmmirror.com/http-proxy-middleware/-/http-proxy-middleware-2.0.2.tgz#94d7593790aad6b3de48164f13792262f656c332"
+ integrity sha512-XtmDN5w+vdFTBZaYhdJAbMqn0DP/EhkUaAeo963mojwpKMMbw6nivtFKw07D7DDOH745L5k0VL0P8KRYNEVF/g==
dependencies:
- "@types/http-proxy" "^1.17.5"
+ "@types/http-proxy" "^1.17.8"
http-proxy "^1.18.1"
is-glob "^4.0.1"
is-plain-obj "^3.0.0"
@@ -4415,8 +4447,8 @@ http-proxy-middleware@^2.0.0:
http-proxy@^1.18.1:
version "1.18.1"
- resolved "https://registry.nlark.com/http-proxy/download/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549"
- integrity sha1-QBVB8FNIhLv5UmAzTnL4juOXZUk=
+ resolved "https://registry.npmmirror.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549"
+ integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==
dependencies:
eventemitter3 "^4.0.0"
follow-redirects "^1.0.0"
@@ -4424,91 +4456,91 @@ http-proxy@^1.18.1:
human-signals@^2.1.0:
version "2.1.0"
- resolved "https://registry.nlark.com/human-signals/download/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0"
- integrity sha1-3JH8ukLk0G5Kuu0zs+ejwC9RTqA=
+ resolved "https://registry.npmmirror.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0"
+ integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==
iconv-lite@0.4.24:
version "0.4.24"
- resolved "https://registry.nlark.com/iconv-lite/download/iconv-lite-0.4.24.tgz?cache=0&sync_timestamp=1621826342262&other_urls=https%3A%2F%2Fregistry.nlark.com%2Ficonv-lite%2Fdownload%2Ficonv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
- integrity sha1-ICK0sl+93CHS9SSXSkdKr+czkIs=
+ resolved "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
+ integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
dependencies:
safer-buffer ">= 2.1.2 < 3"
icss-utils@^5.0.0, icss-utils@^5.1.0:
version "5.1.0"
- resolved "https://registry.nlark.com/icss-utils/download/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae"
- integrity sha1-xr5oWKvQE9do6YNmrkfiXViHsa4=
+ resolved "https://registry.npmmirror.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae"
+ integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==
-ignore@^5.1.4:
+ignore@^5.2.0:
version "5.2.0"
- resolved "https://registry.npmmirror.com/ignore/download/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a"
+ resolved "https://registry.npmmirror.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a"
integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==
immer@^9.0.6:
- version "9.0.7"
- resolved "https://registry.npmmirror.com/immer/download/immer-9.0.7.tgz#b6156bd7db55db7abc73fd2fdadf4e579a701075"
- integrity sha512-KGllzpbamZDvOIxnmJ0jI840g7Oikx58lBPWV0hUh7dtAyZpFqqrBZdKka5GlTwMTZ1Tjc/bKKW4VSFAt6BqMA==
+ version "9.0.12"
+ resolved "https://registry.npmmirror.com/immer/-/immer-9.0.12.tgz#2d33ddf3ee1d247deab9d707ca472c8c942a0f20"
+ integrity sha512-lk7UNmSbAukB5B6dh9fnh5D0bJTOFKxVg2cyJWTYrWRfhLrLMBquONcUs3aFq507hNoIZEDDh8lb8UtOizSMhA==
import-fresh@^3.1.0, import-fresh@^3.2.1, import-fresh@^3.2.2, import-fresh@^3.3.0:
version "3.3.0"
- resolved "https://registry.nlark.com/import-fresh/download/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b"
- integrity sha1-NxYsJfy566oublPVtNiM4X2eDCs=
+ resolved "https://registry.npmmirror.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b"
+ integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==
dependencies:
parent-module "^1.0.0"
resolve-from "^4.0.0"
import-lazy@^2.1.0:
version "2.1.0"
- resolved "https://registry.nlark.com/import-lazy/download/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43"
- integrity sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=
+ resolved "https://registry.npmmirror.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43"
+ integrity sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A==
imurmurhash@^0.1.4:
version "0.1.4"
- resolved "https://registry.npm.taobao.org/imurmurhash/download/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
- integrity sha1-khi5srkoojixPcT7a21XbyMUU+o=
+ resolved "https://registry.npmmirror.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
+ integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==
indent-string@^4.0.0:
version "4.0.0"
- resolved "https://registry.nlark.com/indent-string/download/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251"
- integrity sha1-Yk+PRJfWGbLZdoUx1Y9BIoVNclE=
+ resolved "https://registry.npmmirror.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251"
+ integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==
inflight@^1.0.4:
version "1.0.6"
- resolved "https://registry.nlark.com/inflight/download/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
- integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
+ resolved "https://registry.npmmirror.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
+ integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==
dependencies:
once "^1.3.0"
wrappy "1"
inherits@2, inherits@2.0.4, inherits@^2.0.0, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3:
version "2.0.4"
- resolved "https://registry.npm.taobao.org/inherits/download/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
- integrity sha1-D6LGT5MpF8NDOg3tVTY6rjdBa3w=
+ resolved "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
+ integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
inherits@2.0.3:
version "2.0.3"
- resolved "https://registry.npm.taobao.org/inherits/download/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
- integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
+ resolved "https://registry.npmmirror.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
+ integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==
ini@2.0.0:
version "2.0.0"
- resolved "https://registry.nlark.com/ini/download/ini-2.0.0.tgz?cache=0&sync_timestamp=1622604533289&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fini%2Fdownload%2Fini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5"
- integrity sha1-5f1Vbs3VcmvpePoQAYYurLCpS8U=
+ resolved "https://registry.npmmirror.com/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5"
+ integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==
ini@^1.3.5, ini@~1.3.0:
version "1.3.8"
- resolved "https://registry.nlark.com/ini/download/ini-1.3.8.tgz?cache=0&sync_timestamp=1622604533289&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fini%2Fdownload%2Fini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c"
- integrity sha1-op2kJbSIBvNHZ6Tvzjlyaa8oQyw=
+ resolved "https://registry.npmmirror.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c"
+ integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==
inline-style-parser@0.1.1:
version "0.1.1"
- resolved "https://registry.npm.taobao.org/inline-style-parser/download/inline-style-parser-0.1.1.tgz#ec8a3b429274e9c0a1f1c4ffa9453a7fef72cea1"
- integrity sha1-7Io7QpJ06cCh8cT/qUU6f+9yzqE=
+ resolved "https://registry.npmmirror.com/inline-style-parser/-/inline-style-parser-0.1.1.tgz#ec8a3b429274e9c0a1f1c4ffa9453a7fef72cea1"
+ integrity sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==
internal-slot@^1.0.3:
version "1.0.3"
- resolved "https://registry.nlark.com/internal-slot/download/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c"
- integrity sha1-c0fjB97uovqsKsYgXUvH00ln9Zw=
+ resolved "https://registry.npmmirror.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c"
+ integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==
dependencies:
get-intrinsic "^1.1.0"
has "^1.0.3"
@@ -4516,316 +4548,316 @@ internal-slot@^1.0.3:
interpret@^1.0.0:
version "1.4.0"
- resolved "https://registry.nlark.com/interpret/download/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e"
- integrity sha1-Zlq4vE2iendKQFhOgS4+D6RbGh4=
+ resolved "https://registry.npmmirror.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e"
+ integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==
ip@^1.1.0:
version "1.1.5"
- resolved "https://registry.nlark.com/ip/download/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a"
- integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=
+ resolved "https://registry.npmmirror.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a"
+ integrity sha512-rBtCAQAJm8A110nbwn6YdveUnuZH3WrC36IwkRXxDnq53JvXA2NVQvB7IHyKomxK1MJ4VDNw3UtFDdXQ+AvLYA==
ipaddr.js@1.9.1:
version "1.9.1"
- resolved "https://registry.nlark.com/ipaddr.js/download/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3"
- integrity sha1-v/OFQ+64mEglB5/zoqjmy9RngbM=
+ resolved "https://registry.npmmirror.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3"
+ integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==
ipaddr.js@^2.0.1:
version "2.0.1"
- resolved "https://registry.nlark.com/ipaddr.js/download/ipaddr.js-2.0.1.tgz#eca256a7a877e917aeb368b0a7497ddf42ef81c0"
- integrity sha1-7KJWp6h36Reus2iwp0l930LvgcA=
+ resolved "https://registry.npmmirror.com/ipaddr.js/-/ipaddr.js-2.0.1.tgz#eca256a7a877e917aeb368b0a7497ddf42ef81c0"
+ integrity sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==
is-alphabetical@1.0.4, is-alphabetical@^1.0.0:
version "1.0.4"
- resolved "https://registry.npmmirror.com/is-alphabetical/download/is-alphabetical-1.0.4.tgz#9e7d6b94916be22153745d184c298cbf986a686d"
- integrity sha1-nn1rlJFr4iFTdF0YTCmMv5hqaG0=
+ resolved "https://registry.npmmirror.com/is-alphabetical/-/is-alphabetical-1.0.4.tgz#9e7d6b94916be22153745d184c298cbf986a686d"
+ integrity sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==
is-alphanumerical@^1.0.0:
version "1.0.4"
- resolved "https://registry.npmmirror.com/is-alphanumerical/download/is-alphanumerical-1.0.4.tgz?cache=0&sync_timestamp=1636009316820&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fis-alphanumerical%2Fdownload%2Fis-alphanumerical-1.0.4.tgz#7eb9a2431f855f6b1ef1a78e326df515696c4dbf"
- integrity sha1-frmiQx+FX2se8aeOMm31FWlsTb8=
+ resolved "https://registry.npmmirror.com/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz#7eb9a2431f855f6b1ef1a78e326df515696c4dbf"
+ integrity sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==
dependencies:
is-alphabetical "^1.0.0"
is-decimal "^1.0.0"
is-arguments@^1.0.4:
version "1.1.1"
- resolved "https://registry.nlark.com/is-arguments/download/is-arguments-1.1.1.tgz?cache=0&sync_timestamp=1628203607218&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fis-arguments%2Fdownload%2Fis-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b"
- integrity sha1-FbP4j9oB8ql/7ITKdhpWDxI++ps=
+ resolved "https://registry.npmmirror.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b"
+ integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==
dependencies:
call-bind "^1.0.2"
has-tostringtag "^1.0.0"
is-arrayish@^0.2.1:
version "0.2.1"
- resolved "https://registry.nlark.com/is-arrayish/download/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
- integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=
+ resolved "https://registry.npmmirror.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
+ integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==
is-bigint@^1.0.1:
version "1.0.4"
- resolved "https://registry.nlark.com/is-bigint/download/is-bigint-1.0.4.tgz?cache=0&sync_timestamp=1628747504782&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fis-bigint%2Fdownload%2Fis-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3"
- integrity sha1-CBR6GHW8KzIAXUHM2Ckd/8ZpHfM=
+ resolved "https://registry.npmmirror.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3"
+ integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==
dependencies:
has-bigints "^1.0.1"
is-binary-path@~2.1.0:
version "2.1.0"
- resolved "https://registry.nlark.com/is-binary-path/download/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
- integrity sha1-6h9/O4DwZCNug0cPhsCcJU+0Wwk=
+ resolved "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
+ integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==
dependencies:
binary-extensions "^2.0.0"
is-boolean-object@^1.1.0:
version "1.1.2"
- resolved "https://registry.nlark.com/is-boolean-object/download/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719"
- integrity sha1-XG3CACRt2TIa5LiFoRS7H3X2Nxk=
+ resolved "https://registry.npmmirror.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719"
+ integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==
dependencies:
call-bind "^1.0.2"
has-tostringtag "^1.0.0"
is-buffer@^2.0.0:
version "2.0.5"
- resolved "https://registry.nlark.com/is-buffer/download/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191"
- integrity sha1-68JS5ADSL/jXf6CYiIIaJKZYwZE=
+ resolved "https://registry.npmmirror.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191"
+ integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==
is-callable@^1.1.4, is-callable@^1.2.4:
version "1.2.4"
- resolved "https://registry.nlark.com/is-callable/download/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945"
- integrity sha1-RzAdWN0CWUB4ZVR4U99tYf5HGUU=
+ resolved "https://registry.npmmirror.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945"
+ integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==
is-ci@^2.0.0:
version "2.0.0"
- resolved "https://registry.npmmirror.com/is-ci/download/is-ci-2.0.0.tgz?cache=0&sync_timestamp=1635261061017&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fis-ci%2Fdownload%2Fis-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c"
- integrity sha1-a8YzQYGBDgS1wis9WJ/cpVAmQEw=
+ resolved "https://registry.npmmirror.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c"
+ integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==
dependencies:
ci-info "^2.0.0"
-is-core-module@^2.8.0:
- version "2.8.0"
- resolved "https://registry.npmmirror.com/is-core-module/download/is-core-module-2.8.0.tgz?cache=0&sync_timestamp=1634236558192&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fis-core-module%2Fdownload%2Fis-core-module-2.8.0.tgz#0321336c3d0925e497fd97f5d95cb114a5ccd548"
- integrity sha1-AyEzbD0JJeSX/Zf12VyxFKXM1Ug=
+is-core-module@^2.8.1:
+ version "2.8.1"
+ resolved "https://registry.npmmirror.com/is-core-module/-/is-core-module-2.8.1.tgz#f59fdfca701d5879d0a6b100a40aa1560ce27211"
+ integrity sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==
dependencies:
has "^1.0.3"
is-date-object@^1.0.1:
version "1.0.5"
- resolved "https://registry.nlark.com/is-date-object/download/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f"
- integrity sha1-CEHVU25yTCVZe/bqYuG9OCmN8x8=
+ resolved "https://registry.npmmirror.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f"
+ integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==
dependencies:
has-tostringtag "^1.0.0"
is-decimal@^1.0.0:
version "1.0.4"
- resolved "https://registry.npmmirror.com/is-decimal/download/is-decimal-1.0.4.tgz#65a3a5958a1c5b63a706e1b333d7cd9f630d3fa5"
- integrity sha1-ZaOllYocW2OnBuGzM9fNn2MNP6U=
+ resolved "https://registry.npmmirror.com/is-decimal/-/is-decimal-1.0.4.tgz#65a3a5958a1c5b63a706e1b333d7cd9f630d3fa5"
+ integrity sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==
is-docker@^2.0.0, is-docker@^2.1.1:
version "2.2.1"
- resolved "https://registry.nlark.com/is-docker/download/is-docker-2.2.1.tgz?cache=0&sync_timestamp=1630451964594&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fis-docker%2Fdownload%2Fis-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa"
- integrity sha1-M+6r4jz+hvFL3kQIoCwM+4U6zao=
+ resolved "https://registry.npmmirror.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa"
+ integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==
is-extendable@^0.1.0:
version "0.1.1"
- resolved "https://registry.nlark.com/is-extendable/download/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
- integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=
+ resolved "https://registry.npmmirror.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
+ integrity sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==
is-extglob@^2.1.1:
version "2.1.1"
- resolved "https://registry.nlark.com/is-extglob/download/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
- integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
+ resolved "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
+ integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==
is-fullwidth-code-point@^3.0.0:
version "3.0.0"
- resolved "https://registry.nlark.com/is-fullwidth-code-point/download/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d"
- integrity sha1-8Rb4Bk/pCz94RKOJl8C3UFEmnx0=
+ resolved "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d"
+ integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1:
version "4.0.3"
- resolved "https://registry.npmmirror.com/is-glob/download/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
- integrity sha1-ZPYeQsu7LuwgcanawLKLoeZdUIQ=
+ resolved "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
+ integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
dependencies:
is-extglob "^2.1.1"
is-hexadecimal@^1.0.0:
version "1.0.4"
- resolved "https://registry.npmmirror.com/is-hexadecimal/download/is-hexadecimal-1.0.4.tgz?cache=0&sync_timestamp=1636011716914&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fis-hexadecimal%2Fdownload%2Fis-hexadecimal-1.0.4.tgz#cc35c97588da4bd49a8eedd6bc4082d44dcb23a7"
- integrity sha1-zDXJdYjaS9Saju3WvECC1E3LI6c=
+ resolved "https://registry.npmmirror.com/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz#cc35c97588da4bd49a8eedd6bc4082d44dcb23a7"
+ integrity sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==
is-installed-globally@^0.4.0:
version "0.4.0"
- resolved "https://registry.nlark.com/is-installed-globally/download/is-installed-globally-0.4.0.tgz#9a0fd407949c30f86eb6959ef1b7994ed0b7b520"
- integrity sha1-mg/UB5ScMPhutpWe8beZTtC3tSA=
+ resolved "https://registry.npmmirror.com/is-installed-globally/-/is-installed-globally-0.4.0.tgz#9a0fd407949c30f86eb6959ef1b7994ed0b7b520"
+ integrity sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==
dependencies:
global-dirs "^3.0.0"
is-path-inside "^3.0.2"
is-negative-zero@^2.0.1:
version "2.0.2"
- resolved "https://registry.npmmirror.com/is-negative-zero/download/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150"
+ resolved "https://registry.npmmirror.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150"
integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==
is-npm@^5.0.0:
version "5.0.0"
- resolved "https://registry.nlark.com/is-npm/download/is-npm-5.0.0.tgz#43e8d65cc56e1b67f8d47262cf667099193f45a8"
- integrity sha1-Q+jWXMVuG2f41HJiz2ZwmRk/Rag=
+ resolved "https://registry.npmmirror.com/is-npm/-/is-npm-5.0.0.tgz#43e8d65cc56e1b67f8d47262cf667099193f45a8"
+ integrity sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==
is-number-object@^1.0.4:
version "1.0.6"
- resolved "https://registry.nlark.com/is-number-object/download/is-number-object-1.0.6.tgz#6a7aaf838c7f0686a50b4553f7e54a96494e89f0"
- integrity sha1-anqvg4x/BoalC0VT9+VKlklOifA=
+ resolved "https://registry.npmmirror.com/is-number-object/-/is-number-object-1.0.6.tgz#6a7aaf838c7f0686a50b4553f7e54a96494e89f0"
+ integrity sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==
dependencies:
has-tostringtag "^1.0.0"
is-number@^7.0.0:
version "7.0.0"
- resolved "https://registry.npm.taobao.org/is-number/download/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
- integrity sha1-dTU0W4lnNNX4DE0GxQlVUnoU8Ss=
+ resolved "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
+ integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
is-obj@^1.0.1:
version "1.0.1"
- resolved "https://registry.nlark.com/is-obj/download/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f"
- integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8=
+ resolved "https://registry.npmmirror.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f"
+ integrity sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==
is-obj@^2.0.0:
version "2.0.0"
- resolved "https://registry.nlark.com/is-obj/download/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982"
- integrity sha1-Rz+wXZc3BeP9liBUUBjKjiLvSYI=
+ resolved "https://registry.npmmirror.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982"
+ integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==
is-path-cwd@^2.2.0:
version "2.2.0"
- resolved "https://registry.nlark.com/is-path-cwd/download/is-path-cwd-2.2.0.tgz?cache=0&sync_timestamp=1628686555851&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fis-path-cwd%2Fdownload%2Fis-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb"
- integrity sha1-Z9Q7gmZKe1GR/ZEZEn6zAASKn9s=
+ resolved "https://registry.npmmirror.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb"
+ integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==
is-path-inside@^3.0.2:
version "3.0.3"
- resolved "https://registry.nlark.com/is-path-inside/download/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283"
- integrity sha1-0jE2LlOgf/Kw4Op/7QSRYf/RYoM=
+ resolved "https://registry.npmmirror.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283"
+ integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==
is-plain-obj@^2.0.0:
version "2.1.0"
- resolved "https://registry.nlark.com/is-plain-obj/download/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287"
- integrity sha1-ReQuN/zPH0Dajl927iFRWEDAkoc=
+ resolved "https://registry.npmmirror.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287"
+ integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==
is-plain-obj@^3.0.0:
version "3.0.0"
- resolved "https://registry.nlark.com/is-plain-obj/download/is-plain-obj-3.0.0.tgz#af6f2ea14ac5a646183a5bbdb5baabbc156ad9d7"
- integrity sha1-r28uoUrFpkYYOlu9tbqrvBVq2dc=
+ resolved "https://registry.npmmirror.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz#af6f2ea14ac5a646183a5bbdb5baabbc156ad9d7"
+ integrity sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==
is-plain-object@^2.0.4:
version "2.0.4"
- resolved "https://registry.nlark.com/is-plain-object/download/is-plain-object-2.0.4.tgz?cache=0&sync_timestamp=1622605338713&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fis-plain-object%2Fdownload%2Fis-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677"
- integrity sha1-LBY7P6+xtgbZ0Xko8FwqHDjgdnc=
+ resolved "https://registry.npmmirror.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677"
+ integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==
dependencies:
isobject "^3.0.1"
is-regex@^1.0.4, is-regex@^1.1.4:
version "1.1.4"
- resolved "https://registry.nlark.com/is-regex/download/is-regex-1.1.4.tgz?cache=0&sync_timestamp=1628221905423&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fis-regex%2Fdownload%2Fis-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958"
- integrity sha1-7vVmPNWfpMCuM5UFMj32hUuxWVg=
+ resolved "https://registry.npmmirror.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958"
+ integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==
dependencies:
call-bind "^1.0.2"
has-tostringtag "^1.0.0"
is-regexp@^1.0.0:
version "1.0.0"
- resolved "https://registry.npmmirror.com/is-regexp/download/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069"
- integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk=
+ resolved "https://registry.npmmirror.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069"
+ integrity sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==
is-root@^2.1.0:
version "2.1.0"
- resolved "https://registry.npm.taobao.org/is-root/download/is-root-2.1.0.tgz#809e18129cf1129644302a4f8544035d51984a9c"
- integrity sha1-gJ4YEpzxEpZEMCpPhUQDXVGYSpw=
+ resolved "https://registry.npmmirror.com/is-root/-/is-root-2.1.0.tgz#809e18129cf1129644302a4f8544035d51984a9c"
+ integrity sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==
is-shared-array-buffer@^1.0.1:
version "1.0.1"
- resolved "https://registry.npmmirror.com/is-shared-array-buffer/download/is-shared-array-buffer-1.0.1.tgz#97b0c85fbdacb59c9c446fe653b82cf2b5b7cfe6"
- integrity sha1-l7DIX72stZycRG/mU7gs8rW3z+Y=
+ resolved "https://registry.npmmirror.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz#97b0c85fbdacb59c9c446fe653b82cf2b5b7cfe6"
+ integrity sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==
is-stream@^2.0.0:
version "2.0.1"
- resolved "https://registry.nlark.com/is-stream/download/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077"
- integrity sha1-+sHj1TuXrVqdCunO8jifWBClwHc=
+ resolved "https://registry.npmmirror.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077"
+ integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==
is-string@^1.0.5, is-string@^1.0.7:
version "1.0.7"
- resolved "https://registry.nlark.com/is-string/download/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd"
- integrity sha1-DdEr8gBvJVu1j2lREO/3SR7rwP0=
+ resolved "https://registry.npmmirror.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd"
+ integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==
dependencies:
has-tostringtag "^1.0.0"
is-symbol@^1.0.2, is-symbol@^1.0.3:
version "1.0.4"
- resolved "https://registry.nlark.com/is-symbol/download/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c"
- integrity sha1-ptrJO2NbBjymhyI23oiRClevE5w=
+ resolved "https://registry.npmmirror.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c"
+ integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==
dependencies:
has-symbols "^1.0.2"
is-typedarray@^1.0.0:
version "1.0.0"
- resolved "https://registry.nlark.com/is-typedarray/download/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
- integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=
+ resolved "https://registry.npmmirror.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
+ integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==
is-weakref@^1.0.1:
version "1.0.2"
- resolved "https://registry.npmmirror.com/is-weakref/download/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2"
+ resolved "https://registry.npmmirror.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2"
integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==
dependencies:
call-bind "^1.0.2"
is-whitespace-character@^1.0.0:
version "1.0.4"
- resolved "https://registry.npmmirror.com/is-whitespace-character/download/is-whitespace-character-1.0.4.tgz?cache=0&sync_timestamp=1636008401191&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fis-whitespace-character%2Fdownload%2Fis-whitespace-character-1.0.4.tgz#0858edd94a95594c7c9dd0b5c174ec6e45ee4aa7"
- integrity sha1-CFjt2UqVWUx8ndC1wXTsbkXuSqc=
+ resolved "https://registry.npmmirror.com/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz#0858edd94a95594c7c9dd0b5c174ec6e45ee4aa7"
+ integrity sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w==
is-word-character@^1.0.0:
version "1.0.4"
- resolved "https://registry.npmmirror.com/is-word-character/download/is-word-character-1.0.4.tgz#ce0e73216f98599060592f62ff31354ddbeb0230"
- integrity sha1-zg5zIW+YWZBgWS9i/zE1TdvrAjA=
+ resolved "https://registry.npmmirror.com/is-word-character/-/is-word-character-1.0.4.tgz#ce0e73216f98599060592f62ff31354ddbeb0230"
+ integrity sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA==
is-wsl@^2.1.1, is-wsl@^2.2.0:
version "2.2.0"
- resolved "https://registry.nlark.com/is-wsl/download/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271"
- integrity sha1-dKTHbnfKn9P5MvKQwX6jJs0VcnE=
+ resolved "https://registry.npmmirror.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271"
+ integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==
dependencies:
is-docker "^2.0.0"
is-yarn-global@^0.3.0:
version "0.3.0"
- resolved "https://registry.nlark.com/is-yarn-global/download/is-yarn-global-0.3.0.tgz#d502d3382590ea3004893746754c89139973e232"
- integrity sha1-1QLTOCWQ6jAEiTdGdUyJE5lz4jI=
+ resolved "https://registry.npmmirror.com/is-yarn-global/-/is-yarn-global-0.3.0.tgz#d502d3382590ea3004893746754c89139973e232"
+ integrity sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==
isarray@0.0.1:
version "0.0.1"
- resolved "https://registry.npm.taobao.org/isarray/download/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
- integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=
+ resolved "https://registry.npmmirror.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
+ integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==
isarray@~1.0.0:
version "1.0.0"
- resolved "https://registry.npm.taobao.org/isarray/download/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
- integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
+ resolved "https://registry.npmmirror.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
+ integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==
isexe@^2.0.0:
version "2.0.0"
- resolved "https://registry.nlark.com/isexe/download/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
- integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=
+ resolved "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
+ integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==
isobject@^3.0.1:
version "3.0.1"
- resolved "https://registry.npmmirror.com/isobject/download/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
+ resolved "https://registry.npmmirror.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==
-jest-worker@^27.0.2, jest-worker@^27.4.1:
- version "27.4.6"
- resolved "https://registry.npmmirror.com/jest-worker/download/jest-worker-27.4.6.tgz#5d2d93db419566cb680752ca0792780e71b3273e"
- integrity sha512-gHWJF/6Xi5CTG5QCvROr6GcmpIqNYpDJyc8A1h/DyXqH1tD6SnRCM0d3U5msV31D2LB/U+E0M+W4oyvKV44oNw==
+jest-worker@^27.0.2, jest-worker@^27.4.5:
+ version "27.5.0"
+ resolved "https://registry.npmmirror.com/jest-worker/-/jest-worker-27.5.0.tgz#99ee77e4d06168107c27328bd7f54e74c3a48d59"
+ integrity sha512-8OEHiPNOPTfaWnJ2SUHM8fmgeGq37uuGsQBvGKQJl1f+6WIy6g7G3fE2ruI5294bUKUI9FaCWt5hDvO8HSwsSg==
dependencies:
"@types/node" "*"
merge-stream "^2.0.0"
supports-color "^8.0.0"
joi@^17.4.0, joi@^17.4.2:
- version "17.5.0"
- resolved "https://registry.npmmirror.com/joi/download/joi-17.5.0.tgz#7e66d0004b5045d971cf416a55fb61d33ac6e011"
- integrity sha512-R7hR50COp7StzLnDi4ywOXHrBrgNXuUUfJWIR5lPY5Bm/pOD3jZaTwpluUXVLRWcoWZxkrHBBJ5hLxgnlehbdw==
+ version "17.6.0"
+ resolved "https://registry.npmmirror.com/joi/-/joi-17.6.0.tgz#0bb54f2f006c09a96e75ce687957bd04290054b2"
+ integrity sha512-OX5dG6DTbcr/kbMFj0KGYxuew69HPcAE3K/sZpEV2nP6e/j/C0HV+HNiBPCASxdx5T7DMoa0s8UeHWMnb6n2zw==
dependencies:
"@hapi/hoek" "^9.0.0"
"@hapi/topo" "^5.0.0"
@@ -4835,12 +4867,12 @@ joi@^17.4.0, joi@^17.4.2:
"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0:
version "4.0.0"
- resolved "https://registry.nlark.com/js-tokens/download/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
- integrity sha1-GSA/tZmR35jjoocFDUZHzerzJJk=
+ resolved "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
+ integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
js-yaml@^3.13.1:
version "3.14.1"
- resolved "https://registry.npmmirror.com/js-yaml/download/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537"
+ resolved "https://registry.npmmirror.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537"
integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==
dependencies:
argparse "^1.0.7"
@@ -4848,64 +4880,64 @@ js-yaml@^3.13.1:
js-yaml@^4.0.0:
version "4.1.0"
- resolved "https://registry.npmmirror.com/js-yaml/download/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602"
+ resolved "https://registry.npmmirror.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602"
integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==
dependencies:
argparse "^2.0.1"
jsesc@^2.5.1:
version "2.5.2"
- resolved "https://registry.nlark.com/jsesc/download/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4"
- integrity sha1-gFZNLkg9rPbo7yCWUKZ98/DCg6Q=
+ resolved "https://registry.npmmirror.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4"
+ integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==
jsesc@~0.5.0:
version "0.5.0"
- resolved "https://registry.nlark.com/jsesc/download/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d"
- integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=
+ resolved "https://registry.npmmirror.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d"
+ integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==
json-buffer@3.0.0:
version "3.0.0"
- resolved "https://registry.nlark.com/json-buffer/download/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898"
- integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=
+ resolved "https://registry.npmmirror.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898"
+ integrity sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==
json-parse-better-errors@^1.0.2:
version "1.0.2"
- resolved "https://registry.npmmirror.com/json-parse-better-errors/download/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9"
- integrity sha1-u4Z8+zRQ5pEHwTHRxRS6s9yLyqk=
+ resolved "https://registry.npmmirror.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9"
+ integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==
json-parse-even-better-errors@^2.3.0:
version "2.3.1"
- resolved "https://registry.nlark.com/json-parse-even-better-errors/download/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d"
- integrity sha1-fEeAWpQxmSjgV3dAXcEuH3pO4C0=
+ resolved "https://registry.npmmirror.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d"
+ integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==
json-schema-traverse@^0.4.1:
version "0.4.1"
- resolved "https://registry.nlark.com/json-schema-traverse/download/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
- integrity sha1-afaofZUTq4u4/mO9sJecRI5oRmA=
+ resolved "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
+ integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
json-schema-traverse@^1.0.0:
version "1.0.0"
- resolved "https://registry.nlark.com/json-schema-traverse/download/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2"
- integrity sha1-rnvLNlard6c7pcSb9lTzjmtoYOI=
+ resolved "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2"
+ integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==
json5@^1.0.1:
version "1.0.1"
- resolved "https://registry.nlark.com/json5/download/json5-1.0.1.tgz?cache=0&sync_timestamp=1622604475200&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fjson5%2Fdownload%2Fjson5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe"
- integrity sha1-d5+wAYYE+oVOrL9iUhgNg1Q+Pb4=
+ resolved "https://registry.npmmirror.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe"
+ integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==
dependencies:
minimist "^1.2.0"
json5@^2.1.2:
version "2.2.0"
- resolved "https://registry.nlark.com/json5/download/json5-2.2.0.tgz?cache=0&sync_timestamp=1622604475200&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fjson5%2Fdownload%2Fjson5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3"
- integrity sha1-Lf7+cgxrpSXZ69kJlQ8FFTFsiaM=
+ resolved "https://registry.npmmirror.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3"
+ integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==
dependencies:
minimist "^1.2.5"
jsonfile@^6.0.1:
version "6.1.0"
- resolved "https://registry.nlark.com/jsonfile/download/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae"
- integrity sha1-vFWyY0eTxnnsZAMJTrE2mKbsCq4=
+ resolved "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae"
+ integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==
dependencies:
universalify "^2.0.0"
optionalDependencies:
@@ -4913,57 +4945,57 @@ jsonfile@^6.0.1:
keyv@^3.0.0:
version "3.1.0"
- resolved "https://registry.npmmirror.com/keyv/download/keyv-3.1.0.tgz?cache=0&sync_timestamp=1635869183541&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fkeyv%2Fdownload%2Fkeyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9"
- integrity sha1-7MIoSG9pmR5J6UdkhaW+Ho/FxNk=
+ resolved "https://registry.npmmirror.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9"
+ integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==
dependencies:
json-buffer "3.0.0"
kind-of@^6.0.0, kind-of@^6.0.2:
version "6.0.3"
- resolved "https://registry.nlark.com/kind-of/download/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd"
- integrity sha1-B8BQNKbDSfoG4k+jWqdttFgM5N0=
+ resolved "https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd"
+ integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==
kleur@^3.0.3:
version "3.0.3"
- resolved "https://registry.nlark.com/kleur/download/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e"
- integrity sha1-p5yezIbuHOP6YgbRIWxQHxR/wH4=
+ resolved "https://registry.npmmirror.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e"
+ integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==
klona@^2.0.5:
version "2.0.5"
- resolved "https://registry.npmmirror.com/klona/download/klona-2.0.5.tgz?cache=0&sync_timestamp=1635385383825&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fklona%2Fdownload%2Fklona-2.0.5.tgz#d166574d90076395d9963aa7a928fabb8d76afbc"
- integrity sha1-0WZXTZAHY5XZljqnqSj6u412r7w=
+ resolved "https://registry.npmmirror.com/klona/-/klona-2.0.5.tgz#d166574d90076395d9963aa7a928fabb8d76afbc"
+ integrity sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==
latest-version@^5.1.0:
version "5.1.0"
- resolved "https://registry.nlark.com/latest-version/download/latest-version-5.1.0.tgz?cache=0&sync_timestamp=1626951703884&other_urls=https%3A%2F%2Fregistry.nlark.com%2Flatest-version%2Fdownload%2Flatest-version-5.1.0.tgz#119dfe908fe38d15dfa43ecd13fa12ec8832face"
- integrity sha1-EZ3+kI/jjRXfpD7NE/oS7Igy+s4=
+ resolved "https://registry.npmmirror.com/latest-version/-/latest-version-5.1.0.tgz#119dfe908fe38d15dfa43ecd13fa12ec8832face"
+ integrity sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==
dependencies:
package-json "^6.3.0"
leven@^3.1.0:
version "3.1.0"
- resolved "https://registry.nlark.com/leven/download/leven-3.1.0.tgz?cache=0&sync_timestamp=1628597917913&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fleven%2Fdownload%2Fleven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2"
- integrity sha1-d4kd6DQGTMy6gq54QrtrFKE+1/I=
+ resolved "https://registry.npmmirror.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2"
+ integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==
lilconfig@^2.0.3, lilconfig@^2.0.4:
version "2.0.4"
- resolved "https://registry.npmmirror.com/lilconfig/download/lilconfig-2.0.4.tgz?cache=0&sync_timestamp=1636150919256&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Flilconfig%2Fdownload%2Flilconfig-2.0.4.tgz#f4507d043d7058b380b6a8f5cb7bcd4b34cee082"
- integrity sha1-9FB9BD1wWLOAtqj1y3vNSzTO4II=
+ resolved "https://registry.npmmirror.com/lilconfig/-/lilconfig-2.0.4.tgz#f4507d043d7058b380b6a8f5cb7bcd4b34cee082"
+ integrity sha512-bfTIN7lEsiooCocSISTWXkiWJkRqtL9wYtYy+8EK3Y41qh3mpwPU0ycTOgjdY9ErwXCc8QyrQp82bdL0Xkm9yA==
lines-and-columns@^1.1.6:
version "1.2.4"
- resolved "https://registry.npmmirror.com/lines-and-columns/download/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632"
+ resolved "https://registry.npmmirror.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632"
integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==
loader-runner@^4.2.0:
version "4.2.0"
- resolved "https://registry.nlark.com/loader-runner/download/loader-runner-4.2.0.tgz#d7022380d66d14c5fb1d496b89864ebcfd478384"
- integrity sha1-1wIjgNZtFMX7HUlriYZOvP1Hg4Q=
+ resolved "https://registry.npmmirror.com/loader-runner/-/loader-runner-4.2.0.tgz#d7022380d66d14c5fb1d496b89864ebcfd478384"
+ integrity sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==
loader-utils@^1.4.0:
version "1.4.0"
- resolved "https://registry.npmmirror.com/loader-utils/download/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613"
- integrity sha1-xXm140yzSxp07cbB+za/o3HVphM=
+ resolved "https://registry.npmmirror.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613"
+ integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==
dependencies:
big.js "^5.2.2"
emojis-list "^3.0.0"
@@ -4971,8 +5003,8 @@ loader-utils@^1.4.0:
loader-utils@^2.0.0:
version "2.0.2"
- resolved "https://registry.npmmirror.com/loader-utils/download/loader-utils-2.0.2.tgz#d6e3b4fb81870721ae4e0868ab11dd638368c129"
- integrity sha1-1uO0+4GHByGuTghoqxHdY4NowSk=
+ resolved "https://registry.npmmirror.com/loader-utils/-/loader-utils-2.0.2.tgz#d6e3b4fb81870721ae4e0868ab11dd638368c129"
+ integrity sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==
dependencies:
big.js "^5.2.2"
emojis-list "^3.0.0"
@@ -4980,187 +5012,187 @@ loader-utils@^2.0.0:
locate-path@^3.0.0:
version "3.0.0"
- resolved "https://registry.nlark.com/locate-path/download/locate-path-3.0.0.tgz?cache=0&sync_timestamp=1629895724478&other_urls=https%3A%2F%2Fregistry.nlark.com%2Flocate-path%2Fdownload%2Flocate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e"
- integrity sha1-2+w7OrdZdYBxtY/ln8QYca8hQA4=
+ resolved "https://registry.npmmirror.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e"
+ integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==
dependencies:
p-locate "^3.0.0"
path-exists "^3.0.0"
locate-path@^5.0.0:
version "5.0.0"
- resolved "https://registry.nlark.com/locate-path/download/locate-path-5.0.0.tgz?cache=0&sync_timestamp=1629895724478&other_urls=https%3A%2F%2Fregistry.nlark.com%2Flocate-path%2Fdownload%2Flocate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0"
- integrity sha1-Gvujlq/WdqbUJQTQpno6frn2KqA=
+ resolved "https://registry.npmmirror.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0"
+ integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==
dependencies:
p-locate "^4.1.0"
lodash-es@^4.17.15:
version "4.17.21"
- resolved "https://registry.npmmirror.com/lodash-es/download/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee"
+ resolved "https://registry.npmmirror.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee"
integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==
lodash.assignin@^4.0.9:
version "4.2.0"
- resolved "https://registry.npmmirror.com/lodash.assignin/download/lodash.assignin-4.2.0.tgz#ba8df5fb841eb0a3e8044232b0e263a8dc6a28a2"
- integrity sha1-uo31+4QesKPoBEIysOJjqNxqKKI=
+ resolved "https://registry.npmmirror.com/lodash.assignin/-/lodash.assignin-4.2.0.tgz#ba8df5fb841eb0a3e8044232b0e263a8dc6a28a2"
+ integrity sha512-yX/rx6d/UTVh7sSVWVSIMjfnz95evAgDFdb1ZozC35I9mSFCkmzptOzevxjgbQUsc78NR44LVHWjsoMQXy9FDg==
lodash.bind@^4.1.4:
version "4.2.1"
- resolved "https://registry.nlark.com/lodash.bind/download/lodash.bind-4.2.1.tgz#7ae3017e939622ac31b7d7d7dcb1b34db1690d35"
- integrity sha1-euMBfpOWIqwxt9fX3LGzTbFpDTU=
+ resolved "https://registry.npmmirror.com/lodash.bind/-/lodash.bind-4.2.1.tgz#7ae3017e939622ac31b7d7d7dcb1b34db1690d35"
+ integrity sha512-lxdsn7xxlCymgLYo1gGvVrfHmkjDiyqVv62FAeF2i5ta72BipE1SLxw8hPEPLhD4/247Ijw07UQH7Hq/chT5LA==
lodash.castarray@^4.4.0:
version "4.4.0"
- resolved "https://registry.npm.taobao.org/lodash.castarray/download/lodash.castarray-4.4.0.tgz#c02513515e309daddd4c24c60cfddcf5976d9115"
- integrity sha1-wCUTUV4wna3dTCTGDP3c9ZdtkRU=
+ resolved "https://registry.npmmirror.com/lodash.castarray/-/lodash.castarray-4.4.0.tgz#c02513515e309daddd4c24c60cfddcf5976d9115"
+ integrity sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==
lodash.debounce@^4.0.8:
version "4.0.8"
- resolved "https://registry.nlark.com/lodash.debounce/download/lodash.debounce-4.0.8.tgz?cache=0&sync_timestamp=1622605323058&other_urls=https%3A%2F%2Fregistry.nlark.com%2Flodash.debounce%2Fdownload%2Flodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af"
- integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168=
+ resolved "https://registry.npmmirror.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af"
+ integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==
lodash.defaults@^4.0.1:
version "4.2.0"
- resolved "https://registry.nlark.com/lodash.defaults/download/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c"
- integrity sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=
+ resolved "https://registry.npmmirror.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c"
+ integrity sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==
lodash.filter@^4.4.0:
version "4.6.0"
- resolved "https://registry.nlark.com/lodash.filter/download/lodash.filter-4.6.0.tgz#668b1d4981603ae1cc5a6fa760143e480b4c4ace"
- integrity sha1-ZosdSYFgOuHMWm+nYBQ+SAtMSs4=
+ resolved "https://registry.npmmirror.com/lodash.filter/-/lodash.filter-4.6.0.tgz#668b1d4981603ae1cc5a6fa760143e480b4c4ace"
+ integrity sha512-pXYUy7PR8BCLwX5mgJ/aNtyOvuJTdZAo9EQFUvMIYugqmJxnrYaANvTbgndOzHSCSR0wnlBBfRXJL5SbWxo3FQ==
lodash.flatten@^4.2.0:
version "4.4.0"
- resolved "https://registry.nlark.com/lodash.flatten/download/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f"
- integrity sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=
+ resolved "https://registry.npmmirror.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f"
+ integrity sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==
lodash.foreach@^4.3.0:
version "4.5.0"
- resolved "https://registry.npmmirror.com/lodash.foreach/download/lodash.foreach-4.5.0.tgz#1a6a35eace401280c7f06dddec35165ab27e3e53"
- integrity sha1-Gmo16s5AEoDH8G3d7DUWWrJ+PlM=
+ resolved "https://registry.npmmirror.com/lodash.foreach/-/lodash.foreach-4.5.0.tgz#1a6a35eace401280c7f06dddec35165ab27e3e53"
+ integrity sha512-aEXTF4d+m05rVOAUG3z4vZZ4xVexLKZGF0lIxuHZ1Hplpk/3B6Z1+/ICICYRLm7c41Z2xiejbkCkJoTlypoXhQ==
lodash.isplainobject@^4.0.6:
version "4.0.6"
- resolved "https://registry.nlark.com/lodash.isplainobject/download/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb"
- integrity sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=
+ resolved "https://registry.npmmirror.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb"
+ integrity sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==
lodash.map@^4.4.0:
version "4.6.0"
- resolved "https://registry.nlark.com/lodash.map/download/lodash.map-4.6.0.tgz#771ec7839e3473d9c4cde28b19394c3562f4f6d3"
- integrity sha1-dx7Hg540c9nEzeKLGTlMNWL09tM=
+ resolved "https://registry.npmmirror.com/lodash.map/-/lodash.map-4.6.0.tgz#771ec7839e3473d9c4cde28b19394c3562f4f6d3"
+ integrity sha512-worNHGKLDetmcEYDvh2stPCrrQRkP20E4l0iIS7F8EvzMqBBi7ltvFN5m1HvTf1P7Jk1txKhvFcmYsCr8O2F1Q==
lodash.memoize@^4.1.2:
version "4.1.2"
- resolved "https://registry.nlark.com/lodash.memoize/download/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe"
- integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=
+ resolved "https://registry.npmmirror.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe"
+ integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==
lodash.merge@^4.4.0, lodash.merge@^4.6.2:
version "4.6.2"
- resolved "https://registry.nlark.com/lodash.merge/download/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a"
- integrity sha1-VYqlO0O2YeGSWgr9+japoQhf5Xo=
+ resolved "https://registry.npmmirror.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a"
+ integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
lodash.pick@^4.2.1:
version "4.4.0"
- resolved "https://registry.nlark.com/lodash.pick/download/lodash.pick-4.4.0.tgz#52f05610fff9ded422611441ed1fc123a03001b3"
- integrity sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM=
+ resolved "https://registry.npmmirror.com/lodash.pick/-/lodash.pick-4.4.0.tgz#52f05610fff9ded422611441ed1fc123a03001b3"
+ integrity sha512-hXt6Ul/5yWjfklSGvLQl8vM//l3FtyHZeuelpzK6mm99pNvN9yTDruNZPEJZD1oWrqo+izBmB7oUfWgcCX7s4Q==
lodash.reduce@^4.4.0:
version "4.6.0"
- resolved "https://registry.nlark.com/lodash.reduce/download/lodash.reduce-4.6.0.tgz#f1ab6b839299ad48f784abbf476596f03b914d3b"
- integrity sha1-8atrg5KZrUj3hKu/R2WW8DuRTTs=
+ resolved "https://registry.npmmirror.com/lodash.reduce/-/lodash.reduce-4.6.0.tgz#f1ab6b839299ad48f784abbf476596f03b914d3b"
+ integrity sha512-6raRe2vxCYBhpBu+B+TtNGUzah+hQjVdu3E17wfusjyrXBka2nBS8OH/gjVZ5PvHOhWmIZTYri09Z6n/QfnNMw==
lodash.reject@^4.4.0:
version "4.6.0"
- resolved "https://registry.nlark.com/lodash.reject/download/lodash.reject-4.6.0.tgz#80d6492dc1470864bbf583533b651f42a9f52415"
- integrity sha1-gNZJLcFHCGS79YNTO2UfQqn1JBU=
+ resolved "https://registry.npmmirror.com/lodash.reject/-/lodash.reject-4.6.0.tgz#80d6492dc1470864bbf583533b651f42a9f52415"
+ integrity sha512-qkTuvgEzYdyhiJBx42YPzPo71R1aEr0z79kAv7Ixg8wPFEjgRgJdUsGMG3Hf3OYSF/kHI79XhNlt+5Ar6OzwxQ==
lodash.some@^4.4.0:
version "4.6.0"
- resolved "https://registry.nlark.com/lodash.some/download/lodash.some-4.6.0.tgz#1bb9f314ef6b8baded13b549169b2a945eb68e4d"
- integrity sha1-G7nzFO9ri63tE7VJFpsqlF62jk0=
+ resolved "https://registry.npmmirror.com/lodash.some/-/lodash.some-4.6.0.tgz#1bb9f314ef6b8baded13b549169b2a945eb68e4d"
+ integrity sha512-j7MJE+TuT51q9ggt4fSgVqro163BEFjAt3u97IqU+JA2DkWl80nFTrowzLpZ/BnpN7rrl0JA/593NAdd8p/scQ==
lodash.uniq@4.5.0, lodash.uniq@^4.5.0:
version "4.5.0"
- resolved "https://registry.nlark.com/lodash.uniq/download/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
- integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=
+ resolved "https://registry.npmmirror.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
+ integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==
lodash@^4.0.1, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21:
version "4.17.21"
- resolved "https://registry.npmmirror.com/lodash/download/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
+ resolved "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3.1, loose-envify@^1.4.0:
version "1.4.0"
- resolved "https://registry.nlark.com/loose-envify/download/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
- integrity sha1-ce5R+nvkyuwaY4OffmgtgTLTDK8=
+ resolved "https://registry.npmmirror.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"
lower-case@^2.0.2:
version "2.0.2"
- resolved "https://registry.nlark.com/lower-case/download/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28"
- integrity sha1-b6I3xj29xKgsoP2ILkci3F5jTig=
+ resolved "https://registry.npmmirror.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28"
+ integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==
dependencies:
tslib "^2.0.3"
lowercase-keys@^1.0.0, lowercase-keys@^1.0.1:
version "1.0.1"
- resolved "https://registry.npmmirror.com/lowercase-keys/download/lowercase-keys-1.0.1.tgz?cache=0&sync_timestamp=1634551715073&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Flowercase-keys%2Fdownload%2Flowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f"
- integrity sha1-b54wtHCE2XGnyCD/FabFFnt0wm8=
+ resolved "https://registry.npmmirror.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f"
+ integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==
lowercase-keys@^2.0.0:
version "2.0.0"
- resolved "https://registry.npmmirror.com/lowercase-keys/download/lowercase-keys-2.0.0.tgz?cache=0&sync_timestamp=1634551715073&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Flowercase-keys%2Fdownload%2Flowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479"
- integrity sha1-JgPni3tLAAbLyi+8yKMgJVislHk=
+ resolved "https://registry.npmmirror.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479"
+ integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==
lru-cache@^6.0.0:
version "6.0.0"
- resolved "https://registry.nlark.com/lru-cache/download/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94"
- integrity sha1-bW/mVw69lqr5D8rR2vo7JWbbOpQ=
+ resolved "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94"
+ integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==
dependencies:
yallist "^4.0.0"
magic-string@^0.25.3:
version "0.25.7"
- resolved "https://registry.nlark.com/magic-string/download/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051"
- integrity sha1-P0l9b9NMZpxnmNy4IfLvMfVEUFE=
+ resolved "https://registry.npmmirror.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051"
+ integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==
dependencies:
sourcemap-codec "^1.4.4"
make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0:
version "3.1.0"
- resolved "https://registry.nlark.com/make-dir/download/make-dir-3.1.0.tgz?cache=0&sync_timestamp=1622604552755&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fmake-dir%2Fdownload%2Fmake-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f"
- integrity sha1-QV6WcEazp/HRhSd9hKpYIDcmoT8=
+ resolved "https://registry.npmmirror.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f"
+ integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==
dependencies:
semver "^6.0.0"
markdown-escapes@^1.0.0:
version "1.0.4"
- resolved "https://registry.npmmirror.com/markdown-escapes/download/markdown-escapes-1.0.4.tgz#c95415ef451499d7602b91095f3c8e8975f78535"
- integrity sha1-yVQV70UUmddgK5EJXzyOiXX3hTU=
+ resolved "https://registry.npmmirror.com/markdown-escapes/-/markdown-escapes-1.0.4.tgz#c95415ef451499d7602b91095f3c8e8975f78535"
+ integrity sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg==
material-colors@^1.2.1:
version "1.2.6"
- resolved "https://registry.npmmirror.com/material-colors/download/material-colors-1.2.6.tgz#6d1958871126992ceecc72f4bcc4d8f010865f46"
- integrity sha1-bRlYhxEmmSzuzHL0vMTY8BCGX0Y=
+ resolved "https://registry.npmmirror.com/material-colors/-/material-colors-1.2.6.tgz#6d1958871126992ceecc72f4bcc4d8f010865f46"
+ integrity sha512-6qE4B9deFBIa9YSpOc9O0Sgc43zTeVYbgDT5veRKSlB2+ZuHNoVVxA1L/ckMUayV9Ay9y7Z/SZCLcGteW9i7bg==
mdast-squeeze-paragraphs@^4.0.0:
version "4.0.0"
- resolved "https://registry.npmmirror.com/mdast-squeeze-paragraphs/download/mdast-squeeze-paragraphs-4.0.0.tgz#7c4c114679c3bee27ef10b58e2e015be79f1ef97"
- integrity sha1-fEwRRnnDvuJ+8QtY4uAVvnnx75c=
+ resolved "https://registry.npmmirror.com/mdast-squeeze-paragraphs/-/mdast-squeeze-paragraphs-4.0.0.tgz#7c4c114679c3bee27ef10b58e2e015be79f1ef97"
+ integrity sha512-zxdPn69hkQ1rm4J+2Cs2j6wDEv7O17TfXTJ33tl/+JPIoEmtV9t2ZzBM5LPHE8QlHsmVD8t3vPKCyY3oH+H8MQ==
dependencies:
unist-util-remove "^2.0.0"
mdast-util-definitions@^4.0.0:
version "4.0.0"
- resolved "https://registry.nlark.com/mdast-util-definitions/download/mdast-util-definitions-4.0.0.tgz?cache=0&sync_timestamp=1627293635701&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fmdast-util-definitions%2Fdownload%2Fmdast-util-definitions-4.0.0.tgz#c5c1a84db799173b4dcf7643cda999e440c24db2"
- integrity sha1-xcGoTbeZFztNz3ZDzamZ5EDCTbI=
+ resolved "https://registry.npmmirror.com/mdast-util-definitions/-/mdast-util-definitions-4.0.0.tgz#c5c1a84db799173b4dcf7643cda999e440c24db2"
+ integrity sha512-k8AJ6aNnUkB7IE+5azR9h81O5EQ/cTDXtWdMq9Kk5KcEW/8ritU5CeLg/9HhOC++nALHBlaogJ5jz0Ybk3kPMQ==
dependencies:
unist-util-visit "^2.0.0"
mdast-util-to-hast@10.0.1:
version "10.0.1"
- resolved "https://registry.npmmirror.com/mdast-util-to-hast/download/mdast-util-to-hast-10.0.1.tgz#0cfc82089494c52d46eb0e3edb7a4eb2aea021eb"
- integrity sha1-DPyCCJSUxS1G6w4+23pOsq6gIes=
+ resolved "https://registry.npmmirror.com/mdast-util-to-hast/-/mdast-util-to-hast-10.0.1.tgz#0cfc82089494c52d46eb0e3edb7a4eb2aea021eb"
+ integrity sha512-BW3LM9SEMnjf4HXXVApZMt8gLQWVNXc3jryK0nJu/rOXPOnlkUjmdkDlmxMirpbU9ILncGFIwLH/ubnWBbcdgA==
dependencies:
"@types/mdast" "^3.0.0"
"@types/unist" "^2.0.0"
@@ -5173,115 +5205,115 @@ mdast-util-to-hast@10.0.1:
mdast-util-to-string@^2.0.0:
version "2.0.0"
- resolved "https://registry.nlark.com/mdast-util-to-string/download/mdast-util-to-string-2.0.0.tgz#b8cfe6a713e1091cb5b728fc48885a4767f8b97b"
- integrity sha1-uM/mpxPhCRy1tyj8SIhaR2f4uXs=
+ resolved "https://registry.npmmirror.com/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz#b8cfe6a713e1091cb5b728fc48885a4767f8b97b"
+ integrity sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==
mdn-data@2.0.14:
version "2.0.14"
- resolved "https://registry.npmmirror.com/mdn-data/download/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50"
- integrity sha1-cRP8QoGRfWPOKbQ0RvcB5owlulA=
+ resolved "https://registry.npmmirror.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50"
+ integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==
mdn-data@2.0.4:
version "2.0.4"
- resolved "https://registry.npmmirror.com/mdn-data/download/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b"
- integrity sha1-aZs8OKxvHXKAkaZGULZdOIUC/Vs=
+ resolved "https://registry.npmmirror.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b"
+ integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==
mdurl@^1.0.0:
version "1.0.1"
- resolved "https://registry.nlark.com/mdurl/download/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e"
- integrity sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=
+ resolved "https://registry.npmmirror.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e"
+ integrity sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==
media-typer@0.3.0:
version "0.3.0"
- resolved "https://registry.nlark.com/media-typer/download/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
- integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=
+ resolved "https://registry.npmmirror.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
+ integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==
-memfs@^3.1.2, memfs@^3.2.2:
+memfs@^3.1.2, memfs@^3.4.1:
version "3.4.1"
- resolved "https://registry.npmmirror.com/memfs/download/memfs-3.4.1.tgz#b78092f466a0dce054d63d39275b24c71d3f1305"
+ resolved "https://registry.npmmirror.com/memfs/-/memfs-3.4.1.tgz#b78092f466a0dce054d63d39275b24c71d3f1305"
integrity sha512-1c9VPVvW5P7I85c35zAdEr1TD5+F11IToIHIlrVIcflfnzPkJa0ZoYEoEdYDP8KgPFoSZ/opDrUsAoZWym3mtw==
dependencies:
fs-monkey "1.0.3"
merge-descriptors@1.0.1:
version "1.0.1"
- resolved "https://registry.nlark.com/merge-descriptors/download/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"
- integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=
+ resolved "https://registry.npmmirror.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"
+ integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==
merge-stream@^2.0.0:
version "2.0.0"
- resolved "https://registry.nlark.com/merge-stream/download/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60"
- integrity sha1-UoI2KaFN0AyXcPtq1H3GMQ8sH2A=
+ resolved "https://registry.npmmirror.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60"
+ integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==
-merge2@^1.3.0:
+merge2@^1.3.0, merge2@^1.4.1:
version "1.4.1"
- resolved "https://registry.nlark.com/merge2/download/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
- integrity sha1-Q2iJL4hekHRVpv19xVwMnUBJkK4=
+ resolved "https://registry.npmmirror.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
+ integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
methods@~1.1.2:
version "1.1.2"
- resolved "https://registry.nlark.com/methods/download/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
- integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=
+ resolved "https://registry.npmmirror.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
+ integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==
micromatch@^4.0.2, micromatch@^4.0.4:
version "4.0.4"
- resolved "https://registry.nlark.com/micromatch/download/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9"
- integrity sha1-iW1Rnf6dsl/OlM63pQCRm/iB6/k=
+ resolved "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9"
+ integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==
dependencies:
braces "^3.0.1"
picomatch "^2.2.3"
mime-db@1.51.0, "mime-db@>= 1.43.0 < 2":
version "1.51.0"
- resolved "https://registry.npmmirror.com/mime-db/download/mime-db-1.51.0.tgz?cache=0&sync_timestamp=1636425951030&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fmime-db%2Fdownload%2Fmime-db-1.51.0.tgz#d9ff62451859b18342d960850dc3cfb77e63fb0c"
+ resolved "https://registry.npmmirror.com/mime-db/-/mime-db-1.51.0.tgz#d9ff62451859b18342d960850dc3cfb77e63fb0c"
integrity sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==
mime-db@~1.33.0:
version "1.33.0"
- resolved "https://registry.npmmirror.com/mime-db/download/mime-db-1.33.0.tgz?cache=0&sync_timestamp=1636425951030&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fmime-db%2Fdownload%2Fmime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db"
- integrity sha1-o0kgUKXLm2NFBUHjnZeI0icng9s=
+ resolved "https://registry.npmmirror.com/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db"
+ integrity sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==
mime-types@2.1.18:
version "2.1.18"
- resolved "https://registry.npmmirror.com/mime-types/download/mime-types-2.1.18.tgz?cache=0&sync_timestamp=1636432311385&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fmime-types%2Fdownload%2Fmime-types-2.1.18.tgz#6f323f60a83d11146f831ff11fd66e2fe5503bb8"
- integrity sha1-bzI/YKg9ERRvgx/xH9ZuL+VQO7g=
+ resolved "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.18.tgz#6f323f60a83d11146f831ff11fd66e2fe5503bb8"
+ integrity sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==
dependencies:
mime-db "~1.33.0"
-mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.24:
+mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.24, mime-types@~2.1.34:
version "2.1.34"
- resolved "https://registry.npmmirror.com/mime-types/download/mime-types-2.1.34.tgz?cache=0&sync_timestamp=1636432311385&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fmime-types%2Fdownload%2Fmime-types-2.1.34.tgz#5a712f9ec1503511a945803640fafe09d3793c24"
+ resolved "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.34.tgz#5a712f9ec1503511a945803640fafe09d3793c24"
integrity sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==
dependencies:
mime-db "1.51.0"
mime@1.6.0:
version "1.6.0"
- resolved "https://registry.npmmirror.com/mime/download/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
- integrity sha1-Ms2eXGRVO9WNGaVor0Uqz/BJgbE=
+ resolved "https://registry.npmmirror.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
+ integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
mimic-fn@^2.1.0:
version "2.1.0"
- resolved "https://registry.npm.taobao.org/mimic-fn/download/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
- integrity sha1-ftLCzMyvhNP/y3pptXcR/CCDQBs=
+ resolved "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
+ integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
mimic-response@^1.0.0, mimic-response@^1.0.1:
version "1.0.1"
- resolved "https://registry.nlark.com/mimic-response/download/mimic-response-1.0.1.tgz?cache=0&sync_timestamp=1628692495204&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fmimic-response%2Fdownload%2Fmimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b"
- integrity sha1-SSNTiHju9CBjy4o+OweYeBSHqxs=
+ resolved "https://registry.npmmirror.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b"
+ integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==
mini-create-react-context@^0.4.0:
version "0.4.1"
- resolved "https://registry.nlark.com/mini-create-react-context/download/mini-create-react-context-0.4.1.tgz#072171561bfdc922da08a60c2197a497cc2d1d5e"
- integrity sha1-ByFxVhv9ySLaCKYMIZekl8wtHV4=
+ resolved "https://registry.npmmirror.com/mini-create-react-context/-/mini-create-react-context-0.4.1.tgz#072171561bfdc922da08a60c2197a497cc2d1d5e"
+ integrity sha512-YWCYEmd5CQeHGSAKrYvXgmzzkrvssZcuuQDDeqkT+PziKGMgE+0MCCtcKbROzocGBG1meBLl2FotlRwf4gAzbQ==
dependencies:
"@babel/runtime" "^7.12.1"
tiny-warning "^1.0.3"
mini-css-extract-plugin@^1.6.0:
version "1.6.2"
- resolved "https://registry.npmmirror.com/mini-css-extract-plugin/download/mini-css-extract-plugin-1.6.2.tgz?cache=0&sync_timestamp=1637170561761&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fmini-css-extract-plugin%2Fdownload%2Fmini-css-extract-plugin-1.6.2.tgz#83172b4fd812f8fc4a09d6f6d16f924f53990ca8"
- integrity sha1-gxcrT9gS+PxKCdb20W+ST1OZDKg=
+ resolved "https://registry.npmmirror.com/mini-css-extract-plugin/-/mini-css-extract-plugin-1.6.2.tgz#83172b4fd812f8fc4a09d6f6d16f924f53990ca8"
+ integrity sha512-WhDvO3SjGm40oV5y26GjMJYjd2UMqrLAGKy5YS2/3QKJy2F7jgynuHTir/tgUUOiNQu5saXHdc8reo7YuhhT4Q==
dependencies:
loader-utils "^2.0.0"
schema-utils "^3.0.0"
@@ -5289,179 +5321,186 @@ mini-css-extract-plugin@^1.6.0:
minimalistic-assert@^1.0.0:
version "1.0.1"
- resolved "https://registry.nlark.com/minimalistic-assert/download/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7"
- integrity sha1-LhlN4ERibUoQ5/f7wAznPoPk1cc=
+ resolved "https://registry.npmmirror.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7"
+ integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==
-minimatch@3.0.4, minimatch@^3.0.4:
+minimatch@3.0.4:
version "3.0.4"
- resolved "https://registry.nlark.com/minimatch/download/minimatch-3.0.4.tgz?cache=0&sync_timestamp=1618846754554&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fminimatch%2Fdownload%2Fminimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
- integrity sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=
+ resolved "https://registry.npmmirror.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
+ integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
+ dependencies:
+ brace-expansion "^1.1.7"
+
+minimatch@^3.0.4:
+ version "3.0.5"
+ resolved "https://registry.npmmirror.com/minimatch/-/minimatch-3.0.5.tgz#4da8f1290ee0f0f8e83d60ca69f8f134068604a3"
+ integrity sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==
dependencies:
brace-expansion "^1.1.7"
minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5:
version "1.2.5"
- resolved "https://registry.npmmirror.com/minimist/download/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
- integrity sha1-Z9ZgFLZqaoqqDAg8X9WN9OTpdgI=
+ resolved "https://registry.npmmirror.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
+ integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
mkdirp@^0.5.5, mkdirp@~0.5.1:
version "0.5.5"
- resolved "https://registry.npmmirror.com/mkdirp/download/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def"
- integrity sha1-2Rzv1i0UNsoPQWIOJRKI1CAJne8=
+ resolved "https://registry.npmmirror.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def"
+ integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==
dependencies:
minimist "^1.2.5"
mrmime@^1.0.0:
version "1.0.0"
- resolved "https://registry.npmmirror.com/mrmime/download/mrmime-1.0.0.tgz#14d387f0585a5233d291baba339b063752a2398b"
- integrity sha1-FNOH8FhaUjPSkbq6M5sGN1KiOYs=
+ resolved "https://registry.npmmirror.com/mrmime/-/mrmime-1.0.0.tgz#14d387f0585a5233d291baba339b063752a2398b"
+ integrity sha512-a70zx7zFfVO7XpnQ2IX1Myh9yY4UYvfld/dikWRnsXxbyvMcfz+u6UfgNAtH+k2QqtJuzVpv6eLTx1G2+WKZbQ==
ms@2.0.0:
version "2.0.0"
- resolved "https://registry.npmmirror.com/ms/download/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
- integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=
+ resolved "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
+ integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==
ms@2.1.2:
version "2.1.2"
- resolved "https://registry.npmmirror.com/ms/download/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
- integrity sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=
+ resolved "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
+ integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
ms@2.1.3, ms@^2.1.1:
version "2.1.3"
- resolved "https://registry.npmmirror.com/ms/download/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
- integrity sha1-V0yBOM4dK1hh8LRFedut1gxmFbI=
+ resolved "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
+ integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
multicast-dns-service-types@^1.1.0:
version "1.1.0"
- resolved "https://registry.nlark.com/multicast-dns-service-types/download/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901"
- integrity sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=
+ resolved "https://registry.npmmirror.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901"
+ integrity sha512-cnAsSVxIDsYt0v7HmC0hWZFwwXSh+E6PgCrREDuN/EsjgLwA5XRmlMHhSiDPrt6HxY1gTivEa/Zh7GtODoLevQ==
multicast-dns@^6.0.1:
version "6.2.3"
- resolved "https://registry.npmmirror.com/multicast-dns/download/multicast-dns-6.2.3.tgz?cache=0&sync_timestamp=1633354851092&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fmulticast-dns%2Fdownload%2Fmulticast-dns-6.2.3.tgz#a0ec7bd9055c4282f790c3c82f4e28db3b31b229"
- integrity sha1-oOx72QVcQoL3kMPIL04o2zsxsik=
+ resolved "https://registry.npmmirror.com/multicast-dns/-/multicast-dns-6.2.3.tgz#a0ec7bd9055c4282f790c3c82f4e28db3b31b229"
+ integrity sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==
dependencies:
dns-packet "^1.3.1"
thunky "^1.0.2"
-nanoid@^3.1.30:
- version "3.1.30"
- resolved "https://registry.npmmirror.com/nanoid/download/nanoid-3.1.30.tgz#63f93cc548d2a113dc5dfbc63bfa09e2b9b64362"
- integrity sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ==
+nanoid@^3.2.0:
+ version "3.2.0"
+ resolved "https://registry.npmmirror.com/nanoid/-/nanoid-3.2.0.tgz#62667522da6673971cca916a6d3eff3f415ff80c"
+ integrity sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA==
-negotiator@0.6.2:
- version "0.6.2"
- resolved "https://registry.nlark.com/negotiator/download/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb"
- integrity sha1-/qz3zPUlp3rpY0Q2pkiD/+yjRvs=
+negotiator@0.6.3:
+ version "0.6.3"
+ resolved "https://registry.npmmirror.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd"
+ integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==
neo-async@^2.6.2:
version "2.6.2"
- resolved "https://registry.nlark.com/neo-async/download/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f"
- integrity sha1-tKr7k+OustgXTKU88WOrfXMIMF8=
+ resolved "https://registry.npmmirror.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f"
+ integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==
no-case@^3.0.4:
version "3.0.4"
- resolved "https://registry.nlark.com/no-case/download/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d"
- integrity sha1-02H9XJgA9VhVGoNp/A3NRmK2Ek0=
+ resolved "https://registry.npmmirror.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d"
+ integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==
dependencies:
lower-case "^2.0.2"
tslib "^2.0.3"
node-emoji@^1.10.0:
version "1.11.0"
- resolved "https://registry.nlark.com/node-emoji/download/node-emoji-1.11.0.tgz#69a0150e6946e2f115e9d7ea4df7971e2628301c"
- integrity sha1-aaAVDmlG4vEV6dfqTfeXHiYoMBw=
+ resolved "https://registry.npmmirror.com/node-emoji/-/node-emoji-1.11.0.tgz#69a0150e6946e2f115e9d7ea4df7971e2628301c"
+ integrity sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==
dependencies:
lodash "^4.17.21"
-node-forge@^0.10.0:
- version "0.10.0"
- resolved "https://registry.npmmirror.com/node-forge/download/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3"
- integrity sha1-Mt6ir7Ppkm8C7lzoeUkCaRpna/M=
+node-forge@^1.2.0:
+ version "1.2.1"
+ resolved "https://registry.npmmirror.com/node-forge/-/node-forge-1.2.1.tgz#82794919071ef2eb5c509293325cec8afd0fd53c"
+ integrity sha512-Fcvtbb+zBcZXbTTVwqGA5W+MKBj56UjVRevvchv5XrcyXbmNdesfZL37nlcWOfpgHhgmxApw3tQbTr4CqNmX4w==
node-releases@^2.0.1:
version "2.0.1"
- resolved "https://registry.npmmirror.com/node-releases/download/node-releases-2.0.1.tgz#3d1d395f204f1f2f29a54358b9fb678765ad2fc5"
- integrity sha1-PR05XyBPHy8ppUNYuftnh2WtL8U=
+ resolved "https://registry.npmmirror.com/node-releases/-/node-releases-2.0.1.tgz#3d1d395f204f1f2f29a54358b9fb678765ad2fc5"
+ integrity sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==
normalize-path@^3.0.0, normalize-path@~3.0.0:
version "3.0.0"
- resolved "https://registry.nlark.com/normalize-path/download/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
- integrity sha1-Dc1p/yOhybEf0JeDFmRKA4ghamU=
+ resolved "https://registry.npmmirror.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
+ integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
normalize-range@^0.1.2:
version "0.1.2"
- resolved "https://registry.nlark.com/normalize-range/download/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942"
- integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=
+ resolved "https://registry.npmmirror.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942"
+ integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==
normalize-url@^4.1.0:
version "4.5.1"
- resolved "https://registry.nlark.com/normalize-url/download/normalize-url-4.5.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fnormalize-url%2Fdownload%2Fnormalize-url-4.5.1.tgz#0dd90cf1288ee1d1313b87081c9a5932ee48518a"
- integrity sha1-DdkM8SiO4dExO4cIHJpZMu5IUYo=
+ resolved "https://registry.npmmirror.com/normalize-url/-/normalize-url-4.5.1.tgz#0dd90cf1288ee1d1313b87081c9a5932ee48518a"
+ integrity sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==
normalize-url@^6.0.1:
version "6.1.0"
- resolved "https://registry.nlark.com/normalize-url/download/normalize-url-6.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fnormalize-url%2Fdownload%2Fnormalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a"
- integrity sha1-QNCIW1Nd7/4/MUe+yHfQX+TFZoo=
+ resolved "https://registry.npmmirror.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a"
+ integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==
npm-run-path@^4.0.1:
version "4.0.1"
- resolved "https://registry.npmmirror.com/npm-run-path/download/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea"
- integrity sha1-t+zR5e1T2o43pV4cImnguX7XSOo=
+ resolved "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea"
+ integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==
dependencies:
path-key "^3.0.0"
nprogress@^0.2.0:
version "0.2.0"
- resolved "https://registry.npmmirror.com/nprogress/download/nprogress-0.2.0.tgz#cb8f34c53213d895723fcbab907e9422adbcafb1"
+ resolved "https://registry.npmmirror.com/nprogress/-/nprogress-0.2.0.tgz#cb8f34c53213d895723fcbab907e9422adbcafb1"
integrity sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==
nth-check@^1.0.2, nth-check@~1.0.1:
version "1.0.2"
- resolved "https://registry.nlark.com/nth-check/download/nth-check-1.0.2.tgz?cache=0&sync_timestamp=1631793715685&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fnth-check%2Fdownload%2Fnth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c"
- integrity sha1-sr0pXDfj3VijvwcAN2Zjuk2c8Fw=
+ resolved "https://registry.npmmirror.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c"
+ integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==
dependencies:
boolbase "~1.0.0"
nth-check@^2.0.1:
version "2.0.1"
- resolved "https://registry.nlark.com/nth-check/download/nth-check-2.0.1.tgz?cache=0&sync_timestamp=1631793715685&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fnth-check%2Fdownload%2Fnth-check-2.0.1.tgz#2efe162f5c3da06a28959fbd3db75dbeea9f0fc2"
- integrity sha1-Lv4WL1w9oGoolZ+9PbddvuqfD8I=
+ resolved "https://registry.npmmirror.com/nth-check/-/nth-check-2.0.1.tgz#2efe162f5c3da06a28959fbd3db75dbeea9f0fc2"
+ integrity sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==
dependencies:
boolbase "^1.0.0"
object-assign@^4.1.1:
version "4.1.1"
- resolved "https://registry.nlark.com/object-assign/download/object-assign-4.1.1.tgz?cache=0&sync_timestamp=1618847198142&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fobject-assign%2Fdownload%2Fobject-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
- integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
+ resolved "https://registry.npmmirror.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
+ integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==
object-hash@^2.2.0:
version "2.2.0"
- resolved "https://registry.nlark.com/object-hash/download/object-hash-2.2.0.tgz#5ad518581eefc443bd763472b8ff2e9c2c0d54a5"
- integrity sha1-WtUYWB7vxEO9djRyuP8unCwNVKU=
+ resolved "https://registry.npmmirror.com/object-hash/-/object-hash-2.2.0.tgz#5ad518581eefc443bd763472b8ff2e9c2c0d54a5"
+ integrity sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==
object-inspect@^1.11.0, object-inspect@^1.9.0:
version "1.12.0"
- resolved "https://registry.npmmirror.com/object-inspect/download/object-inspect-1.12.0.tgz#6e2c120e868fd1fd18cb4f18c31741d0d6e776f0"
+ resolved "https://registry.npmmirror.com/object-inspect/-/object-inspect-1.12.0.tgz#6e2c120e868fd1fd18cb4f18c31741d0d6e776f0"
integrity sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==
object-is@^1.0.1:
version "1.1.5"
- resolved "https://registry.nlark.com/object-is/download/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac"
- integrity sha1-ud7qpfx/GEag+uzc7sE45XePU6w=
+ resolved "https://registry.npmmirror.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac"
+ integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==
dependencies:
call-bind "^1.0.2"
define-properties "^1.1.3"
object-keys@^1.0.12, object-keys@^1.1.1:
version "1.1.1"
- resolved "https://registry.nlark.com/object-keys/download/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
- integrity sha1-HEfyct8nfzsdrwYWd9nILiMixg4=
+ resolved "https://registry.npmmirror.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
+ integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
object.assign@^4.1.0, object.assign@^4.1.2:
version "4.1.2"
- resolved "https://registry.nlark.com/object.assign/download/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940"
- integrity sha1-DtVKNC7Os3s4/3brgxoOeIy2OUA=
+ resolved "https://registry.npmmirror.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940"
+ integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==
dependencies:
call-bind "^1.0.0"
define-properties "^1.1.3"
@@ -5470,8 +5509,8 @@ object.assign@^4.1.0, object.assign@^4.1.2:
object.getownpropertydescriptors@^2.1.0:
version "2.1.3"
- resolved "https://registry.npmmirror.com/object.getownpropertydescriptors/download/object.getownpropertydescriptors-2.1.3.tgz?cache=0&sync_timestamp=1633321770416&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fobject.getownpropertydescriptors%2Fdownload%2Fobject.getownpropertydescriptors-2.1.3.tgz#b223cf38e17fefb97a63c10c91df72ccb386df9e"
- integrity sha1-siPPOOF/77l6Y8EMkd9yzLOG354=
+ resolved "https://registry.npmmirror.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.3.tgz#b223cf38e17fefb97a63c10c91df72ccb386df9e"
+ integrity sha512-VdDoCwvJI4QdC6ndjpqFmoL3/+HxffFBbcJzKi5hwLLqqx3mdbedRpfZDdK0SrOSauj8X4GzBvnDZl4vTN7dOw==
dependencies:
call-bind "^1.0.2"
define-properties "^1.1.3"
@@ -5479,8 +5518,8 @@ object.getownpropertydescriptors@^2.1.0:
object.values@^1.1.0:
version "1.1.5"
- resolved "https://registry.npmmirror.com/object.values/download/object.values-1.1.5.tgz#959f63e3ce9ef108720333082131e4a459b716ac"
- integrity sha1-lZ9j486e8QhyAzMIITHkpFm3Fqw=
+ resolved "https://registry.npmmirror.com/object.values/-/object.values-1.1.5.tgz#959f63e3ce9ef108720333082131e4a459b716ac"
+ integrity sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==
dependencies:
call-bind "^1.0.2"
define-properties "^1.1.3"
@@ -5488,47 +5527,47 @@ object.values@^1.1.0:
obuf@^1.0.0, obuf@^1.1.2:
version "1.1.2"
- resolved "https://registry.nlark.com/obuf/download/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e"
- integrity sha1-Cb6jND1BhZ69RGKS0RydTbYZCE4=
+ resolved "https://registry.npmmirror.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e"
+ integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==
on-finished@~2.3.0:
version "2.3.0"
- resolved "https://registry.nlark.com/on-finished/download/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947"
- integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=
+ resolved "https://registry.npmmirror.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947"
+ integrity sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==
dependencies:
ee-first "1.1.1"
on-headers@~1.0.2:
version "1.0.2"
- resolved "https://registry.nlark.com/on-headers/download/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f"
- integrity sha1-dysK5qqlJcOZ5Imt+tkMQD6zwo8=
+ resolved "https://registry.npmmirror.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f"
+ integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==
once@^1.3.0, once@^1.3.1, once@^1.4.0:
version "1.4.0"
- resolved "https://registry.nlark.com/once/download/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
- integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
+ resolved "https://registry.npmmirror.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
+ integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==
dependencies:
wrappy "1"
onetime@^5.1.2:
version "5.1.2"
- resolved "https://registry.npm.taobao.org/onetime/download/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e"
- integrity sha1-0Oluu1awdHbfHdnEgG5SN5hcpF4=
+ resolved "https://registry.npmmirror.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e"
+ integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==
dependencies:
mimic-fn "^2.1.0"
open@^7.0.2:
version "7.4.2"
- resolved "https://registry.npmmirror.com/open/download/open-7.4.2.tgz#b8147e26dcf3e426316c730089fd71edd29c2321"
- integrity sha1-uBR+Jtzz5CYxbHMAif1x7dKcIyE=
+ resolved "https://registry.npmmirror.com/open/-/open-7.4.2.tgz#b8147e26dcf3e426316c730089fd71edd29c2321"
+ integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==
dependencies:
is-docker "^2.0.0"
is-wsl "^2.1.1"
open@^8.0.9:
version "8.4.0"
- resolved "https://registry.npmmirror.com/open/download/open-8.4.0.tgz#345321ae18f8138f82565a910fdc6b39e8c244f8"
- integrity sha1-NFMhrhj4E4+CVlqRD9xrOejCRPg=
+ resolved "https://registry.npmmirror.com/open/-/open-8.4.0.tgz#345321ae18f8138f82565a910fdc6b39e8c244f8"
+ integrity sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==
dependencies:
define-lazy-prop "^2.0.0"
is-docker "^2.1.1"
@@ -5536,59 +5575,59 @@ open@^8.0.9:
opener@^1.5.2:
version "1.5.2"
- resolved "https://registry.nlark.com/opener/download/opener-1.5.2.tgz?cache=0&sync_timestamp=1622605348426&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fopener%2Fdownload%2Fopener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598"
- integrity sha1-XTfh81B3udysQwE3InGv3rKhNZg=
+ resolved "https://registry.npmmirror.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598"
+ integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==
p-cancelable@^1.0.0:
version "1.1.0"
- resolved "https://registry.nlark.com/p-cancelable/download/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc"
- integrity sha1-0HjRWjr0CSIMiG8dmgyi5EGrJsw=
+ resolved "https://registry.npmmirror.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc"
+ integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==
p-limit@^2.0.0, p-limit@^2.2.0:
version "2.3.0"
- resolved "https://registry.nlark.com/p-limit/download/p-limit-2.3.0.tgz?cache=0&sync_timestamp=1628812766275&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fp-limit%2Fdownload%2Fp-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1"
- integrity sha1-PdM8ZHohT9//2DWTPrCG2g3CHbE=
+ resolved "https://registry.npmmirror.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1"
+ integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==
dependencies:
p-try "^2.0.0"
p-locate@^3.0.0:
version "3.0.0"
- resolved "https://registry.nlark.com/p-locate/download/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4"
- integrity sha1-Mi1poFwCZLJZl9n0DNiokasAZKQ=
+ resolved "https://registry.npmmirror.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4"
+ integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==
dependencies:
p-limit "^2.0.0"
p-locate@^4.1.0:
version "4.1.0"
- resolved "https://registry.nlark.com/p-locate/download/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07"
- integrity sha1-o0KLtwiLOmApL2aRkni3wpetTwc=
+ resolved "https://registry.npmmirror.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07"
+ integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==
dependencies:
p-limit "^2.2.0"
p-map@^4.0.0:
version "4.0.0"
- resolved "https://registry.npmmirror.com/p-map/download/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b"
- integrity sha1-uy+Vpe2i7BaOySdOBqdHw+KQTSs=
+ resolved "https://registry.npmmirror.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b"
+ integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==
dependencies:
aggregate-error "^3.0.0"
p-retry@^4.5.0:
version "4.6.1"
- resolved "https://registry.npmmirror.com/p-retry/download/p-retry-4.6.1.tgz#8fcddd5cdf7a67a0911a9cf2ef0e5df7f602316c"
- integrity sha1-j83dXN96Z6CRGpzy7w5d9/YCMWw=
+ resolved "https://registry.npmmirror.com/p-retry/-/p-retry-4.6.1.tgz#8fcddd5cdf7a67a0911a9cf2ef0e5df7f602316c"
+ integrity sha512-e2xXGNhZOZ0lfgR9kL34iGlU8N/KO0xZnQxVEwdeOvpqNDQfdnxIYizvWtK8RglUa3bGqI8g0R/BdfzLMxRkiA==
dependencies:
"@types/retry" "^0.12.0"
retry "^0.13.1"
p-try@^2.0.0:
version "2.2.0"
- resolved "https://registry.npmmirror.com/p-try/download/p-try-2.2.0.tgz?cache=0&sync_timestamp=1633364462890&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fp-try%2Fdownload%2Fp-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
- integrity sha1-yyhoVA4xPWHeWPr741zpAE1VQOY=
+ resolved "https://registry.npmmirror.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
+ integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
package-json@^6.3.0:
version "6.5.0"
- resolved "https://registry.nlark.com/package-json/download/package-json-6.5.0.tgz#6feedaca35e75725876d0b0e64974697fed145b0"
- integrity sha1-b+7ayjXnVyWHbQsOZJdGl/7RRbA=
+ resolved "https://registry.npmmirror.com/package-json/-/package-json-6.5.0.tgz#6feedaca35e75725876d0b0e64974697fed145b0"
+ integrity sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==
dependencies:
got "^9.6.0"
registry-auth-token "^4.0.0"
@@ -5597,23 +5636,23 @@ package-json@^6.3.0:
param-case@^3.0.4:
version "3.0.4"
- resolved "https://registry.nlark.com/param-case/download/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5"
- integrity sha1-fRf+SqEr3jTUp32RrPtiGcqtAcU=
+ resolved "https://registry.npmmirror.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5"
+ integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==
dependencies:
dot-case "^3.0.4"
tslib "^2.0.3"
parent-module@^1.0.0:
version "1.0.1"
- resolved "https://registry.npmmirror.com/parent-module/download/parent-module-1.0.1.tgz?cache=0&sync_timestamp=1633337513286&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fparent-module%2Fdownload%2Fparent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2"
- integrity sha1-aR0nCeeMefrjoVZiJFLQB2LKqqI=
+ resolved "https://registry.npmmirror.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2"
+ integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==
dependencies:
callsites "^3.0.0"
parse-entities@^2.0.0:
version "2.0.0"
- resolved "https://registry.npmmirror.com/parse-entities/download/parse-entities-2.0.0.tgz#53c6eb5b9314a1f4ec99fa0fdf7ce01ecda0cbe8"
- integrity sha1-U8brW5MUofTsmfoP33zgHs2gy+g=
+ resolved "https://registry.npmmirror.com/parse-entities/-/parse-entities-2.0.0.tgz#53c6eb5b9314a1f4ec99fa0fdf7ce01ecda0cbe8"
+ integrity sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==
dependencies:
character-entities "^1.0.0"
character-entities-legacy "^1.0.0"
@@ -5624,8 +5663,8 @@ parse-entities@^2.0.0:
parse-json@^5.0.0:
version "5.2.0"
- resolved "https://registry.npmmirror.com/parse-json/download/parse-json-5.2.0.tgz?cache=0&sync_timestamp=1637475717072&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fparse-json%2Fdownload%2Fparse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd"
- integrity sha1-x2/Gbe5UIxyWKyK8yKcs8vmXU80=
+ resolved "https://registry.npmmirror.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd"
+ integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==
dependencies:
"@babel/code-frame" "^7.0.0"
error-ex "^1.3.1"
@@ -5634,199 +5673,198 @@ parse-json@^5.0.0:
parse-numeric-range@^1.2.0:
version "1.3.0"
- resolved "https://registry.nlark.com/parse-numeric-range/download/parse-numeric-range-1.3.0.tgz#7c63b61190d61e4d53a1197f0c83c47bb670ffa3"
- integrity sha1-fGO2EZDWHk1ToRl/DIPEe7Zw/6M=
+ resolved "https://registry.npmmirror.com/parse-numeric-range/-/parse-numeric-range-1.3.0.tgz#7c63b61190d61e4d53a1197f0c83c47bb670ffa3"
+ integrity sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ==
parse5@^5.0.0:
version "5.1.1"
- resolved "https://registry.nlark.com/parse5/download/parse5-5.1.1.tgz#f68e4e5ba1852ac2cadc00f4555fff6c2abb6178"
- integrity sha1-9o5OW6GFKsLK3AD0VV//bCq7YXg=
+ resolved "https://registry.npmmirror.com/parse5/-/parse5-5.1.1.tgz#f68e4e5ba1852ac2cadc00f4555fff6c2abb6178"
+ integrity sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==
parse5@^6.0.0:
version "6.0.1"
- resolved "https://registry.nlark.com/parse5/download/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b"
- integrity sha1-4aHAhcVps9wIMhGE8Zo5zCf3wws=
+ resolved "https://registry.npmmirror.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b"
+ integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==
parseurl@~1.3.2, parseurl@~1.3.3:
version "1.3.3"
- resolved "https://registry.nlark.com/parseurl/download/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4"
- integrity sha1-naGee+6NEt/wUT7Vt2lXeTvC6NQ=
+ resolved "https://registry.npmmirror.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4"
+ integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==
pascal-case@^3.1.2:
version "3.1.2"
- resolved "https://registry.nlark.com/pascal-case/download/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb"
- integrity sha1-tI4O8rmOIF58Ha50fQsVCCN2YOs=
+ resolved "https://registry.npmmirror.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb"
+ integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==
dependencies:
no-case "^3.0.4"
tslib "^2.0.3"
path-exists@^3.0.0:
version "3.0.0"
- resolved "https://registry.nlark.com/path-exists/download/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515"
- integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=
+ resolved "https://registry.npmmirror.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515"
+ integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==
path-exists@^4.0.0:
version "4.0.0"
- resolved "https://registry.nlark.com/path-exists/download/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3"
- integrity sha1-UTvb4tO5XXdi6METfvoZXGxhtbM=
+ resolved "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3"
+ integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==
path-is-absolute@^1.0.0:
version "1.0.1"
- resolved "https://registry.npmmirror.com/path-is-absolute/download/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
- integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
+ resolved "https://registry.npmmirror.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
+ integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==
path-is-inside@1.0.2:
version "1.0.2"
- resolved "https://registry.nlark.com/path-is-inside/download/path-is-inside-1.0.2.tgz?cache=0&sync_timestamp=1622604553837&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpath-is-inside%2Fdownload%2Fpath-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53"
- integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=
+ resolved "https://registry.npmmirror.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53"
+ integrity sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==
path-key@^3.0.0, path-key@^3.1.0:
version "3.1.1"
- resolved "https://registry.nlark.com/path-key/download/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375"
- integrity sha1-WB9q3mWMu6ZaDTOA3ndTKVBU83U=
+ resolved "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375"
+ integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==
path-parse@^1.0.7:
version "1.0.7"
- resolved "https://registry.nlark.com/path-parse/download/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
- integrity sha1-+8EUtgykKzDZ2vWFjkvWi77bZzU=
+ resolved "https://registry.npmmirror.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
+ integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
path-to-regexp@0.1.7:
version "0.1.7"
- resolved "https://registry.nlark.com/path-to-regexp/download/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"
- integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=
+ resolved "https://registry.npmmirror.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"
+ integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==
path-to-regexp@2.2.1:
version "2.2.1"
- resolved "https://registry.nlark.com/path-to-regexp/download/path-to-regexp-2.2.1.tgz#90b617025a16381a879bc82a38d4e8bdeb2bcf45"
- integrity sha1-kLYXAloWOBqHm8gqONTovesrz0U=
+ resolved "https://registry.npmmirror.com/path-to-regexp/-/path-to-regexp-2.2.1.tgz#90b617025a16381a879bc82a38d4e8bdeb2bcf45"
+ integrity sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ==
path-to-regexp@^1.7.0:
version "1.8.0"
- resolved "https://registry.nlark.com/path-to-regexp/download/path-to-regexp-1.8.0.tgz#887b3ba9d84393e87a0a0b9f4cb756198b53548a"
- integrity sha1-iHs7qdhDk+h6CgufTLdWGYtTVIo=
+ resolved "https://registry.npmmirror.com/path-to-regexp/-/path-to-regexp-1.8.0.tgz#887b3ba9d84393e87a0a0b9f4cb756198b53548a"
+ integrity sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==
dependencies:
isarray "0.0.1"
path-type@^4.0.0:
version "4.0.0"
- resolved "https://registry.nlark.com/path-type/download/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b"
- integrity sha1-hO0BwKe6OAr+CdkKjBgNzZ0DBDs=
+ resolved "https://registry.npmmirror.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b"
+ integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
picocolors@^1.0.0:
version "1.0.0"
- resolved "https://registry.npmmirror.com/picocolors/download/picocolors-1.0.0.tgz?cache=0&sync_timestamp=1634093442271&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fpicocolors%2Fdownload%2Fpicocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c"
- integrity sha1-y1vcdP8/UYkiNur3nWi8RFZKuBw=
+ resolved "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c"
+ integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==
picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3:
version "2.3.1"
- resolved "https://registry.npmmirror.com/picomatch/download/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
+ resolved "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
pify@^2.3.0:
version "2.3.0"
- resolved "https://registry.nlark.com/pify/download/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
- integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw=
+ resolved "https://registry.npmmirror.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
+ integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==
pify@^4.0.1:
version "4.0.1"
- resolved "https://registry.nlark.com/pify/download/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231"
- integrity sha1-SyzSXFDVmHNcUCkiJP2MbfQeMjE=
+ resolved "https://registry.npmmirror.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231"
+ integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==
pkg-dir@^4.1.0:
version "4.2.0"
- resolved "https://registry.npmmirror.com/pkg-dir/download/pkg-dir-4.2.0.tgz?cache=0&sync_timestamp=1633498133295&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fpkg-dir%2Fdownload%2Fpkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3"
- integrity sha1-8JkTPfft5CLoHR2ESCcO6z5CYfM=
+ resolved "https://registry.npmmirror.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3"
+ integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==
dependencies:
find-up "^4.0.0"
pkg-up@^3.1.0:
version "3.1.0"
- resolved "https://registry.npmmirror.com/pkg-up/download/pkg-up-3.1.0.tgz?cache=0&sync_timestamp=1636035118070&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fpkg-up%2Fdownload%2Fpkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5"
- integrity sha1-EA7CNcwVDk/UJRlBJZaihRKg3vU=
+ resolved "https://registry.npmmirror.com/pkg-up/-/pkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5"
+ integrity sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==
dependencies:
find-up "^3.0.0"
portfinder@^1.0.28:
version "1.0.28"
- resolved "https://registry.nlark.com/portfinder/download/portfinder-1.0.28.tgz#67c4622852bd5374dd1dd900f779f53462fac778"
- integrity sha1-Z8RiKFK9U3TdHdkA93n1NGL6x3g=
+ resolved "https://registry.npmmirror.com/portfinder/-/portfinder-1.0.28.tgz#67c4622852bd5374dd1dd900f779f53462fac778"
+ integrity sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==
dependencies:
async "^2.6.2"
debug "^3.1.1"
mkdirp "^0.5.5"
-postcss-calc@^8.0.0:
- version "8.1.0"
- resolved "https://registry.npmmirror.com/postcss-calc/download/postcss-calc-8.1.0.tgz#646a67bc47ef98d5b1ae3c2f944830d04a5fd6a7"
- integrity sha512-XaJ+DArhRtRAzI+IqjRNTM0i4NFKkMK5StepwynfrF27UfO6/oMaELSVDE4f9ndLHyaO4aDKUwfQKVmje/BzCg==
+postcss-calc@^8.2.0:
+ version "8.2.4"
+ resolved "https://registry.npmmirror.com/postcss-calc/-/postcss-calc-8.2.4.tgz#77b9c29bfcbe8a07ff6693dc87050828889739a5"
+ integrity sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==
dependencies:
- postcss-selector-parser "^6.0.2"
- postcss-value-parser "^4.0.2"
+ postcss-selector-parser "^6.0.9"
+ postcss-value-parser "^4.2.0"
-postcss-colormin@^5.2.2:
- version "5.2.2"
- resolved "https://registry.npmmirror.com/postcss-colormin/download/postcss-colormin-5.2.2.tgz#019cd6912bef9e7e0924462c5e4ffae241e2f437"
- integrity sha512-tSEe3NpqWARUTidDlF0LntPkdlhXqfDFuA1yslqpvvGAfpZ7oBaw+/QXd935NKm2U9p4PED0HDZlzmMk7fVC6g==
+postcss-colormin@^5.2.4:
+ version "5.2.4"
+ resolved "https://registry.npmmirror.com/postcss-colormin/-/postcss-colormin-5.2.4.tgz#7726d3f3d24f111d39faff50a6500688225d5324"
+ integrity sha512-rYlC5015aNqVQt/B6Cy156g7sH5tRUJGmT9xeagYthtKehetbKx7jHxhyLpulP4bs4vbp8u/B2rac0J7S7qPQg==
dependencies:
browserslist "^4.16.6"
caniuse-api "^3.0.0"
colord "^2.9.1"
postcss-value-parser "^4.2.0"
-postcss-convert-values@^5.0.2:
- version "5.0.2"
- resolved "https://registry.npmmirror.com/postcss-convert-values/download/postcss-convert-values-5.0.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fpostcss-convert-values%2Fdownload%2Fpostcss-convert-values-5.0.2.tgz#879b849dc3677c7d6bc94b6a2c1a3f0808798059"
- integrity sha1-h5uEncNnfH1ryUtqLBo/CAh5gFk=
+postcss-convert-values@^5.0.3:
+ version "5.0.3"
+ resolved "https://registry.npmmirror.com/postcss-convert-values/-/postcss-convert-values-5.0.3.tgz#492db08a28af84d57651f10edc8f6c8fb2f6df40"
+ integrity sha512-fVkjHm2T0PSMqXUCIhHNWVGjhB9mHEWX2GboVs7j3iCgr6FpIl9c/IdXy0PHWZSQ9LFTRgmj98amxJE6KOnlsA==
dependencies:
- postcss-value-parser "^4.1.0"
+ postcss-value-parser "^4.2.0"
-postcss-discard-comments@^5.0.1:
- version "5.0.1"
- resolved "https://registry.nlark.com/postcss-discard-comments/download/postcss-discard-comments-5.0.1.tgz?cache=0&sync_timestamp=1621449592883&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpostcss-discard-comments%2Fdownload%2Fpostcss-discard-comments-5.0.1.tgz#9eae4b747cf760d31f2447c27f0619d5718901fe"
- integrity sha1-nq5LdHz3YNMfJEfCfwYZ1XGJAf4=
+postcss-discard-comments@^5.0.2:
+ version "5.0.2"
+ resolved "https://registry.npmmirror.com/postcss-discard-comments/-/postcss-discard-comments-5.0.2.tgz#811ed34e2b6c40713daab0beb4d7a04125927dcd"
+ integrity sha512-6VQ3pYTsJHEsN2Bic88Aa7J/Brn4Bv8j/rqaFQZkH+pcVkKYwxCIvoMQkykEW7fBjmofdTnQgcivt5CCBJhtrg==
-postcss-discard-duplicates@^5.0.1:
- version "5.0.1"
- resolved "https://registry.nlark.com/postcss-discard-duplicates/download/postcss-discard-duplicates-5.0.1.tgz?cache=0&sync_timestamp=1621449593093&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpostcss-discard-duplicates%2Fdownload%2Fpostcss-discard-duplicates-5.0.1.tgz#68f7cc6458fe6bab2e46c9f55ae52869f680e66d"
- integrity sha1-aPfMZFj+a6suRsn1WuUoafaA5m0=
+postcss-discard-duplicates@^5.0.2:
+ version "5.0.2"
+ resolved "https://registry.npmmirror.com/postcss-discard-duplicates/-/postcss-discard-duplicates-5.0.2.tgz#61076f3d256351bdaac8e20aade730fef0609f44"
+ integrity sha512-LKY81YjUjc78p6rbXIsnppsaFo8XzCoMZkXVILJU//sK0DgPkPSpuq/cZvHss3EtdKvWNYgWzQL+wiJFtEET4g==
-postcss-discard-empty@^5.0.1:
- version "5.0.1"
- resolved "https://registry.nlark.com/postcss-discard-empty/download/postcss-discard-empty-5.0.1.tgz#ee136c39e27d5d2ed4da0ee5ed02bc8a9f8bf6d8"
- integrity sha1-7hNsOeJ9XS7U2g7l7QK8ip+L9tg=
+postcss-discard-empty@^5.0.2:
+ version "5.0.2"
+ resolved "https://registry.npmmirror.com/postcss-discard-empty/-/postcss-discard-empty-5.0.2.tgz#0676a9bcfc44bb00d338352a45ab80845a31d8f0"
+ integrity sha512-SxBsbTjlsKUvZLL+dMrdWauuNZU8TBq5IOL/DHa6jBUSXFEwmDqeXRfTIK/FQpPTa8MJMxEHjSV3UbiuyLARPQ==
-postcss-discard-overridden@^5.0.1:
- version "5.0.1"
- resolved "https://registry.nlark.com/postcss-discard-overridden/download/postcss-discard-overridden-5.0.1.tgz#454b41f707300b98109a75005ca4ab0ff2743ac6"
- integrity sha1-RUtB9wcwC5gQmnUAXKSrD/J0OsY=
+postcss-discard-overridden@^5.0.3:
+ version "5.0.3"
+ resolved "https://registry.npmmirror.com/postcss-discard-overridden/-/postcss-discard-overridden-5.0.3.tgz#004b9818cabb407e60616509267567150b327a3f"
+ integrity sha512-yRTXknIZA4k8Yo4FiF1xbsLj/VBxfXEWxJNIrtIy6HC9KQ4xJxcPtoaaskh6QptCGrrcGnhKsTsENTRPZOBu4g==
-postcss-discard-unused@^5.0.1:
- version "5.0.1"
- resolved "https://registry.npmmirror.com/postcss-discard-unused/download/postcss-discard-unused-5.0.1.tgz#63e35a74a154912f93d4e75a1e6ff3cc146f934b"
- integrity sha1-Y+NadKFUkS+T1OdaHm/zzBRvk0s=
+postcss-discard-unused@^5.0.2:
+ version "5.0.2"
+ resolved "https://registry.npmmirror.com/postcss-discard-unused/-/postcss-discard-unused-5.0.2.tgz#674bad5fde61517217e7e056015fda694e0cb722"
+ integrity sha512-vP5MOINH2LouL2slqENa8vmKphKjv+VOeeAdlUfySkwi3HoaW1p7++Oh8bqRQzoAmeTrf5G6CHzxa7xMXFNkIA==
dependencies:
postcss-selector-parser "^6.0.5"
postcss-import@^14.0.2:
version "14.0.2"
- resolved "https://registry.nlark.com/postcss-import/download/postcss-import-14.0.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpostcss-import%2Fdownload%2Fpostcss-import-14.0.2.tgz#60eff77e6be92e7b67fe469ec797d9424cae1aa1"
- integrity sha1-YO/3fmvpLntn/kaex5fZQkyuGqE=
+ resolved "https://registry.npmmirror.com/postcss-import/-/postcss-import-14.0.2.tgz#60eff77e6be92e7b67fe469ec797d9424cae1aa1"
+ integrity sha512-BJ2pVK4KhUyMcqjuKs9RijV5tatNzNa73e/32aBVE/ejYPe37iH+6vAu9WvqUkB5OAYgLHzbSvzHnorybJCm9g==
dependencies:
postcss-value-parser "^4.0.0"
read-cache "^1.0.0"
resolve "^1.1.7"
-postcss-js@^3.0.3:
- version "3.0.3"
- resolved "https://registry.npmmirror.com/postcss-js/download/postcss-js-3.0.3.tgz#2f0bd370a2e8599d45439f6970403b5873abda33"
- integrity sha1-LwvTcKLoWZ1FQ59pcEA7WHOr2jM=
+postcss-js@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmmirror.com/postcss-js/-/postcss-js-4.0.0.tgz#31db79889531b80dc7bc9b0ad283e418dce0ac00"
+ integrity sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==
dependencies:
camelcase-css "^2.0.1"
- postcss "^8.1.6"
postcss-load-config@^3.1.0:
version "3.1.1"
- resolved "https://registry.npmmirror.com/postcss-load-config/download/postcss-load-config-3.1.1.tgz#2f53a17f2f543d9e63864460af42efdac0d41f87"
+ resolved "https://registry.npmmirror.com/postcss-load-config/-/postcss-load-config-3.1.1.tgz#2f53a17f2f543d9e63864460af42efdac0d41f87"
integrity sha512-c/9XYboIbSEUZpiD1UQD0IKiUe8n9WHYV7YFe7X7J+ZwCsEKkUJSFWjS9hBU1RR9THR7jMXst8sxiqP0jjo2mg==
dependencies:
lilconfig "^2.0.4"
@@ -5834,82 +5872,80 @@ postcss-load-config@^3.1.0:
postcss-loader@^6.1.1:
version "6.2.1"
- resolved "https://registry.npmmirror.com/postcss-loader/download/postcss-loader-6.2.1.tgz#0895f7346b1702103d30fdc66e4d494a93c008ef"
+ resolved "https://registry.npmmirror.com/postcss-loader/-/postcss-loader-6.2.1.tgz#0895f7346b1702103d30fdc66e4d494a93c008ef"
integrity sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==
dependencies:
cosmiconfig "^7.0.0"
klona "^2.0.5"
semver "^7.3.5"
-postcss-merge-idents@^5.0.1:
- version "5.0.1"
- resolved "https://registry.nlark.com/postcss-merge-idents/download/postcss-merge-idents-5.0.1.tgz#6b5856fc28f2571f28ecce49effb9b0e64be9437"
- integrity sha1-a1hW/CjyVx8o7M5J7/ubDmS+lDc=
+postcss-merge-idents@^5.0.2:
+ version "5.0.2"
+ resolved "https://registry.npmmirror.com/postcss-merge-idents/-/postcss-merge-idents-5.0.2.tgz#d67d9505857a9546c3f7a305386e4147497322d6"
+ integrity sha512-V8IlmvQez+/mB06touksO3lUKtzL3ZKfBxfXFK2q136TOyOLXBuoI8kQwZsIOFWUfA8gk/XpFtmMsqURqYPk6Q==
dependencies:
- cssnano-utils "^2.0.1"
- postcss-value-parser "^4.1.0"
+ cssnano-utils "^3.0.0"
+ postcss-value-parser "^4.2.0"
-postcss-merge-longhand@^5.0.4:
- version "5.0.4"
- resolved "https://registry.npmmirror.com/postcss-merge-longhand/download/postcss-merge-longhand-5.0.4.tgz#41f4f3270282ea1a145ece078b7679f0cef21c32"
- integrity sha512-2lZrOVD+d81aoYkZDpWu6+3dTAAGkCKbV5DoRhnIR7KOULVrI/R7bcMjhrH9KTRy6iiHKqmtG+n/MMj1WmqHFw==
+postcss-merge-longhand@^5.0.5:
+ version "5.0.5"
+ resolved "https://registry.npmmirror.com/postcss-merge-longhand/-/postcss-merge-longhand-5.0.5.tgz#cbc217ca22fb5a3e6ee22a6a1aa6920ec1f3c628"
+ integrity sha512-R2BCPJJ/U2oh1uTWEYn9CcJ7MMcQ1iIbj9wfr2s/zHu5om5MP/ewKdaunpfJqR1WYzqCsgnXuRoVXPAzxdqy8g==
dependencies:
- postcss-value-parser "^4.1.0"
- stylehacks "^5.0.1"
+ postcss-value-parser "^4.2.0"
+ stylehacks "^5.0.2"
-postcss-merge-rules@^5.0.3:
- version "5.0.3"
- resolved "https://registry.npmmirror.com/postcss-merge-rules/download/postcss-merge-rules-5.0.3.tgz?cache=0&sync_timestamp=1637085444662&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fpostcss-merge-rules%2Fdownload%2Fpostcss-merge-rules-5.0.3.tgz#b5cae31f53129812a77e3eb1eeee448f8cf1a1db"
- integrity sha512-cEKTMEbWazVa5NXd8deLdCnXl+6cYG7m2am+1HzqH0EnTdy8fRysatkaXb2dEnR+fdaDxTvuZ5zoBdv6efF6hg==
+postcss-merge-rules@^5.0.5:
+ version "5.0.5"
+ resolved "https://registry.npmmirror.com/postcss-merge-rules/-/postcss-merge-rules-5.0.5.tgz#2a18669ec214019884a60f0a0d356803a8138366"
+ integrity sha512-3Oa26/Pb9VOFVksJjFG45SNoe4nhGvJ2Uc6TlRimqF8uhfOCEhVCaJ3rvEat5UFOn2UZqTY5Da8dFgCh3Iq0Ug==
dependencies:
browserslist "^4.16.6"
caniuse-api "^3.0.0"
- cssnano-utils "^2.0.1"
+ cssnano-utils "^3.0.1"
postcss-selector-parser "^6.0.5"
-postcss-minify-font-values@^5.0.1:
- version "5.0.1"
- resolved "https://registry.nlark.com/postcss-minify-font-values/download/postcss-minify-font-values-5.0.1.tgz#a90cefbfdaa075bd3dbaa1b33588bb4dc268addf"
- integrity sha1-qQzvv9qgdb09uqGzNYi7TcJord8=
- dependencies:
- postcss-value-parser "^4.1.0"
-
-postcss-minify-gradients@^5.0.3:
+postcss-minify-font-values@^5.0.3:
version "5.0.3"
- resolved "https://registry.npmmirror.com/postcss-minify-gradients/download/postcss-minify-gradients-5.0.3.tgz?cache=0&sync_timestamp=1635856917388&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fpostcss-minify-gradients%2Fdownload%2Fpostcss-minify-gradients-5.0.3.tgz#f970a11cc71e08e9095e78ec3a6b34b91c19550e"
- integrity sha1-+XChHMceCOkJXnjsOms0uRwZVQ4=
+ resolved "https://registry.npmmirror.com/postcss-minify-font-values/-/postcss-minify-font-values-5.0.3.tgz#48c455c4cd980ecd07ac9bf3fc58e9d8a2ae4168"
+ integrity sha512-bC45rVzEwsLhv/cL1eCjoo2OOjbSk9I7HKFBYnBvtyuIZlf7uMipMATXtA0Fc3jwPo3wuPIW1jRJWKzflMh1sA==
+ dependencies:
+ postcss-value-parser "^4.2.0"
+
+postcss-minify-gradients@^5.0.5:
+ version "5.0.5"
+ resolved "https://registry.npmmirror.com/postcss-minify-gradients/-/postcss-minify-gradients-5.0.5.tgz#a5572b9c98ed52cbd7414db24b873f8b9e418290"
+ integrity sha512-/YjvXs8PepsoiZAIpjstOO4IHKwFAqYNqbA1yVdqklM84tbUUneh6omJxGlRlF3mi6K5Pa067Mg6IwqEnYC8Zg==
dependencies:
colord "^2.9.1"
- cssnano-utils "^2.0.1"
- postcss-value-parser "^4.1.0"
+ cssnano-utils "^3.0.1"
+ postcss-value-parser "^4.2.0"
-postcss-minify-params@^5.0.2:
- version "5.0.2"
- resolved "https://registry.npmmirror.com/postcss-minify-params/download/postcss-minify-params-5.0.2.tgz?cache=0&sync_timestamp=1637084927421&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fpostcss-minify-params%2Fdownload%2Fpostcss-minify-params-5.0.2.tgz#1b644da903473fbbb18fbe07b8e239883684b85c"
- integrity sha512-qJAPuBzxO1yhLad7h2Dzk/F7n1vPyfHfCCh5grjGfjhi1ttCnq4ZXGIW77GSrEbh9Hus9Lc/e/+tB4vh3/GpDg==
+postcss-minify-params@^5.0.4:
+ version "5.0.4"
+ resolved "https://registry.npmmirror.com/postcss-minify-params/-/postcss-minify-params-5.0.4.tgz#230a4d04456609e614db1d48c2eebc21f6490a45"
+ integrity sha512-Z0vjod9lRZEmEPfEmA2sCfjbfEEFKefMD3RDIQSUfXK4LpCyWkX1CniUgyNvnjJFLDPSxtgKzozhHhPHKoeGkg==
dependencies:
- alphanum-sort "^1.0.2"
browserslist "^4.16.6"
- cssnano-utils "^2.0.1"
- postcss-value-parser "^4.1.0"
+ cssnano-utils "^3.0.1"
+ postcss-value-parser "^4.2.0"
-postcss-minify-selectors@^5.1.0:
- version "5.1.0"
- resolved "https://registry.nlark.com/postcss-minify-selectors/download/postcss-minify-selectors-5.1.0.tgz?cache=0&sync_timestamp=1621449593365&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpostcss-minify-selectors%2Fdownload%2Fpostcss-minify-selectors-5.1.0.tgz#4385c845d3979ff160291774523ffa54eafd5a54"
- integrity sha1-Q4XIRdOXn/FgKRd0Uj/6VOr9WlQ=
+postcss-minify-selectors@^5.1.2:
+ version "5.1.2"
+ resolved "https://registry.npmmirror.com/postcss-minify-selectors/-/postcss-minify-selectors-5.1.2.tgz#bc9698f713b9dab7f44f1ec30643fcbad9a043c0"
+ integrity sha512-gpn1nJDMCf3g32y/7kl+jsdamhiYT+/zmEt57RoT9GmzlixBNRPohI7k8UIHelLABhdLf3MSZhtM33xuH5eQOQ==
dependencies:
- alphanum-sort "^1.0.2"
postcss-selector-parser "^6.0.5"
postcss-modules-extract-imports@^3.0.0:
version "3.0.0"
- resolved "https://registry.npm.taobao.org/postcss-modules-extract-imports/download/postcss-modules-extract-imports-3.0.0.tgz#cda1f047c0ae80c97dbe28c3e76a43b88025741d"
- integrity sha1-zaHwR8CugMl9vijD52pDuIAldB0=
+ resolved "https://registry.npmmirror.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz#cda1f047c0ae80c97dbe28c3e76a43b88025741d"
+ integrity sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==
postcss-modules-local-by-default@^4.0.0:
version "4.0.0"
- resolved "https://registry.nlark.com/postcss-modules-local-by-default/download/postcss-modules-local-by-default-4.0.0.tgz#ebbb54fae1598eecfdf691a02b3ff3b390a5a51c"
- integrity sha1-67tU+uFZjuz99pGgKz/zs5ClpRw=
+ resolved "https://registry.npmmirror.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz#ebbb54fae1598eecfdf691a02b3ff3b390a5a51c"
+ integrity sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==
dependencies:
icss-utils "^5.0.0"
postcss-selector-parser "^6.0.2"
@@ -5917,221 +5953,216 @@ postcss-modules-local-by-default@^4.0.0:
postcss-modules-scope@^3.0.0:
version "3.0.0"
- resolved "https://registry.npm.taobao.org/postcss-modules-scope/download/postcss-modules-scope-3.0.0.tgz#9ef3151456d3bbfa120ca44898dfca6f2fa01f06"
- integrity sha1-nvMVFFbTu/oSDKRImN/Kby+gHwY=
+ resolved "https://registry.npmmirror.com/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz#9ef3151456d3bbfa120ca44898dfca6f2fa01f06"
+ integrity sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==
dependencies:
postcss-selector-parser "^6.0.4"
postcss-modules-values@^4.0.0:
version "4.0.0"
- resolved "https://registry.nlark.com/postcss-modules-values/download/postcss-modules-values-4.0.0.tgz#d7c5e7e68c3bb3c9b27cbf48ca0bb3ffb4602c9c"
- integrity sha1-18Xn5ow7s8myfL9Iyguz/7RgLJw=
+ resolved "https://registry.npmmirror.com/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz#d7c5e7e68c3bb3c9b27cbf48ca0bb3ffb4602c9c"
+ integrity sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==
dependencies:
icss-utils "^5.0.0"
postcss-nested@5.0.6:
version "5.0.6"
- resolved "https://registry.nlark.com/postcss-nested/download/postcss-nested-5.0.6.tgz?cache=0&sync_timestamp=1627474451220&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpostcss-nested%2Fdownload%2Fpostcss-nested-5.0.6.tgz#466343f7fc8d3d46af3e7dba3fcd47d052a945bc"
- integrity sha1-RmND9/yNPUavPn26P81H0FKpRbw=
+ resolved "https://registry.npmmirror.com/postcss-nested/-/postcss-nested-5.0.6.tgz#466343f7fc8d3d46af3e7dba3fcd47d052a945bc"
+ integrity sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==
dependencies:
postcss-selector-parser "^6.0.6"
-postcss-normalize-charset@^5.0.1:
- version "5.0.1"
- resolved "https://registry.nlark.com/postcss-normalize-charset/download/postcss-normalize-charset-5.0.1.tgz?cache=0&sync_timestamp=1621449593655&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpostcss-normalize-charset%2Fdownload%2Fpostcss-normalize-charset-5.0.1.tgz#121559d1bebc55ac8d24af37f67bd4da9efd91d0"
- integrity sha1-EhVZ0b68VayNJK839nvU2p79kdA=
+postcss-normalize-charset@^5.0.2:
+ version "5.0.2"
+ resolved "https://registry.npmmirror.com/postcss-normalize-charset/-/postcss-normalize-charset-5.0.2.tgz#eb6130c8a8e950ce25f9ea512de1d9d6a6f81439"
+ integrity sha512-fEMhYXzO8My+gC009qDc/3bgnFP8Fv1Ic8uw4ec4YTlhIOw63tGPk1YFd7fk9bZUf1DAbkhiL/QPWs9JLqdF2g==
-postcss-normalize-display-values@^5.0.1:
- version "5.0.1"
- resolved "https://registry.nlark.com/postcss-normalize-display-values/download/postcss-normalize-display-values-5.0.1.tgz#62650b965981a955dffee83363453db82f6ad1fd"
- integrity sha1-YmULllmBqVXf/ugzY0U9uC9q0f0=
+postcss-normalize-display-values@^5.0.2:
+ version "5.0.2"
+ resolved "https://registry.npmmirror.com/postcss-normalize-display-values/-/postcss-normalize-display-values-5.0.2.tgz#8b5273c6c7d0a445e6ef226b8a5bb3204a55fb99"
+ integrity sha512-RxXoJPUR0shSjkMMzgEZDjGPrgXUVYyWA/YwQRicb48H15OClPuaDR7tYokLAlGZ2tCSENEN5WxjgxSD5m4cUw==
dependencies:
- cssnano-utils "^2.0.1"
- postcss-value-parser "^4.1.0"
+ postcss-value-parser "^4.2.0"
-postcss-normalize-positions@^5.0.1:
- version "5.0.1"
- resolved "https://registry.nlark.com/postcss-normalize-positions/download/postcss-normalize-positions-5.0.1.tgz#868f6af1795fdfa86fbbe960dceb47e5f9492fe5"
- integrity sha1-ho9q8Xlf36hvu+lg3OtH5flJL+U=
+postcss-normalize-positions@^5.0.3:
+ version "5.0.3"
+ resolved "https://registry.npmmirror.com/postcss-normalize-positions/-/postcss-normalize-positions-5.0.3.tgz#b63fcc4ff5fbf65934fafaf83270b2da214711d1"
+ integrity sha512-U+rmhjrNBvIGYqr/1tD4wXPFFMKUbXsYXvlUCzLi0tOCUS6LoeEAnmVXXJY/MEB/1CKZZwBSs2tmzGawcygVBA==
dependencies:
- postcss-value-parser "^4.1.0"
+ postcss-value-parser "^4.2.0"
-postcss-normalize-repeat-style@^5.0.1:
- version "5.0.1"
- resolved "https://registry.nlark.com/postcss-normalize-repeat-style/download/postcss-normalize-repeat-style-5.0.1.tgz?cache=0&sync_timestamp=1621449596114&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpostcss-normalize-repeat-style%2Fdownload%2Fpostcss-normalize-repeat-style-5.0.1.tgz#cbc0de1383b57f5bb61ddd6a84653b5e8665b2b5"
- integrity sha1-y8DeE4O1f1u2Hd1qhGU7XoZlsrU=
+postcss-normalize-repeat-style@^5.0.3:
+ version "5.0.3"
+ resolved "https://registry.npmmirror.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.0.3.tgz#488c0ad8aac0fa4f66ef56cc8d604b3fd9bf705f"
+ integrity sha512-uk1+xYx0AMbA3nLSNhbDrqbf/rx+Iuq5tVad2VNyaxxJzx79oGieJ6D9F6AfOL2GtiIbP7vTYlpYHtG+ERFXTg==
dependencies:
- cssnano-utils "^2.0.1"
- postcss-value-parser "^4.1.0"
+ postcss-value-parser "^4.2.0"
-postcss-normalize-string@^5.0.1:
- version "5.0.1"
- resolved "https://registry.nlark.com/postcss-normalize-string/download/postcss-normalize-string-5.0.1.tgz?cache=0&sync_timestamp=1621449595099&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpostcss-normalize-string%2Fdownload%2Fpostcss-normalize-string-5.0.1.tgz#d9eafaa4df78c7a3b973ae346ef0e47c554985b0"
- integrity sha1-2er6pN94x6O5c640bvDkfFVJhbA=
+postcss-normalize-string@^5.0.3:
+ version "5.0.3"
+ resolved "https://registry.npmmirror.com/postcss-normalize-string/-/postcss-normalize-string-5.0.3.tgz#49e0a1d58a119d5435ef21893ad03136a6e8f0e6"
+ integrity sha512-Mf2V4JbIDboNGQhW6xW0YREDiYXoX3WrD3EjKkjvnpAJ6W4qqjLnK/c9aioyVFaWWHVdP5zVRw/9DI5S3oLDFw==
dependencies:
- postcss-value-parser "^4.1.0"
+ postcss-value-parser "^4.2.0"
-postcss-normalize-timing-functions@^5.0.1:
- version "5.0.1"
- resolved "https://registry.nlark.com/postcss-normalize-timing-functions/download/postcss-normalize-timing-functions-5.0.1.tgz#8ee41103b9130429c6cbba736932b75c5e2cb08c"
- integrity sha1-juQRA7kTBCnGy7pzaTK3XF4ssIw=
+postcss-normalize-timing-functions@^5.0.2:
+ version "5.0.2"
+ resolved "https://registry.npmmirror.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.0.2.tgz#db4f4f49721f47667afd1fdc5edb032f8d9cdb2e"
+ integrity sha512-Ao0PP6MoYsRU1LxeVUW740ioknvdIUmfr6uAA3xWlQJ9s69/Tupy8qwhuKG3xWfl+KvLMAP9p2WXF9cwuk/7Bg==
dependencies:
- cssnano-utils "^2.0.1"
- postcss-value-parser "^4.1.0"
+ postcss-value-parser "^4.2.0"
-postcss-normalize-unicode@^5.0.1:
- version "5.0.1"
- resolved "https://registry.nlark.com/postcss-normalize-unicode/download/postcss-normalize-unicode-5.0.1.tgz#82d672d648a411814aa5bf3ae565379ccd9f5e37"
- integrity sha1-gtZy1kikEYFKpb865WU3nM2fXjc=
+postcss-normalize-unicode@^5.0.3:
+ version "5.0.3"
+ resolved "https://registry.npmmirror.com/postcss-normalize-unicode/-/postcss-normalize-unicode-5.0.3.tgz#10f0d30093598a58c48a616491cc7fa53256dd43"
+ integrity sha512-uNC7BmS/7h6to2UWa4RFH8sOTzu2O9dVWPE/F9Vm9GdhONiD/c1kNaCLbmsFHlKWcEx7alNUChQ+jH/QAlqsQw==
dependencies:
- browserslist "^4.16.0"
- postcss-value-parser "^4.1.0"
+ browserslist "^4.16.6"
+ postcss-value-parser "^4.2.0"
postcss-normalize-url@^5.0.4:
version "5.0.4"
- resolved "https://registry.npmmirror.com/postcss-normalize-url/download/postcss-normalize-url-5.0.4.tgz#3b0322c425e31dd275174d0d5db0e466f50810fb"
+ resolved "https://registry.npmmirror.com/postcss-normalize-url/-/postcss-normalize-url-5.0.4.tgz#3b0322c425e31dd275174d0d5db0e466f50810fb"
integrity sha512-cNj3RzK2pgQQyNp7dzq0dqpUpQ/wYtdDZM3DepPmFjCmYIfceuD9VIAcOdvrNetjIU65g1B4uwdP/Krf6AFdXg==
dependencies:
normalize-url "^6.0.1"
postcss-value-parser "^4.2.0"
-postcss-normalize-whitespace@^5.0.1:
- version "5.0.1"
- resolved "https://registry.nlark.com/postcss-normalize-whitespace/download/postcss-normalize-whitespace-5.0.1.tgz?cache=0&sync_timestamp=1621449593892&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpostcss-normalize-whitespace%2Fdownload%2Fpostcss-normalize-whitespace-5.0.1.tgz#b0b40b5bcac83585ff07ead2daf2dcfbeeef8e9a"
- integrity sha1-sLQLW8rINYX/B+rS2vLc++7vjpo=
+postcss-normalize-whitespace@^5.0.3:
+ version "5.0.3"
+ resolved "https://registry.npmmirror.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.0.3.tgz#fb6bcc9ff2f834448b802657c7acd0956f4591d1"
+ integrity sha512-333JWRnX655fSoUbufJ10HJop3c8mrpKkCCUnEmgz/Cb/QEtW+/TMZwDAUt4lnwqP6tCCk0x0b58jqvDgiQm/A==
dependencies:
- postcss-value-parser "^4.1.0"
+ postcss-value-parser "^4.2.0"
-postcss-ordered-values@^5.0.2:
+postcss-ordered-values@^5.0.4:
+ version "5.0.4"
+ resolved "https://registry.npmmirror.com/postcss-ordered-values/-/postcss-ordered-values-5.0.4.tgz#f799dca87a7f17526d31a20085e61768d0b00534"
+ integrity sha512-taKtGDZtyYUMVYkg+MuJeBUiTF6cGHZmo/qcW7ibvW79UlyKuSHbo6dpCIiqI+j9oJsXWzP+ovIxoyLDOeQFdw==
+ dependencies:
+ cssnano-utils "^3.0.1"
+ postcss-value-parser "^4.2.0"
+
+postcss-reduce-idents@^5.0.2:
version "5.0.2"
- resolved "https://registry.nlark.com/postcss-ordered-values/download/postcss-ordered-values-5.0.2.tgz#1f351426977be00e0f765b3164ad753dac8ed044"
- integrity sha1-HzUUJpd74A4PdlsxZK11PayO0EQ=
+ resolved "https://registry.npmmirror.com/postcss-reduce-idents/-/postcss-reduce-idents-5.0.2.tgz#526b171979c063796cec87b2864e5657c412fec0"
+ integrity sha512-R53mUIa6hJC+m1vKSFVrs+wU2J7vPAm35IWE3kz5VV1sx8XBXV2PU8yXGqI8Jm9RzfL7EUiJ5Kml5t/eEeD1XA==
dependencies:
- cssnano-utils "^2.0.1"
- postcss-value-parser "^4.1.0"
-
-postcss-reduce-idents@^5.0.1:
- version "5.0.1"
- resolved "https://registry.nlark.com/postcss-reduce-idents/download/postcss-reduce-idents-5.0.1.tgz#99b49ce8ee6f9c179447671cc9693e198e877bb7"
- integrity sha1-mbSc6O5vnBeUR2ccyWk+GY6He7c=
- dependencies:
- postcss-value-parser "^4.1.0"
+ postcss-value-parser "^4.2.0"
postcss-reduce-initial@^5.0.2:
version "5.0.2"
- resolved "https://registry.npmmirror.com/postcss-reduce-initial/download/postcss-reduce-initial-5.0.2.tgz#fa424ce8aa88a89bc0b6d0f94871b24abe94c048"
+ resolved "https://registry.npmmirror.com/postcss-reduce-initial/-/postcss-reduce-initial-5.0.2.tgz#fa424ce8aa88a89bc0b6d0f94871b24abe94c048"
integrity sha512-v/kbAAQ+S1V5v9TJvbGkV98V2ERPdU6XvMcKMjqAlYiJ2NtsHGlKYLPjWWcXlaTKNxooId7BGxeraK8qXvzKtw==
dependencies:
browserslist "^4.16.6"
caniuse-api "^3.0.0"
-postcss-reduce-transforms@^5.0.1:
- version "5.0.1"
- resolved "https://registry.nlark.com/postcss-reduce-transforms/download/postcss-reduce-transforms-5.0.1.tgz#93c12f6a159474aa711d5269923e2383cedcf640"
- integrity sha1-k8EvahWUdKpxHVJpkj4jg87c9kA=
+postcss-reduce-transforms@^5.0.3:
+ version "5.0.3"
+ resolved "https://registry.npmmirror.com/postcss-reduce-transforms/-/postcss-reduce-transforms-5.0.3.tgz#df60fab34698a43073e8b87938c71df7a3b040ac"
+ integrity sha512-yDnTUab5i7auHiNwdcL1f+pBnqQFf+7eC4cbC7D8Lc1FkvNZhtpkdad+9U4wDdFb84haupMf0rA/Zc5LcTe/3A==
dependencies:
- cssnano-utils "^2.0.1"
- postcss-value-parser "^4.1.0"
+ postcss-value-parser "^4.2.0"
-postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5, postcss-selector-parser@^6.0.6, postcss-selector-parser@^6.0.7:
- version "6.0.8"
- resolved "https://registry.npmmirror.com/postcss-selector-parser/download/postcss-selector-parser-6.0.8.tgz#f023ed7a9ea736cd7ef70342996e8e78645a7914"
- integrity sha512-D5PG53d209Z1Uhcc0qAZ5U3t5HagH3cxu+WLZ22jt3gLUpXM4eXXfiO14jiDWST3NNooX/E8wISfOhZ9eIjGTQ==
+postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5, postcss-selector-parser@^6.0.6, postcss-selector-parser@^6.0.9:
+ version "6.0.9"
+ resolved "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-6.0.9.tgz#ee71c3b9ff63d9cd130838876c13a2ec1a992b2f"
+ integrity sha512-UO3SgnZOVTwu4kyLR22UQ1xZh086RyNZppb7lLAKBFK8a32ttG5i87Y/P3+2bRSjZNyJ1B7hfFNo273tKe9YxQ==
dependencies:
cssesc "^3.0.0"
util-deprecate "^1.0.2"
postcss-sort-media-queries@^4.1.0:
version "4.2.1"
- resolved "https://registry.npmmirror.com/postcss-sort-media-queries/download/postcss-sort-media-queries-4.2.1.tgz#a99bae69ef1098ee3b64a5fa94d258ec240d0355"
+ resolved "https://registry.npmmirror.com/postcss-sort-media-queries/-/postcss-sort-media-queries-4.2.1.tgz#a99bae69ef1098ee3b64a5fa94d258ec240d0355"
integrity sha512-9VYekQalFZ3sdgcTjXMa0dDjsfBVHXlraYJEMiOJ/2iMmI2JGCMavP16z3kWOaRu8NSaJCTgVpB/IVpH5yT9YQ==
dependencies:
sort-css-media-queries "2.0.4"
postcss-svgo@^5.0.3:
version "5.0.3"
- resolved "https://registry.npmmirror.com/postcss-svgo/download/postcss-svgo-5.0.3.tgz#d945185756e5dfaae07f9edb0d3cae7ff79f9b30"
- integrity sha1-2UUYV1bl36rgf57bDTyuf/efmzA=
+ resolved "https://registry.npmmirror.com/postcss-svgo/-/postcss-svgo-5.0.3.tgz#d945185756e5dfaae07f9edb0d3cae7ff79f9b30"
+ integrity sha512-41XZUA1wNDAZrQ3XgWREL/M2zSw8LJPvb5ZWivljBsUQAGoEKMYm6okHsTjJxKYI4M75RQEH4KYlEM52VwdXVA==
dependencies:
postcss-value-parser "^4.1.0"
svgo "^2.7.0"
-postcss-unique-selectors@^5.0.2:
- version "5.0.2"
- resolved "https://registry.npmmirror.com/postcss-unique-selectors/download/postcss-unique-selectors-5.0.2.tgz?cache=0&sync_timestamp=1637084927333&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fpostcss-unique-selectors%2Fdownload%2Fpostcss-unique-selectors-5.0.2.tgz#5d6893daf534ae52626708e0d62250890108c0c1"
- integrity sha512-w3zBVlrtZm7loQWRPVC0yjUwwpty7OM6DnEHkxcSQXO1bMS3RJ+JUS5LFMSDZHJcvGsRwhZinCWVqn8Kej4EDA==
+postcss-unique-selectors@^5.0.3:
+ version "5.0.3"
+ resolved "https://registry.npmmirror.com/postcss-unique-selectors/-/postcss-unique-selectors-5.0.3.tgz#07fd116a8fbd9202e7030f7c4952e7b52c26c63d"
+ integrity sha512-V5tX2hadSSn+miVCluuK1IDGy+7jAXSOfRZ2DQ+s/4uQZb/orDYBjH0CHgFrXsRw78p4QTuEFA9kI6C956UnHQ==
dependencies:
- alphanum-sort "^1.0.2"
postcss-selector-parser "^6.0.5"
-postcss-value-parser@^4.0.0, postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0:
+postcss-value-parser@^4.0.0, postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0:
version "4.2.0"
- resolved "https://registry.npmmirror.com/postcss-value-parser/download/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514"
+ resolved "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514"
integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==
postcss-zindex@^5.0.1:
version "5.0.1"
- resolved "https://registry.nlark.com/postcss-zindex/download/postcss-zindex-5.0.1.tgz#c585724beb69d356af8c7e68847b28d6298ece03"
- integrity sha1-xYVyS+tp01avjH5ohHso1imOzgM=
+ resolved "https://registry.npmmirror.com/postcss-zindex/-/postcss-zindex-5.0.1.tgz#c585724beb69d356af8c7e68847b28d6298ece03"
+ integrity sha512-nwgtJJys+XmmSGoYCcgkf/VczP8Mp/0OfSv3v0+fw0uABY4yxw+eFs0Xp9nAZHIKnS5j+e9ywQ+RD+ONyvl5pA==
-postcss@^8.1.6, postcss@^8.2.15, postcss@^8.3.5, postcss@^8.3.7:
- version "8.4.5"
- resolved "https://registry.npmmirror.com/postcss/download/postcss-8.4.5.tgz#bae665764dfd4c6fcc24dc0fdf7e7aa00cc77f95"
- integrity sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg==
+postcss@^8.2.15, postcss@^8.3.5, postcss@^8.3.7:
+ version "8.4.6"
+ resolved "https://registry.npmmirror.com/postcss/-/postcss-8.4.6.tgz#c5ff3c3c457a23864f32cb45ac9b741498a09ae1"
+ integrity sha512-OovjwIzs9Te46vlEx7+uXB0PLijpwjXGKXjVGGPIGubGpq7uh5Xgf6D6FiJ/SzJMBosHDp6a2hiXOS97iBXcaA==
dependencies:
- nanoid "^3.1.30"
+ nanoid "^3.2.0"
picocolors "^1.0.0"
- source-map-js "^1.0.1"
+ source-map-js "^1.0.2"
prepend-http@^2.0.0:
version "2.0.0"
- resolved "https://registry.nlark.com/prepend-http/download/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897"
- integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=
+ resolved "https://registry.npmmirror.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897"
+ integrity sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==
prettier@^2.5.0:
version "2.5.1"
- resolved "https://registry.npmmirror.com/prettier/download/prettier-2.5.1.tgz#fff75fa9d519c54cf0fce328c1017d94546bc56a"
+ resolved "https://registry.npmmirror.com/prettier/-/prettier-2.5.1.tgz#fff75fa9d519c54cf0fce328c1017d94546bc56a"
integrity sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg==
pretty-error@^4.0.0:
version "4.0.0"
- resolved "https://registry.npmmirror.com/pretty-error/download/pretty-error-4.0.0.tgz#90a703f46dd7234adb46d0f84823e9d1cb8f10d6"
- integrity sha1-kKcD9G3XI0rbRtD4SCPp0cuPENY=
+ resolved "https://registry.npmmirror.com/pretty-error/-/pretty-error-4.0.0.tgz#90a703f46dd7234adb46d0f84823e9d1cb8f10d6"
+ integrity sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==
dependencies:
lodash "^4.17.20"
renderkid "^3.0.0"
pretty-time@^1.1.0:
version "1.1.0"
- resolved "https://registry.npm.taobao.org/pretty-time/download/pretty-time-1.1.0.tgz#ffb7429afabb8535c346a34e41873adf3d74dd0e"
- integrity sha1-/7dCmvq7hTXDRqNOQYc63z103Q4=
+ resolved "https://registry.npmmirror.com/pretty-time/-/pretty-time-1.1.0.tgz#ffb7429afabb8535c346a34e41873adf3d74dd0e"
+ integrity sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA==
prism-react-renderer@^1.2.1:
version "1.2.1"
- resolved "https://registry.nlark.com/prism-react-renderer/download/prism-react-renderer-1.2.1.tgz?cache=0&sync_timestamp=1621624551633&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fprism-react-renderer%2Fdownload%2Fprism-react-renderer-1.2.1.tgz#392460acf63540960e5e3caa699d851264e99b89"
- integrity sha1-OSRgrPY1QJYOXjyqaZ2FEmTpm4k=
+ resolved "https://registry.npmmirror.com/prism-react-renderer/-/prism-react-renderer-1.2.1.tgz#392460acf63540960e5e3caa699d851264e99b89"
+ integrity sha512-w23ch4f75V1Tnz8DajsYKvY5lF7H1+WvzvLUcF0paFxkTHSp42RS0H5CttdN2Q8RR3DRGZ9v5xD/h3n8C8kGmg==
prismjs@^1.23.0:
- version "1.25.0"
- resolved "https://registry.npmmirror.com/prismjs/download/prismjs-1.25.0.tgz#6f822df1bdad965734b310b315a23315cf999756"
- integrity sha512-WCjJHl1KEWbnkQom1+SzftbtXMKQoezOCYs5rECqMN+jP+apI7ftoflyqigqzopSO3hMhTEb0mFClA8lkolgEg==
+ version "1.26.0"
+ resolved "https://registry.npmmirror.com/prismjs/-/prismjs-1.26.0.tgz#16881b594828bb6b45296083a8cbab46b0accd47"
+ integrity sha512-HUoH9C5Z3jKkl3UunCyiD5jwk0+Hz0fIgQ2nbwU2Oo/ceuTAQAg+pPVnfdt2TJWRVLcxKh9iuoYDUSc8clb5UQ==
process-nextick-args@~2.0.0:
version "2.0.1"
- resolved "https://registry.npmmirror.com/process-nextick-args/download/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
- integrity sha1-eCDZsWEgzFXKmud5JoCufbptf+I=
+ resolved "https://registry.npmmirror.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
+ integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==
prompts@^2.4.0, prompts@^2.4.1:
version "2.4.2"
- resolved "https://registry.npmmirror.com/prompts/download/prompts-2.4.2.tgz?cache=0&sync_timestamp=1633641937984&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fprompts%2Fdownload%2Fprompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069"
- integrity sha1-e1fnOzpIAprRDr1E90sBcipMsGk=
+ resolved "https://registry.npmmirror.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069"
+ integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==
dependencies:
kleur "^3.0.3"
sisteransi "^1.0.5"
-prop-types@^15.5.10, prop-types@^15.6.2, prop-types@^15.7.2:
+prop-types@^15.5.10, prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1:
version "15.8.1"
- resolved "https://registry.npmmirror.com/prop-types/download/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5"
+ resolved "https://registry.npmmirror.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5"
integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==
dependencies:
loose-envify "^1.4.0"
@@ -6140,94 +6171,94 @@ prop-types@^15.5.10, prop-types@^15.6.2, prop-types@^15.7.2:
property-information@^5.0.0, property-information@^5.3.0:
version "5.6.0"
- resolved "https://registry.npmmirror.com/property-information/download/property-information-5.6.0.tgz#61675545fb23002f245c6540ec46077d4da3ed69"
- integrity sha1-YWdVRfsjAC8kXGVA7EYHfU2j7Wk=
+ resolved "https://registry.npmmirror.com/property-information/-/property-information-5.6.0.tgz#61675545fb23002f245c6540ec46077d4da3ed69"
+ integrity sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==
dependencies:
xtend "^4.0.0"
proxy-addr@~2.0.7:
version "2.0.7"
- resolved "https://registry.nlark.com/proxy-addr/download/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025"
- integrity sha1-8Z/mnOqzEe65S0LnDowgcPm6ECU=
+ resolved "https://registry.npmmirror.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025"
+ integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==
dependencies:
forwarded "0.2.0"
ipaddr.js "1.9.1"
pump@^3.0.0:
version "3.0.0"
- resolved "https://registry.nlark.com/pump/download/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64"
- integrity sha1-tKIRaBW94vTh6mAjVOjHVWUQemQ=
+ resolved "https://registry.npmmirror.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64"
+ integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==
dependencies:
end-of-stream "^1.1.0"
once "^1.3.1"
punycode@1.3.2:
version "1.3.2"
- resolved "https://registry.nlark.com/punycode/download/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d"
- integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=
+ resolved "https://registry.npmmirror.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d"
+ integrity sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==
punycode@^1.3.2:
version "1.4.1"
- resolved "https://registry.nlark.com/punycode/download/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
- integrity sha1-wNWmOycYgArY4esPpSachN1BhF4=
+ resolved "https://registry.npmmirror.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
+ integrity sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==
punycode@^2.1.0:
version "2.1.1"
- resolved "https://registry.nlark.com/punycode/download/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
- integrity sha1-tYsBCsQMIsVldhbI0sLALHv0eew=
+ resolved "https://registry.npmmirror.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
+ integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
pupa@^2.1.1:
version "2.1.1"
- resolved "https://registry.nlark.com/pupa/download/pupa-2.1.1.tgz#f5e8fd4afc2c5d97828faa523549ed8744a20d62"
- integrity sha1-9ej9SvwsXZeCj6pSNUnth0SiDWI=
+ resolved "https://registry.npmmirror.com/pupa/-/pupa-2.1.1.tgz#f5e8fd4afc2c5d97828faa523549ed8744a20d62"
+ integrity sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==
dependencies:
escape-goat "^2.0.0"
q@^1.1.2:
version "1.5.1"
- resolved "https://registry.nlark.com/q/download/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7"
- integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=
+ resolved "https://registry.npmmirror.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7"
+ integrity sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==
qs@6.9.6:
version "6.9.6"
- resolved "https://registry.npmmirror.com/qs/download/qs-6.9.6.tgz#26ed3c8243a431b2924aca84cc90471f35d5a0ee"
+ resolved "https://registry.npmmirror.com/qs/-/qs-6.9.6.tgz#26ed3c8243a431b2924aca84cc90471f35d5a0ee"
integrity sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ==
querystring@0.2.0:
version "0.2.0"
- resolved "https://registry.npmmirror.com/querystring/download/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620"
+ resolved "https://registry.npmmirror.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620"
integrity sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==
queue-microtask@^1.2.2:
version "1.2.3"
- resolved "https://registry.nlark.com/queue-microtask/download/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
- integrity sha1-SSkii7xyTfrEPg77BYyve2z7YkM=
+ resolved "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
+ integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
quick-lru@^5.1.1:
version "5.1.1"
- resolved "https://registry.npmmirror.com/quick-lru/download/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932"
- integrity sha1-NmST5rPkKjpoheLpnRj4D7eoyTI=
+ resolved "https://registry.npmmirror.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932"
+ integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==
randombytes@^2.1.0:
version "2.1.0"
- resolved "https://registry.nlark.com/randombytes/download/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a"
- integrity sha1-32+ENy8CcNxlzfYpE0mrekc9Tyo=
+ resolved "https://registry.npmmirror.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a"
+ integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==
dependencies:
safe-buffer "^5.1.0"
range-parser@1.2.0:
version "1.2.0"
- resolved "https://registry.nlark.com/range-parser/download/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e"
- integrity sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=
+ resolved "https://registry.npmmirror.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e"
+ integrity sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A==
range-parser@^1.2.1, range-parser@~1.2.1:
version "1.2.1"
- resolved "https://registry.nlark.com/range-parser/download/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031"
- integrity sha1-PPNwI9GZ4cJNGlW4SADC8+ZGgDE=
+ resolved "https://registry.npmmirror.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031"
+ integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==
raw-body@2.4.2:
version "2.4.2"
- resolved "https://registry.npmmirror.com/raw-body/download/raw-body-2.4.2.tgz?cache=0&sync_timestamp=1637116848060&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fraw-body%2Fdownload%2Fraw-body-2.4.2.tgz#baf3e9c21eebced59dd6533ac872b71f7b61cb32"
+ resolved "https://registry.npmmirror.com/raw-body/-/raw-body-2.4.2.tgz#baf3e9c21eebced59dd6533ac872b71f7b61cb32"
integrity sha512-RPMAFUJP19WIet/99ngh6Iv8fzAbqum4Li7AD6DtGaW2RpMB/11xDoalPiJMTbu6I3hkbMVkATvZrqb9EEqeeQ==
dependencies:
bytes "3.1.1"
@@ -6237,16 +6268,16 @@ raw-body@2.4.2:
raw-loader@^4.0.2:
version "4.0.2"
- resolved "https://registry.npm.taobao.org/raw-loader/download/raw-loader-4.0.2.tgz#1aac6b7d1ad1501e66efdac1522c73e59a584eb6"
- integrity sha1-GqxrfRrRUB5m79rBUixz5ZpYTrY=
+ resolved "https://registry.npmmirror.com/raw-loader/-/raw-loader-4.0.2.tgz#1aac6b7d1ad1501e66efdac1522c73e59a584eb6"
+ integrity sha512-ZnScIV3ag9A4wPX/ZayxL/jZH+euYb6FcUinPcgiQW0+UBtEv0O6Q3lGd3cqJ+GHH+rksEv3Pj99oxJ3u3VIKA==
dependencies:
loader-utils "^2.0.0"
schema-utils "^3.0.0"
rc@^1.2.8:
version "1.2.8"
- resolved "https://registry.nlark.com/rc/download/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed"
- integrity sha1-zZJL9SAKB1uDwYjNa54hG3/A0+0=
+ resolved "https://registry.npmmirror.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed"
+ integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==
dependencies:
deep-extend "^0.6.0"
ini "~1.3.0"
@@ -6255,8 +6286,8 @@ rc@^1.2.8:
react-color@^2.19.3:
version "2.19.3"
- resolved "https://registry.npmmirror.com/react-color/download/react-color-2.19.3.tgz#ec6c6b4568312a3c6a18420ab0472e146aa5683d"
- integrity sha1-7GxrRWgxKjxqGEIKsEcuFGqlaD0=
+ resolved "https://registry.npmmirror.com/react-color/-/react-color-2.19.3.tgz#ec6c6b4568312a3c6a18420ab0472e146aa5683d"
+ integrity sha512-LEeGE/ZzNLIsFWa1TMe8y5VYqr7bibneWmvJwm1pCn/eNmrabWDh659JSPn9BuaMpEfU83WTOJfnCcjDZwNQTA==
dependencies:
"@icons/material" "^0.2.4"
lodash "^4.17.15"
@@ -6268,13 +6299,13 @@ react-color@^2.19.3:
react-cool-onclickoutside@^1.6.2:
version "1.7.0"
- resolved "https://registry.npmmirror.com/react-cool-onclickoutside/download/react-cool-onclickoutside-1.7.0.tgz#abc844e14852220fe15f81d7ef44976d15cd9980"
- integrity sha1-q8hE4UhSIg/hX4HX70SXbRXNmYA=
+ resolved "https://registry.npmmirror.com/react-cool-onclickoutside/-/react-cool-onclickoutside-1.7.0.tgz#abc844e14852220fe15f81d7ef44976d15cd9980"
+ integrity sha512-HVZK2155Unee+enpoHKyYP2UdQK69thw90XAOUCjvJBcgRSgfRPgWWt/W1dYzoGp3+nleAa8SJxF1d4FMA4Qmw==
react-dev-utils@12.0.0-next.47:
version "12.0.0-next.47"
- resolved "https://registry.npmmirror.com/react-dev-utils/download/react-dev-utils-12.0.0-next.47.tgz#e55c31a05eb30cfd69ca516e8b87d61724e880fb"
- integrity sha1-5VwxoF6zDP1pylFui4fWFyTogPs=
+ resolved "https://registry.npmmirror.com/react-dev-utils/-/react-dev-utils-12.0.0-next.47.tgz#e55c31a05eb30cfd69ca516e8b87d61724e880fb"
+ integrity sha512-PsE71vP15TZMmp/RZKOJC4fYD5Pvt0+wCoyG3QHclto0d4FyIJI78xGRICOOThZFROqgXYlZP6ddmeybm+jO4w==
dependencies:
"@babel/code-frame" "^7.10.4"
address "^1.1.2"
@@ -6303,7 +6334,7 @@ react-dev-utils@12.0.0-next.47:
react-dom@^17.0.1:
version "17.0.2"
- resolved "https://registry.npmmirror.com/react-dom/download/react-dom-17.0.2.tgz#ecffb6845e3ad8dbfcdc498f0d0a939736502c23"
+ resolved "https://registry.npmmirror.com/react-dom/-/react-dom-17.0.2.tgz#ecffb6845e3ad8dbfcdc498f0d0a939736502c23"
integrity sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==
dependencies:
loose-envify "^1.1.0"
@@ -6312,23 +6343,23 @@ react-dom@^17.0.1:
react-error-overlay@7.0.0-next.54+1465357b:
version "7.0.0-next.54"
- resolved "https://registry.npmmirror.com/react-error-overlay/download/react-error-overlay-7.0.0-next.54.tgz#c1eb5ab86aee15e9552e6d97897b08f2bd06d140"
- integrity sha1-wetauGruFelVLm2XiXsI8r0G0UA=
+ resolved "https://registry.npmmirror.com/react-error-overlay/-/react-error-overlay-7.0.0-next.54.tgz#c1eb5ab86aee15e9552e6d97897b08f2bd06d140"
+ integrity sha512-b96CiTnZahXPDNH9MKplvt5+jD+BkxDw7q5R3jnkUXze/ux1pLv32BBZmlj0OfCUeMqyz4sAmF+0ccJGVMlpXw==
react-error-overlay@^6.0.9:
version "6.0.10"
- resolved "https://registry.npmmirror.com/react-error-overlay/download/react-error-overlay-6.0.10.tgz#0fe26db4fa85d9dbb8624729580e90e7159a59a6"
+ resolved "https://registry.npmmirror.com/react-error-overlay/-/react-error-overlay-6.0.10.tgz#0fe26db4fa85d9dbb8624729580e90e7159a59a6"
integrity sha512-mKR90fX7Pm5seCOfz8q9F+66VCc1PGsWSBxKbITjfKVQHMNF2zudxHnMdJiB1fRCb+XsbQV9sO9DCkgsMQgBIA==
react-fast-compare@^3.1.1:
version "3.2.0"
- resolved "https://registry.npmmirror.com/react-fast-compare/download/react-fast-compare-3.2.0.tgz#641a9da81b6a6320f270e89724fb45a0b39e43bb"
- integrity sha1-ZBqdqBtqYyDycOiXJPtFoLOeQ7s=
+ resolved "https://registry.npmmirror.com/react-fast-compare/-/react-fast-compare-3.2.0.tgz#641a9da81b6a6320f270e89724fb45a0b39e43bb"
+ integrity sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA==
react-helmet@^6.1.0:
version "6.1.0"
- resolved "https://registry.nlark.com/react-helmet/download/react-helmet-6.1.0.tgz#a750d5165cb13cf213e44747502652e794468726"
- integrity sha1-p1DVFlyxPPIT5EdHUCZS55RGhyY=
+ resolved "https://registry.npmmirror.com/react-helmet/-/react-helmet-6.1.0.tgz#a750d5165cb13cf213e44747502652e794468726"
+ integrity sha512-4uMzEY9nlDlgxr61NL3XbKRy1hEkXmKNXhjbAIOVw5vcFrsdYbH2FEwcNyWvWinl103nXgzYNlns9ca+8kFiWw==
dependencies:
object-assign "^4.1.1"
prop-types "^15.7.2"
@@ -6337,26 +6368,26 @@ react-helmet@^6.1.0:
react-is@^16.13.1, react-is@^16.6.0, react-is@^16.7.0:
version "16.13.1"
- resolved "https://registry.npmmirror.com/react-is/download/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
- integrity sha1-eJcppNw23imZ3BVt1sHZwYzqVqQ=
+ resolved "https://registry.npmmirror.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
+ integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
react-loadable-ssr-addon-v5-slorber@^1.0.1:
version "1.0.1"
- resolved "https://registry.nlark.com/react-loadable-ssr-addon-v5-slorber/download/react-loadable-ssr-addon-v5-slorber-1.0.1.tgz#2cdc91e8a744ffdf9e3556caabeb6e4278689883"
- integrity sha1-LNyR6KdE/9+eNVbKq+tuQnhomIM=
+ resolved "https://registry.npmmirror.com/react-loadable-ssr-addon-v5-slorber/-/react-loadable-ssr-addon-v5-slorber-1.0.1.tgz#2cdc91e8a744ffdf9e3556caabeb6e4278689883"
+ integrity sha512-lq3Lyw1lGku8zUEJPDxsNm1AfYHBrO9Y1+olAYwpUJ2IGFBskM0DMKok97A6LWUpHm+o7IvQBOWu9MLenp9Z+A==
dependencies:
"@babel/runtime" "^7.10.3"
react-router-config@^5.1.1:
version "5.1.1"
- resolved "https://registry.npmmirror.com/react-router-config/download/react-router-config-5.1.1.tgz#0f4263d1a80c6b2dc7b9c1902c9526478194a988"
- integrity sha1-D0Jj0agMay3HucGQLJUmR4GUqYg=
+ resolved "https://registry.npmmirror.com/react-router-config/-/react-router-config-5.1.1.tgz#0f4263d1a80c6b2dc7b9c1902c9526478194a988"
+ integrity sha512-DuanZjaD8mQp1ppHjgnnUnyOlqYXZVjnov/JzFhjLEwd3Z4dYjMSnqrEzzGThH47vpCOqPPwJM2FtthLeJ8Pbg==
dependencies:
"@babel/runtime" "^7.1.2"
react-router-dom@^5.2.0:
version "5.3.0"
- resolved "https://registry.npmmirror.com/react-router-dom/download/react-router-dom-5.3.0.tgz#da1bfb535a0e89a712a93b97dd76f47ad1f32363"
+ resolved "https://registry.npmmirror.com/react-router-dom/-/react-router-dom-5.3.0.tgz#da1bfb535a0e89a712a93b97dd76f47ad1f32363"
integrity sha512-ObVBLjUZsphUUMVycibxgMdh5jJ1e3o+KpAZBVeHcNQZ4W+uUGGWsokurzlF4YOldQYRQL4y6yFRWM4m3svmuQ==
dependencies:
"@babel/runtime" "^7.12.13"
@@ -6369,7 +6400,7 @@ react-router-dom@^5.2.0:
react-router@5.2.1, react-router@^5.2.0:
version "5.2.1"
- resolved "https://registry.npmmirror.com/react-router/download/react-router-5.2.1.tgz#4d2e4e9d5ae9425091845b8dbc6d9d276239774d"
+ resolved "https://registry.npmmirror.com/react-router/-/react-router-5.2.1.tgz#4d2e4e9d5ae9425091845b8dbc6d9d276239774d"
integrity sha512-lIboRiOtDLFdg1VTemMwud9vRVuOCZmUIT/7lUoZiSpPODiiH1UQlfXy+vPLC/7IWdFYnhRwAyNqA/+I7wnvKQ==
dependencies:
"@babel/runtime" "^7.12.13"
@@ -6385,17 +6416,17 @@ react-router@5.2.1, react-router@^5.2.0:
react-side-effect@^2.1.0:
version "2.1.1"
- resolved "https://registry.nlark.com/react-side-effect/download/react-side-effect-2.1.1.tgz#66c5701c3e7560ab4822a4ee2742dee215d72eb3"
- integrity sha1-ZsVwHD51YKtIIqTuJ0Le4hXXLrM=
+ resolved "https://registry.npmmirror.com/react-side-effect/-/react-side-effect-2.1.1.tgz#66c5701c3e7560ab4822a4ee2742dee215d72eb3"
+ integrity sha512-2FoTQzRNTncBVtnzxFOk2mCpcfxQpenBMbk5kSVBg5UcPqV9fRbgY2zhb7GTWWOlpFmAxhClBDlIq8Rsubz1yQ==
react-use-pagination@^2.0.1:
version "2.0.1"
- resolved "https://registry.npmmirror.com/react-use-pagination/download/react-use-pagination-2.0.1.tgz#debc6322cd3f14a4cdf082d913f7736d5cbed170"
- integrity sha1-3rxjIs0/FKTN8ILZE/dzbVy+0XA=
+ resolved "https://registry.npmmirror.com/react-use-pagination/-/react-use-pagination-2.0.1.tgz#debc6322cd3f14a4cdf082d913f7736d5cbed170"
+ integrity sha512-bo7vI2oZ/+PJJozN7DLWPkewrULLoHb8a6WO3dGudJfEKnj8BVZVbJPkvn5jtydhJ5xi0t0W7xI06XlWUe8Jbw==
react@^17.0.1:
version "17.0.2"
- resolved "https://registry.npmmirror.com/react/download/react-17.0.2.tgz#d0b5cc516d29eb3eee383f75b62864cfb6800037"
+ resolved "https://registry.npmmirror.com/react/-/react-17.0.2.tgz#d0b5cc516d29eb3eee383f75b62864cfb6800037"
integrity sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==
dependencies:
loose-envify "^1.1.0"
@@ -6403,22 +6434,22 @@ react@^17.0.1:
reactcss@^1.2.0:
version "1.2.3"
- resolved "https://registry.npmmirror.com/reactcss/download/reactcss-1.2.3.tgz#c00013875e557b1cf0dfd9a368a1c3dab3b548dd"
+ resolved "https://registry.npmmirror.com/reactcss/-/reactcss-1.2.3.tgz#c00013875e557b1cf0dfd9a368a1c3dab3b548dd"
integrity sha512-KiwVUcFu1RErkI97ywr8nvx8dNOpT03rbnma0SSalTYjkrPYaEajR4a/MRt6DZ46K6arDRbWMNHF+xH7G7n/8A==
dependencies:
lodash "^4.0.1"
read-cache@^1.0.0:
version "1.0.0"
- resolved "https://registry.nlark.com/read-cache/download/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774"
- integrity sha1-5mTvMRYRZsl1HNvo28+GtftY93Q=
+ resolved "https://registry.npmmirror.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774"
+ integrity sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==
dependencies:
pify "^2.3.0"
readable-stream@^2.0.1:
version "2.3.7"
- resolved "https://registry.npmmirror.com/readable-stream/download/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
- integrity sha1-Hsoc9xGu+BTAT2IlKjamL2yyO1c=
+ resolved "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
+ integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==
dependencies:
core-util-is "~1.0.0"
inherits "~2.0.3"
@@ -6430,8 +6461,8 @@ readable-stream@^2.0.1:
readable-stream@^3.0.6, readable-stream@^3.1.1:
version "3.6.0"
- resolved "https://registry.npmmirror.com/readable-stream/download/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198"
- integrity sha1-M3u9o63AcGvT4CRCaihtS0sskZg=
+ resolved "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198"
+ integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==
dependencies:
inherits "^2.0.3"
string_decoder "^1.1.1"
@@ -6439,66 +6470,73 @@ readable-stream@^3.0.6, readable-stream@^3.1.1:
readdirp@~3.6.0:
version "3.6.0"
- resolved "https://registry.nlark.com/readdirp/download/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7"
- integrity sha1-dKNwvYVxFuJFspzJc0DNQxoCpsc=
+ resolved "https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7"
+ integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==
dependencies:
picomatch "^2.2.1"
reading-time@^1.5.0:
version "1.5.0"
- resolved "https://registry.npmmirror.com/reading-time/download/reading-time-1.5.0.tgz#d2a7f1b6057cb2e169beaf87113cc3411b5bc5bb"
- integrity sha1-0qfxtgV8suFpvq+HETzDQRtbxbs=
+ resolved "https://registry.npmmirror.com/reading-time/-/reading-time-1.5.0.tgz#d2a7f1b6057cb2e169beaf87113cc3411b5bc5bb"
+ integrity sha512-onYyVhBNr4CmAxFsKS7bz+uTLRakypIe4R+5A824vBSkQy/hB3fZepoVEf8OVAxzLvK+H/jm9TzpI3ETSm64Kg==
rechoir@^0.6.2:
version "0.6.2"
- resolved "https://registry.nlark.com/rechoir/download/rechoir-0.6.2.tgz?cache=0&sync_timestamp=1627101702123&other_urls=https%3A%2F%2Fregistry.nlark.com%2Frechoir%2Fdownload%2Frechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384"
- integrity sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=
+ resolved "https://registry.npmmirror.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384"
+ integrity sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==
dependencies:
resolve "^1.1.6"
recursive-readdir@^2.2.2:
version "2.2.2"
- resolved "https://registry.nlark.com/recursive-readdir/download/recursive-readdir-2.2.2.tgz#9946fb3274e1628de6e36b2f6714953b4845094f"
- integrity sha1-mUb7MnThYo3m42svZxSVO0hFCU8=
+ resolved "https://registry.npmmirror.com/recursive-readdir/-/recursive-readdir-2.2.2.tgz#9946fb3274e1628de6e36b2f6714953b4845094f"
+ integrity sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg==
dependencies:
minimatch "3.0.4"
+regenerate-unicode-properties@^10.0.1:
+ version "10.0.1"
+ resolved "https://registry.npmmirror.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz#7f442732aa7934a3740c779bb9b3340dccc1fb56"
+ integrity sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==
+ dependencies:
+ regenerate "^1.4.2"
+
regenerate-unicode-properties@^9.0.0:
version "9.0.0"
- resolved "https://registry.npmmirror.com/regenerate-unicode-properties/download/regenerate-unicode-properties-9.0.0.tgz#54d09c7115e1f53dc2314a974b32c1c344efe326"
- integrity sha1-VNCccRXh9T3CMUqXSzLBw0Tv4yY=
+ resolved "https://registry.npmmirror.com/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz#54d09c7115e1f53dc2314a974b32c1c344efe326"
+ integrity sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA==
dependencies:
regenerate "^1.4.2"
regenerate@^1.4.2:
version "1.4.2"
- resolved "https://registry.nlark.com/regenerate/download/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a"
- integrity sha1-uTRtiCfo9aMve6KWN9OYtpAUhIo=
+ resolved "https://registry.npmmirror.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a"
+ integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==
regenerator-runtime@^0.13.4:
version "0.13.9"
- resolved "https://registry.nlark.com/regenerator-runtime/download/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52"
- integrity sha1-iSV0Kpj/2QgUmI11Zq0wyjsmO1I=
+ resolved "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52"
+ integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==
regenerator-transform@^0.14.2:
version "0.14.5"
- resolved "https://registry.nlark.com/regenerator-transform/download/regenerator-transform-0.14.5.tgz?cache=0&sync_timestamp=1627057502723&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fregenerator-transform%2Fdownload%2Fregenerator-transform-0.14.5.tgz#c98da154683671c9c4dcb16ece736517e1b7feb4"
- integrity sha1-yY2hVGg2ccnE3LFuznNlF+G3/rQ=
+ resolved "https://registry.npmmirror.com/regenerator-transform/-/regenerator-transform-0.14.5.tgz#c98da154683671c9c4dcb16ece736517e1b7feb4"
+ integrity sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==
dependencies:
"@babel/runtime" "^7.8.4"
regexp.prototype.flags@^1.2.0:
- version "1.3.1"
- resolved "https://registry.nlark.com/regexp.prototype.flags/download/regexp.prototype.flags-1.3.1.tgz#7ef352ae8d159e758c0eadca6f8fcb4eef07be26"
- integrity sha1-fvNSro0VnnWMDq3Kb4/LTu8HviY=
+ version "1.4.1"
+ resolved "https://registry.npmmirror.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.1.tgz#b3f4c0059af9e47eca9f3f660e51d81307e72307"
+ integrity sha512-pMR7hBVUUGI7PMA37m2ofIdQCsomVnas+Jn5UPGAHQ+/LlwKm/aTLJHdasmHRzlfeZwHiAOaRSo2rbBDm3nNUQ==
dependencies:
call-bind "^1.0.2"
define-properties "^1.1.3"
-regexpu-core@^4.5.4, regexpu-core@^4.7.1:
+regexpu-core@^4.5.4:
version "4.8.0"
- resolved "https://registry.nlark.com/regexpu-core/download/regexpu-core-4.8.0.tgz?cache=0&sync_timestamp=1631619113277&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fregexpu-core%2Fdownload%2Fregexpu-core-4.8.0.tgz#e5605ba361b67b1718478501327502f4479a98f0"
- integrity sha1-5WBbo2G2excYR4UBMnUC9EeamPA=
+ resolved "https://registry.npmmirror.com/regexpu-core/-/regexpu-core-4.8.0.tgz#e5605ba361b67b1718478501327502f4479a98f0"
+ integrity sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg==
dependencies:
regenerate "^1.4.2"
regenerate-unicode-properties "^9.0.0"
@@ -6507,36 +6545,60 @@ regexpu-core@^4.5.4, regexpu-core@^4.7.1:
unicode-match-property-ecmascript "^2.0.0"
unicode-match-property-value-ecmascript "^2.0.0"
+regexpu-core@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.npmmirror.com/regexpu-core/-/regexpu-core-5.0.1.tgz#c531122a7840de743dcf9c83e923b5560323ced3"
+ integrity sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw==
+ dependencies:
+ regenerate "^1.4.2"
+ regenerate-unicode-properties "^10.0.1"
+ regjsgen "^0.6.0"
+ regjsparser "^0.8.2"
+ unicode-match-property-ecmascript "^2.0.0"
+ unicode-match-property-value-ecmascript "^2.0.0"
+
registry-auth-token@^4.0.0:
version "4.2.1"
- resolved "https://registry.nlark.com/registry-auth-token/download/registry-auth-token-4.2.1.tgz?cache=0&sync_timestamp=1622604543458&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fregistry-auth-token%2Fdownload%2Fregistry-auth-token-4.2.1.tgz#6d7b4006441918972ccd5fedcd41dc322c79b250"
- integrity sha1-bXtABkQZGJcszV/tzUHcMix5slA=
+ resolved "https://registry.npmmirror.com/registry-auth-token/-/registry-auth-token-4.2.1.tgz#6d7b4006441918972ccd5fedcd41dc322c79b250"
+ integrity sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==
dependencies:
rc "^1.2.8"
registry-url@^5.0.0:
version "5.1.0"
- resolved "https://registry.nlark.com/registry-url/download/registry-url-5.1.0.tgz#e98334b50d5434b81136b44ec638d9c2009c5009"
- integrity sha1-6YM0tQ1UNLgRNrROxjjZwgCcUAk=
+ resolved "https://registry.npmmirror.com/registry-url/-/registry-url-5.1.0.tgz#e98334b50d5434b81136b44ec638d9c2009c5009"
+ integrity sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==
dependencies:
rc "^1.2.8"
regjsgen@^0.5.2:
version "0.5.2"
- resolved "https://registry.npmmirror.com/regjsgen/download/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733"
- integrity sha1-kv8pX7He7L9uzaslQ9IH6RqjNzM=
+ resolved "https://registry.npmmirror.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733"
+ integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==
+
+regjsgen@^0.6.0:
+ version "0.6.0"
+ resolved "https://registry.npmmirror.com/regjsgen/-/regjsgen-0.6.0.tgz#83414c5354afd7d6627b16af5f10f41c4e71808d"
+ integrity sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==
regjsparser@^0.7.0:
version "0.7.0"
- resolved "https://registry.npmmirror.com/regjsparser/download/regjsparser-0.7.0.tgz#a6b667b54c885e18b52554cb4960ef71187e9968"
- integrity sha1-prZntUyIXhi1JVTLSWDvcRh+mWg=
+ resolved "https://registry.npmmirror.com/regjsparser/-/regjsparser-0.7.0.tgz#a6b667b54c885e18b52554cb4960ef71187e9968"
+ integrity sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ==
+ dependencies:
+ jsesc "~0.5.0"
+
+regjsparser@^0.8.2:
+ version "0.8.4"
+ resolved "https://registry.npmmirror.com/regjsparser/-/regjsparser-0.8.4.tgz#8a14285ffcc5de78c5b95d62bbf413b6bc132d5f"
+ integrity sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==
dependencies:
jsesc "~0.5.0"
rehype-parse@^6.0.2:
version "6.0.2"
- resolved "https://registry.nlark.com/rehype-parse/download/rehype-parse-6.0.2.tgz#aeb3fdd68085f9f796f1d3137ae2b85a98406964"
- integrity sha1-rrP91oCF+feW8dMTeuK4WphAaWQ=
+ resolved "https://registry.npmmirror.com/rehype-parse/-/rehype-parse-6.0.2.tgz#aeb3fdd68085f9f796f1d3137ae2b85a98406964"
+ integrity sha512-0S3CpvpTAgGmnz8kiCyFLGuW5yA4OQhyNTm/nwPopZ7+PI11WnGl1TTWTGv/2hPEe/g2jRLlhVVSsoDH8waRug==
dependencies:
hast-util-from-parse5 "^5.0.0"
parse5 "^5.0.0"
@@ -6544,13 +6606,13 @@ rehype-parse@^6.0.2:
relateurl@^0.2.7:
version "0.2.7"
- resolved "https://registry.nlark.com/relateurl/download/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9"
- integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=
+ resolved "https://registry.npmmirror.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9"
+ integrity sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==
remark-admonitions@^1.2.1:
version "1.2.1"
- resolved "https://registry.npm.taobao.org/remark-admonitions/download/remark-admonitions-1.2.1.tgz#87caa1a442aa7b4c0cafa04798ed58a342307870"
- integrity sha1-h8qhpEKqe0wMr6BHmO1Yo0IweHA=
+ resolved "https://registry.npmmirror.com/remark-admonitions/-/remark-admonitions-1.2.1.tgz#87caa1a442aa7b4c0cafa04798ed58a342307870"
+ integrity sha512-Ji6p68VDvD+H1oS95Fdx9Ar5WA2wcDA4kwrrhVU7fGctC6+d3uiMICu7w7/2Xld+lnU7/gi+432+rRbup5S8ow==
dependencies:
rehype-parse "^6.0.2"
unified "^8.4.2"
@@ -6558,8 +6620,8 @@ remark-admonitions@^1.2.1:
remark-emoji@^2.1.0:
version "2.2.0"
- resolved "https://registry.npmmirror.com/remark-emoji/download/remark-emoji-2.2.0.tgz#1c702090a1525da5b80e15a8f963ef2c8236cac7"
- integrity sha1-HHAgkKFSXaW4DhWo+WPvLII2ysc=
+ resolved "https://registry.npmmirror.com/remark-emoji/-/remark-emoji-2.2.0.tgz#1c702090a1525da5b80e15a8f963ef2c8236cac7"
+ integrity sha512-P3cj9s5ggsUvWw5fS2uzCHJMGuXYRb0NnZqYlNecewXt8QBU9n5vW3DUUKOhepS8F9CwdMx9B8a3i7pqFWAI5w==
dependencies:
emoticon "^3.2.0"
node-emoji "^1.10.0"
@@ -6567,27 +6629,27 @@ remark-emoji@^2.1.0:
remark-footnotes@2.0.0:
version "2.0.0"
- resolved "https://registry.nlark.com/remark-footnotes/download/remark-footnotes-2.0.0.tgz#9001c4c2ffebba55695d2dd80ffb8b82f7e6303f"
- integrity sha1-kAHEwv/rulVpXS3YD/uLgvfmMD8=
+ resolved "https://registry.npmmirror.com/remark-footnotes/-/remark-footnotes-2.0.0.tgz#9001c4c2ffebba55695d2dd80ffb8b82f7e6303f"
+ integrity sha512-3Clt8ZMH75Ayjp9q4CorNeyjwIxHFcTkaektplKGl2A1jNGEUey8cKL0ZC5vJwfcD5GFGsNLImLG/NGzWIzoMQ==
remark-mdx-remove-exports@^1.6.22:
version "1.6.22"
- resolved "https://registry.npmmirror.com/remark-mdx-remove-exports/download/remark-mdx-remove-exports-1.6.22.tgz#9e34f3d02c9c54b02ca0a1fde946449338d06ecb"
- integrity sha1-njTz0CycVLAsoKH96UZEkzjQbss=
+ resolved "https://registry.npmmirror.com/remark-mdx-remove-exports/-/remark-mdx-remove-exports-1.6.22.tgz#9e34f3d02c9c54b02ca0a1fde946449338d06ecb"
+ integrity sha512-7g2uiTmTGfz5QyVb+toeX25frbk1Y6yd03RXGPtqx0+DVh86Gb7MkNYbk7H2X27zdZ3CQv1W/JqlFO0Oo8IxVA==
dependencies:
unist-util-remove "2.0.0"
remark-mdx-remove-imports@^1.6.22:
version "1.6.22"
- resolved "https://registry.npmmirror.com/remark-mdx-remove-imports/download/remark-mdx-remove-imports-1.6.22.tgz#79f711c95359cff437a120d1fbdc1326ec455826"
- integrity sha1-efcRyVNZz/Q3oSDR+9wTJuxFWCY=
+ resolved "https://registry.npmmirror.com/remark-mdx-remove-imports/-/remark-mdx-remove-imports-1.6.22.tgz#79f711c95359cff437a120d1fbdc1326ec455826"
+ integrity sha512-lmjAXD8Ltw0TsvBzb45S+Dxx7LTJAtDaMneMAv8LAUIPEyYoKkmGbmVsiF0/pY6mhM1Q16swCmu1TN+ie/vn/A==
dependencies:
unist-util-remove "2.0.0"
remark-mdx@1.6.22:
version "1.6.22"
- resolved "https://registry.npmmirror.com/remark-mdx/download/remark-mdx-1.6.22.tgz#06a8dab07dcfdd57f3373af7f86bd0e992108bbd"
- integrity sha1-BqjasH3P3VfzNzr3+GvQ6ZIQi70=
+ resolved "https://registry.npmmirror.com/remark-mdx/-/remark-mdx-1.6.22.tgz#06a8dab07dcfdd57f3373af7f86bd0e992108bbd"
+ integrity sha512-phMHBJgeV76uyFkH4rvzCftLfKCr2RZuF+/gmVcaKrpsihyzmhXjA0BEMDaPTXG5y8qZOKPVo83NAOX01LPnOQ==
dependencies:
"@babel/core" "7.12.9"
"@babel/helper-plugin-utils" "7.10.4"
@@ -6600,8 +6662,8 @@ remark-mdx@1.6.22:
remark-parse@8.0.3:
version "8.0.3"
- resolved "https://registry.npmmirror.com/remark-parse/download/remark-parse-8.0.3.tgz?cache=0&sync_timestamp=1637259989125&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fremark-parse%2Fdownload%2Fremark-parse-8.0.3.tgz#9c62aa3b35b79a486454c690472906075f40c7e1"
- integrity sha1-nGKqOzW3mkhkVMaQRykGB19Ax+E=
+ resolved "https://registry.npmmirror.com/remark-parse/-/remark-parse-8.0.3.tgz#9c62aa3b35b79a486454c690472906075f40c7e1"
+ integrity sha512-E1K9+QLGgggHxCQtLt++uXltxEprmWzNfg+MxpfHsZlrddKzZ/hZyWHDbK3/Ap8HJQqYJRXP+jHczdL6q6i85Q==
dependencies:
ccount "^1.0.0"
collapse-white-space "^1.0.2"
@@ -6622,15 +6684,15 @@ remark-parse@8.0.3:
remark-squeeze-paragraphs@4.0.0:
version "4.0.0"
- resolved "https://registry.npmmirror.com/remark-squeeze-paragraphs/download/remark-squeeze-paragraphs-4.0.0.tgz#76eb0e085295131c84748c8e43810159c5653ead"
- integrity sha1-dusOCFKVExyEdIyOQ4EBWcVlPq0=
+ resolved "https://registry.npmmirror.com/remark-squeeze-paragraphs/-/remark-squeeze-paragraphs-4.0.0.tgz#76eb0e085295131c84748c8e43810159c5653ead"
+ integrity sha512-8qRqmL9F4nuLPIgl92XUuxI3pFxize+F1H0e/W3llTk0UsjJaj01+RrirkMw7P21RKe4X6goQhYRSvNWX+70Rw==
dependencies:
mdast-squeeze-paragraphs "^4.0.0"
renderkid@^3.0.0:
version "3.0.0"
- resolved "https://registry.npmmirror.com/renderkid/download/renderkid-3.0.0.tgz#5fd823e4d6951d37358ecc9a58b1f06836b6268a"
- integrity sha1-X9gj5NaVHTc1jsyaWLHwaDa2Joo=
+ resolved "https://registry.npmmirror.com/renderkid/-/renderkid-3.0.0.tgz#5fd823e4d6951d37358ecc9a58b1f06836b6268a"
+ integrity sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==
dependencies:
css-select "^4.1.3"
dom-converter "^0.2.0"
@@ -6640,123 +6702,123 @@ renderkid@^3.0.0:
repeat-string@^1.5.4:
version "1.6.1"
- resolved "https://registry.nlark.com/repeat-string/download/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
- integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc=
+ resolved "https://registry.npmmirror.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
+ integrity sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==
require-from-string@^2.0.2:
version "2.0.2"
- resolved "https://registry.nlark.com/require-from-string/download/require-from-string-2.0.2.tgz?cache=0&sync_timestamp=1622605305570&other_urls=https%3A%2F%2Fregistry.nlark.com%2Frequire-from-string%2Fdownload%2Frequire-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909"
- integrity sha1-iaf92TgmEmcxjq/hT5wy5ZjDaQk=
+ resolved "https://registry.npmmirror.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909"
+ integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==
"require-like@>= 0.1.1":
version "0.1.2"
- resolved "https://registry.nlark.com/require-like/download/require-like-0.1.2.tgz#ad6f30c13becd797010c468afa775c0c0a6b47fa"
- integrity sha1-rW8wwTvs15cBDEaK+ndcDAprR/o=
+ resolved "https://registry.npmmirror.com/require-like/-/require-like-0.1.2.tgz#ad6f30c13becd797010c468afa775c0c0a6b47fa"
+ integrity sha512-oyrU88skkMtDdauHDuKVrgR+zuItqr6/c//FXzvmxRGMexSDc6hNvJInGW3LL46n+8b50RykrvwSUIIQH2LQ5A==
requires-port@^1.0.0:
version "1.0.0"
- resolved "https://registry.nlark.com/requires-port/download/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff"
- integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=
+ resolved "https://registry.npmmirror.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff"
+ integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==
resize-observer-polyfill@^1.5.1:
version "1.5.1"
- resolved "https://registry.nlark.com/resize-observer-polyfill/download/resize-observer-polyfill-1.5.1.tgz#0e9020dd3d21024458d4ebd27e23e40269810464"
- integrity sha1-DpAg3T0hAkRY1OvSfiPkAmmBBGQ=
+ resolved "https://registry.npmmirror.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz#0e9020dd3d21024458d4ebd27e23e40269810464"
+ integrity sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==
resolve-from@^4.0.0:
version "4.0.0"
- resolved "https://registry.nlark.com/resolve-from/download/resolve-from-4.0.0.tgz?cache=0&sync_timestamp=1622605305717&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fresolve-from%2Fdownload%2Fresolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
- integrity sha1-SrzYUq0y3Xuqv+m0DgCjbbXzkuY=
+ resolved "https://registry.npmmirror.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
+ integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==
resolve-pathname@^3.0.0:
version "3.0.0"
- resolved "https://registry.nlark.com/resolve-pathname/download/resolve-pathname-3.0.0.tgz#99d02224d3cf263689becbb393bc560313025dcd"
- integrity sha1-mdAiJNPPJjaJvsuzk7xWAxMCXc0=
+ resolved "https://registry.npmmirror.com/resolve-pathname/-/resolve-pathname-3.0.0.tgz#99d02224d3cf263689becbb393bc560313025dcd"
+ integrity sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==
-resolve@^1.1.6, resolve@^1.1.7, resolve@^1.14.2, resolve@^1.20.0, resolve@^1.3.2:
- version "1.21.0"
- resolved "https://registry.npmmirror.com/resolve/download/resolve-1.21.0.tgz#b51adc97f3472e6a5cf4444d34bc9d6b9037591f"
- integrity sha512-3wCbTpk5WJlyE4mSOtDLhqQmGFi0/TD9VPwmiolnk8U0wRgMEktqCXd3vy5buTO3tljvalNvKrjHEfrd2WpEKA==
+resolve@^1.1.6, resolve@^1.1.7, resolve@^1.14.2, resolve@^1.21.0, resolve@^1.3.2:
+ version "1.22.0"
+ resolved "https://registry.npmmirror.com/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198"
+ integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==
dependencies:
- is-core-module "^2.8.0"
+ is-core-module "^2.8.1"
path-parse "^1.0.7"
supports-preserve-symlinks-flag "^1.0.0"
responselike@^1.0.2:
version "1.0.2"
- resolved "https://registry.nlark.com/responselike/download/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7"
- integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=
+ resolved "https://registry.npmmirror.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7"
+ integrity sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==
dependencies:
lowercase-keys "^1.0.0"
retry@^0.13.1:
version "0.13.1"
- resolved "https://registry.nlark.com/retry/download/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658"
- integrity sha1-GFsVh6z2eRnWOzVzSeA1N7JIRlg=
+ resolved "https://registry.npmmirror.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658"
+ integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==
reusify@^1.0.4:
version "1.0.4"
- resolved "https://registry.nlark.com/reusify/download/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76"
- integrity sha1-kNo4Kx4SbvwCFG6QhFqI2xKSXXY=
+ resolved "https://registry.npmmirror.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76"
+ integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
rimraf@^3.0.2:
version "3.0.2"
- resolved "https://registry.npmmirror.com/rimraf/download/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a"
- integrity sha1-8aVAK6YiCtUswSgrrBrjqkn9Bho=
+ resolved "https://registry.npmmirror.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a"
+ integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==
dependencies:
glob "^7.1.3"
rtl-detect@^1.0.4:
version "1.0.4"
- resolved "https://registry.nlark.com/rtl-detect/download/rtl-detect-1.0.4.tgz#40ae0ea7302a150b96bc75af7d749607392ecac6"
- integrity sha1-QK4OpzAqFQuWvHWvfXSWBzkuysY=
+ resolved "https://registry.npmmirror.com/rtl-detect/-/rtl-detect-1.0.4.tgz#40ae0ea7302a150b96bc75af7d749607392ecac6"
+ integrity sha512-EBR4I2VDSSYr7PkBmFy04uhycIpDKp+21p/jARYXlCSjQksTBQcJ0HFUPOO79EPPH5JS6VAhiIQbycf0O3JAxQ==
run-parallel@^1.1.9:
version "1.2.0"
- resolved "https://registry.nlark.com/run-parallel/download/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee"
- integrity sha1-ZtE2jae9+SHrnZW9GpIp5/IaQ+4=
+ resolved "https://registry.npmmirror.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee"
+ integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==
dependencies:
queue-microtask "^1.2.2"
rxjs@^7.1.0:
- version "7.5.1"
- resolved "https://registry.npmmirror.com/rxjs/download/rxjs-7.5.1.tgz#af73df343cbcab37628197f43ea0c8256f54b157"
- integrity sha512-KExVEeZWxMZnZhUZtsJcFwz8IvPvgu4G2Z2QyqjZQzUGr32KDYuSxrEYO4w3tFFNbfLozcrKUTvTPi+E9ywJkQ==
+ version "7.5.2"
+ resolved "https://registry.npmmirror.com/rxjs/-/rxjs-7.5.2.tgz#11e4a3a1dfad85dbf7fb6e33cbba17668497490b"
+ integrity sha512-PwDt186XaL3QN5qXj/H9DGyHhP3/RYYgZZwqBv9Tv8rsAaiwFH1IsJJlcgD37J7UW5a6O67qX0KWKS3/pu0m4w==
dependencies:
tslib "^2.1.0"
safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
version "5.1.2"
- resolved "https://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
- integrity sha1-mR7GnSluAxN0fVm9/St0XDX4go0=
+ resolved "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
+ integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@~5.2.0:
version "5.2.1"
- resolved "https://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
- integrity sha1-Hq+fqb2x/dTsdfWPnNtOa3gn7sY=
+ resolved "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
+ integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
"safer-buffer@>= 2.1.2 < 3":
version "2.1.2"
- resolved "https://registry.nlark.com/safer-buffer/download/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
- integrity sha1-RPoWGwGHuVSd2Eu5GAL5vYOFzWo=
+ resolved "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
+ integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
sax@^1.2.4, sax@~1.2.4:
version "1.2.4"
- resolved "https://registry.nlark.com/sax/download/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
- integrity sha1-KBYjTiN4vdxOU1T6tcqold9xANk=
+ resolved "https://registry.npmmirror.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
+ integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==
scheduler@^0.20.2:
version "0.20.2"
- resolved "https://registry.npmmirror.com/scheduler/download/scheduler-0.20.2.tgz#4baee39436e34aa93b4874bddcbf0fe8b8b50e91"
- integrity sha1-S67jlDbjSqk7SHS93L8P6Li1DpE=
+ resolved "https://registry.npmmirror.com/scheduler/-/scheduler-0.20.2.tgz#4baee39436e34aa93b4874bddcbf0fe8b8b50e91"
+ integrity sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==
dependencies:
loose-envify "^1.1.0"
object-assign "^4.1.1"
schema-utils@2.7.0:
version "2.7.0"
- resolved "https://registry.npmmirror.com/schema-utils/download/schema-utils-2.7.0.tgz?cache=0&sync_timestamp=1637075894281&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fschema-utils%2Fdownload%2Fschema-utils-2.7.0.tgz#17151f76d8eae67fbbf77960c33c676ad9f4efc7"
- integrity sha1-FxUfdtjq5n+793lgwzxnatn078c=
+ resolved "https://registry.npmmirror.com/schema-utils/-/schema-utils-2.7.0.tgz#17151f76d8eae67fbbf77960c33c676ad9f4efc7"
+ integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==
dependencies:
"@types/json-schema" "^7.0.4"
ajv "^6.12.2"
@@ -6764,8 +6826,8 @@ schema-utils@2.7.0:
schema-utils@^2.6.5:
version "2.7.1"
- resolved "https://registry.npmmirror.com/schema-utils/download/schema-utils-2.7.1.tgz?cache=0&sync_timestamp=1637075894281&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fschema-utils%2Fdownload%2Fschema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7"
- integrity sha1-HKTzLRskxZDCA7jnpQvw6kzTlNc=
+ resolved "https://registry.npmmirror.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7"
+ integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==
dependencies:
"@types/json-schema" "^7.0.5"
ajv "^6.12.4"
@@ -6773,8 +6835,8 @@ schema-utils@^2.6.5:
schema-utils@^3.0.0, schema-utils@^3.1.0, schema-utils@^3.1.1:
version "3.1.1"
- resolved "https://registry.npmmirror.com/schema-utils/download/schema-utils-3.1.1.tgz?cache=0&sync_timestamp=1637075894281&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fschema-utils%2Fdownload%2Fschema-utils-3.1.1.tgz#bc74c4b6b6995c1d88f76a8b77bea7219e0c8281"
- integrity sha1-vHTEtraZXB2I92qLd76nIZ4MgoE=
+ resolved "https://registry.npmmirror.com/schema-utils/-/schema-utils-3.1.1.tgz#bc74c4b6b6995c1d88f76a8b77bea7219e0c8281"
+ integrity sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==
dependencies:
"@types/json-schema" "^7.0.8"
ajv "^6.12.5"
@@ -6782,7 +6844,7 @@ schema-utils@^3.0.0, schema-utils@^3.1.0, schema-utils@^3.1.1:
schema-utils@^4.0.0:
version "4.0.0"
- resolved "https://registry.npmmirror.com/schema-utils/download/schema-utils-4.0.0.tgz?cache=0&sync_timestamp=1637075894281&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fschema-utils%2Fdownload%2Fschema-utils-4.0.0.tgz#60331e9e3ae78ec5d16353c467c34b3a0a1d3df7"
+ resolved "https://registry.npmmirror.com/schema-utils/-/schema-utils-4.0.0.tgz#60331e9e3ae78ec5d16353c467c34b3a0a1d3df7"
integrity sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==
dependencies:
"@types/json-schema" "^7.0.9"
@@ -6792,56 +6854,56 @@ schema-utils@^4.0.0:
section-matter@^1.0.0:
version "1.0.0"
- resolved "https://registry.npm.taobao.org/section-matter/download/section-matter-1.0.0.tgz#e9041953506780ec01d59f292a19c7b850b84167"
- integrity sha1-6QQZU1BngOwB1Z8pKhnHuFC4QWc=
+ resolved "https://registry.npmmirror.com/section-matter/-/section-matter-1.0.0.tgz#e9041953506780ec01d59f292a19c7b850b84167"
+ integrity sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==
dependencies:
extend-shallow "^2.0.1"
kind-of "^6.0.0"
select-hose@^2.0.0:
version "2.0.0"
- resolved "https://registry.nlark.com/select-hose/download/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca"
- integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=
+ resolved "https://registry.npmmirror.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca"
+ integrity sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==
-selfsigned@^1.10.11:
- version "1.10.11"
- resolved "https://registry.nlark.com/selfsigned/download/selfsigned-1.10.11.tgz#24929cd906fe0f44b6d01fb23999a739537acbe9"
- integrity sha1-JJKc2Qb+D0S20B+yOZmnOVN6y+k=
+selfsigned@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/selfsigned/-/selfsigned-2.0.0.tgz#e927cd5377cbb0a1075302cff8df1042cc2bce5b"
+ integrity sha512-cUdFiCbKoa1mZ6osuJs2uDHrs0k0oprsKveFiiaBKCNq3SYyb5gs2HxhQyDNLCmL51ZZThqi4YNDpCK6GOP1iQ==
dependencies:
- node-forge "^0.10.0"
+ node-forge "^1.2.0"
semver-diff@^3.1.1:
version "3.1.1"
- resolved "https://registry.nlark.com/semver-diff/download/semver-diff-3.1.1.tgz#05f77ce59f325e00e2706afd67bb506ddb1ca32b"
- integrity sha1-Bfd85Z8yXgDicGr9Z7tQbdscoys=
+ resolved "https://registry.npmmirror.com/semver-diff/-/semver-diff-3.1.1.tgz#05f77ce59f325e00e2706afd67bb506ddb1ca32b"
+ integrity sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==
dependencies:
semver "^6.3.0"
semver@7.0.0:
version "7.0.0"
- resolved "https://registry.npm.taobao.org/semver/download/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e"
- integrity sha1-XzyjV2HkfgWyBsba/yz4FPAxa44=
+ resolved "https://registry.npmmirror.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e"
+ integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==
semver@^5.4.1:
version "5.7.1"
- resolved "https://registry.npm.taobao.org/semver/download/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
- integrity sha1-qVT5Ma66UI0we78Gnv8MAclhFvc=
+ resolved "https://registry.npmmirror.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
+ integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0:
version "6.3.0"
- resolved "https://registry.npm.taobao.org/semver/download/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
- integrity sha1-7gpkyK9ejO6mdoexM3YeG+y9HT0=
+ resolved "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
+ integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
semver@^7.3.2, semver@^7.3.4, semver@^7.3.5:
version "7.3.5"
- resolved "https://registry.npm.taobao.org/semver/download/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7"
- integrity sha1-C2Ich5NI2JmOSw5L6Us/EuYBjvc=
+ resolved "https://registry.npmmirror.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7"
+ integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==
dependencies:
lru-cache "^6.0.0"
send@0.17.2:
version "0.17.2"
- resolved "https://registry.npmmirror.com/send/download/send-0.17.2.tgz#926622f76601c41808012c8bf1688fe3906f7820"
+ resolved "https://registry.npmmirror.com/send/-/send-0.17.2.tgz#926622f76601c41808012c8bf1688fe3906f7820"
integrity sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==
dependencies:
debug "2.6.9"
@@ -6860,15 +6922,15 @@ send@0.17.2:
serialize-javascript@^6.0.0:
version "6.0.0"
- resolved "https://registry.nlark.com/serialize-javascript/download/serialize-javascript-6.0.0.tgz?cache=0&sync_timestamp=1624284194508&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fserialize-javascript%2Fdownload%2Fserialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8"
- integrity sha1-765diPRdeSQUHai1w6en5mP+/rg=
+ resolved "https://registry.npmmirror.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8"
+ integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==
dependencies:
randombytes "^2.1.0"
serve-handler@^6.1.3:
version "6.1.3"
- resolved "https://registry.npm.taobao.org/serve-handler/download/serve-handler-6.1.3.tgz#1bf8c5ae138712af55c758477533b9117f6435e8"
- integrity sha1-G/jFrhOHEq9Vx1hHdTO5EX9kNeg=
+ resolved "https://registry.npmmirror.com/serve-handler/-/serve-handler-6.1.3.tgz#1bf8c5ae138712af55c758477533b9117f6435e8"
+ integrity sha512-FosMqFBNrLyeiIDvP1zgO6YoTzFYHxLDEIavhlmQ+knB2Z7l1t+kGLHkZIDN7UVWqQAmKI3D20A6F6jo3nDd4w==
dependencies:
bytes "3.0.0"
content-disposition "0.5.2"
@@ -6881,8 +6943,8 @@ serve-handler@^6.1.3:
serve-index@^1.9.1:
version "1.9.1"
- resolved "https://registry.nlark.com/serve-index/download/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239"
- integrity sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=
+ resolved "https://registry.npmmirror.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239"
+ integrity sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==
dependencies:
accepts "~1.3.4"
batch "0.6.1"
@@ -6894,7 +6956,7 @@ serve-index@^1.9.1:
serve-static@1.14.2:
version "1.14.2"
- resolved "https://registry.npmmirror.com/serve-static/download/serve-static-1.14.2.tgz#722d6294b1d62626d41b43a013ece4598d292bfa"
+ resolved "https://registry.npmmirror.com/serve-static/-/serve-static-1.14.2.tgz#722d6294b1d62626d41b43a013ece4598d292bfa"
integrity sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==
dependencies:
encodeurl "~1.0.2"
@@ -6904,42 +6966,42 @@ serve-static@1.14.2:
setprototypeof@1.1.0:
version "1.1.0"
- resolved "https://registry.nlark.com/setprototypeof/download/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656"
- integrity sha1-0L2FU2iHtv58DYGMuWLZ2RxU5lY=
+ resolved "https://registry.npmmirror.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656"
+ integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==
setprototypeof@1.2.0:
version "1.2.0"
- resolved "https://registry.nlark.com/setprototypeof/download/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424"
- integrity sha1-ZsmiSnP5/CjL5msJ/tPTPcrxtCQ=
+ resolved "https://registry.npmmirror.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424"
+ integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==
shallow-clone@^3.0.0:
version "3.0.1"
- resolved "https://registry.npm.taobao.org/shallow-clone/download/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3"
- integrity sha1-jymBrZJTH1UDWwH7IwdppA4C76M=
+ resolved "https://registry.npmmirror.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3"
+ integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==
dependencies:
kind-of "^6.0.2"
shebang-command@^2.0.0:
version "2.0.0"
- resolved "https://registry.nlark.com/shebang-command/download/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea"
- integrity sha1-zNCvT4g1+9wmW4JGGq8MNmY/NOo=
+ resolved "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea"
+ integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==
dependencies:
shebang-regex "^3.0.0"
shebang-regex@^3.0.0:
version "3.0.0"
- resolved "https://registry.nlark.com/shebang-regex/download/shebang-regex-3.0.0.tgz?cache=0&sync_timestamp=1628896405033&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fshebang-regex%2Fdownload%2Fshebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
- integrity sha1-rhbxZE2HPsrYQ7AwexQzYtTEIXI=
+ resolved "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
+ integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
shell-quote@^1.7.2:
version "1.7.3"
- resolved "https://registry.npmmirror.com/shell-quote/download/shell-quote-1.7.3.tgz?cache=0&sync_timestamp=1634798333958&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fshell-quote%2Fdownload%2Fshell-quote-1.7.3.tgz#aa40edac170445b9a431e17bb62c0b881b9c4123"
- integrity sha1-qkDtrBcERbmkMeF7tiwLiBucQSM=
+ resolved "https://registry.npmmirror.com/shell-quote/-/shell-quote-1.7.3.tgz#aa40edac170445b9a431e17bb62c0b881b9c4123"
+ integrity sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==
shelljs@^0.8.4:
- version "0.8.4"
- resolved "https://registry.nlark.com/shelljs/download/shelljs-0.8.4.tgz?cache=0&sync_timestamp=1622604518500&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fshelljs%2Fdownload%2Fshelljs-0.8.4.tgz#de7684feeb767f8716b326078a8a00875890e3c2"
- integrity sha1-3naE/ut2f4cWsyYHiooAh1iQ48I=
+ version "0.8.5"
+ resolved "https://registry.npmmirror.com/shelljs/-/shelljs-0.8.5.tgz#de055408d8361bed66c669d2f000538ced8ee20c"
+ integrity sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==
dependencies:
glob "^7.0.0"
interpret "^1.0.0"
@@ -6947,21 +7009,21 @@ shelljs@^0.8.4:
side-channel@^1.0.4:
version "1.0.4"
- resolved "https://registry.nlark.com/side-channel/download/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf"
- integrity sha1-785cj9wQTudRslxY1CkAEfpeos8=
+ resolved "https://registry.npmmirror.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf"
+ integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==
dependencies:
call-bind "^1.0.0"
get-intrinsic "^1.0.2"
object-inspect "^1.9.0"
signal-exit@^3.0.2, signal-exit@^3.0.3:
- version "3.0.6"
- resolved "https://registry.npmmirror.com/signal-exit/download/signal-exit-3.0.6.tgz?cache=0&sync_timestamp=1637255763586&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fsignal-exit%2Fdownload%2Fsignal-exit-3.0.6.tgz#24e630c4b0f03fea446a2bd299e62b4a6ca8d0af"
- integrity sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==
+ version "3.0.7"
+ resolved "https://registry.npmmirror.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9"
+ integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==
sirv@^1.0.7:
version "1.0.19"
- resolved "https://registry.npmmirror.com/sirv/download/sirv-1.0.19.tgz#1d73979b38c7fe91fcba49c85280daa9c2363b49"
+ resolved "https://registry.npmmirror.com/sirv/-/sirv-1.0.19.tgz#1d73979b38c7fe91fcba49c85280daa9c2363b49"
integrity sha512-JuLThK3TnZG1TAKDwNIqNq6QA2afLOCcm+iE8D1Kj3GA40pSPsxQjjJl0J8X3tsR7T+CP1GavpzLwYkgVLWrZQ==
dependencies:
"@polka/url" "^1.0.0-next.20"
@@ -6970,13 +7032,13 @@ sirv@^1.0.7:
sisteransi@^1.0.5:
version "1.0.5"
- resolved "https://registry.nlark.com/sisteransi/download/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed"
- integrity sha1-E01oEpd1ZDfMBcoBNw06elcQde0=
+ resolved "https://registry.npmmirror.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed"
+ integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==
sitemap@^7.0.0:
- version "7.1.0"
- resolved "https://registry.npmmirror.com/sitemap/download/sitemap-7.1.0.tgz#300cd8b3fa9d45fb63f9b56d962785c3cd799362"
- integrity sha512-OctwI2RYFj3Lnoutix0Qhow3AvDoUQ7rsSyzrY8wFKHqXYvmCJXFOBZyVU4/DDtsQ2KnEWY4j4j80hBHBOVEWQ==
+ version "7.1.1"
+ resolved "https://registry.npmmirror.com/sitemap/-/sitemap-7.1.1.tgz#eeed9ad6d95499161a3eadc60f8c6dce4bea2bef"
+ integrity sha512-mK3aFtjz4VdJN0igpIJrinf3EO8U8mxOPsTBzSsy06UtjZQJ3YY3o3Xa7zSc5nMqcMrRwlChHZ18Kxg0caiPBg==
dependencies:
"@types/node" "^17.0.5"
"@types/sax" "^1.2.1"
@@ -6985,36 +7047,41 @@ sitemap@^7.0.0:
slash@^3.0.0:
version "3.0.0"
- resolved "https://registry.nlark.com/slash/download/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634"
- integrity sha1-ZTm+hwwWWtvVJAIg2+Nh8bxNRjQ=
+ resolved "https://registry.npmmirror.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634"
+ integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==
sockjs@^0.3.21:
version "0.3.24"
- resolved "https://registry.npmmirror.com/sockjs/download/sockjs-0.3.24.tgz#c9bc8995f33a111bea0395ec30aa3206bdb5ccce"
+ resolved "https://registry.npmmirror.com/sockjs/-/sockjs-0.3.24.tgz#c9bc8995f33a111bea0395ec30aa3206bdb5ccce"
integrity sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==
dependencies:
faye-websocket "^0.11.3"
uuid "^8.3.2"
websocket-driver "^0.7.4"
+solid-js@^1.1.6:
+ version "1.3.5"
+ resolved "https://registry.npmmirror.com/solid-js/-/solid-js-1.3.5.tgz#77899623b04ee75a302a12d16897d7c5a873508e"
+ integrity sha512-PUom2cCARfvvgxI7cwOhfXMrZZZxjp+vIrb5fzVNBFyICy8A30wTqExwfUv457eJYgKpii2D3qStW9ILtKnShw==
+
sort-css-media-queries@2.0.4:
version "2.0.4"
- resolved "https://registry.nlark.com/sort-css-media-queries/download/sort-css-media-queries-2.0.4.tgz#b2badfa519cb4a938acbc6d3aaa913d4949dc908"
- integrity sha1-srrfpRnLSpOKy8bTqqkT1JSdyQg=
+ resolved "https://registry.npmmirror.com/sort-css-media-queries/-/sort-css-media-queries-2.0.4.tgz#b2badfa519cb4a938acbc6d3aaa913d4949dc908"
+ integrity sha512-PAIsEK/XupCQwitjv7XxoMvYhT7EAfyzI3hsy/MyDgTvc+Ft55ctdkctJLOy6cQejaIC+zjpUL4djFVm2ivOOw==
source-list-map@^2.0.0:
version "2.0.1"
- resolved "https://registry.nlark.com/source-list-map/download/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34"
- integrity sha1-OZO9hzv8SEecyp6jpUeDXHwVSzQ=
+ resolved "https://registry.npmmirror.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34"
+ integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==
-source-map-js@^1.0.1:
- version "1.0.1"
- resolved "https://registry.npmmirror.com/source-map-js/download/source-map-js-1.0.1.tgz#a1741c131e3c77d048252adfa24e23b908670caf"
- integrity sha512-4+TN2b3tqOCd/kaGRJ/sTYA0tR0mdXx26ipdolxcwtJVqEnqNYvlCAt1q3ypy4QMlYus+Zh34RNtYLoq2oQ4IA==
+source-map-js@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c"
+ integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==
source-map-support@~0.5.20:
version "0.5.21"
- resolved "https://registry.npmmirror.com/source-map-support/download/source-map-support-0.5.21.tgz?cache=0&sync_timestamp=1637320322789&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fsource-map-support%2Fdownload%2Fsource-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f"
+ resolved "https://registry.npmmirror.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f"
integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==
dependencies:
buffer-from "^1.0.0"
@@ -7022,33 +7089,33 @@ source-map-support@~0.5.20:
source-map@^0.5.0:
version "0.5.7"
- resolved "https://registry.npm.taobao.org/source-map/download/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
- integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=
+ resolved "https://registry.npmmirror.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
+ integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==
source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1:
version "0.6.1"
- resolved "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
- integrity sha1-dHIq8y6WFOnCh6jQu95IteLxomM=
+ resolved "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
+ integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
source-map@~0.7.2:
version "0.7.3"
- resolved "https://registry.npm.taobao.org/source-map/download/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383"
- integrity sha1-UwL4FpAxc1ImVECS5kmB91F1A4M=
+ resolved "https://registry.npmmirror.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383"
+ integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==
sourcemap-codec@^1.4.4:
version "1.4.8"
- resolved "https://registry.nlark.com/sourcemap-codec/download/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4"
- integrity sha1-6oBL2UhXQC5pktBaOO8a41qatMQ=
+ resolved "https://registry.npmmirror.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4"
+ integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==
space-separated-tokens@^1.0.0:
version "1.1.5"
- resolved "https://registry.npmmirror.com/space-separated-tokens/download/space-separated-tokens-1.1.5.tgz#85f32c3d10d9682007e917414ddc5c26d1aa6899"
- integrity sha1-hfMsPRDZaCAH6RdBTdxcJtGqaJk=
+ resolved "https://registry.npmmirror.com/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz#85f32c3d10d9682007e917414ddc5c26d1aa6899"
+ integrity sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==
spdy-transport@^3.0.0:
version "3.0.0"
- resolved "https://registry.npm.taobao.org/spdy-transport/download/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31"
- integrity sha1-ANSGOmQArXXfkzYaFghgXl3NzzE=
+ resolved "https://registry.npmmirror.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31"
+ integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==
dependencies:
debug "^4.1.0"
detect-node "^2.0.4"
@@ -7059,8 +7126,8 @@ spdy-transport@^3.0.0:
spdy@^4.0.2:
version "4.0.2"
- resolved "https://registry.nlark.com/spdy/download/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b"
- integrity sha1-t09GYgOj7aRSwCSSuR+56EonZ3s=
+ resolved "https://registry.npmmirror.com/spdy/-/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b"
+ integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==
dependencies:
debug "^4.1.0"
handle-thing "^2.0.0"
@@ -7070,40 +7137,40 @@ spdy@^4.0.2:
sprintf-js@~1.0.2:
version "1.0.3"
- resolved "https://registry.nlark.com/sprintf-js/download/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
- integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=
+ resolved "https://registry.npmmirror.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
+ integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==
stable@^0.1.8:
version "0.1.8"
- resolved "https://registry.npmmirror.com/stable/download/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf"
- integrity sha1-g26zyDgv4pNv6vVEYxAXzn1Ho88=
+ resolved "https://registry.npmmirror.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf"
+ integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==
state-toggle@^1.0.0:
version "1.0.3"
- resolved "https://registry.nlark.com/state-toggle/download/state-toggle-1.0.3.tgz#e123b16a88e143139b09c6852221bc9815917dfe"
- integrity sha1-4SOxaojhQxObCcaFIiG8mBWRff4=
+ resolved "https://registry.npmmirror.com/state-toggle/-/state-toggle-1.0.3.tgz#e123b16a88e143139b09c6852221bc9815917dfe"
+ integrity sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ==
"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@~1.5.0:
version "1.5.0"
- resolved "https://registry.npm.taobao.org/statuses/download/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c"
- integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=
+ resolved "https://registry.npmmirror.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c"
+ integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==
std-env@^2.2.1:
version "2.3.1"
- resolved "https://registry.npmmirror.com/std-env/download/std-env-2.3.1.tgz#d42271908819c243f8defc77a140fc1fcee336a1"
- integrity sha1-1CJxkIgZwkP43vx3oUD8H87jNqE=
+ resolved "https://registry.npmmirror.com/std-env/-/std-env-2.3.1.tgz#d42271908819c243f8defc77a140fc1fcee336a1"
+ integrity sha512-eOsoKTWnr6C8aWrqJJ2KAReXoa7Vn5Ywyw6uCXgA/xDhxPoaIsBa5aNJmISY04dLwXPBnDHW4diGM7Sn5K4R/g==
dependencies:
ci-info "^3.1.1"
std-env@^3.0.1:
version "3.0.1"
- resolved "https://registry.npmmirror.com/std-env/download/std-env-3.0.1.tgz#bc4cbc0e438610197e34c2d79c3df30b491f5182"
- integrity sha1-vEy8DkOGEBl+NMLXnD3zC0kfUYI=
+ resolved "https://registry.npmmirror.com/std-env/-/std-env-3.0.1.tgz#bc4cbc0e438610197e34c2d79c3df30b491f5182"
+ integrity sha512-mC1Ps9l77/97qeOZc+HrOL7TIaOboHqMZ24dGVQrlxFcpPpfCHpH+qfUT7Dz+6mlG8+JPA1KfBQo19iC/+Ngcw==
string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.2:
version "4.2.3"
- resolved "https://registry.npmmirror.com/string-width/download/string-width-4.2.3.tgz?cache=0&sync_timestamp=1632420968947&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fstring-width%2Fdownload%2Fstring-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
- integrity sha1-JpxxF9J7Ba0uU2gwqOyJXvnG0BA=
+ resolved "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
+ integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
dependencies:
emoji-regex "^8.0.0"
is-fullwidth-code-point "^3.0.0"
@@ -7111,38 +7178,38 @@ string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.2:
string.prototype.trimend@^1.0.4:
version "1.0.4"
- resolved "https://registry.nlark.com/string.prototype.trimend/download/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80"
- integrity sha1-51rpDClCxjUEaGwYsoe0oLGkX4A=
+ resolved "https://registry.npmmirror.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80"
+ integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==
dependencies:
call-bind "^1.0.2"
define-properties "^1.1.3"
string.prototype.trimstart@^1.0.4:
version "1.0.4"
- resolved "https://registry.nlark.com/string.prototype.trimstart/download/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed"
- integrity sha1-s2OZr0qymZtMnGSL16P7K7Jv7u0=
+ resolved "https://registry.npmmirror.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed"
+ integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==
dependencies:
call-bind "^1.0.2"
define-properties "^1.1.3"
string_decoder@^1.1.1:
version "1.3.0"
- resolved "https://registry.nlark.com/string_decoder/download/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e"
- integrity sha1-QvEUWUpGzxqOMLCoT1bHjD7awh4=
+ resolved "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e"
+ integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==
dependencies:
safe-buffer "~5.2.0"
string_decoder@~1.1.1:
version "1.1.1"
- resolved "https://registry.nlark.com/string_decoder/download/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
- integrity sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=
+ resolved "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
+ integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
dependencies:
safe-buffer "~5.1.0"
stringify-object@^3.3.0:
version "3.3.0"
- resolved "https://registry.nlark.com/stringify-object/download/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629"
- integrity sha1-cDBlrvyhkwDTzoivT1s5VtdVZik=
+ resolved "https://registry.npmmirror.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629"
+ integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==
dependencies:
get-own-enumerable-property-symbols "^3.0.0"
is-obj "^1.0.1"
@@ -7150,82 +7217,82 @@ stringify-object@^3.3.0:
strip-ansi@^6.0.0, strip-ansi@^6.0.1:
version "6.0.1"
- resolved "https://registry.npmmirror.com/strip-ansi/download/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
- integrity sha1-nibGPTD1NEPpSJSVshBdN7Z6hdk=
+ resolved "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
+ integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
dependencies:
ansi-regex "^5.0.1"
strip-ansi@^7.0.0:
version "7.0.1"
- resolved "https://registry.npmmirror.com/strip-ansi/download/strip-ansi-7.0.1.tgz#61740a08ce36b61e50e65653f07060d000975fb2"
- integrity sha1-YXQKCM42th5Q5lZT8HBg0ACXX7I=
+ resolved "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-7.0.1.tgz#61740a08ce36b61e50e65653f07060d000975fb2"
+ integrity sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==
dependencies:
ansi-regex "^6.0.1"
strip-bom-string@^1.0.0:
version "1.0.0"
- resolved "https://registry.npm.taobao.org/strip-bom-string/download/strip-bom-string-1.0.0.tgz#e5211e9224369fbb81d633a2f00044dc8cedad92"
- integrity sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI=
+ resolved "https://registry.npmmirror.com/strip-bom-string/-/strip-bom-string-1.0.0.tgz#e5211e9224369fbb81d633a2f00044dc8cedad92"
+ integrity sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==
strip-final-newline@^2.0.0:
version "2.0.0"
- resolved "https://registry.nlark.com/strip-final-newline/download/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad"
- integrity sha1-ibhS+y/L6Tb29LMYevsKEsGrWK0=
+ resolved "https://registry.npmmirror.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad"
+ integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==
strip-json-comments@~2.0.1:
version "2.0.1"
- resolved "https://registry.nlark.com/strip-json-comments/download/strip-json-comments-2.0.1.tgz?cache=0&sync_timestamp=1629397119136&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fstrip-json-comments%2Fdownload%2Fstrip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
- integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo=
+ resolved "https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
+ integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==
style-to-object@0.3.0, style-to-object@^0.3.0:
version "0.3.0"
- resolved "https://registry.npm.taobao.org/style-to-object/download/style-to-object-0.3.0.tgz#b1b790d205991cc783801967214979ee19a76e46"
- integrity sha1-sbeQ0gWZHMeDgBlnIUl57hmnbkY=
+ resolved "https://registry.npmmirror.com/style-to-object/-/style-to-object-0.3.0.tgz#b1b790d205991cc783801967214979ee19a76e46"
+ integrity sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==
dependencies:
inline-style-parser "0.1.1"
-stylehacks@^5.0.1:
- version "5.0.1"
- resolved "https://registry.nlark.com/stylehacks/download/stylehacks-5.0.1.tgz?cache=0&sync_timestamp=1621449595596&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fstylehacks%2Fdownload%2Fstylehacks-5.0.1.tgz#323ec554198520986806388c7fdaebc38d2c06fb"
- integrity sha1-Mj7FVBmFIJhoBjiMf9rrw40sBvs=
+stylehacks@^5.0.2:
+ version "5.0.2"
+ resolved "https://registry.npmmirror.com/stylehacks/-/stylehacks-5.0.2.tgz#fa10e5181c6e8dc0bddb4a3fb372e9ac42bba2ad"
+ integrity sha512-114zeJdOpTrbQYRD4OU5UWJ99LKUaqCPJTU1HQ/n3q3BwmllFN8kHENaLnOeqVq6AhXrWfxHNZTl33iJ4oy3cQ==
dependencies:
- browserslist "^4.16.0"
+ browserslist "^4.16.6"
postcss-selector-parser "^6.0.4"
supports-color@^5.3.0:
version "5.5.0"
- resolved "https://registry.npmmirror.com/supports-color/download/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
- integrity sha1-4uaaRKyHcveKHsCzW2id9lMO/I8=
+ resolved "https://registry.npmmirror.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
+ integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
dependencies:
has-flag "^3.0.0"
supports-color@^7.1.0:
version "7.2.0"
- resolved "https://registry.npmmirror.com/supports-color/download/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
- integrity sha1-G33NyzK4E4gBs+R4umpRyqiWSNo=
+ resolved "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
+ integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
dependencies:
has-flag "^4.0.0"
supports-color@^8.0.0:
version "8.1.1"
- resolved "https://registry.npmmirror.com/supports-color/download/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c"
- integrity sha1-zW/BfihQDP9WwbhsCn/UpUpzAFw=
+ resolved "https://registry.npmmirror.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c"
+ integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==
dependencies:
has-flag "^4.0.0"
supports-preserve-symlinks-flag@^1.0.0:
version "1.0.0"
- resolved "https://registry.npmmirror.com/supports-preserve-symlinks-flag/download/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
+ resolved "https://registry.npmmirror.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
svg-parser@^2.0.2:
version "2.0.4"
- resolved "https://registry.npm.taobao.org/svg-parser/download/svg-parser-2.0.4.tgz#fdc2e29e13951736140b76cb122c8ee6630eb6b5"
- integrity sha1-/cLinhOVFzYUC3bLEiyO5mMOtrU=
+ resolved "https://registry.npmmirror.com/svg-parser/-/svg-parser-2.0.4.tgz#fdc2e29e13951736140b76cb122c8ee6630eb6b5"
+ integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==
svgo@^1.2.2:
version "1.3.2"
- resolved "https://registry.npmmirror.com/svgo/download/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167"
+ resolved "https://registry.npmmirror.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167"
integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==
dependencies:
chalk "^2.4.1"
@@ -7244,7 +7311,7 @@ svgo@^1.2.2:
svgo@^2.7.0:
version "2.8.0"
- resolved "https://registry.npmmirror.com/svgo/download/svgo-2.8.0.tgz#4ff80cce6710dc2795f0c7c74101e6764cfccd24"
+ resolved "https://registry.npmmirror.com/svgo/-/svgo-2.8.0.tgz#4ff80cce6710dc2795f0c7c74101e6764cfccd24"
integrity sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==
dependencies:
"@trysound/sax" "0.2.0"
@@ -7256,47 +7323,47 @@ svgo@^2.7.0:
stable "^0.1.8"
tailwindcss@^3.0.0:
- version "3.0.10"
- resolved "https://registry.npmmirror.com/tailwindcss/download/tailwindcss-3.0.10.tgz#be83322644353b053fe8581f8f2413e958d7e11b"
- integrity sha512-dSKGNqI6hyzY8CPX0GsYTZ9yTxGesHrNFPIANTBe8bQWNHGTsAd7PoZQ+HTaIQb/we3zaZfa4F487WCCvhBGbw==
+ version "3.0.18"
+ resolved "https://registry.npmmirror.com/tailwindcss/-/tailwindcss-3.0.18.tgz#ea4825e6496d77dc21877b6b61c7cc56cda3add5"
+ integrity sha512-ihPTpEyA5ANgZbwKlgrbfnzOp9R5vDHFWmqxB1PT8NwOGCOFVVMl+Ps1cQQ369acaqqf1BEF77roCwK0lvNmTw==
dependencies:
arg "^5.0.1"
chalk "^4.1.2"
- chokidar "^3.5.2"
+ chokidar "^3.5.3"
color-name "^1.1.4"
cosmiconfig "^7.0.1"
detective "^5.2.0"
didyoumean "^1.2.2"
dlv "^1.1.3"
- fast-glob "^3.2.7"
+ fast-glob "^3.2.11"
glob-parent "^6.0.2"
is-glob "^4.0.3"
normalize-path "^3.0.0"
object-hash "^2.2.0"
- postcss-js "^3.0.3"
+ postcss-js "^4.0.0"
postcss-load-config "^3.1.0"
postcss-nested "5.0.6"
- postcss-selector-parser "^6.0.7"
+ postcss-selector-parser "^6.0.9"
postcss-value-parser "^4.2.0"
quick-lru "^5.1.1"
- resolve "^1.20.0"
+ resolve "^1.21.0"
tapable@^1.0.0:
version "1.1.3"
- resolved "https://registry.npmmirror.com/tapable/download/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2"
+ resolved "https://registry.npmmirror.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2"
integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==
tapable@^2.0.0, tapable@^2.1.1, tapable@^2.2.0:
version "2.2.1"
- resolved "https://registry.npmmirror.com/tapable/download/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0"
+ resolved "https://registry.npmmirror.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0"
integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==
terser-webpack-plugin@^5.1.3, terser-webpack-plugin@^5.2.4:
- version "5.3.0"
- resolved "https://registry.npmmirror.com/terser-webpack-plugin/download/terser-webpack-plugin-5.3.0.tgz#21641326486ecf91d8054161c816e464435bae9f"
- integrity sha512-LPIisi3Ol4chwAaPP8toUJ3L4qCM1G0wao7L3qNv57Drezxj6+VEyySpPw4B1HSO2Eg/hDY/MNF5XihCAoqnsQ==
+ version "5.3.1"
+ resolved "https://registry.npmmirror.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz#0320dcc270ad5372c1e8993fabbd927929773e54"
+ integrity sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g==
dependencies:
- jest-worker "^27.4.1"
+ jest-worker "^27.4.5"
schema-utils "^3.1.1"
serialize-javascript "^6.0.0"
source-map "^0.6.1"
@@ -7304,7 +7371,7 @@ terser-webpack-plugin@^5.1.3, terser-webpack-plugin@^5.2.4:
terser@^5.10.0, terser@^5.7.2:
version "5.10.0"
- resolved "https://registry.npmmirror.com/terser/download/terser-5.10.0.tgz#b86390809c0389105eb0a0b62397563096ddafcc"
+ resolved "https://registry.npmmirror.com/terser/-/terser-5.10.0.tgz#b86390809c0389105eb0a0b62397563096ddafcc"
integrity sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA==
dependencies:
commander "^2.20.0"
@@ -7313,115 +7380,115 @@ terser@^5.10.0, terser@^5.7.2:
text-table@^0.2.0:
version "0.2.0"
- resolved "https://registry.nlark.com/text-table/download/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
- integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=
+ resolved "https://registry.npmmirror.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
+ integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==
thunky@^1.0.2:
version "1.1.0"
- resolved "https://registry.nlark.com/thunky/download/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d"
- integrity sha1-Wrr3FKlAXbBQRzK7zNLO3Z75U30=
+ resolved "https://registry.npmmirror.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d"
+ integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==
timsort@^0.3.0:
version "0.3.0"
- resolved "https://registry.nlark.com/timsort/download/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4"
- integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=
+ resolved "https://registry.npmmirror.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4"
+ integrity sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A==
tiny-invariant@^1.0.2:
version "1.2.0"
- resolved "https://registry.npmmirror.com/tiny-invariant/download/tiny-invariant-1.2.0.tgz#a1141f86b672a9148c72e978a19a73b9b94a15a9"
- integrity sha1-oRQfhrZyqRSMcul4oZpzublKFak=
+ resolved "https://registry.npmmirror.com/tiny-invariant/-/tiny-invariant-1.2.0.tgz#a1141f86b672a9148c72e978a19a73b9b94a15a9"
+ integrity sha512-1Uhn/aqw5C6RI4KejVeTg6mIS7IqxnLJ8Mv2tV5rTc0qWobay7pDUz6Wi392Cnc8ak1H0F2cjoRzb2/AW4+Fvg==
tiny-warning@^1.0.0, tiny-warning@^1.0.3:
version "1.0.3"
- resolved "https://registry.nlark.com/tiny-warning/download/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754"
- integrity sha1-lKMNtFPfTGQ9D9VmBg1gqHXYR1Q=
+ resolved "https://registry.npmmirror.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754"
+ integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==
tinycolor2@^1.4.1:
version "1.4.2"
- resolved "https://registry.npm.taobao.org/tinycolor2/download/tinycolor2-1.4.2.tgz#3f6a4d1071ad07676d7fa472e1fac40a719d8803"
- integrity sha1-P2pNEHGtB2dtf6Ry4frECnGdiAM=
+ resolved "https://registry.npmmirror.com/tinycolor2/-/tinycolor2-1.4.2.tgz#3f6a4d1071ad07676d7fa472e1fac40a719d8803"
+ integrity sha512-vJhccZPs965sV/L2sU4oRQVAos0pQXwsvTLkWYdqJ+a8Q5kPFzJTuOFwy7UniPli44NKQGAglksjvOcpo95aZA==
to-fast-properties@^2.0.0:
version "2.0.0"
- resolved "https://registry.nlark.com/to-fast-properties/download/to-fast-properties-2.0.0.tgz?cache=0&sync_timestamp=1628418855671&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fto-fast-properties%2Fdownload%2Fto-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e"
- integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=
+ resolved "https://registry.npmmirror.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e"
+ integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==
to-readable-stream@^1.0.0:
version "1.0.0"
- resolved "https://registry.nlark.com/to-readable-stream/download/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771"
- integrity sha1-zgqgwvPfat+FLvtASng+d8BHV3E=
+ resolved "https://registry.npmmirror.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771"
+ integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==
to-regex-range@^5.0.1:
version "5.0.1"
- resolved "https://registry.nlark.com/to-regex-range/download/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
- integrity sha1-FkjESq58jZiKMmAY7XL1tN0DkuQ=
+ resolved "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
+ integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
dependencies:
is-number "^7.0.0"
toggle-selection@^1.0.6:
version "1.0.6"
- resolved "https://registry.nlark.com/toggle-selection/download/toggle-selection-1.0.6.tgz#6e45b1263f2017fa0acc7d89d78b15b8bf77da32"
- integrity sha1-bkWxJj8gF/oKzH2J14sVuL932jI=
+ resolved "https://registry.npmmirror.com/toggle-selection/-/toggle-selection-1.0.6.tgz#6e45b1263f2017fa0acc7d89d78b15b8bf77da32"
+ integrity sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==
toidentifier@1.0.1:
version "1.0.1"
- resolved "https://registry.npmmirror.com/toidentifier/download/toidentifier-1.0.1.tgz?cache=0&sync_timestamp=1636938489272&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Ftoidentifier%2Fdownload%2Ftoidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35"
+ resolved "https://registry.npmmirror.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35"
integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==
totalist@^1.0.0:
version "1.1.0"
- resolved "https://registry.npm.taobao.org/totalist/download/totalist-1.1.0.tgz#a4d65a3e546517701e3e5c37a47a70ac97fe56df"
- integrity sha1-pNZaPlRlF3AePlw3pHpwrJf+Vt8=
+ resolved "https://registry.npmmirror.com/totalist/-/totalist-1.1.0.tgz#a4d65a3e546517701e3e5c37a47a70ac97fe56df"
+ integrity sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g==
trim-trailing-lines@^1.0.0:
version "1.1.4"
- resolved "https://registry.nlark.com/trim-trailing-lines/download/trim-trailing-lines-1.1.4.tgz#bd4abbec7cc880462f10b2c8b5ce1d8d1ec7c2c0"
- integrity sha1-vUq77HzIgEYvELLItc4djR7HwsA=
+ resolved "https://registry.npmmirror.com/trim-trailing-lines/-/trim-trailing-lines-1.1.4.tgz#bd4abbec7cc880462f10b2c8b5ce1d8d1ec7c2c0"
+ integrity sha512-rjUWSqnfTNrjbB9NQWfPMH/xRK1deHeGsHoVfpxJ++XeYXE0d6B1En37AHfw3jtfTU7dzMzZL2jjpe8Qb5gLIQ==
trim@0.0.1:
version "0.0.1"
- resolved "https://registry.nlark.com/trim/download/trim-0.0.1.tgz#5858547f6b290757ee95cccc666fb50084c460dd"
- integrity sha1-WFhUf2spB1fulczMZm+1AITEYN0=
+ resolved "https://registry.npmmirror.com/trim/-/trim-0.0.1.tgz#5858547f6b290757ee95cccc666fb50084c460dd"
+ integrity sha512-YzQV+TZg4AxpKxaTHK3c3D+kRDCGVEE7LemdlQZoQXn0iennk10RsIoY6ikzAqJTc9Xjl9C1/waHom/J86ziAQ==
trough@^1.0.0:
version "1.0.5"
- resolved "https://registry.nlark.com/trough/download/trough-1.0.5.tgz?cache=0&sync_timestamp=1625400622069&other_urls=https%3A%2F%2Fregistry.nlark.com%2Ftrough%2Fdownload%2Ftrough-1.0.5.tgz#b8b639cefad7d0bb2abd37d433ff8293efa5f406"
- integrity sha1-uLY5zvrX0LsqvTfUM/+Ck++l9AY=
+ resolved "https://registry.npmmirror.com/trough/-/trough-1.0.5.tgz#b8b639cefad7d0bb2abd37d433ff8293efa5f406"
+ integrity sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==
tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.1:
version "2.3.1"
- resolved "https://registry.npmmirror.com/tslib/download/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01"
+ resolved "https://registry.npmmirror.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01"
integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==
type-fest@^0.20.2:
version "0.20.2"
- resolved "https://registry.npmmirror.com/type-fest/download/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4"
- integrity sha1-G/IH9LKPkVg2ZstfvTJ4hzAc1fQ=
+ resolved "https://registry.npmmirror.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4"
+ integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==
type-is@~1.6.18:
version "1.6.18"
- resolved "https://registry.nlark.com/type-is/download/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131"
- integrity sha1-TlUs0F3wlGfcvE73Od6J8s83wTE=
+ resolved "https://registry.npmmirror.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131"
+ integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==
dependencies:
media-typer "0.3.0"
mime-types "~2.1.24"
typedarray-to-buffer@^3.1.5:
version "3.1.5"
- resolved "https://registry.npm.taobao.org/typedarray-to-buffer/download/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080"
- integrity sha1-qX7nqf9CaRufeD/xvFES/j/KkIA=
+ resolved "https://registry.npmmirror.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080"
+ integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==
dependencies:
is-typedarray "^1.0.0"
typescript@^4.3.5:
- version "4.5.4"
- resolved "https://registry.npmmirror.com/typescript/download/typescript-4.5.4.tgz#a17d3a0263bf5c8723b9c52f43c5084edf13c2e8"
- integrity sha512-VgYs2A2QIRuGphtzFV7aQJduJ2gyfTljngLzjpfW9FoYZF6xuw1W0vW9ghCKLfcWrCFxK81CSGRAvS1pn4fIUg==
+ version "4.5.5"
+ resolved "https://registry.npmmirror.com/typescript/-/typescript-4.5.5.tgz#d8c953832d28924a9e3d37c73d729c846c5896f3"
+ integrity sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==
unbox-primitive@^1.0.1:
version "1.0.1"
- resolved "https://registry.nlark.com/unbox-primitive/download/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471"
- integrity sha1-CF4hViXsMWJXTciFmr7nilmxRHE=
+ resolved "https://registry.npmmirror.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471"
+ integrity sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==
dependencies:
function-bind "^1.1.1"
has-bigints "^1.0.1"
@@ -7430,39 +7497,39 @@ unbox-primitive@^1.0.1:
unherit@^1.0.4:
version "1.1.3"
- resolved "https://registry.nlark.com/unherit/download/unherit-1.1.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2Funherit%2Fdownload%2Funherit-1.1.3.tgz#6c9b503f2b41b262330c80e91c8614abdaa69c22"
- integrity sha1-bJtQPytBsmIzDIDpHIYUq9qmnCI=
+ resolved "https://registry.npmmirror.com/unherit/-/unherit-1.1.3.tgz#6c9b503f2b41b262330c80e91c8614abdaa69c22"
+ integrity sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ==
dependencies:
inherits "^2.0.0"
xtend "^4.0.0"
unicode-canonical-property-names-ecmascript@^2.0.0:
version "2.0.0"
- resolved "https://registry.nlark.com/unicode-canonical-property-names-ecmascript/download/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc"
- integrity sha1-MBrNxSVjFnDTn2FG4Od/9rvevdw=
+ resolved "https://registry.npmmirror.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc"
+ integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==
unicode-match-property-ecmascript@^2.0.0:
version "2.0.0"
- resolved "https://registry.nlark.com/unicode-match-property-ecmascript/download/unicode-match-property-ecmascript-2.0.0.tgz?cache=0&sync_timestamp=1631618696521&other_urls=https%3A%2F%2Fregistry.nlark.com%2Funicode-match-property-ecmascript%2Fdownload%2Funicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3"
- integrity sha1-VP0W4OyxZ88Ezx91a9zJLrp5dsM=
+ resolved "https://registry.npmmirror.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3"
+ integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==
dependencies:
unicode-canonical-property-names-ecmascript "^2.0.0"
unicode-property-aliases-ecmascript "^2.0.0"
unicode-match-property-value-ecmascript@^2.0.0:
version "2.0.0"
- resolved "https://registry.nlark.com/unicode-match-property-value-ecmascript/download/unicode-match-property-value-ecmascript-2.0.0.tgz#1a01aa57247c14c568b89775a54938788189a714"
- integrity sha1-GgGqVyR8FMVouJd1pUk4eIGJpxQ=
+ resolved "https://registry.npmmirror.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz#1a01aa57247c14c568b89775a54938788189a714"
+ integrity sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==
unicode-property-aliases-ecmascript@^2.0.0:
version "2.0.0"
- resolved "https://registry.nlark.com/unicode-property-aliases-ecmascript/download/unicode-property-aliases-ecmascript-2.0.0.tgz?cache=0&sync_timestamp=1631609367398&other_urls=https%3A%2F%2Fregistry.nlark.com%2Funicode-property-aliases-ecmascript%2Fdownload%2Funicode-property-aliases-ecmascript-2.0.0.tgz#0a36cb9a585c4f6abd51ad1deddb285c165297c8"
- integrity sha1-CjbLmlhcT2q9Ua0d7dsoXBZSl8g=
+ resolved "https://registry.npmmirror.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz#0a36cb9a585c4f6abd51ad1deddb285c165297c8"
+ integrity sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==
unified@9.2.0:
version "9.2.0"
- resolved "https://registry.npmmirror.com/unified/download/unified-9.2.0.tgz?cache=0&sync_timestamp=1637260005329&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Funified%2Fdownload%2Funified-9.2.0.tgz#67a62c627c40589edebbf60f53edfd4d822027f8"
- integrity sha1-Z6YsYnxAWJ7eu/YPU+39TYIgJ/g=
+ resolved "https://registry.npmmirror.com/unified/-/unified-9.2.0.tgz#67a62c627c40589edebbf60f53edfd4d822027f8"
+ integrity sha512-vx2Z0vY+a3YoTj8+pttM3tiJHCwY5UFbYdiWrwBEbHmK8pvsPj2rtAX2BFfgXen8T39CJWblWRDT4L5WGXtDdg==
dependencies:
bail "^1.0.0"
extend "^3.0.0"
@@ -7473,8 +7540,8 @@ unified@9.2.0:
unified@^8.4.2:
version "8.4.2"
- resolved "https://registry.npmmirror.com/unified/download/unified-8.4.2.tgz?cache=0&sync_timestamp=1637260005329&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Funified%2Fdownload%2Funified-8.4.2.tgz#13ad58b4a437faa2751a4a4c6a16f680c500fff1"
- integrity sha1-E61YtKQ3+qJ1GkpMahb2gMUA//E=
+ resolved "https://registry.npmmirror.com/unified/-/unified-8.4.2.tgz#13ad58b4a437faa2751a4a4c6a16f680c500fff1"
+ integrity sha512-JCrmN13jI4+h9UAyKEoGcDZV+i1E7BLFuG7OsaDvTXI5P0qhHX+vZO/kOhz9jn8HGENDKbwSeB0nVOg4gVStGA==
dependencies:
bail "^1.0.0"
extend "^3.0.0"
@@ -7484,71 +7551,71 @@ unified@^8.4.2:
unique-string@^2.0.0:
version "2.0.0"
- resolved "https://registry.nlark.com/unique-string/download/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d"
- integrity sha1-OcZFH4GvsnSd4rIz4/fF6IQ72J0=
+ resolved "https://registry.npmmirror.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d"
+ integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==
dependencies:
crypto-random-string "^2.0.0"
unist-builder@2.0.3, unist-builder@^2.0.0:
version "2.0.3"
- resolved "https://registry.nlark.com/unist-builder/download/unist-builder-2.0.3.tgz?cache=0&sync_timestamp=1618816093327&other_urls=https%3A%2F%2Fregistry.nlark.com%2Funist-builder%2Fdownload%2Funist-builder-2.0.3.tgz#77648711b5d86af0942f334397a33c5e91516436"
- integrity sha1-d2SHEbXYavCULzNDl6M8XpFRZDY=
+ resolved "https://registry.npmmirror.com/unist-builder/-/unist-builder-2.0.3.tgz#77648711b5d86af0942f334397a33c5e91516436"
+ integrity sha512-f98yt5pnlMWlzP539tPc4grGMsFaQQlP/vM396b00jngsiINumNmsY8rkXjfoi1c6QaM8nQ3vaGDuoKWbe/1Uw==
unist-util-generated@^1.0.0:
version "1.1.6"
- resolved "https://registry.npmmirror.com/unist-util-generated/download/unist-util-generated-1.1.6.tgz#5ab51f689e2992a472beb1b35f2ce7ff2f324d4b"
- integrity sha1-WrUfaJ4pkqRyvrGzXyzn/y8yTUs=
+ resolved "https://registry.npmmirror.com/unist-util-generated/-/unist-util-generated-1.1.6.tgz#5ab51f689e2992a472beb1b35f2ce7ff2f324d4b"
+ integrity sha512-cln2Mm1/CZzN5ttGK7vkoGw+RZ8VcUH6BtGbq98DDtRGquAAOXig1mrBQYelOwMXYS8rK+vZDyyojSjp7JX+Lg==
unist-util-is@^4.0.0:
version "4.1.0"
- resolved "https://registry.nlark.com/unist-util-is/download/unist-util-is-4.1.0.tgz#976e5f462a7a5de73d94b706bac1b90671b57797"
- integrity sha1-l25fRip6Xec9lLcGusG5BnG1d5c=
+ resolved "https://registry.npmmirror.com/unist-util-is/-/unist-util-is-4.1.0.tgz#976e5f462a7a5de73d94b706bac1b90671b57797"
+ integrity sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==
unist-util-position@^3.0.0:
version "3.1.0"
- resolved "https://registry.nlark.com/unist-util-position/download/unist-util-position-3.1.0.tgz#1c42ee6301f8d52f47d14f62bbdb796571fa2d47"
- integrity sha1-HELuYwH41S9H0U9iu9t5ZXH6LUc=
+ resolved "https://registry.npmmirror.com/unist-util-position/-/unist-util-position-3.1.0.tgz#1c42ee6301f8d52f47d14f62bbdb796571fa2d47"
+ integrity sha512-w+PkwCbYSFw8vpgWD0v7zRCl1FpY3fjDSQ3/N/wNd9Ffa4gPi8+4keqt99N3XW6F99t/mUzp2xAhNmfKWp95QA==
unist-util-remove-position@^2.0.0:
version "2.0.1"
- resolved "https://registry.nlark.com/unist-util-remove-position/download/unist-util-remove-position-2.0.1.tgz#5d19ca79fdba712301999b2b73553ca8f3b352cc"
- integrity sha1-XRnKef26cSMBmZsrc1U8qPOzUsw=
+ resolved "https://registry.npmmirror.com/unist-util-remove-position/-/unist-util-remove-position-2.0.1.tgz#5d19ca79fdba712301999b2b73553ca8f3b352cc"
+ integrity sha512-fDZsLYIe2uT+oGFnuZmy73K6ZxOPG/Qcm+w7jbEjaFcJgbQ6cqjs/eSPzXhsmGpAsWPkqZM9pYjww5QTn3LHMA==
dependencies:
unist-util-visit "^2.0.0"
unist-util-remove@2.0.0:
version "2.0.0"
- resolved "https://registry.nlark.com/unist-util-remove/download/unist-util-remove-2.0.0.tgz#32c2ad5578802f2ca62ab808173d505b2c898488"
- integrity sha1-MsKtVXiALyymKrgIFz1QWyyJhIg=
+ resolved "https://registry.npmmirror.com/unist-util-remove/-/unist-util-remove-2.0.0.tgz#32c2ad5578802f2ca62ab808173d505b2c898488"
+ integrity sha512-HwwWyNHKkeg/eXRnE11IpzY8JT55JNM1YCwwU9YNCnfzk6s8GhPXrVBBZWiwLeATJbI7euvoGSzcy9M29UeW3g==
dependencies:
unist-util-is "^4.0.0"
unist-util-remove@^2.0.0:
version "2.1.0"
- resolved "https://registry.nlark.com/unist-util-remove/download/unist-util-remove-2.1.0.tgz#b0b4738aa7ee445c402fda9328d604a02d010588"
- integrity sha1-sLRziqfuRFxAL9qTKNYEoC0BBYg=
+ resolved "https://registry.npmmirror.com/unist-util-remove/-/unist-util-remove-2.1.0.tgz#b0b4738aa7ee445c402fda9328d604a02d010588"
+ integrity sha512-J8NYPyBm4baYLdCbjmf1bhPu45Cr1MWTm77qd9istEkzWpnN6O9tMsEbB2JhNnBCqGENRqEWomQ+He6au0B27Q==
dependencies:
unist-util-is "^4.0.0"
unist-util-stringify-position@^2.0.0:
version "2.0.3"
- resolved "https://registry.nlark.com/unist-util-stringify-position/download/unist-util-stringify-position-2.0.3.tgz#cce3bfa1cdf85ba7375d1d5b17bdc4cada9bd9da"
- integrity sha1-zOO/oc34W6c3XR1bF73Eytqb2do=
+ resolved "https://registry.npmmirror.com/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz#cce3bfa1cdf85ba7375d1d5b17bdc4cada9bd9da"
+ integrity sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==
dependencies:
"@types/unist" "^2.0.2"
unist-util-visit-parents@^3.0.0:
version "3.1.1"
- resolved "https://registry.nlark.com/unist-util-visit-parents/download/unist-util-visit-parents-3.1.1.tgz?cache=0&sync_timestamp=1632209314192&other_urls=https%3A%2F%2Fregistry.nlark.com%2Funist-util-visit-parents%2Fdownload%2Funist-util-visit-parents-3.1.1.tgz#65a6ce698f78a6b0f56aa0e88f13801886cdaef6"
- integrity sha1-ZabOaY94prD1aqDojxOAGIbNrvY=
+ resolved "https://registry.npmmirror.com/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz#65a6ce698f78a6b0f56aa0e88f13801886cdaef6"
+ integrity sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==
dependencies:
"@types/unist" "^2.0.0"
unist-util-is "^4.0.0"
unist-util-visit@2.0.3, unist-util-visit@^2.0.0, unist-util-visit@^2.0.1, unist-util-visit@^2.0.2, unist-util-visit@^2.0.3:
version "2.0.3"
- resolved "https://registry.npmmirror.com/unist-util-visit/download/unist-util-visit-2.0.3.tgz?cache=0&sync_timestamp=1632405093955&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Funist-util-visit%2Fdownload%2Funist-util-visit-2.0.3.tgz#c3703893146df47203bb8a9795af47d7b971208c"
- integrity sha1-w3A4kxRt9HIDu4qXla9H17lxIIw=
+ resolved "https://registry.npmmirror.com/unist-util-visit/-/unist-util-visit-2.0.3.tgz#c3703893146df47203bb8a9795af47d7b971208c"
+ integrity sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==
dependencies:
"@types/unist" "^2.0.0"
unist-util-is "^4.0.0"
@@ -7556,23 +7623,23 @@ unist-util-visit@2.0.3, unist-util-visit@^2.0.0, unist-util-visit@^2.0.1, unist-
universalify@^2.0.0:
version "2.0.0"
- resolved "https://registry.nlark.com/universalify/download/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717"
- integrity sha1-daSYTv7cSwiXXFrrc/Uw0C3yVxc=
+ resolved "https://registry.npmmirror.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717"
+ integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==
unpipe@1.0.0, unpipe@~1.0.0:
version "1.0.0"
- resolved "https://registry.nlark.com/unpipe/download/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
- integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=
+ resolved "https://registry.npmmirror.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
+ integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==
unquote@~1.1.1:
version "1.1.1"
- resolved "https://registry.nlark.com/unquote/download/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544"
- integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=
+ resolved "https://registry.npmmirror.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544"
+ integrity sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==
update-notifier@^5.1.0:
version "5.1.0"
- resolved "https://registry.nlark.com/update-notifier/download/update-notifier-5.1.0.tgz#4ab0d7c7f36a231dd7316cf7729313f0214d9ad9"
- integrity sha1-SrDXx/NqIx3XMWz3cpMT8CFNmtk=
+ resolved "https://registry.npmmirror.com/update-notifier/-/update-notifier-5.1.0.tgz#4ab0d7c7f36a231dd7316cf7729313f0214d9ad9"
+ integrity sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==
dependencies:
boxen "^5.0.0"
chalk "^4.1.0"
@@ -7591,15 +7658,15 @@ update-notifier@^5.1.0:
uri-js@^4.2.2:
version "4.4.1"
- resolved "https://registry.nlark.com/uri-js/download/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e"
- integrity sha1-mxpSWVIlhZ5V9mnZKPiMbFfyp34=
+ resolved "https://registry.npmmirror.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e"
+ integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==
dependencies:
punycode "^2.1.0"
url-loader@^4.1.1:
version "4.1.1"
- resolved "https://registry.npmmirror.com/url-loader/download/url-loader-4.1.1.tgz#28505e905cae158cf07c92ca622d7f237e70a4e2"
- integrity sha1-KFBekFyuFYzwfJLKYi1/I35wpOI=
+ resolved "https://registry.npmmirror.com/url-loader/-/url-loader-4.1.1.tgz#28505e905cae158cf07c92ca622d7f237e70a4e2"
+ integrity sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==
dependencies:
loader-utils "^2.0.0"
mime-types "^2.1.27"
@@ -7607,14 +7674,14 @@ url-loader@^4.1.1:
url-parse-lax@^3.0.0:
version "3.0.0"
- resolved "https://registry.nlark.com/url-parse-lax/download/url-parse-lax-3.0.0.tgz?cache=0&sync_timestamp=1628551699328&other_urls=https%3A%2F%2Fregistry.nlark.com%2Furl-parse-lax%2Fdownload%2Furl-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c"
- integrity sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=
+ resolved "https://registry.npmmirror.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c"
+ integrity sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==
dependencies:
prepend-http "^2.0.0"
url@^0.11.0:
version "0.11.0"
- resolved "https://registry.npmmirror.com/url/download/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1"
+ resolved "https://registry.npmmirror.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1"
integrity sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==
dependencies:
punycode "1.3.2"
@@ -7622,13 +7689,13 @@ url@^0.11.0:
util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1:
version "1.0.2"
- resolved "https://registry.nlark.com/util-deprecate/download/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
- integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
+ resolved "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
+ integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==
util.promisify@~1.0.0:
version "1.0.1"
- resolved "https://registry.nlark.com/util.promisify/download/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee"
- integrity sha1-a693dLgO6w91INi4HQeYKlmruu4=
+ resolved "https://registry.npmmirror.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee"
+ integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==
dependencies:
define-properties "^1.1.3"
es-abstract "^1.17.2"
@@ -7637,51 +7704,51 @@ util.promisify@~1.0.0:
utila@~0.4:
version "0.4.0"
- resolved "https://registry.nlark.com/utila/download/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c"
- integrity sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=
+ resolved "https://registry.npmmirror.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c"
+ integrity sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==
utility-types@^3.10.0:
version "3.10.0"
- resolved "https://registry.nlark.com/utility-types/download/utility-types-3.10.0.tgz#ea4148f9a741015f05ed74fd615e1d20e6bed82b"
- integrity sha1-6kFI+adBAV8F7XT9YV4dIOa+2Cs=
+ resolved "https://registry.npmmirror.com/utility-types/-/utility-types-3.10.0.tgz#ea4148f9a741015f05ed74fd615e1d20e6bed82b"
+ integrity sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg==
utils-merge@1.0.1:
version "1.0.1"
- resolved "https://registry.nlark.com/utils-merge/download/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
- integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=
+ resolved "https://registry.npmmirror.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
+ integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==
uuid@^8.3.2:
version "8.3.2"
- resolved "https://registry.npmmirror.com/uuid/download/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2"
+ resolved "https://registry.npmmirror.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2"
integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==
value-equal@^1.0.1:
version "1.0.1"
- resolved "https://registry.npm.taobao.org/value-equal/download/value-equal-1.0.1.tgz#1e0b794c734c5c0cade179c437d356d931a34d6c"
- integrity sha1-Hgt5THNMXAyt4XnEN9NW2TGjTWw=
+ resolved "https://registry.npmmirror.com/value-equal/-/value-equal-1.0.1.tgz#1e0b794c734c5c0cade179c437d356d931a34d6c"
+ integrity sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==
vary@~1.1.2:
version "1.1.2"
- resolved "https://registry.nlark.com/vary/download/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
- integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=
+ resolved "https://registry.npmmirror.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
+ integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==
vfile-location@^3.0.0, vfile-location@^3.2.0:
version "3.2.0"
- resolved "https://registry.nlark.com/vfile-location/download/vfile-location-3.2.0.tgz#d8e41fbcbd406063669ebf6c33d56ae8721d0f3c"
- integrity sha1-2OQfvL1AYGNmnr9sM9Vq6HIdDzw=
+ resolved "https://registry.npmmirror.com/vfile-location/-/vfile-location-3.2.0.tgz#d8e41fbcbd406063669ebf6c33d56ae8721d0f3c"
+ integrity sha512-aLEIZKv/oxuCDZ8lkJGhuhztf/BW4M+iHdCwglA/eWc+vtuRFJj8EtgceYFX4LRjOhCAAiNHsKGssC6onJ+jbA==
vfile-message@^2.0.0:
version "2.0.4"
- resolved "https://registry.npmmirror.com/vfile-message/download/vfile-message-2.0.4.tgz#5b43b88171d409eae58477d13f23dd41d52c371a"
- integrity sha1-W0O4gXHUCerlhHfRPyPdQdUsNxo=
+ resolved "https://registry.npmmirror.com/vfile-message/-/vfile-message-2.0.4.tgz#5b43b88171d409eae58477d13f23dd41d52c371a"
+ integrity sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==
dependencies:
"@types/unist" "^2.0.0"
unist-util-stringify-position "^2.0.0"
vfile@^4.0.0:
version "4.2.1"
- resolved "https://registry.npmmirror.com/vfile/download/vfile-4.2.1.tgz#03f1dce28fc625c625bc6514350fbdb00fa9e624"
- integrity sha1-A/Hc4o/GJcYlvGUUNQ+9sA+p5iQ=
+ resolved "https://registry.npmmirror.com/vfile/-/vfile-4.2.1.tgz#03f1dce28fc625c625bc6514350fbdb00fa9e624"
+ integrity sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==
dependencies:
"@types/unist" "^2.0.0"
is-buffer "^2.0.0"
@@ -7690,8 +7757,8 @@ vfile@^4.0.0:
wait-on@^6.0.0:
version "6.0.0"
- resolved "https://registry.nlark.com/wait-on/download/wait-on-6.0.0.tgz#7e9bf8e3d7fe2daecbb7a570ac8ca41e9311c7e7"
- integrity sha1-fpv449f+La7Lt6VwrIykHpMRx+c=
+ resolved "https://registry.npmmirror.com/wait-on/-/wait-on-6.0.0.tgz#7e9bf8e3d7fe2daecbb7a570ac8ca41e9311c7e7"
+ integrity sha512-tnUJr9p5r+bEYXPUdRseolmz5XqJTTj98JgOsfBn7Oz2dxfE2g3zw1jE+Mo8lopM3j3et/Mq1yW7kKX6qw7RVw==
dependencies:
axios "^0.21.1"
joi "^17.4.0"
@@ -7701,7 +7768,7 @@ wait-on@^6.0.0:
watchpack@^2.3.1:
version "2.3.1"
- resolved "https://registry.npmmirror.com/watchpack/download/watchpack-2.3.1.tgz#4200d9447b401156eeca7767ee610f8809bc9d25"
+ resolved "https://registry.npmmirror.com/watchpack/-/watchpack-2.3.1.tgz#4200d9447b401156eeca7767ee610f8809bc9d25"
integrity sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==
dependencies:
glob-to-regexp "^0.4.1"
@@ -7709,20 +7776,20 @@ watchpack@^2.3.1:
wbuf@^1.1.0, wbuf@^1.7.3:
version "1.7.3"
- resolved "https://registry.nlark.com/wbuf/download/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df"
- integrity sha1-wdjRSTFtPqhShIiVy2oL/oh7h98=
+ resolved "https://registry.npmmirror.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df"
+ integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==
dependencies:
minimalistic-assert "^1.0.0"
web-namespaces@^1.0.0, web-namespaces@^1.1.2:
version "1.1.4"
- resolved "https://registry.npmmirror.com/web-namespaces/download/web-namespaces-1.1.4.tgz#bc98a3de60dadd7faefc403d1076d529f5e030ec"
- integrity sha1-vJij3mDa3X+u/EA9EHbVKfXgMOw=
+ resolved "https://registry.npmmirror.com/web-namespaces/-/web-namespaces-1.1.4.tgz#bc98a3de60dadd7faefc403d1076d529f5e030ec"
+ integrity sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw==
webpack-bundle-analyzer@^4.4.2:
version "4.5.0"
- resolved "https://registry.npmmirror.com/webpack-bundle-analyzer/download/webpack-bundle-analyzer-4.5.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fwebpack-bundle-analyzer%2Fdownload%2Fwebpack-bundle-analyzer-4.5.0.tgz#1b0eea2947e73528754a6f9af3e91b2b6e0f79d5"
- integrity sha1-Gw7qKUfnNSh1Sm+a8+kbK24PedU=
+ resolved "https://registry.npmmirror.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.5.0.tgz#1b0eea2947e73528754a6f9af3e91b2b6e0f79d5"
+ integrity sha512-GUMZlM3SKwS8Z+CKeIFx7CVoHn3dXFcUAjT/dcZQQmfSZGvitPfMob2ipjai7ovFFqPvTqkEZ/leL4O0YOdAYQ==
dependencies:
acorn "^8.0.4"
acorn-walk "^8.0.0"
@@ -7734,30 +7801,31 @@ webpack-bundle-analyzer@^4.4.2:
sirv "^1.0.7"
ws "^7.3.1"
-webpack-dev-middleware@^5.3.0:
- version "5.3.0"
- resolved "https://registry.npmmirror.com/webpack-dev-middleware/download/webpack-dev-middleware-5.3.0.tgz#8fc02dba6e72e1d373eca361623d84610f27be7c"
- integrity sha512-MouJz+rXAm9B1OTOYaJnn6rtD/lWZPy2ufQCH3BPs8Rloh/Du6Jze4p7AeLYHkVi0giJnYLaSGDC7S+GM9arhg==
+webpack-dev-middleware@^5.3.1:
+ version "5.3.1"
+ resolved "https://registry.npmmirror.com/webpack-dev-middleware/-/webpack-dev-middleware-5.3.1.tgz#aa079a8dedd7e58bfeab358a9af7dab304cee57f"
+ integrity sha512-81EujCKkyles2wphtdrnPg/QqegC/AtqNH//mQkBYSMqwFVCQrxM6ktB2O/SPlZy7LqeEfTbV3cZARGQz6umhg==
dependencies:
colorette "^2.0.10"
- memfs "^3.2.2"
+ memfs "^3.4.1"
mime-types "^2.1.31"
range-parser "^1.2.1"
schema-utils "^4.0.0"
webpack-dev-server@^4.4.0:
- version "4.7.2"
- resolved "https://registry.npmmirror.com/webpack-dev-server/download/webpack-dev-server-4.7.2.tgz#324b79046491f2cf0b9d9e275381198c8246b380"
- integrity sha512-s6yEOSfPpB6g1T2+C5ZOUt5cQOMhjI98IVmmvMNb5cdiqHoxSUfACISHqU/wZy+q4ar/A9jW0pbNj7sa50XRVA==
+ version "4.7.4"
+ resolved "https://registry.npmmirror.com/webpack-dev-server/-/webpack-dev-server-4.7.4.tgz#d0ef7da78224578384e795ac228d8efb63d5f945"
+ integrity sha512-nfdsb02Zi2qzkNmgtZjkrMOcXnYZ6FLKcQwpxT7MvmHKc+oTtDsBju8j+NMyAygZ9GW1jMEUpy3itHtqgEhe1A==
dependencies:
"@types/bonjour" "^3.5.9"
"@types/connect-history-api-fallback" "^1.3.5"
+ "@types/express" "^4.17.13"
"@types/serve-index" "^1.9.1"
"@types/sockjs" "^0.3.33"
"@types/ws" "^8.2.2"
ansi-html-community "^0.0.8"
bonjour "^3.5.0"
- chokidar "^3.5.2"
+ chokidar "^3.5.3"
colorette "^2.0.10"
compression "^1.7.4"
connect-history-api-fallback "^1.6.0"
@@ -7772,39 +7840,39 @@ webpack-dev-server@^4.4.0:
p-retry "^4.5.0"
portfinder "^1.0.28"
schema-utils "^4.0.0"
- selfsigned "^1.10.11"
+ selfsigned "^2.0.0"
serve-index "^1.9.1"
sockjs "^0.3.21"
spdy "^4.0.2"
strip-ansi "^7.0.0"
- webpack-dev-middleware "^5.3.0"
- ws "^8.1.0"
+ webpack-dev-middleware "^5.3.1"
+ ws "^8.4.2"
webpack-merge@^5.8.0:
version "5.8.0"
- resolved "https://registry.nlark.com/webpack-merge/download/webpack-merge-5.8.0.tgz?cache=0&sync_timestamp=1623054906070&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fwebpack-merge%2Fdownload%2Fwebpack-merge-5.8.0.tgz#2b39dbf22af87776ad744c390223731d30a68f61"
- integrity sha1-Kznb8ir4d3atdEw5AiNzHTCmj2E=
+ resolved "https://registry.npmmirror.com/webpack-merge/-/webpack-merge-5.8.0.tgz#2b39dbf22af87776ad744c390223731d30a68f61"
+ integrity sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==
dependencies:
clone-deep "^4.0.1"
wildcard "^2.0.0"
webpack-sources@^1.1.0, webpack-sources@^1.4.3:
version "1.4.3"
- resolved "https://registry.npmmirror.com/webpack-sources/download/webpack-sources-1.4.3.tgz?cache=0&sync_timestamp=1636982699200&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fwebpack-sources%2Fdownload%2Fwebpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933"
- integrity sha1-7t2OwLko+/HL/plOItLYkPMwqTM=
+ resolved "https://registry.npmmirror.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933"
+ integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==
dependencies:
source-list-map "^2.0.0"
source-map "~0.6.1"
-webpack-sources@^3.2.2:
- version "3.2.2"
- resolved "https://registry.npmmirror.com/webpack-sources/download/webpack-sources-3.2.2.tgz?cache=0&sync_timestamp=1636982699200&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fwebpack-sources%2Fdownload%2Fwebpack-sources-3.2.2.tgz#d88e3741833efec57c4c789b6010db9977545260"
- integrity sha512-cp5qdmHnu5T8wRg2G3vZZHoJPN14aqQ89SyQ11NpGH5zEMDCclt49rzo+MaRazk7/UeILhAI+/sEtcM+7Fr0nw==
+webpack-sources@^3.2.3:
+ version "3.2.3"
+ resolved "https://registry.npmmirror.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde"
+ integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==
webpack@^5.61.0:
- version "5.65.0"
- resolved "https://registry.npmmirror.com/webpack/download/webpack-5.65.0.tgz#ed2891d9145ba1f0d318e4ea4f89c3fa18e6f9be"
- integrity sha512-Q5or2o6EKs7+oKmJo7LaqZaMOlDWQse9Tm5l1WAfU/ujLGN5Pb0SqGeVkN/4bpPmEqEP5RnVhiqsOtWtUVwGRw==
+ version "5.68.0"
+ resolved "https://registry.npmmirror.com/webpack/-/webpack-5.68.0.tgz#a653a58ed44280062e47257f260117e4be90d560"
+ integrity sha512-zUcqaUO0772UuuW2bzaES2Zjlm/y3kRBQDVFVCge+s2Y8mwuUTdperGaAv65/NtRL/1zanpSJOq/MD8u61vo6g==
dependencies:
"@types/eslint-scope" "^3.7.0"
"@types/estree" "^0.0.50"
@@ -7820,7 +7888,7 @@ webpack@^5.61.0:
eslint-scope "5.1.1"
events "^3.2.0"
glob-to-regexp "^0.4.1"
- graceful-fs "^4.2.4"
+ graceful-fs "^4.2.9"
json-parse-better-errors "^1.0.2"
loader-runner "^4.2.0"
mime-types "^2.1.27"
@@ -7829,11 +7897,11 @@ webpack@^5.61.0:
tapable "^2.1.1"
terser-webpack-plugin "^5.1.3"
watchpack "^2.3.1"
- webpack-sources "^3.2.2"
+ webpack-sources "^3.2.3"
webpackbar@^5.0.0-3:
version "5.0.2"
- resolved "https://registry.npmmirror.com/webpackbar/download/webpackbar-5.0.2.tgz#d3dd466211c73852741dfc842b7556dcbc2b0570"
+ resolved "https://registry.npmmirror.com/webpackbar/-/webpackbar-5.0.2.tgz#d3dd466211c73852741dfc842b7556dcbc2b0570"
integrity sha512-BmFJo7veBDgQzfWXl/wwYXr/VFus0614qZ8i9znqcl9fnEdiVkdbi0TedLQ6xAK92HZHDJ0QmyQ0fmuZPAgCYQ==
dependencies:
chalk "^4.1.0"
@@ -7843,8 +7911,8 @@ webpackbar@^5.0.0-3:
websocket-driver@>=0.5.1, websocket-driver@^0.7.4:
version "0.7.4"
- resolved "https://registry.nlark.com/websocket-driver/download/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760"
- integrity sha1-ia1Slbv2S0gKvLox5JU6ynBvV2A=
+ resolved "https://registry.npmmirror.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760"
+ integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==
dependencies:
http-parser-js ">=0.5.1"
safe-buffer ">=5.1.0"
@@ -7852,13 +7920,13 @@ websocket-driver@>=0.5.1, websocket-driver@^0.7.4:
websocket-extensions@>=0.1.1:
version "0.1.4"
- resolved "https://registry.npm.taobao.org/websocket-extensions/download/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42"
- integrity sha1-f4RzvIOd/YdgituV1+sHUhFXikI=
+ resolved "https://registry.npmmirror.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42"
+ integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==
which-boxed-primitive@^1.0.2:
version "1.0.2"
- resolved "https://registry.nlark.com/which-boxed-primitive/download/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6"
- integrity sha1-E3V7yJsgmwSf5dhkMOIc9AqJqOY=
+ resolved "https://registry.npmmirror.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6"
+ integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==
dependencies:
is-bigint "^1.0.1"
is-boolean-object "^1.1.0"
@@ -7868,34 +7936,34 @@ which-boxed-primitive@^1.0.2:
which@^1.3.1:
version "1.3.1"
- resolved "https://registry.nlark.com/which/download/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
- integrity sha1-pFBD1U9YBTFtqNYvn1CRjT2nCwo=
+ resolved "https://registry.npmmirror.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
+ integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
dependencies:
isexe "^2.0.0"
which@^2.0.1:
version "2.0.2"
- resolved "https://registry.nlark.com/which/download/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
- integrity sha1-fGqN0KY2oDJ+ELWckobu6T8/UbE=
+ resolved "https://registry.npmmirror.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
+ integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
dependencies:
isexe "^2.0.0"
widest-line@^3.1.0:
version "3.1.0"
- resolved "https://registry.npmmirror.com/widest-line/download/widest-line-3.1.0.tgz?cache=0&sync_timestamp=1634023966185&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fwidest-line%2Fdownload%2Fwidest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca"
- integrity sha1-gpIzO79my0X/DeFgOxNreuFJbso=
+ resolved "https://registry.npmmirror.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca"
+ integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==
dependencies:
string-width "^4.0.0"
wildcard@^2.0.0:
version "2.0.0"
- resolved "https://registry.npm.taobao.org/wildcard/download/wildcard-2.0.0.tgz#a77d20e5200c6faaac979e4b3aadc7b3dd7f8fec"
- integrity sha1-p30g5SAMb6qsl55LOq3Hs91/j+w=
+ resolved "https://registry.npmmirror.com/wildcard/-/wildcard-2.0.0.tgz#a77d20e5200c6faaac979e4b3aadc7b3dd7f8fec"
+ integrity sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==
wrap-ansi@^7.0.0:
version "7.0.0"
- resolved "https://registry.nlark.com/wrap-ansi/download/wrap-ansi-7.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fwrap-ansi%2Fdownload%2Fwrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
- integrity sha1-Z+FFz/UQpqaYS98RUpEdadLrnkM=
+ resolved "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
+ integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
dependencies:
ansi-styles "^4.0.0"
string-width "^4.1.0"
@@ -7903,13 +7971,13 @@ wrap-ansi@^7.0.0:
wrappy@1:
version "1.0.2"
- resolved "https://registry.nlark.com/wrappy/download/wrappy-1.0.2.tgz?cache=0&sync_timestamp=1619133505879&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fwrappy%2Fdownload%2Fwrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
- integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
+ resolved "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
+ integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==
write-file-atomic@^3.0.0:
version "3.0.3"
- resolved "https://registry.npm.taobao.org/write-file-atomic/download/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8"
- integrity sha1-Vr1cWlxwSBzRnFcb05q5ZaXeVug=
+ resolved "https://registry.npmmirror.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8"
+ integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==
dependencies:
imurmurhash "^0.1.4"
is-typedarray "^1.0.0"
@@ -7918,42 +7986,42 @@ write-file-atomic@^3.0.0:
ws@^7.3.1:
version "7.5.6"
- resolved "https://registry.npmmirror.com/ws/download/ws-7.5.6.tgz#e59fc509fb15ddfb65487ee9765c5a51dec5fe7b"
+ resolved "https://registry.npmmirror.com/ws/-/ws-7.5.6.tgz#e59fc509fb15ddfb65487ee9765c5a51dec5fe7b"
integrity sha512-6GLgCqo2cy2A2rjCNFlxQS6ZljG/coZfZXclldI8FB/1G3CCI36Zd8xy2HrFVACi8tfk5XrgLQEk+P0Tnz9UcA==
-ws@^8.1.0:
- version "8.4.0"
- resolved "https://registry.npmmirror.com/ws/download/ws-8.4.0.tgz#f05e982a0a88c604080e8581576e2a063802bed6"
- integrity sha512-IHVsKe2pjajSUIl4KYMQOdlyliovpEPquKkqbwswulszzI7r0SfQrxnXdWAEqOlDCLrVSJzo+O1hAwdog2sKSQ==
+ws@^8.4.2:
+ version "8.4.2"
+ resolved "https://registry.npmmirror.com/ws/-/ws-8.4.2.tgz#18e749868d8439f2268368829042894b6907aa0b"
+ integrity sha512-Kbk4Nxyq7/ZWqr/tarI9yIt/+iNNFOjBXEWgTb4ydaNHBNGgvf2QHbS9fdfsndfjFlFwEd4Al+mw83YkaD10ZA==
xdg-basedir@^4.0.0:
version "4.0.0"
- resolved "https://registry.nlark.com/xdg-basedir/download/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13"
- integrity sha1-S8jZmEQDaWIl74OhVzy7y0552xM=
+ resolved "https://registry.npmmirror.com/xdg-basedir/-/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13"
+ integrity sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==
xml-js@^1.6.11:
version "1.6.11"
- resolved "https://registry.npm.taobao.org/xml-js/download/xml-js-1.6.11.tgz#927d2f6947f7f1c19a316dd8eea3614e8b18f8e9"
- integrity sha1-kn0vaUf38cGaMW3Y7qNhTosY+Ok=
+ resolved "https://registry.npmmirror.com/xml-js/-/xml-js-1.6.11.tgz#927d2f6947f7f1c19a316dd8eea3614e8b18f8e9"
+ integrity sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==
dependencies:
sax "^1.2.4"
xtend@^4.0.0, xtend@^4.0.1, xtend@^4.0.2:
version "4.0.2"
- resolved "https://registry.nlark.com/xtend/download/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
- integrity sha1-u3J3n1+kZRhrH0OPZ0+jR/2121Q=
+ resolved "https://registry.npmmirror.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
+ integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==
yallist@^4.0.0:
version "4.0.0"
- resolved "https://registry.npm.taobao.org/yallist/download/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
- integrity sha1-m7knkNnA7/7GO+c1GeEaNQGaOnI=
+ resolved "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
+ integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
yaml@^1.10.0, yaml@^1.10.2, yaml@^1.7.2:
version "1.10.2"
- resolved "https://registry.npmmirror.com/yaml/download/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b"
- integrity sha1-IwHF/78StGfejaIzOkWeKeeSDks=
+ resolved "https://registry.npmmirror.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b"
+ integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==
zwitch@^1.0.0:
version "1.0.5"
- resolved "https://registry.npm.taobao.org/zwitch/download/zwitch-1.0.5.tgz#d11d7381ffed16b742f6af7b3f223d5cd9fe9920"
- integrity sha1-0R1zgf/tFrdC9q97PyI9XNn+mSA=
+ resolved "https://registry.npmmirror.com/zwitch/-/zwitch-1.0.5.tgz#d11d7381ffed16b742f6af7b3f223d5cd9fe9920"
+ integrity sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==