diff --git a/.autocorrectrc b/.autocorrectrc new file mode 100644 index 0000000000..b4f89f5ae5 --- /dev/null +++ b/.autocorrectrc @@ -0,0 +1,122 @@ +# yaml-language-server: $schema=https://huacnlee.github.io/autocorrect/schema.json +rules: + # Default rules: https://github.com/huacnlee/autocorrect/raw/main/autocorrect/.autocorrectrc.default + spellcheck: 2 +textRules: + # Config some special rule for some texts + # For example, if we wants to let "Hello你好" just warning, and "Hi你好" to ignore + # "Hello你好": 2 + # "Hi你好": 0 + +fileTypes: + # Config the files associations, you config is higher priority than default. + # "rb": ruby + # "Rakefile": ruby + # "*.js": javascript + # ".mdx": markdown +spellcheck: + words: + # Please do not add a general English word (eg. apple, python) here. + # Users can add their special words to their .autocorrectrc file by their need. + - ActiveMQ + - AirPods + - Aliyun + - API + - App Store + - AppKit + - AppStore = App Store + - AWS + - CacheStorage + - CDN + - CentOS + - CloudFront + - CORS + - CPU + - DNS + - Elasticsearch + - ESLint + - Facebook + - GeForce + - GitHub + - Google + - GPU + - H5 + - Hadoop + - HBase + - HDFS + - HKEX + - HTML + - HTTP + - HTTPS + - I10n + - I18n + - iMovie + - IndexedDB + - Intel + - iOS + - iPad + - iPadOS + - iPhone + - iTunes + - JavaScript + - jQuery + - JSON + - JWT + - Linux + - LocalStorage + - macOS + - Markdown + - MatrixOne + - MatrixOrigin + - Microsoft + - MongoDB + - Mozilla + - MVC + - MySQL + - Nasdaq + - Netflix + - NodeJS = Node.js + - NoSQL + - NVDIA + - NYSE + - OAuth + - Objective-C + - OLAP + - OSS + - P2P + - PaaS + - RabbitMQ + - Redis + - RESTful + - RSS + - RubyGem + - RubyGems + - SaaS + - Sass + - SDK + - Shopify + - SQL + - SQLite + - SQLServer + - SSL + - Tesla + - TikTok + - tvOS + - TypeScript + - Ubuntu + - UML + - URI + - URL + - VIM + - watchOS + - WebAssembly + - WebKit + - Webpack + - Wi-Fi + - Windows + - WWDC + - Xcode + - XML + - YAML + - YML + - YouTube diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 8ed0c65278..92dc168af2 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -1,11 +1,7 @@ name: lint on: - pull_request_target: - types: [ opened, synchronize, reopened ] - branches: - - '*' - workflow_dispatch: + pull_request: jobs: lint-docs: @@ -13,24 +9,45 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out code - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: repository: ${{ github.event.pull_request.head.repo.full_name }} ref: ${{ github.event.pull_request.head.ref }} - - name: Lint docs - uses: docker://avtodev/markdown-lint:v1 # fastest way + - name: Get all changed markdown files + id: changed-markdown-files + uses: tj-actions/changed-files@v40 with: - config: './.markdownlint.yaml' - args: './docs/MatrixOne' + since_last_remote_commit: true + files: | + **.md - - name: Install NodeJS + - name: Setup node + if: steps.changed-markdown-files.outputs.any_changed == 'true' uses: actions/setup-node@v3 with: - node-version: 18 - - - name: Install NodeJS Dependencies - run: npm ci + node-version: 20 - - name: Lint Chinese content - run: npm run lint + - name: Install node deps + if: steps.changed-markdown-files.outputs.any_changed == 'true' + run: | + corepack enable + pnpm i --frozen-lockfile + + - name: Lint with markdownlint + if: steps.changed-markdown-files.outputs.any_changed == 'true' + run: | + npx markdownlint-cli2 ${{ steps.changed-markdown-files.outputs.all_changed_files }} + + - name: Lint with zhlint + if: steps.changed-markdown-files.outputs.any_changed == 'true' + run: | + npm run config:zhlint + for file in ${{ steps.changed-markdown-files.outputs.all_changed_files }}; do + npx zhlint $file + done + + - name: Lint with autocorrect + if: steps.changed-markdown-files.outputs.any_changed == 'true' + run: | + npm run lint:autocorrect ${{ steps.changed-markdown-files.outputs.all_changed_files }} diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 0000000000..7eedbbe787 --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +20.9.0 diff --git a/README.md b/README.md index c7b83ab77a..c088430e1a 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ 欢迎来到 MatrixOne 中文文档库! -这个资源库存储了 MatrixOne 文档网站的所有源文件。你可以通过[matrixorigin docs](https://docs.matrixorigin.cn)访问我们的文档。 +这个资源库存储了 MatrixOne 文档网站的所有源文件。你可以通过 [matrixorigin docs](https://docs.matrixorigin.cn) 访问我们的文档。 MatrixOne 是一个面向未来的超融合云和边缘原生 DBMS,通过一个简化的分布式数据库引擎支持交易、分析和流等工作负载,跨越多个数据中心、云、边缘和其他异构基础设施。 diff --git a/docs/MatrixOne/Contribution-Guide/Code-Style/code-comment-style.md b/docs/MatrixOne/Contribution-Guide/Code-Style/code-comment-style.md index 5233934912..286f278054 100644 --- a/docs/MatrixOne/Contribution-Guide/Code-Style/code-comment-style.md +++ b/docs/MatrixOne/Contribution-Guide/Code-Style/code-comment-style.md @@ -113,7 +113,7 @@ - 尽量在写代码的同时就完成注释,减少事后返工 - 不要假设代码是不证自明的 - 对于简单代码尽量避免使用过多注释 -- 有 “代入感” 地做注释(仿佛在进行对话一般) +- 有“代入感”地做注释(仿佛在进行对话一般) - 确保及时更新注释 - 保证注释清楚易懂 diff --git a/docs/MatrixOne/Contribution-Guide/Code-Style/commit-pr-style.md b/docs/MatrixOne/Contribution-Guide/Code-Style/commit-pr-style.md index 847cdeeb04..73d6690abc 100644 --- a/docs/MatrixOne/Contribution-Guide/Code-Style/commit-pr-style.md +++ b/docs/MatrixOne/Contribution-Guide/Code-Style/commit-pr-style.md @@ -50,7 +50,7 @@ - 不要在最后添加句号。 - 第二行请留白 -- 第三行 “why” 部分,如果没有特定的原因,您可以使用以下表述,如 "Improve performance","Improve test coverage." +- 第三行“why”部分,如果没有特定的原因,您可以使用以下表述,如 "Improve performance","Improve test coverage." - 其他行不超过 80 个字符。 ### **良好的习惯** diff --git a/docs/MatrixOne/Contribution-Guide/How-to-Contribute/review-a-pull-request.md b/docs/MatrixOne/Contribution-Guide/How-to-Contribute/review-a-pull-request.md index 886c3020f6..707eb71c0e 100644 --- a/docs/MatrixOne/Contribution-Guide/How-to-Contribute/review-a-pull-request.md +++ b/docs/MatrixOne/Contribution-Guide/How-to-Contribute/review-a-pull-request.md @@ -13,7 +13,7 @@ 尊重每一个 PR 请求的发起人和其他审阅者。代码审阅是社区活动的重要部分,因此请遵循社区要求。 * **注意语气** -在与他人沟通交流时,我们鼓励您多使用 “建议” 或者 “提问” 的语气,而不要总是命令他人。换位思考,所有人都希望被温柔以待! +在与他人沟通交流时,我们鼓励您多使用“建议”或者“提问”的语气,而不要总是命令他人。换位思考,所有人都希望被温柔以待! * **赞美** 不要吝啬对他人的赞美!一个好的想法或者好的成果值得我们夸赞。在很多情况下,鼓励、赞美他人往往比不留情面的批评更有价值! @@ -27,7 +27,7 @@ 请避免个人偏见和主观情绪。诚然,每个人的评论或多或少都会带有主观色彩,但是,作为一个成熟的审阅者,您应该注重技术和数据,而不是个人的喜好。 * **灵活而审慎** -当遇见一些复杂问题时,即使是在综合考量多方因素之后也很难抉择,“接受” 还是 “拒绝”,是个两难的问题———我们也无法给出一个明确、具体的标准,只能说 “具体情况,具体分析”。但是我们建议您在难以抉择时,寻求他人的帮助。 +当遇见一些复杂问题时,即使是在综合考量多方因素之后也很难抉择,“接受”还是“拒绝”,是个两难的问题———我们也无法给出一个明确、具体的标准,只能说“具体情况,具体分析”。但是我们建议您在难以抉择时,寻求他人的帮助。 ## **对 PR 分类** diff --git a/docs/MatrixOne/Contribution-Guide/How-to-Contribute/types-of-contributions.md b/docs/MatrixOne/Contribution-Guide/How-to-Contribute/types-of-contributions.md index d276847cca..d08b436fee 100644 --- a/docs/MatrixOne/Contribution-Guide/How-to-Contribute/types-of-contributions.md +++ b/docs/MatrixOne/Contribution-Guide/How-to-Contribute/types-of-contributions.md @@ -21,7 +21,7 @@ | 类型 | 说明 | | ------------------------------------------------- | ------------------------------------------------------------ | -| 分享用例和解决方案 | 向用户展示如何在特定场景下使用 MatrixOne,可以将您的用例发送到 dengnan@matrixorigin.io,我们将在社区中发布。 | +| 分享用例和解决方案 | 向用户展示如何在特定场景下使用 MatrixOne,可以将您的用例发送到 ,我们将在社区中发布。 | | 撰写博文、故事墙、白皮书 | 撰写高质量的文章,清晰准确地解释有关 MatrixOne 的技术细节。| | 做一场技术演讲或现场直播 | 发表演讲或现场直播可以帮助提高各界朋友对 MatrixOne 的认识。| | 互相支持 | 帮助 GitHub 上的用户解决使用 MatrixOne 时遇到的问题。 | diff --git a/docs/MatrixOne/Contribution-Guide/make-your-first-contribution.md b/docs/MatrixOne/Contribution-Guide/make-your-first-contribution.md index 9fa39946b7..20be863853 100644 --- a/docs/MatrixOne/Contribution-Guide/make-your-first-contribution.md +++ b/docs/MatrixOne/Contribution-Guide/make-your-first-contribution.md @@ -14,7 +14,7 @@ MatrixOne 社区欢迎所有开发者的加入和贡献!本章节旨在帮助 ## **认领任务** -当您提出 Issue 之后或者是在浏览 `good-first-issue` 后决定上手解决,您需要认领这次 Issue。在相应 Issue 的评论中输入如 “I'd like to work on this issue”,社区人员会将任务分配给您,此时,您可以在右侧的 Assignees 板块看见自己,接下来便可以正式着手解决问题。 +当您提出 Issue 之后或者是在浏览 `good-first-issue` 后决定上手解决,您需要认领这次 Issue。在相应 Issue 的评论中输入如“I'd like to work on this issue”,社区人员会将任务分配给您,此时,您可以在右侧的 Assignees 板块看见自己,接下来便可以正式着手解决问题。 ## **前置准备** diff --git a/docs/MatrixOne/Deploy/MatrixOne-cluster-Scale.md b/docs/MatrixOne/Deploy/MatrixOne-cluster-Scale.md index 69d1eecf29..00c62248d1 100644 --- a/docs/MatrixOne/Deploy/MatrixOne-cluster-Scale.md +++ b/docs/MatrixOne/Deploy/MatrixOne-cluster-Scale.md @@ -132,9 +132,9 @@ Kubernetes 可以通过 kuboard spray 图形化管理页面来完成节点的扩 2. 根据上述返回的结果和实际需求,你可以为节点打上标签,参见下面的代码示例: ``` - NODE="[待打上标签的节点]" # 根据上述结果,有可能是ip、也可能是主机名、或者别名,例如10.0.0.1、host-10-0-0-1、node01,那么设置NODE="node0" - LABEL_K="mo-role" # 标签的key,可按需定义,也可以直接用示例 - LABEL_V="mo-cn" # 标签的value,可按需定义,也可以直接用示例 + NODE="[待打上标签的节点]" # 根据上述结果,有可能是 ip、也可能是主机名、或者别名,例如 10.0.0.1、host-10-0-0-1、node01,那么设置 NODE="node0" + LABEL_K="mo-role" # 标签的 key,可按需定义,也可以直接用示例 + LABEL_V="mo-cn" # 标签的 value,可按需定义,也可以直接用示例 kubectl label node ${NODE} ${LABEL_K}=${LABEL_V} ``` diff --git a/docs/MatrixOne/Deploy/deploy-MatrixOne-cluster.md b/docs/MatrixOne/Deploy/deploy-MatrixOne-cluster.md index a9d88100d4..fc36f8f1fa 100644 --- a/docs/MatrixOne/Deploy/deploy-MatrixOne-cluster.md +++ b/docs/MatrixOne/Deploy/deploy-MatrixOne-cluster.md @@ -30,11 +30,11 @@ - PersistentVolumeClaim - PersistentVolumeClaim,简称 **PVC**,作为用户对存储资源的需求申请, 主要包括存储空间请求、访问模式、PV 选择条件和存储类别等信息的设置。 + PersistentVolumeClaim,简称 **PVC**,作为用户对存储资源的需求申请,主要包括存储空间请求、访问模式、PV 选择条件和存储类别等信息的设置。 - Service - 也叫做 **SVC**,通过标签选择的方式匹配一组 Pod 对外访问服务的一种机制, 每一个 svc 可以理解为一个微服务。 + 也叫做 **SVC**,通过标签选择的方式匹配一组 Pod 对外访问服务的一种机制,每一个 svc 可以理解为一个微服务。 - Operator @@ -514,17 +514,17 @@ __Note:__ 本章节均是在 master0 节点操作。 spec: # 1. 配置 tn tn: - cacheVolume: # tn的磁盘缓存 + cacheVolume: # tn 的磁盘缓存 size: 5Gi # 根据实际磁盘大小和需求修改 - storageClassName: local-path # 如果不写,会用系统默认的storage class + storageClassName: local-path # 如果不写,会用系统默认的 storage class resources: requests: cpu: 100m #1000m=1c memory: 500Mi # 1024Mi - limits: # 注意limits不能低于requests,也不能超过单节点的能力,一般根据实际情况来分配,一般设置limits和requests一致即可 + limits: # 注意 limits 不能低于 requests,也不能超过单节点的能力,一般根据实际情况来分配,一般设置 limits 和 requests 一致即可 cpu: 200m memory: 1Gi - config: | # tn的配置 + config: | # tn 的配置 [dn.Txn.Storage] backend = "TAE" log-backend = "logservice" @@ -538,15 +538,15 @@ __Note:__ 本章节均是在 master0 节点操作。 level = "error" format = "json" max-size = 512 - replicas: 1 # tn的副本数,不可修改。当前版本仅支持设置为 1。 + replicas: 1 # tn 的副本数,不可修改。当前版本仅支持设置为 1。 # 2. 配置 logservice logService: - replicas: 3 # logservice的副本数 + replicas: 3 # logservice 的副本数 resources: requests: cpu: 100m #1000m=1c memory: 500Mi # 1024Mi - limits: # 注意limits不能低于requests,也不能超过单节点的能力,一般根据实际情况来分配,一般设置limits和requests一致即可 + limits: # 注意 limits 不能低于 requests,也不能超过单节点的能力,一般根据实际情况来分配,一般设置 limits 和 requests 一致即可 cpu: 200m memory: 1Gi sharedStorage: # 配置 logservice 对接的 s3 存储 @@ -573,7 +573,7 @@ __Note:__ 本章节均是在 master0 节点操作。 requests: cpu: 100m #1000m=1c memory: 500Mi # 1024Mi - limits: # 注意limits不能低于requests,也不能超过单节点的能力,一般根据实际情况来分配,一般设置limits和requests一致即可 + limits: # 注意 limits 不能低于 requests,也不能超过单节点的能力,一般根据实际情况来分配,一般设置 limits 和 requests 一致即可 cpu: 200m memory: 2Gi serviceType: NodePort # cn 需要对外提供访问入口,其 svc 设置为 NodePort diff --git a/docs/MatrixOne/Deploy/deployment-topology/minimal-deployment-topology.md b/docs/MatrixOne/Deploy/deployment-topology/minimal-deployment-topology.md index 2725abed43..cbb399769c 100644 --- a/docs/MatrixOne/Deploy/deployment-topology/minimal-deployment-topology.md +++ b/docs/MatrixOne/Deploy/deployment-topology/minimal-deployment-topology.md @@ -11,7 +11,7 @@ | 设备台数 | 3 台 | | CPU 配置 | 8 核以上 | | 内存配置 | 32GB 以上 | -| 磁盘配置 | 每节点1块系统盘 100G, 4-7块数据盘 100G, 均需要 PCIe NVME SSD 3.0 | +| 磁盘配置 | 每节点 1 块系统盘 100G, 4-7 块数据盘 100G, 均需要 PCIe NVME SSD 3.0 | | 网卡配置 | 双万兆网口,万兆网卡及交换机 | ## 软件配置 @@ -28,6 +28,6 @@ | 节点名称 | 资源 | 节点角色 | 部署模块 | 磁盘部署 | | -------- | ----- | -------------- | :----------------------------------------------------------- | ------------------------------------------------------------ | -| node0 | 8c32g | 管控/存储/计算 | 部署及运维工具 mo-ctl, Kubernetes master/node,Minio, MatrixOne Proxy,Logservice,TN,负载均衡 | Kubernetes 需要1块数据盘,Minio 需要 1 至 4 块数据盘(建议物理分盘,也可逻辑分盘), Logservice 需要1块数据盘,TN 需要 1 块数据盘 | -| node1 | 8c32g | 管控/存储/计算 | 部署及运维工具 mo-ctl, Kubernetes master/node,Minio,MatrixOne Proxy,Logservice,CN,负载均衡 | Kubernetes 需要1块数据盘,Minio 需要1-4块数据盘(建议物理分盘,也可逻辑分盘), Logservice 需要1块数据盘,CN需要1块数据盘 | -| node2 | 8c32g | 管控/存储/计算 | 部署及运维工具 mo-ctl, Kubernetes master/node,Minio,MatrixOne Proxy,Logservice,CN,负载均衡 | Kubernetes 需要 1 块数据盘,Minio需要1-4块数据盘(建议物理分盘,也可逻辑分盘), Logservice 需要 1 块数据盘,CN 需要 1 块数据盘 | +| node0 | 8c32g | 管控/存储/计算 | 部署及运维工具 mo-ctl, Kubernetes master/node,Minio,MatrixOne Proxy,Logservice,TN,负载均衡 | Kubernetes 需要 1 块数据盘,Minio 需要 1 至 4 块数据盘(建议物理分盘,也可逻辑分盘), Logservice 需要 1 块数据盘,TN 需要 1 块数据盘 | +| node1 | 8c32g | 管控/存储/计算 | 部署及运维工具 mo-ctl, Kubernetes master/node,Minio,MatrixOne Proxy,Logservice,CN,负载均衡 | Kubernetes 需要 1 块数据盘,Minio 需要 1-4 块数据盘(建议物理分盘,也可逻辑分盘), Logservice 需要 1 块数据盘,CN 需要 1 块数据盘 | +| node2 | 8c32g | 管控/存储/计算 | 部署及运维工具 mo-ctl, Kubernetes master/node,Minio,MatrixOne Proxy,Logservice,CN,负载均衡 | Kubernetes 需要 1 块数据盘,Minio 需要 1-4 块数据盘(建议物理分盘,也可逻辑分盘), Logservice 需要 1 块数据盘,CN 需要 1 块数据盘 | diff --git a/docs/MatrixOne/Deploy/deployment-topology/recommended-prd-deployment-topology.md b/docs/MatrixOne/Deploy/deployment-topology/recommended-prd-deployment-topology.md index 969e1c93ef..7b32591d85 100644 --- a/docs/MatrixOne/Deploy/deployment-topology/recommended-prd-deployment-topology.md +++ b/docs/MatrixOne/Deploy/deployment-topology/recommended-prd-deployment-topology.md @@ -8,22 +8,22 @@ ## 软件及硬件配置要求 -| **模块** | Kubernetes master | Minio | LogService | TN(混部Proxy及负载均衡) | CN(混部Proxy及负载均衡) | +| **模块** | Kubernetes master | Minio | LogService | TN(混部 Proxy 及负载均衡) | CN(混部 Proxy 及负载均衡) | | :-----------------------: | -------------------------- | ---------- | -------- | -------- | -------------------- | | **台数(物理机、虚拟机均可)** | 3 台 | 4 台 | 3 台 | 1 台 | y 台 | | **节点角色** | Kubernetes 管控 | 存储服务 | MatrixOne 工作节点 | MatrixOne 工作节点 | MatrixOne 工作节点 | -| **CPU 配置** | 4 核以上 | 4 核以上 | 4核以上 | 16 核以上 | 16 核以上 | +| **CPU 配置** | 4 核以上 | 4 核以上 | 4 核以上 | 16 核以上 | 16 核以上 | | **内存配置** | 8GB 以上 | 8GB 以上 | 8GB 以上 | 64GB 以上 | 32GB 以上 | | **网卡** | 双万兆网口,万兆网卡 | 同上 | 同上 | 同上 | 同上 | -| **系统盘配置** | 每节点 PCIe NVME SSD 3.0 × 1块 100GB,建议做 Raid 1 | 同上 | 同上 | 同上 | 同上 | -| **Kubernetes 盘配置** | 每节点 PCIe NVME SSD 3.0 × 1块 100GB,建议做 Raid 1 | 同上 | 同上 | 同上 | 同上 | -| **数据盘配置** | N/A | 每节点 PCIe NVME SSD 3.0 × 4块 × a G/块 ,raid无要求,建议物理分盘,可逻辑分盘。 | 每节点 NVME SSD 3.0/4.0 (1G/s以上读取速率) × 1块 × b G/块。 | NVME SSD 3.0/4.0 × 2 块 × c G/块 | 每节点 NVME SSD 3.0/4.0 × 2块 × d G/块 。 | -| **备注** | | a 与业务数据量相关,a = 业务数据量×2/16。 | b 与业务数据量相关,越接近越好。 | c 与业务数据量相关,越接近越好。其中一块给 TN/CN 故障恢复时备用。 | d 与业务数据量相关,越接近越好。其中一块给 TN/CN 故障恢复时备用。y与业务负载相关。 | +| **系统盘配置** | 每节点 PCIe NVME SSD 3.0 × 1 块 100GB,建议做 Raid 1 | 同上 | 同上 | 同上 | 同上 | +| **Kubernetes 盘配置** | 每节点 PCIe NVME SSD 3.0 × 1 块 100GB,建议做 Raid 1 | 同上 | 同上 | 同上 | 同上 | +| **数据盘配置** | N/A | 每节点 PCIe NVME SSD 3.0 × 4 块 × a G/块,raid 无要求,建议物理分盘,可逻辑分盘。 | 每节点 NVME SSD 3.0/4.0 (1G/s 以上读取速率) × 1 块 × b G/块。 | NVME SSD 3.0/4.0 × 2 块 × c G/块 | 每节点 NVME SSD 3.0/4.0 × 2 块 × d G/块。 | +| **备注** | | a 与业务数据量相关,a = 业务数据量×2/16。 | b 与业务数据量相关,越接近越好。 | c 与业务数据量相关,越接近越好。其中一块给 TN/CN 故障恢复时备用。 | d 与业务数据量相关,越接近越好。其中一块给 TN/CN 故障恢复时备用。y 与业务负载相关。 | ## 其他配置 | 操作系统 | 支持的 CPU 架构 | | :----------------------------------------- | :-------------- | -| Debian 11 以上版本(Kernel内核要求 5.0 以上) | X86_64 | +| Debian 11 以上版本(Kernel 内核要求 5.0 以上) | X86_64 | 由于每个私有化生产环境部署场景均存在差异,有关具体部署方案及部署细节,请联系 MatrixOne 的客户支持团队。 diff --git a/docs/MatrixOne/Deploy/health-check-resource-monitoring.md b/docs/MatrixOne/Deploy/health-check-resource-monitoring.md index 119bb31fd6..46d6d9de8d 100644 --- a/docs/MatrixOne/Deploy/health-check-resource-monitoring.md +++ b/docs/MatrixOne/Deploy/health-check-resource-monitoring.md @@ -42,7 +42,7 @@ MinIO 自带了一个管理界面,通过该界面我们可以以可视化的 2. 根据上述返回结果,使用以下命令来查看特定节点的资源使用情况。根据之前的部署方案,可以查看到 MatrixOne 集群位于名为 node0 的节点上: ``` - NODE="[待监控节点]" # 根据上述结果,有可能是ip、也可能是主机名、或者别名,例如10.0.0.1、host-10-0-0-1、node01 + NODE="[待监控节点]" # 根据上述结果,有可能是 ip、也可能是主机名、或者别名,例如 10.0.0.1、host-10-0-0-1、node01 kubectl top node ${NODE} ``` @@ -251,7 +251,7 @@ Events: 2. 根据上述返回结果,使用以下命令来查看特定 Pod 的资源使用情况: ``` - POD="[待监控pod名称]" # 根据上述结果,例如:tn为mo-tn-0,cn为mo-tp-cn-0、mo-tp-cn-1、...,logservice为mo-log-0、mo-log-1、... + POD="[待监控 pod 名称]" # 根据上述结果,例如:tn 为 mo-tn-0,cn 为 mo-tp-cn-0、mo-tp-cn-1、...,logservice 为 mo-log-0、mo-log-1、... kubectl top pod ${POD} -n${NS} ``` diff --git a/docs/MatrixOne/Deploy/mgmt-cn-group-using-proxy.md b/docs/MatrixOne/Deploy/mgmt-cn-group-using-proxy.md index c5f4356efe..f5dc226373 100644 --- a/docs/MatrixOne/Deploy/mgmt-cn-group-using-proxy.md +++ b/docs/MatrixOne/Deploy/mgmt-cn-group-using-proxy.md @@ -48,7 +48,7 @@ Proxy 在 CN 缩容时通过以上行为处理会话的迁移和关闭,以确 namespace: mo-hn spec: + proxy: - + replicas: 2 #为了高可用,proxy的replicas需要至少2个 + + replicas: 2 #为了高可用,proxy 的 replicas 需要至少 2 个 ``` 2. 修改完成后,使用下面的命令行运行 `mo.yaml` 文件: diff --git a/docs/MatrixOne/Deploy/update-MatrixOne-cluster.md b/docs/MatrixOne/Deploy/update-MatrixOne-cluster.md index 2f12b921f0..bca0a739b2 100644 --- a/docs/MatrixOne/Deploy/update-MatrixOne-cluster.md +++ b/docs/MatrixOne/Deploy/update-MatrixOne-cluster.md @@ -15,9 +15,9 @@ 1. 在 master0 节点的终端上执行以下命令,进入动态修改 operator 使用的 `yaml` 配置文件的界面。 ``` - mo_ns="mo-hn" #matrixone集群的namespace - mo_cluster_name="mo" # matrixone的集群名称,一般为mo,根据部署时matrixonecluster对象的yaml文件中的name指定,也可以通过kubectl get matrixonecluster -n${mo_ns}来确认 - #mo-hn及mo已在安装部署的mo.yaml文件中设置 + mo_ns="mo-hn" #matrixone 集群的 namespace + mo_cluster_name="mo" # matrixone 的集群名称,一般为 mo,根据部署时 matrixonecluster 对象的 yaml 文件中的 name 指定,也可以通过 kubectl get matrixonecluster -n${mo_ns}来确认 + #mo-hn 及 mo 已在安装部署的 mo.yaml 文件中设置 kubectl edit matrixonecluster ${mo_cluster_name} -n${mo_ns} ``` @@ -50,7 +50,7 @@ 如果发生 error、crashbackoff 等情况,可以通过查看组件的日志来进一步排查问题。 ``` - # pod_name是pod的名称,如mo-tn-0,mo-tp-cn-0 + # pod_name 是 pod 的名称,如 mo-tn-0,mo-tp-cn-0 pod_name=mo-tn-0 kubectl logs ${pod_name} -nmo-hn > /tmp/tn.log vim /tmp/tn.log @@ -59,12 +59,12 @@ 4. 当 MatrixOne 集群中的组件均 `Restart` 完成后,可以用 MySQL Client 连接集群,如果连接成功且用户数据均完整,则说明升级成功。 ``` - # 使用 'mysql' 命令行工具连接到MySQL服务 - # 使用 'kubectl get svc/mo-tp-cn -n mo-hn -o jsonpath='{.spec.clusterIP}' ' 获取Kubernetes集群中服务的集群IP地址 - # '-h' 参数指定了MySQL服务的主机名或IP地址 - # '-P' 参数指定了MySQL服务的端口号,这里是6001 - # '-uroot' 表示用root用户登录 - # '-p111' 表示初始密码是111 + # 使用 'mysql' 命令行工具连接到 MySQL 服务 + # 使用 'kubectl get svc/mo-tp-cn -n mo-hn -o jsonpath='{.spec.clusterIP}' ' 获取 Kubernetes 集群中服务的集群 IP 地址 + # '-h' 参数指定了 MySQL 服务的主机名或 IP 地址 + # '-P' 参数指定了 MySQL 服务的端口号,这里是 6001 + # '-uroot' 表示用 root 用户登录 + # '-p111' 表示初始密码是 111 root@master0 ~]# mysql -h $(kubectl get svc/mo-tp-cn -n mo-hn -o jsonpath='{.spec.clusterIP}') -P 6001 -uroot -p111 Welcome to the MariaDB monitor. Commands end with ; or \g. Your MySQL connection id is 1005 diff --git a/docs/MatrixOne/Develop/Ecological-Tools/BI-Connection/FineBI-connection.md b/docs/MatrixOne/Develop/Ecological-Tools/BI-Connection/FineBI-connection.md index f8f0c56ca5..bb3f75f906 100644 --- a/docs/MatrixOne/Develop/Ecological-Tools/BI-Connection/FineBI-connection.md +++ b/docs/MatrixOne/Develop/Ecological-Tools/BI-Connection/FineBI-connection.md @@ -162,7 +162,7 @@ MatrixOne 支持连接到数据可视化工具 FineBI。本文将指导您如何 from orders.rfm GROUP BY user_type - -- 月GMV + -- 月 GMV select y,m, sum(order_value), concat(y, "-", m) month @@ -170,7 +170,7 @@ MatrixOne 支持连接到数据可视化工具 FineBI。本文将指导您如何 group by y,m order by y,m - -- 季度GMV + -- 季度 GMV select y,q, sum(order_value) gmv, concat(y, "季度", q) as quator @@ -178,7 +178,7 @@ MatrixOne 支持连接到数据可视化工具 FineBI。本文将指导您如何 group by y,q order by concat(y, "季度", q) asc - -- 季度ARPU + -- 季度 ARPU select y,q, round((sum(order_value)/count(DISTINCT customer_id)),2) arpu, concat(y, "季度", q) as quator @@ -186,7 +186,7 @@ MatrixOne 支持连接到数据可视化工具 FineBI。本文将指导您如何 group by y,q order by y,q - -- 月度ARPU + -- 月度 ARPU select y,m, round((sum(order_value)/count(DISTINCT customer_id)),2) arpu, concat(y, "-", m) as month diff --git a/docs/MatrixOne/Develop/Ecological-Tools/BI-Connection/Superset-connection.md b/docs/MatrixOne/Develop/Ecological-Tools/BI-Connection/Superset-connection.md index 081c83a339..075d72fe67 100644 --- a/docs/MatrixOne/Develop/Ecological-Tools/BI-Connection/Superset-connection.md +++ b/docs/MatrixOne/Develop/Ecological-Tools/BI-Connection/Superset-connection.md @@ -82,13 +82,13 @@ MatrixOne 1.0 版本现在支持与数据可视化工具 Superset 集成。本 1. 访问 Superset 的登录页面,通常是 `http://ip:8080`,然后输入您的用户名和密码,登录 Superset。 - ![Superset登录页面](https://community-shared-data-1308875761.cos.ap-beijing.myqcloud.com/artwork/docs/develop/bi-connection/superset/superset-login.png) + ![Superset 登录页面](https://community-shared-data-1308875761.cos.ap-beijing.myqcloud.com/artwork/docs/develop/bi-connection/superset/superset-login.png) __Note:__ Superset 的端口可能是 8080 或 8088,具体取决于您的配置;用户名和密码是您在部署 Superset 时设置的。 登录后,您将看到 Superset 的主界面。 - ![Superset主界面](https://community-shared-data-1308875761.cos.ap-beijing.myqcloud.com/artwork/docs/develop/bi-connection/superset/superset-dashboard.png) + ![Superset 主界面](https://community-shared-data-1308875761.cos.ap-beijing.myqcloud.com/artwork/docs/develop/bi-connection/superset/superset-dashboard.png) 2. 创建数据库连接: diff --git a/docs/MatrixOne/Develop/Ecological-Tools/Computing-Engine/DataX-write.md b/docs/MatrixOne/Develop/Ecological-Tools/Computing-Engine/DataX-write.md index d87aa2d1e1..683aa5fc35 100644 --- a/docs/MatrixOne/Develop/Ecological-Tools/Computing-Engine/DataX-write.md +++ b/docs/MatrixOne/Develop/Ecological-Tools/Computing-Engine/DataX-write.md @@ -173,7 +173,7 @@ mysql> select count(*) from m_user limit 5; 以下是 MatrixOneWriter 的一些常用参数说明: -|参数名称|参数描述|是否必选|默认值| +|参数名称 | 参数描述 | 是否必选 | 默认值| |---|---|---|---| |**jdbcUrl** |目标数据库的 JDBC 连接信息。DataX 在运行时会在提供的 `jdbcUrl` 后面追加一些属性,例如:`yearIsDateType=false&zeroDateTimeBehavior=CONVERT_TO_NULL&rewriteBatchedStatements=true&tinyInt1isBit=false&serverTimezone=Asia/Shanghai`。 |是 |无 | |**username** | 目标数据库的用户名。|是 |无 | @@ -208,6 +208,6 @@ MatrixOneWriter 支持大多数 MatrixOne 数据类型,但也有少数类型 ## 常见问题 -**Q: 在运行时,我遇到了 “配置信息错误,您提供的配置文件/{YOUR_MATRIXONE_WRITER_PATH}/plugin.json 不存在” 的问题该怎么处理?** +**Q: 在运行时,我遇到了“配置信息错误,您提供的配置文件/{YOUR_MATRIXONE_WRITER_PATH}/plugin.json 不存在”的问题该怎么处理?** A: DataX 在启动时会尝试查找相似的文件夹以寻找 plugin.json 文件。如果 matrixonewriter.zip 文件也存在于相同的目录下,DataX 将尝试从 `.../datax/plugin/writer/matrixonewriter.zip/plugin.json` 中查找。在 MacOS 环境下,DataX 还会尝试从 `.../datax/plugin/writer/.DS_Store/plugin.json` 中查找。此时,您需要删除这些多余的文件或文件夹。 diff --git a/docs/MatrixOne/Develop/Ecological-Tools/Computing-Engine/Flink.md b/docs/MatrixOne/Develop/Ecological-Tools/Computing-Engine/Flink.md index cc727991a9..d6a505cde3 100644 --- a/docs/MatrixOne/Develop/Ecological-Tools/Computing-Engine/Flink.md +++ b/docs/MatrixOne/Develop/Ecological-Tools/Computing-Engine/Flink.md @@ -16,7 +16,7 @@ Apache Flink 是一个强大的框架和分布式处理引擎,专注于进行 * 数据管道应用 - 提取-转换-加载(ETL)是在不同存储系统之间进行数据转换和迁移的常见方法。数据管道和 ETL 作业有相似之处,都可以进行数据转换和丰富,然后将数据从一个存储系统移动到另一个存储系统。不同之处在于数据管道以持续流模式运行,而不是周期性触发。典型的数据管道应用包括电子商务中的实时查询索引构建和持续 ETL。 + 提取 - 转换 - 加载(ETL)是在不同存储系统之间进行数据转换和迁移的常见方法。数据管道和 ETL 作业有相似之处,都可以进行数据转换和丰富,然后将数据从一个存储系统移动到另一个存储系统。不同之处在于数据管道以持续流模式运行,而不是周期性触发。典型的数据管道应用包括电子商务中的实时查询索引构建和持续 ETL。 本篇文档将介绍两种示例,一种是使用计算引擎 Flink 实现将实时数据写入到 MatrixOne,另一种是使用计算引擎 Flink 将流式数据写入到 MatrixOne 数据库。 @@ -26,7 +26,7 @@ Apache Flink 是一个强大的框架和分布式处理引擎,专注于进行 本次实践对于机器的硬件要求如下: -| 服务器名称 | 服务器IP | 安装软件 | 操作系统 | +| 服务器名称 | 服务器 IP | 安装软件 | 操作系统 | | ---------- | -------------- | ----------- | -------------- | | node1 | 192.168.146.10 | MatrixOne | Debian11.1 x86 | | node2 | 192.168.146.12 | kafka | Centos7.9 | @@ -278,7 +278,7 @@ Apache Flink 是一个强大的框架和分布式处理引擎,专注于进行 3. 在 IDEA 中运行 `MoRead.Main()`,执行结果如下: - ![MoRead执行结果](https://community-shared-data-1308875761.cos.ap-beijing.myqcloud.com/artwork/docs/develop/flink/moread.png) + ![MoRead 执行结果](https://community-shared-data-1308875761.cos.ap-beijing.myqcloud.com/artwork/docs/develop/flink/moread.png) ### 步骤三:将 MySQL 数据写入 MatrixOne @@ -299,7 +299,7 @@ Apache Flink 是一个强大的框架和分布式处理引擎,专注于进行 在 node3 上,使用 MySQL 客户端连接 node1 的 MatrixOne。由于本示例继续使用前面读取 MatrixOne 数据的示例中的 `test` 数据库,因此我们需要首先清空 `person` 表的数据。 ```sql - -- 在node3上,使用Mysql客户端连接node1的MatrixOne + -- 在 node3 上,使用 Mysql 客户端连接 node1 的 MatrixOne mysql -h192.168.146.10 -P6001 -uroot -p111 mysql> TRUNCATE TABLE test.person; ``` @@ -401,7 +401,7 @@ public class Mysql2Mo { } ); - //添加srouce + //添加 srouce DataStreamSource dataSource = environment.createInput(JdbcInputFormat.buildJdbcInputFormat() .setDrivername("com.mysql.cj.jdbc.Driver") .setDBUrl("jdbc:mysql://" + srcHost + ":" + srcPort + "/" + srcDataBase) @@ -411,7 +411,7 @@ public class Mysql2Mo { .setRowTypeInfo(rowTypeInfo) .finish()); - //进行ETL + //进行 ETL SingleOutputStreamOperator mapOperator = dataSource.map((MapFunction) row -> { Person person = new Person(); person.setId((Integer) row.getField("id")); @@ -420,7 +420,7 @@ public class Mysql2Mo { return person; }); - //设置matrixone sink信息 + //设置 matrixone sink 信息 mapOperator.addSink( JdbcSink.sink( "insert into " + destTable + " values(?,?,?)", @@ -719,9 +719,9 @@ public class Kafka2Mo { //设置并行度 env.setParallelism(1); - //设置kafka source信息 + //设置 kafka source 信息 KafkaSource source = KafkaSource.builder() - //Kafka服务 + //Kafka 服务 .setBootstrapServers(srcServer) //消息主题 .setTopics(srcTopic) @@ -740,7 +740,7 @@ public class Kafka2Mo { DataStreamSource kafkaSource = env.fromSource(source, WatermarkStrategy.noWatermarks(), "kafka_maxtixone"); //kafkaSource.print(); - //设置matrixone sink信息 + //设置 matrixone sink 信息 kafkaSource.addSink(JdbcSink.sink( "insert into users (id,name,age) values(?,?,?)", (JdbcStatementBuilder) (preparedStatement, user) -> { @@ -749,9 +749,9 @@ public class Kafka2Mo { preparedStatement.setInt(3, user.getAge()); }, JdbcExecutionOptions.builder() - //默认值5000 + //默认值 5000 .withBatchSize(1000) - //默认值为0 + //默认值为 0 .withBatchIntervalMs(200) //最大尝试次数 .withMaxRetries(5) diff --git a/docs/MatrixOne/Develop/Ecological-Tools/Computing-Engine/Spark.md b/docs/MatrixOne/Develop/Ecological-Tools/Computing-Engine/Spark.md index 4f3c504310..f11db854e1 100644 --- a/docs/MatrixOne/Develop/Ecological-Tools/Computing-Engine/Spark.md +++ b/docs/MatrixOne/Develop/Ecological-Tools/Computing-Engine/Spark.md @@ -30,7 +30,7 @@ Apache Spark 是一个为高效处理大规模数据而设计的分布式计算 本次实践对于机器的硬件要求如下: -| 服务器名称 | 服务器IP | 安装软件 | 操作系统 | +| 服务器名称 | 服务器 IP | 安装软件 | 操作系统 | | ---------- | -------------- | ------------------------- | -------------- | | node1 | 192.168.146.10 | MatrixOne | Debian11.1 x86 | | node3 | 192.168.146.11 | IDEA、MYSQL、Hadoop、Hive | Windows 10 | @@ -153,7 +153,7 @@ Apache Spark 是一个为高效处理大规模数据而设计的分布式计算 /** * @auther MatrixOne - * @desc 读取MatrixOne数据 + * @desc 读取 MatrixOne 数据 */ public class MoRead { @@ -205,7 +205,7 @@ Apache Spark 是一个为高效处理大规模数据而设计的分布式计算 在 node3 上,使用 MySQL 客户端连接本地 MatrixOne。由于本示例继续使用前面读取 MatrixOne 数据的示例中的 `test` 数据库,因此我们需要首先清空 `person` 表的数据。 ```sql - -- 在node3上,使用Mysql客户端连接node1的MatrixOne + -- 在 node3 上,使用 Mysql 客户端连接 node1 的 MatrixOne mysql -h192.168.146.10 -P6001 -uroot -p111 mysql> TRUNCATE TABLE test.person; ``` @@ -259,13 +259,13 @@ public class Mysql2Mo { //jdbc.url=jdbc:mysql://127.0.0.1:3306/database String url = "jdbc:mysql://" + srcHost + ":" + srcPort + "/" + srcDataBase + "?characterEncoding=utf-8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=Asia/Shanghai"; - //SparkJdbc读取表内容 - System.out.println("读取数据库中person的表内容"); + //SparkJdbc 读取表内容 + System.out.println("读取数据库中 person 的表内容"); // 读取表中所有数据 Dataset rowDataset = sqlContext.read().jdbc(url,srcTable,connectionProperties).select("*"); //显示数据 //rowDataset.show(); - //筛选id > 2的数据,并将 name 字段添加 spark_ 前缀 + //筛选 id > 2 的数据,并将 name 字段添加 spark_ 前缀 Dataset dataset = rowDataset.filter("id > 2") .map((MapFunction) row -> RowFactory.create(row.getInt(0), "spark_" + row.getString(1), row.getDate(2)), RowEncoder.apply(rowDataset.schema())); //显示数据 @@ -428,8 +428,8 @@ import java.util.Properties; * @date 2022/2/9 10:02 * @desc * - * 1.在hive和matrixone中分别创建相应的表 - * 2.将core-site.xml hdfs-site.xml和hive-site.xml拷贝到resources目录下 + * 1.在 hive 和 matrixone 中分别创建相应的表 + * 2.将 core-site.xml hdfs-site.xml 和 hive-site.xml 拷贝到 resources 目录下 * 3.需要设置域名映射 */ public class Hive2Mo { @@ -453,8 +453,8 @@ public class Hive2Mo { .enableHiveSupport() .getOrCreate(); - //SparkJdbc读取表内容 - System.out.println("读取hive中person的表内容"); + //SparkJdbc 读取表内容 + System.out.println("读取 hive 中 person 的表内容"); // 读取表中所有数据 Dataset rowDataset = sparkSession.sql("select * from motest.users"); //显示数据 diff --git a/docs/MatrixOne/Develop/Transactions/common-transaction-overview.md b/docs/MatrixOne/Develop/Transactions/common-transaction-overview.md index 195bb924f7..07ce56056e 100644 --- a/docs/MatrixOne/Develop/Transactions/common-transaction-overview.md +++ b/docs/MatrixOne/Develop/Transactions/common-transaction-overview.md @@ -138,7 +138,7 @@ MatrixOne 的悲观事务详情可以参见 [MatrixOne 的悲观事务](matrixon 在数据库事务的 ACID 四个属性中,隔离性是一个限制最宽松的。为了获取更高的隔离等级,数据库系统通常使用锁机制或者多版本并发控制机制。应用软件也需要额外的逻辑来使其正常工作。 -很多数据库管理系统(DBMS)定义了不同的 “事务隔离等级” 来控制锁的程度。在很多数据库系统中,多数的事务都避免高等级的隔离等级(如可串行化)从而减少锁的开销。程序员需要小心的分析数据库访问部分的代码来保证隔离级别的降低不会造成难以发现的代码错误。相反的,更高的隔离级别会增加死锁发生的几率,同样需要在编程过程中去避免。 +很多数据库管理系统(DBMS)定义了不同的“事务隔离等级”来控制锁的程度。在很多数据库系统中,多数的事务都避免高等级的隔离等级(如可串行化)从而减少锁的开销。程序员需要小心的分析数据库访问部分的代码来保证隔离级别的降低不会造成难以发现的代码错误。相反的,更高的隔离级别会增加死锁发生的几率,同样需要在编程过程中去避免。 由于更高的隔离级别中不存在被一个更低的隔离级别禁止的操作,DBMS 被允许使用一个比请求的隔离级别更高的隔离级别。 @@ -151,13 +151,13 @@ ANSI/ISO SQL 定义的标准隔离级别共有四个: |REPEATABLE READ|Not Possible|Not Possible|Not Possible| Possible| |SERIALIZABLE|Not Possible|Not Possible|Not Possible|Not Possible| -- **读未提交**:读未提交(READ UNCOMMITTED)是最低的隔离级别。允许 “脏读”(dirty reads),事务可以看到其他事务 “尚未提交” 的修改。 +- **读未提交**:读未提交(READ UNCOMMITTED)是最低的隔离级别。允许“脏读”(dirty reads),事务可以看到其他事务“尚未提交”的修改。 -- **读已提交**:读已提交(READ COMMITTED)级别中,基于锁机制并发控制的 DBMS 需要对选定对象的写锁一直保持到事务结束,但是读锁在 SELECT 操作完成后马上释放。和前一种隔离级别一样,也不要求 “范围锁”。 +- **读已提交**:读已提交(READ COMMITTED)级别中,基于锁机制并发控制的 DBMS 需要对选定对象的写锁一直保持到事务结束,但是读锁在 SELECT 操作完成后马上释放。和前一种隔离级别一样,也不要求“范围锁”。 -- **可重复读**:在可重复读(REPEATABLE READS)隔离级别中,基于锁机制并发控制的 DBMS 需要对选定对象的读锁(read locks)和写锁(write locks)一直保持到事务结束,但不要求 “范围锁”,因此可能会发生 “幻读”。MatrixOne 实现了快照隔离(即 Snapshot Isolation),为了与 MySQL 隔离级别保持一致,MatrixOne 快照隔离又叫做可重复读(REPEATABLE READS)。 +- **可重复读**:在可重复读(REPEATABLE READS)隔离级别中,基于锁机制并发控制的 DBMS 需要对选定对象的读锁(read locks)和写锁(write locks)一直保持到事务结束,但不要求“范围锁”,因此可能会发生“幻读”。MatrixOne 实现了快照隔离(即 Snapshot Isolation),为了与 MySQL 隔离级别保持一致,MatrixOne 快照隔离又叫做可重复读(REPEATABLE READS)。 -- **可串行化**:可串行化(SERIALIZABLE)是最高的隔离级别。在基于锁机制并发控制的 DBMS 上,可串行化要求在选定对象上的读锁和写锁直到事务结束后才能释放。在 SELECT 的查询中使用一个 “WHERE” 子句来描述一个范围时应该获得一个 “范围锁”(range-locks)。 +- **可串行化**:可串行化(SERIALIZABLE)是最高的隔离级别。在基于锁机制并发控制的 DBMS 上,可串行化要求在选定对象上的读锁和写锁直到事务结束后才能释放。在 SELECT 的查询中使用一个“WHERE”子句来描述一个范围时应该获得一个“范围锁”(range-locks)。 通过比低一级的隔离级别要求更多的限制,高一级的级别提供更强的隔离性。标准允许事务运行在更强的事务隔离级别上。 diff --git a/docs/MatrixOne/Develop/Transactions/matrixone-transaction-overview/explicit-transaction.md b/docs/MatrixOne/Develop/Transactions/matrixone-transaction-overview/explicit-transaction.md index a47bed5de9..6353227657 100644 --- a/docs/MatrixOne/Develop/Transactions/matrixone-transaction-overview/explicit-transaction.md +++ b/docs/MatrixOne/Develop/Transactions/matrixone-transaction-overview/explicit-transaction.md @@ -12,10 +12,10 @@ ## 与 MySQL 显式事务的区别 -|事务类型|开启自动提交|关闭自动提交| +|事务类型 | 开启自动提交 | 关闭自动提交| |---|---|---| -|显式事务与自动提交|当 `AUTOCOMMIT=1` 时,MySQL不会对事务进行任何更改,每个语句都会在一个新的自动提交事务中执行。|当 `AUTOCOMMIT=0` 时,每个语句都会在显式开启的事务中执行,直到显式提交或回滚事务。| -|显式事务与非自动提交|当 `AUTOCOMMIT=1` 时,MySQL会在每个语句执行后自动提交未提交的事务。|当 `AUTOCOMMIT=0` 时,每个语句都会在显式开启的事务中执行,直到显式提交或回滚事务。| +|显式事务与自动提交 | 当 `AUTOCOMMIT=1` 时,MySQL 不会对事务进行任何更改,每个语句都会在一个新的自动提交事务中执行。|当 `AUTOCOMMIT=0` 时,每个语句都会在显式开启的事务中执行,直到显式提交或回滚事务。| +|显式事务与非自动提交 | 当 `AUTOCOMMIT=1` 时,MySQL 会在每个语句执行后自动提交未提交的事务。|当 `AUTOCOMMIT=0` 时,每个语句都会在显式开启的事务中执行,直到显式提交或回滚事务。| **MySQL 与 MatrixOne 显式事务行为示例** diff --git a/docs/MatrixOne/Develop/Transactions/matrixone-transaction-overview/implicit-transaction.md b/docs/MatrixOne/Develop/Transactions/matrixone-transaction-overview/implicit-transaction.md index bf3d75f4f4..0a8cadde10 100644 --- a/docs/MatrixOne/Develop/Transactions/matrixone-transaction-overview/implicit-transaction.md +++ b/docs/MatrixOne/Develop/Transactions/matrixone-transaction-overview/implicit-transaction.md @@ -24,10 +24,10 @@ ### MySQL 隐式事务行为 -|事务类型|开启自动提交|关闭自动提交| +|事务类型 | 开启自动提交 | 关闭自动提交| |---|---|---| -|隐式事务与自动提交|当 `AUTOCOMMIT=1` 时,MySQL不会对事务进行任何更改,每个语句都是一个单独的自动提交事务。|当 `AUTOCOMMIT=0` 时,MySQL 也不会对事务进行任何更改,但随后的语句将继续在当前事务中执行,直到显式提交或回滚事务。| -|隐式事务与非自动提交|当 `AUTOCOMMIT=1` 时,MySQL会在每个语句执行后自动提交未提交的事务。 | 当 `AUTOCOMMIT=0` 时,MySQL 会继续在当前事务中执行随后的语句,直到显式提交或回滚事务。 | +|隐式事务与自动提交 | 当 `AUTOCOMMIT=1` 时,MySQL 不会对事务进行任何更改,每个语句都是一个单独的自动提交事务。|当 `AUTOCOMMIT=0` 时,MySQL 也不会对事务进行任何更改,但随后的语句将继续在当前事务中执行,直到显式提交或回滚事务。| +|隐式事务与非自动提交 | 当 `AUTOCOMMIT=1` 时,MySQL 会在每个语句执行后自动提交未提交的事务。 | 当 `AUTOCOMMIT=0` 时,MySQL 会继续在当前事务中执行随后的语句,直到显式提交或回滚事务。 | **MySQL 隐式事务行为示例** diff --git a/docs/MatrixOne/Develop/Transactions/matrixone-transaction-overview/optimistic-transaction.md b/docs/MatrixOne/Develop/Transactions/matrixone-transaction-overview/optimistic-transaction.md index e96c4ccf6b..657583ccd3 100644 --- a/docs/MatrixOne/Develop/Transactions/matrixone-transaction-overview/optimistic-transaction.md +++ b/docs/MatrixOne/Develop/Transactions/matrixone-transaction-overview/optimistic-transaction.md @@ -35,7 +35,7 @@ MatrixOne 支持乐观事务模型。你在使用乐观并发读取一行时不 2. 在下午 1:01,用户 2 从数据库中读取同一行。 -3. 在下午 1:03,用户 2 将 FirstName 列的 “Bob” 改为 “Robert”,并更新到数据库里。 +3. 在下午 1:03,用户 2 将 FirstName 列的“Bob”改为“Robert”,并更新到数据库里。 |Column name|Original value|Current value|Value in database| |---|---|---|---| @@ -45,7 +45,7 @@ MatrixOne 支持乐观事务模型。你在使用乐观并发读取一行时不 4. 如上表所示,更新时数据库中的值与用户 2 的原始值匹配,表示更新成功。 -5. 在下午 1:05,用户 1 将 FirstName 列的 “Bob” 改为 “James”,并尝试进行更新。 +5. 在下午 1:05,用户 1 将 FirstName 列的“Bob”改为“James”,并尝试进行更新。 |Column name|Original value|Current value|Value in database| |---|---|---|---| @@ -53,4 +53,4 @@ MatrixOne 支持乐观事务模型。你在使用乐观并发读取一行时不 |LastName|Smith|Smith|Smith| |FirstName|Bob|James|Robert| -6. 此时,用户 1 遇到了乐观并发冲突,因为数据库中的值 “Robert” 不再与用户 1 期望的原始值 “Bob” 匹配,并发冲突提示更新失败。下一步需要决定,是采用用户 1 的更改覆盖用户 2 的更改,还是取消用户 1 的更改。 +6. 此时,用户 1 遇到了乐观并发冲突,因为数据库中的值“Robert”不再与用户 1 期望的原始值“Bob”匹配,并发冲突提示更新失败。下一步需要决定,是采用用户 1 的更改覆盖用户 2 的更改,还是取消用户 1 的更改。 diff --git a/docs/MatrixOne/Develop/Transactions/matrixone-transaction-overview/pessimistic-transaction.md b/docs/MatrixOne/Develop/Transactions/matrixone-transaction-overview/pessimistic-transaction.md index 748546ccaa..d345330ba5 100644 --- a/docs/MatrixOne/Develop/Transactions/matrixone-transaction-overview/pessimistic-transaction.md +++ b/docs/MatrixOne/Develop/Transactions/matrixone-transaction-overview/pessimistic-transaction.md @@ -43,7 +43,7 @@ MatrixOne 默认悲观事务。 2. 在下午 1:01,用户 2 从数据库中读取同一行。 -3. 在下午 1:03,用户 2 将 FirstName 列的 “Bob” 改为 “Robert”,此时处于未提交状态。 +3. 在下午 1:03,用户 2 将 FirstName 列的“Bob”改为“Robert”,此时处于未提交状态。 |Column name|Original value|Current value|Value in database| |---|---|---|---| @@ -51,7 +51,7 @@ MatrixOne 默认悲观事务。 |LastName|Smith|Smith|Smith| |FirstName|Bob|Robert|Bob| -4. 在下午 1:05,用户 1 将 FirstName 列的 “Bob” 改为 “James”,并尝试进行更新。 +4. 在下午 1:05,用户 1 将 FirstName 列的“Bob”改为“James”,并尝试进行更新。 |Column name|Original value|Current value|Value in database| |---|---|---|---| @@ -59,6 +59,6 @@ MatrixOne 默认悲观事务。 |LastName|Smith|Smith|Smith| |FirstName|Bob|James|Bob| -5. 此时,用户 1 遇到了悲观并发冲突,因为数据库中的值 “Robert” 所在行已经被锁定,需要等待用户 2 的下一步操作。 +5. 此时,用户 1 遇到了悲观并发冲突,因为数据库中的值“Robert”所在行已经被锁定,需要等待用户 2 的下一步操作。 6. 在下午 1:06,用户 1 对事务提交。此时用户 2 解除等待状态开始事务,但是因为已经无法匹配到对应的 FirstName,因此用户 2 的事务会更新失败。 diff --git a/docs/MatrixOne/Develop/import-data/bulk-load/1.1-load-s3.md b/docs/MatrixOne/Develop/import-data/bulk-load/1.1-load-s3.md index b3736ce248..f952308b53 100644 --- a/docs/MatrixOne/Develop/import-data/bulk-load/1.1-load-s3.md +++ b/docs/MatrixOne/Develop/import-data/bulk-load/1.1-load-s3.md @@ -11,7 +11,7 @@ MatrixOne 支持将文件从 S3 兼容的对象存储服务加载到数据库中 在 MatrixOne 中,有两种方法可以从 S3 兼容的对象存储中导入数据: * 使用带有 s3option 的 `Load data` 将文件加载到 MatrixOne 中。此方法会将数据加载到 MatrixOne 中,所有接下来的查询都将在 MatrixOne 中进行。 -* 创建一个带有 s3option 映射到 S3 文件的 “外部表”,并直接查询这个外部表。该方法允许通过 S3 兼容的对象存储服务进行数据访问;每个查询的网络延迟都将被计算在内。 +* 创建一个带有 s3option 映射到 S3 文件的“外部表”,并直接查询这个外部表。该方法允许通过 S3 兼容的对象存储服务进行数据访问;每个查询的网络延迟都将被计算在内。 同时,如果要导入来自公有云(例如 AWS S3 或阿里云 OSS)的数据,需要具备相应的访问权限。通常有两种方式可供选择:角色访问和密钥访问。 @@ -41,11 +41,11 @@ LOAD DATA |参数 | 描述| |---|---| |endpoint|可以连接到对象存储服务的 URL。例如:s3.us-west-2.amazonaws.com
__Note:__ `LOAD DATA` 仅支持获取 AWS 对象存储服务和阿里云外网对象存储服务的 URL。| -|access_key_id| Access key ID。用于身份验证的访问密钥ID。| -|secret_access_key| Secret access key。与访问密钥ID相关联的密钥。 | -|bucket|指定S3存储中的桶(Bucket) | -|role_arn| AWS角色的Amazon资源名称(ARN),通常用于跨账户访问。
__Note:__ 推荐使用角色访问的方式。如果你选择角色访问的方式,则无需填写 `access_key_id` 和 `secret_access_key`,仅填写参数 `role_arn`。| -|external_id|用于与角色ARN一起使用的外部ID。 | +|access_key_id| Access key ID。用于身份验证的访问密钥 ID。| +|secret_access_key| Secret access key。与访问密钥 ID 相关联的密钥。 | +|bucket|指定 S3 存储中的桶(Bucket) | +|role_arn| AWS 角色的 Amazon 资源名称(ARN),通常用于跨账户访问。
__Note:__ 推荐使用角色访问的方式。如果你选择角色访问的方式,则无需填写 `access_key_id` 和 `secret_access_key`,仅填写参数 `role_arn`。| +|external_id|用于与角色 ARN 一起使用的外部 ID。 | |filepath| 相对文件路径。 /files/*.csv 支持正则表达式。 | |region| 对象存储服务区域| |compression| S3 文件的压缩格式。如果为空或 "none",则表示未压缩的文件。支持的字段或压缩格式为“auto”、“none”、“gzip”、“bz2”和“lz4”。| diff --git a/docs/MatrixOne/Develop/import-data/bulk-load/load-jsonline.md b/docs/MatrixOne/Develop/import-data/bulk-load/load-jsonline.md index 58d40c843e..8c464394e4 100644 --- a/docs/MatrixOne/Develop/import-data/bulk-load/load-jsonline.md +++ b/docs/MatrixOne/Develop/import-data/bulk-load/load-jsonline.md @@ -18,7 +18,7 @@ JSON 允许仅用 ASCII 转义序列编码 Unicode 字符串,但是当在文 * **每行都是一个合法的 JSON 值**:最常见的值是对象或数组,任何 JSON 值都是合法的。 -* **行分隔符为 `\n`**:由于在解析 JSON 值时会隐式忽略周围的空格在支持行分隔符 `\n` 的同时也支持 “\r\n”。 +* **行分隔符为 `\n`**:由于在解析 JSON 值时会隐式忽略周围的空格在支持行分隔符 `\n` 的同时也支持“\r\n”。 ## 对于 MatrixOne 有效的 JSONLines 格式 @@ -79,7 +79,7 @@ LOAD DATA LOCAL INFILE **参数说明** -|参数 | 值|必须/可选 | 描述| +|参数 | 值 | 必须/可选 | 描述| |:-:|:-:|:-:|:-:| |filepath|String| 必须 | 文件路径| |compression|auto/none/bz2/gzip/lz4|可选 | 压缩格式 | diff --git a/docs/MatrixOne/Develop/import-data/bulk-load/load-s3.md b/docs/MatrixOne/Develop/import-data/bulk-load/load-s3.md index 7af3d446a0..8375590830 100644 --- a/docs/MatrixOne/Develop/import-data/bulk-load/load-s3.md +++ b/docs/MatrixOne/Develop/import-data/bulk-load/load-s3.md @@ -11,7 +11,7 @@ MatrixOne 支持将文件从 S3 兼容的对象存储服务加载到数据库中 在 MatrixOne 中,有两种方法可以从 S3 兼容的对象存储中导入数据: * 使用带有 s3option 的 `Load data` 将文件加载到 MatrixOne 中。此方法会将数据加载到 MatrixOne 中,所有接下来的查询都将在 MatrixOne 中进行。 -* 创建一个带有 s3option 映射到 S3 文件的 “外部表”,并直接查询这个外部表。该方法允许通过 S3 兼容的对象存储服务进行数据访问;每个查询的网络延迟都将被计算在内。 +* 创建一个带有 s3option 映射到 S3 文件的“外部表”,并直接查询这个外部表。该方法允许通过 S3 兼容的对象存储服务进行数据访问;每个查询的网络延迟都将被计算在内。 ## 方式 1: `LOAD DATA` diff --git a/docs/MatrixOne/Develop/import-data/update-data.md b/docs/MatrixOne/Develop/import-data/update-data.md index bc4a7788bc..db29c68b69 100644 --- a/docs/MatrixOne/Develop/import-data/update-data.md +++ b/docs/MatrixOne/Develop/import-data/update-data.md @@ -110,7 +110,7 @@ mysql> SELECT * FROM employees; +------+--------------+------------+---------+ 5 rows in set (0.01 sec) --- 更新数据,使用UPDATE语句更新了部门为'HR'的前两个员工的薪资,薪资增加了10%。WHERE子句指定了更新数据的条件,只有满足部门为'HR'的行才会被更新。ORDER BY子句按照id列进行升序排序,LIMIT子句限制只更新两行数据。 +-- 更新数据,使用 UPDATE 语句更新了部门为'HR'的前两个员工的薪资,薪资增加了 10%。WHERE 子句指定了更新数据的条件,只有满足部门为'HR'的行才会被更新。ORDER BY 子句按照 id 列进行升序排序,LIMIT 子句限制只更新两行数据。 mysql> UPDATE employees SET salary = salary * 1.1 WHERE department = 'HR' diff --git a/docs/MatrixOne/Develop/read-data/window-function.md b/docs/MatrixOne/Develop/read-data/window-function.md index 7930ceaf97..035f67884d 100644 --- a/docs/MatrixOne/Develop/read-data/window-function.md +++ b/docs/MatrixOne/Develop/read-data/window-function.md @@ -22,7 +22,7 @@ SQL 窗口函数在多种业务场景中都有其广泛的应用: - 其他窗口函数参见下表: -|函数名称|说明| +|函数名称 | 说明| |---|---| |[DENSE_RANK()](../../Reference/Functions-and-Operators/Window-Functions/dense_rank.md)|用于为数据集中的行分配排名,始终为下一个值分配连续的排名,即使前面的值有相同的排名。| |[RANK()](../../Reference/Functions-and-Operators/Window-Functions/rank.md)|为查询结果集中的每一行分配一个排名值,相同值的行将具有相同的排名,而下一个排名值将会跳过相同数量的行。| diff --git a/docs/MatrixOne/Develop/schema-design/1.1-vector.md b/docs/MatrixOne/Develop/schema-design/1.1-vector.md index b2a4d9881d..63df86e618 100644 --- a/docs/MatrixOne/Develop/schema-design/1.1-vector.md +++ b/docs/MatrixOne/Develop/schema-design/1.1-vector.md @@ -53,7 +53,7 @@ insert into t1 values(1, "[1,2,3]", "[4,5,6]"); insert into t1 (a, b) values (2, decode("7e98b23e9e10383b2f41133f", "hex")); --- "7e98b23e9e10383b2f41133f" 表示[]float32{0.34881967, 0.0028086076, 0.5752134}的小端十六进制编码 +-- "7e98b23e9e10383b2f41133f" 表示 []float32{0.34881967, 0.0028086076, 0.5752134}的小端十六进制编码 -- "hex" 表示十六进制编码 ``` @@ -106,7 +106,7 @@ CREATE TABLE t1 ( -- 插入一些示例数据 INSERT INTO t1 (id,b) VALUES (1, '[1,2,3]'), (2, '[4,5,6]'), (3, '[2,1,1]'), (4, '[7,8,9]'), (5, '[0,0,0]'), (6, '[3,1,2]'); --- 使用l1_distance进行Top K查询 +-- 使用 l1_distance 进行 Top K 查询 SELECT * FROM t1 ORDER BY l1_norm(b - '[3,1,2]') LIMIT 5; mysql> SELECT * FROM t1 ORDER BY l1_norm(b - '[3,1,2]') LIMIT 5; +------+-----------+ @@ -120,7 +120,7 @@ mysql> SELECT * FROM t1 ORDER BY l1_norm(b - '[3,1,2]') LIMIT 5; +------+-----------+ 5 rows in set (0.00 sec) --- 使用l2_distance进行Top K查询 +-- 使用 l2_distance 进行 Top K 查询 mysql> SELECT * FROM t1 ORDER BY l2_norm(b - '[3,1,2]') LIMIT 5; +------+-----------+ | id | b | @@ -133,7 +133,7 @@ mysql> SELECT * FROM t1 ORDER BY l2_norm(b - '[3,1,2]') LIMIT 5; +------+-----------+ 5 rows in set (0.00 sec) --- 使用余弦相似度进行Top K查询 +-- 使用余弦相似度进行 Top K 查询 mysql> SELECT * FROM t1 ORDER BY cosine_similarity(b, '[3,1,2]') LIMIT 5; +------+-----------+ | id | b | @@ -146,7 +146,7 @@ mysql> SELECT * FROM t1 ORDER BY cosine_similarity(b, '[3,1,2]') LIMIT 5; +------+-----------+ 5 rows in set (0.00 sec) --- 使用余弦距离进行Top K查询 +-- 使用余弦距离进行 Top K 查询 mysql> SELECT * FROM t1 ORDER BY 1 - cosine_similarity(b, '[3,1,2]') LIMIT 5; +------+-----------+ | id | b | diff --git a/docs/MatrixOne/Develop/schema-design/create-table.md b/docs/MatrixOne/Develop/schema-design/create-table.md index ddecbeabb3..675e725c58 100644 --- a/docs/MatrixOne/Develop/schema-design/create-table.md +++ b/docs/MatrixOne/Develop/schema-design/create-table.md @@ -69,10 +69,10 @@ N_COMMENT VARCHAR(152) |字段名 | 数据类型 | 作用 | 解释| |---|---|---|---| -|N_NATIONKEY |INTEGER|民族的唯一标识|所有标识都应该是 INTEGER 类型的| -|N_NAME |CHAR|民族名字|民族的名称都是 char 类型,且不超过 25 字符| -|N_REGIONKEY|INTEGER|地区区号,唯一标识|所有标识都应该是 INTEGER 类型的| -|N_COMMENT|VARCHAR|comment信息|varchar 类型,且不超过 152 字符| +|N_NATIONKEY |INTEGER|民族的唯一标识 | 所有标识都应该是 INTEGER 类型的| +|N_NAME |CHAR|民族名字 | 民族的名称都是 char 类型,且不超过 25 字符| +|N_REGIONKEY|INTEGER|地区区号,唯一标识 | 所有标识都应该是 INTEGER 类型的| +|N_COMMENT|VARCHAR|comment 信息|varchar 类型,且不超过 152 字符| MatrixOne 支持许多其他的列数据类型,包含整数、浮点数、时间等,参见[数据类型](../../Reference/Data-Types/data-types.md)。 @@ -99,8 +99,8 @@ PRIMARY KEY (O_ORDERKEY) |字段名 | 数据类型 | 作用 | 解释| |---|---|---|---| -|O_TOTALPRICE|DECIMAL|用于标记价格|精度为 15,比例为 2,即精度代表字段数值的总位数,而比例代表小数点后有多少位,例如: decimal(5,2),即精度为 5,比例为 2 时,其取值范围为 -999.99 到 999.99。decimal(6,1) ,即精度为 6,比例为 1 时,其取值范围为 -99999.9 到 99999.9。| -|O_ORDERDATE|DATE|日期值|订单产生的日期| +|O_TOTALPRICE|DECIMAL|用于标记价格 | 精度为 15,比例为 2,即精度代表字段数值的总位数,而比例代表小数点后有多少位,例如:decimal(5,2),即精度为 5,比例为 2 时,其取值范围为 -999.99 到 999.99。decimal(6,1) ,即精度为 6,比例为 1 时,其取值范围为 -99999.9 到 99999.9。| +|O_ORDERDATE|DATE|日期值 | 订单产生的日期| ## 选择主键 diff --git a/docs/MatrixOne/Develop/schema-design/create-temporary-table.md b/docs/MatrixOne/Develop/schema-design/create-temporary-table.md index c9e9747b0f..6694293a92 100644 --- a/docs/MatrixOne/Develop/schema-design/create-temporary-table.md +++ b/docs/MatrixOne/Develop/schema-design/create-temporary-table.md @@ -50,7 +50,7 @@ CREATE TEMPORARY TABLE temp_table_name (column_list); ```sql -- 创建一个临时表 'temp_employees' CREATE TEMPORARY TABLE temp_employees ( - employee_id INT AUTO_INCREMENT, -- 自增的员工ID + employee_id INT AUTO_INCREMENT, -- 自增的员工 ID first_name VARCHAR(50), -- 员工名 last_name VARCHAR(50), -- 员工姓 email VARCHAR(100), -- 员工电子邮件地址 diff --git a/docs/MatrixOne/Develop/schema-design/data-integrity/foreign-key-constraints.md b/docs/MatrixOne/Develop/schema-design/data-integrity/foreign-key-constraints.md index cbf1815de5..2da8186799 100644 --- a/docs/MatrixOne/Develop/schema-design/data-integrity/foreign-key-constraints.md +++ b/docs/MatrixOne/Develop/schema-design/data-integrity/foreign-key-constraints.md @@ -70,25 +70,25 @@ reference_option: ### 示例 1 ```sql --- 创建名为t1的表,包含两列:a和b。a列为int类型并设为主键,b列为varchar类型,长度为5 +-- 创建名为 t1 的表,包含两列:a 和 b。a 列为 int 类型并设为主键,b 列为 varchar 类型,长度为 5 create table t1(a int primary key, b varchar(5)); --- 创建名为t2的表,包含三列:a、b和c。a列为int类型,b列为varchar类型,长度为5。c列为int类型,并且被设定为外键,与t1表的a列建立关系 +-- 创建名为 t2 的表,包含三列:a、b 和 c。a 列为 int 类型,b 列为 varchar 类型,长度为 5。c 列为 int 类型,并且被设定为外键,与 t1 表的 a 列建立关系 create table t2(a int ,b varchar(5), c int, foreign key(c) references t1(a)); --- 在t1表中插入两行数据:(101, 'abc') 和 (102, 'def') +-- 在 t1 表中插入两行数据:(101, 'abc') 和 (102, 'def') mysql> insert into t1 values(101,'abc'),(102,'def'); Query OK, 2 rows affected (0.01 sec) --- 在t2表中插入两行数据:(1, 'zs1', 101) 和 (2, 'zs2', 102),其中的101和102是t1表的主键 +-- 在 t2 表中插入两行数据:(1, 'zs1', 101) 和 (2, 'zs2', 102),其中的 101 和 102 是 t1 表的主键 mysql> insert into t2 values(1,'zs1',101),(2,'zs2',102); Query OK, 2 rows affected (0.01 sec) --- 在t2表中插入一行数据:(3, 'xyz', null),其中的null表示这行数据在c列(即外键列)没有关联的主键 +-- 在 t2 表中插入一行数据:(3, 'xyz', null),其中的 null 表示这行数据在 c 列(即外键列)没有关联的主键 mysql> insert into t2 values(3,'xyz',null); Query OK, 1 row affected (0.01 sec) --- 尝试在t2表中插入一行数据:(3, 'xxa', 103),但是103在t1表的主键中不存在,因此插入失败,违反了外键约束 +-- 尝试在 t2 表中插入一行数据:(3, 'xxa', 103),但是 103 在 t1 表的主键中不存在,因此插入失败,违反了外键约束 mysql> insert into t2 values(3,'xxa',103); ERROR 20101 (HY000): internal error: Cannot add or update a child row: a foreign key constraint fails @@ -101,25 +101,25 @@ ERROR 20101 (HY000): internal error: Cannot add or update a child row: a foreign ```sql -- 创建一个名为"Student"的表,用于存储学生信息 CREATE TABLE Student ( - StudentID INT, -- 学生ID字段,整型 - Name VARCHAR(100), -- 学生名字字段,最大长度100的字符串 - PRIMARY KEY (StudentID) -- 将StudentID设定为这个表的主键 + StudentID INT, -- 学生 ID 字段,整型 + Name VARCHAR(100), -- 学生名字字段,最大长度 100 的字符串 + PRIMARY KEY (StudentID) -- 将 StudentID 设定为这个表的主键 ); -- 创建一个名为"Course"的表,用于存储课程信息 CREATE TABLE Course ( - CourseID INT, -- 课程ID字段,整型 - CourseName VARCHAR(100), -- 课程名字字段,最大长度100的字符串 - PRIMARY KEY (CourseID) -- 将CourseID设定为这个表的主键 + CourseID INT, -- 课程 ID 字段,整型 + CourseName VARCHAR(100), -- 课程名字字段,最大长度 100 的字符串 + PRIMARY KEY (CourseID) -- 将 CourseID 设定为这个表的主键 ); -- 创建一个名为"StudentCourse"的表,用于存储学生选课信息 CREATE TABLE StudentCourse ( - StudentID INT, -- 学生ID字段,整型,与Student表的StudentID字段对应 - CourseID INT, -- 课程ID字段,整型,与Course表的CourseID字段对应 - PRIMARY KEY (StudentID, CourseID), -- 将StudentID和CourseID的组合设定为这个表的主键 - FOREIGN KEY (StudentID) REFERENCES Student(StudentID), -- 设置StudentID字段为外键,引用Student表的StudentID字段 - FOREIGN KEY (CourseID) REFERENCES Course(CourseID) -- 设置CourseID字段为外键,引用Course表的CourseID字段 + StudentID INT, -- 学生 ID 字段,整型,与 Student 表的 StudentID 字段对应 + CourseID INT, -- 课程 ID 字段,整型,与 Course 表的 CourseID 字段对应 + PRIMARY KEY (StudentID, CourseID), -- 将 StudentID 和 CourseID 的组合设定为这个表的主键 + FOREIGN KEY (StudentID) REFERENCES Student(StudentID), -- 设置 StudentID 字段为外键,引用 Student 表的 StudentID 字段 + FOREIGN KEY (CourseID) REFERENCES Course(CourseID) -- 设置 CourseID 字段为外键,引用 Course 表的 CourseID 字段 ); ``` @@ -130,27 +130,27 @@ CREATE TABLE StudentCourse ( ```sql -- 创建一个名为"Country"的表,用于存储国家信息 CREATE TABLE Country ( - CountryID INT, -- 国家ID字段,整型 - CountryName VARCHAR(100), -- 国家名字字段,最大长度100的字符串 - PRIMARY KEY (CountryID) -- 将CountryID设定为这个表的主键 + CountryID INT, -- 国家 ID 字段,整型 + CountryName VARCHAR(100), -- 国家名字字段,最大长度 100 的字符串 + PRIMARY KEY (CountryID) -- 将 CountryID 设定为这个表的主键 ); -- 创建一个名为"State"的表,用于存储州/省份信息 CREATE TABLE State ( StateID INT, -- 州/省份ID字段,整型 StateName VARCHAR(100), -- 州/省份名字字段,最大长度100的字符串 - CountryID INT, -- 国家ID字段,整型,与Country表的CountryID字段对应 - PRIMARY KEY (StateID), -- 将StateID设定为这个表的主键 - FOREIGN KEY (CountryID) REFERENCES Country(CountryID) -- 设置CountryID字段为外键,引用Country表的CountryID字段 + CountryID INT, -- 国家 ID 字段,整型,与 Country 表的 CountryID 字段对应 + PRIMARY KEY (StateID), -- 将 StateID 设定为这个表的主键 + FOREIGN KEY (CountryID) REFERENCES Country(CountryID) -- 设置 CountryID 字段为外键,引用 Country 表的 CountryID 字段 ); -- 创建一个名为"City"的表,用于存储城市信息 CREATE TABLE City ( - CityID INT, -- 城市ID字段,整型 - CityName VARCHAR(100), -- 城市名字字段,最大长度100的字符串 + CityID INT, -- 城市 ID 字段,整型 + CityName VARCHAR(100), -- 城市名字字段,最大长度 100 的字符串 StateID INT, -- 州/省份ID字段,整型,与State表的StateID字段对应 - PRIMARY KEY (CityID), -- 将CityID设定为这个表的主键 - FOREIGN KEY (StateID) REFERENCES State(StateID) -- 设置StateID字段为外键,引用State表的StateID字段 + PRIMARY KEY (CityID), -- 将 CityID 设定为这个表的主键 + FOREIGN KEY (StateID) REFERENCES State(StateID) -- 设置 StateID 字段为外键,引用 State 表的 StateID 字段 ); ``` diff --git a/docs/MatrixOne/Get-Started/install-on-linux/install-on-linux-method3.md b/docs/MatrixOne/Get-Started/install-on-linux/install-on-linux-method3.md index 8994532b8c..341599948a 100644 --- a/docs/MatrixOne/Get-Started/install-on-linux/install-on-linux-method3.md +++ b/docs/MatrixOne/Get-Started/install-on-linux/install-on-linux-method3.md @@ -115,7 +115,7 @@ Debian11.1 版本默认没有安装 MySQL Client,因此需要手动下载安 ``` mysql -h 127.0.0.1 -P 6001 -uroot -p - Enter password: # 初始密码默认为111 + Enter password: # 初始密码默认为 111 ``` 目前,MatrixOne 只支持 TCP 监听。 diff --git a/docs/MatrixOne/Get-Started/install-on-macos/install-on-macos-method1.md b/docs/MatrixOne/Get-Started/install-on-macos/install-on-macos-method1.md index 9da0dd0462..a84c7631a4 100644 --- a/docs/MatrixOne/Get-Started/install-on-macos/install-on-macos-method1.md +++ b/docs/MatrixOne/Get-Started/install-on-macos/install-on-macos-method1.md @@ -11,7 +11,7 @@ MatrixOne 支持 x86 及 ARM 的 macOS 系统,本文以 Macbook M1 ARM 版本 | 依赖软件 | 版本 | | ------------ | ------------------------------- | | golang | 1.20 及以上 | -| gcc/clang | gcc8.5 及以上, clang13.0 及以上 | +| gcc/clang | gcc8.5 及以上,clang13.0 及以上 | | git | 2.20 及以上 | | MySQL Client | 8.0 及以上 | diff --git a/docs/MatrixOne/Get-Started/install-on-macos/install-on-macos-method3.md b/docs/MatrixOne/Get-Started/install-on-macos/install-on-macos-method3.md index c7095f7c0b..609ec80b6c 100644 --- a/docs/MatrixOne/Get-Started/install-on-macos/install-on-macos-method3.md +++ b/docs/MatrixOne/Get-Started/install-on-macos/install-on-macos-method3.md @@ -110,7 +110,7 @@ ``` mysql -h 127.0.0.1 -P 6001 -uroot -p - Enter password: # 初始密码默认为111 + Enter password: # 初始密码默认为 111 ``` 目前,MatrixOne 只支持 TCP 监听。 diff --git a/docs/MatrixOne/Maintain/mo_ctl.md b/docs/MatrixOne/Maintain/mo_ctl.md index a231959eda..60772ea3a3 100644 --- a/docs/MatrixOne/Maintain/mo_ctl.md +++ b/docs/MatrixOne/Maintain/mo_ctl.md @@ -17,23 +17,23 @@ | 命令 | 功能 | | -------------------- | ------------------------------------------------------------ | | `mo_ctl help` | 查看`mo_ctl`工具本身的语句和功能列表 | -| `mo_ctl precheck` | 检查MatrixOne源码安装所需要的依赖项,分别为golang, gcc, git,MySQL Client | -| `mo_ctl deploy` | 下载并安装及编译MatrixOne相应版本,默认为安装最新稳定版本 | -| `mo_ctl start` | 启动MatrixOne服务 | -| `mo_ctl status` | 检查MatrixOne服务是否正在运行中 | -| `mo_ctl stop` | 停止所有MatrixOne服务进程 | -| `mo_ctl restart` | 重启MatrixOne服务 | -| `mo_ctl connect` | 调用MySQL Client连接MatrixOne服务 | -| `mo_ctl upgrade` | 将MatrixOne从当前版本升级/降级到某个发布版本或者commit id版本 | +| `mo_ctl precheck` | 检查 MatrixOne 源码安装所需要的依赖项,分别为 golang, gcc, git,MySQL Client | +| `mo_ctl deploy` | 下载并安装及编译 MatrixOne 相应版本,默认为安装最新稳定版本 | +| `mo_ctl start` | 启动 MatrixOne 服务 | +| `mo_ctl status` | 检查 MatrixOne 服务是否正在运行中 | +| `mo_ctl stop` | 停止所有 MatrixOne 服务进程 | +| `mo_ctl restart` | 重启 MatrixOne 服务 | +| `mo_ctl connect` | 调用 MySQL Client 连接 MatrixOne 服务 | +| `mo_ctl upgrade` | 将MatrixOne从当前版本升级/降级到某个发布版本或者commit id 版本 | | `mo_ctl set_conf` | 设置各类使用参数 | | `mo_ctl get_conf` | 查看当前使用参数 | -| `mo_ctl uninstall` | 从MO_PATH路径下卸载MatrixOne | -| `mo_ctl watchdog` | 设置一个定时任务保证MatrixOne服务可用性,每分钟检查MatrixOne的状态,如果发现服务中止则自动拉起服务 | -| `mo_ctl sql` | 直接通过命令执行SQL或者SQL构成的文本文件 | -| `mo_ctl ddl_convert` | 将MySQL的DDL语句转换成MatrixOne语句的工具 | -| `mo_ctl get_cid` | 查看当前使用MatrixOne下载仓库的源码版本 | -| `mo_ctl get_branch` | 查看当前使用MatrixOne下载仓库的分支版本 | -| `mo_ctl pprof` | 用于收集MatrixOne的性能分析数据 | +| `mo_ctl uninstall` | 从 MO_PATH 路径下卸载 MatrixOne | +| `mo_ctl watchdog` | 设置一个定时任务保证 MatrixOne 服务可用性,每分钟检查 MatrixOne 的状态,如果发现服务中止则自动拉起服务 | +| `mo_ctl sql` | 直接通过命令执行 SQL 或者 SQL 构成的文本文件 | +| `mo_ctl ddl_convert` | 将 MySQL 的 DDL 语句转换成 MatrixOne 语句的工具 | +| `mo_ctl get_cid` | 查看当前使用 MatrixOne 下载仓库的源码版本 | +| `mo_ctl get_branch` | 查看当前使用 MatrixOne 下载仓库的分支版本 | +| `mo_ctl pprof` | 用于收集 MatrixOne 的性能分析数据 | ## 安装 mo_ctl @@ -155,7 +155,7 @@ Usage : mo_ctl deploy [mo_version] [force] # deploy mo onto the path con ### start - 启动 MatrixOne 服务 -使用 `mo_ctl start` 启动 MatrixOne 服务, 启动文件路径位于 `MO_PATH` 下。 +使用 `mo_ctl start` 启动 MatrixOne 服务,启动文件路径位于 `MO_PATH` 下。 ``` mo_ctl start help @@ -176,7 +176,7 @@ Usage : mo_ctl stop [force] # stop all mo-service processes found on thi ### restart - 重启 MatrixOne 服务 -使用 `mo_ctl restart [force]` 停止所有本机器上 MatrixOne 服务,并重启位于 `MO_PATH` 路径下的 MatrixOne 服务. +使用 `mo_ctl restart [force]` 停止所有本机器上 MatrixOne 服务,并重启位于 `MO_PATH` 路径下的 MatrixOne 服务。 ``` mo_ctl restart help @@ -224,7 +224,7 @@ Usage : mo_ctl get_branch # print which git branch mo is curren ### pprof - 收集性能信息 -使用 `mo_ctl pprof [item] [duration]` 收集 MatrixOne 的相关性能信息, 主要为开发人员进行调试使用。 +使用 `mo_ctl pprof [item] [duration]` 收集 MatrixOne 的相关性能信息,主要为开发人员进行调试使用。 ``` mo_ctl pprof help @@ -273,25 +273,25 @@ Usage : mo_ctl getconf [conf_list] # get configurations | 参数名称 | 功能 | 取值规范 | | ---------------------- | --------------------------------------------------- | ------------------------------------------------------------ | -| MO_PATH | MatrixOne的代码库及可执行文件存放位置 | 文件夹路径 | -| MO_LOG_PATH | MatrixOne的日志存放位置 | 文件夹路径,默认为${MO_PATH}/matrixone/logs | -| MO_HOST | 连接MatrixOne服务的IP地址 | IP地址,默认为127.0.0.1 | -| MO_PORT | 连接MatrixOne服务的端口号 | 端口号,默认为6001 | -| MO_USER | 连接MatrixOne服务使用的用户名 | 用户名,默认为root | -| MO_PW | 连接MatrixOne服务使用的密码 | 密码,默认为111 | -| CHECK_LIST | precheck需要的检查依赖项 | 默认为("go" "gcc" "git" "mysql") | -| GCC_VERSION | precheck检查的gcc版本 | 默认为8.5.0 | -| GO_VERSION | precheck检查的go版本 | 默认为1.20 | -| MO_GIT_URL | MatrixOne的源码拉取地址 | 默认为 | -| MO_DEFAULT_VERSION | 默认拉取的MatrixOne的版本 | 默认为1.0.0-rc1 | -| GOPROXY | GOPROXY的地址,一般为国内加速拉取golang依赖包而使用 | 默认为,direct | -| STOP_INTERVAL | 停止间隔,停止服务后检测服务状态等待时间 | 默认为5秒 | -| START_INTERVAL | 启动间隔,启动服务后检测服务状态等待时间 | 默认为2秒 | -| MO_DEBUG_PORT | MatrixOne的debug端口,一般为开发人员使用 | 默认为9876 | -| MO_CONF_FILE | MatrixOne的启动配置文件 | 默认为${MO_PATH}/matrixone/etc/launch/launch.toml | -| RESTART_INTERVAL | 重启间隔,重启服务后检测服务状态等待时间 | 默认为2秒 | -| PPROF_OUT_PATH | golang的性能收集数据输出路径 | 默认为/tmp/pprof-test/ | -| PPROF_PROFILE_DURATION | golang的性能收集时间 | 默认为30秒 | +| MO_PATH | MatrixOne 的代码库及可执行文件存放位置 | 文件夹路径 | +| MO_LOG_PATH | MatrixOne 的日志存放位置 | 文件夹路径,默认为${MO_PATH}/matrixone/logs | +| MO_HOST | 连接 MatrixOne 服务的 IP 地址 | IP 地址,默认为 127.0.0.1 | +| MO_PORT | 连接 MatrixOne 服务的端口号 | 端口号,默认为 6001 | +| MO_USER | 连接 MatrixOne 服务使用的用户名 | 用户名,默认为 root | +| MO_PW | 连接 MatrixOne 服务使用的密码 | 密码,默认为 111 | +| CHECK_LIST | precheck 需要的检查依赖项 | 默认为 ("go" "gcc" "git" "mysql") | +| GCC_VERSION | precheck 检查的 gcc 版本 | 默认为 8.5.0 | +| GO_VERSION | precheck 检查的 go 版本 | 默认为 1.20 | +| MO_GIT_URL | MatrixOne 的源码拉取地址 | 默认为 | +| MO_DEFAULT_VERSION | 默认拉取的 MatrixOne 的版本 | 默认为 1.0.0-rc1 | +| GOPROXY | GOPROXY 的地址,一般为国内加速拉取 golang 依赖包而使用 | 默认为,direct | +| STOP_INTERVAL | 停止间隔,停止服务后检测服务状态等待时间 | 默认为 5 秒 | +| START_INTERVAL | 启动间隔,启动服务后检测服务状态等待时间 | 默认为 2 秒 | +| MO_DEBUG_PORT | MatrixOne 的 debug 端口,一般为开发人员使用 | 默认为 9876 | +| MO_CONF_FILE | MatrixOne 的启动配置文件 | 默认为${MO_PATH}/matrixone/etc/launch/launch.toml | +| RESTART_INTERVAL | 重启间隔,重启服务后检测服务状态等待时间 | 默认为 2 秒 | +| PPROF_OUT_PATH | golang 的性能收集数据输出路径 | 默认为/tmp/pprof-test/ | +| PPROF_PROFILE_DURATION | golang 的性能收集时间 | 默认为 30 秒 | ### ddl_convert - DDL 格式转换 @@ -357,4 +357,4 @@ Usage : mo_ctl watchdog [options] # setup a watchdog crontab task fo : mo_ctl watchdog # same as mo_ctl watchdog status ``` - + diff --git a/docs/MatrixOne/MatrixCampEvent.md b/docs/MatrixOne/MatrixCampEvent.md index 2947699fed..ee023d7340 100644 --- a/docs/MatrixOne/MatrixCampEvent.md +++ b/docs/MatrixOne/MatrixCampEvent.md @@ -9,16 +9,16 @@ MatrixOne 社区一共准备了 4 个类别的 56 个任务,有不同的难度 这次的任务大家将要挑战的是 MatrixOne 的系统函数和聚合函数,对于刚入门数据库的同学来讲是相对基础但是又不乏挑战的任务。 -- 基础任务-系统函数(Built-in function): 所谓的系统函数就是数据库自带的针对一些基础数据类型进行操作的函数,比如常见的 round(), time(), substring() 等等。第一周将有 25 个系统函数作为基础任务发布给大家进行挑战,包含数学类函数,时间日期类函数,字符串类函数,有 9 个任务非常容易,16 个任务稍微有一些难度,只要你有一定的 go 语言基础,看得懂英文文档,就能快速上手解决哦。 +- 基础任务 - 系统函数(Built-in function): 所谓的系统函数就是数据库自带的针对一些基础数据类型进行操作的函数,比如常见的 round(), time(), substring() 等等。第一周将有 25 个系统函数作为基础任务发布给大家进行挑战,包含数学类函数,时间日期类函数,字符串类函数,有 9 个任务非常容易,16 个任务稍微有一些难度,只要你有一定的 go 语言基础,看得懂英文文档,就能快速上手解决哦。 -- 挑战任务 - 聚合函数(Aggregate function):所谓的聚合函数就是需要聚集一部分数据进行运算返回结果的函数,比如常见的 sum(), count(), avg() 等等。在 MatrixOne 中,实现聚合函数是要用到我们的大杀器因子化加速能力的,需要对因子化中的 “环” 数据结构理论有一定理解,实现会有一定复杂度,所以我们将 5 个聚合函数列为了挑战任务。 +- 挑战任务 - 聚合函数(Aggregate function):所谓的聚合函数就是需要聚集一部分数据进行运算返回结果的函数,比如常见的 sum(), count(), avg() 等等。在 MatrixOne 中,实现聚合函数是要用到我们的大杀器因子化加速能力的,需要对因子化中的“环”数据结构理论有一定理解,实现会有一定复杂度,所以我们将 5 个聚合函数列为了挑战任务。 ## 参与流程 在开始之前,先给 MatrixOne 项目 Star, Fork, Watch 一下吧。 -1. 选择很重要!加小助手微信 “MatrixOrigin001” 填写活动注册表 选择你想要完成的函数任务,并加入 MatrixOne 社区群。 -2. 登录 Github,在你选择的函数 issue 留下你的 comment,比如 “I'd like to work on this issue”, 小助手会将相关 issue 分配给你。 +1. 选择很重要!加小助手微信“MatrixOrigin001”填写活动注册表 选择你想要完成的函数任务,并加入 MatrixOne 社区群。 +2. 登录 Github,在你选择的函数 issue 留下你的 comment,比如“I'd like to work on this issue”, 小助手会将相关 issue 分配给你。 3. 开始只属于你的函数体验任务。如有任何问题,MatrixOne 社区群里的技术大牛全程在线支持。 > 请注意:1 个开发者可以选择多个挑战任务,但是 1 个任务只能由 1 个开发者完成 @@ -104,7 +104,7 @@ MatrixOne 社区一共准备了 4 个类别的 56 个任务,有不同的难度 1. 注意在实现功能完成之后一定要写单元测试哦,否则你的 PR 是不会被社区采纳的。 2. 完成代码编写之后,按以下格式向 MatrixOne 提交 PR: -* PR 格式: [MatrixCamp] + function name + PR title +* PR 格式:[MatrixCamp] + function name + PR title * 标签:[MatrixCamp] * PR 内容:遵循 [MatrixOne 的 PR 模版] () diff --git a/docs/MatrixOne/Migrate/migrate-from-oracle-to-matrixone.md b/docs/MatrixOne/Migrate/migrate-from-oracle-to-matrixone.md index b016de846f..4c1fe995b9 100644 --- a/docs/MatrixOne/Migrate/migrate-from-oracle-to-matrixone.md +++ b/docs/MatrixOne/Migrate/migrate-from-oracle-to-matrixone.md @@ -53,7 +53,7 @@ MatrixOne 与 Oracle 自带的数据类型存在着较多的差异,这些差 2. 使用下面的命令替换 *oracle_ddl.sql* 文件内 MatrixOne 不支持的关键字: ``` - # Linux系统执行的命令如下: + # Linux 系统执行的命令如下: sed -i '/CHECK (/d' /YOUR_PATH/oracle_ddl.sql sed -i '/CREATE UNIQUE INDEX/g' /YOUR_PATH/oracle_ddl.sql sed -i 's/NUMBER(3,0)/smallint/g' /YOUR_PATH/oracle_ddl.sql @@ -132,7 +132,7 @@ MatrixOne 与 Oracle 自带的数据类型存在着较多的差异,这些差 2. 使用下面的命令替换 *oracle_ddl.sql* 文件内 MatrixOne 不支持的关键字: ``` - # Linux系统执行的命令如下: + # Linux 系统执行的命令如下: sed -i '/CHECK (/d' /YOUR_PATH/oracle_ddl.sql sed -i '/CREATE UNIQUE INDEX/g' /YOUR_PATH/oracle_ddl.sql sed -i 's/NUMBER(3,0)/smallint/g' /YOUR_PATH/oracle_ddl.sql diff --git a/docs/MatrixOne/Migrate/migrate-from-postgresql-to-matrixone.md b/docs/MatrixOne/Migrate/migrate-from-postgresql-to-matrixone.md index 0ef5f6aaf5..feb323cb6e 100644 --- a/docs/MatrixOne/Migrate/migrate-from-postgresql-to-matrixone.md +++ b/docs/MatrixOne/Migrate/migrate-from-postgresql-to-matrixone.md @@ -12,21 +12,21 @@ MatrixOne 与 PostgreSQL 自带的数据类型存在着较多的差异,这些 |PostgreSQL | MatrixOne | |---|---| -|serial |通过自增列替换| -|money |使用 decimal 替换| -|bytea |使用 binary 或 varbinary 替换| -|geometric |暂不支持| -|network adress |使用 char 或 varchar 替换| -|bit string |暂不支持| -|text search |暂不支持| -|xml |暂不支持| -|array |暂不支持| -|composite |暂不支持| -|range |暂不支持| -|domain |暂不支持| -|object identifier |暂不支持| -|pg_lsn |暂不支持| -|pseudo |暂不支持| +|serial | 通过自增列替换| +|money | 使用 decimal 替换| +|bytea | 使用 binary 或 varbinary 替换| +|geometric | 暂不支持| +|network adress | 使用 char 或 varchar 替换| +|bit string | 暂不支持| +|text search | 暂不支持| +|xml | 暂不支持| +|array | 暂不支持| +|composite | 暂不支持| +|range | 暂不支持| +|domain | 暂不支持| +|object identifier | 暂不支持| +|pg_lsn | 暂不支持| +|pseudo | 暂不支持| ## 在线迁移 @@ -56,7 +56,7 @@ MatrixOne 与 PostgreSQL 自带的数据类型存在着较多的差异,这些 a. 首先,运行下面的命令,将 *pg_ddl.sql* 文件中的 `bpchar` 替换为 `char`: ``` - # Linux系统执行的命令如下: + # Linux 系统执行的命令如下: sed -i 's/bpchar/char/g' pg_ddl.sql # MacOS 系统则使用的命令如下: @@ -73,7 +73,7 @@ MatrixOne 与 PostgreSQL 自带的数据类型存在着较多的差异,这些 c. 转换后的 DDL 会保留原始的 Postgresql schema 名称。如果有必要,你可以执行以下命令,将 schema 名称替换为 MySQL 中的数据库名称: ``` - # Linux系统执行的命令如下: + # Linux 系统执行的命令如下: sed -i 's/{schema_name}/{database_name}/g' mysql_ddl.sql # MacOS 系统则使用的命令如下: @@ -83,7 +83,7 @@ MatrixOne 与 PostgreSQL 自带的数据类型存在着较多的差异,这些 d. 最后,你可能需要统一将 *mysql_ddl.sql* 文件中的 `numeric` 替换为 `decimal`,可以通过以下命令实现: ``` - # Linux系统执行的命令如下: + # Linux 系统执行的命令如下: sed -i 's/numeric/decimal/g' mysql_ddl.sql # MacOS 系统则使用的命令如下: @@ -151,7 +151,7 @@ MatrixOne 与 PostgreSQL 自带的数据类型存在着较多的差异,这些 a. 首先,运行下面的命令,将 *pg_ddl.sql* 文件中的 `bpchar` 替换为 `char`: ``` - # Linux系统执行的命令如下: + # Linux 系统执行的命令如下: sed -i 's/bpchar/char/g' pg_ddl.sql # MacOS 系统则使用的命令如下: @@ -168,7 +168,7 @@ MatrixOne 与 PostgreSQL 自带的数据类型存在着较多的差异,这些 c. 转换后的 DDL 会保留原始的 Postgresql schema 名称。如果有必要,你可以执行以下命令,将 schema 名称替换为 MySQL 中的数据库名称: ``` - # Linux系统执行的命令如下: + # Linux 系统执行的命令如下: sed -i 's/{schema_name}/{database_name}/g' mysql_ddl.sql # MacOS 系统则使用的命令如下: @@ -178,7 +178,7 @@ MatrixOne 与 PostgreSQL 自带的数据类型存在着较多的差异,这些 d. 最后,你可能需要统一将 *mysql_ddl.sql* 文件中的 `numeric` 替换为 `decimal`,可以通过以下命令实现: ``` - # Linux系统执行的命令如下: + # Linux 系统执行的命令如下: sed -i 's/numeric/decimal/g' mysql_ddl.sql # MacOS 系统则使用的命令如下: diff --git a/docs/MatrixOne/Migrate/migrate-from-sqlserver-to-matrixone.md b/docs/MatrixOne/Migrate/migrate-from-sqlserver-to-matrixone.md index 4fc5af3dbf..f19b32fe95 100644 --- a/docs/MatrixOne/Migrate/migrate-from-sqlserver-to-matrixone.md +++ b/docs/MatrixOne/Migrate/migrate-from-sqlserver-to-matrixone.md @@ -145,7 +145,7 @@ MatrixOne 与 SQL Server 存在着诸多类型上的差异,这些差异有些 2. 使用下面的命令替换 *sqlserver_ddl.sql* 文件内 MatrixOne 不支持的关键字: ``` - # Linux系统执行的命令如下: + # Linux 系统执行的命令如下: sed -i 's/,N/,/g' mssql_data.sql # MacOS 系统则使用的命令如下: diff --git a/docs/MatrixOne/Overview/1.1-matrixone-feature-list.md b/docs/MatrixOne/Overview/1.1-matrixone-feature-list.md index 51bcee18ff..c52167b4a2 100644 --- a/docs/MatrixOne/Overview/1.1-matrixone-feature-list.md +++ b/docs/MatrixOne/Overview/1.1-matrixone-feature-list.md @@ -6,27 +6,27 @@ | 数据定义语言 (DDL) | 支持(Y)/不支持(N)/实验特性 (E) | | ---------------------------------- | -------------------------------------------- | -| 创建数据库CREATE DATABASE | Y | -| 删除数据库DROP DATABASE | Y | -| 修改数据库ALTER DATABASE | N | -| 创建表CREATE TABLE | Y | -| 修改表ALTER TABLE | E,子句`CHANGE [COLUMN]`,`MODIFY [COLUMN]`,`RENAME COLUMN`,`ADD [CONSTRAINT [symbol]] PRIMARY KEY`,`DROP PRIMARY KEY` 和 `ALTER COLUMN ORDER BY` 可以在 ALTER TABLE 语句中自由组合使用,但暂时不支持与其他子句一起使用。 | -| 修改表名RENAME TABLE | N,可用ALTER TABLE tbl RENAME TO new_tbl替代 | -| 删除表DROP TABLE | Y | -| 创建约束CREATE INDEX | Y,次级索引没有加速作用 | -| 删除约束DROP INDEX | Y | -| 修改列MODIFY COLUMN | N | -| 主键PRIMARY KEY | Y | -| 创建视图CREATE VIEW | Y | -| 修改视图ALTER VIEW | Y | -| 删除视图DROP VIEW | Y | -| 清空表TRUNCATE TABLE | Y | -| 自增列AUTO_INCREMENT | Y | -| 序列SEQUENCE | Y | -| 临时表TEMPORARY TABLE | Y | -| 流式表CREATE STREAM | E,部分支持 | -| 分区表PARTITION BY | E,部分类型支持 | -| 字符集和排序顺序CHARSET,COLLATION | N,仅默认支持UTF8 | +| 创建数据库 CREATE DATABASE | Y | +| 删除数据库 DROP DATABASE | Y | +| 修改数据库 ALTER DATABASE | N | +| 创建表 CREATE TABLE | Y | +| 修改表 ALTER TABLE | E,子句`CHANGE [COLUMN]`,`MODIFY [COLUMN]`,`RENAME COLUMN`,`ADD [CONSTRAINT [symbol]] PRIMARY KEY`,`DROP PRIMARY KEY` 和 `ALTER COLUMN ORDER BY` 可以在 ALTER TABLE 语句中自由组合使用,但暂时不支持与其他子句一起使用。 | +| 修改表名 RENAME TABLE | N,可用 ALTER TABLE tbl RENAME TO new_tbl 替代 | +| 删除表 DROP TABLE | Y | +| 创建约束 CREATE INDEX | Y,次级索引没有加速作用 | +| 删除约束 DROP INDEX | Y | +| 修改列 MODIFY COLUMN | N | +| 主键 PRIMARY KEY | Y | +| 创建视图 CREATE VIEW | Y | +| 修改视图 ALTER VIEW | Y | +| 删除视图 DROP VIEW | Y | +| 清空表 TRUNCATE TABLE | Y | +| 自增列 AUTO_INCREMENT | Y | +| 序列 SEQUENCE | Y | +| 临时表 TEMPORARY TABLE | Y | +| 流式表 CREATE STREAM | E,部分支持 | +| 分区表 PARTITION BY | E,部分类型支持 | +| 字符集和排序顺序 CHARSET,COLLATION | N,仅默认支持 UTF8 | ## 数据修改/查询语言(Data manipulation/query language, DML/DQL) @@ -46,7 +46,7 @@ | GROUP BY, ORDER BY | Y | | 预排序 CLUSTER BY | Y | | 子查询 SUBQUERY | Y | -| 公共表表达式(Common Table Expressions,CTE) | Y | +| 公共表表达式 (Common Table Expressions,CTE) | Y | | 事务语句 BEGIN/START TRANSACTION, COMMIT, ROLLBACK | Y | | EXPLAIN | Y | | EXPLAIN ANALYZE | Y | @@ -57,12 +57,12 @@ | 高级 SQL 功能 | 支持(Y)/不支持(N)/实验特性 (E) | | ----------------------------- | ---------------------------------- | -| 预处理PREPARE | Y | +| 预处理 PREPARE | Y | | 存储过程 STORED PROCEDURE | N | | 触发器 TRIGGER | N | -| 时间调度器EVENT SCHEDULER | N | -| 自定义函数UDF | N | -| 增量物化视图Materialized VIEW | N | +| 时间调度器 EVENT SCHEDULER | N | +| 自定义函数 UDF | N | +| 增量物化视图 Materialized VIEW | N | ## 数据类型 @@ -86,7 +86,7 @@ | | TIMESTAMP | Y | | | YEAR | Y | | Boolean | BOOL | Y | -| 定点类型 | DECIMAL | Y,最高到38位 | +| 定点类型 | DECIMAL | Y,最高到 38 位 | | JSON 类型 | JSON | Y | | 向量类型 | VECTOR | N | | 空间类型 | SPATIAL | N | @@ -112,8 +112,8 @@ | 悲观事务 | Y | | 乐观事务 | Y | | 分布式事务 | Y | -| 可重复读隔离(快照SI隔离) | Y | -| 读已提交RC隔离 | Y | +| 可重复读隔离(快照 SI 隔离) | Y | +| 读已提交 RC 隔离 | Y | ## 函数与操作符 @@ -123,10 +123,10 @@ | 数值类函数 | Y | | 时间日期类函数 | Y | | 字符串函数 | Y | -| Cast函数 | Y | +| Cast 函数 | Y | | 流程控制函数 | E | | 窗口函数 | Y | -| JSON函数 | Y | +| JSON 函数 | Y | | 系统函数 | Y | | 其他函数 | Y | | 操作符 | Y | @@ -138,7 +138,7 @@ | KEY 分区 | E | | HASH 分区 | E | | RANGE 分区 | E | -| RANGE COLUMNS分区 | E | +| RANGE COLUMNS 分区 | E | | LIST 分区 | E | | LIST COLUMNS 分区 | E | @@ -146,17 +146,17 @@ | 数据导入和导出 | 支持(Y)/不支持(N)/实验特性 (E) | | ----------------- | ---------------------------------- | -| 文件导入LOAD DATA | Y | -| SQL导入SOURCE | Y | +| 文件导入 LOAD DATA | Y | +| SQL 导入 SOURCE | Y | | 从对象存储导入 | Y | -| modump工具导出SQL | Y | -| mysqldump原生工具 | N | +| modump 工具导出 SQL | Y | +| mysqldump 原生工具 | N | ## 安全与访问控制 | 安全 | 支持(Y)/不支持(N)/实验特性 (E) | | -------------------------- | ---------------------------------- | -| 传输层加密TLS | Y | +| 传输层加密 TLS | Y | | 静态加密 | Y | | 从对象存储导入 | Y | | 基于角色的访问控制(RBAC) | Y | @@ -166,20 +166,20 @@ | 备份和恢复 | 支持(Y)/不支持(N)/实验特性 (E) | | ------------ | ---------------------------------- | -| 逻辑备份恢复 | Y,仅支持modump工具 | +| 逻辑备份恢复 | Y,仅支持 modump 工具 | | 物理备份恢复 | Y | ## 管理工具 | 管理工具 | 支持(Y)/不支持(N)/实验特性 (E) | | -------------------- | ---------------------------------- | -| 单机mo_ctl部署管理 | Y | -| 分布式mo_ctl部署管理 | E,仅企业版 | +| 单机 mo_ctl 部署管理 | Y | +| 分布式 mo_ctl 部署管理 | E,仅企业版 | | 可视化管理平台 | E,仅公有云版本 | | 系统日志记录 | Y | | 系统指标监控 | Y | | 慢查询日志 | Y | -| SQL记录 | Y | +| SQL 记录 | Y | | Kubernetes operator | Y | ## 部署方式 @@ -187,8 +187,8 @@ | 部署方式 | 支持(Y)/不支持(N)/实验特性 (E) | | -------------------- | ----------------------------------- | | 单机环境私有化部署 | Y | -| 分布式环境私有化部署 | Y,自建Kubernetes与minIO对象存储 | +| 分布式环境私有化部署 | Y,自建 Kubernetes 与 minIO 对象存储 | | 阿里云分布式自建部署 | Y,ACK+OSS | | 腾讯云分布式自建部署 | Y,TKE+COS | -| AWS分布式自建部署 | Y,EKS+S3 | -| 公有云Serverless | Y,MatrixOne Cloud,支持AWS,阿里云 | +| AWS 分布式自建部署 | Y,EKS+S3 | +| 公有云 Serverless | Y,MatrixOne Cloud,支持 AWS,阿里云 | diff --git a/docs/MatrixOne/Overview/architecture/architecture-cold-hot-data-separation.md b/docs/MatrixOne/Overview/architecture/architecture-cold-hot-data-separation.md index 962b2c2692..712ecb29ec 100644 --- a/docs/MatrixOne/Overview/architecture/architecture-cold-hot-data-separation.md +++ b/docs/MatrixOne/Overview/architecture/architecture-cold-hot-data-separation.md @@ -73,9 +73,9 @@ spec: cnGroups: - name: cn-set1 ##省略中间配置 - sharedStorageCache: #调配CN缓存的核心参数 - memoryCacheSize: "1" #CN的内存缓存,Mi代表MB - diskCacheSize: 20Mi #CN的磁盘缓存,Gi代表GB + sharedStorageCache: #调配 CN 缓存的核心参数 + memoryCacheSize: "1" #CN 的内存缓存,Mi 代表 MB + diskCacheSize: 20Mi #CN 的磁盘缓存,Gi 代表 GB ``` ### 查询加速 diff --git a/docs/MatrixOne/Overview/architecture/architecture-logtail.md b/docs/MatrixOne/Overview/architecture/architecture-logtail.md index f6c6537235..5f9ffadbbb 100644 --- a/docs/MatrixOne/Overview/architecture/architecture-logtail.md +++ b/docs/MatrixOne/Overview/architecture/architecture-logtail.md @@ -33,7 +33,7 @@ Logtail 协议分为两个部分:内存数据和元数据,其主要区别在 ### 1. 检查点(checkpoint) -当 TN 运行一段时间后,在某个时刻执行检查点,即将此时之前的所有数据转存到对象存储。因此,所有这些元数据将被整理成一个 “压缩包”。当新启动的 CN 连接到 TN 并请求首次 Logtail 时,如果订阅时间戳大于检查点时间戳,TN 可以通过 Logtail 直接传递检查点元数据(一个字符串),从而让 CN 直接读取检查点之前生成的块信息,减轻了从头传递块元数据的网络负担,降低了 TN 的 I/O 压力。 +当 TN 运行一段时间后,在某个时刻执行检查点,即将此时之前的所有数据转存到对象存储。因此,所有这些元数据将被整理成一个“压缩包”。当新启动的 CN 连接到 TN 并请求首次 Logtail 时,如果订阅时间戳大于检查点时间戳,TN 可以通过 Logtail 直接传递检查点元数据(一个字符串),从而让 CN 直接读取检查点之前生成的块信息,减轻了从头传递块元数据的网络负担,降低了 TN 的 I/O 压力。 ### 2. 内存清理 diff --git a/docs/MatrixOne/Overview/architecture/architecture-tae.md b/docs/MatrixOne/Overview/architecture/architecture-tae.md index 35e71bf6b8..67595f259f 100644 --- a/docs/MatrixOne/Overview/architecture/architecture-tae.md +++ b/docs/MatrixOne/Overview/architecture/architecture-tae.md @@ -52,7 +52,7 @@ TAE,如传统列存储引擎一样,在块(Block)和段(Segment)级 TAE 的预写日志采用以下格式的日志条目头部(Log Entry Header): -|项目|字节大小| +|项目 | 字节大小| |---|---| |GroupID|4| |LSN|8| @@ -61,7 +61,7 @@ TAE 的预写日志采用以下格式的日志条目头部(Log Entry Header) 事务日志条目包括以下类型: -|类型|数据类型|值|说明| +|类型 | 数据类型 | 值 | 说明| |---|---|---|---| |AC|int8|0x10|已提交事务的完整写操作| |PC|int8|0x11|已提交事务的部分写操作| @@ -79,7 +79,7 @@ TAE 的 WAL 和日志回放部分已被独立抽象为一个名为 logstore 的 ## 事务处理 -TAE 通过采用多版本并发控制(MVCC)机制来保证事务的隔离性。每个事务都配备一个由事务启动时间决定的一致性读取视图(读视图),因此事务内部读取的数据永不会反映其他并发事务所做的修改。TAE 提供了细粒度的乐观并发控制,在对同一行和同一列进行更新操作时才可能发生冲突。事务使用的是在事务开始时已存在的值版本,并在读取数据时不对其进行加锁。当两个事务试图更新同一个值时,第二个事务会因为写-写冲突而失败。 +TAE 通过采用多版本并发控制(MVCC)机制来保证事务的隔离性。每个事务都配备一个由事务启动时间决定的一致性读取视图(读视图),因此事务内部读取的数据永不会反映其他并发事务所做的修改。TAE 提供了细粒度的乐观并发控制,在对同一行和同一列进行更新操作时才可能发生冲突。事务使用的是在事务开始时已存在的值版本,并在读取数据时不对其进行加锁。当两个事务试图更新同一个值时,第二个事务会因为写 - 写冲突而失败。 在 TAE 的架构中,一个表由多个段组成,每个段是多个事务共同产生的结果。因此,一个段可以表示为 `$[T{start}, T{end}]$`。`$[T{start}` 是最早事务的提交时间,`T{end}]$` 是最新事务的提交时间。为了能够压缩段并进行合并,我们需要在段的表示中增加一个维度以区分版本,即 `$([T{start} T{end}]`,`[T{create}, T{drop}])$`。`$T{create}$` 是段的创建时间,`$T{drop}$` 是段的删除时间。当 `$T{drop} = 0$` 时表示该段未被丢弃。块的表示方式与段 `$([T{start}, T{end}]`,`[T{create}, T{drop}])$` 相同。事务提交时,需要根据提交时间来获取它的读视图:`$(Txn{commit} \geqslant T{create})\bigcap((T{drop}= 0)\bigcup(T{drop} > Txn{commit}))$`。 @@ -91,7 +91,7 @@ L0 层的块 `$Block1 {L0}$` 在 `$t1$` 时创建,它包含了来自 `$Txn1` ![](https://community-shared-data-1308875761.cos.ap-beijing.myqcloud.com/artwork/docs/Tae/compaction.png?raw=true) -压缩过程会终止一系列块或段,并原子性地创建一个新的块或段(或建立索引)。与常规事务相比,此过程通常需要更长的时间,而我们不希望阻止涉及的块或段的更新或删除事务。因此,我们扩展了读视图,将块和段的元数据纳入其中。在提交常规事务时,一旦检测到写操作对应的块(或段)的元数据已更改(提交),该事务将失败。对于压缩事务,其写操作包括块(或段)的软删除和添加。在事务执行期间,每次写入操作都会检测是否存在写-写冲突。一旦冲突发生,事务将被提前终止。 +压缩过程会终止一系列块或段,并原子性地创建一个新的块或段(或建立索引)。与常规事务相比,此过程通常需要更长的时间,而我们不希望阻止涉及的块或段的更新或删除事务。因此,我们扩展了读视图,将块和段的元数据纳入其中。在提交常规事务时,一旦检测到写操作对应的块(或段)的元数据已更改(提交),该事务将失败。对于压缩事务,其写操作包括块(或段)的软删除和添加。在事务执行期间,每次写入操作都会检测是否存在写 - 写冲突。一旦冲突发生,事务将被提前终止。 ## MVCC(多版本并发控制) diff --git a/docs/MatrixOne/Overview/architecture/architecture-transaction-lock.md b/docs/MatrixOne/Overview/architecture/architecture-transaction-lock.md index 056675c59b..ceb1e6b2fc 100644 --- a/docs/MatrixOne/Overview/architecture/architecture-transaction-lock.md +++ b/docs/MatrixOne/Overview/architecture/architecture-transaction-lock.md @@ -10,11 +10,11 @@ MatrixOne 默认支持悲观事务以及读已提交(Read Committed)隔离 MatrixOne 集群由三个内置服务构成:CN(Compute Node)、TN(Transaction Node)、LogService,以及一个外部对象存储服务。 -### CN(Compute Node) +### CN (Compute Node) CN 是计算节点,负责执行大部分计算工作。每个事务客户端(如 JDBC 或 MySQL 客户端)都会与一个 CN 建立连接,发起的事务将在相应的 CN 上创建。每个事务都会在 CN 上分配一个工作空间,用于存储事务的临时数据。当事务提交时,工作空间中的数据将被发送到 TN 节点以进行提交处理。 -### TN(Transaction Node) +### TN (Transaction Node) TN 是事务节点,负责处理所有 CN 节点上的事务提交。TN 节点的职责包括将事务的提交日志写入 LogService,并将提交的数据写入内存。当内存数据达到一定条件时,TN 节点会将提交的数据写入外部对象存储,并清理相关的日志。 @@ -62,13 +62,13 @@ MatrixOne 采用 HLC(Hybrid Logical Clocks)时钟方案,并与内置的 MO - CN 级别的数据可见性,使用 Max(CNCommitTS, LastLogTailTS) 作为事务的 SnapshotTS,以保证同一 CN 节点上发生的事务数据的可见性。 -## RC(Read Committed) +## RC (Read Committed) 前面的章节主要介绍了 MatrixOne 事务的处理,MatrixOne 之前仅支持 SI 隔离级别,基于 MVCC 实现,数据具有多个版本。然而,现在 MatrixOne 还支持 RC(Read Committed)隔离级别。 要在多版本上实现 RC 隔离级别,对于 SI 事务,需要维护一致的快照,不管何时读取,都能看到相同的数据。但是 RC 需要查看最新提交的数据,这相当于一致的快照不再是事务生命周期内的,而是针对每个查询的。每次查询开始时,使用当前时间戳作为事务的 SnapshotTS,以确保查询可以看到之前提交的数据。 -在 RC 模式下,对于带有更新的语句(UPDATE、DELETE、SELECT FOR UPDATE),一旦出现写-写冲突,即意味着其他并发事务已修改了查询所涉及的数据。由于 RC 需要看到最新的写入,因此如果出现冲突事务已提交,必须更新事务的 SnapshotTS,然后重试。 +在 RC 模式下,对于带有更新的语句(UPDATE、DELETE、SELECT FOR UPDATE),一旦出现写 - 写冲突,即意味着其他并发事务已修改了查询所涉及的数据。由于 RC 需要看到最新的写入,因此如果出现冲突事务已提交,必须更新事务的 SnapshotTS,然后重试。 ## 悲观事务 diff --git a/docs/MatrixOne/Overview/feature/key-feature-multi-accounts.md b/docs/MatrixOne/Overview/feature/key-feature-multi-accounts.md index 360e75a150..747268c2ec 100644 --- a/docs/MatrixOne/Overview/feature/key-feature-multi-accounts.md +++ b/docs/MatrixOne/Overview/feature/key-feature-multi-accounts.md @@ -70,11 +70,11 @@ MatrixOne 的多租户能力带来了全新的架构方式。租户仍然共享 mo-account-arch -|多租户模式|数据隔离程度|资源成本|资源隔离程度|运维复杂度| +|多租户模式 | 数据隔离程度 | 资源成本 | 资源隔离程度 | 运维复杂度| |---|---|---|---|---| -|租户共享数据库模式|低|低|低|低| -|租户独立数据库模式|高|高|高|高| -|MatrixOne 模式|高|低|高|低| +|租户共享数据库模式 | 低 | 低 | 低 | 低| +|租户独立数据库模式 | 高 | 高 | 高 | 高| +|MatrixOne 模式 | 高 | 低 | 高 | 低| ### 微服务应用架构 diff --git a/docs/MatrixOne/Overview/matrixone-feature-list.md b/docs/MatrixOne/Overview/matrixone-feature-list.md index b5b6dd97fb..7bd762df6a 100644 --- a/docs/MatrixOne/Overview/matrixone-feature-list.md +++ b/docs/MatrixOne/Overview/matrixone-feature-list.md @@ -6,27 +6,27 @@ | 数据定义语言 (DDL) | 支持(Y)/不支持(N)/实验特性 (E) | | ---------------------------------- | -------------------------------------------- | -| 创建数据库CREATE DATABASE | Y | -| 删除数据库DROP DATABASE | Y | -| 修改数据库ALTER DATABASE | N | -| 创建表CREATE TABLE | Y | -| 修改表ALTER TABLE | E,子句`CHANGE [COLUMN]`,`MODIFY [COLUMN]`,`RENAME COLUMN`,`ADD [CONSTRAINT [symbol]] PRIMARY KEY`,`DROP PRIMARY KEY` 和 `ALTER COLUMN ORDER BY` 可以在 ALTER TABLE 语句中自由组合使用,但暂时不支持与其他子句一起使用。 | -| 修改表名RENAME TABLE | N,可用ALTER TABLE tbl RENAME TO new_tbl替代 | -| 删除表DROP TABLE | Y | -| 创建约束CREATE INDEX | Y,次级索引没有加速作用 | -| 删除约束DROP INDEX | Y | -| 修改列MODIFY COLUMN | N | -| 主键PRIMARY KEY | Y | -| 创建视图CREATE VIEW | Y | -| 修改视图ALTER VIEW | Y | -| 删除视图DROP VIEW | Y | -| 清空表TRUNCATE TABLE | Y | -| 自增列AUTO_INCREMENT | Y | -| 序列SEQUENCE | Y | -| 临时表TEMPORARY TABLE | Y | -| 流式表CREATE STREAM | E,部分支持 | -| 分区表PARTITION BY | E,部分类型支持 | -| 字符集和排序顺序CHARSET,COLLATION | N,仅默认支持UTF8 | +| 创建数据库 CREATE DATABASE | Y | +| 删除数据库 DROP DATABASE | Y | +| 修改数据库 ALTER DATABASE | N | +| 创建表 CREATE TABLE | Y | +| 修改表 ALTER TABLE | E,子句`CHANGE [COLUMN]`,`MODIFY [COLUMN]`,`RENAME COLUMN`,`ADD [CONSTRAINT [symbol]] PRIMARY KEY`,`DROP PRIMARY KEY` 和 `ALTER COLUMN ORDER BY` 可以在 ALTER TABLE 语句中自由组合使用,但暂时不支持与其他子句一起使用。 | +| 修改表名 RENAME TABLE | N,可用 ALTER TABLE tbl RENAME TO new_tbl 替代 | +| 删除表 DROP TABLE | Y | +| 创建约束 CREATE INDEX | Y,次级索引没有加速作用 | +| 删除约束 DROP INDEX | Y | +| 修改列 MODIFY COLUMN | N | +| 主键 PRIMARY KEY | Y | +| 创建视图 CREATE VIEW | Y | +| 修改视图 ALTER VIEW | Y | +| 删除视图 DROP VIEW | Y | +| 清空表 TRUNCATE TABLE | Y | +| 自增列 AUTO_INCREMENT | Y | +| 序列 SEQUENCE | Y | +| 临时表 TEMPORARY TABLE | Y | +| 流式表 CREATE STREAM | E,部分支持 | +| 分区表 PARTITION BY | E,部分类型支持 | +| 字符集和排序顺序 CHARSET,COLLATION | N,仅默认支持 UTF8 | ## 数据修改/查询语言(Data manipulation/query language, DML/DQL) @@ -46,7 +46,7 @@ | GROUP BY, ORDER BY | Y | | 预排序 CLUSTER BY | Y | | 子查询 SUBQUERY | Y | -| 公共表表达式(Common Table Expressions,CTE) | Y | +| 公共表表达式 (Common Table Expressions,CTE) | Y | | 事务语句 BEGIN/START TRANSACTION, COMMIT, ROLLBACK | Y | | EXPLAIN | Y | | EXPLAIN ANALYZE | Y | @@ -57,12 +57,12 @@ | 高级 SQL 功能 | 支持(Y)/不支持(N)/实验特性 (E) | | ----------------------------- | ---------------------------------- | -| 预处理PREPARE | Y | +| 预处理 PREPARE | Y | | 存储过程 STORED PROCEDURE | N | | 触发器 TRIGGER | N | -| 时间调度器EVENT SCHEDULER | N | -| 自定义函数UDF | N | -| 增量物化视图Materialized VIEW | N | +| 时间调度器 EVENT SCHEDULER | N | +| 自定义函数 UDF | N | +| 增量物化视图 Materialized VIEW | N | ## 数据类型 @@ -86,7 +86,7 @@ | | TIMESTAMP | Y | | | YEAR | Y | | Boolean | BOOL | Y | -| 定点类型 | DECIMAL | Y,最高到38位 | +| 定点类型 | DECIMAL | Y,最高到 38 位 | | JSON 类型 | JSON | Y | | 向量类型 | VECTOR | N | | 空间类型 | SPATIAL | N | @@ -112,8 +112,8 @@ | 悲观事务 | Y | | 乐观事务 | Y | | 分布式事务 | Y | -| 可重复读隔离(快照SI隔离) | Y | -| 读已提交RC隔离 | Y | +| 可重复读隔离(快照 SI 隔离) | Y | +| 读已提交 RC 隔离 | Y | ## 函数与操作符 @@ -123,10 +123,10 @@ | 数值类函数 | Y | | 时间日期类函数 | Y | | 字符串函数 | Y | -| Cast函数 | Y | +| Cast 函数 | Y | | 流程控制函数 | E | | 窗口函数 | Y | -| JSON函数 | Y | +| JSON 函数 | Y | | 系统函数 | Y | | 其他函数 | Y | | 操作符 | Y | @@ -138,7 +138,7 @@ | KEY 分区 | E | | HASH 分区 | E | | RANGE 分区 | N | -| RANGE COLUMNS分区 | N | +| RANGE COLUMNS 分区 | N | | LIST 分区 | N | | LIST COLUMNS 分区 | N | @@ -146,17 +146,17 @@ | 数据导入和导出 | 支持(Y)/不支持(N)/实验特性 (E) | | ----------------- | ---------------------------------- | -| 文件导入LOAD DATA | Y | -| SQL导入SOURCE | Y | +| 文件导入 LOAD DATA | Y | +| SQL 导入 SOURCE | Y | | 从对象存储导入 | Y | -| modump工具导出SQL | Y | -| mysqldump原生工具 | N | +| modump 工具导出 SQL | Y | +| mysqldump 原生工具 | N | ## 安全与访问控制 | 安全 | 支持(Y)/不支持(N)/实验特性 (E) | | -------------------------- | ---------------------------------- | -| 传输层加密TLS | Y | +| 传输层加密 TLS | Y | | 静态加密 | Y | | 从对象存储导入 | Y | | 基于角色的访问控制(RBAC) | Y | @@ -166,20 +166,20 @@ | 备份和恢复 | 支持(Y)/不支持(N)/实验特性 (E) | | ------------ | ---------------------------------- | -| 逻辑备份恢复 | Y,仅支持modump工具 | +| 逻辑备份恢复 | Y,仅支持 modump 工具 | | 物理备份恢复 | Y | ## 管理工具 | 管理工具 | 支持(Y)/不支持(N)/实验特性 (E) | | -------------------- | ---------------------------------- | -| 单机mo_ctl部署管理 | Y | -| 分布式mo_ctl部署管理 | E,仅企业版 | +| 单机 mo_ctl 部署管理 | Y | +| 分布式 mo_ctl 部署管理 | E,仅企业版 | | 可视化管理平台 | E,仅公有云版本 | | 系统日志记录 | Y | | 系统指标监控 | Y | | 慢查询日志 | Y | -| SQL记录 | Y | +| SQL 记录 | Y | | Kubernetes operator | Y | ## 部署方式 @@ -187,8 +187,8 @@ | 部署方式 | 支持(Y)/不支持(N)/实验特性 (E) | | -------------------- | ----------------------------------- | | 单机环境私有化部署 | Y | -| 分布式环境私有化部署 | Y,自建Kubernetes与minIO对象存储 | +| 分布式环境私有化部署 | Y,自建 Kubernetes 与 minIO 对象存储 | | 阿里云分布式自建部署 | Y,ACK+OSS | | 腾讯云分布式自建部署 | Y,TKE+COS | -| AWS分布式自建部署 | Y,EKS+S3 | -| 公有云Serverless | Y,MatrixOne Cloud,支持AWS,阿里云 | +| AWS 分布式自建部署 | Y,EKS+S3 | +| 公有云 Serverless | Y,MatrixOne Cloud,支持 AWS,阿里云 | diff --git a/docs/MatrixOne/Overview/matrixone-introduction.md b/docs/MatrixOne/Overview/matrixone-introduction.md index 042b6dd512..338556db15 100644 --- a/docs/MatrixOne/Overview/matrixone-introduction.md +++ b/docs/MatrixOne/Overview/matrixone-introduction.md @@ -54,7 +54,7 @@ MatrixOne 适用于需要实时数据写入,数据规模较大,负载波动 * **高效存储设计** - 以成本低廉的对象存储作为主存储,通过纠删码技术仅需要 150%左右的数据冗余即可实现高可用,同时提供高速缓存能力,通过冷热分离多级存储方案兼顾成本和性能。 + 以成本低廉的对象存储作为主存储,通过纠删码技术仅需要 150% 左右的数据冗余即可实现高可用,同时提供高速缓存能力,通过冷热分离多级存储方案兼顾成本和性能。 * **资源灵活调配** diff --git a/docs/MatrixOne/Performance-Tuning/explain/explain-overview.md b/docs/MatrixOne/Performance-Tuning/explain/explain-overview.md index 4019755a7a..a9a19bd000 100644 --- a/docs/MatrixOne/Performance-Tuning/explain/explain-overview.md +++ b/docs/MatrixOne/Performance-Tuning/explain/explain-overview.md @@ -48,7 +48,7 @@ EXPLAIN SELECT * FROM t WHERE a = 1; + Filter Cond:过滤条件 + Table Scan:对某个全表进行扫描 -- Project 为这次查询过程中的执行顺序的父节点,Project 的结构是树状的,子节点计算完成后 “流入” 父节点。父节点、子节点和同级节点可能并行执行查询的一部分。 +- Project 为这次查询过程中的执行顺序的父节点,Project 的结构是树状的,子节点计算完成后“流入”父节点。父节点、子节点和同级节点可能并行执行查询的一部分。 **范围查询** diff --git a/docs/MatrixOne/Performance-Tuning/explain/explain-subqueries.md b/docs/MatrixOne/Performance-Tuning/explain/explain-subqueries.md index 398103fd2d..eedac10042 100644 --- a/docs/MatrixOne/Performance-Tuning/explain/explain-subqueries.md +++ b/docs/MatrixOne/Performance-Tuning/explain/explain-subqueries.md @@ -129,7 +129,7 @@ MatrixOne 在处理该 SQL 语句时会将其改写为等价的 `JOIN` 查询: 1. 先执行过滤查询 `where t2.id>=4;`。 -2. 再扫描表 `Table Scan on db1.t2`,将结果 “流入” 父节点后, +2. 再扫描表 `Table Scan on db1.t2`,将结果“流入”父节点后, 3. 扫描表 `Table Scan on db1.t1`。 diff --git a/docs/MatrixOne/Performance-Tuning/explain/explain-views.md b/docs/MatrixOne/Performance-Tuning/explain/explain-views.md index d240e2d1b2..d1c99ff60c 100644 --- a/docs/MatrixOne/Performance-Tuning/explain/explain-views.md +++ b/docs/MatrixOne/Performance-Tuning/explain/explain-views.md @@ -61,7 +61,7 @@ 5 rows in set (0.00 sec) ``` -可以看到 Project 为这次查询过程中的执行顺序的父节点,首先是从缩进最多的子节点开始计算,完成后 “流入” 它的上层父节点,最终 “流入” Project 父节点。 +可以看到 Project 为这次查询过程中的执行顺序的父节点,首先是从缩进最多的子节点开始计算,完成后“流入”它的上层父节点,最终“流入”Project 父节点。 先执行: diff --git a/docs/MatrixOne/Performance-Tuning/optimization-concepts/through-partition-by.md b/docs/MatrixOne/Performance-Tuning/optimization-concepts/through-partition-by.md index bc5c8ccdb5..eeddddbb44 100644 --- a/docs/MatrixOne/Performance-Tuning/optimization-concepts/through-partition-by.md +++ b/docs/MatrixOne/Performance-Tuning/optimization-concepts/through-partition-by.md @@ -55,7 +55,7 @@ MatrixOne 将表中的数据根据表的一个或多个列的键值划分到不 即使选择了具有高基数和独特性的列作为分区键,如果分区的范围不合适,仍有可能出现热点分区。因此,在分区策略上需要更精细化的管理。 -- 数据分布应尽量均匀,避免出现极端分布。例如,如果以学生年龄作为分区键,需要评估公司的年龄分布,从而避免某个分区的年龄段过于集中。例如,一个学校可能有很多 18 岁-22 岁的学生,但 18 岁以下或 22 岁以上的学生相对较少,这种情况可以将每个年龄作为一个分区。 +- 数据分布应尽量均匀,避免出现极端分布。例如,如果以学生年龄作为分区键,需要评估公司的年龄分布,从而避免某个分区的年龄段过于集中。例如,一个学校可能有很多 18 岁 -22 岁的学生,但 18 岁以下或 22 岁以上的学生相对较少,这种情况可以将每个年龄作为一个分区。 - 添加随机数分散分区,在高并发写入的场景中,将待分区键与一个随机数列组合为分区键。例如,在某个订单系统中,某种商品的订单数量非常高,可以在设计表时添加一列随机数列,取值范围为 1-10,并与商品类型一起作为分区键。每次写入一笔订单时,会随机生成一个 10 以内的数字,将这些订单随机写入到 10 个分个分区中,降低了出现热点分区的概率。 ## MatrixOne 分区表类型 diff --git a/docs/MatrixOne/Reference/1.1-System-tables.md b/docs/MatrixOne/Reference/1.1-System-tables.md index d18c412283..aeeae64f36 100644 --- a/docs/MatrixOne/Reference/1.1-System-tables.md +++ b/docs/MatrixOne/Reference/1.1-System-tables.md @@ -19,8 +19,8 @@ MatrixOne 系统数据库和表是 MatrixOne 存储系统信息的地方,你 | database_id | BIGINT UNSIGNED(64) | 索引所在数据库的 ID | | name | VARCHAR(64) | 索引的名字 | | type | VARCHAR(11) | 索引的类型,包括主键索引(PRIMARY),唯一索引(UNIQUE),次级索引(MULTIPLE) | -| is_visible | TINYINT(8) | 索引是否可见 , 1 为可见, 0 不可见 (目前 MatrixOne 的索引全部为可见索引) | -| hidden | TINYINT(8) | 索引是否为隐藏索引, 1 为隐藏索引,0 为非隐藏索引| +| is_visible | TINYINT(8) | 索引是否可见,1 为可见,0 不可见(目前 MatrixOne 的索引全部为可见索引) | +| hidden | TINYINT(8) | 索引是否为隐藏索引,1 为隐藏索引,0 为非隐藏索引| | comment | VARCHAR(2048) | 索引的注释信息 | | column_name | VARCHAR(256) | 索引的组成列的列名 | | ordinal_position | INT UNSIGNED(32) | 索引中的列序号,从 1 开始 | @@ -31,13 +31,13 @@ MatrixOne 系统数据库和表是 MatrixOne 存储系统信息的地方,你 | 列属性 | 类型 | 描述 | | ------------ | ------------ | ------------ | -| table_id | BIGINT UNSIGNED(64) | 当前分区表的ID | -| database_id | BIGINT UNSIGNED(64) | 当前分区表所属的数据库的ID | -| number | SMALLINT UNSIGNED(16) | 当前分区编号。所有分区都按照定义的顺序进行索引,其中1是分配给第一个分区的数字 | +| table_id | BIGINT UNSIGNED(64) | 当前分区表的 ID | +| database_id | BIGINT UNSIGNED(64) | 当前分区表所属的数据库的 ID | +| number | SMALLINT UNSIGNED(16) | 当前分区编号。所有分区都按照定义的顺序进行索引,其中 1 是分配给第一个分区的数字 | | name | VARCHAR(64) | 分区的名称 | | partition_type | VARCHAR(50) | 存放表的分区类型信息,如果是分区表,其值枚举为"KEY", "LINEAR_KEY","HASH","LINEAR_KEY_51","RANGE","RANGE_COLUMNS","LIST","LIST_COLUMNS";如果不是分区表,partition_type 的值为空字符串。__Note:__ MatrixOne 暂不支持 `RANGE` 和 `LIST` 分区。 | | partition_expression | VARCHAR(2048) | 创建分区表的的 `CREATE TABLE` 或 `ALTER TABLE` 语句中使用的分区函数的表达式。 | -| description_utf8 | TEXT(0) | 此列用于 `RANGE` 和 `LIST` 分区。对于 `RANGE` 分区,它包含分区的 `VALUES LESS THAN` 子句中设置的值,该值可以是整数或 `MAXVALUE`。对于 `LIST` 分区,此列包含分区的 `values in` 子句中定义的值,该子句是逗号分隔的整数值列表。对于不是 `RANGE` 或 `LIST` 的分区,此列始终为 NULL。 __Note:__ MatrixOne 暂不支持 `RANGE` 和 `LIST` 分区,此列为 NULL | +| description_utf8 | TEXT(0) | 此列用于 `RANGE` 和 `LIST` 分区。对于 `RANGE` 分区,它包含分区的 `VALUES LESS THAN` 子句中设置的值,该值可以是整数或 `MAXVALUE`。对于 `LIST` 分区,此列包含分区的 `values in` 子句中定义的值,该子句是逗号分隔的整数值列表。对于不是 `RANGE` 或 `LIST` 的分区,此列始终为 NULL。__Note:__ MatrixOne 暂不支持 `RANGE` 和 `LIST` 分区,此列为 NULL | | comment | VARCHAR(2048) | 注释的文本。否则,此值为空。 | | options | TEXT(0) | 分区的选项信息,暂为 `NULL` | | partition_table_name | VARCHAR(1024) | 当前分区对应的分区子表名字 | @@ -123,7 +123,7 @@ MatrixOne 系统数据库和表是 MatrixOne 存储系统信息的地方,你 | role_name | varchar(100) | 角色名:accountadmin/public | | obj_type | varchar(16) | 对象类型:account/database/table,联合主键 | | obj_id | bigint unsigned | 对象 ID,联合主键 | -| privilege_id | int | 权限 ID ,联合主键 | +| privilege_id | int | 权限 ID,联合主键 | | privilege_name | varchar(100) | 权限名:权限列表 | | privilege_level | varchar(100) | 权限级别,联合主键 | | operation_user_id | int unsigned | 操作用户 ID | @@ -170,7 +170,7 @@ MatrixOne 系统数据库和表是 MatrixOne 存储系统信息的地方,你 | database_id | BIGINT UNSIGNED(64) | 发布数据库的 ID,与 mo_database 表中的 dat_id 对应 | | all_table | BOOL(0) | 发布库是否包含 database_id 对应数据库内的所有表 | | all_account | BOOL(0) | 是否所有 account 都可以订阅该发布库 | -| table_list | TEXT(0) | 在非 all table 时,发布库内包含的表清单,表名与database_id对应数据库下的表一一对应| +| table_list | TEXT(0) | 在非 all table 时,发布库内包含的表清单,表名与 database_id 对应数据库下的表一一对应| | account_list | TEXT(0) |在非 all account 时,允许订阅该发布库的 account 清单| | created_time | TIMESTAMP(0) |创建发布库的时间 | | owner | INT UNSIGNED(32) | 创建发布库对应的角色 ID | @@ -230,7 +230,7 @@ MatrixOne 系统数据库和表是 MatrixOne 存储系统信息的地方,你 | txn_id | VARCHAR(65535) | 持有锁的事务。 | | table_id | VARCHAR(65535) | 加锁的表。 | | lock_type | VARCHAR(65535) | 锁类型。可以是 `point` 或 `range`。 | -| lock_content | VARCHAR(65535) | 锁定的内容,以16进制表示。对于 `range` 锁,表示一个区间;对于 `point` 锁,表示单个值。 | +| lock_content | VARCHAR(65535) | 锁定的内容,以 16 进制表示。对于 `range` 锁,表示一个区间;对于 `point` 锁,表示单个值。 | | lock_mode | VARCHAR(65535) | 锁模式。可以是 `shared` 或 `exclusive`。 | | lock_status | VARCHAR(65535) | 锁状态,可能为 `wait`、`acquired` 或 `none`。
wait。没有事务持有锁,但有事务等在锁上。
acquired。有事务持有锁。
none。没有事务持有锁,也没有事务等在锁上。 | | waiting_txns | VARCHAR(65535) | 在此锁上等待的事务。 | @@ -330,7 +330,7 @@ MatrixOne 系统数据库和表是 MatrixOne 存储系统信息的地方,你 - role:MatrixOne 节点角色,包括 CN、TN 和 Log。 -- account:默认为 “sys” 租户,即触发 SQL 请求的账户。 +- account:默认为“sys”租户,即触发 SQL 请求的账户。 - type:SQL 类型,可以是 `select`,`insert`,`update`,`delete`,`other` 类型。 @@ -402,8 +402,8 @@ MatrixOne 系统数据库和表是 MatrixOne 存储系统信息的地方,你 | statement_type | VARCHAR(1024) | 语句类型,[Insert, Delete, Update, Drop Table, Drop User, ...] | | query_type | VARCHAR(1024) | 查询类型,[DQL, DDL, DML, DCL, TCL] | | role_id | BIGINT | 角色 ID | -| sql_source_type | TEXT | SQL语句源类型 | -| result_count | BIGINT(64) | 统计sql执行结果的行数 | +| sql_source_type | TEXT | SQL 语句源类型 | +| result_count | BIGINT(64) | 统计 sql 执行结果的行数 | ### `rawlog` 表 diff --git a/docs/MatrixOne/Reference/Data-Types/data-types.md b/docs/MatrixOne/Reference/Data-Types/data-types.md index 2b7ccca424..e00b78a338 100644 --- a/docs/MatrixOne/Reference/Data-Types/data-types.md +++ b/docs/MatrixOne/Reference/Data-Types/data-types.md @@ -99,7 +99,7 @@ mysql> select * from inttable; ## **浮点类型** -| 数据类型 | 存储空间 | 精度 | 最小值 | 最大值| 语法表示 | +| 数据类型 | 存储空间 | 精度 | 最小值 | 最大值 | 语法表示 | | ---- | ---- | ---- | ---- |---- |---- | | FLOAT32 | 4 bytes | 23 bits |-3.40282e+038|3.40282e+038| FLOAT(M, D)
M 表示的是最大长度,D 表示的显示的小数位数。M 的取值范围为(1=< M <=255)。
D 的取值范围为(1=< D <=30),且 M >= D。
带精度的浮点数展示出要求精度的位数,在位数不足时,会进行末尾补 0。| | FLOAT64 | 8 bytes | 53 bits |-1.79769e+308|1.79769e+308| DOUBLE(M, D)
M 表示的是最大长度,D 表示的显示的小数位数。M 的取值范围为(1=< M <=255)。
D 的取值范围为(1=< D <=30),且 M >= D。
带精度的浮点数展示出要求精度的位数,在位数不足时,会进行末尾补 0。| @@ -424,7 +424,7 @@ mysql> select * from decimalTest; |UUID 类型 | 解释 | |---|---| -|[UUID](uuid-type.md) | 由 32 个 16 进制数字和4个连字符 ‘-’ 组成 UUID 值,形式为 8-4-4-4-12,标准的UUID示例:`a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11`。| +|[UUID](uuid-type.md) | 由 32 个 16 进制数字和 4 个连字符‘-’组成 UUID 值,形式为 8-4-4-4-12,标准的 UUID 示例:`a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11`。| ### **示例** diff --git a/docs/MatrixOne/Reference/Data-Types/uuid-type.md b/docs/MatrixOne/Reference/Data-Types/uuid-type.md index 5c7c2424f7..dbfac02d7f 100644 --- a/docs/MatrixOne/Reference/Data-Types/uuid-type.md +++ b/docs/MatrixOne/Reference/Data-Types/uuid-type.md @@ -72,13 +72,13 @@ mysql> SELECT length(uuid()) FROM t1; - 示例 3 ```sql --- 创建一个名为 't1' 的表,其中包含一个名为 'a' 的列,数据类型为VARCHAR,最大长度为20 +-- 创建一个名为 't1' 的表,其中包含一个名为 'a' 的列,数据类型为 VARCHAR,最大长度为 20 create table t1(a varchar(20)); -- 在 't1' 表中插入一行数据, 'a' 列的值为 '123123sdafsdf' insert into t1 values('123123sdafsdf'); --- 从 't1' 表中选择所有的行,并返回每一行的 'a' 列的值,以及一个新生成的UUID值 +-- 从 't1' 表中选择所有的行,并返回每一行的 'a' 列的值,以及一个新生成的 UUID 值 mysql> select uuid(),a from t1; +--------------------------------------+---------------+ | uuid() | a | @@ -91,10 +91,10 @@ mysql> select uuid(),a from t1; - 示例 4: ```sql --- 创建名为namelists的表,包含id和name两个字段 +-- 创建名为 namelists 的表,包含 id 和 name 两个字段 CREATE TABLE namelists ( - id UUID DEFAULT uuid() PRIMARY KEY, -- id字段是UUID类型,默认值为uuid()函数生成的UUID值,作为主键 - name VARCHAR NOT NULL -- name字段是VARCHAR类型,不能为空 + id UUID DEFAULT uuid() PRIMARY KEY, -- id 字段是 UUID 类型,默认值为 uuid() 函数生成的 UUID 值,作为主键 + name VARCHAR NOT NULL -- name 字段是 VARCHAR 类型,不能为空 ); INSERT INTO namelists (name) VALUES ('Tom'), ('Jane'), ('Bob'); mysql> select * from namelists; diff --git a/docs/MatrixOne/Reference/Functions-and-Operators/Aggregate-Functions/group-concat.md b/docs/MatrixOne/Reference/Functions-and-Operators/Aggregate-Functions/group-concat.md index ac6f3e604f..67acddb9d7 100644 --- a/docs/MatrixOne/Reference/Functions-and-Operators/Aggregate-Functions/group-concat.md +++ b/docs/MatrixOne/Reference/Functions-and-Operators/Aggregate-Functions/group-concat.md @@ -27,7 +27,7 @@ GROUP_CONCAT([DISTINCT] expr [,expr ...] | ---- | ---- | | expr | 必须参数。它指定了要连接的一个或者多个列或表达式。 | | DISTINCT | 可选参数。它用于消除重复值。| -| ORDER BY | 可选参数。它用于对要连接的内容排序。默认情况下,它按升序排序值。 如果要按降序对值进行排序,则需要明确指定 `DESC` 选项。| +| ORDER BY | 可选参数。它用于对要连接的内容排序。默认情况下,它按升序排序值。如果要按降序对值进行排序,则需要明确指定 `DESC` 选项。| |SEPARATOR | 可选参数。连接符。默认是 `,`。| ## **返回值** diff --git a/docs/MatrixOne/Reference/Functions-and-Operators/Datetime/month.md b/docs/MatrixOne/Reference/Functions-and-Operators/Datetime/month.md index 751590f4ba..56a3ac14f8 100644 --- a/docs/MatrixOne/Reference/Functions-and-Operators/Datetime/month.md +++ b/docs/MatrixOne/Reference/Functions-and-Operators/Datetime/month.md @@ -2,7 +2,7 @@ ## **函数说明** -返回日期的月份,对于 1 月到 12 月,返回范围为 1 到 12;对于 “0000-00-00” 或 “2008-00-00” 等日期,返回 0 月份。如果 `date` 为 `NULL` 则返回 `NULL`。 +返回日期的月份,对于 1 月到 12 月,返回范围为 1 到 12;对于“0000-00-00”或“2008-00-00”等日期,返回 0 月份。如果 `date` 为 `NULL` 则返回 `NULL`。 ## **函数语法** diff --git a/docs/MatrixOne/Reference/Functions-and-Operators/Datetime/to-seconds.md b/docs/MatrixOne/Reference/Functions-and-Operators/Datetime/to-seconds.md index df0b72ce69..6731222e1a 100644 --- a/docs/MatrixOne/Reference/Functions-and-Operators/Datetime/to-seconds.md +++ b/docs/MatrixOne/Reference/Functions-and-Operators/Datetime/to-seconds.md @@ -2,7 +2,7 @@ ## **函数说明** -`TO_SECONDS(expr)` 函数用于计算给定日期或日期时间 expr 与公元0年1月1日0时0分0秒之间的秒数差。如果 `expr` 是 `NULL`,则返回 `NULL`。 +`TO_SECONDS(expr)` 函数用于计算给定日期或日期时间 expr 与公元 0 年 1 月 1 日 0 时 0 分 0 秒之间的秒数差。如果 `expr` 是 `NULL`,则返回 `NULL`。 !!! note `0000-00-00` 和 `0000-01-01` 日期本身被视为无效。MatrixOne 年份查询应该从 `0001` 年开始。查询 `0000-00-00` 和 `0000-01-01`,`TO_SECONDS()` 返回报错信息: diff --git a/docs/MatrixOne/Reference/Functions-and-Operators/Datetime/week.md b/docs/MatrixOne/Reference/Functions-and-Operators/Datetime/week.md index 43888468d4..877e7a844a 100644 --- a/docs/MatrixOne/Reference/Functions-and-Operators/Datetime/week.md +++ b/docs/MatrixOne/Reference/Functions-and-Operators/Datetime/week.md @@ -14,7 +14,7 @@ | 参数 | 说明 | | ---- | ---- | -| date | 必要参数。表示要计算周数的日期。 MatrixOne 默认一周的起始日为星期一,返回值的范围为 0 到 53。 | +| date | 必要参数。表示要计算周数的日期。MatrixOne 默认一周的起始日为星期一,返回值的范围为 0 到 53。 | ## **示例** diff --git a/docs/MatrixOne/Reference/Functions-and-Operators/Json/json-functions.md b/docs/MatrixOne/Reference/Functions-and-Operators/Json/json-functions.md index 44c733960a..126f07f714 100644 --- a/docs/MatrixOne/Reference/Functions-and-Operators/Json/json-functions.md +++ b/docs/MatrixOne/Reference/Functions-and-Operators/Json/json-functions.md @@ -2,11 +2,11 @@ MatrixOne 支持以下 JSON 函数: -|名称|描述| +|名称 | 描述| |---|---| |JSON_EXTRACT()|从 JSON 文档返回数据| -|JSON_QUOTE() |引用 JSON 文档| -|JSON_UNQUOTE() |取消引用 JSON 值| +|JSON_QUOTE() | 引用 JSON 文档| +|JSON_UNQUOTE() | 取消引用 JSON 值| ## JSON_EXTRACT() 函数 @@ -214,7 +214,7 @@ mysql> SELECT JSON_QUOTE('hello world'); 在字符串中,某些序列具有特殊含义,这些序列都以反斜杠 (\) 开始,称为转义字符,规则如下表。对于所有其他转义序列,反斜杠将被忽略。也就是说,转义字符被解释为没有转义。例如,\x 就是 x。这些序列区分大小写。例如,\b 被解释为退格,而 \B 被解释为 B。 -|转义序列|所代表的字符| +|转义序列 | 所代表的字符| |---|---| |\"|双引号 (") | |\b|退格符| diff --git a/docs/MatrixOne/Reference/Functions-and-Operators/Mathematical/rand.md b/docs/MatrixOne/Reference/Functions-and-Operators/Mathematical/rand.md index 8210c09951..acbab45f51 100644 --- a/docs/MatrixOne/Reference/Functions-and-Operators/Mathematical/rand.md +++ b/docs/MatrixOne/Reference/Functions-and-Operators/Mathematical/rand.md @@ -21,7 +21,7 @@ SELECT * FROM table ORDER BY RAND(); | 参数 | 说明 | | ---- | ---- | -| seed | 可选参数。是一个整数值,用于指定生成随机数时的种子值。如果不指定 `seed` 参数,则默认以当前时间为种子值。 返回值类型与输入类型保持一致。
MatrixOne 暂不支持指定种子值。 | +| seed | 可选参数。是一个整数值,用于指定生成随机数时的种子值。如果不指定 `seed` 参数,则默认以当前时间为种子值。返回值类型与输入类型保持一致。
MatrixOne 暂不支持指定种子值。 | ## **示例** @@ -51,12 +51,12 @@ INSERT INTO Users (UserName, Email) VALUES ('Alice', 'alice@example.com'), ('Bob', 'bob@example.com'); --- 从Users表中随机选择一个用户的信息 +-- 从 Users 表中随机选择一个用户的信息 mysql> SELECT * FROM Users ORDER BY RAND() LIMIT 1; +------+----------+-----------------+ | id | username | email | +------+----------+-----------------+ -| 4 | Bob | bob@example.com | -- Bob的信息被随机选中 +| 4 | Bob | bob@example.com | -- Bob 的信息被随机选中 +------+----------+-----------------+ 1 row in set (0.01 sec) @@ -65,7 +65,7 @@ mysql> SELECT * FROM Users ORDER BY RAND() LIMIT 1; +------+----------+-------------------+ | id | username | email | +------+----------+-------------------+ -| 3 | Alice | alice@example.com | -- Alice的信息被随机选中 +| 3 | Alice | alice@example.com | -- Alice 的信息被随机选中 +------+----------+-------------------+ 1 row in set (0.01 sec) ``` diff --git a/docs/MatrixOne/Reference/Functions-and-Operators/Mathematical/round.md b/docs/MatrixOne/Reference/Functions-and-Operators/Mathematical/round.md index 84d9b70934..fbdb734b1b 100644 --- a/docs/MatrixOne/Reference/Functions-and-Operators/Mathematical/round.md +++ b/docs/MatrixOne/Reference/Functions-and-Operators/Mathematical/round.md @@ -3,7 +3,7 @@ ## **函数说明** `ROUND()` 函数返回了某个数字在特定位数四舍五入后的数值。 -该函数返回指定位数上最接近的数字。如果给定的数字与周围的数字距离相等(比如为 5),那么将采用 “banker's rounding”(银行进位法)的方式进行舍入。 +该函数返回指定位数上最接近的数字。如果给定的数字与周围的数字距离相等(比如为 5),那么将采用“banker's rounding”(银行进位法)的方式进行舍入。 ## **函数语法** diff --git a/docs/MatrixOne/Reference/Functions-and-Operators/Other/sleep.md b/docs/MatrixOne/Reference/Functions-and-Operators/Other/sleep.md index e8508a640f..eb37b9376b 100644 --- a/docs/MatrixOne/Reference/Functions-and-Operators/Other/sleep.md +++ b/docs/MatrixOne/Reference/Functions-and-Operators/Other/sleep.md @@ -15,7 +15,7 @@ SLEEP(duration) | 参数 | 说明 | | ---- | ---- | -| duration | 必需的。 以秒为单位的睡眠时长。它应该大于或等于 0,并且可以带有小数部分。| +| duration | 必需的。以秒为单位的睡眠时长。它应该大于或等于 0,并且可以带有小数部分。| ## **返回值** diff --git a/docs/MatrixOne/Reference/Functions-and-Operators/String/Regular-Expressions/Regular-Expression-Functions-Overview.md b/docs/MatrixOne/Reference/Functions-and-Operators/String/Regular-Expressions/Regular-Expression-Functions-Overview.md index 272ba3370b..07109c4155 100644 --- a/docs/MatrixOne/Reference/Functions-and-Operators/String/Regular-Expressions/Regular-Expression-Functions-Overview.md +++ b/docs/MatrixOne/Reference/Functions-and-Operators/String/Regular-Expressions/Regular-Expression-Functions-Overview.md @@ -37,7 +37,7 @@ 正则表达式使用 POSIX(Portable Operating System Interface)扩展正则表达式。下面是一些需要注意的特殊字符: -|字符|说明| +|字符 | 说明| |---|---| | `.` | 匹配任何单个字符(除了换行符) | | `*` | 表示前面的元素可以重复任意次(包括零次) | @@ -65,7 +65,7 @@ MatrixOne 的正则表达式默认是区分大小写的。如果你希望进行 **正则表达式函数列表** -|名称 |释义| +|名称 | 释义| |---|---| |[NOT REGEXP](not-regexp.md)| REGEXP 的否定表达式| |[REGEXP_INSTR()](regexp-instr.md) |匹配正则表达式的子串起始索引| diff --git a/docs/MatrixOne/Reference/Functions-and-Operators/String/find-in-set.md b/docs/MatrixOne/Reference/Functions-and-Operators/String/find-in-set.md index dac2eb34f6..57984e8ba3 100644 --- a/docs/MatrixOne/Reference/Functions-and-Operators/String/find-in-set.md +++ b/docs/MatrixOne/Reference/Functions-and-Operators/String/find-in-set.md @@ -3,10 +3,10 @@ ## **函数说明** - str 为要查询的字符串 -- strList 为字段名,参数以 “,” 分隔,如 (1,2,6,8) +- strList 为字段名,参数以“,”分隔,如 (1,2,6,8) - 查询字段 (strList) 中包含的结果,返回结果 NULL 或记录。 -如果字符串 *str* 在由 N 个子字符串组成的字符串列表 *strlist* 中,则返回值的范围在 *1* 到 *N* 之间。一个字符串列表就是由 *‘,’* 符号分开的子字符串组成。如果第一个参数是常量字符串,第二个参数是 ``SET`` 类型的列,那么 ``FIND_IN_SET()`` 函数将优化为使用位运算。如果 *str* 不在 *strlist* 中或者 *strlist* 是空字符串,则返回 *0*。如果任一参数为 *NULL* 则返回 ``NULL``。如果第一个参数包含逗号 ``(,)`` 字符,此函数将无法正常运行。 +如果字符串 *str* 在由 N 个子字符串组成的字符串列表 *strlist* 中,则返回值的范围在 *1* 到 *N* 之间。一个字符串列表就是由 `,` 符号分开的子字符串组成。如果第一个参数是常量字符串,第二个参数是 ``SET`` 类型的列,那么 ``FIND_IN_SET()`` 函数将优化为使用位运算。如果 *str* 不在 *strlist* 中或者 *strlist* 是空字符串,则返回 *0*。如果任一参数为 *NULL* 则返回 ``NULL``。如果第一个参数包含逗号 ``(,)`` 字符,此函数将无法正常运行。 ## **函数语法** diff --git a/docs/MatrixOne/Reference/Functions-and-Operators/String/split_part.md b/docs/MatrixOne/Reference/Functions-and-Operators/String/split_part.md index b3bcf92c84..3d97d14fbf 100644 --- a/docs/MatrixOne/Reference/Functions-and-Operators/String/split_part.md +++ b/docs/MatrixOne/Reference/Functions-and-Operators/String/split_part.md @@ -20,7 +20,7 @@ | ---- | ---- | |expr|必要参数。要被拆分的字符串。| |delimiter|必要参数。用于分割字符串的分隔符。| -|unsigned_integer|必要参数。这是一个整数,指定返回字符串的哪个部分。第一个部分是1,第二个部分是2,依此类推。| +|unsigned_integer|必要参数。这是一个整数,指定返回字符串的哪个部分。第一个部分是 1,第二个部分是 2,依此类推。| ## **示例** @@ -40,11 +40,11 @@ mysql> select split_part('axbxc','x',1); - 示例 2 ```sql --- 创建一个新的表't1',它有三个列:'a'(varchar类型),'b'(varchar类型),和'c'(int类型)。 +-- 创建一个新的表't1',它有三个列:'a'(varchar 类型),'b'(varchar 类型),和'c'(int 类型)。 create table t1(a varchar,b varchar,c int); -- 向't1'表中插入多行数据 insert into t1 values('axbxc','x',1),('axbxcxd','x',2),('axbxcxd','x',3),('axbxcxd','xc',1),('axbxcxd','xc',2),('axbxcxd','xc',3),('axbxcxd','asas',1),('axbxcxd','asas',2),(null,'asas',3),('axbxcxd',null,3),('axbxcxd','asas',null),('axxx','x',1),('axxx','x',2); --- 查询使用split_part函数处理't1'表中的每行数据。对于每行,它都会把'a'列的值分割成多个部分(使用'b'列的值作为分隔符),然后返回指定的部分(由'c'列的值指定)。例如,对于第一行数据('axbxc', 'x', 1),它会返回'a',因为'a'是在'x'分隔符的基础上分割字符串'axbxc'后的第一部分。 +-- 查询使用 split_part 函数处理't1'表中的每行数据。对于每行,它都会把'a'列的值分割成多个部分(使用'b'列的值作为分隔符),然后返回指定的部分(由'c'列的值指定)。例如,对于第一行数据('axbxc', 'x', 1),它会返回'a',因为'a'是在'x'分隔符的基础上分割字符串'axbxc'后的第一部分。 mysql> select split_part(a,b,c) from t1; +---------------------+ | split_part(a, b, c) | diff --git a/docs/MatrixOne/Reference/Functions-and-Operators/String/substring-index.md b/docs/MatrixOne/Reference/Functions-and-Operators/String/substring-index.md index 489d1bbb4b..6db5331cbb 100644 --- a/docs/MatrixOne/Reference/Functions-and-Operators/String/substring-index.md +++ b/docs/MatrixOne/Reference/Functions-and-Operators/String/substring-index.md @@ -24,7 +24,7 @@ | ---- | ---- | |str| 字符串| |delim| 分隔符| -|count |表示 delim 出现次数的整数。 | +|count | 表示 delim 出现次数的整数。 | ## **示例** diff --git a/docs/MatrixOne/Reference/Operators/operators/cast-functions-and-operators/binary.md b/docs/MatrixOne/Reference/Operators/operators/cast-functions-and-operators/binary.md index 7690ed37bb..b308441d8b 100644 --- a/docs/MatrixOne/Reference/Operators/operators/cast-functions-and-operators/binary.md +++ b/docs/MatrixOne/Reference/Operators/operators/cast-functions-and-operators/binary.md @@ -26,7 +26,7 @@ CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) NOT INSERT INTO users (username, password) VALUES ('JohnDoe', 'Abcd123'), ('AliceSmith', 'Efgh456'), ('BobJohnson', 'ijkl789'); --- 使用BINARY()操作符进行密码验证,BINARY password = 'Abcd123'部分将密码值视为二进制字符串,这样进行的比较是大小写敏感的。如果输入的密码与数据库中的记录匹配,查询将返回相应的用户 id 和 username,否则将返回空结果。 +-- 使用 BINARY() 操作符进行密码验证,BINARY password = 'Abcd123'部分将密码值视为二进制字符串,这样进行的比较是大小写敏感的。如果输入的密码与数据库中的记录匹配,查询将返回相应的用户 id 和 username,否则将返回空结果。 mysql> SELECT id, username FROM users WHERE username = 'JohnDoe' AND BINARY password = 'Abcd123'; +------+----------+ | id | username | diff --git a/docs/MatrixOne/Reference/Operators/operators/comparison-functions-and-operators/function_isnull.md b/docs/MatrixOne/Reference/Operators/operators/comparison-functions-and-operators/function_isnull.md index a3b34669c8..fab28b736c 100644 --- a/docs/MatrixOne/Reference/Operators/operators/comparison-functions-and-operators/function_isnull.md +++ b/docs/MatrixOne/Reference/Operators/operators/comparison-functions-and-operators/function_isnull.md @@ -35,7 +35,7 @@ CREATE TABLE students (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) NOT N INSERT INTO students (name, birth_date) VALUES ('John Doe', '2000-05-15'), ('Alice Smith', NULL), ('Bob Johnson', '1999-10-20'); --- 使用ISNULL()函数查找没有填写出生日期的学生: +-- 使用 ISNULL() 函数查找没有填写出生日期的学生: mysql> SELECT * FROM students WHERE ISNULL(birth_date); +------+-------------+------------+ | id | name | birth_date | @@ -44,7 +44,7 @@ mysql> SELECT * FROM students WHERE ISNULL(birth_date); +------+-------------+------------+ 1 row in set (0.00 sec) --- ISNULL()函数也可以用IS NULL来实现相同的功能,所以以下查询也是等效的: +-- ISNULL() 函数也可以用 IS NULL 来实现相同的功能,所以以下查询也是等效的: mysql> SELECT * FROM students WHERE birth_date IS NULL; +------+-------------+------------+ | id | name | birth_date | diff --git a/docs/MatrixOne/Reference/Operators/operators/flow-control-functions/function_nullif.md b/docs/MatrixOne/Reference/Operators/operators/flow-control-functions/function_nullif.md index 084cb1a0fb..cb089ef4b5 100644 --- a/docs/MatrixOne/Reference/Operators/operators/flow-control-functions/function_nullif.md +++ b/docs/MatrixOne/Reference/Operators/operators/flow-control-functions/function_nullif.md @@ -17,7 +17,7 @@ CREATE TABLE employees ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) NOT INSERT INTO employees (name, salary) VALUES ('John Doe', 1000), ('Alice Smith', 2000), ('Bob Johnson', 1500); --- 使用NULLIF()函数将工资为特定值的员工的工资设为NULL。NULLIF(salary, 1500)函数将比较salary字段的值和1500。如果salary的值等于1500,则返回NULL,否则返回salary的值。 +-- 使用 NULLIF() 函数将工资为特定值的员工的工资设为 NULL。NULLIF(salary, 1500) 函数将比较 salary 字段的值和 1500。如果 salary 的值等于 1500,则返回 NULL,否则返回 salary 的值。 mysql> SELECT name, salary, NULLIF(salary, 1500) AS adjusted_salary FROM employees; +-------------+---------+-----------------+ | name | salary | adjusted_salary | diff --git a/docs/MatrixOne/Reference/SQL-Reference/Data-Definition-Language/1.1-create-table.md b/docs/MatrixOne/Reference/SQL-Reference/Data-Definition-Language/1.1-create-table.md index 0829a7ea38..09ffe0063c 100644 --- a/docs/MatrixOne/Reference/SQL-Reference/Data-Definition-Language/1.1-create-table.md +++ b/docs/MatrixOne/Reference/SQL-Reference/Data-Definition-Language/1.1-create-table.md @@ -368,7 +368,7 @@ CREATE TABLE tk (col1 INT, col2 CHAR(5), col3 DATE) 在这种情况下,expr 使用一组 `VALUES LESS THAN` 运算符显示一系列值。使用范围分区时,你必须使用 `VALUES LESS THAN` 定义至少一个分区,且不能将 `VALUES IN` 与范围分区一起使用。 -`VALUES LESS THAN MAXVALUE` 用于指定小于指定最大值的 “剩余” 值。 +`VALUES LESS THAN MAXVALUE` 用于指定小于指定最大值的“剩余”值。 子句排列方式为:每个连续的 `VALUES LESS THAN` 中指定的上限大于前一个的上限,引用 `MAXVALUE` 的那个在列表中排在最后。 @@ -611,7 +611,7 @@ PRIMARY KEY (`col1`) +-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 1 row in set (0.01 sec) --- 创建HASH分区 +-- 创建 HASH 分区 CREATE TABLE tp7 ( col1 INT, diff --git a/docs/MatrixOne/Reference/SQL-Reference/Data-Definition-Language/create-sequence.md b/docs/MatrixOne/Reference/SQL-Reference/Data-Definition-Language/create-sequence.md index d0fa0b09cd..ad8d5daec7 100644 --- a/docs/MatrixOne/Reference/SQL-Reference/Data-Definition-Language/create-sequence.md +++ b/docs/MatrixOne/Reference/SQL-Reference/Data-Definition-Language/create-sequence.md @@ -157,7 +157,7 @@ SELECT LASTVAL(); ## **示例** ```sql --- 创建了一个名为 "seq_id" 的序列,它从1开始,每次增加1,最大值为1000: +-- 创建了一个名为 "seq_id" 的序列,它从 1 开始,每次增加 1,最大值为 1000: CREATE SEQUENCE seq_id INCREMENT BY 1 MAXVALUE 1000 START with 1; -- 在创建序列之后,可以使用 NEXTVAL 函数获取下一个序列值,如下所示: mysql> SELECT NEXTVAL('seq_id'); diff --git a/docs/MatrixOne/Reference/SQL-Reference/Data-Definition-Language/create-table.md b/docs/MatrixOne/Reference/SQL-Reference/Data-Definition-Language/create-table.md index cc3fef96f7..7ff61c1b2e 100644 --- a/docs/MatrixOne/Reference/SQL-Reference/Data-Definition-Language/create-table.md +++ b/docs/MatrixOne/Reference/SQL-Reference/Data-Definition-Language/create-table.md @@ -523,7 +523,7 @@ PRIMARY KEY (`col1`) +-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 1 row in set (0.01 sec) --- 创建HASH分区 +-- 创建 HASH 分区 CREATE TABLE tp7 ( col1 INT, diff --git a/docs/MatrixOne/Reference/SQL-Reference/Data-Manipulation-Language/replace.md b/docs/MatrixOne/Reference/SQL-Reference/Data-Manipulation-Language/replace.md index d7540e80b3..0e33bb3902 100644 --- a/docs/MatrixOne/Reference/SQL-Reference/Data-Manipulation-Language/replace.md +++ b/docs/MatrixOne/Reference/SQL-Reference/Data-Manipulation-Language/replace.md @@ -89,7 +89,7 @@ mysql> select * from names; +------+------+------+ 1 row in set (0.00 sec) --- 使用 replace 语句更新 id=1 的记录的 name 和 age 列的值为"Bob"和25 +-- 使用 replace 语句更新 id=1 的记录的 name 和 age 列的值为"Bob"和 25 replace into names(id, name, age) values(1,"Bobby", 25); mysql> select name, age from names where id = 1; diff --git a/docs/MatrixOne/Reference/SQL-Reference/Data-Query-Language/select.md b/docs/MatrixOne/Reference/SQL-Reference/Data-Query-Language/select.md index ad65c5b5db..75f00bb059 100644 --- a/docs/MatrixOne/Reference/SQL-Reference/Data-Query-Language/select.md +++ b/docs/MatrixOne/Reference/SQL-Reference/Data-Query-Language/select.md @@ -78,7 +78,7 @@ SELECT t1.*, t2.* FROM t1 #### `FOR UPDATE` -`SELECT...FOR UPDATE` 主要用于在事务处理中锁定一组数据行,以防止被其他并发的事务修改。这个语句最常用于处理**读-改-写**场景,也就是说,当你需要读取一组数据,对其进行更改,然后将结果写回数据库,而在此过程中你不希望其他事务修改这组数据。 +`SELECT...FOR UPDATE` 主要用于在事务处理中锁定一组数据行,以防止被其他并发的事务修改。这个语句最常用于处理**读—改—写**场景,也就是说,当你需要读取一组数据,对其进行更改,然后将结果写回数据库,而在此过程中你不希望其他事务修改这组数据。 在一个事务中使用 `SELECT FOR UPDATE` 可以锁定所选的行,直到事务结束(通过提交或回滚)才释放锁。这样,其他尝试修改这些行的事务将被阻塞,直到第一个事务完成。 diff --git a/docs/MatrixOne/Reference/SQL-Reference/Data-Query-Language/subqueries/subquery-with-in.md b/docs/MatrixOne/Reference/SQL-Reference/Data-Query-Language/subqueries/subquery-with-in.md index e8c443e7b5..01a225fcaa 100644 --- a/docs/MatrixOne/Reference/SQL-Reference/Data-Query-Language/subqueries/subquery-with-in.md +++ b/docs/MatrixOne/Reference/SQL-Reference/Data-Query-Language/subqueries/subquery-with-in.md @@ -2,7 +2,7 @@ ## **语法描述** -子查询可以与 `IN` 操作符一起使用,作为 “表达式 IN (子查询)”,查询某个范围内的数据。子查询应该返回带有一行或多行的单个列,以形成 `IN` 操作使用的值列表。 +子查询可以与 `IN` 操作符一起使用,作为“表达式 IN (子查询)”,查询某个范围内的数据。子查询应该返回带有一行或多行的单个列,以形成 `IN` 操作使用的值列表。 对多记录、单列子查询使用 `IN` 子句。子查询返回 `IN` 或 `NOT IN` 引入的结果后,外部查询使用它们返回最终结果。 diff --git a/docs/MatrixOne/Reference/SQL-Reference/Data-Query-Language/union-intersect-minus-overview.md b/docs/MatrixOne/Reference/SQL-Reference/Data-Query-Language/union-intersect-minus-overview.md index 87cf48afab..8f85ff6eb0 100644 --- a/docs/MatrixOne/Reference/SQL-Reference/Data-Query-Language/union-intersect-minus-overview.md +++ b/docs/MatrixOne/Reference/SQL-Reference/Data-Query-Language/union-intersect-minus-overview.md @@ -18,7 +18,7 @@ __Tips:__ *query1* 和 *query2* 是可以使用到目前为止讨论的任何功 `MINUS` 返回 *query1* 结果,但不在 *query2* 中的所有行。即 *query1* 和 *query2* 的结果的差集。同样,不使用 `MINUS ALL`,则消除结果中的重复的行;使用 `MINUS ALL`,不消除结果中的重复的行。 -要计算两个查询的并集、交集或差集,这两个查询必须是 “并集兼容的”,这意味着它们返回相同数量的列并且对应的列具有兼容的数据类型。 +要计算两个查询的并集、交集或差集,这两个查询必须是“并集兼容的”,这意味着它们返回相同数量的列并且对应的列具有兼容的数据类型。 `UNION`,`INTERSECT` 和 `MINUS` 操作可以组合,例如: diff --git a/docs/MatrixOne/Reference/SQL-Reference/Other/SHOW-Statements/show-index.md b/docs/MatrixOne/Reference/SQL-Reference/Other/SHOW-Statements/show-index.md index 2edea7f8cc..d26ade7cba 100644 --- a/docs/MatrixOne/Reference/SQL-Reference/Other/SHOW-Statements/show-index.md +++ b/docs/MatrixOne/Reference/SQL-Reference/Other/SHOW-Statements/show-index.md @@ -6,22 +6,22 @@ `SHOW INDEX` 返回以下字段: -|字段|描述| +|字段 | 描述| |---|---| |Table|表的名称。| -|Non_unique|如果索引不允许重复值,则为0;如果允许重复值,则为1。| -|Key_name|索引的名称。如果索引是主键,则名称始终为PRIMARY。| -|Seq_in_index|列在索引中的顺序号,从1开始。| -|Column_name|列的名称。请参阅Expression列的描述。| -|Collation|列在索引中的排序方式。可能的值为A(升序),D(降序)或NULL(未排序)。| -|Cardinality|索引中唯一值的估计数量。要更新此值,请运行ANALYZE TABLE或(对于MyISAM表)myisamchk -a。
基数是基于存储为整数的统计信息计算的,因此即使对于小表,该值也不一定精确。基数越高,MySQL在执行连接操作时使用索引的可能性就越大。| -|Sub_part|索引的前缀。即,如果列只部分索引化,则为索引化的字符数;如果整列都索引化,则为NULL。
**注意:**前缀限制以字节为单位。但是,在CREATE TABLE、ALTER TABLE和CREATE INDEX语句中,用于索引规范的前缀长度解释为非二进制字符串类型(CHAR、VARCHAR、TEXT)的字符数,以及用于二进制字符串类型(BINARY、VARBINARY、BLOB)的字节数。在指定非二进制字符串列的前缀长度时,请考虑使用多字节字符集。| -|Packed|指示键是否被压缩。如果未压缩,则为NULL。| -|Null|如果列可能包含NULL值,则为YES;否则为空字符串。| +|Non_unique|如果索引不允许重复值,则为 0;如果允许重复值,则为 1。| +|Key_name|索引的名称。如果索引是主键,则名称始终为 PRIMARY。| +|Seq_in_index|列在索引中的顺序号,从 1 开始。| +|Column_name|列的名称。请参阅 Expression 列的描述。| +|Collation|列在索引中的排序方式。可能的值为 A(升序),D(降序)或 NULL(未排序)。| +|Cardinality|索引中唯一值的估计数量。要更新此值,请运行 ANALYZE TABLE 或(对于 MyISAM 表)myisamchk -a。
基数是基于存储为整数的统计信息计算的,因此即使对于小表,该值也不一定精确。基数越高,MySQL 在执行连接操作时使用索引的可能性就越大。| +|Sub_part|索引的前缀。即,如果列只部分索引化,则为索引化的字符数;如果整列都索引化,则为 NULL。
**注意:**前缀限制以字节为单位。但是,在 CREATE TABLE、ALTER TABLE 和 CREATE INDEX 语句中,用于索引规范的前缀长度解释为非二进制字符串类型(CHAR、VARCHAR、TEXT)的字符数,以及用于二进制字符串类型(BINARY、VARBINARY、BLOB)的字节数。在指定非二进制字符串列的前缀长度时,请考虑使用多字节字符集。| +|Packed|指示键是否被压缩。如果未压缩,则为 NULL。| +|Null|如果列可能包含 NULL 值,则为 YES;否则为空字符串。| |Index_type|使用的索引方法(BTREE、FULLTEXT、HASH、RTREE)。| -|Comment|关于索引的其他信息,不在自己的列中描述,例如如果索引已禁用则为disabled。| +|Comment|关于索引的其他信息,不在自己的列中描述,例如如果索引已禁用则为 disabled。| |Visible|索引是否对优化器可见。| -|Expression|对于非功能键部分,Column_name指示键部分索引的列,而Expression为NULL。
对于功能键部分,Column_name列为NULL,而Expression指示键部分的表达式。| +|Expression|对于非功能键部分,Column_name 指示键部分索引的列,而 Expression 为 NULL。
对于功能键部分,Column_name 列为 NULL,而 Expression 指示键部分的表达式。| ## **语法结构** diff --git a/docs/MatrixOne/Reference/SQL-Reference/Other/SHOW-Statements/show-processlist.md b/docs/MatrixOne/Reference/SQL-Reference/Other/SHOW-Statements/show-processlist.md index ebd69cec09..36d2cb2c77 100644 --- a/docs/MatrixOne/Reference/SQL-Reference/Other/SHOW-Statements/show-processlist.md +++ b/docs/MatrixOne/Reference/SQL-Reference/Other/SHOW-Statements/show-processlist.md @@ -20,21 +20,21 @@ | 列名 | 类型 | 约束 | 备注 | |----------------|---------|-----------|--------------------| -| node_id | varchar | not null | 节点ID,用于在数据库集群中唯一标识不同的节点。在 MatrixOne 中,一个节点即为一个 CN(Compute Node)。
__Note:__
- 在单机版本的 MatrixOne 中,通常只有一个节点,所有进程都运行在这个节点上,因此所有进程的 node_id 都相同。
- 在分布式版本的 MatrixOne 中,每个节点都有一个唯一的 node_id。系统租户可以查看所有正在执行的线程所在节点对应的 node_id,而非系统租户只能看到属于其租户下正在执行的线程的节点对应的 node_id。 | -| conn_id | uint32 | not null | 连接 ID,用于标识不同的数据库连接。如果需要终止某个数据库连接,可以使用 `KILL CONNECTION conn_id;` 命令来终止该连接。在数据库中,每个连接都会被分配一个唯一的 conn_id,用于标识该连接。
__Note:__ 系统租户可以查看所有conn_id,非系统租户只能看到租户下的conn_id。 ID | +| node_id | varchar | not null | 节点 ID,用于在数据库集群中唯一标识不同的节点。在 MatrixOne 中,一个节点即为一个 CN(Compute Node)。
__Note:__
- 在单机版本的 MatrixOne 中,通常只有一个节点,所有进程都运行在这个节点上,因此所有进程的 node_id 都相同。
- 在分布式版本的 MatrixOne 中,每个节点都有一个唯一的 node_id。系统租户可以查看所有正在执行的线程所在节点对应的 node_id,而非系统租户只能看到属于其租户下正在执行的线程的节点对应的 node_id。 | +| conn_id | uint32 | not null | 连接 ID,用于标识不同的数据库连接。如果需要终止某个数据库连接,可以使用 `KILL CONNECTION conn_id;` 命令来终止该连接。在数据库中,每个连接都会被分配一个唯一的 conn_id,用于标识该连接。
__Note:__ 系统租户可以查看所有 conn_id,非系统租户只能看到租户下的 conn_id。ID | | session_id | varchar | not null | 会话 ID | | account | varchar | not null | 租户
__Note:__ 系统租户下可以看到所有租户的会话与租户名称,非系统租户只能看到自己租户的会话与租户名称。 | | user | varchar | not null | 用户 | | host | varchar | not null | 客户机端的主机名 | | db | varchar | | 数据库名 | | session_start | varchar | | 会话开始时间 | -| command | varchar | not null | 命令类型,如COM_QUERY | -| info | varchar | | 当前或上一条SQL 语句 | -| txn_id | varchar | not null | 当前或上一条事务ID | -| statement_id | varchar | | 当前或上一条语句ID | +| command | varchar | not null | 命令类型,如 COM_QUERY | +| info | varchar | | 当前或上一条 SQL 语句 | +| txn_id | varchar | not null | 当前或上一条事务 ID | +| statement_id | varchar | | 当前或上一条语句 ID | | statement_type | varchar | | 当前或上一条语句类型 | -| query_type | varchar | | 查询类型,如DDL,DML等 | -| sql_source_type| varchar | | SQL源类型,如external_sql, internal_sql 等| +| query_type | varchar | | 查询类型,如 DDL,DML 等 | +| sql_source_type| varchar | | SQL 源类型,如 external_sql, internal_sql 等| | query_start | varchar | | 查询开始时间 | ## **示例** diff --git a/docs/MatrixOne/Reference/SQL-Reference/Other/Set/set-role.md b/docs/MatrixOne/Reference/SQL-Reference/Other/Set/set-role.md index f32214a77c..ba8fbbaef6 100644 --- a/docs/MatrixOne/Reference/SQL-Reference/Other/Set/set-role.md +++ b/docs/MatrixOne/Reference/SQL-Reference/Other/Set/set-role.md @@ -22,7 +22,7 @@ SET ROLE role 例如,user1 拥有主要角色 role1,次要角色 role2 和 role3, role1 被授予 pri1 和 pri2 权限;role2 被赋予权限 pri3;role3 被赋予权限 pri4,授权示例表如下: -|用户名|角色名|权限名| +|用户名 | 角色名 | 权限名| |---|---|---| |user1|role1|pri1,pri2| ||role2|pri3| @@ -30,19 +30,19 @@ SET ROLE role 为了更容易理解,你可以参考如下示例: -|用户|角色|权限名| +|用户 | 角色 | 权限名| |---|---|---| -|Tom|应用开发者(Application Developer)|读数据(Read Data),写数据(Write Data)| -||运维专家(O&M expert)|读数据(Read data)| -||数据库管理员(Database Administrator)|管理员权限(Administrator Privileges)| +|Tom|应用开发者(Application Developer)| 读数据(Read Data),写数据(Write Data)| +||运维专家(O&M expert)| 读数据(Read data)| +||数据库管理员(Database Administrator)| 管理员权限(Administrator Privileges)| 此时 Tom 的主要角色是应用开发者,Tom 需要调用*管理员权限*,那么 Tom 可以使用以下两种方法: -—使用 `SET role role` 语句将其角色切换为 “数据库管理员”。 +—使用 `SET role role` 语句将其角色切换为“数据库管理员”。 —如果需要使用主、从角色的所有权限,可以使用 `SET secondary ROLE all`。 -这两种语句解释如下: +这两种语句解释如下: #### SET SECONDARY ROLE ALL diff --git a/docs/MatrixOne/Reference/System-Parameters/distributed-configuration-settings.md b/docs/MatrixOne/Reference/System-Parameters/distributed-configuration-settings.md index 767a27bf28..da9c58e9ab 100644 --- a/docs/MatrixOne/Reference/System-Parameters/distributed-configuration-settings.md +++ b/docs/MatrixOne/Reference/System-Parameters/distributed-configuration-settings.md @@ -13,14 +13,14 @@ | [log] | 日志配置节 | | | level | 日志级别,默认值为 info,可修改为不同级别 | level = "info" | | [cn] | cn 节点,不可修改 | / | -| port-base | "cn" 使用的起始端口号,从端口号往后,连续20个端口找到可用端口用于内部服务| port-base = 18000 | +| port-base | "cn" 使用的起始端口号,从端口号往后,连续 20 个端口找到可用端口用于内部服务 | port-base = 18000 | | service-host | 服务连接地址,用于注册到 HAKeeper 中 | service-host = "127.0.0.1" | | [cn.frontend] | 前端配置节 | | | port | MatrixOne 监听及客户端连接的端口 | port = 6001 | | host | 监听 IP 地址 | host = "0.0.0.0" | -|[fileservice.s3] |S3| 文件服务配置节| | -|bucket| S3 桶名称| bucket = "my-bucket"| -|key-prefix| S3 键前缀| key-prefix = "prefix/"| +|[fileservice.s3] |S3| 文件服务配置节 | | +|bucket| S3 桶名称 | bucket = "my-bucket"| +|key-prefix| S3 键前缀 | key-prefix = "prefix/"| ### 扩展参数 @@ -71,11 +71,11 @@ | level | 日志级别,默认值为 info,可修改为不同级别 | level = "info" | | [dn] | TN 节点,不可修改 | | | uuid | TN 的唯一标识符,不可修改 | uuid = "dd4dccb4-4d3c-41f8-b482-5251dc7a41bf" | -| port-base | "TN" 使用的起始端口号,从端口号往后,连续20个端口找到可用端口用于内部服务| port-base = 19000 | +| port-base | "TN" 使用的起始端口号,从端口号往后,连续 20 个端口找到可用端口用于内部服务 | port-base = 19000 | | service-host | 服务连接地址,用于注册到 HAKeeper 中 | service-host = "0.0.0.0" | -|[fileservice.s3] |S3| 文件服务配置节| | -|bucket| S3 桶名称| bucket = "my-bucket"| -|key-prefix| S3 键前缀| key-prefix = "prefix/"| +|[fileservice.s3] |S3| 文件服务配置节 | | +|bucket| S3 桶名称 | bucket = "my-bucket"| +|key-prefix| S3 键前缀 | key-prefix = "prefix/"| ### 扩展参数 @@ -115,9 +115,9 @@ | [logservice] | Logservice 配置节 | | | uuid | Logservice 的唯一标识符,不可修改 | uuid = "dd1dccb4-4d3c-41f8-b482-5251dc7a41bf" | | data-dir | 默认数据目录 | data-dir = "./mo-data/logservice" | -|[fileservice.s3] |S3| 文件服务配置节| | -|bucket| S3 桶名称| bucket = "my-bucket"| -|key-prefix| S3 键前缀| key-prefix = "prefix/"| +|[fileservice.s3] |S3| 文件服务配置节 | | +|bucket| S3 桶名称 | bucket = "my-bucket"| +|key-prefix| S3 键前缀 | key-prefix = "prefix/"| ### 扩展参数 @@ -158,9 +158,9 @@ | level | 日志级别,默认值为 info,可修改为不同级别 | level = "info" | | [proxy] | 代理配置节 | | | listen-address | 监听地址,默认为 `0.0.0.0:6009` | listen-address = "0.0.0.0:6009" | -|[fileservice.s3] |S3| 文件服务配置节| | -|bucket| S3 桶名称| bucket = "my-bucket"| -|key-prefix| S3 键前缀| key-prefix = "prefix/"| +|[fileservice.s3] |S3| 文件服务配置节 | | +|bucket| S3 桶名称 | bucket = "my-bucket"| +|key-prefix| S3 键前缀 | key-prefix = "prefix/"| ### 扩展参数 diff --git a/docs/MatrixOne/Reference/System-Parameters/standalone-configuration-settings.md b/docs/MatrixOne/Reference/System-Parameters/standalone-configuration-settings.md index b70fa9e44b..e9643c1406 100644 --- a/docs/MatrixOne/Reference/System-Parameters/standalone-configuration-settings.md +++ b/docs/MatrixOne/Reference/System-Parameters/standalone-configuration-settings.md @@ -13,7 +13,7 @@ | [log] | 日志配置节 | | | level | 日志级别,默认值为 info,可修改为不同级别 | level = "info" | | [cn] | cn 节点,不可修改 | / | -| port-base | "cn" 使用的起始端口号,从端口号往后,连续20个端口找到可用端口用于内部服务| port-base = 18000 | +| port-base | "cn" 使用的起始端口号,从端口号往后,连续 20 个端口找到可用端口用于内部服务 | port-base = 18000 | | service-host | 服务连接地址,用于注册到 HAKeeper 中 | service-host = "127.0.0.1" | | [cn.frontend] | 前端配置节 | | | port | MatrixOne 监听及客户端连接的端口 | port = 6001 | @@ -64,7 +64,7 @@ | level | 日志级别,默认值为 info,可修改为不同级别 | level = "info" | | [dn] | TN 节点,不可修改 | | | uuid | TN 的唯一标识符,不可修改 | uuid = "dd4dccb4-4d3c-41f8-b482-5251dc7a41bf" | -| port-base | "TN" 使用的起始端口号,从端口号往后,连续20个端口找到可用端口用于内部服务| port-base = 19000 | +| port-base | "TN" 使用的起始端口号,从端口号往后,连续 20 个端口找到可用端口用于内部服务 | port-base = 19000 | | service-host | 服务连接地址,用于注册到 HAKeeper 中 | service-host = "0.0.0.0" | ### 扩展参数 diff --git a/docs/MatrixOne/Reference/System-tables.md b/docs/MatrixOne/Reference/System-tables.md index e8e733e09c..7c275a3f1d 100644 --- a/docs/MatrixOne/Reference/System-tables.md +++ b/docs/MatrixOne/Reference/System-tables.md @@ -77,13 +77,13 @@ MatrixOne 系统数据库和表是 MatrixOne 存储系统信息的地方,你 | 列属性 | 类型 | 描述 | | ------------ | ------------ | ------------ | -| table_id | BIGINT UNSIGNED(64) | 当前分区表的ID | -| database_id | BIGINT UNSIGNED(64) | 当前分区表所属的数据库的ID | -| number | SMALLINT UNSIGNED(16) | 当前分区编号。所有分区都按照定义的顺序进行索引,其中1是分配给第一个分区的数字 | +| table_id | BIGINT UNSIGNED(64) | 当前分区表的 ID | +| database_id | BIGINT UNSIGNED(64) | 当前分区表所属的数据库的 ID | +| number | SMALLINT UNSIGNED(16) | 当前分区编号。所有分区都按照定义的顺序进行索引,其中 1 是分配给第一个分区的数字 | | name | VARCHAR(64) | 分区的名称 | | partition_type | VARCHAR(50) | 存放表的分区类型信息,如果是分区表,其值枚举为"KEY", "LINEAR_KEY","HASH","LINEAR_KEY_51","RANGE","RANGE_COLUMNS","LIST","LIST_COLUMNS";如果不是分区表,partition_type 的值为空字符串。__Note:__ MatrixOne 暂不支持 `RANGE` 和 `LIST` 分区。 | | partition_expression | VARCHAR(2048) | 创建分区表的的 `CREATE TABLE` 或 `ALTER TABLE` 语句中使用的分区函数的表达式。 | -| description_utf8 | TEXT(0) | 此列用于 `RANGE` 和 `LIST` 分区。对于 `RANGE` 分区,它包含分区的 `VALUES LESS THAN` 子句中设置的值,该值可以是整数或 `MAXVALUE`。对于 `LIST` 分区,此列包含分区的 `values in` 子句中定义的值,该子句是逗号分隔的整数值列表。对于不是 `RANGE` 或 `LIST` 的分区,此列始终为 NULL。 __Note:__ MatrixOne 暂不支持 `RANGE` 和 `LIST` 分区,此列为 NULL | +| description_utf8 | TEXT(0) | 此列用于 `RANGE` 和 `LIST` 分区。对于 `RANGE` 分区,它包含分区的 `VALUES LESS THAN` 子句中设置的值,该值可以是整数或 `MAXVALUE`。对于 `LIST` 分区,此列包含分区的 `values in` 子句中定义的值,该子句是逗号分隔的整数值列表。对于不是 `RANGE` 或 `LIST` 的分区,此列始终为 NULL。__Note:__ MatrixOne 暂不支持 `RANGE` 和 `LIST` 分区,此列为 NULL | | comment | VARCHAR(2048) | 注释的文本。否则,此值为空。 | | options | TEXT(0) | 分区的选项信息,暂为 `NULL` | | partition_table_name | VARCHAR(1024) | 当前分区对应的分区子表名字 | @@ -155,7 +155,7 @@ MatrixOne 系统数据库和表是 MatrixOne 存储系统信息的地方,你 | role_name | varchar(100) | 角色名:accountadmin/public | | obj_type | varchar(16) | 对象类型:account/database/table,联合主键 | | obj_id | bigint unsigned | 对象 ID,联合主键 | -| privilege_id | int | 权限 ID ,联合主键 | +| privilege_id | int | 权限 ID,联合主键 | | privilege_name | varchar(100) | 权限名:权限列表 | | privilege_level | varchar(100) | 权限级别,联合主键 | | operation_user_id | int unsigned | 操作用户 ID | @@ -214,7 +214,7 @@ MatrixOne 系统数据库和表是 MatrixOne 存储系统信息的地方,你 | database_id | BIGINT UNSIGNED(64) | 发布数据库的 ID,与 mo_database 表中的 dat_id 对应 | | all_table | BOOL(0) | 发布库是否包含 database_id 对应数据库内的所有表 | | all_account | BOOL(0) | 是否所有 account 都可以订阅该发布库 | -| table_list | TEXT(0) | 在非 all table 时,发布库内包含的表清单,表名与database_id对应数据库下的表一一对应| +| table_list | TEXT(0) | 在非 all table 时,发布库内包含的表清单,表名与 database_id 对应数据库下的表一一对应| | account_list | TEXT(0) |在非 all account 时,允许订阅该发布库的 account 清单| | created_time | TIMESTAMP(0) |创建发布库的时间 | | owner | INT UNSIGNED(32) | 创建发布库对应的角色 ID | @@ -230,8 +230,8 @@ MatrixOne 系统数据库和表是 MatrixOne 存储系统信息的地方,你 | database_id | BIGINT UNSIGNED(64) | 索引所在数据库的 ID | | name | VARCHAR(64) | 索引的名字 | | type | VARCHAR(11) | 索引的类型,包括主键索引(PRIMARY),唯一索引(UNIQUE),次级索引(MULTIPLE) | -| is_visible | TINYINT(8) | 索引是否可见 , 1 为可见, 0 不可见 (目前 MatrixOne 的索引全部为可见索引) | -| hidden | TINYINT(8) | 索引是否为隐藏索引, 1 为隐藏索引,0 为非隐藏索引| +| is_visible | TINYINT(8) | 索引是否可见,1 为可见,0 不可见(目前 MatrixOne 的索引全部为可见索引) | +| hidden | TINYINT(8) | 索引是否为隐藏索引,1 为隐藏索引,0 为非隐藏索引| | comment | VARCHAR(2048) | 索引的注释信息 | | column_name | VARCHAR(256) | 索引的组成列的列名 | | ordinal_position | INT UNSIGNED(32) | 索引中的列序号,从 1 开始 | @@ -252,7 +252,7 @@ MatrixOne 系统数据库和表是 MatrixOne 存储系统信息的地方,你 - role:MatrixOne 节点角色,包括 CN、TN 和 Log。 -- account:默认为 “sys” 租户,即触发 SQL 请求的账户。 +- account:默认为“sys”租户,即触发 SQL 请求的账户。 - type:SQL 类型,可以是 `select`,`insert`,`update`,`delete`,`other` 类型。 @@ -324,8 +324,8 @@ MatrixOne 系统数据库和表是 MatrixOne 存储系统信息的地方,你 | statement_type | VARCHAR(1024) | 语句类型,[Insert, Delete, Update, Drop Table, Drop User, ...] | | query_type | VARCHAR(1024) | 查询类型,[DQL, DDL, DML, DCL, TCL] | | role_id | BIGINT | 角色 ID | -| sql_source_type | TEXT | SQL语句源类型 | -| result_count | BIGINT(64) | 统计sql执行结果的行数 | +| sql_source_type | TEXT | SQL 语句源类型 | +| result_count | BIGINT(64) | 统计 sql 执行结果的行数 | ### `rawlog` 表 diff --git a/docs/MatrixOne/Reference/Variable/system-variables/timezone.md b/docs/MatrixOne/Reference/Variable/system-variables/timezone.md index 529cdb89c1..4cace92605 100644 --- a/docs/MatrixOne/Reference/Variable/system-variables/timezone.md +++ b/docs/MatrixOne/Reference/Variable/system-variables/timezone.md @@ -34,9 +34,9 @@ SET time_zone = timezone; - 值 `SYSTEM` 表示时区应与服务器系统时区相同。 -- 值 `UTC` 表示时区设置为 UTC(Coordinated Universal Time,协调世界时)。仅支持 “UTC” 缩写作为时区使用。 +- 值 `UTC` 表示时区设置为 UTC(Coordinated Universal Time,协调世界时)。仅支持“UTC”缩写作为时区使用。 -- 该值可以作为字符串给出,表示 UTC 时间的偏移,格式为 “HH:MM”,带有 + 或 -,例如 `+10:00` 或者 `-6:00`。允许的范围是 “-13:59” 到 “+14:00”。 +- 该值可以作为字符串给出,表示 UTC 时间的偏移,格式为“HH:MM”,带有 + 或 -,例如 `+10:00` 或者 `-6:00`。允许的范围是“-13:59”到“+14:00”。 当前会话时区设置会影响时区敏感时间值的显示和存储。即会影响执行 `NOW()` 等函数查询到的值以及存储在 `TIMESTAMP` 列中和从 `TIMESTAMP` 列中查询到的值。 diff --git a/docs/MatrixOne/Reference/access-control-type.md b/docs/MatrixOne/Reference/access-control-type.md index f5c6e16918..7fa2aabe58 100644 --- a/docs/MatrixOne/Reference/access-control-type.md +++ b/docs/MatrixOne/Reference/access-control-type.md @@ -32,7 +32,7 @@ MatrixOne 的访问控制权限分为**系统权限**和**对象权限**,在 |CREATE DATABASE|创建数据库| |DROP DATABASE|删除数据库| |SHOW DATABASES|查看当前租户下所有数据库| -|CONNECT|允许使用 `use [database | role]`,可执行不涉及具体对象的 `SELECT`| +|CONNECT|允许使用 ``use [database | role]``,可执行不涉及具体对象的 `SELECT`| |MANAGE GRANTS|权限管理。包括角色授权、角色继承的权限| |ALL [PRIVILEGES]|Account 的所有权限| |OWNERSHIP|Account 的所有权限,可以通过 `WITH GRANT OPTION` 设置权限| diff --git a/docs/MatrixOne/Release-Notes/v1.0.0-rc1.md b/docs/MatrixOne/Release-Notes/v1.0.0-rc1.md index 9365dd2a40..a35423d478 100644 --- a/docs/MatrixOne/Release-Notes/v1.0.0-rc1.md +++ b/docs/MatrixOne/Release-Notes/v1.0.0-rc1.md @@ -15,10 +15,10 @@ MatrixOne 的设计和开发始终聚焦在资源利用最大化和超高性价 - **DML**:支持常见的 insert,update,delete 及数据导入导出语句 - **基础查询功能**:支持常见的分组,去重,过滤,排序,限定,正则表达式等基础查询能力 - **高级查询功能**:支持视图,子查询,联接,组合,公共表表达式(CTE),窗口函数,Prepare 预处理等高级查询能力 -- **数据类型**:支持整型, 浮点数, 字符串, 时间日期, 布尔, 枚举, 二进制, JSON 类型 +- **数据类型**:支持整型,浮点数,字符串,时间日期,布尔,枚举,二进制,JSON 类型 - **聚合函数**:支持常见的 AVG,COUNT,MIN,MAX,SUM 等聚合函数 - **系统函数及操作符**:支持常见的字符串,日期时间,数学函数及常见操作符 -- **索引及约束**:支持主键, 唯一, 非空,外键,自增约束及次级索引 +- **索引及约束**:支持主键,唯一,非空,外键,自增约束及次级索引 - **流计算**:支持流式表的创建,及对 Kafka 数据源的接入 - **多租户**:支持数据库内部租户的创建与管理 diff --git a/docs/MatrixOne/Test/performance-testing/TPCH-test-with-matrixone.md b/docs/MatrixOne/Test/performance-testing/TPCH-test-with-matrixone.md index 17f1232fd9..076f19cbaa 100644 --- a/docs/MatrixOne/Test/performance-testing/TPCH-test-with-matrixone.md +++ b/docs/MatrixOne/Test/performance-testing/TPCH-test-with-matrixone.md @@ -42,7 +42,7 @@ total 2150000 -rw-r--r-- 1 deister staff 1409184 13 may 12:05 supplier.tbl ``` -我们同时也准备了 1GB 的数据集供您下载。您可以在以下链接中直接获取数据文件: +我们同时也准备了 1GB 的数据集供您下载。您可以在以下链接中直接获取数据文件: ``` https://community-shared-data-1308875761.cos.ap-beijing.myqcloud.com/tpch/tpch-1g.zip diff --git a/docs/MatrixOne/Test/testing-tool/mo-tester-reference.md b/docs/MatrixOne/Test/testing-tool/mo-tester-reference.md index e940593934..14e369c7d1 100644 --- a/docs/MatrixOne/Test/testing-tool/mo-tester-reference.md +++ b/docs/MatrixOne/Test/testing-tool/mo-tester-reference.md @@ -16,7 +16,7 @@ |-- @separator|/|/| 指定 SQL 语句在解析其 result 以及生成 result 文件的时候,使用的列分隔符,有两个取值| |-- @separator:table|/|/|表示结果中列分隔符为制表符 \t| |-- @separator:space|/|/|表示结果中列分隔符为 4 个空格| -|-- @sortkey|-- @sortkey:1,2,3|/|表示该SQL语句的结果是有序的,排序键为第1,2,3列(从0开始);正常情况下,被测试系统返回的结果顺序是不固定的,所以工具在比对的时候,会把实际结果和预期结果都进行排序后比对,但是对于某些 SQL,其预期的结果就应该是有序的,比如存在 `order by` 的 SQL 语句,那么需要把类似这种 SQL 添加上这样的 Tag,工具在比对的时候,不会对 *sortkey* 中的这些列进行重新排序| +|-- @sortkey|-- @sortkey:1,2,3|/|表示该 SQL 语句的结果是有序的,排序键为第 1,2,3 列(从 0 开始);正常情况下,被测试系统返回的结果顺序是不固定的,所以工具在比对的时候,会把实际结果和预期结果都进行排序后比对,但是对于某些 SQL,其预期的结果就应该是有序的,比如存在 `order by` 的 SQL 语句,那么需要把类似这种 SQL 添加上这样的 Tag,工具在比对的时候,不会对 *sortkey* 中的这些列进行重新排序| ## 编写测试结果规范 - result diff --git a/docs/MatrixOne/Troubleshooting/error-code.md b/docs/MatrixOne/Troubleshooting/error-code.md index 8b413988cc..af558fc22c 100644 --- a/docs/MatrixOne/Troubleshooting/error-code.md +++ b/docs/MatrixOne/Troubleshooting/error-code.md @@ -7,7 +7,7 @@ !!! note MatrixOne 生成的一部分错误编码是由 SQL 标准定义的;一些未被标准定义的条件的额外错误编码是从其他数据库中发明或借用的。 -|错误编码开头|类型| +|错误编码开头 | 类型| |---|---| |201|内部错误| |202|数字与函数错误| diff --git a/docs/MatrixOne/Tutorial/develop-python-crud-demo.md b/docs/MatrixOne/Tutorial/develop-python-crud-demo.md index ef77dd81ee..f5f1ab03be 100644 --- a/docs/MatrixOne/Tutorial/develop-python-crud-demo.md +++ b/docs/MatrixOne/Tutorial/develop-python-crud-demo.md @@ -240,7 +240,7 @@ with SQL_CONNECTION.cursor() as cursor: ``` -执行下面代码更新 id 为 “1” 的记录: +执行下面代码更新 id 为“1”的记录: ``` > python3 update.py @@ -297,7 +297,7 @@ with SQL_CONNECTION.cursor() as cursor: SQL_CONNECTION.close() ``` -执行下面代码删除 id 为 “1” 的记录: +执行下面代码删除 id 为“1”的记录: ``` > python3 delete.py diff --git a/package-lock.json b/package-lock.json index eefb01bc93..3f310ce1e5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,18 @@ { "name": "matrixorigin.io.cn", - "lockfileVersion": 2, + "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "matrixorigin.io.cn", "devDependencies": { - "markdownlint-cli2": "^0.6.0", + "autocorrect-node": "^2.8.4", + "chalk": "^5.3.0", + "diff": "^5.1.0", + "fast-glob": "^3.3.1", + "markdownlint-cli2": "^0.10.0", + "minimist": "^1.2.8", + "yaml": "^2.3.4", "zhlint": "^0.7.1" } }, @@ -78,30 +84,33 @@ } }, "node_modules/@types/chai": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.4.tgz", - "integrity": "sha512-KnRanxnpfpjUTqTCXslZSEdLfXExwgNxYPdiO2WGUj8+HDjFi8R3k5RVKPeSCzLjCcshCAtVO2QBbVuAV4kTnw==", + "version": "4.3.9", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.9.tgz", + "integrity": "sha512-69TtiDzu0bcmKQv3yg1Zx409/Kd7r0b5F1PfpYJfSHzLGtB53547V4u+9iqKYsTu/O2ai6KTb0TInNpvuQ3qmg==", "dev": true }, "node_modules/@types/chai-subset": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@types/chai-subset/-/chai-subset-1.3.3.tgz", - "integrity": "sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@types/chai-subset/-/chai-subset-1.3.4.tgz", + "integrity": "sha512-CCWNXrJYSUIojZ1149ksLl3AN9cmZ5djf+yUoVVV+NuYrtydItQVlL2ZDqyC6M6O9LWRnVf8yYDxbXHO2TfQZg==", "dev": true, "dependencies": { "@types/chai": "*" } }, "node_modules/@types/node": { - "version": "18.11.18", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz", - "integrity": "sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==", - "dev": true + "version": "20.8.10", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.10.tgz", + "integrity": "sha512-TlgT8JntpcbmKUFzjhsyhGfP2fsiz1Mv56im6enJ905xG1DAYesxJaeSbGqQmAw8OWPdhyJGhGSQGKRNJ45u9w==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } }, "node_modules/@types/unist": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz", - "integrity": "sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==", + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.9.tgz", + "integrity": "sha512-zC0iXxAv1C1ERURduJueYzkzZ2zaGyc+P2c95hgkikHPr3z8EdUZOlgEQ5X0DRmwDZn+hekycQnoeiiRVrmilQ==", "dev": true }, "node_modules/ansi-styles": { @@ -144,15 +153,16 @@ "dev": true }, "node_modules/assert": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/assert/-/assert-2.0.0.tgz", - "integrity": "sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-2.1.0.tgz", + "integrity": "sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==", "dev": true, "dependencies": { - "es6-object-assign": "^1.1.0", - "is-nan": "^1.2.1", - "object-is": "^1.0.1", - "util": "^0.12.0" + "call-bind": "^1.0.2", + "is-nan": "^1.3.2", + "object-is": "^1.1.5", + "object.assign": "^4.1.4", + "util": "^0.12.5" } }, "node_modules/assertion-error": { @@ -164,6 +174,105 @@ "node": "*" } }, + "node_modules/autocorrect-node": { + "version": "2.8.4", + "resolved": "https://registry.npmjs.org/autocorrect-node/-/autocorrect-node-2.8.4.tgz", + "integrity": "sha512-65DUHJhIUwAlEtyDjYxE94sTT2anQtGXrPB7W9fdrk/Bm7ro4b7mjxQAP14lQlISXXtbNEJO1WABMqNpNbTjxQ==", + "dev": true, + "bin": { + "autocorrect": "cli.js" + }, + "engines": { + "node": ">= 10" + }, + "optionalDependencies": { + "autocorrect-node-darwin-arm64": "2.8.4", + "autocorrect-node-darwin-x64": "2.8.4", + "autocorrect-node-linux-x64-gnu": "2.8.4", + "autocorrect-node-linux-x64-musl": "2.8.4", + "autocorrect-node-win32-x64-msvc": "2.8.4" + } + }, + "node_modules/autocorrect-node-darwin-arm64": { + "version": "2.8.4", + "resolved": "https://registry.npmjs.org/autocorrect-node-darwin-arm64/-/autocorrect-node-darwin-arm64-2.8.4.tgz", + "integrity": "sha512-eJFsrZZZUJVPTbdA6hAmVUbTBaznIfkIwstcfn02CXLVKq15j00CXkNytQIdmKpBraTmxjub9kQvYY0Nz2h4DQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/autocorrect-node-darwin-x64": { + "version": "2.8.4", + "resolved": "https://registry.npmjs.org/autocorrect-node-darwin-x64/-/autocorrect-node-darwin-x64-2.8.4.tgz", + "integrity": "sha512-3QheEz2VgZnJcId7zgzbyC88CSmyHg+F93Bw5wsf7dTSwhVdnXeIIlYtXzFabp+c2aCi9lRAQkHFC9Om1CYkuQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/autocorrect-node-linux-x64-gnu": { + "version": "2.8.4", + "resolved": "https://registry.npmjs.org/autocorrect-node-linux-x64-gnu/-/autocorrect-node-linux-x64-gnu-2.8.4.tgz", + "integrity": "sha512-0nR3VnxpfU6HINQiZjC2cz1YVxOTCn529VPqHsWz2H03BPbS9YskGzbRpujnLvwLCyyDlYXJJneFYD1G+9VPaA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/autocorrect-node-linux-x64-musl": { + "version": "2.8.4", + "resolved": "https://registry.npmjs.org/autocorrect-node-linux-x64-musl/-/autocorrect-node-linux-x64-musl-2.8.4.tgz", + "integrity": "sha512-2LtKtaN6YWUnDtBpo2w5c7FSulozbt2kv9UigrckCX8M/AOVw0MA6uB5snglmKMx1f7fYC06/V4A7Ny1weUOGA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/autocorrect-node-win32-x64-msvc": { + "version": "2.8.4", + "resolved": "https://registry.npmjs.org/autocorrect-node-win32-x64-msvc/-/autocorrect-node-win32-x64-msvc-2.8.4.tgz", + "integrity": "sha512-ExcoBqRjEVnK9n2AVy/dmkiUSnvs5P/VdzI909bCjej1XgOpXonsZ4vGPEPicRfiHb8dc7whl6sh5P/TunDB7A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, "node_modules/available-typed-arrays": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", @@ -303,20 +412,23 @@ } }, "node_modules/browserify-sign": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", - "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.2.tgz", + "integrity": "sha512-1rudGyeYY42Dk6texmv7c4VcQ0EsvVbLwZkA+AQB7SxvXxmcD93jcHie8bzecJ+ChDlmAm2Qyu0+Ccg5uhZXCg==", "dev": true, "dependencies": { - "bn.js": "^5.1.1", - "browserify-rsa": "^4.0.1", + "bn.js": "^5.2.1", + "browserify-rsa": "^4.1.0", "create-hash": "^1.2.0", "create-hmac": "^1.1.7", - "elliptic": "^6.5.3", + "elliptic": "^6.5.4", "inherits": "^2.0.4", - "parse-asn1": "^5.1.5", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" + "parse-asn1": "^5.1.6", + "readable-stream": "^3.6.2", + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">= 4" } }, "node_modules/browserify-zlib": { @@ -365,47 +477,44 @@ "dev": true }, "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/chai": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz", - "integrity": "sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==", + "version": "4.3.10", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.10.tgz", + "integrity": "sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==", "dev": true, "dependencies": { "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^4.1.2", - "get-func-name": "^2.0.0", - "loupe": "^2.3.1", + "check-error": "^1.0.3", + "deep-eql": "^4.1.3", + "get-func-name": "^2.0.2", + "loupe": "^2.3.6", "pathval": "^1.1.1", - "type-detect": "^4.0.5" + "type-detect": "^4.0.8" }, "engines": { "node": ">=4" } }, "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, "engines": { - "node": ">=10" + "node": "^12.17.0 || ^14.13 || >=16.0.0" }, "funding": { "url": "https://github.com/chalk/chalk?sponsor=1" @@ -442,10 +551,13 @@ } }, "node_modules/check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", + "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", "dev": true, + "dependencies": { + "get-func-name": "^2.0.2" + }, "engines": { "node": "*" } @@ -606,12 +718,27 @@ "node": ">=6" } }, + "node_modules/define-data-property": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/define-properties": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", - "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "dev": true, "dependencies": { + "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", "object-keys": "^1.1.1" }, @@ -623,15 +750,24 @@ } }, "node_modules/des.js": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", - "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.1.0.tgz", + "integrity": "sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==", "dev": true, "dependencies": { "inherits": "^2.0.1", "minimalistic-assert": "^1.0.0" } }, + "node_modules/diff": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz", + "integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, "node_modules/diffie-hellman": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", @@ -662,9 +798,9 @@ } }, "node_modules/domain-browser": { - "version": "4.22.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-4.22.0.tgz", - "integrity": "sha512-IGBwjF7tNk3cwypFNH/7bfzBcgSCbaMOD3GsaY1AU/JRrnHnYgEM0+9kQt52iZxjNsjBtJYtao146V+f8jFZNw==", + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-4.23.0.tgz", + "integrity": "sha512-ArzcM/II1wCCujdCNyQjXrAFwS4mrLh4C7DZWlaI8mdh7h3BfKdNd3bKXITfl2PT9FtfQqaGvhi1vPRQPimjGA==", "dev": true, "engines": { "node": ">=10" @@ -706,12 +842,6 @@ "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/es6-object-assign": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/es6-object-assign/-/es6-object-assign-1.1.0.tgz", - "integrity": "sha512-MEl9uirslVwqQU369iHNWZXsI8yaZYGg/D65aOgZkeyFJwHYSxilf7rQzXKI7DdDuBPrBXbfk3sl9hJhmd5AUw==", - "dev": true - }, "node_modules/esbuild": { "version": "0.15.18", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.18.tgz", @@ -1095,9 +1225,9 @@ "dev": true }, "node_modules/fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", + "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", "dev": true, "dependencies": { "@nodelib/fs.stat": "^2.0.2", @@ -1185,9 +1315,9 @@ "dev": true }, "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, "hasInstallScript": true, "optional": true, @@ -1199,29 +1329,33 @@ } }, "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", "dev": true, "engines": { "node": "*" } }, "node_modules/get-intrinsic": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", - "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -1260,14 +1394,14 @@ } }, "node_modules/globby": { - "version": "13.1.3", - "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.3.tgz", - "integrity": "sha512-8krCNHXvlCgHDpegPzleMq07yMYTO2sXKASmZmquEYWEmCx6J5UTRbp5RwMJkTJGtcQ44YpiUYUiN0b9mzy8Bw==", + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz", + "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==", "dev": true, "dependencies": { "dir-glob": "^3.0.1", - "fast-glob": "^3.2.11", - "ignore": "^5.2.0", + "fast-glob": "^3.3.0", + "ignore": "^5.2.4", "merge2": "^1.4.1", "slash": "^4.0.0" }, @@ -1290,18 +1424,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -1312,12 +1434,24 @@ } }, "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", "dev": true, "dependencies": { - "get-intrinsic": "^1.1.1" + "get-intrinsic": "^1.2.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dev": true, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -1374,6 +1508,18 @@ "minimalistic-assert": "^1.0.1" } }, + "node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/hmac-drbg": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", @@ -1512,12 +1658,12 @@ } }, "node_modules/is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", "dev": true, "dependencies": { - "has": "^1.0.3" + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -1614,16 +1760,12 @@ } }, "node_modules/is-typed-array": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", - "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", + "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", "dev": true, "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" + "which-typed-array": "^1.1.11" }, "engines": { "node": ">= 0.4" @@ -1698,12 +1840,12 @@ } }, "node_modules/loupe": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", - "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==", + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", + "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", "dev": true, "dependencies": { - "get-func-name": "^2.0.0" + "get-func-name": "^2.0.1" } }, "node_modules/markdown-escapes": { @@ -1733,29 +1875,30 @@ } }, "node_modules/markdownlint": { - "version": "0.27.0", - "resolved": "https://registry.npmjs.org/markdownlint/-/markdownlint-0.27.0.tgz", - "integrity": "sha512-HtfVr/hzJJmE0C198F99JLaeada+646B5SaG2pVoEakLFI6iRGsvMqrnnrflq8hm1zQgwskEgqSnhDW11JBp0w==", + "version": "0.31.1", + "resolved": "https://registry.npmjs.org/markdownlint/-/markdownlint-0.31.1.tgz", + "integrity": "sha512-CKMR2hgcIBrYlIUccDCOvi966PZ0kJExDrUi1R+oF9PvqQmCrTqjOsgIvf2403OmJ+CWomuzDoylr6KbuMyvHA==", "dev": true, "dependencies": { - "markdown-it": "13.0.1" + "markdown-it": "13.0.1", + "markdownlint-micromark": "0.1.7" }, "engines": { - "node": ">=14.18.0" + "node": ">=16" } }, "node_modules/markdownlint-cli2": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/markdownlint-cli2/-/markdownlint-cli2-0.6.0.tgz", - "integrity": "sha512-Bv20r6WGdcHMWi8QvAFZ3CBunf4i4aYmVdTfpAvXODI/1k3f09DZZ0i0LcX9ZMhlVxjoOzbVDz1NWyKc5hwTqg==", + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/markdownlint-cli2/-/markdownlint-cli2-0.10.0.tgz", + "integrity": "sha512-kVxjPyKFC+eW7iqcxiNI50RDzwugpXkEX5eQlDso/0IUs9M73jXYguLFHDzgi5KatcxU/57Fu8KoGtkFft9lfA==", "dev": true, "dependencies": { - "globby": "13.1.3", - "markdownlint": "0.27.0", - "markdownlint-cli2-formatter-default": "0.0.3", + "globby": "13.2.2", + "markdownlint": "0.31.1", + "markdownlint-cli2-formatter-default": "0.0.4", "micromatch": "4.0.5", - "strip-json-comments": "5.0.0", - "yaml": "2.2.1" + "strip-json-comments": "5.0.1", + "yaml": "2.3.2" }, "bin": { "markdownlint-cli2": "markdownlint-cli2.js", @@ -1763,18 +1906,36 @@ "markdownlint-cli2-fix": "markdownlint-cli2-fix.js" }, "engines": { - "node": ">=14.18.0" + "node": ">=16" } }, "node_modules/markdownlint-cli2-formatter-default": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/markdownlint-cli2-formatter-default/-/markdownlint-cli2-formatter-default-0.0.3.tgz", - "integrity": "sha512-QEAJitT5eqX1SNboOD+SO/LNBpu4P4je8JlR02ug2cLQAqmIhh8IJnSK7AcaHBHhNADqdGydnPpQOpsNcEEqCw==", + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/markdownlint-cli2-formatter-default/-/markdownlint-cli2-formatter-default-0.0.4.tgz", + "integrity": "sha512-xm2rM0E+sWgjpPn1EesPXx5hIyrN2ddUnUwnbCsD/ONxYtw3PX6LydvdH6dciWAoFDpwzbHM1TO7uHfcMd6IYg==", "dev": true, "peerDependencies": { "markdownlint-cli2": ">=0.0.4" } }, + "node_modules/markdownlint-cli2/node_modules/yaml": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.2.tgz", + "integrity": "sha512-N/lyzTPaJasoDmfV7YTrYCI0G/3ivm/9wdG0aHuheKowWQwGTsK0Eoiw6utmzAnI6pkJa0DUVygvp3spqqEKXg==", + "dev": true, + "engines": { + "node": ">= 14" + } + }, + "node_modules/markdownlint-micromark": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/markdownlint-micromark/-/markdownlint-micromark-0.1.7.tgz", + "integrity": "sha512-BbRPTC72fl5vlSKv37v/xIENSRDYL/7X/XoFzZ740FGEbs9vZerLrIkFRY0rv7slQKxDczToYuMmqQFN61fi4Q==", + "dev": true, + "engines": { + "node": ">=16" + } + }, "node_modules/md5.js": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", @@ -1858,9 +2019,9 @@ } }, "node_modules/minimist": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", - "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -1873,10 +2034,16 @@ "dev": true }, "node_modules/nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", + "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -1922,6 +2089,15 @@ "node": ">=10" } }, + "node_modules/object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/object-is": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", @@ -1947,6 +2123,24 @@ "node": ">= 0.4" } }, + "node_modules/object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -2120,9 +2314,9 @@ } }, "node_modules/postcss": { - "version": "8.4.21", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz", - "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==", + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", "dev": true, "funding": [ { @@ -2132,10 +2326,14 @@ { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } ], "dependencies": { - "nanoid": "^3.3.4", + "nanoid": "^3.3.6", "picocolors": "^1.0.0", "source-map-js": "^1.0.2" }, @@ -2178,14 +2376,19 @@ "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", "dev": true }, - "node_modules/querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==", - "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", + "node_modules/qs": { + "version": "6.11.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", + "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, "engines": { - "node": ">=0.4.x" + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/querystring-es3": { @@ -2237,9 +2440,9 @@ } }, "node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dev": true, "dependencies": { "inherits": "^2.0.3", @@ -2301,12 +2504,12 @@ } }, "node_modules/resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "dev": true, "dependencies": { - "is-core-module": "^2.9.0", + "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, @@ -2401,6 +2604,21 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true }, + "node_modules/set-function-length": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", + "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.1", + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/setimmediate": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", @@ -2420,6 +2638,20 @@ "sha.js": "bin.js" } }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/slash": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", @@ -2483,9 +2715,9 @@ } }, "node_modules/strip-json-comments": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-5.0.0.tgz", - "integrity": "sha512-V1LGY4UUo0jgwC+ELQ2BNWfPa17TIuwBLg+j1AA/9RPzKINl1lhxVEu2r+ZTTO8aetIsUzE5Qj6LMSBkoGYKKw==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-5.0.1.tgz", + "integrity": "sha512-0fk9zBqO67Nq5M/m45qHCJxylV/DhBlIOVExqgOMiCCrzrhU6tCibRXNqE3jwJLftzE9SNuZtYbpzcO+i9FiKw==", "dev": true, "engines": { "node": ">=14.16" @@ -2540,9 +2772,9 @@ } }, "node_modules/tinyspy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-1.0.2.tgz", - "integrity": "sha512-bSGlgwLBYf7PnUsQ6WOc6SJ3pGOcd+d8AA6EUnLDDM0kWEstC1JIlSZA3UNliDXhd9ABoS7hiRBDCu+XP/sf1Q==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-1.1.1.tgz", + "integrity": "sha512-UVq5AXt/gQlti7oxoIg5oi/9r0WpF7DGEVwXgqWSMmyN16+e3tl5lIvTaOpJ3TAtu5xFzWccFRM4R5NaWHF+4g==", "dev": true, "engines": { "node": ">=14.0.0" @@ -2564,6 +2796,7 @@ "version": "0.0.1", "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", "integrity": "sha512-YzQV+TZg4AxpKxaTHK3c3D+kRDCGVEE7LemdlQZoQXn0iennk10RsIoY6ikzAqJTc9Xjl9C1/waHom/J86ziAQ==", + "deprecated": "Use String.prototype.trim() instead", "dev": true }, "node_modules/trim-trailing-lines": { @@ -2607,6 +2840,12 @@ "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", "dev": true }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + }, "node_modules/unherit": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/unherit/-/unherit-1.1.3.tgz", @@ -2689,21 +2928,15 @@ } }, "node_modules/url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==", + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.3.tgz", + "integrity": "sha512-6hxOLGfZASQK/cijlZnZJTq8OXAkt/3YGfQX45vvMYXpZoo8NdWZcY73K108Jf759lS1Bv/8wXnHDTSz17dSRw==", "dev": true, "dependencies": { - "punycode": "1.3.2", - "querystring": "0.2.0" + "punycode": "^1.4.1", + "qs": "^6.11.2" } }, - "node_modules/url/node_modules/punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==", - "dev": true - }, "node_modules/util": { "version": "0.12.5", "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", @@ -2764,9 +2997,9 @@ } }, "node_modules/vite": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/vite/-/vite-3.2.5.tgz", - "integrity": "sha512-4mVEpXpSOgrssFZAOmGIr85wPHKvaDAcXqxVxVRZhljkJOMZi1ibLibzjLHzJvcok8BMguLc7g1W6W/GqZbLdQ==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/vite/-/vite-3.2.7.tgz", + "integrity": "sha512-29pdXjk49xAP0QBr0xXqu2s5jiQIXNvE/xwd0vUizYT2Hzqe4BksNNoWllFVXJf4eLZ+UlVQmXfB4lWrc+t18g==", "dev": true, "dependencies": { "esbuild": "^0.15.9", @@ -2873,17 +3106,16 @@ "dev": true }, "node_modules/which-typed-array": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", - "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", + "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==", "dev": true, "dependencies": { "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "call-bind": "^1.0.4", "for-each": "^0.3.3", "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0", - "is-typed-array": "^1.1.10" + "has-tostringtag": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -2908,9 +3140,9 @@ } }, "node_modules/yaml": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.1.tgz", - "integrity": "sha512-e0WHiYql7+9wr4cWMx3TVQrNwejKaEe7/rHNmQmqRjazfOP5W8PB6Jpebb5o6fIapbz9o9+2ipcaTM2ZwDI6lw==", + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz", + "integrity": "sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==", "dev": true, "engines": { "node": ">= 14" @@ -2946,2070 +3178,21 @@ "bin": { "zhlint": "bin/index.js" } - } - }, - "dependencies": { - "@esbuild/android-arm": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.18.tgz", - "integrity": "sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==", - "dev": true, - "optional": true - }, - "@esbuild/linux-loong64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.18.tgz", - "integrity": "sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==", - "dev": true, - "optional": true }, - "@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "node_modules/zhlint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - } - }, - "@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true - }, - "@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - } - }, - "@types/chai": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.4.tgz", - "integrity": "sha512-KnRanxnpfpjUTqTCXslZSEdLfXExwgNxYPdiO2WGUj8+HDjFi8R3k5RVKPeSCzLjCcshCAtVO2QBbVuAV4kTnw==", - "dev": true - }, - "@types/chai-subset": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@types/chai-subset/-/chai-subset-1.3.3.tgz", - "integrity": "sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==", - "dev": true, - "requires": { - "@types/chai": "*" - } - }, - "@types/node": { - "version": "18.11.18", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz", - "integrity": "sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==", - "dev": true - }, - "@types/unist": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz", - "integrity": "sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==", - "dev": true - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "asn1.js": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", - "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", - "dev": true, - "requires": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "safer-buffer": "^2.1.0" - }, "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } - } - }, - "assert": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/assert/-/assert-2.0.0.tgz", - "integrity": "sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A==", - "dev": true, - "requires": { - "es6-object-assign": "^1.1.0", - "is-nan": "^1.2.1", - "object-is": "^1.0.1", - "util": "^0.12.0" - } - }, - "assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", - "dev": true - }, - "available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", - "dev": true - }, - "bail": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz", - "integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==", - "dev": true - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true - }, - "bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", - "dev": true - }, - "browser-resolve": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-2.0.0.tgz", - "integrity": "sha512-7sWsQlYL2rGLy2IWm8WL8DCTJvYLc/qlOnsakDac87SOoCd16WLsaAMdCiAqsTNHIe+SXfaqyxyo6THoWqs8WQ==", - "dev": true, - "requires": { - "resolve": "^1.17.0" - } - }, - "browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "dev": true, - "requires": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", - "dev": true, - "requires": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "browserify-des": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", - "dev": true, - "requires": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "browserify-rsa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", - "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", - "dev": true, - "requires": { - "bn.js": "^5.0.0", - "randombytes": "^2.0.1" - } - }, - "browserify-sign": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", - "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", - "dev": true, - "requires": { - "bn.js": "^5.1.1", - "browserify-rsa": "^4.0.1", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "elliptic": "^6.5.3", - "inherits": "^2.0.4", - "parse-asn1": "^5.1.5", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - } - }, - "browserify-zlib": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", - "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", - "dev": true, - "requires": { - "pako": "~1.0.5" - } - }, - "buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", - "dev": true - }, - "builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==", - "dev": true - }, - "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - } - }, - "chai": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz", - "integrity": "sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==", - "dev": true, - "requires": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^4.1.2", - "get-func-name": "^2.0.0", - "loupe": "^2.3.1", - "pathval": "^1.1.1", - "type-detect": "^4.0.5" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" - } - }, - "character-entities": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", - "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", - "dev": true - }, - "character-entities-legacy": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", - "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", - "dev": true - }, - "character-reference-invalid": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", - "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", - "dev": true - }, - "check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", - "dev": true - }, - "cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "collapse-white-space": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.6.tgz", - "integrity": "sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ==", - "dev": true - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "console-browserify": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", - "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", - "dev": true - }, - "constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==", - "dev": true - }, - "create-ecdh": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", - "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "elliptic": "^6.5.3" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } - } - }, - "create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "dev": true, - "requires": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "dev": true, - "requires": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true - }, - "crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", - "dev": true, - "requires": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" - } - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "deep-eql": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", - "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", - "dev": true, - "requires": { - "type-detect": "^4.0.0" - } - }, - "define-properties": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", - "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", - "dev": true, - "requires": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - } - }, - "des.js": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", - "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } - } - }, - "dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "requires": { - "path-type": "^4.0.0" - } - }, - "domain-browser": { - "version": "4.22.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-4.22.0.tgz", - "integrity": "sha512-IGBwjF7tNk3cwypFNH/7bfzBcgSCbaMOD3GsaY1AU/JRrnHnYgEM0+9kQt52iZxjNsjBtJYtao146V+f8jFZNw==", - "dev": true - }, - "elliptic": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", - "dev": true, - "requires": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" + "engines": { + "node": ">=10" }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } - } - }, - "entities": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", - "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==", - "dev": true - }, - "es6-object-assign": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/es6-object-assign/-/es6-object-assign-1.1.0.tgz", - "integrity": "sha512-MEl9uirslVwqQU369iHNWZXsI8yaZYGg/D65aOgZkeyFJwHYSxilf7rQzXKI7DdDuBPrBXbfk3sl9hJhmd5AUw==", - "dev": true - }, - "esbuild": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.18.tgz", - "integrity": "sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==", - "dev": true, - "requires": { - "@esbuild/android-arm": "0.15.18", - "@esbuild/linux-loong64": "0.15.18", - "esbuild-android-64": "0.15.18", - "esbuild-android-arm64": "0.15.18", - "esbuild-darwin-64": "0.15.18", - "esbuild-darwin-arm64": "0.15.18", - "esbuild-freebsd-64": "0.15.18", - "esbuild-freebsd-arm64": "0.15.18", - "esbuild-linux-32": "0.15.18", - "esbuild-linux-64": "0.15.18", - "esbuild-linux-arm": "0.15.18", - "esbuild-linux-arm64": "0.15.18", - "esbuild-linux-mips64le": "0.15.18", - "esbuild-linux-ppc64le": "0.15.18", - "esbuild-linux-riscv64": "0.15.18", - "esbuild-linux-s390x": "0.15.18", - "esbuild-netbsd-64": "0.15.18", - "esbuild-openbsd-64": "0.15.18", - "esbuild-sunos-64": "0.15.18", - "esbuild-windows-32": "0.15.18", - "esbuild-windows-64": "0.15.18", - "esbuild-windows-arm64": "0.15.18" - } - }, - "esbuild-android-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.18.tgz", - "integrity": "sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==", - "dev": true, - "optional": true - }, - "esbuild-android-arm64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.18.tgz", - "integrity": "sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==", - "dev": true, - "optional": true - }, - "esbuild-darwin-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.18.tgz", - "integrity": "sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==", - "dev": true, - "optional": true - }, - "esbuild-darwin-arm64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.18.tgz", - "integrity": "sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==", - "dev": true, - "optional": true - }, - "esbuild-freebsd-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.18.tgz", - "integrity": "sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==", - "dev": true, - "optional": true - }, - "esbuild-freebsd-arm64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.18.tgz", - "integrity": "sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==", - "dev": true, - "optional": true - }, - "esbuild-linux-32": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.18.tgz", - "integrity": "sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==", - "dev": true, - "optional": true - }, - "esbuild-linux-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.18.tgz", - "integrity": "sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==", - "dev": true, - "optional": true - }, - "esbuild-linux-arm": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.18.tgz", - "integrity": "sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==", - "dev": true, - "optional": true - }, - "esbuild-linux-arm64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.18.tgz", - "integrity": "sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==", - "dev": true, - "optional": true - }, - "esbuild-linux-mips64le": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.18.tgz", - "integrity": "sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==", - "dev": true, - "optional": true - }, - "esbuild-linux-ppc64le": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.18.tgz", - "integrity": "sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==", - "dev": true, - "optional": true - }, - "esbuild-linux-riscv64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.18.tgz", - "integrity": "sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==", - "dev": true, - "optional": true - }, - "esbuild-linux-s390x": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.18.tgz", - "integrity": "sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==", - "dev": true, - "optional": true - }, - "esbuild-netbsd-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.18.tgz", - "integrity": "sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==", - "dev": true, - "optional": true - }, - "esbuild-openbsd-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.18.tgz", - "integrity": "sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==", - "dev": true, - "optional": true - }, - "esbuild-sunos-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.18.tgz", - "integrity": "sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==", - "dev": true, - "optional": true - }, - "esbuild-windows-32": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.18.tgz", - "integrity": "sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==", - "dev": true, - "optional": true - }, - "esbuild-windows-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.18.tgz", - "integrity": "sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==", - "dev": true, - "optional": true - }, - "esbuild-windows-arm64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.18.tgz", - "integrity": "sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==", - "dev": true, - "optional": true - }, - "events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true - }, - "evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "dev": true, - "requires": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, - "fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - } - }, - "fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", - "dev": true, - "requires": { - "reusify": "^1.0.4" - } - }, - "fault": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/fault/-/fault-1.0.4.tgz", - "integrity": "sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA==", - "dev": true, - "requires": { - "format": "^0.2.0" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "requires": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - } - }, - "for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "dev": true, - "requires": { - "is-callable": "^1.1.3" - } - }, - "format": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz", - "integrity": "sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==", - "dev": true - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "optional": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", - "dev": true - }, - "get-intrinsic": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", - "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" - } - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - }, - "globby": { - "version": "13.1.3", - "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.3.tgz", - "integrity": "sha512-8krCNHXvlCgHDpegPzleMq07yMYTO2sXKASmZmquEYWEmCx6J5UTRbp5RwMJkTJGtcQ44YpiUYUiN0b9mzy8Bw==", - "dev": true, - "requires": { - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.11", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^4.0.0" - } - }, - "gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dev": true, - "requires": { - "get-intrinsic": "^1.1.3" - } - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", - "dev": true, - "requires": { - "get-intrinsic": "^1.1.1" - } - }, - "has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true - }, - "has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dev": true, - "requires": { - "has-symbols": "^1.0.2" - } - }, - "hash-base": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", - "dev": true, - "requires": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - } - }, - "hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", - "dev": true, - "requires": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "https-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==", - "dev": true - }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true - }, - "ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "is-alphabetical": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", - "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", - "dev": true - }, - "is-alphanumerical": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", - "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", - "dev": true, - "requires": { - "is-alphabetical": "^1.0.0", - "is-decimal": "^1.0.0" - } - }, - "is-arguments": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", - "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-buffer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", - "dev": true - }, - "is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true - }, - "is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "is-decimal": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", - "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", - "dev": true - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true - }, - "is-generator-function": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", - "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-hexadecimal": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", - "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", - "dev": true - }, - "is-nan": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz", - "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3" - } - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", - "dev": true - }, - "is-typed-array": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", - "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", - "dev": true, - "requires": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" - } - }, - "is-whitespace-character": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz", - "integrity": "sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w==", - "dev": true - }, - "is-word-character": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-word-character/-/is-word-character-1.0.4.tgz", - "integrity": "sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA==", - "dev": true - }, - "isomorphic-timers-promises": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/isomorphic-timers-promises/-/isomorphic-timers-promises-1.0.1.tgz", - "integrity": "sha512-u4sej9B1LPSxTGKB/HiuzvEQnXH0ECYkSVQU39koSwmFAxhlEAFl9RdTvLv4TOTQUgBS5O3O5fwUxk6byBZ+IQ==", - "dev": true - }, - "linkify-it": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-4.0.1.tgz", - "integrity": "sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw==", - "dev": true, - "requires": { - "uc.micro": "^1.0.1" - } - }, - "local-pkg": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.3.tgz", - "integrity": "sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==", - "dev": true - }, - "locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "requires": { - "p-locate": "^5.0.0" - } - }, - "loupe": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", - "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==", - "dev": true, - "requires": { - "get-func-name": "^2.0.0" - } - }, - "markdown-escapes": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.4.tgz", - "integrity": "sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg==", - "dev": true - }, - "markdown-it": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-13.0.1.tgz", - "integrity": "sha512-lTlxriVoy2criHP0JKRhO2VDG9c2ypWCsT237eDiLqi09rmbKoUetyGHq2uOIRoRS//kfoJckS0eUzzkDR+k2Q==", - "dev": true, - "requires": { - "argparse": "^2.0.1", - "entities": "~3.0.1", - "linkify-it": "^4.0.1", - "mdurl": "^1.0.1", - "uc.micro": "^1.0.5" - } - }, - "markdownlint": { - "version": "0.27.0", - "resolved": "https://registry.npmjs.org/markdownlint/-/markdownlint-0.27.0.tgz", - "integrity": "sha512-HtfVr/hzJJmE0C198F99JLaeada+646B5SaG2pVoEakLFI6iRGsvMqrnnrflq8hm1zQgwskEgqSnhDW11JBp0w==", - "dev": true, - "requires": { - "markdown-it": "13.0.1" - } - }, - "markdownlint-cli2": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/markdownlint-cli2/-/markdownlint-cli2-0.6.0.tgz", - "integrity": "sha512-Bv20r6WGdcHMWi8QvAFZ3CBunf4i4aYmVdTfpAvXODI/1k3f09DZZ0i0LcX9ZMhlVxjoOzbVDz1NWyKc5hwTqg==", - "dev": true, - "requires": { - "globby": "13.1.3", - "markdownlint": "0.27.0", - "markdownlint-cli2-formatter-default": "0.0.3", - "micromatch": "4.0.5", - "strip-json-comments": "5.0.0", - "yaml": "2.2.1" - } - }, - "markdownlint-cli2-formatter-default": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/markdownlint-cli2-formatter-default/-/markdownlint-cli2-formatter-default-0.0.3.tgz", - "integrity": "sha512-QEAJitT5eqX1SNboOD+SO/LNBpu4P4je8JlR02ug2cLQAqmIhh8IJnSK7AcaHBHhNADqdGydnPpQOpsNcEEqCw==", - "dev": true, - "requires": {} - }, - "md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "dev": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "mdurl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", - "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==", - "dev": true - }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true - }, - "micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "requires": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - } - }, - "miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "dev": true, - "requires": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } - } - }, - "minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true - }, - "minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", - "dev": true - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", - "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", - "dev": true - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", - "dev": true - }, - "node-stdlib-browser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/node-stdlib-browser/-/node-stdlib-browser-1.2.0.tgz", - "integrity": "sha512-VSjFxUhRhkyed8AtLwSCkMrJRfQ3e2lGtG3sP6FEgaLKBBbxM/dLfjRe1+iLhjvyLFW3tBQ8+c0pcOtXGbAZJg==", - "dev": true, - "requires": { - "assert": "^2.0.0", - "browser-resolve": "^2.0.0", - "browserify-zlib": "^0.2.0", - "buffer": "^5.7.1", - "console-browserify": "^1.1.0", - "constants-browserify": "^1.0.0", - "create-require": "^1.1.1", - "crypto-browserify": "^3.11.0", - "domain-browser": "^4.22.0", - "events": "^3.0.0", - "https-browserify": "^1.0.0", - "isomorphic-timers-promises": "^1.0.1", - "os-browserify": "^0.3.0", - "path-browserify": "^1.0.1", - "pkg-dir": "^5.0.0", - "process": "^0.11.10", - "punycode": "^1.4.1", - "querystring-es3": "^0.2.1", - "readable-stream": "^3.6.0", - "stream-browserify": "^3.0.0", - "stream-http": "^3.2.0", - "string_decoder": "^1.0.0", - "timers-browserify": "^2.0.4", - "tty-browserify": "0.0.1", - "url": "^0.11.0", - "util": "^0.12.4", - "vm-browserify": "^1.0.1" - } - }, - "object-is": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", - "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "os-browserify": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==", - "dev": true - }, - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "requires": { - "yocto-queue": "^0.1.0" - } - }, - "p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "requires": { - "p-limit": "^3.0.2" - } - }, - "pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "dev": true - }, - "parse-asn1": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", - "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", - "dev": true, - "requires": { - "asn1.js": "^5.2.0", - "browserify-aes": "^1.0.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" - } - }, - "parse-entities": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-1.2.2.tgz", - "integrity": "sha512-NzfpbxW/NPrzZ/yYSoQxyqUZMZXIdCfE0OIN4ESsnptHJECoUk3FZktxNuzQf4tjt5UEopnxpYJbvYuxIFDdsg==", - "dev": true, - "requires": { - "character-entities": "^1.0.0", - "character-entities-legacy": "^1.0.0", - "character-reference-invalid": "^1.0.0", - "is-alphanumerical": "^1.0.0", - "is-decimal": "^1.0.0", - "is-hexadecimal": "^1.0.0" - } - }, - "path-browserify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", - "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", - "dev": true - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true - }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true - }, - "pathval": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", - "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", - "dev": true - }, - "pbkdf2": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", - "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", - "dev": true, - "requires": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true - }, - "pkg-dir": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz", - "integrity": "sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==", - "dev": true, - "requires": { - "find-up": "^5.0.0" - } - }, - "postcss": { - "version": "8.4.21", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz", - "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==", - "dev": true, - "requires": { - "nanoid": "^3.3.4", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - } - }, - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", - "dev": true - }, - "public-encrypt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } - } - }, - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", - "dev": true - }, - "querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==", - "dev": true - }, - "querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==", - "dev": true - }, - "queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true - }, - "randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", - "dev": true, - "requires": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "remark-frontmatter": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/remark-frontmatter/-/remark-frontmatter-1.3.3.tgz", - "integrity": "sha512-fM5eZPBvu2pVNoq3ZPW22q+5Ativ1oLozq2qYt9I2oNyxiUd/tDl0iLLntEVAegpZIslPWg1brhcP1VsaSVUag==", - "dev": true, - "requires": { - "fault": "^1.0.1", - "xtend": "^4.0.1" - } - }, - "remark-parse": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-7.0.2.tgz", - "integrity": "sha512-9+my0lQS80IQkYXsMA8Sg6m9QfXYJBnXjWYN5U+kFc5/n69t+XZVXU/ZBYr3cYH8FheEGf1v87rkFDhJ8bVgMA==", - "dev": true, - "requires": { - "collapse-white-space": "^1.0.2", - "is-alphabetical": "^1.0.0", - "is-decimal": "^1.0.0", - "is-whitespace-character": "^1.0.0", - "is-word-character": "^1.0.0", - "markdown-escapes": "^1.0.0", - "parse-entities": "^1.1.0", - "repeat-string": "^1.5.4", - "state-toggle": "^1.0.0", - "trim": "0.0.1", - "trim-trailing-lines": "^1.0.0", - "unherit": "^1.0.4", - "unist-util-remove-position": "^1.0.0", - "vfile-location": "^2.0.0", - "xtend": "^4.0.1" - } - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", - "dev": true - }, - "resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "dev": true, - "requires": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } - }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true - }, - "ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "dev": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "rollup": { - "version": "2.79.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz", - "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==", - "dev": true, - "requires": { - "fsevents": "~2.3.2" - } - }, - "run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "requires": { - "queue-microtask": "^1.2.2" - } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", - "dev": true - }, - "sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "slash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", - "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", - "dev": true - }, - "source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "dev": true - }, - "state-toggle": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/state-toggle/-/state-toggle-1.0.3.tgz", - "integrity": "sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ==", - "dev": true - }, - "stream-browserify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz", - "integrity": "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==", - "dev": true, - "requires": { - "inherits": "~2.0.4", - "readable-stream": "^3.5.0" - } - }, - "stream-http": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-3.2.0.tgz", - "integrity": "sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==", - "dev": true, - "requires": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "xtend": "^4.0.2" - } - }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "requires": { - "safe-buffer": "~5.2.0" - } - }, - "strip-json-comments": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-5.0.0.tgz", - "integrity": "sha512-V1LGY4UUo0jgwC+ELQ2BNWfPa17TIuwBLg+j1AA/9RPzKINl1lhxVEu2r+ZTTO8aetIsUzE5Qj6LMSBkoGYKKw==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true - }, - "timers-browserify": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", - "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", - "dev": true, - "requires": { - "setimmediate": "^1.0.4" - } - }, - "tinypool": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.2.4.tgz", - "integrity": "sha512-Vs3rhkUH6Qq1t5bqtb816oT+HeJTXfwt2cbPH17sWHIYKTotQIFPk3tf2fgqRrVyMDVOc1EnPgzIxfIulXVzwQ==", - "dev": true - }, - "tinyspy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-1.0.2.tgz", - "integrity": "sha512-bSGlgwLBYf7PnUsQ6WOc6SJ3pGOcd+d8AA6EUnLDDM0kWEstC1JIlSZA3UNliDXhd9ABoS7hiRBDCu+XP/sf1Q==", - "dev": true - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - }, - "trim": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", - "integrity": "sha512-YzQV+TZg4AxpKxaTHK3c3D+kRDCGVEE7LemdlQZoQXn0iennk10RsIoY6ikzAqJTc9Xjl9C1/waHom/J86ziAQ==", - "dev": true - }, - "trim-trailing-lines": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.4.tgz", - "integrity": "sha512-rjUWSqnfTNrjbB9NQWfPMH/xRK1deHeGsHoVfpxJ++XeYXE0d6B1En37AHfw3jtfTU7dzMzZL2jjpe8Qb5gLIQ==", - "dev": true - }, - "trough": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz", - "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==", - "dev": true - }, - "tty-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", - "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==", - "dev": true - }, - "type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true - }, - "uc.micro": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", - "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", - "dev": true - }, - "unherit": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/unherit/-/unherit-1.1.3.tgz", - "integrity": "sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ==", - "dev": true, - "requires": { - "inherits": "^2.0.0", - "xtend": "^4.0.0" - } - }, - "unified": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/unified/-/unified-8.4.2.tgz", - "integrity": "sha512-JCrmN13jI4+h9UAyKEoGcDZV+i1E7BLFuG7OsaDvTXI5P0qhHX+vZO/kOhz9jn8HGENDKbwSeB0nVOg4gVStGA==", - "dev": true, - "requires": { - "bail": "^1.0.0", - "extend": "^3.0.0", - "is-plain-obj": "^2.0.0", - "trough": "^1.0.0", - "vfile": "^4.0.0" - } - }, - "unist-util-is": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-3.0.0.tgz", - "integrity": "sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A==", - "dev": true - }, - "unist-util-remove-position": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-1.1.4.tgz", - "integrity": "sha512-tLqd653ArxJIPnKII6LMZwH+mb5q+n/GtXQZo6S6csPRs5zB0u79Yw8ouR3wTw8wxvdJFhpP6Y7jorWdCgLO0A==", - "dev": true, - "requires": { - "unist-util-visit": "^1.1.0" - } - }, - "unist-util-stringify-position": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", - "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", - "dev": true, - "requires": { - "@types/unist": "^2.0.2" - } - }, - "unist-util-visit": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.4.1.tgz", - "integrity": "sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==", - "dev": true, - "requires": { - "unist-util-visit-parents": "^2.0.0" - } - }, - "unist-util-visit-parents": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-2.1.2.tgz", - "integrity": "sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g==", - "dev": true, - "requires": { - "unist-util-is": "^3.0.0" - } - }, - "url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==", - "dev": true, - "requires": { - "punycode": "1.3.2", - "querystring": "0.2.0" - }, - "dependencies": { - "punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==", - "dev": true - } - } - }, - "util": { - "version": "0.12.5", - "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", - "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "is-arguments": "^1.0.4", - "is-generator-function": "^1.0.7", - "is-typed-array": "^1.1.3", - "which-typed-array": "^1.1.2" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true - }, - "vfile": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", - "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==", - "dev": true, - "requires": { - "@types/unist": "^2.0.0", - "is-buffer": "^2.0.0", - "unist-util-stringify-position": "^2.0.0", - "vfile-message": "^2.0.0" - } - }, - "vfile-location": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-2.0.6.tgz", - "integrity": "sha512-sSFdyCP3G6Ka0CEmN83A2YCMKIieHx0EDaj5IDP4g1pa5ZJ4FJDvpO0WODLxo4LUX4oe52gmSCK7Jw4SBghqxA==", - "dev": true - }, - "vfile-message": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", - "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", - "dev": true, - "requires": { - "@types/unist": "^2.0.0", - "unist-util-stringify-position": "^2.0.0" - } - }, - "vite": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/vite/-/vite-3.2.5.tgz", - "integrity": "sha512-4mVEpXpSOgrssFZAOmGIr85wPHKvaDAcXqxVxVRZhljkJOMZi1ibLibzjLHzJvcok8BMguLc7g1W6W/GqZbLdQ==", - "dev": true, - "requires": { - "esbuild": "^0.15.9", - "fsevents": "~2.3.2", - "postcss": "^8.4.18", - "resolve": "^1.22.1", - "rollup": "^2.79.1" - } - }, - "vitest": { - "version": "0.21.1", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.21.1.tgz", - "integrity": "sha512-WBIxuFmIDPuK47GO6Lu9eNeRMqHj/FWL3dk73OHH3eyPPWPiu+UB3QHLkLK2PEggCqJW4FaWoWg8R68S7p9+9Q==", - "dev": true, - "requires": { - "@types/chai": "^4.3.3", - "@types/chai-subset": "^1.3.3", - "@types/node": "*", - "chai": "^4.3.6", - "debug": "^4.3.4", - "local-pkg": "^0.4.2", - "tinypool": "^0.2.4", - "tinyspy": "^1.0.0", - "vite": "^2.9.12 || ^3.0.0-0" - } - }, - "vm-browserify": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", - "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", - "dev": true - }, - "which-typed-array": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", - "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", - "dev": true, - "requires": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0", - "is-typed-array": "^1.1.10" - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true - }, - "yaml": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.1.tgz", - "integrity": "sha512-e0WHiYql7+9wr4cWMx3TVQrNwejKaEe7/rHNmQmqRjazfOP5W8PB6Jpebb5o6fIapbz9o9+2ipcaTM2ZwDI6lw==", - "dev": true - }, - "yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true - }, - "zhlint": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/zhlint/-/zhlint-0.7.1.tgz", - "integrity": "sha512-FwwBm1JKyvIBm16exTqyG5gfnvp1fCKn9hIkjXj3cmbCn3aWE6FQaPTkmJfrLR0JNP1CIZjBDdD5Wkbts2r8PA==", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "glob": "^7.1.6", - "minimist": "^1.2.0", - "node-stdlib-browser": "^1.2.0", - "remark-frontmatter": "^1.3.2", - "remark-parse": "^7.0.2", - "unified": "^8.4.2", - "vitest": "^0.21.1" + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } } } diff --git a/package.json b/package.json index 28f4ea85db..4a1a96c2ad 100644 --- a/package.json +++ b/package.json @@ -1,12 +1,31 @@ { "name": "matrixorigin.io.cn", + "type": "module", + "packageManager": "pnpm@8.10.2", "scripts": { "config:zhlint": "node ./scripts/genZhlintConfig", - "lint": "npm run config:zhlint && npx zhlint './docs/MatrixOne/**/*.md' && npx markdownlint-cli2 './docs/MatrixOne/**/*.md'", - "lint:fix": "npm run config:zhlint && npx zhlint './docs/MatrixOne/**/*.md' --fix && npx markdownlint-cli2-fix './docs/MatrixOne/**/*.md'" + "lint": "npm run lint:autocorrect && npm run lint:zhlint && npm run lint:markdownlint", + "lint:fix": "npm run lint:autocorrect:fix && npm run lint:zhlint:fix && npm run lint:markdownlint:fix", + "lint:autocorrect": "node ./scripts/autocorrect", + "lint:autocorrect:fix": "node ./scripts/autocorrect --fix", + "lint:zhlint": "npm run config:zhlint && npx zhlint './docs/MatrixOne/**/*.md'", + "lint:zhlint:fix": "npm run config:zhlint && npx zhlint './docs/MatrixOne/**/*.md' --fix", + "lint:markdownlint": "markdownlint-cli2 './docs/MatrixOne/**/*.md'", + "lint:markdownlint:fix": "markdownlint-cli2-fix './docs/MatrixOne/**/*.md'" }, "devDependencies": { - "markdownlint-cli2": "^0.6.0", + "autocorrect-node": "^2.8.4", + "chalk": "^5.3.0", + "diff": "^5.1.0", + "fast-glob": "^3.3.1", + "markdownlint-cli2": "^0.10.0", + "minimist": "^1.2.8", + "yaml": "^2.3.4", "zhlint": "^0.7.1" + }, + "pnpm": { + "overrides": { + "trim@<0.0.3": ">=0.0.3" + } } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000000..413f6a926b --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,1854 @@ +lockfileVersion: '6.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +overrides: + trim@<0.0.3: '>=0.0.3' + +devDependencies: + autocorrect-node: + specifier: ^2.8.4 + version: 2.8.4 + chalk: + specifier: ^5.3.0 + version: 5.3.0 + diff: + specifier: ^5.1.0 + version: 5.1.0 + fast-glob: + specifier: ^3.3.1 + version: 3.3.1 + markdownlint-cli2: + specifier: ^0.10.0 + version: 0.10.0 + minimist: + specifier: ^1.2.8 + version: 1.2.8 + yaml: + specifier: ^2.3.4 + version: 2.3.4 + zhlint: + specifier: ^0.7.1 + version: 0.7.1 + +packages: + + /@esbuild/android-arm@0.15.18: + resolution: {integrity: sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-loong64@0.15.18: + resolution: {integrity: sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@nodelib/fs.scandir@2.1.5: + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + dev: true + + /@nodelib/fs.stat@2.0.5: + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + dev: true + + /@nodelib/fs.walk@1.2.8: + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.15.0 + dev: true + + /@types/chai-subset@1.3.4: + resolution: {integrity: sha512-CCWNXrJYSUIojZ1149ksLl3AN9cmZ5djf+yUoVVV+NuYrtydItQVlL2ZDqyC6M6O9LWRnVf8yYDxbXHO2TfQZg==} + dependencies: + '@types/chai': 4.3.9 + dev: true + + /@types/chai@4.3.9: + resolution: {integrity: sha512-69TtiDzu0bcmKQv3yg1Zx409/Kd7r0b5F1PfpYJfSHzLGtB53547V4u+9iqKYsTu/O2ai6KTb0TInNpvuQ3qmg==} + dev: true + + /@types/node@20.8.10: + resolution: {integrity: sha512-TlgT8JntpcbmKUFzjhsyhGfP2fsiz1Mv56im6enJ905xG1DAYesxJaeSbGqQmAw8OWPdhyJGhGSQGKRNJ45u9w==} + dependencies: + undici-types: 5.26.5 + dev: true + + /@types/unist@2.0.9: + resolution: {integrity: sha512-zC0iXxAv1C1ERURduJueYzkzZ2zaGyc+P2c95hgkikHPr3z8EdUZOlgEQ5X0DRmwDZn+hekycQnoeiiRVrmilQ==} + dev: true + + /ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + dependencies: + color-convert: 2.0.1 + dev: true + + /argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + dev: true + + /asn1.js@5.4.1: + resolution: {integrity: sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==} + dependencies: + bn.js: 4.12.0 + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + safer-buffer: 2.1.2 + dev: true + + /assert@2.1.0: + resolution: {integrity: sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==} + dependencies: + call-bind: 1.0.5 + is-nan: 1.3.2 + object-is: 1.1.5 + object.assign: 4.1.4 + util: 0.12.5 + dev: true + + /assertion-error@1.1.0: + resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} + dev: true + + /autocorrect-node-darwin-arm64@2.8.4: + resolution: {integrity: sha512-eJFsrZZZUJVPTbdA6hAmVUbTBaznIfkIwstcfn02CXLVKq15j00CXkNytQIdmKpBraTmxjub9kQvYY0Nz2h4DQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /autocorrect-node-darwin-x64@2.8.4: + resolution: {integrity: sha512-3QheEz2VgZnJcId7zgzbyC88CSmyHg+F93Bw5wsf7dTSwhVdnXeIIlYtXzFabp+c2aCi9lRAQkHFC9Om1CYkuQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /autocorrect-node-linux-x64-gnu@2.8.4: + resolution: {integrity: sha512-0nR3VnxpfU6HINQiZjC2cz1YVxOTCn529VPqHsWz2H03BPbS9YskGzbRpujnLvwLCyyDlYXJJneFYD1G+9VPaA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /autocorrect-node-linux-x64-musl@2.8.4: + resolution: {integrity: sha512-2LtKtaN6YWUnDtBpo2w5c7FSulozbt2kv9UigrckCX8M/AOVw0MA6uB5snglmKMx1f7fYC06/V4A7Ny1weUOGA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /autocorrect-node-win32-x64-msvc@2.8.4: + resolution: {integrity: sha512-ExcoBqRjEVnK9n2AVy/dmkiUSnvs5P/VdzI909bCjej1XgOpXonsZ4vGPEPicRfiHb8dc7whl6sh5P/TunDB7A==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /autocorrect-node@2.8.4: + resolution: {integrity: sha512-65DUHJhIUwAlEtyDjYxE94sTT2anQtGXrPB7W9fdrk/Bm7ro4b7mjxQAP14lQlISXXtbNEJO1WABMqNpNbTjxQ==} + engines: {node: '>= 10'} + hasBin: true + optionalDependencies: + autocorrect-node-darwin-arm64: 2.8.4 + autocorrect-node-darwin-x64: 2.8.4 + autocorrect-node-linux-x64-gnu: 2.8.4 + autocorrect-node-linux-x64-musl: 2.8.4 + autocorrect-node-win32-x64-msvc: 2.8.4 + dev: true + + /available-typed-arrays@1.0.5: + resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} + engines: {node: '>= 0.4'} + dev: true + + /bail@1.0.5: + resolution: {integrity: sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==} + dev: true + + /balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + dev: true + + /base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + dev: true + + /bn.js@4.12.0: + resolution: {integrity: sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==} + dev: true + + /bn.js@5.2.1: + resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} + dev: true + + /brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + dev: true + + /braces@3.0.2: + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + engines: {node: '>=8'} + dependencies: + fill-range: 7.0.1 + dev: true + + /brorand@1.1.0: + resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} + dev: true + + /browser-resolve@2.0.0: + resolution: {integrity: sha512-7sWsQlYL2rGLy2IWm8WL8DCTJvYLc/qlOnsakDac87SOoCd16WLsaAMdCiAqsTNHIe+SXfaqyxyo6THoWqs8WQ==} + dependencies: + resolve: 1.22.8 + dev: true + + /browserify-aes@1.2.0: + resolution: {integrity: sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==} + dependencies: + buffer-xor: 1.0.3 + cipher-base: 1.0.4 + create-hash: 1.2.0 + evp_bytestokey: 1.0.3 + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: true + + /browserify-cipher@1.0.1: + resolution: {integrity: sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==} + dependencies: + browserify-aes: 1.2.0 + browserify-des: 1.0.2 + evp_bytestokey: 1.0.3 + dev: true + + /browserify-des@1.0.2: + resolution: {integrity: sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==} + dependencies: + cipher-base: 1.0.4 + des.js: 1.1.0 + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: true + + /browserify-rsa@4.1.0: + resolution: {integrity: sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==} + dependencies: + bn.js: 5.2.1 + randombytes: 2.1.0 + dev: true + + /browserify-sign@4.2.2: + resolution: {integrity: sha512-1rudGyeYY42Dk6texmv7c4VcQ0EsvVbLwZkA+AQB7SxvXxmcD93jcHie8bzecJ+ChDlmAm2Qyu0+Ccg5uhZXCg==} + engines: {node: '>= 4'} + dependencies: + bn.js: 5.2.1 + browserify-rsa: 4.1.0 + create-hash: 1.2.0 + create-hmac: 1.1.7 + elliptic: 6.5.4 + inherits: 2.0.4 + parse-asn1: 5.1.6 + readable-stream: 3.6.2 + safe-buffer: 5.2.1 + dev: true + + /browserify-zlib@0.2.0: + resolution: {integrity: sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==} + dependencies: + pako: 1.0.11 + dev: true + + /buffer-xor@1.0.3: + resolution: {integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==} + dev: true + + /buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + dev: true + + /builtin-status-codes@3.0.0: + resolution: {integrity: sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==} + dev: true + + /call-bind@1.0.5: + resolution: {integrity: sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==} + dependencies: + function-bind: 1.1.2 + get-intrinsic: 1.2.2 + set-function-length: 1.1.1 + dev: true + + /chai@4.3.10: + resolution: {integrity: sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==} + engines: {node: '>=4'} + dependencies: + assertion-error: 1.1.0 + check-error: 1.0.3 + deep-eql: 4.1.3 + get-func-name: 2.0.2 + loupe: 2.3.7 + pathval: 1.1.1 + type-detect: 4.0.8 + dev: true + + /chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + dev: true + + /chalk@5.3.0: + resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + dev: true + + /character-entities-legacy@1.1.4: + resolution: {integrity: sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==} + dev: true + + /character-entities@1.2.4: + resolution: {integrity: sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==} + dev: true + + /character-reference-invalid@1.1.4: + resolution: {integrity: sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==} + dev: true + + /check-error@1.0.3: + resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} + dependencies: + get-func-name: 2.0.2 + dev: true + + /cipher-base@1.0.4: + resolution: {integrity: sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==} + dependencies: + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: true + + /collapse-white-space@1.0.6: + resolution: {integrity: sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ==} + dev: true + + /color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + dependencies: + color-name: 1.1.4 + dev: true + + /color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + dev: true + + /concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + dev: true + + /console-browserify@1.2.0: + resolution: {integrity: sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==} + dev: true + + /constants-browserify@1.0.0: + resolution: {integrity: sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==} + dev: true + + /create-ecdh@4.0.4: + resolution: {integrity: sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==} + dependencies: + bn.js: 4.12.0 + elliptic: 6.5.4 + dev: true + + /create-hash@1.2.0: + resolution: {integrity: sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==} + dependencies: + cipher-base: 1.0.4 + inherits: 2.0.4 + md5.js: 1.3.5 + ripemd160: 2.0.2 + sha.js: 2.4.11 + dev: true + + /create-hmac@1.1.7: + resolution: {integrity: sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==} + dependencies: + cipher-base: 1.0.4 + create-hash: 1.2.0 + inherits: 2.0.4 + ripemd160: 2.0.2 + safe-buffer: 5.2.1 + sha.js: 2.4.11 + dev: true + + /create-require@1.1.1: + resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + dev: true + + /crypto-browserify@3.12.0: + resolution: {integrity: sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==} + dependencies: + browserify-cipher: 1.0.1 + browserify-sign: 4.2.2 + create-ecdh: 4.0.4 + create-hash: 1.2.0 + create-hmac: 1.1.7 + diffie-hellman: 5.0.3 + inherits: 2.0.4 + pbkdf2: 3.1.2 + public-encrypt: 4.0.3 + randombytes: 2.1.0 + randomfill: 1.0.4 + dev: true + + /debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + dev: true + + /deep-eql@4.1.3: + resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} + engines: {node: '>=6'} + dependencies: + type-detect: 4.0.8 + dev: true + + /define-data-property@1.1.1: + resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.2 + gopd: 1.0.1 + has-property-descriptors: 1.0.1 + dev: true + + /define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.1 + has-property-descriptors: 1.0.1 + object-keys: 1.1.1 + dev: true + + /des.js@1.1.0: + resolution: {integrity: sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==} + dependencies: + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + dev: true + + /diff@5.1.0: + resolution: {integrity: sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==} + engines: {node: '>=0.3.1'} + dev: true + + /diffie-hellman@5.0.3: + resolution: {integrity: sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==} + dependencies: + bn.js: 4.12.0 + miller-rabin: 4.0.1 + randombytes: 2.1.0 + dev: true + + /dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + dependencies: + path-type: 4.0.0 + dev: true + + /domain-browser@4.23.0: + resolution: {integrity: sha512-ArzcM/II1wCCujdCNyQjXrAFwS4mrLh4C7DZWlaI8mdh7h3BfKdNd3bKXITfl2PT9FtfQqaGvhi1vPRQPimjGA==} + engines: {node: '>=10'} + dev: true + + /elliptic@6.5.4: + resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} + dependencies: + bn.js: 4.12.0 + brorand: 1.1.0 + hash.js: 1.1.7 + hmac-drbg: 1.0.1 + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + minimalistic-crypto-utils: 1.0.1 + dev: true + + /entities@3.0.1: + resolution: {integrity: sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==} + engines: {node: '>=0.12'} + dev: true + + /esbuild-android-64@0.15.18: + resolution: {integrity: sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /esbuild-android-arm64@0.15.18: + resolution: {integrity: sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /esbuild-darwin-64@0.15.18: + resolution: {integrity: sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /esbuild-darwin-arm64@0.15.18: + resolution: {integrity: sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /esbuild-freebsd-64@0.15.18: + resolution: {integrity: sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /esbuild-freebsd-arm64@0.15.18: + resolution: {integrity: sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-32@0.15.18: + resolution: {integrity: sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-64@0.15.18: + resolution: {integrity: sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-arm64@0.15.18: + resolution: {integrity: sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-arm@0.15.18: + resolution: {integrity: sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-mips64le@0.15.18: + resolution: {integrity: sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-ppc64le@0.15.18: + resolution: {integrity: sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-riscv64@0.15.18: + resolution: {integrity: sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-s390x@0.15.18: + resolution: {integrity: sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-netbsd-64@0.15.18: + resolution: {integrity: sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + + /esbuild-openbsd-64@0.15.18: + resolution: {integrity: sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + + /esbuild-sunos-64@0.15.18: + resolution: {integrity: sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + + /esbuild-windows-32@0.15.18: + resolution: {integrity: sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /esbuild-windows-64@0.15.18: + resolution: {integrity: sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /esbuild-windows-arm64@0.15.18: + resolution: {integrity: sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /esbuild@0.15.18: + resolution: {integrity: sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.15.18 + '@esbuild/linux-loong64': 0.15.18 + esbuild-android-64: 0.15.18 + esbuild-android-arm64: 0.15.18 + esbuild-darwin-64: 0.15.18 + esbuild-darwin-arm64: 0.15.18 + esbuild-freebsd-64: 0.15.18 + esbuild-freebsd-arm64: 0.15.18 + esbuild-linux-32: 0.15.18 + esbuild-linux-64: 0.15.18 + esbuild-linux-arm: 0.15.18 + esbuild-linux-arm64: 0.15.18 + esbuild-linux-mips64le: 0.15.18 + esbuild-linux-ppc64le: 0.15.18 + esbuild-linux-riscv64: 0.15.18 + esbuild-linux-s390x: 0.15.18 + esbuild-netbsd-64: 0.15.18 + esbuild-openbsd-64: 0.15.18 + esbuild-sunos-64: 0.15.18 + esbuild-windows-32: 0.15.18 + esbuild-windows-64: 0.15.18 + esbuild-windows-arm64: 0.15.18 + dev: true + + /events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + dev: true + + /evp_bytestokey@1.0.3: + resolution: {integrity: sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==} + dependencies: + md5.js: 1.3.5 + safe-buffer: 5.2.1 + dev: true + + /extend@3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + dev: true + + /fast-glob@3.3.1: + resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} + engines: {node: '>=8.6.0'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.5 + dev: true + + /fastq@1.15.0: + resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} + dependencies: + reusify: 1.0.4 + dev: true + + /fault@1.0.4: + resolution: {integrity: sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA==} + dependencies: + format: 0.2.2 + dev: true + + /fill-range@7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} + dependencies: + to-regex-range: 5.0.1 + dev: true + + /find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + dev: true + + /for-each@0.3.3: + resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + dependencies: + is-callable: 1.2.7 + dev: true + + /format@0.2.2: + resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==} + engines: {node: '>=0.4.x'} + dev: true + + /fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + dev: true + + /fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + dev: true + + /get-func-name@2.0.2: + resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} + dev: true + + /get-intrinsic@1.2.2: + resolution: {integrity: sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==} + dependencies: + function-bind: 1.1.2 + has-proto: 1.0.1 + has-symbols: 1.0.3 + hasown: 2.0.0 + dev: true + + /glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + dependencies: + is-glob: 4.0.3 + dev: true + + /glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + + /globby@13.2.2: + resolution: {integrity: sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + dir-glob: 3.0.1 + fast-glob: 3.3.1 + ignore: 5.2.4 + merge2: 1.4.1 + slash: 4.0.0 + dev: true + + /gopd@1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + dependencies: + get-intrinsic: 1.2.2 + dev: true + + /has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + dev: true + + /has-property-descriptors@1.0.1: + resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==} + dependencies: + get-intrinsic: 1.2.2 + dev: true + + /has-proto@1.0.1: + resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} + engines: {node: '>= 0.4'} + dev: true + + /has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + dev: true + + /has-tostringtag@1.0.0: + resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 + dev: true + + /hash-base@3.1.0: + resolution: {integrity: sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==} + engines: {node: '>=4'} + dependencies: + inherits: 2.0.4 + readable-stream: 3.6.2 + safe-buffer: 5.2.1 + dev: true + + /hash.js@1.1.7: + resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} + dependencies: + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + dev: true + + /hasown@2.0.0: + resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} + engines: {node: '>= 0.4'} + dependencies: + function-bind: 1.1.2 + dev: true + + /hmac-drbg@1.0.1: + resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} + dependencies: + hash.js: 1.1.7 + minimalistic-assert: 1.0.1 + minimalistic-crypto-utils: 1.0.1 + dev: true + + /https-browserify@1.0.0: + resolution: {integrity: sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==} + dev: true + + /ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + dev: true + + /ignore@5.2.4: + resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} + engines: {node: '>= 4'} + dev: true + + /inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + dev: true + + /inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + dev: true + + /is-alphabetical@1.0.4: + resolution: {integrity: sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==} + dev: true + + /is-alphanumerical@1.0.4: + resolution: {integrity: sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==} + dependencies: + is-alphabetical: 1.0.4 + is-decimal: 1.0.4 + dev: true + + /is-arguments@1.1.1: + resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + has-tostringtag: 1.0.0 + dev: true + + /is-buffer@2.0.5: + resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} + engines: {node: '>=4'} + dev: true + + /is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + dev: true + + /is-core-module@2.13.1: + resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} + dependencies: + hasown: 2.0.0 + dev: true + + /is-decimal@1.0.4: + resolution: {integrity: sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==} + dev: true + + /is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + dev: true + + /is-generator-function@1.0.10: + resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true + + /is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + dependencies: + is-extglob: 2.1.1 + dev: true + + /is-hexadecimal@1.0.4: + resolution: {integrity: sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==} + dev: true + + /is-nan@1.3.2: + resolution: {integrity: sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + dev: true + + /is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + dev: true + + /is-plain-obj@2.1.0: + resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} + engines: {node: '>=8'} + dev: true + + /is-typed-array@1.1.12: + resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==} + engines: {node: '>= 0.4'} + dependencies: + which-typed-array: 1.1.13 + dev: true + + /is-whitespace-character@1.0.4: + resolution: {integrity: sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w==} + dev: true + + /is-word-character@1.0.4: + resolution: {integrity: sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA==} + dev: true + + /isomorphic-timers-promises@1.0.1: + resolution: {integrity: sha512-u4sej9B1LPSxTGKB/HiuzvEQnXH0ECYkSVQU39koSwmFAxhlEAFl9RdTvLv4TOTQUgBS5O3O5fwUxk6byBZ+IQ==} + engines: {node: '>=10'} + dev: true + + /linkify-it@4.0.1: + resolution: {integrity: sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw==} + dependencies: + uc.micro: 1.0.6 + dev: true + + /local-pkg@0.4.3: + resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==} + engines: {node: '>=14'} + dev: true + + /locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + dependencies: + p-locate: 5.0.0 + dev: true + + /loupe@2.3.7: + resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} + dependencies: + get-func-name: 2.0.2 + dev: true + + /markdown-escapes@1.0.4: + resolution: {integrity: sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg==} + dev: true + + /markdown-it@13.0.1: + resolution: {integrity: sha512-lTlxriVoy2criHP0JKRhO2VDG9c2ypWCsT237eDiLqi09rmbKoUetyGHq2uOIRoRS//kfoJckS0eUzzkDR+k2Q==} + hasBin: true + dependencies: + argparse: 2.0.1 + entities: 3.0.1 + linkify-it: 4.0.1 + mdurl: 1.0.1 + uc.micro: 1.0.6 + dev: true + + /markdownlint-cli2-formatter-default@0.0.4(markdownlint-cli2@0.10.0): + resolution: {integrity: sha512-xm2rM0E+sWgjpPn1EesPXx5hIyrN2ddUnUwnbCsD/ONxYtw3PX6LydvdH6dciWAoFDpwzbHM1TO7uHfcMd6IYg==} + peerDependencies: + markdownlint-cli2: '>=0.0.4' + dependencies: + markdownlint-cli2: 0.10.0 + dev: true + + /markdownlint-cli2@0.10.0: + resolution: {integrity: sha512-kVxjPyKFC+eW7iqcxiNI50RDzwugpXkEX5eQlDso/0IUs9M73jXYguLFHDzgi5KatcxU/57Fu8KoGtkFft9lfA==} + engines: {node: '>=16'} + hasBin: true + dependencies: + globby: 13.2.2 + markdownlint: 0.31.1 + markdownlint-cli2-formatter-default: 0.0.4(markdownlint-cli2@0.10.0) + micromatch: 4.0.5 + strip-json-comments: 5.0.1 + yaml: 2.3.2 + dev: true + + /markdownlint-micromark@0.1.7: + resolution: {integrity: sha512-BbRPTC72fl5vlSKv37v/xIENSRDYL/7X/XoFzZ740FGEbs9vZerLrIkFRY0rv7slQKxDczToYuMmqQFN61fi4Q==} + engines: {node: '>=16'} + dev: true + + /markdownlint@0.31.1: + resolution: {integrity: sha512-CKMR2hgcIBrYlIUccDCOvi966PZ0kJExDrUi1R+oF9PvqQmCrTqjOsgIvf2403OmJ+CWomuzDoylr6KbuMyvHA==} + engines: {node: '>=16'} + dependencies: + markdown-it: 13.0.1 + markdownlint-micromark: 0.1.7 + dev: true + + /md5.js@1.3.5: + resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==} + dependencies: + hash-base: 3.1.0 + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: true + + /mdurl@1.0.1: + resolution: {integrity: sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==} + dev: true + + /merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + dev: true + + /micromatch@4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} + dependencies: + braces: 3.0.2 + picomatch: 2.3.1 + dev: true + + /miller-rabin@4.0.1: + resolution: {integrity: sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==} + hasBin: true + dependencies: + bn.js: 4.12.0 + brorand: 1.1.0 + dev: true + + /minimalistic-assert@1.0.1: + resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} + dev: true + + /minimalistic-crypto-utils@1.0.1: + resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} + dev: true + + /minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + dependencies: + brace-expansion: 1.1.11 + dev: true + + /minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + dev: true + + /ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + dev: true + + /nanoid@3.3.6: + resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + dev: true + + /node-stdlib-browser@1.2.0: + resolution: {integrity: sha512-VSjFxUhRhkyed8AtLwSCkMrJRfQ3e2lGtG3sP6FEgaLKBBbxM/dLfjRe1+iLhjvyLFW3tBQ8+c0pcOtXGbAZJg==} + engines: {node: '>=10'} + dependencies: + assert: 2.1.0 + browser-resolve: 2.0.0 + browserify-zlib: 0.2.0 + buffer: 5.7.1 + console-browserify: 1.2.0 + constants-browserify: 1.0.0 + create-require: 1.1.1 + crypto-browserify: 3.12.0 + domain-browser: 4.23.0 + events: 3.3.0 + https-browserify: 1.0.0 + isomorphic-timers-promises: 1.0.1 + os-browserify: 0.3.0 + path-browserify: 1.0.1 + pkg-dir: 5.0.0 + process: 0.11.10 + punycode: 1.4.1 + querystring-es3: 0.2.1 + readable-stream: 3.6.2 + stream-browserify: 3.0.0 + stream-http: 3.2.0 + string_decoder: 1.3.0 + timers-browserify: 2.0.12 + tty-browserify: 0.0.1 + url: 0.11.3 + util: 0.12.5 + vm-browserify: 1.1.2 + dev: true + + /object-inspect@1.13.1: + resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} + dev: true + + /object-is@1.1.5: + resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + dev: true + + /object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + dev: true + + /object.assign@4.1.4: + resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + has-symbols: 1.0.3 + object-keys: 1.1.1 + dev: true + + /once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + dependencies: + wrappy: 1.0.2 + dev: true + + /os-browserify@0.3.0: + resolution: {integrity: sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==} + dev: true + + /p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + dependencies: + yocto-queue: 0.1.0 + dev: true + + /p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + dependencies: + p-limit: 3.1.0 + dev: true + + /pako@1.0.11: + resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} + dev: true + + /parse-asn1@5.1.6: + resolution: {integrity: sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==} + dependencies: + asn1.js: 5.4.1 + browserify-aes: 1.2.0 + evp_bytestokey: 1.0.3 + pbkdf2: 3.1.2 + safe-buffer: 5.2.1 + dev: true + + /parse-entities@1.2.2: + resolution: {integrity: sha512-NzfpbxW/NPrzZ/yYSoQxyqUZMZXIdCfE0OIN4ESsnptHJECoUk3FZktxNuzQf4tjt5UEopnxpYJbvYuxIFDdsg==} + dependencies: + character-entities: 1.2.4 + character-entities-legacy: 1.1.4 + character-reference-invalid: 1.1.4 + is-alphanumerical: 1.0.4 + is-decimal: 1.0.4 + is-hexadecimal: 1.0.4 + dev: true + + /path-browserify@1.0.1: + resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} + dev: true + + /path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + dev: true + + /path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + dev: true + + /path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + dev: true + + /path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + dev: true + + /pathval@1.1.1: + resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} + dev: true + + /pbkdf2@3.1.2: + resolution: {integrity: sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==} + engines: {node: '>=0.12'} + dependencies: + create-hash: 1.2.0 + create-hmac: 1.1.7 + ripemd160: 2.0.2 + safe-buffer: 5.2.1 + sha.js: 2.4.11 + dev: true + + /picocolors@1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + dev: true + + /picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + dev: true + + /pkg-dir@5.0.0: + resolution: {integrity: sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==} + engines: {node: '>=10'} + dependencies: + find-up: 5.0.0 + dev: true + + /postcss@8.4.31: + resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.6 + picocolors: 1.0.0 + source-map-js: 1.0.2 + dev: true + + /process@0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} + dev: true + + /public-encrypt@4.0.3: + resolution: {integrity: sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==} + dependencies: + bn.js: 4.12.0 + browserify-rsa: 4.1.0 + create-hash: 1.2.0 + parse-asn1: 5.1.6 + randombytes: 2.1.0 + safe-buffer: 5.2.1 + dev: true + + /punycode@1.4.1: + resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} + dev: true + + /qs@6.11.2: + resolution: {integrity: sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==} + engines: {node: '>=0.6'} + dependencies: + side-channel: 1.0.4 + dev: true + + /querystring-es3@0.2.1: + resolution: {integrity: sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==} + engines: {node: '>=0.4.x'} + dev: true + + /queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + dev: true + + /randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + dependencies: + safe-buffer: 5.2.1 + dev: true + + /randomfill@1.0.4: + resolution: {integrity: sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==} + dependencies: + randombytes: 2.1.0 + safe-buffer: 5.2.1 + dev: true + + /readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + dev: true + + /remark-frontmatter@1.3.3: + resolution: {integrity: sha512-fM5eZPBvu2pVNoq3ZPW22q+5Ativ1oLozq2qYt9I2oNyxiUd/tDl0iLLntEVAegpZIslPWg1brhcP1VsaSVUag==} + dependencies: + fault: 1.0.4 + xtend: 4.0.2 + dev: true + + /remark-parse@7.0.2: + resolution: {integrity: sha512-9+my0lQS80IQkYXsMA8Sg6m9QfXYJBnXjWYN5U+kFc5/n69t+XZVXU/ZBYr3cYH8FheEGf1v87rkFDhJ8bVgMA==} + dependencies: + collapse-white-space: 1.0.6 + is-alphabetical: 1.0.4 + is-decimal: 1.0.4 + is-whitespace-character: 1.0.4 + is-word-character: 1.0.4 + markdown-escapes: 1.0.4 + parse-entities: 1.2.2 + repeat-string: 1.6.1 + state-toggle: 1.0.3 + trim: 1.0.1 + trim-trailing-lines: 1.1.4 + unherit: 1.1.3 + unist-util-remove-position: 1.1.4 + vfile-location: 2.0.6 + xtend: 4.0.2 + dev: true + + /repeat-string@1.6.1: + resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==} + engines: {node: '>=0.10'} + dev: true + + /resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + hasBin: true + dependencies: + is-core-module: 2.13.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + dev: true + + /reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + dev: true + + /ripemd160@2.0.2: + resolution: {integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==} + dependencies: + hash-base: 3.1.0 + inherits: 2.0.4 + dev: true + + /rollup@2.79.1: + resolution: {integrity: sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==} + engines: {node: '>=10.0.0'} + hasBin: true + optionalDependencies: + fsevents: 2.3.3 + dev: true + + /run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + dependencies: + queue-microtask: 1.2.3 + dev: true + + /safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + dev: true + + /safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + dev: true + + /set-function-length@1.1.1: + resolution: {integrity: sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.1 + get-intrinsic: 1.2.2 + gopd: 1.0.1 + has-property-descriptors: 1.0.1 + dev: true + + /setimmediate@1.0.5: + resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} + dev: true + + /sha.js@2.4.11: + resolution: {integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==} + hasBin: true + dependencies: + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: true + + /side-channel@1.0.4: + resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} + dependencies: + call-bind: 1.0.5 + get-intrinsic: 1.2.2 + object-inspect: 1.13.1 + dev: true + + /slash@4.0.0: + resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} + engines: {node: '>=12'} + dev: true + + /source-map-js@1.0.2: + resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} + engines: {node: '>=0.10.0'} + dev: true + + /state-toggle@1.0.3: + resolution: {integrity: sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ==} + dev: true + + /stream-browserify@3.0.0: + resolution: {integrity: sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==} + dependencies: + inherits: 2.0.4 + readable-stream: 3.6.2 + dev: true + + /stream-http@3.2.0: + resolution: {integrity: sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==} + dependencies: + builtin-status-codes: 3.0.0 + inherits: 2.0.4 + readable-stream: 3.6.2 + xtend: 4.0.2 + dev: true + + /string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + dependencies: + safe-buffer: 5.2.1 + dev: true + + /strip-json-comments@5.0.1: + resolution: {integrity: sha512-0fk9zBqO67Nq5M/m45qHCJxylV/DhBlIOVExqgOMiCCrzrhU6tCibRXNqE3jwJLftzE9SNuZtYbpzcO+i9FiKw==} + engines: {node: '>=14.16'} + dev: true + + /supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + dependencies: + has-flag: 4.0.0 + dev: true + + /supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + dev: true + + /timers-browserify@2.0.12: + resolution: {integrity: sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==} + engines: {node: '>=0.6.0'} + dependencies: + setimmediate: 1.0.5 + dev: true + + /tinypool@0.2.4: + resolution: {integrity: sha512-Vs3rhkUH6Qq1t5bqtb816oT+HeJTXfwt2cbPH17sWHIYKTotQIFPk3tf2fgqRrVyMDVOc1EnPgzIxfIulXVzwQ==} + engines: {node: '>=14.0.0'} + dev: true + + /tinyspy@1.1.1: + resolution: {integrity: sha512-UVq5AXt/gQlti7oxoIg5oi/9r0WpF7DGEVwXgqWSMmyN16+e3tl5lIvTaOpJ3TAtu5xFzWccFRM4R5NaWHF+4g==} + engines: {node: '>=14.0.0'} + dev: true + + /to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + dependencies: + is-number: 7.0.0 + dev: true + + /trim-trailing-lines@1.1.4: + resolution: {integrity: sha512-rjUWSqnfTNrjbB9NQWfPMH/xRK1deHeGsHoVfpxJ++XeYXE0d6B1En37AHfw3jtfTU7dzMzZL2jjpe8Qb5gLIQ==} + dev: true + + /trim@1.0.1: + resolution: {integrity: sha512-3JVP2YVqITUisXblCDq/Bi4P9457G/sdEamInkyvCsjbTcXLXIiG7XCb4kGMFWh6JGXesS3TKxOPtrncN/xe8w==} + deprecated: Use String.prototype.trim() instead + dev: true + + /trough@1.0.5: + resolution: {integrity: sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==} + dev: true + + /tty-browserify@0.0.1: + resolution: {integrity: sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==} + dev: true + + /type-detect@4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} + dev: true + + /uc.micro@1.0.6: + resolution: {integrity: sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==} + dev: true + + /undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + dev: true + + /unherit@1.1.3: + resolution: {integrity: sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ==} + dependencies: + inherits: 2.0.4 + xtend: 4.0.2 + dev: true + + /unified@8.4.2: + resolution: {integrity: sha512-JCrmN13jI4+h9UAyKEoGcDZV+i1E7BLFuG7OsaDvTXI5P0qhHX+vZO/kOhz9jn8HGENDKbwSeB0nVOg4gVStGA==} + dependencies: + '@types/unist': 2.0.9 + bail: 1.0.5 + extend: 3.0.2 + is-plain-obj: 2.1.0 + trough: 1.0.5 + vfile: 4.2.1 + dev: true + + /unist-util-is@3.0.0: + resolution: {integrity: sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A==} + dev: true + + /unist-util-remove-position@1.1.4: + resolution: {integrity: sha512-tLqd653ArxJIPnKII6LMZwH+mb5q+n/GtXQZo6S6csPRs5zB0u79Yw8ouR3wTw8wxvdJFhpP6Y7jorWdCgLO0A==} + dependencies: + unist-util-visit: 1.4.1 + dev: true + + /unist-util-stringify-position@2.0.3: + resolution: {integrity: sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==} + dependencies: + '@types/unist': 2.0.9 + dev: true + + /unist-util-visit-parents@2.1.2: + resolution: {integrity: sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g==} + dependencies: + unist-util-is: 3.0.0 + dev: true + + /unist-util-visit@1.4.1: + resolution: {integrity: sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==} + dependencies: + unist-util-visit-parents: 2.1.2 + dev: true + + /url@0.11.3: + resolution: {integrity: sha512-6hxOLGfZASQK/cijlZnZJTq8OXAkt/3YGfQX45vvMYXpZoo8NdWZcY73K108Jf759lS1Bv/8wXnHDTSz17dSRw==} + dependencies: + punycode: 1.4.1 + qs: 6.11.2 + dev: true + + /util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + dev: true + + /util@0.12.5: + resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} + dependencies: + inherits: 2.0.4 + is-arguments: 1.1.1 + is-generator-function: 1.0.10 + is-typed-array: 1.1.12 + which-typed-array: 1.1.13 + dev: true + + /vfile-location@2.0.6: + resolution: {integrity: sha512-sSFdyCP3G6Ka0CEmN83A2YCMKIieHx0EDaj5IDP4g1pa5ZJ4FJDvpO0WODLxo4LUX4oe52gmSCK7Jw4SBghqxA==} + dev: true + + /vfile-message@2.0.4: + resolution: {integrity: sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==} + dependencies: + '@types/unist': 2.0.9 + unist-util-stringify-position: 2.0.3 + dev: true + + /vfile@4.2.1: + resolution: {integrity: sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==} + dependencies: + '@types/unist': 2.0.9 + is-buffer: 2.0.5 + unist-util-stringify-position: 2.0.3 + vfile-message: 2.0.4 + dev: true + + /vite@3.2.7(@types/node@20.8.10): + resolution: {integrity: sha512-29pdXjk49xAP0QBr0xXqu2s5jiQIXNvE/xwd0vUizYT2Hzqe4BksNNoWllFVXJf4eLZ+UlVQmXfB4lWrc+t18g==} + engines: {node: ^14.18.0 || >=16.0.0} + hasBin: true + peerDependencies: + '@types/node': '>= 14' + less: '*' + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + dependencies: + '@types/node': 20.8.10 + esbuild: 0.15.18 + postcss: 8.4.31 + resolve: 1.22.8 + rollup: 2.79.1 + optionalDependencies: + fsevents: 2.3.3 + dev: true + + /vitest@0.21.1: + resolution: {integrity: sha512-WBIxuFmIDPuK47GO6Lu9eNeRMqHj/FWL3dk73OHH3eyPPWPiu+UB3QHLkLK2PEggCqJW4FaWoWg8R68S7p9+9Q==} + engines: {node: '>=v14.16.0'} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@vitest/browser': '*' + '@vitest/ui': '*' + c8: '*' + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + c8: + optional: true + happy-dom: + optional: true + jsdom: + optional: true + dependencies: + '@types/chai': 4.3.9 + '@types/chai-subset': 1.3.4 + '@types/node': 20.8.10 + chai: 4.3.10 + debug: 4.3.4 + local-pkg: 0.4.3 + tinypool: 0.2.4 + tinyspy: 1.1.1 + vite: 3.2.7(@types/node@20.8.10) + transitivePeerDependencies: + - less + - sass + - stylus + - sugarss + - supports-color + - terser + dev: true + + /vm-browserify@1.1.2: + resolution: {integrity: sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==} + dev: true + + /which-typed-array@1.1.13: + resolution: {integrity: sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.5 + call-bind: 1.0.5 + for-each: 0.3.3 + gopd: 1.0.1 + has-tostringtag: 1.0.0 + dev: true + + /wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + dev: true + + /xtend@4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} + dev: true + + /yaml@2.3.2: + resolution: {integrity: sha512-N/lyzTPaJasoDmfV7YTrYCI0G/3ivm/9wdG0aHuheKowWQwGTsK0Eoiw6utmzAnI6pkJa0DUVygvp3spqqEKXg==} + engines: {node: '>= 14'} + dev: true + + /yaml@2.3.4: + resolution: {integrity: sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==} + engines: {node: '>= 14'} + dev: true + + /yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + dev: true + + /zhlint@0.7.1: + resolution: {integrity: sha512-FwwBm1JKyvIBm16exTqyG5gfnvp1fCKn9hIkjXj3cmbCn3aWE6FQaPTkmJfrLR0JNP1CIZjBDdD5Wkbts2r8PA==} + hasBin: true + dependencies: + chalk: 4.1.2 + glob: 7.2.3 + minimist: 1.2.8 + node-stdlib-browser: 1.2.0 + remark-frontmatter: 1.3.3 + remark-parse: 7.0.2 + unified: 8.4.2 + vitest: 0.21.1 + transitivePeerDependencies: + - '@edge-runtime/vm' + - '@vitest/browser' + - '@vitest/ui' + - c8 + - happy-dom + - jsdom + - less + - sass + - stylus + - sugarss + - supports-color + - terser + dev: true diff --git a/scripts/autocorrect.js b/scripts/autocorrect.js new file mode 100644 index 0000000000..cd055df6f6 --- /dev/null +++ b/scripts/autocorrect.js @@ -0,0 +1,130 @@ +import { readFile, writeFile } from 'node:fs/promises' +import { basename, dirname, join } from 'node:path' +import { fileURLToPath } from 'node:url' + +import autocorrect from 'autocorrect-node' +import chalk from 'chalk' +import * as Diff from 'diff' +import fg from 'fast-glob' +import parseArgs from 'minimist' +import YAML from 'yaml' + +import { resolveAbsPath } from './utils/path.js' + +/** autocorrect severity enum */ +const SEVERITY = { + ERROR: 1, + WARNING: 2 +} + +const __dirname = dirname(fileURLToPath(import.meta.url)) + +// load config +const configFile = await readFile(join(__dirname, '../.autocorrectrc'), 'utf8') +const config = YAML.parse(configFile) +autocorrect.loadConfig(JSON.stringify(config)) + +// parse args +const argv = parseArgs(process.argv.slice(2)) +const { _: paths, fix = false } = argv +const DEFAULT_PATHS = ['./docs/MatrixOne/**/*.md'] + +// get paths +const pathStream = fg.stream(paths.length ? paths : DEFAULT_PATHS) + +const autocorrectTasks = [] +let fileCount = 0 +let warningCount = 0 +let errorCount = 0 + +// lint files +for await (const entry of pathStream) { + const absPath = resolveAbsPath(entry) + + autocorrectTasks.push( + readFile(absPath, { encoding: 'utf8' }).then(async (fileContent) => { + fileCount++ + + const filename = basename(absPath) + const lintResult = autocorrect.lintFor(fileContent, filename) + + for (const { + l: line, + c: column, + new: newStr, + old: oldStr, + severity + } of lintResult.lines) { + if (severity === SEVERITY.ERROR) { + errorCount++ + } else if (severity === SEVERITY.WARNING) { + warningCount++ + } + + const level = severity === SEVERITY.ERROR ? 'error' : 'warning' + console.log( + (level === 'error' + ? chalk.bgRedBright('Error') + : chalk.bgYellowBright('Warning')) + + chalk(` ${absPath}:${line}:${column}`) + ) + + const diff = Diff.diffChars(oldStr, newStr) + const oldLine = + chalk.redBright('-') + + diff + .filter(({ added }) => !added) + .reduce((out, { removed, value }) => { + const seg = removed + ? chalk.bgRedBright(value) + : chalk.redBright(value) + + return out + seg + }, '') + /** new line */ + const newLine = + chalk.greenBright('+') + + diff + .filter(({ removed }) => !removed) + .reduce((out, { added, value }) => { + const seg = added + ? chalk.bgGreenBright(value) + : chalk.greenBright(value) + + return out + seg + }, '') + + console.log(oldLine) + console.log(newLine) + + console.log('\n') + } + + if (fix) { + const fixedContent = autocorrect.formatFor(fileContent, filename) + await writeFile(absPath, fixedContent) + } + }) + ) +} + +await Promise.all(autocorrectTasks) + +// print summary +const exceptionCount = errorCount + warningCount +const summaryColor = exceptionCount + ? chalk.bgRedBright('FAILED') + : chalk.bgGreenBright('PASSED') +const summaryMessage = exceptionCount + ? chalk.redBright(`- ${fileCount} files checked, found: `) + + chalk.redBright(`Error: ${errorCount}`) + + chalk(', ') + + chalk.yellowBright(`Warning: ${warningCount}\n`) + : chalk.greenBright(`- ${fileCount} files checked. `) + + chalk.greenBright('No error or warning found.\n') +console.log(summaryColor + chalk(' ') + summaryMessage) + +// exit with error code 1 if there are errors +if (!fix && errorCount) { + process.exit(1) +} diff --git a/scripts/genZhlintConfig.js b/scripts/genZhlintConfig.js index 22cfef2495..11e691ca51 100644 --- a/scripts/genZhlintConfig.js +++ b/scripts/genZhlintConfig.js @@ -1,7 +1,14 @@ -const { writeFileSync } = require('fs') -const { resolve } = require('path') +import { writeFile } from 'node:fs/promises' +import { dirname, resolve } from 'node:path' +import { fileURLToPath } from 'node:url' -/** zhlint 配置 */ +const __dirname = dirname(fileURLToPath(import.meta.url)) + +/** + * `zhlint` 配置 + * @type {import('zhlint').Options} + * @see https://github.com/zhlint-project/zhlint#supported-rules + */ const config = { preset: 'default', rules: { @@ -11,7 +18,9 @@ const config = { fullWidthPunctuation: '', // 忽略首尾的空格 trimSpace: false, - }, + // 忽略引号相关的空格问题 + adjustedFullWidthPunctuation: '' + } } /** @@ -22,8 +31,10 @@ const ignoredCases = [ { textStart: '
', textEnd: '' - } + }, ].reduce((prev, { textStart, textEnd }) => prev + textStart + ',' + textEnd + '\n', '') -writeFileSync(resolve(__dirname, '..', '.zhlintrc'), JSON.stringify(config)) -writeFileSync(resolve(__dirname, '..', '.zhlintignore'), ignoredCases) +await Promise.all([ + writeFile(resolve(__dirname, '..', '.zhlintrc'), JSON.stringify(config)), + writeFile(resolve(__dirname, '..', '.zhlintignore'), ignoredCases) +]) diff --git a/scripts/utils/path.js b/scripts/utils/path.js new file mode 100644 index 0000000000..38cba953db --- /dev/null +++ b/scripts/utils/path.js @@ -0,0 +1,12 @@ +import { isAbsolute, join } from 'node:path' + +/** + * Resolve the absolute path of the argument. + * @param {string} path + * @returns {string} The absolute file path. + */ +export function resolveAbsPath(path) { + if (isAbsolute(path)) return path + + return join(process.cwd(), path) +}