├── .gitignore ├── .vscode ├── extensions.json ├── launch.json ├── settings.json └── tasks.json ├── .vscodeignore ├── LICENSE ├── README.md ├── README.zh-CN.md ├── out ├── config │ ├── git_emoji_zh.js │ ├── git_emoji_zh.js.map │ └── util │ │ ├── custom.js │ │ ├── custom.js.map │ │ ├── customItems.js │ │ ├── customItems.js.map │ │ ├── index.js │ │ ├── index.js.map │ │ ├── use-emoji.js │ │ ├── use-emoji.js.map │ │ ├── use-label.js │ │ └── use-label.js.map ├── extension copy.js ├── extension copy.js.map ├── extension.js ├── extension.js.map ├── git_emoji.js ├── git_emoji.js.map ├── test │ ├── runTest.js │ ├── runTest.js.map │ └── suite │ │ ├── extension.test.js │ │ ├── extension.test.js.map │ │ ├── index.js │ │ └── index.js.map ├── utils.js └── utils.js.map ├── package-lock.json ├── package.json ├── src ├── extension.ts ├── git.d.ts ├── type.d.ts └── utils.ts ├── static ├── angular.png ├── extend.png ├── first.png ├── git-commit-lint.png ├── icon.svg ├── icon_light.svg ├── logo.png └── then.png ├── tsconfig.json ├── tslint.json ├── vsc-extension-quickstart.md └── yarn.lock /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | // See http://go.microsoft.com/fwlink/?LinkId=827846 3 | // for the documentation about the extensions.json format 4 | "recommendations": [ 5 | "ms-vscode.vscode-typescript-tslint-plugin" 6 | ] 7 | } -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | // A launch configuration that compiles the extension and then opens it inside a new window 2 | // Use IntelliSense to learn about possible attributes. 3 | // Hover to view descriptions of existing attributes. 4 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 5 | { 6 | "version": "0.2.0", 7 | "configurations": [ 8 | { 9 | "name": "Run Extension", 10 | "type": "extensionHost", 11 | "request": "launch", 12 | "runtimeExecutable": "${execPath}", 13 | "args": [ 14 | "--extensionDevelopmentPath=${workspaceFolder}" 15 | ], 16 | "outFiles": [ 17 | "${workspaceFolder}/out/**/*.js" 18 | ], 19 | "preLaunchTask": "${defaultBuildTask}" 20 | }, 21 | { 22 | "name": "Extension Tests", 23 | "type": "extensionHost", 24 | "request": "launch", 25 | "runtimeExecutable": "${execPath}", 26 | "args": [ 27 | "--extensionDevelopmentPath=${workspaceFolder}", 28 | "--extensionTestsPath=${workspaceFolder}/out/test/suite/index" 29 | ], 30 | "outFiles": [ 31 | "${workspaceFolder}/out/test/**/*.js" 32 | ], 33 | "preLaunchTask": "${defaultBuildTask}" 34 | } 35 | ] 36 | } 37 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | // Place your settings in this file to overwrite default and user settings. 2 | { 3 | "files.exclude": { 4 | "out": false // set this to true to hide the "out" folder with the compiled JS files 5 | }, 6 | "search.exclude": { 7 | "out": true // set this to false to include "out" folder in search results 8 | }, 9 | // Turn off tsc task auto detection since we have the necessary tasks as npm scripts 10 | "typescript.tsc.autoDetect": "off" 11 | } -------------------------------------------------------------------------------- /.vscode/tasks.json: -------------------------------------------------------------------------------- 1 | // See https://go.microsoft.com/fwlink/?LinkId=733558 2 | // for the documentation about the tasks.json format 3 | { 4 | "version": "2.0.0", 5 | "tasks": [ 6 | { 7 | "type": "npm", 8 | "script": "watch", 9 | "problemMatcher": "$tsc-watch", 10 | "isBackground": true, 11 | "presentation": { 12 | "reveal": "never" 13 | }, 14 | "group": { 15 | "kind": "build", 16 | "isDefault": true 17 | } 18 | } 19 | ] 20 | } 21 | -------------------------------------------------------------------------------- /.vscodeignore: -------------------------------------------------------------------------------- 1 | .vscode/** 2 | .vscode-test/** 3 | out/test/** 4 | src/** 5 | .gitignore 6 | vsc-extension-quickstart.md 7 | **/tsconfig.json 8 | **/tslint.json 9 | **/*.map 10 | **/*.ts -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 wangzhongjie 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | English | [中文](./README.zh-CN.md) 2 | 3 | # git-commit-lint-vscode 4 | 5 | In daily development, the mainstream code management tool is currently `git`. When we make changes to the code, we first need to `git commit` to submit it to the local repository. `git` requires that when submitting, we must fill in the submission information as a description of the changes, which will be saved in the `commit` history. This makes it possible to find historical code, facilitates review by others, and can also output a CHANGELOG, which greatly improves the development quality of the project. 6 | 7 | However, in our usual work, most people simply fill in the `commit` without paying much attention to it, which is undoubtedly unfriendly to project management and maintenance. This plugin is used to standardize the `git` submission specifications, making your submission not only "good-looking" but also "practical." 8 | 9 | ## Where to start with standardizing `git` submissions? 10 | 11 | Where does the standardization of `git` submissions begin? Where does it originate? Well, this can be traced back to `Angular`! Let's take a look at the submission specifications of the `Angular` community. 12 | ![](static/angular.png) 13 | 14 | Isn't this commit record clear at a glance? Therefore, it is still necessary to follow the `git commit` specifications! 15 | 16 | ## explain 17 | 18 | | 类型 | emji | 描述 | 19 | | :------: | :--: | :------------------------------------: | 20 | | feat | ✨ | Introducing new features | 21 | | fix | 🐛 | fix bugs | 22 | | style | 💄 | Update UI style text button | 23 | | format | 🥚 | format code | 24 | | docs | 📝 | Add/Update Documentation | 25 | | perf | 👌 | Improve performance/optimize | 26 | | init | 🎉 | Initial commit/initialize project | 27 | | test | ✅ | Add test code | 28 | | refactor | 🎨 | Improve code structure/code formatting | 29 | | patch | 🚑 | Add critical patches | 30 | | file | 📦 | add new file | 31 | | publish | 🚀 | release a new version | 32 | | tag | 📌 | post a new tag | 33 | | config | 🔧 | Modify the configuration file | 34 | | git | 🙈 | Add or modify .gitignore files | 35 | 36 | ## usage effect 37 | 38 | ![](static/git-commit-lint.png) 39 | 40 | ## instructions 41 | 42 | - 1 43 | ![](static/first.png) 44 | - 2 45 | ![](static/then.png) 46 | 47 | ## download 48 | 49 | You can search for the `git-commit-lint-vscode` plugin in the VS Code extensions marketplace. 50 | 51 | ## plug-in-configuration 52 | 53 | ![](static/extend.png) 54 | 55 | You can configure the `git-commit-lint-vscode` plugin by going to File -> Preferences -> Settings -> Extensions -> git-commit-lint-vscode in VS Code. Currently available configuration options are: 56 | 57 | 1. Accurate Locating: Whether to accurately locate the input box of the selected repository when there are multiple repositories, default is `No`. Note: This feature works correctly in most cases, but if your source code management repository has multiple repositories, such as selecting only part of the repository or the order is incorrect, the wrong input box will be selected. 58 | 2. Cover Input Value: Whether to cover the commit message, default is `Yes`. If unchecked, an emoji or code will be inserted before the previous commit message. 59 | 3. Custom Format: Custom git commit format, default is `${emoji}${code}: `. The parameters are taken from the `key` in `Custom Type`, and can be fully customized. 60 | 4. Custom Type: Custom git commit types, default is 61 | 62 | ```json 63 | [ 64 | { 65 | "emoji": "✨", 66 | "type": "feat", 67 | "name": "引入新功能", 68 | "description": "新功能" 69 | }, 70 | { 71 | "emoji": "🐛", 72 | "type": "fix", 73 | "name": "修复bug", 74 | "description": "bug" 75 | }, 76 | { 77 | "emoji": "💄", 78 | "type": "style", 79 | "name": "更新UI样式文件", 80 | "description": "样式" 81 | }, 82 | { 83 | "emoji": "🥚", 84 | "type": "format", 85 | "name": "格式化代码", 86 | "description": "格式化" 87 | }, 88 | { 89 | "emoji": "📝", 90 | "type": "docs", 91 | "name": "添加/更新文档", 92 | "description": "文档" 93 | }, 94 | { 95 | "emoji": "👌", 96 | "type": "perf", 97 | "name": "提高性能/优化", 98 | "description": "优化" 99 | }, 100 | { 101 | "emoji": "🎉", 102 | "type": "init", 103 | "name": "初次提交/初始化项目", 104 | "description": "初始化" 105 | }, 106 | { 107 | "emoji": "✅", 108 | "type": "test", 109 | "name": "增加测试代码", 110 | "description": "测试" 111 | }, 112 | { 113 | "emoji": "🎨", 114 | "type": "refactor", 115 | "name": "改进代码结构/代码格式", 116 | "description": "优化" 117 | }, 118 | { 119 | "emoji": "🚑", 120 | "type": "patch", 121 | "name": "添加重要补丁", 122 | "description": "补丁" 123 | }, 124 | { 125 | "emoji": "📦", 126 | "type": "file", 127 | "name": "添加新文件", 128 | "description": "新文件" 129 | }, 130 | { 131 | "emoji": "🚀", 132 | "type": "publish", 133 | "name": "发布新版本", 134 | "description": "新版本" 135 | }, 136 | { 137 | "emoji": "📌", 138 | "type": "tag", 139 | "name": "发布版本/添加标签", 140 | "description": "书签" 141 | }, 142 | { 143 | "emoji": "🔧", 144 | "type": "config", 145 | "name": "修改配置文件", 146 | "description": "配置" 147 | }, 148 | { 149 | "emoji": "🙈", 150 | "type": "git", 151 | "name": "添加或修改.gitignore文件", 152 | "description": "不可见" 153 | } 154 | ] 155 | ``` 156 | 157 | ## participation contribution 158 | 159 | Although it's just a small plugin, and maybe not many people use it, but thanks to all the contributors! 160 | 161 | 162 | 163 | 164 | 165 | ## issues 166 | 167 | During use, you can ask questions here, and any requirements can also be raised here. 168 | 169 | https://github.com/UvDream/git-commit-lint-vscode/issues 170 | -------------------------------------------------------------------------------- /README.zh-CN.md: -------------------------------------------------------------------------------- 1 | [English](./README.md) | 中文 2 | 3 | # git-commit-lint-vscode 4 | 5 | 在日常的开发中,目前主流的代码管理工具就是 `git` 了,当我们对代码进行改动了,首先得`git commit`提交到本地仓库,`git` 规定了提交时必须填写提交信息作为改动说明,保存 `commit` 历史中,可以找到历史代码,也方便他人 review,还可以输出 CHANGELOG,对项目的研发质量都有很大的提升。 6 | 7 | 但是在平时的工作中,大部分对于`commit` 都是简单的填写,没有好好的重视,这对于项目管理和维护来说,无疑是不友好的。这个插件就是规范化`git`提交规范,让你的提交不仅"好看"还"实用" 8 | 9 | ## git 规范提交从何说起? 10 | 11 | `git` 规范提交从哪里开始的呢?起源在哪呢?emmmmmm,这就追溯到了`Angular`了! 12 | 让我们看下`Angular`社区的提交规范 13 | ![](static/angular.png) 14 | 15 | 这个提交记录是不是一目了然?所以`git commit`规范下还是很有必要的! 16 | 17 | ## 说明 18 | 19 | | 类型 | emji | 描述 | 20 | | :------: | :--: | :-----------------------: | 21 | | feat | ✨ | 引入新功能 | 22 | | fix | 🐛 | 修复 bug | 23 | | style | 💄 | 更新 UI 样式文按键 | 24 | | format | 🥚 | 格式化代码 | 25 | | docs | 📝 | 添加/更新文档 | 26 | | perf | 👌 | 提高性能/优化 | 27 | | init | 🎉 | 初次提交/初始化项目 | 28 | | test | ✅ | 增加测试代码 | 29 | | refactor | 🎨 | 改进代码结构/代码格式 | 30 | | patch | 🚑 | 添加重要补丁 | 31 | | file | 📦 | 添加新文件 | 32 | | publish | 🚀 | 发布新版本 | 33 | | tag | 📌 | 发布新标签 | 34 | | config | 🔧 | 修改配置文件 | 35 | | git | 🙈 | 添加或修改.gitignore 文件 | 36 | 37 | ## 使用效果 38 | 39 | ![](static/git-commit-lint.png) 40 | 41 | ## 使用说明 42 | 43 | - 1 44 | ![](static/first.png) 45 | - 2 46 | ![](static/then.png) 47 | 48 | ## 下载 49 | 50 | 在 vscode 扩展中搜索 `git-commit-lint-vscode` 即可找到该插件。 51 | 52 | ## 插件配置 53 | 54 | ![](static/extend.png) 55 | 56 | 你可以在 vscode 的 文件 -> 首选项 -> 设置 -> 扩展 -> git-commit-lint-vscode 中对该插件进行配置,目前可选的配置项为: 57 | 58 | 1. Accurate Locating: 当存在多个存储库时,是否精确定位到选定存储库的输入框,默认为`否`。注:该功能在多数情况下可以正常运行,只有当你的源代码管理存储库存在多个存储库,如只选择部分存储库或顺序错误时,就会选中错误的输入框。 59 | 2. Cover Input Value: 是否覆盖提交信息, 默认为`是`。如果取消勾选,则会在之前的提交信息前插入 emoji 或者 code。 60 | 3. Custom Format: 自定义 git 提交格式, 默认为`${emoji}${code}: `。可以完全自定义 参数取`Custom Type`里面的`key` 61 | 4. Custom Type: 自定义 git 提交类型, 默认为 62 | 63 | ```json 64 | [ 65 | { 66 | "emoji": "✨", 67 | "type": "feat", 68 | "name": "引入新功能", 69 | "description": "新功能" 70 | }, 71 | { 72 | "emoji": "🐛", 73 | "type": "fix", 74 | "name": "修复bug", 75 | "description": "bug" 76 | }, 77 | { 78 | "emoji": "💄", 79 | "type": "style", 80 | "name": "更新UI样式文件", 81 | "description": "样式" 82 | }, 83 | { 84 | "emoji": "🥚", 85 | "type": "format", 86 | "name": "格式化代码", 87 | "description": "格式化" 88 | }, 89 | { 90 | "emoji": "📝", 91 | "type": "docs", 92 | "name": "添加/更新文档", 93 | "description": "文档" 94 | }, 95 | { 96 | "emoji": "👌", 97 | "type": "perf", 98 | "name": "提高性能/优化", 99 | "description": "优化" 100 | }, 101 | { 102 | "emoji": "🎉", 103 | "type": "init", 104 | "name": "初次提交/初始化项目", 105 | "description": "初始化" 106 | }, 107 | { 108 | "emoji": "✅", 109 | "type": "test", 110 | "name": "增加测试代码", 111 | "description": "测试" 112 | }, 113 | { 114 | "emoji": "🎨", 115 | "type": "refactor", 116 | "name": "改进代码结构/代码格式", 117 | "description": "优化" 118 | }, 119 | { 120 | "emoji": "🚑", 121 | "type": "patch", 122 | "name": "添加重要补丁", 123 | "description": "补丁" 124 | }, 125 | { 126 | "emoji": "📦", 127 | "type": "file", 128 | "name": "添加新文件", 129 | "description": "新文件" 130 | }, 131 | { 132 | "emoji": "🚀", 133 | "type": "publish", 134 | "name": "发布新版本", 135 | "description": "新版本" 136 | }, 137 | { 138 | "emoji": "📌", 139 | "type": "tag", 140 | "name": "发布版本/添加标签", 141 | "description": "书签" 142 | }, 143 | { 144 | "emoji": "🔧", 145 | "type": "config", 146 | "name": "修改配置文件", 147 | "description": "配置" 148 | }, 149 | { 150 | "emoji": "🙈", 151 | "type": "git", 152 | "name": "添加或修改.gitignore文件", 153 | "description": "不可见" 154 | } 155 | ] 156 | ``` 157 | 158 | ## 参与贡献 159 | 160 | 虽然是一个小插件,可能用的人也不是很多,但是感谢所有做过贡献的人! 161 | 162 | 163 | 164 | 165 | 166 | ## issues 167 | 168 | 使用中可以在这提问,有什么需求同样可以在这提出来 169 | 170 | https://github.com/UvDream/git-commit-lint-vscode/issues 171 | -------------------------------------------------------------------------------- /out/config/git_emoji_zh.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | let emojis = [ 4 | { 5 | emoji: "✨", 6 | code: "feat", 7 | name: "引入新功能", 8 | description: "新功能" 9 | }, 10 | { 11 | emoji: "🐛", 12 | code: "fix", 13 | name: "修复bug", 14 | description: "bug" 15 | }, 16 | { 17 | emoji: "💄", 18 | code: "style", 19 | name: "更新UI样式文件", 20 | description: "样式" 21 | }, 22 | { 23 | emoji: "🥚", 24 | code: "format", 25 | name: "格式化代码", 26 | description: "格式化" 27 | }, 28 | { 29 | emoji: "📝", 30 | code: "docs", 31 | name: "添加/更新文档", 32 | description: "文档" 33 | }, 34 | { 35 | emoji: "👌", 36 | code: "perf", 37 | name: "提高性能/优化", 38 | description: "优化" 39 | }, 40 | { 41 | emoji: "🎉", 42 | code: "init", 43 | name: "初次提交/初始化项目", 44 | description: "初始化" 45 | }, 46 | { 47 | emoji: "✅", 48 | code: "test", 49 | name: "增加测试代码", 50 | description: "测试" 51 | }, 52 | { 53 | emoji: "🎨", 54 | code: "refactor", 55 | name: "改进代码结构/代码格式", 56 | description: "优化" 57 | }, 58 | { 59 | emoji: "🚑", 60 | code: "patch", 61 | name: "添加重要补丁", 62 | description: "补丁" 63 | }, 64 | { 65 | emoji: "📦", 66 | code: "file", 67 | name: "添加新文件", 68 | description: "新文件" 69 | }, 70 | { 71 | emoji: "🚀", 72 | code: "publish", 73 | name: "发布新版本", 74 | description: "新版本" 75 | }, 76 | { 77 | emoji: "📌", 78 | code: "tag", 79 | name: "发布版本/添加标签", 80 | description: "书签" 81 | }, 82 | { 83 | emoji: "🔧", 84 | code: "config", 85 | name: "修改配置文件", 86 | description: "配置" 87 | }, 88 | { 89 | emoji: "🙈", 90 | code: "git", 91 | name: "添加或修改.gitignore文件", 92 | description: "不可见" 93 | } 94 | ]; 95 | exports.default = emojis; 96 | //# sourceMappingURL=git_emoji_zh.js.map -------------------------------------------------------------------------------- /out/config/git_emoji_zh.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"git_emoji_zh.js","sourceRoot":"","sources":["../../src/config/git_emoji_zh.ts"],"names":[],"mappings":";;AAcA,IAAI,MAAM,GAAiB;IACzB;QACE,KAAK,EAAE,GAAG;QACV,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,KAAK;KACnB;IACD;QACE,KAAK,EAAE,IAAI;QACX,IAAI,EAAE,KAAK;QACX,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,KAAK;KACnB;IACD;QACE,KAAK,EAAE,IAAI;QACX,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,IAAI;KAClB;IACD;QACE,KAAK,EAAE,IAAI;QACX,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,KAAK;KACnB;IACD;QACE,KAAK,EAAE,IAAI;QACX,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,IAAI;KAClB;IACD;QACE,KAAK,EAAE,IAAI;QACX,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,IAAI;KAClB;IACD;QACE,KAAK,EAAE,IAAI;QACX,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,KAAK;KACnB;IACD;QACE,KAAK,EAAE,GAAG;QACV,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,IAAI;KAClB;IACD;QACE,KAAK,EAAE,IAAI;QACX,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,IAAI;KAClB;IACD;QACE,KAAK,EAAE,IAAI;QACX,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,IAAI;KAClB;IACD;QACE,KAAK,EAAE,IAAI;QACX,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,KAAK;KACnB;IACD;QACE,KAAK,EAAE,IAAI;QACX,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,KAAK;KACnB;IACD;QACE,KAAK,EAAE,IAAI;QACX,IAAI,EAAE,KAAK;QACX,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,IAAI;KAClB;IACD;QACE,KAAK,EAAE,IAAI;QACX,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,IAAI;KAClB;IACD;QACE,KAAK,EAAE,IAAI;QACX,IAAI,EAAE,KAAK;QACX,IAAI,EAAE,mBAAmB;QACzB,WAAW,EAAE,KAAK;KACnB;CACF,CAAC;AACF,kBAAe,MAAM,CAAC"} -------------------------------------------------------------------------------- /out/config/util/custom.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | function customItems(emoji) { 4 | return { 5 | label: `${emoji.emoji}${emoji.code}: ${emoji.description}`, 6 | code: emoji.code, 7 | emoji: `${emoji.emoji}${emoji.code}: `, 8 | description: '[' + emoji.name + ']', 9 | }; 10 | } 11 | exports.customItems = customItems; 12 | //# sourceMappingURL=custom.js.map -------------------------------------------------------------------------------- /out/config/util/custom.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"custom.js","sourceRoot":"","sources":["../../../src/config/util/custom.ts"],"names":[],"mappings":";;AAUA,SAAgB,WAAW,CAAC,KAAY;IACtC,OAAO;QACL,KAAK,EAAE,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,WAAW,EAAE;QAC1D,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,KAAK,EAAE,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,IAAI;QACtC,WAAW,EAAE,GAAG,GAAG,KAAK,CAAC,IAAI,GAAG,GAAG;KACpC,CAAA;AACH,CAAC;AAPD,kCAOC"} -------------------------------------------------------------------------------- /out/config/util/customItems.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const regex = /\${(\w+)}/g; 4 | function customItems(emoji, custom_key) { 5 | return emoji.map((item) => { 6 | const value = custom_key.replace(regex, (_match, variable) => { 7 | return item[variable]; 8 | }); 9 | return { 10 | value, 11 | label: `${value} ${item.name}`, 12 | description: '[' + item.description + ']', 13 | }; 14 | }); 15 | } 16 | exports.default = customItems; 17 | //# sourceMappingURL=customItems.js.map -------------------------------------------------------------------------------- /out/config/util/customItems.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"customItems.js","sourceRoot":"","sources":["../../../src/config/util/customItems.ts"],"names":[],"mappings":";;AASA,MAAM,KAAK,GAAG,YAAY,CAAC;AAE3B,SAAS,WAAW,CAAC,KAAc,EAAE,UAAkB;IACrD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACxB,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,QAAqB,EAAE,EAAE;YACxE,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAA;QACvB,CAAC,CAAC,CAAA;QACF,OAAO;YACL,KAAK;YACL,KAAK,EAAE,GAAG,KAAK,IAAI,IAAI,CAAC,IAAI,EAAE;YAC9B,WAAW,EAAE,GAAG,GAAG,IAAI,CAAC,WAAW,GAAG,GAAG;SAC1C,CAAA;IACH,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,kBAAe,WAAW,CAAA"} -------------------------------------------------------------------------------- /out/config/util/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const use_label_1 = require("./use-label"); 4 | const use_emoji_1 = require("./use-emoji"); 5 | exports.display_method = { 6 | default: use_emoji_1.use_emoji, 7 | // 表情使用代码 8 | "use code": use_label_1.use_label, 9 | // 使用表情 10 | "use emoji": use_emoji_1.use_emoji 11 | }; 12 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /out/config/util/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/config/util/index.ts"],"names":[],"mappings":";;AAAA,2CAAwC;AACxC,2CAAwC;AAE3B,QAAA,cAAc,GAAG;IAC5B,OAAO,EAAE,qBAAS;IAClB,SAAS;IACT,UAAU,EAAE,qBAAS;IACrB,OAAO;IACP,WAAW,EAAE,qBAAS;CACvB,CAAC"} -------------------------------------------------------------------------------- /out/config/util/use-emoji.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | function use_emoji(emoji) { 4 | console.log("使用表情"); 5 | return { 6 | label: `${emoji.emoji}${emoji.code}: ${emoji.description}`, 7 | code: emoji.code, 8 | emoji: `${emoji.emoji}${emoji.code}: `, 9 | description: '[' + emoji.name + ']', 10 | }; 11 | } 12 | exports.use_emoji = use_emoji; 13 | //# sourceMappingURL=use-emoji.js.map -------------------------------------------------------------------------------- /out/config/util/use-emoji.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"use-emoji.js","sourceRoot":"","sources":["../../../src/config/util/use-emoji.ts"],"names":[],"mappings":";;AAUA,SAAgB,SAAS,CAAC,KAAY;IACpC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACpB,OAAO;QACL,KAAK,EAAE,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,WAAW,EAAE;QAC1D,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,KAAK,EAAE,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,IAAI;QACtC,WAAW,EAAE,GAAG,GAAG,KAAK,CAAC,IAAI,GAAG,GAAG;KACpC,CAAA;AACH,CAAC;AARD,8BAQC"} -------------------------------------------------------------------------------- /out/config/util/use-label.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | function use_label(emoji) { 4 | console.log("使用label"); 5 | return { 6 | label: `${emoji.emoji} ${emoji.description}`, 7 | code: emoji.code, 8 | emoji: emoji.code + ' ', 9 | description: '[' + emoji.name + ']', 10 | }; 11 | } 12 | exports.use_label = use_label; 13 | //# sourceMappingURL=use-label.js.map -------------------------------------------------------------------------------- /out/config/util/use-label.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"use-label.js","sourceRoot":"","sources":["../../../src/config/util/use-label.ts"],"names":[],"mappings":";;AAEA,SAAgB,SAAS,CAAC,KAAY;IACpC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAEvB,OAAO;QACL,KAAK,EAAE,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,WAAW,EAAE;QAC5C,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,KAAK,EAAE,KAAK,CAAC,IAAI,GAAG,GAAG;QACvB,WAAW,EAAE,GAAG,GAAG,KAAK,CAAC,IAAI,GAAG,GAAG;KACpC,CAAA;AACH,CAAC;AATD,8BASC"} -------------------------------------------------------------------------------- /out/extension copy.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { 3 | function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } 4 | return new (P || (P = Promise))(function (resolve, reject) { 5 | function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } 6 | function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } 7 | function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } 8 | step((generator = generator.apply(thisArg, _arguments || [])).next()); 9 | }); 10 | }; 11 | Object.defineProperty(exports, "__esModule", { value: true }); 12 | /* 13 | * @Author: wangzhongjie 14 | * @Date: 2020-01-17 19:47:44 15 | * @LastEditors: Lanrri 16 | * @LastEditTime: 2023-03-16 15:50:35 17 | * @Description: 主入口 18 | * @Email: UvDream@163.com 19 | */ 20 | const vscode = require("vscode"); 21 | const git_emoji_zh_1 = require("./config/git_emoji_zh"); 22 | const customItems_1 = require("./config/util/customItems"); 23 | const CUSTOM_GIT_COMMIT_KEY = 'gitCommitLintVscode.customGitCommit'; 24 | const DEFAULT_CUSTOM_EMOJI = '${code}${emoji}: '; 25 | exports.activate = (context) => { 26 | const disposable = vscode.commands.registerCommand('extension.gitEmoji', (uri) => __awaiter(void 0, void 0, void 0, function* () { 27 | const git = getGitExtension(); 28 | if (!git) { 29 | vscode.window.showErrorMessage('无法加载git插件!请先安装git插件!'); 30 | return; 31 | } 32 | const custom_key = context.globalState.get('custom_emoji', DEFAULT_CUSTOM_EMOJI); 33 | // const method_key = context.globalState.get('display_method', 'default'); 34 | const items = customItems_1.default(git_emoji_zh_1.default, custom_key); 35 | console.log("🚀 ~ file: extension.ts:30 ~ disposable ~ items:", items); 36 | // 显示选项列表,提示用户选择 37 | const selected = yield vscode.window.showQuickPick(items); 38 | if (!selected) { 39 | return; 40 | } 41 | const { value } = selected; 42 | vscode.commands.executeCommand('workbench.scm.focus'); 43 | if (git.repositories.length === 1) { 44 | // 确保聚焦到输入框,参考 https://github.com/microsoft/vscode/issues/131006#issuecomment-915751155 45 | vscode.commands.executeCommand('list.focusFirst'); 46 | vscode.commands.executeCommand('list.select'); 47 | prefixCommit(git.repositories[0], value); 48 | return; 49 | } 50 | if (uri) { 51 | const selectedRepositoryIndex = git.repositories.findIndex((repository) => repository.rootUri.path === uri.rootUri.path); 52 | const selectedRepository = git.repositories[selectedRepositoryIndex]; 53 | if (selectedRepository) { 54 | prefixCommit(selectedRepository, value); 55 | // 存在多个存储库时,关闭其他存储库,定位到选择的存储库并聚焦输入框 56 | vscode.commands.executeCommand('list.collapseAll'); 57 | vscode.commands.executeCommand('list.focusFirst'); 58 | for (let i = 0; i < selectedRepositoryIndex; i++) { 59 | vscode.commands.executeCommand('list.focusDown'); 60 | } 61 | vscode.commands.executeCommand('list.expand'); 62 | vscode.commands.executeCommand('list.expand'); 63 | vscode.commands.executeCommand('list.select'); 64 | vscode.commands.executeCommand('list.toggleExpand'); 65 | } 66 | } 67 | else { 68 | for (let repo of git.repositories) { 69 | prefixCommit(repo, value); 70 | } 71 | } 72 | })); 73 | context.subscriptions.push(disposable); 74 | // 命令和设置是否使用 emoji 的映射关系 75 | const displayMethodMap = { 76 | default: 'emoji', 77 | 'use emoji': 'emoji', 78 | 'use code': 'code', 79 | }; 80 | const gitCommitFormatKey = 'gitCommitLintVscode.gitCommitFormat'; 81 | // vscode.commands.registerCommand('extension.switching', async () => { 82 | // const items = []; 83 | // for (const key in display_method) { 84 | // items.push(key); 85 | // } 86 | // const res = await vscode.window.showQuickPick(items); 87 | // if (!res) { 88 | // return; 89 | // } 90 | // context.globalState.update('display_method', res); 91 | // const gitCommitFormat = vscode.workspace.getConfiguration().get(gitCommitFormatKey); 92 | // if (displayMethodMap[res] !== gitCommitFormat) { 93 | // vscode.workspace.getConfiguration().update(gitCommitFormatKey, displayMethodMap[res], true); 94 | // } 95 | // }); 96 | // 监听设置改变事件,如果改变就将命令的配置也改变 97 | context.subscriptions.push(vscode.workspace.onDidChangeConfiguration(() => { 98 | const gitCommitCustom = vscode.workspace.getConfiguration().get(CUSTOM_GIT_COMMIT_KEY); 99 | const customEmoji = context.globalState.get('custom_emoji', DEFAULT_CUSTOM_EMOJI); 100 | console.log("🚀 ~ file: extension.ts:102 ", gitCommitCustom); 101 | if (gitCommitCustom !== customEmoji) { 102 | // TODO: 验证自定义的 emoji 是否符合规范 103 | context.globalState.update('custom_emoji', gitCommitCustom); 104 | } 105 | // const gitCommitFormat = vscode.workspace.getConfiguration().get(gitCommitFormatKey); 106 | // const displayMethod = context.globalState.get('display_method', 'default'); 107 | // if (displayMethodMap[displayMethod] !== gitCommitFormat) { 108 | // context.globalState.update('display_method', 'use ' + gitCommitFormat); 109 | // } 110 | })); 111 | }; 112 | // 选完填入操作 113 | const prefixCommit = (repository, prefix) => { 114 | const coverInputValue = vscode.workspace.getConfiguration().get('gitCommitLintVscode.coverInputValue'); 115 | if (coverInputValue) { 116 | repository.inputBox.value = `${prefix}`; 117 | //! 不删除是因为不知道为什么要先清空再赋值,所以注释掉了原代码,测试了一下修改后的代码,感觉也没发现什么问题啊 118 | // repository.inputBox.value !== '' 119 | // ? ((repository.inputBox.value = ''), (repository.inputBox.value = `${prefix}${repository.inputBox.value}`)) 120 | // : (repository.inputBox.value = `${prefix}${repository.inputBox.value}`); 121 | } 122 | else { 123 | repository.inputBox.value = `${prefix}${repository.inputBox.value}`; 124 | } 125 | }; 126 | // 点击小图标进入插件 127 | const getGitExtension = () => { 128 | const vscodeGit = vscode.extensions.getExtension('vscode.git'); 129 | const gitExtension = vscodeGit && vscodeGit.exports; 130 | return gitExtension && gitExtension.getAPI(1); 131 | }; 132 | // this method is called when your extension is deactivated 133 | exports.deactivate = () => { }; 134 | //# sourceMappingURL=extension copy.js.map -------------------------------------------------------------------------------- /out/extension copy.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"extension copy.js","sourceRoot":"","sources":["../src/extension copy.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA;;;;;;;GAOG;AACH,iCAAiC;AAGjC,wDAA2C;AAC3C,2DAAoD;AAEpD,MAAM,qBAAqB,GAAG,qCAAqC,CAAC;AACpE,MAAM,oBAAoB,GAAG,mBAAmB,CAAA;AAEnC,QAAA,QAAQ,GAAG,CAAC,OAAgC,EAAE,EAAE;IAC3D,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,oBAAoB,EAAE,CAAO,GAAI,EAAE,EAAE;QACtF,MAAM,GAAG,GAAG,eAAe,EAAE,CAAC;QAC9B,IAAI,CAAC,GAAG,EAAE;YACR,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,sBAAsB,CAAC,CAAC;YACvD,OAAO;SACR;QACD,MAAM,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,cAAc,EAAE,oBAAoB,CAAC,CAAC;QAEjF,2EAA2E;QAE3E,MAAM,KAAK,GAAG,qBAAW,CAAC,sBAAM,EAAE,UAAU,CAAC,CAAA;QAC7C,OAAO,CAAC,GAAG,CAAC,kDAAkD,EAAE,KAAK,CAAC,CAAA;QACtE,gBAAgB;QAChB,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC1D,IAAI,CAAC,QAAQ,EAAE;YACb,OAAO;SACR;QACD,MAAM,EAAE,KAAK,EAAE,GAAG,QAAQ,CAAC;QAC3B,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,qBAAqB,CAAC,CAAC;QACtD,IAAI,GAAG,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;YACjC,uFAAuF;YACvF,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;YAClD,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;YAC9C,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YACzC,OAAO;SACR;QACD,IAAI,GAAG,EAAE;YACP,MAAM,uBAAuB,GAAG,GAAG,CAAC,YAAY,CAAC,SAAS,CACxD,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,KAAK,GAAG,CAAC,OAAO,CAAC,IAAI,CAC7D,CAAC;YACF,MAAM,kBAAkB,GAAG,GAAG,CAAC,YAAY,CAAC,uBAAuB,CAAC,CAAC;YACrE,IAAI,kBAAkB,EAAE;gBACtB,YAAY,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;gBACxC,mCAAmC;gBACnC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAC;gBACnD,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;gBAClD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,uBAAuB,EAAE,CAAC,EAAE,EAAE;oBAChD,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC;iBAClD;gBACD,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;gBAC9C,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;gBAC9C,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;gBAC9C,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAC;aACrD;SACF;aAAM;YACL,KAAK,IAAI,IAAI,IAAI,GAAG,CAAC,YAAY,EAAE;gBACjC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;aAC3B;SACF;IACH,CAAC,CAAA,CAAC,CAAC;IACH,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAEvC,wBAAwB;IACxB,MAAM,gBAAgB,GAA8B;QAClD,OAAO,EAAE,OAAO;QAChB,WAAW,EAAE,OAAO;QACpB,UAAU,EAAE,MAAM;KACnB,CAAC;IACF,MAAM,kBAAkB,GAAG,qCAAqC,CAAC;IACjE,uEAAuE;IACvE,sBAAsB;IACtB,wCAAwC;IACxC,uBAAuB;IACvB,MAAM;IACN,0DAA0D;IAC1D,gBAAgB;IAChB,cAAc;IACd,MAAM;IACN,uDAAuD;IACvD,yFAAyF;IACzF,qDAAqD;IACrD,mGAAmG;IACnG,MAAM;IACN,MAAM;IAEN,0BAA0B;IAC1B,OAAO,CAAC,aAAa,CAAC,IAAI,CACxB,MAAM,CAAC,SAAS,CAAC,wBAAwB,CAAC,GAAG,EAAE;QAC7C,MAAM,eAAe,GAAG,MAAM,CAAC,SAAS,CAAC,gBAAgB,EAAE,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QACvF,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,cAAc,EAAE,oBAAoB,CAAC,CAAC;QAClF,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAAE,eAAe,CAAC,CAAA;QAC5D,IAAI,eAAe,KAAK,WAAW,EAAE;YACnC,4BAA4B;YAC5B,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC;SAC7D;QAED,uFAAuF;QACvF,8EAA8E;QAC9E,6DAA6D;QAC7D,4EAA4E;QAC5E,IAAI;IACN,CAAC,CAAC,CACH,CAAC;AACJ,CAAC,CAAC;AACF,SAAS;AACT,MAAM,YAAY,GAAG,CAAC,UAAsB,EAAE,MAAc,EAAE,EAAE;IAC9D,MAAM,eAAe,GAAG,MAAM,CAAC,SAAS,CAAC,gBAAgB,EAAE,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;IACvG,IAAI,eAAe,EAAE;QACnB,UAAU,CAAC,QAAQ,CAAC,KAAK,GAAG,GAAG,MAAM,EAAE,CAAC;QACxC,yDAAyD;QACzD,mCAAmC;QACnC,8GAA8G;QAC9G,2EAA2E;KAC5E;SAAM;QACL,UAAU,CAAC,QAAQ,CAAC,KAAK,GAAG,GAAG,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;KACrE;AACH,CAAC,CAAC;AACF,YAAY;AACZ,MAAM,eAAe,GAAG,GAAG,EAAE;IAC3B,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,YAAY,CAAe,YAAY,CAAC,CAAC;IAC7E,MAAM,YAAY,GAAG,SAAS,IAAI,SAAS,CAAC,OAAO,CAAC;IACpD,OAAO,YAAY,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAChD,CAAC,CAAC;AACF,2DAA2D;AAC9C,QAAA,UAAU,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC"} -------------------------------------------------------------------------------- /out/extension.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.activate = void 0; 4 | /* 5 | * @Author: wangzhongjie 6 | * @Date: 2020-01-17 19:47:44 7 | * @LastEditors: Lanrri 8 | * @LastEditTime: 2023-03-16 15:56:33 9 | * @Description: 主入口 10 | * @Email: UvDream@163.com 11 | */ 12 | const vscode = require("vscode"); 13 | const utils_1 = require("./utils"); 14 | const activate = (context) => { 15 | const disposable = vscode.commands.registerCommand('extension.gitEmoji', utils_1.emojiCommit); 16 | context.subscriptions.push(disposable); 17 | }; 18 | exports.activate = activate; 19 | //# sourceMappingURL=extension.js.map -------------------------------------------------------------------------------- /out/extension.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"extension.js","sourceRoot":"","sources":["../src/extension.ts"],"names":[],"mappings":";;;AAAA;;;;;;;GAOG;AACH,iCAAiC;AACjC,mCAAsC;AAE/B,MAAM,QAAQ,GAAG,CAAC,OAAgC,EAAE,EAAE;IAC3D,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,oBAAoB,EAAE,mBAAW,CAAC,CAAC;IACtF,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACzC,CAAC,CAAA;AAHY,QAAA,QAAQ,YAGpB"} -------------------------------------------------------------------------------- /out/git_emoji.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const emojis = [ 4 | { 5 | emoji: "✨", 6 | code: "feat", 7 | name: "引入新功能", 8 | description: "新功能" 9 | }, 10 | { 11 | emoji: "🐛", 12 | code: "fix", 13 | name: "修复bug", 14 | description: "bug" 15 | }, 16 | { 17 | emoji: "💄", 18 | code: "style", 19 | name: "更新UI样式文件", 20 | description: "样式" 21 | }, 22 | { 23 | emoji: "🥚", 24 | code: "format", 25 | name: "格式化代码", 26 | description: "格式化" 27 | }, 28 | { 29 | emoji: "📝", 30 | code: "docs", 31 | name: "添加/更新文档", 32 | description: "文档" 33 | }, 34 | { 35 | emoji: "👌", 36 | code: "perf", 37 | name: "提高性能/优化", 38 | description: "优化" 39 | }, 40 | { 41 | emoji: "🎉", 42 | code: "init", 43 | name: "初次提交/初始化项目", 44 | description: "初始化" 45 | }, 46 | { 47 | emoji: "✅", 48 | code: "test", 49 | name: "增加测试代码", 50 | description: "测试" 51 | }, 52 | { 53 | emoji: "🎨", 54 | code: "refactor", 55 | name: "改进代码结构/代码格式", 56 | description: "优化" 57 | }, 58 | { 59 | emoji: "🚑", 60 | code: "patch", 61 | name: "添加重要补丁", 62 | description: "补丁" 63 | }, 64 | { 65 | emoji: "📦", 66 | code: "file", 67 | name: "添加新文件", 68 | description: "新文件" 69 | }, 70 | { 71 | emoji: "🚀", 72 | code: "publish", 73 | name: "发布新版本", 74 | description: "新版本" 75 | }, 76 | { 77 | emoji: "📌", 78 | code: "tag", 79 | name: "发布版本/添加标签", 80 | description: "书签" 81 | }, 82 | { 83 | emoji: "🔧", 84 | code: "config", 85 | name: "修改配置文件", 86 | description: "配置" 87 | }, 88 | { 89 | emoji: "🙈", 90 | code: "git", 91 | name: "添加或修改.gitignore文件", 92 | description: "不可见" 93 | } 94 | ]; 95 | exports.default = emojis; 96 | //# sourceMappingURL=git_emoji.js.map -------------------------------------------------------------------------------- /out/git_emoji.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"git_emoji.js","sourceRoot":"","sources":["../src/git_emoji.ts"],"names":[],"mappings":";;AAcA,MAAM,MAAM,GAAiB;IAC3B;QACE,KAAK,EAAE,GAAG;QACV,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,KAAK;KACnB;IACD;QACE,KAAK,EAAE,IAAI;QACX,IAAI,EAAE,KAAK;QACX,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,KAAK;KACnB;IACD;QACE,KAAK,EAAE,IAAI;QACX,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,IAAI;KAClB;IACD;QACE,KAAK,EAAE,IAAI;QACX,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,KAAK;KACnB;IACD;QACE,KAAK,EAAE,IAAI;QACX,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,IAAI;KAClB;IACD;QACE,KAAK,EAAE,IAAI;QACX,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,IAAI;KAClB;IACD;QACE,KAAK,EAAE,IAAI;QACX,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,KAAK;KACnB;IACD;QACE,KAAK,EAAE,GAAG;QACV,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,IAAI;KAClB;IACD;QACE,KAAK,EAAE,IAAI;QACX,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,IAAI;KAClB;IACD;QACE,KAAK,EAAE,IAAI;QACX,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,IAAI;KAClB;IACD;QACE,KAAK,EAAE,IAAI;QACX,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,KAAK;KACnB;IACD;QACE,KAAK,EAAE,IAAI;QACX,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,KAAK;KACnB;IACD;QACE,KAAK,EAAE,IAAI;QACX,IAAI,EAAE,KAAK;QACX,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,IAAI;KAClB;IACD;QACE,KAAK,EAAE,IAAI;QACX,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,IAAI;KAClB;IACD;QACE,KAAK,EAAE,IAAI;QACX,IAAI,EAAE,KAAK;QACX,IAAI,EAAE,mBAAmB;QACzB,WAAW,EAAE,KAAK;KACnB;CACF,CAAC;AACF,kBAAe,MAAM,CAAC"} -------------------------------------------------------------------------------- /out/test/runTest.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { 3 | function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } 4 | return new (P || (P = Promise))(function (resolve, reject) { 5 | function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } 6 | function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } 7 | function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } 8 | step((generator = generator.apply(thisArg, _arguments || [])).next()); 9 | }); 10 | }; 11 | Object.defineProperty(exports, "__esModule", { value: true }); 12 | const path = require("path"); 13 | const vscode_test_1 = require("vscode-test"); 14 | function main() { 15 | return __awaiter(this, void 0, void 0, function* () { 16 | try { 17 | // The folder containing the Extension Manifest package.json 18 | // Passed to `--extensionDevelopmentPath` 19 | const extensionDevelopmentPath = path.resolve(__dirname, '../../'); 20 | // The path to test runner 21 | // Passed to --extensionTestsPath 22 | const extensionTestsPath = path.resolve(__dirname, './suite/index'); 23 | // Download VS Code, unzip it and run the integration test 24 | yield (0, vscode_test_1.runTests)({ extensionDevelopmentPath, extensionTestsPath }); 25 | } 26 | catch (err) { 27 | console.error('Failed to run tests'); 28 | process.exit(1); 29 | } 30 | }); 31 | } 32 | main(); 33 | //# sourceMappingURL=runTest.js.map -------------------------------------------------------------------------------- /out/test/runTest.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"runTest.js","sourceRoot":"","sources":["../../src/test/runTest.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,6BAA6B;AAE7B,6CAAuC;AAEvC,SAAe,IAAI;;QAClB,IAAI;YACH,4DAA4D;YAC5D,yCAAyC;YACzC,MAAM,wBAAwB,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YAEnE,0BAA0B;YAC1B,iCAAiC;YACjC,MAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;YAEpE,0DAA0D;YAC1D,MAAM,IAAA,sBAAQ,EAAC,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,CAAC,CAAC;SACjE;QAAC,OAAO,GAAG,EAAE;YACb,OAAO,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;YACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SAChB;IACF,CAAC;CAAA;AAED,IAAI,EAAE,CAAC"} -------------------------------------------------------------------------------- /out/test/suite/extension.test.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const assert = require("assert"); 4 | // You can import and use all API from the 'vscode' module 5 | // as well as import your extension to test it 6 | const vscode = require("vscode"); 7 | // import * as myExtension from '../extension'; 8 | suite('Extension Test Suite', () => { 9 | vscode.window.showInformationMessage('Start all tests.'); 10 | test('Sample test', () => { 11 | assert.equal(-1, [1, 2, 3].indexOf(5)); 12 | assert.equal(-1, [1, 2, 3].indexOf(0)); 13 | }); 14 | }); 15 | //# sourceMappingURL=extension.test.js.map -------------------------------------------------------------------------------- /out/test/suite/extension.test.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"extension.test.js","sourceRoot":"","sources":["../../../src/test/suite/extension.test.ts"],"names":[],"mappings":";;AAAA,iCAAiC;AAEjC,0DAA0D;AAC1D,8CAA8C;AAC9C,iCAAiC;AACjC,+CAA+C;AAE/C,KAAK,CAAC,sBAAsB,EAAE,GAAG,EAAE;IAClC,MAAM,CAAC,MAAM,CAAC,sBAAsB,CAAC,kBAAkB,CAAC,CAAC;IAEzD,IAAI,CAAC,aAAa,EAAE,GAAG,EAAE;QACxB,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QACvC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"} -------------------------------------------------------------------------------- /out/test/suite/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.run = void 0; 4 | const path = require("path"); 5 | const Mocha = require("mocha"); 6 | const glob = require("glob"); 7 | function run() { 8 | // Create the mocha test 9 | const mocha = new Mocha({ 10 | ui: 'tdd', 11 | }); 12 | mocha.useColors(true); 13 | const testsRoot = path.resolve(__dirname, '..'); 14 | return new Promise((c, e) => { 15 | glob('**/**.test.js', { cwd: testsRoot }, (err, files) => { 16 | if (err) { 17 | return e(err); 18 | } 19 | // Add files to the test suite 20 | files.forEach((f) => mocha.addFile(path.resolve(testsRoot, f))); 21 | try { 22 | // Run the mocha test 23 | mocha.run((failures) => { 24 | if (failures > 0) { 25 | e(new Error(`${failures} tests failed.`)); 26 | } 27 | else { 28 | c(); 29 | } 30 | }); 31 | } 32 | catch (err) { 33 | e(err); 34 | } 35 | }); 36 | }); 37 | } 38 | exports.run = run; 39 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /out/test/suite/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/test/suite/index.ts"],"names":[],"mappings":";;;AAAA,6BAA6B;AAC7B,+BAA+B;AAC/B,6BAA6B;AAE7B,SAAgB,GAAG;IAClB,wBAAwB;IACxB,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC;QACvB,EAAE,EAAE,KAAK;KACT,CAAC,CAAC;IACH,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAEtB,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAEhD,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAC3B,IAAI,CAAC,eAAe,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,CAAC,GAAQ,EAAE,KAAU,EAAE,EAAE;YAClE,IAAI,GAAG,EAAE;gBACR,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;aACd;YAED,8BAA8B;YAC9B,KAAK,CAAC,OAAO,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAErE,IAAI;gBACH,qBAAqB;gBACrB,KAAK,CAAC,GAAG,CAAC,CAAC,QAAa,EAAE,EAAE;oBAC3B,IAAI,QAAQ,GAAG,CAAC,EAAE;wBACjB,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,QAAQ,gBAAgB,CAAC,CAAC,CAAC;qBAC1C;yBAAM;wBACN,CAAC,EAAE,CAAC;qBACJ;gBACF,CAAC,CAAC,CAAC;aACH;YAAC,OAAO,GAAG,EAAE;gBACb,CAAC,CAAC,GAAG,CAAC,CAAC;aACP;QACF,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC;AAhCD,kBAgCC"} -------------------------------------------------------------------------------- /out/utils.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { 3 | function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } 4 | return new (P || (P = Promise))(function (resolve, reject) { 5 | function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } 6 | function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } 7 | function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } 8 | step((generator = generator.apply(thisArg, _arguments || [])).next()); 9 | }); 10 | }; 11 | Object.defineProperty(exports, "__esModule", { value: true }); 12 | exports.emojiCommit = void 0; 13 | /* 14 | * @Author: Lanrri 15 | * @Email: lanrri@163.com 16 | * @Date: 2023-03-16 14:18:17 17 | * @Description: 一些工具函数 18 | * @LastEditors: wangzhongjie 19 | * @LastEditTime: 2023-03-20 09:57:27 20 | */ 21 | const vscode = require("vscode"); 22 | const DEFAULT_CUSTOM_FORMAT = "${type}${emoji}: "; 23 | const CUSTOM_KEY_REGEX = /\${(\w+)}/g; 24 | const customItems = (emoji, custom_key) => { 25 | return emoji.map((item) => { 26 | const value = custom_key.replace(CUSTOM_KEY_REGEX, (_match, variable) => { 27 | return item[variable]; 28 | }); 29 | return { 30 | value, 31 | label: `${value} ${item.name}`, 32 | description: "[" + item.description + "]", 33 | }; 34 | }); 35 | }; 36 | // 点击小图标进入插件 37 | const getGitExtension = () => { 38 | const vscodeGit = vscode.extensions.getExtension("vscode.git"); 39 | const gitExtension = vscodeGit && vscodeGit.exports; 40 | return gitExtension && gitExtension.getAPI(1); 41 | }; 42 | // 选完填入操作 43 | const prefixCommit = (repository, prefix) => { 44 | const coverInputValue = vscode.workspace 45 | .getConfiguration() 46 | .get("gitCommitLintVscode.coverInputValue"); 47 | if (coverInputValue) { 48 | repository.inputBox.value = `${prefix}`; 49 | //! 不删除是因为不知道为什么要先清空再赋值,所以注释掉了原代码,测试了一下修改后的代码,感觉也没发现什么问题啊 50 | // repository.inputBox.value !== '' 51 | // ? ((repository.inputBox.value = ''), (repository.inputBox.value = `${prefix}${repository.inputBox.value}`)) 52 | // : (repository.inputBox.value = `${prefix}${repository.inputBox.value}`); 53 | } 54 | else { 55 | repository.inputBox.value = `${prefix}${repository.inputBox.value}`; 56 | } 57 | }; 58 | const emojiCommit = (uri) => __awaiter(void 0, void 0, void 0, function* () { 59 | var _a, _b; 60 | const git = getGitExtension(); 61 | if (!git) { 62 | vscode.window.showErrorMessage("无法加载git插件! 请先安装git插件!"); 63 | return; 64 | } 65 | const config = vscode.workspace.getConfiguration("gitCommitLintVscode"); 66 | const custom_format = config.get("customFormat", DEFAULT_CUSTOM_FORMAT); 67 | const custom_type = config.get("customType", []); 68 | const items = customItems(custom_type, custom_format); 69 | const selected = yield vscode.window.showQuickPick(items); 70 | if (!selected) { 71 | return; 72 | } 73 | const { value } = selected; 74 | vscode.commands.executeCommand("workbench.scm.focus"); 75 | if (git.repositories.length === 1) { 76 | const alwaysShowRepositories = vscode.workspace 77 | .getConfiguration() 78 | .get("scm.alwaysShowRepositories"); 79 | // 确保聚焦到输入框,参考 https://github.com/microsoft/vscode/issues/131006#issuecomment-915751155 80 | if (alwaysShowRepositories) { 81 | // 启用了该配置时,ui会有变动,所以向下移动一格再选中 82 | vscode.commands.executeCommand("list.focusFirst"); 83 | vscode.commands.executeCommand("list.focusDown"); 84 | vscode.commands.executeCommand("list.select"); 85 | } 86 | else { 87 | vscode.commands.executeCommand("list.focusFirst"); 88 | vscode.commands.executeCommand("list.select"); 89 | } 90 | prefixCommit(git.repositories[0], value); 91 | return; 92 | } 93 | if (uri) { 94 | const selectedRepository = git.getRepository(uri.rootUri.path); 95 | if (!selectedRepository) { 96 | return; 97 | } 98 | prefixCommit(selectedRepository, value); 99 | const accurateLocating = vscode.workspace 100 | .getConfiguration() 101 | .get("gitCommitLintVscode.accurateLocating"); 102 | if (!accurateLocating) { 103 | return; 104 | } 105 | // 获取在源代码管理存储库的索引值 106 | // @ts-ignore 107 | const repositoryIndex = (_b = (_a = selectedRepository === null || selectedRepository === void 0 ? void 0 : selectedRepository.repository) === null || _a === void 0 ? void 0 : _a.indexGroup) === null || _b === void 0 ? void 0 : _b.t; 108 | if (!repositoryIndex) { 109 | return; 110 | } 111 | // 存在多个存储库时,关闭其他存储库,定位到选择的存储库并聚焦输入框 112 | vscode.commands.executeCommand("list.collapseAll"); 113 | vscode.commands.executeCommand("list.focusFirst"); 114 | for (let i = 0; i < repositoryIndex; i++) { 115 | vscode.commands.executeCommand("list.focusDown"); 116 | } 117 | vscode.commands.executeCommand("list.expand"); 118 | vscode.commands.executeCommand("list.expand"); 119 | vscode.commands.executeCommand("list.select"); 120 | vscode.commands.executeCommand("list.toggleExpand"); 121 | } 122 | else { 123 | for (let repo of git.repositories) { 124 | prefixCommit(repo, value); 125 | } 126 | } 127 | }); 128 | exports.emojiCommit = emojiCommit; 129 | //# sourceMappingURL=utils.js.map -------------------------------------------------------------------------------- /out/utils.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA;;;;;;;GAOG;AACH,iCAAiC;AAIjC,MAAM,qBAAqB,GAAG,mBAAmB,CAAC;AAClD,MAAM,gBAAgB,GAAG,YAAY,CAAC;AAEtC,MAAM,WAAW,GAAG,CAAC,KAAmB,EAAE,UAAkB,EAAE,EAAE;IAC9D,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACxB,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAC9B,gBAAgB,EAChB,CAAC,MAAM,EAAE,QAA0B,EAAE,EAAE;YACrC,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxB,CAAC,CACF,CAAC;QACF,OAAO;YACL,KAAK;YACL,KAAK,EAAE,GAAG,KAAK,IAAI,IAAI,CAAC,IAAI,EAAE;YAC9B,WAAW,EAAE,GAAG,GAAG,IAAI,CAAC,WAAW,GAAG,GAAG;SAC1C,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,YAAY;AACZ,MAAM,eAAe,GAAG,GAAG,EAAE;IAC3B,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,YAAY,CAAe,YAAY,CAAC,CAAC;IAC7E,MAAM,YAAY,GAAG,SAAS,IAAI,SAAS,CAAC,OAAO,CAAC;IACpD,OAAO,YAAY,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAChD,CAAC,CAAC;AAEF,SAAS;AACT,MAAM,YAAY,GAAG,CAAC,UAAsB,EAAE,MAAc,EAAE,EAAE;IAC9D,MAAM,eAAe,GAAG,MAAM,CAAC,SAAS;SACrC,gBAAgB,EAAE;SAClB,GAAG,CAAC,qCAAqC,CAAC,CAAC;IAC9C,IAAI,eAAe,EAAE;QACnB,UAAU,CAAC,QAAQ,CAAC,KAAK,GAAG,GAAG,MAAM,EAAE,CAAC;QACxC,yDAAyD;QACzD,mCAAmC;QACnC,8GAA8G;QAC9G,2EAA2E;KAC5E;SAAM;QACL,UAAU,CAAC,QAAQ,CAAC,KAAK,GAAG,GAAG,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;KACrE;AACH,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,CAAO,GAAgC,EAAE,EAAE;;IAC7D,MAAM,GAAG,GAAG,eAAe,EAAE,CAAC;IAC9B,IAAI,CAAC,GAAG,EAAE;QACR,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,uBAAuB,CAAC,CAAC;QACxD,OAAO;KACR;IAED,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,CAAC;IAExE,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE,qBAAqB,CAAC,CAAC;IACxE,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;IAEjD,MAAM,KAAK,GAAG,WAAW,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IACtD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC1D,IAAI,CAAC,QAAQ,EAAE;QACb,OAAO;KACR;IACD,MAAM,EAAE,KAAK,EAAE,GAAG,QAAQ,CAAC;IAC3B,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,qBAAqB,CAAC,CAAC;IAEtD,IAAI,GAAG,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;QACjC,MAAM,sBAAsB,GAAG,MAAM,CAAC,SAAS;aAC5C,gBAAgB,EAAE;aAClB,GAAG,CAAC,4BAA4B,CAAC,CAAC;QACrC,uFAAuF;QACvF,IAAI,sBAAsB,EAAE;YAC1B,6BAA6B;YAC7B,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;YAClD,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC;YACjD,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;SAC/C;aAAM;YACL,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;YAClD,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;SAC/C;QACD,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACzC,OAAO;KACR;IACD,IAAI,GAAG,EAAE;QACP,MAAM,kBAAkB,GAAG,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/D,IAAI,CAAC,kBAAkB,EAAE;YACvB,OAAO;SACR;QACD,YAAY,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;QACxC,MAAM,gBAAgB,GAAG,MAAM,CAAC,SAAS;aACtC,gBAAgB,EAAE;aAClB,GAAG,CAAC,sCAAsC,CAAC,CAAC;QAC/C,IAAI,CAAC,gBAAgB,EAAE;YACrB,OAAO;SACR;QACD,kBAAkB;QAClB,aAAa;QACb,MAAM,eAAe,GAAG,MAAA,MAAA,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,CAAE,UAAU,0CAAE,UAAU,0CAAE,CAAC,CAAC;QACtE,IAAI,CAAC,eAAe,EAAE;YACpB,OAAO;SACR;QACD,mCAAmC;QACnC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAC;QACnD,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;QAClD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,EAAE,CAAC,EAAE,EAAE;YACxC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC;SAClD;QACD,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;QAC9C,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;QAC9C,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;QAC9C,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAC;KACrD;SAAM;QACL,KAAK,IAAI,IAAI,IAAI,GAAG,CAAC,YAAY,EAAE;YACjC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;SAC3B;KACF;AACH,CAAC,CAAA,CAAC;AAEO,kCAAW"} -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "git-commit-lint-vscode", 3 | "version": "1.5.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@babel/code-frame": { 8 | "version": "7.18.6", 9 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", 10 | "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", 11 | "dev": true, 12 | "requires": { 13 | "@babel/highlight": "^7.18.6" 14 | } 15 | }, 16 | "@babel/helper-validator-identifier": { 17 | "version": "7.19.1", 18 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", 19 | "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", 20 | "dev": true 21 | }, 22 | "@babel/highlight": { 23 | "version": "7.18.6", 24 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", 25 | "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", 26 | "dev": true, 27 | "requires": { 28 | "@babel/helper-validator-identifier": "^7.18.6", 29 | "chalk": "^2.0.0", 30 | "js-tokens": "^4.0.0" 31 | }, 32 | "dependencies": { 33 | "ansi-styles": { 34 | "version": "3.2.1", 35 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 36 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 37 | "dev": true, 38 | "requires": { 39 | "color-convert": "^1.9.0" 40 | } 41 | }, 42 | "chalk": { 43 | "version": "2.4.2", 44 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 45 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 46 | "dev": true, 47 | "requires": { 48 | "ansi-styles": "^3.2.1", 49 | "escape-string-regexp": "^1.0.5", 50 | "supports-color": "^5.3.0" 51 | } 52 | }, 53 | "color-convert": { 54 | "version": "1.9.3", 55 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 56 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 57 | "dev": true, 58 | "requires": { 59 | "color-name": "1.1.3" 60 | } 61 | }, 62 | "color-name": { 63 | "version": "1.1.3", 64 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 65 | "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", 66 | "dev": true 67 | }, 68 | "escape-string-regexp": { 69 | "version": "1.0.5", 70 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 71 | "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", 72 | "dev": true 73 | }, 74 | "has-flag": { 75 | "version": "3.0.0", 76 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 77 | "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", 78 | "dev": true 79 | }, 80 | "supports-color": { 81 | "version": "5.5.0", 82 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 83 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 84 | "dev": true, 85 | "requires": { 86 | "has-flag": "^3.0.0" 87 | } 88 | } 89 | } 90 | }, 91 | "@tootallnate/once": { 92 | "version": "1.1.2", 93 | "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", 94 | "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", 95 | "dev": true 96 | }, 97 | "@types/mocha": { 98 | "version": "10.0.1", 99 | "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.1.tgz", 100 | "integrity": "sha512-/fvYntiO1GeICvqbQ3doGDIP97vWmvFt83GKguJ6prmQM2iXZfFcq6YE8KteFyRtX2/h5Hf91BYvPodJKFYv5Q==", 101 | "dev": true 102 | }, 103 | "@types/node": { 104 | "version": "18.14.6", 105 | "resolved": "https://registry.npmjs.org/@types/node/-/node-18.14.6.tgz", 106 | "integrity": "sha512-93+VvleD3mXwlLI/xASjw0FzKcwzl3OdTCzm1LaRfqgS21gfFtK3zDXM5Op9TeeMsJVOaJ2VRDpT9q4Y3d0AvA==", 107 | "dev": true 108 | }, 109 | "@types/vscode": { 110 | "version": "1.76.0", 111 | "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.76.0.tgz", 112 | "integrity": "sha512-CQcY3+Fe5hNewHnOEAVYj4dd1do/QHliXaknAEYSXx2KEHUzFibDZSKptCon+HPgK55xx20pR+PBJjf0MomnBA==", 113 | "dev": true 114 | }, 115 | "@vscode/test-electron": { 116 | "version": "2.3.0", 117 | "resolved": "https://registry.npmjs.org/@vscode/test-electron/-/test-electron-2.3.0.tgz", 118 | "integrity": "sha512-fwzA9RtazH1GT/sckYlbxu6t5e4VaMXwCVtyLv4UAG0hP6NTfnMaaG25XCfWqlVwFhBMcQXHBCy5dmz2eLUnkw==", 119 | "dev": true, 120 | "requires": { 121 | "http-proxy-agent": "^4.0.1", 122 | "https-proxy-agent": "^5.0.0", 123 | "jszip": "^3.10.1", 124 | "semver": "^7.3.8" 125 | } 126 | }, 127 | "agent-base": { 128 | "version": "6.0.2", 129 | "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", 130 | "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", 131 | "dev": true, 132 | "requires": { 133 | "debug": "4" 134 | } 135 | }, 136 | "ansi-colors": { 137 | "version": "4.1.1", 138 | "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", 139 | "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", 140 | "dev": true 141 | }, 142 | "ansi-regex": { 143 | "version": "5.0.1", 144 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 145 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 146 | "dev": true 147 | }, 148 | "ansi-styles": { 149 | "version": "4.3.0", 150 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 151 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 152 | "dev": true, 153 | "requires": { 154 | "color-convert": "^2.0.1" 155 | } 156 | }, 157 | "anymatch": { 158 | "version": "3.1.3", 159 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", 160 | "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", 161 | "dev": true, 162 | "requires": { 163 | "normalize-path": "^3.0.0", 164 | "picomatch": "^2.0.4" 165 | } 166 | }, 167 | "argparse": { 168 | "version": "2.0.1", 169 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", 170 | "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", 171 | "dev": true 172 | }, 173 | "balanced-match": { 174 | "version": "1.0.2", 175 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 176 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 177 | "dev": true 178 | }, 179 | "binary-extensions": { 180 | "version": "2.2.0", 181 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", 182 | "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", 183 | "dev": true 184 | }, 185 | "braces": { 186 | "version": "3.0.2", 187 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 188 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 189 | "dev": true, 190 | "requires": { 191 | "fill-range": "^7.0.1" 192 | } 193 | }, 194 | "browser-stdout": { 195 | "version": "1.3.1", 196 | "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", 197 | "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", 198 | "dev": true 199 | }, 200 | "builtin-modules": { 201 | "version": "1.1.1", 202 | "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", 203 | "integrity": "sha512-wxXCdllwGhI2kCC0MnvTGYTMvnVZTvqgypkiTI8Pa5tcz2i6VqsqwYGgqwXji+4RgCzms6EajE4IxiUH6HH8nQ==", 204 | "dev": true 205 | }, 206 | "camelcase": { 207 | "version": "6.3.0", 208 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", 209 | "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", 210 | "dev": true 211 | }, 212 | "chalk": { 213 | "version": "4.1.2", 214 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 215 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 216 | "dev": true, 217 | "requires": { 218 | "ansi-styles": "^4.1.0", 219 | "supports-color": "^7.1.0" 220 | }, 221 | "dependencies": { 222 | "supports-color": { 223 | "version": "7.2.0", 224 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 225 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 226 | "dev": true, 227 | "requires": { 228 | "has-flag": "^4.0.0" 229 | } 230 | } 231 | } 232 | }, 233 | "chokidar": { 234 | "version": "3.5.3", 235 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", 236 | "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", 237 | "dev": true, 238 | "requires": { 239 | "anymatch": "~3.1.2", 240 | "braces": "~3.0.2", 241 | "fsevents": "~2.3.2", 242 | "glob-parent": "~5.1.2", 243 | "is-binary-path": "~2.1.0", 244 | "is-glob": "~4.0.1", 245 | "normalize-path": "~3.0.0", 246 | "readdirp": "~3.6.0" 247 | } 248 | }, 249 | "cliui": { 250 | "version": "7.0.4", 251 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", 252 | "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", 253 | "dev": true, 254 | "requires": { 255 | "string-width": "^4.2.0", 256 | "strip-ansi": "^6.0.0", 257 | "wrap-ansi": "^7.0.0" 258 | } 259 | }, 260 | "color-convert": { 261 | "version": "2.0.1", 262 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 263 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 264 | "dev": true, 265 | "requires": { 266 | "color-name": "~1.1.4" 267 | } 268 | }, 269 | "color-name": { 270 | "version": "1.1.4", 271 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 272 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 273 | "dev": true 274 | }, 275 | "commander": { 276 | "version": "2.20.3", 277 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", 278 | "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", 279 | "dev": true 280 | }, 281 | "concat-map": { 282 | "version": "0.0.1", 283 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 284 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", 285 | "dev": true 286 | }, 287 | "core-util-is": { 288 | "version": "1.0.3", 289 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", 290 | "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", 291 | "dev": true 292 | }, 293 | "debug": { 294 | "version": "4.3.4", 295 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 296 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 297 | "dev": true, 298 | "requires": { 299 | "ms": "2.1.2" 300 | } 301 | }, 302 | "decamelize": { 303 | "version": "4.0.0", 304 | "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", 305 | "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", 306 | "dev": true 307 | }, 308 | "diff": { 309 | "version": "5.0.0", 310 | "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", 311 | "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", 312 | "dev": true 313 | }, 314 | "emoji-regex": { 315 | "version": "8.0.0", 316 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 317 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 318 | "dev": true 319 | }, 320 | "escalade": { 321 | "version": "3.1.1", 322 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", 323 | "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", 324 | "dev": true 325 | }, 326 | "escape-string-regexp": { 327 | "version": "4.0.0", 328 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", 329 | "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", 330 | "dev": true 331 | }, 332 | "esprima": { 333 | "version": "4.0.1", 334 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", 335 | "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", 336 | "dev": true 337 | }, 338 | "fill-range": { 339 | "version": "7.0.1", 340 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 341 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 342 | "dev": true, 343 | "requires": { 344 | "to-regex-range": "^5.0.1" 345 | } 346 | }, 347 | "find-up": { 348 | "version": "5.0.0", 349 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", 350 | "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", 351 | "dev": true, 352 | "requires": { 353 | "locate-path": "^6.0.0", 354 | "path-exists": "^4.0.0" 355 | } 356 | }, 357 | "flat": { 358 | "version": "5.0.2", 359 | "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", 360 | "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", 361 | "dev": true 362 | }, 363 | "fs.realpath": { 364 | "version": "1.0.0", 365 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 366 | "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", 367 | "dev": true 368 | }, 369 | "fsevents": { 370 | "version": "2.3.2", 371 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 372 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 373 | "dev": true, 374 | "optional": true 375 | }, 376 | "function-bind": { 377 | "version": "1.1.1", 378 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 379 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 380 | "dev": true 381 | }, 382 | "get-caller-file": { 383 | "version": "2.0.5", 384 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", 385 | "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", 386 | "dev": true 387 | }, 388 | "glob-parent": { 389 | "version": "5.1.2", 390 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 391 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 392 | "dev": true, 393 | "requires": { 394 | "is-glob": "^4.0.1" 395 | } 396 | }, 397 | "has": { 398 | "version": "1.0.3", 399 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 400 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 401 | "dev": true, 402 | "requires": { 403 | "function-bind": "^1.1.1" 404 | } 405 | }, 406 | "has-flag": { 407 | "version": "4.0.0", 408 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 409 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 410 | "dev": true 411 | }, 412 | "he": { 413 | "version": "1.2.0", 414 | "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", 415 | "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", 416 | "dev": true 417 | }, 418 | "http-proxy-agent": { 419 | "version": "4.0.1", 420 | "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", 421 | "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", 422 | "dev": true, 423 | "requires": { 424 | "@tootallnate/once": "1", 425 | "agent-base": "6", 426 | "debug": "4" 427 | } 428 | }, 429 | "https-proxy-agent": { 430 | "version": "5.0.1", 431 | "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", 432 | "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", 433 | "dev": true, 434 | "requires": { 435 | "agent-base": "6", 436 | "debug": "4" 437 | } 438 | }, 439 | "immediate": { 440 | "version": "3.0.6", 441 | "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", 442 | "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", 443 | "dev": true 444 | }, 445 | "inflight": { 446 | "version": "1.0.6", 447 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 448 | "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", 449 | "dev": true, 450 | "requires": { 451 | "once": "^1.3.0", 452 | "wrappy": "1" 453 | } 454 | }, 455 | "inherits": { 456 | "version": "2.0.4", 457 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 458 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 459 | "dev": true 460 | }, 461 | "is-binary-path": { 462 | "version": "2.1.0", 463 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 464 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 465 | "dev": true, 466 | "requires": { 467 | "binary-extensions": "^2.0.0" 468 | } 469 | }, 470 | "is-core-module": { 471 | "version": "2.11.0", 472 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", 473 | "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", 474 | "dev": true, 475 | "requires": { 476 | "has": "^1.0.3" 477 | } 478 | }, 479 | "is-extglob": { 480 | "version": "2.1.1", 481 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 482 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", 483 | "dev": true 484 | }, 485 | "is-fullwidth-code-point": { 486 | "version": "3.0.0", 487 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 488 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 489 | "dev": true 490 | }, 491 | "is-glob": { 492 | "version": "4.0.3", 493 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 494 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 495 | "dev": true, 496 | "requires": { 497 | "is-extglob": "^2.1.1" 498 | } 499 | }, 500 | "is-number": { 501 | "version": "7.0.0", 502 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 503 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 504 | "dev": true 505 | }, 506 | "is-plain-obj": { 507 | "version": "2.1.0", 508 | "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", 509 | "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", 510 | "dev": true 511 | }, 512 | "is-unicode-supported": { 513 | "version": "0.1.0", 514 | "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", 515 | "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", 516 | "dev": true 517 | }, 518 | "isarray": { 519 | "version": "1.0.0", 520 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 521 | "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", 522 | "dev": true 523 | }, 524 | "js-tokens": { 525 | "version": "4.0.0", 526 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 527 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", 528 | "dev": true 529 | }, 530 | "js-yaml": { 531 | "version": "4.1.0", 532 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", 533 | "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", 534 | "dev": true, 535 | "requires": { 536 | "argparse": "^2.0.1" 537 | } 538 | }, 539 | "jszip": { 540 | "version": "3.10.1", 541 | "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", 542 | "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", 543 | "dev": true, 544 | "requires": { 545 | "lie": "~3.3.0", 546 | "pako": "~1.0.2", 547 | "readable-stream": "~2.3.6", 548 | "setimmediate": "^1.0.5" 549 | } 550 | }, 551 | "lie": { 552 | "version": "3.3.0", 553 | "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", 554 | "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", 555 | "dev": true, 556 | "requires": { 557 | "immediate": "~3.0.5" 558 | } 559 | }, 560 | "locate-path": { 561 | "version": "6.0.0", 562 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", 563 | "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", 564 | "dev": true, 565 | "requires": { 566 | "p-locate": "^5.0.0" 567 | } 568 | }, 569 | "log-symbols": { 570 | "version": "4.1.0", 571 | "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", 572 | "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", 573 | "dev": true, 574 | "requires": { 575 | "chalk": "^4.1.0", 576 | "is-unicode-supported": "^0.1.0" 577 | } 578 | }, 579 | "lru-cache": { 580 | "version": "6.0.0", 581 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", 582 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", 583 | "dev": true, 584 | "requires": { 585 | "yallist": "^4.0.0" 586 | } 587 | }, 588 | "minimist": { 589 | "version": "1.2.8", 590 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", 591 | "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", 592 | "dev": true 593 | }, 594 | "mkdirp": { 595 | "version": "0.5.6", 596 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", 597 | "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", 598 | "dev": true, 599 | "requires": { 600 | "minimist": "^1.2.6" 601 | } 602 | }, 603 | "mocha": { 604 | "version": "10.2.0", 605 | "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", 606 | "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", 607 | "dev": true, 608 | "requires": { 609 | "ansi-colors": "4.1.1", 610 | "browser-stdout": "1.3.1", 611 | "chokidar": "3.5.3", 612 | "debug": "4.3.4", 613 | "diff": "5.0.0", 614 | "escape-string-regexp": "4.0.0", 615 | "find-up": "5.0.0", 616 | "glob": "7.2.0", 617 | "he": "1.2.0", 618 | "js-yaml": "4.1.0", 619 | "log-symbols": "4.1.0", 620 | "minimatch": "5.0.1", 621 | "ms": "2.1.3", 622 | "nanoid": "3.3.3", 623 | "serialize-javascript": "6.0.0", 624 | "strip-json-comments": "3.1.1", 625 | "supports-color": "8.1.1", 626 | "workerpool": "6.2.1", 627 | "yargs": "16.2.0", 628 | "yargs-parser": "20.2.4", 629 | "yargs-unparser": "2.0.0" 630 | }, 631 | "dependencies": { 632 | "brace-expansion": { 633 | "version": "1.1.11", 634 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 635 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 636 | "dev": true, 637 | "requires": { 638 | "balanced-match": "^1.0.0", 639 | "concat-map": "0.0.1" 640 | } 641 | }, 642 | "glob": { 643 | "version": "7.2.0", 644 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", 645 | "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", 646 | "dev": true, 647 | "requires": { 648 | "fs.realpath": "^1.0.0", 649 | "inflight": "^1.0.4", 650 | "inherits": "2", 651 | "minimatch": "^3.0.4", 652 | "once": "^1.3.0", 653 | "path-is-absolute": "^1.0.0" 654 | }, 655 | "dependencies": { 656 | "minimatch": { 657 | "version": "3.1.2", 658 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 659 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 660 | "dev": true, 661 | "requires": { 662 | "brace-expansion": "^1.1.7" 663 | } 664 | } 665 | } 666 | }, 667 | "minimatch": { 668 | "version": "5.0.1", 669 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", 670 | "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", 671 | "dev": true, 672 | "requires": { 673 | "brace-expansion": "^2.0.1" 674 | }, 675 | "dependencies": { 676 | "brace-expansion": { 677 | "version": "2.0.1", 678 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", 679 | "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", 680 | "dev": true, 681 | "requires": { 682 | "balanced-match": "^1.0.0" 683 | } 684 | } 685 | } 686 | }, 687 | "ms": { 688 | "version": "2.1.3", 689 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 690 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", 691 | "dev": true 692 | } 693 | } 694 | }, 695 | "ms": { 696 | "version": "2.1.2", 697 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 698 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 699 | "dev": true 700 | }, 701 | "nanoid": { 702 | "version": "3.3.3", 703 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", 704 | "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", 705 | "dev": true 706 | }, 707 | "normalize-path": { 708 | "version": "3.0.0", 709 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 710 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 711 | "dev": true 712 | }, 713 | "once": { 714 | "version": "1.4.0", 715 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 716 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 717 | "dev": true, 718 | "requires": { 719 | "wrappy": "1" 720 | } 721 | }, 722 | "p-limit": { 723 | "version": "3.1.0", 724 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", 725 | "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", 726 | "dev": true, 727 | "requires": { 728 | "yocto-queue": "^0.1.0" 729 | } 730 | }, 731 | "p-locate": { 732 | "version": "5.0.0", 733 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", 734 | "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", 735 | "dev": true, 736 | "requires": { 737 | "p-limit": "^3.0.2" 738 | } 739 | }, 740 | "pako": { 741 | "version": "1.0.11", 742 | "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", 743 | "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", 744 | "dev": true 745 | }, 746 | "path-exists": { 747 | "version": "4.0.0", 748 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 749 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", 750 | "dev": true 751 | }, 752 | "path-is-absolute": { 753 | "version": "1.0.1", 754 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 755 | "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", 756 | "dev": true 757 | }, 758 | "path-parse": { 759 | "version": "1.0.7", 760 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 761 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 762 | "dev": true 763 | }, 764 | "picomatch": { 765 | "version": "2.3.1", 766 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 767 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 768 | "dev": true 769 | }, 770 | "process-nextick-args": { 771 | "version": "2.0.1", 772 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", 773 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", 774 | "dev": true 775 | }, 776 | "randombytes": { 777 | "version": "2.1.0", 778 | "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", 779 | "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", 780 | "dev": true, 781 | "requires": { 782 | "safe-buffer": "^5.1.0" 783 | } 784 | }, 785 | "readable-stream": { 786 | "version": "2.3.8", 787 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", 788 | "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", 789 | "dev": true, 790 | "requires": { 791 | "core-util-is": "~1.0.0", 792 | "inherits": "~2.0.3", 793 | "isarray": "~1.0.0", 794 | "process-nextick-args": "~2.0.0", 795 | "safe-buffer": "~5.1.1", 796 | "string_decoder": "~1.1.1", 797 | "util-deprecate": "~1.0.1" 798 | } 799 | }, 800 | "readdirp": { 801 | "version": "3.6.0", 802 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", 803 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", 804 | "dev": true, 805 | "requires": { 806 | "picomatch": "^2.2.1" 807 | } 808 | }, 809 | "require-directory": { 810 | "version": "2.1.1", 811 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", 812 | "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", 813 | "dev": true 814 | }, 815 | "resolve": { 816 | "version": "1.22.1", 817 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", 818 | "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", 819 | "dev": true, 820 | "requires": { 821 | "is-core-module": "^2.9.0", 822 | "path-parse": "^1.0.7", 823 | "supports-preserve-symlinks-flag": "^1.0.0" 824 | } 825 | }, 826 | "safe-buffer": { 827 | "version": "5.1.2", 828 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 829 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", 830 | "dev": true 831 | }, 832 | "semver": { 833 | "version": "7.3.8", 834 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", 835 | "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", 836 | "dev": true, 837 | "requires": { 838 | "lru-cache": "^6.0.0" 839 | } 840 | }, 841 | "serialize-javascript": { 842 | "version": "6.0.0", 843 | "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", 844 | "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", 845 | "dev": true, 846 | "requires": { 847 | "randombytes": "^2.1.0" 848 | } 849 | }, 850 | "setimmediate": { 851 | "version": "1.0.5", 852 | "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", 853 | "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", 854 | "dev": true 855 | }, 856 | "sprintf-js": { 857 | "version": "1.0.3", 858 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", 859 | "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", 860 | "dev": true 861 | }, 862 | "string-width": { 863 | "version": "4.2.3", 864 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 865 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 866 | "dev": true, 867 | "requires": { 868 | "emoji-regex": "^8.0.0", 869 | "is-fullwidth-code-point": "^3.0.0", 870 | "strip-ansi": "^6.0.1" 871 | } 872 | }, 873 | "string_decoder": { 874 | "version": "1.1.1", 875 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 876 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 877 | "dev": true, 878 | "requires": { 879 | "safe-buffer": "~5.1.0" 880 | } 881 | }, 882 | "strip-ansi": { 883 | "version": "6.0.1", 884 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 885 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 886 | "dev": true, 887 | "requires": { 888 | "ansi-regex": "^5.0.1" 889 | } 890 | }, 891 | "strip-json-comments": { 892 | "version": "3.1.1", 893 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", 894 | "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", 895 | "dev": true 896 | }, 897 | "supports-color": { 898 | "version": "8.1.1", 899 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", 900 | "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", 901 | "dev": true, 902 | "requires": { 903 | "has-flag": "^4.0.0" 904 | } 905 | }, 906 | "supports-preserve-symlinks-flag": { 907 | "version": "1.0.0", 908 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", 909 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", 910 | "dev": true 911 | }, 912 | "to-regex-range": { 913 | "version": "5.0.1", 914 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 915 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 916 | "dev": true, 917 | "requires": { 918 | "is-number": "^7.0.0" 919 | } 920 | }, 921 | "tslib": { 922 | "version": "1.14.1", 923 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", 924 | "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", 925 | "dev": true 926 | }, 927 | "tslint": { 928 | "version": "6.1.3", 929 | "resolved": "https://registry.npmjs.org/tslint/-/tslint-6.1.3.tgz", 930 | "integrity": "sha512-IbR4nkT96EQOvKE2PW/djGz8iGNeJ4rF2mBfiYaR/nvUWYKJhLwimoJKgjIFEIDibBtOevj7BqCRL4oHeWWUCg==", 931 | "dev": true, 932 | "requires": { 933 | "@babel/code-frame": "^7.0.0", 934 | "builtin-modules": "^1.1.1", 935 | "chalk": "^2.3.0", 936 | "commander": "^2.12.1", 937 | "diff": "^4.0.1", 938 | "glob": "^7.1.1", 939 | "js-yaml": "^3.13.1", 940 | "minimatch": "^3.0.4", 941 | "mkdirp": "^0.5.3", 942 | "resolve": "^1.3.2", 943 | "semver": "^5.3.0", 944 | "tslib": "^1.13.0", 945 | "tsutils": "^2.29.0" 946 | }, 947 | "dependencies": { 948 | "ansi-styles": { 949 | "version": "3.2.1", 950 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 951 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 952 | "dev": true, 953 | "requires": { 954 | "color-convert": "^1.9.0" 955 | } 956 | }, 957 | "argparse": { 958 | "version": "1.0.10", 959 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", 960 | "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", 961 | "dev": true, 962 | "requires": { 963 | "sprintf-js": "~1.0.2" 964 | } 965 | }, 966 | "brace-expansion": { 967 | "version": "1.1.11", 968 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 969 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 970 | "dev": true, 971 | "requires": { 972 | "balanced-match": "^1.0.0", 973 | "concat-map": "0.0.1" 974 | } 975 | }, 976 | "chalk": { 977 | "version": "2.4.2", 978 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 979 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 980 | "dev": true, 981 | "requires": { 982 | "ansi-styles": "^3.2.1", 983 | "escape-string-regexp": "^1.0.5", 984 | "supports-color": "^5.3.0" 985 | } 986 | }, 987 | "color-convert": { 988 | "version": "1.9.3", 989 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 990 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 991 | "dev": true, 992 | "requires": { 993 | "color-name": "1.1.3" 994 | } 995 | }, 996 | "color-name": { 997 | "version": "1.1.3", 998 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 999 | "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", 1000 | "dev": true 1001 | }, 1002 | "diff": { 1003 | "version": "4.0.2", 1004 | "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", 1005 | "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", 1006 | "dev": true 1007 | }, 1008 | "escape-string-regexp": { 1009 | "version": "1.0.5", 1010 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 1011 | "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", 1012 | "dev": true 1013 | }, 1014 | "glob": { 1015 | "version": "7.2.3", 1016 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", 1017 | "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", 1018 | "dev": true, 1019 | "requires": { 1020 | "fs.realpath": "^1.0.0", 1021 | "inflight": "^1.0.4", 1022 | "inherits": "2", 1023 | "minimatch": "^3.1.1", 1024 | "once": "^1.3.0", 1025 | "path-is-absolute": "^1.0.0" 1026 | } 1027 | }, 1028 | "has-flag": { 1029 | "version": "3.0.0", 1030 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 1031 | "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", 1032 | "dev": true 1033 | }, 1034 | "js-yaml": { 1035 | "version": "3.14.1", 1036 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", 1037 | "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", 1038 | "dev": true, 1039 | "requires": { 1040 | "argparse": "^1.0.7", 1041 | "esprima": "^4.0.0" 1042 | } 1043 | }, 1044 | "minimatch": { 1045 | "version": "3.1.2", 1046 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 1047 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 1048 | "dev": true, 1049 | "requires": { 1050 | "brace-expansion": "^1.1.7" 1051 | } 1052 | }, 1053 | "semver": { 1054 | "version": "5.7.1", 1055 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 1056 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", 1057 | "dev": true 1058 | }, 1059 | "supports-color": { 1060 | "version": "5.5.0", 1061 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 1062 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 1063 | "dev": true, 1064 | "requires": { 1065 | "has-flag": "^3.0.0" 1066 | } 1067 | } 1068 | } 1069 | }, 1070 | "tsutils": { 1071 | "version": "2.29.0", 1072 | "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", 1073 | "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", 1074 | "dev": true, 1075 | "requires": { 1076 | "tslib": "^1.8.1" 1077 | } 1078 | }, 1079 | "typescript": { 1080 | "version": "4.9.5", 1081 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", 1082 | "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", 1083 | "dev": true 1084 | }, 1085 | "util-deprecate": { 1086 | "version": "1.0.2", 1087 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 1088 | "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", 1089 | "dev": true 1090 | }, 1091 | "workerpool": { 1092 | "version": "6.2.1", 1093 | "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", 1094 | "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", 1095 | "dev": true 1096 | }, 1097 | "wrap-ansi": { 1098 | "version": "7.0.0", 1099 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", 1100 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", 1101 | "dev": true, 1102 | "requires": { 1103 | "ansi-styles": "^4.0.0", 1104 | "string-width": "^4.1.0", 1105 | "strip-ansi": "^6.0.0" 1106 | } 1107 | }, 1108 | "wrappy": { 1109 | "version": "1.0.2", 1110 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 1111 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", 1112 | "dev": true 1113 | }, 1114 | "y18n": { 1115 | "version": "5.0.8", 1116 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", 1117 | "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", 1118 | "dev": true 1119 | }, 1120 | "yallist": { 1121 | "version": "4.0.0", 1122 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 1123 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", 1124 | "dev": true 1125 | }, 1126 | "yargs": { 1127 | "version": "16.2.0", 1128 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", 1129 | "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", 1130 | "dev": true, 1131 | "requires": { 1132 | "cliui": "^7.0.2", 1133 | "escalade": "^3.1.1", 1134 | "get-caller-file": "^2.0.5", 1135 | "require-directory": "^2.1.1", 1136 | "string-width": "^4.2.0", 1137 | "y18n": "^5.0.5", 1138 | "yargs-parser": "^20.2.2" 1139 | } 1140 | }, 1141 | "yargs-parser": { 1142 | "version": "20.2.4", 1143 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", 1144 | "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", 1145 | "dev": true 1146 | }, 1147 | "yargs-unparser": { 1148 | "version": "2.0.0", 1149 | "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", 1150 | "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", 1151 | "dev": true, 1152 | "requires": { 1153 | "camelcase": "^6.0.0", 1154 | "decamelize": "^4.0.0", 1155 | "flat": "^5.0.2", 1156 | "is-plain-obj": "^2.1.0" 1157 | } 1158 | }, 1159 | "yocto-queue": { 1160 | "version": "0.1.0", 1161 | "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", 1162 | "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", 1163 | "dev": true 1164 | } 1165 | } 1166 | } 1167 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "git-commit-lint-vscode", 3 | "displayName": "git-commit-lint-vscode", 4 | "description": "git提交规范", 5 | "version": "2.2.0", 6 | "publisher": "UvDream", 7 | "engines": { 8 | "vscode": "^1.76.0" 9 | }, 10 | "categories": [ 11 | "Other" 12 | ], 13 | "license": "MIT", 14 | "homepage": "https://github.com/UvDream/git-commit-lint-vscode/blob/master/README.md", 15 | "bugs": { 16 | "url": "https://github.com/UvDream/git-commit-lint-vscode/issues" 17 | }, 18 | "repository": { 19 | "type": "git", 20 | "url": "https://github.com/UvDream/git-commit-lint-vscode" 21 | }, 22 | "keywords": [ 23 | "git", 24 | "emoji", 25 | "lint" 26 | ], 27 | "icon": "static/logo.png", 28 | "activationEvents": [], 29 | "main": "./out/extension.js", 30 | "contributes": { 31 | "configuration": { 32 | "title": "git-commit-lint-vscode", 33 | "properties": { 34 | "gitCommitLintVscode.customFormat": { 35 | "type": "string", 36 | "default": "${type}${emoji}: ", 37 | "description": "自定义 git 提交格式(默认格式: '${type}${emoji}:" 38 | }, 39 | "gitCommitLintVscode.customType": { 40 | "type": "array", 41 | "default": [ 42 | { 43 | "emoji": "✨", 44 | "type": "feat", 45 | "name": "引入新功能", 46 | "description": "新功能" 47 | }, 48 | { 49 | "emoji": "🐛", 50 | "type": "fix", 51 | "name": "修复bug", 52 | "description": "bug" 53 | }, 54 | { 55 | "emoji": "💄", 56 | "type": "style", 57 | "name": "更新UI样式文件", 58 | "description": "样式" 59 | }, 60 | { 61 | "emoji": "🥚", 62 | "type": "format", 63 | "name": "格式化代码", 64 | "description": "格式化" 65 | }, 66 | { 67 | "emoji": "📝", 68 | "type": "docs", 69 | "name": "添加/更新文档", 70 | "description": "文档" 71 | }, 72 | { 73 | "emoji": "👌", 74 | "type": "perf", 75 | "name": "提高性能/优化", 76 | "description": "优化" 77 | }, 78 | { 79 | "emoji": "🎉", 80 | "type": "init", 81 | "name": "初次提交/初始化项目", 82 | "description": "初始化" 83 | }, 84 | { 85 | "emoji": "✅", 86 | "type": "test", 87 | "name": "增加测试代码", 88 | "description": "测试" 89 | }, 90 | { 91 | "emoji": "🎨", 92 | "type": "refactor", 93 | "name": "改进代码结构/代码格式", 94 | "description": "优化" 95 | }, 96 | { 97 | "emoji": "🚑", 98 | "type": "patch", 99 | "name": "添加重要补丁", 100 | "description": "补丁" 101 | }, 102 | { 103 | "emoji": "📦", 104 | "type": "file", 105 | "name": "添加新文件", 106 | "description": "新文件" 107 | }, 108 | { 109 | "emoji": "🚀", 110 | "type": "publish", 111 | "name": "发布新版本", 112 | "description": "新版本" 113 | }, 114 | { 115 | "emoji": "📌", 116 | "type": "tag", 117 | "name": "发布版本/添加标签", 118 | "description": "书签" 119 | }, 120 | { 121 | "emoji": "🔧", 122 | "type": "config", 123 | "name": "修改配置文件", 124 | "description": "配置" 125 | }, 126 | { 127 | "emoji": "🙈", 128 | "type": "git", 129 | "name": "添加或修改.gitignore文件", 130 | "description": "不可见" 131 | } 132 | ], 133 | "additionalProperties": true, 134 | "description": "自定义 git 提交类型" 135 | }, 136 | "gitCommitLintVscode.coverInputValue": { 137 | "type": "boolean", 138 | "default": true, 139 | "description": "是否覆盖提交信息" 140 | }, 141 | "gitCommitLintVscode.accurateLocating": { 142 | "type": "boolean", 143 | "default": false, 144 | "description": "当存在多个存储库时,是否精确定位到选定存储库的输入框。注:该功能在多数情况下可以正常运行,只有当你的源代码管理存储库存在多个存储库,如只选择部分存储库或顺序错误时,就会选中错误的输入框。" 145 | } 146 | } 147 | }, 148 | "commands": [ 149 | { 150 | "command": "extension.gitEmoji", 151 | "title": "git emoji commit message", 152 | "icon": { 153 | "dark": "static/icon.svg", 154 | "light": "static/icon_light.svg" 155 | } 156 | }, 157 | { 158 | "command": "extension.switching", 159 | "title": "git commit lint switch1" 160 | } 161 | ], 162 | "menus": { 163 | "scm/title": [ 164 | { 165 | "when": "scmProvider == git", 166 | "command": "extension.gitEmoji", 167 | "group": "navigation" 168 | } 169 | ] 170 | } 171 | }, 172 | "scripts": { 173 | "pub": "vsce publish", 174 | "vscode:prepublish": "yarn run compile", 175 | "compile": "tsc -p ./", 176 | "watch": "tsc -watch -p ./", 177 | "pretest": "yarn run compile", 178 | "test": "node ./out/test/runTest.js" 179 | }, 180 | "devDependencies": { 181 | "@types/mocha": "^10.0.1", 182 | "@types/node": "^18.14.6", 183 | "@types/vscode": "^1.76.0", 184 | "mocha": "^10.2.0", 185 | "tslint": "^6.1.3", 186 | "typescript": "^4.9.5", 187 | "@vscode/test-electron": "^2.3.0" 188 | } 189 | } -------------------------------------------------------------------------------- /src/extension.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * @Author: wangzhongjie 3 | * @Date: 2020-01-17 19:47:44 4 | * @LastEditors: Lanrri 5 | * @LastEditTime: 2023-03-16 15:56:33 6 | * @Description: 主入口 7 | * @Email: UvDream@163.com 8 | */ 9 | import * as vscode from 'vscode'; 10 | import { emojiCommit } from './utils'; 11 | 12 | export const activate = (context: vscode.ExtensionContext) => { 13 | const disposable = vscode.commands.registerCommand('extension.gitEmoji', emojiCommit); 14 | context.subscriptions.push(disposable); 15 | } 16 | -------------------------------------------------------------------------------- /src/git.d.ts: -------------------------------------------------------------------------------- 1 | /*--------------------------------------------------------------------------------------------- 2 | * Copyright (c) Microsoft Corporation. All rights reserved. 3 | * Licensed under the MIT License. See License.txt in the project root for license information. 4 | *--------------------------------------------------------------------------------------------*/ 5 | 6 | import { Uri, Event, Disposable, ProviderResult, Command, CancellationToken } from 'vscode'; 7 | export { ProviderResult } from 'vscode'; 8 | 9 | export interface Git { 10 | readonly path: string; 11 | } 12 | 13 | export interface InputBox { 14 | value: string; 15 | } 16 | 17 | export const enum ForcePushMode { 18 | Force, 19 | ForceWithLease, 20 | } 21 | 22 | export const enum RefType { 23 | Head, 24 | RemoteHead, 25 | Tag, 26 | } 27 | 28 | export interface Ref { 29 | readonly type: RefType; 30 | readonly name?: string; 31 | readonly commit?: string; 32 | readonly remote?: string; 33 | } 34 | 35 | export interface UpstreamRef { 36 | readonly remote: string; 37 | readonly name: string; 38 | } 39 | 40 | export interface Branch extends Ref { 41 | readonly upstream?: UpstreamRef; 42 | readonly ahead?: number; 43 | readonly behind?: number; 44 | } 45 | 46 | export interface Commit { 47 | readonly hash: string; 48 | readonly message: string; 49 | readonly parents: string[]; 50 | readonly authorDate?: Date; 51 | readonly authorName?: string; 52 | readonly authorEmail?: string; 53 | readonly commitDate?: Date; 54 | } 55 | 56 | export interface Submodule { 57 | readonly name: string; 58 | readonly path: string; 59 | readonly url: string; 60 | } 61 | 62 | export interface Remote { 63 | readonly name: string; 64 | readonly fetchUrl?: string; 65 | readonly pushUrl?: string; 66 | readonly isReadOnly: boolean; 67 | } 68 | 69 | export const enum Status { 70 | INDEX_MODIFIED, 71 | INDEX_ADDED, 72 | INDEX_DELETED, 73 | INDEX_RENAMED, 74 | INDEX_COPIED, 75 | 76 | MODIFIED, 77 | DELETED, 78 | UNTRACKED, 79 | IGNORED, 80 | INTENT_TO_ADD, 81 | 82 | ADDED_BY_US, 83 | ADDED_BY_THEM, 84 | DELETED_BY_US, 85 | DELETED_BY_THEM, 86 | BOTH_ADDED, 87 | BOTH_DELETED, 88 | BOTH_MODIFIED, 89 | } 90 | 91 | export interface Change { 92 | /** 93 | * Returns either `originalUri` or `renameUri`, depending 94 | * on whether this change is a rename change. When 95 | * in doubt always use `uri` over the other two alternatives. 96 | */ 97 | readonly uri: Uri; 98 | readonly originalUri: Uri; 99 | readonly renameUri: Uri | undefined; 100 | readonly status: Status; 101 | } 102 | 103 | export interface RepositoryState { 104 | readonly HEAD: Branch | undefined; 105 | readonly refs: Ref[]; 106 | readonly remotes: Remote[]; 107 | readonly submodules: Submodule[]; 108 | readonly rebaseCommit: Commit | undefined; 109 | 110 | readonly mergeChanges: Change[]; 111 | readonly indexChanges: Change[]; 112 | readonly workingTreeChanges: Change[]; 113 | 114 | readonly onDidChange: Event; 115 | } 116 | 117 | export interface RepositoryUIState { 118 | readonly selected: boolean; 119 | readonly onDidChange: Event; 120 | } 121 | 122 | /** 123 | * Log options. 124 | */ 125 | export interface LogOptions { 126 | /** Max number of log entries to retrieve. If not specified, the default is 32. */ 127 | readonly maxEntries?: number; 128 | readonly path?: string; 129 | } 130 | 131 | export interface CommitOptions { 132 | all?: boolean | 'tracked'; 133 | amend?: boolean; 134 | signoff?: boolean; 135 | signCommit?: boolean; 136 | empty?: boolean; 137 | noVerify?: boolean; 138 | requireUserConfig?: boolean; 139 | useEditor?: boolean; 140 | verbose?: boolean; 141 | /** 142 | * string - execute the specified command after the commit operation 143 | * undefined - execute the command specified in git.postCommitCommand 144 | * after the commit operation 145 | * null - do not execute any command after the commit operation 146 | */ 147 | postCommitCommand?: string | null; 148 | } 149 | 150 | export interface FetchOptions { 151 | remote?: string; 152 | ref?: string; 153 | all?: boolean; 154 | prune?: boolean; 155 | depth?: number; 156 | } 157 | 158 | export interface RefQuery { 159 | readonly contains?: string; 160 | readonly count?: number; 161 | readonly pattern?: string; 162 | readonly sort?: 'alphabetically' | 'committerdate'; 163 | } 164 | 165 | export interface BranchQuery extends RefQuery { 166 | readonly remote?: boolean; 167 | } 168 | 169 | export interface Repository { 170 | readonly rootUri: Uri; 171 | readonly inputBox: InputBox; 172 | readonly state: RepositoryState; 173 | readonly ui: RepositoryUIState; 174 | 175 | getConfigs(): Promise<{ key: string; value: string }[]>; 176 | getConfig(key: string): Promise; 177 | setConfig(key: string, value: string): Promise; 178 | getGlobalConfig(key: string): Promise; 179 | 180 | getObjectDetails(treeish: string, path: string): Promise<{ mode: string; object: string; size: number }>; 181 | detectObjectType(object: string): Promise<{ mimetype: string; encoding?: string }>; 182 | buffer(ref: string, path: string): Promise; 183 | show(ref: string, path: string): Promise; 184 | getCommit(ref: string): Promise; 185 | 186 | add(paths: string[]): Promise; 187 | revert(paths: string[]): Promise; 188 | clean(paths: string[]): Promise; 189 | 190 | apply(patch: string, reverse?: boolean): Promise; 191 | diff(cached?: boolean): Promise; 192 | diffWithHEAD(): Promise; 193 | diffWithHEAD(path: string): Promise; 194 | diffWith(ref: string): Promise; 195 | diffWith(ref: string, path: string): Promise; 196 | diffIndexWithHEAD(): Promise; 197 | diffIndexWithHEAD(path: string): Promise; 198 | diffIndexWith(ref: string): Promise; 199 | diffIndexWith(ref: string, path: string): Promise; 200 | diffBlobs(object1: string, object2: string): Promise; 201 | diffBetween(ref1: string, ref2: string): Promise; 202 | diffBetween(ref1: string, ref2: string, path: string): Promise; 203 | 204 | hashObject(data: string): Promise; 205 | 206 | createBranch(name: string, checkout: boolean, ref?: string): Promise; 207 | deleteBranch(name: string, force?: boolean): Promise; 208 | getBranch(name: string): Promise; 209 | getBranches(query: BranchQuery, cancellationToken?: CancellationToken): Promise; 210 | setBranchUpstream(name: string, upstream: string): Promise; 211 | 212 | getRefs(query: RefQuery, cancellationToken?: CancellationToken): Promise; 213 | 214 | getMergeBase(ref1: string, ref2: string): Promise; 215 | 216 | tag(name: string, upstream: string): Promise; 217 | deleteTag(name: string): Promise; 218 | 219 | status(): Promise; 220 | checkout(treeish: string): Promise; 221 | 222 | addRemote(name: string, url: string): Promise; 223 | removeRemote(name: string): Promise; 224 | renameRemote(name: string, newName: string): Promise; 225 | 226 | fetch(options?: FetchOptions): Promise; 227 | fetch(remote?: string, ref?: string, depth?: number): Promise; 228 | pull(unshallow?: boolean): Promise; 229 | push(remoteName?: string, branchName?: string, setUpstream?: boolean, force?: ForcePushMode): Promise; 230 | 231 | blame(path: string): Promise; 232 | log(options?: LogOptions): Promise; 233 | 234 | commit(message: string, opts?: CommitOptions): Promise; 235 | } 236 | 237 | export interface RemoteSource { 238 | readonly name: string; 239 | readonly description?: string; 240 | readonly url: string | string[]; 241 | } 242 | 243 | export interface RemoteSourceProvider { 244 | readonly name: string; 245 | readonly icon?: string; // codicon name 246 | readonly supportsQuery?: boolean; 247 | getRemoteSources(query?: string): ProviderResult; 248 | getBranches?(url: string): ProviderResult; 249 | publishRepository?(repository: Repository): Promise; 250 | } 251 | 252 | export interface RemoteSourcePublisher { 253 | readonly name: string; 254 | readonly icon?: string; // codicon name 255 | publishRepository(repository: Repository): Promise; 256 | } 257 | 258 | export interface Credentials { 259 | readonly username: string; 260 | readonly password: string; 261 | } 262 | 263 | export interface CredentialsProvider { 264 | getCredentials(host: Uri): ProviderResult; 265 | } 266 | 267 | export interface PostCommitCommandsProvider { 268 | getCommands(repository: Repository): Command[]; 269 | } 270 | 271 | export interface PushErrorHandler { 272 | handlePushError( 273 | repository: Repository, 274 | remote: Remote, 275 | refspec: string, 276 | error: Error & { gitErrorCode: GitErrorCodes } 277 | ): Promise; 278 | } 279 | 280 | export type APIState = 'uninitialized' | 'initialized'; 281 | 282 | export interface PublishEvent { 283 | repository: Repository; 284 | branch?: string; 285 | } 286 | 287 | export interface API { 288 | readonly state: APIState; 289 | readonly onDidChangeState: Event; 290 | readonly onDidPublish: Event; 291 | readonly git: Git; 292 | readonly repositories: Repository[]; 293 | readonly onDidOpenRepository: Event; 294 | readonly onDidCloseRepository: Event; 295 | 296 | toGitUri(uri: Uri, ref: string): Uri; 297 | getRepository(uri: Uri): Repository | null; 298 | init(root: Uri): Promise; 299 | openRepository(root: Uri): Promise; 300 | 301 | registerRemoteSourcePublisher(publisher: RemoteSourcePublisher): Disposable; 302 | registerRemoteSourceProvider(provider: RemoteSourceProvider): Disposable; 303 | registerCredentialsProvider(provider: CredentialsProvider): Disposable; 304 | registerPostCommitCommandsProvider(provider: PostCommitCommandsProvider): Disposable; 305 | registerPushErrorHandler(handler: PushErrorHandler): Disposable; 306 | } 307 | 308 | export interface GitExtension { 309 | readonly enabled: boolean; 310 | readonly onDidChangeEnablement: Event; 311 | 312 | /** 313 | * Returns a specific API version. 314 | * 315 | * Throws error if git extension is disabled. You can listen to the 316 | * [GitExtension.onDidChangeEnablement](#GitExtension.onDidChangeEnablement) event 317 | * to know when the extension becomes enabled/disabled. 318 | * 319 | * @param version Version number. 320 | * @returns API instance 321 | */ 322 | getAPI(version: 1): API; 323 | } 324 | 325 | export const enum GitErrorCodes { 326 | BadConfigFile = 'BadConfigFile', 327 | AuthenticationFailed = 'AuthenticationFailed', 328 | NoUserNameConfigured = 'NoUserNameConfigured', 329 | NoUserEmailConfigured = 'NoUserEmailConfigured', 330 | NoRemoteRepositorySpecified = 'NoRemoteRepositorySpecified', 331 | NotAGitRepository = 'NotAGitRepository', 332 | NotAtRepositoryRoot = 'NotAtRepositoryRoot', 333 | Conflict = 'Conflict', 334 | StashConflict = 'StashConflict', 335 | UnmergedChanges = 'UnmergedChanges', 336 | PushRejected = 'PushRejected', 337 | RemoteConnectionError = 'RemoteConnectionError', 338 | DirtyWorkTree = 'DirtyWorkTree', 339 | CantOpenResource = 'CantOpenResource', 340 | GitNotFound = 'GitNotFound', 341 | CantCreatePipe = 'CantCreatePipe', 342 | PermissionDenied = 'PermissionDenied', 343 | CantAccessRemote = 'CantAccessRemote', 344 | RepositoryNotFound = 'RepositoryNotFound', 345 | RepositoryIsLocked = 'RepositoryIsLocked', 346 | BranchNotFullyMerged = 'BranchNotFullyMerged', 347 | NoRemoteReference = 'NoRemoteReference', 348 | InvalidBranchName = 'InvalidBranchName', 349 | BranchAlreadyExists = 'BranchAlreadyExists', 350 | NoLocalChanges = 'NoLocalChanges', 351 | NoStashFound = 'NoStashFound', 352 | LocalChangesOverwritten = 'LocalChangesOverwritten', 353 | NoUpstreamBranch = 'NoUpstreamBranch', 354 | IsInSubmodule = 'IsInSubmodule', 355 | WrongCase = 'WrongCase', 356 | CantLockRef = 'CantLockRef', 357 | CantRebaseMultipleBranches = 'CantRebaseMultipleBranches', 358 | PatchDoesNotApply = 'PatchDoesNotApply', 359 | NoPathFound = 'NoPathFound', 360 | UnknownPath = 'UnknownPath', 361 | EmptyCommitMessage = 'EmptyCommitMessage', 362 | BranchFastForwardRejected = 'BranchFastForwardRejected', 363 | BranchNotYetBorn = 'BranchNotYetBorn', 364 | TagConflict = 'TagConflict', 365 | } 366 | -------------------------------------------------------------------------------- /src/type.d.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * @Author: Lanrri 3 | * @Email: lanrri@163.com 4 | * @Date: 2023-03-16 15:49:48 5 | * @Description: 6 | * @LastEditors: Lanrri 7 | * @LastEditTime: 2023-03-16 15:49:55 8 | */ 9 | 10 | export interface CustomType { 11 | readonly emoji: string; 12 | readonly type: string; 13 | readonly name: string; 14 | readonly description: string; 15 | } 16 | -------------------------------------------------------------------------------- /src/utils.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * @Author: Lanrri 3 | * @Email: lanrri@163.com 4 | * @Date: 2023-03-16 14:18:17 5 | * @Description: 一些工具函数 6 | * @LastEditors: wangzhongjie 7 | * @LastEditTime: 2023-03-20 09:57:27 8 | */ 9 | import * as vscode from "vscode"; 10 | import { GitExtension, Repository } from "./git"; 11 | import { CustomType } from "./type"; 12 | 13 | const DEFAULT_CUSTOM_FORMAT = "${type}${emoji}: "; 14 | const CUSTOM_KEY_REGEX = /\${(\w+)}/g; 15 | 16 | const customItems = (emoji: CustomType[], custom_key: string) => { 17 | return emoji.map((item) => { 18 | const value = custom_key.replace( 19 | CUSTOM_KEY_REGEX, 20 | (_match, variable: keyof CustomType) => { 21 | return item[variable]; 22 | } 23 | ); 24 | return { 25 | value, 26 | label: `${value} ${item.name}`, 27 | description: "[" + item.description + "]", 28 | }; 29 | }); 30 | }; 31 | 32 | // 点击小图标进入插件 33 | const getGitExtension = () => { 34 | const vscodeGit = vscode.extensions.getExtension("vscode.git"); 35 | const gitExtension = vscodeGit && vscodeGit.exports; 36 | return gitExtension && gitExtension.getAPI(1); 37 | }; 38 | 39 | // 选完填入操作 40 | const prefixCommit = (repository: Repository, prefix: String) => { 41 | const coverInputValue = vscode.workspace 42 | .getConfiguration() 43 | .get("gitCommitLintVscode.coverInputValue"); 44 | if (coverInputValue) { 45 | repository.inputBox.value = `${prefix}`; 46 | //! 不删除是因为不知道为什么要先清空再赋值,所以注释掉了原代码,测试了一下修改后的代码,感觉也没发现什么问题啊 47 | // repository.inputBox.value !== '' 48 | // ? ((repository.inputBox.value = ''), (repository.inputBox.value = `${prefix}${repository.inputBox.value}`)) 49 | // : (repository.inputBox.value = `${prefix}${repository.inputBox.value}`); 50 | } else { 51 | repository.inputBox.value = `${prefix}${repository.inputBox.value}`; 52 | } 53 | }; 54 | 55 | const emojiCommit = async (uri?: { rootUri: { path: any } }) => { 56 | const git = getGitExtension(); 57 | if (!git) { 58 | vscode.window.showErrorMessage("无法加载git插件! 请先安装git插件!"); 59 | return; 60 | } 61 | 62 | const config = vscode.workspace.getConfiguration("gitCommitLintVscode"); 63 | 64 | const custom_format = config.get("customFormat", DEFAULT_CUSTOM_FORMAT); 65 | const custom_type = config.get("customType", []); 66 | 67 | const items = customItems(custom_type, custom_format); 68 | const selected = await vscode.window.showQuickPick(items); 69 | if (!selected) { 70 | return; 71 | } 72 | const { value } = selected; 73 | vscode.commands.executeCommand("workbench.scm.focus"); 74 | 75 | if (git.repositories.length === 1) { 76 | const alwaysShowRepositories = vscode.workspace 77 | .getConfiguration() 78 | .get("scm.alwaysShowRepositories"); 79 | // 确保聚焦到输入框,参考 https://github.com/microsoft/vscode/issues/131006#issuecomment-915751155 80 | if (alwaysShowRepositories) { 81 | // 启用了该配置时,ui会有变动,所以向下移动一格再选中 82 | vscode.commands.executeCommand("list.focusFirst"); 83 | vscode.commands.executeCommand("list.focusDown"); 84 | vscode.commands.executeCommand("list.select"); 85 | } else { 86 | vscode.commands.executeCommand("list.focusFirst"); 87 | vscode.commands.executeCommand("list.select"); 88 | } 89 | prefixCommit(git.repositories[0], value); 90 | return; 91 | } 92 | if (uri) { 93 | const selectedRepository = git.getRepository(uri.rootUri.path); 94 | if (!selectedRepository) { 95 | return; 96 | } 97 | prefixCommit(selectedRepository, value); 98 | const accurateLocating = vscode.workspace 99 | .getConfiguration() 100 | .get("gitCommitLintVscode.accurateLocating"); 101 | if (!accurateLocating) { 102 | return; 103 | } 104 | // 获取在源代码管理存储库的索引值 105 | // @ts-ignore 106 | const repositoryIndex = selectedRepository?.repository?.indexGroup?.t; 107 | if (!repositoryIndex) { 108 | return; 109 | } 110 | // 存在多个存储库时,关闭其他存储库,定位到选择的存储库并聚焦输入框 111 | vscode.commands.executeCommand("list.collapseAll"); 112 | vscode.commands.executeCommand("list.focusFirst"); 113 | for (let i = 0; i < repositoryIndex; i++) { 114 | vscode.commands.executeCommand("list.focusDown"); 115 | } 116 | vscode.commands.executeCommand("list.expand"); 117 | vscode.commands.executeCommand("list.expand"); 118 | vscode.commands.executeCommand("list.select"); 119 | vscode.commands.executeCommand("list.toggleExpand"); 120 | } else { 121 | for (let repo of git.repositories) { 122 | prefixCommit(repo, value); 123 | } 124 | } 125 | }; 126 | 127 | export { emojiCommit }; 128 | -------------------------------------------------------------------------------- /static/angular.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UvDream/git-commit-lint-vscode/120be3132c8453b2023be4c90457942534bbb529/static/angular.png -------------------------------------------------------------------------------- /static/extend.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UvDream/git-commit-lint-vscode/120be3132c8453b2023be4c90457942534bbb529/static/extend.png -------------------------------------------------------------------------------- /static/first.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UvDream/git-commit-lint-vscode/120be3132c8453b2023be4c90457942534bbb529/static/first.png -------------------------------------------------------------------------------- /static/git-commit-lint.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UvDream/git-commit-lint-vscode/120be3132c8453b2023be4c90457942534bbb529/static/git-commit-lint.png -------------------------------------------------------------------------------- /static/icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /static/icon_light.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /static/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UvDream/git-commit-lint-vscode/120be3132c8453b2023be4c90457942534bbb529/static/logo.png -------------------------------------------------------------------------------- /static/then.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/UvDream/git-commit-lint-vscode/120be3132c8453b2023be4c90457942534bbb529/static/then.png -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "commonjs", 4 | "target": "es6", 5 | "outDir": "out", 6 | "lib": [ 7 | "es6" 8 | ], 9 | "sourceMap": true, 10 | "rootDir": "src", 11 | "strict": true /* enable all strict type-checking options */ 12 | /* Additional Checks */ 13 | // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ 14 | // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ 15 | // "noUnusedParameters": true, /* Report errors on unused parameters. */ 16 | }, 17 | "exclude": [ 18 | "node_modules", 19 | ".vscode-test" 20 | ] 21 | } 22 | -------------------------------------------------------------------------------- /tslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "rules": { 3 | "no-string-throw": true, 4 | "no-unused-expression": true, 5 | "no-duplicate-variable": true, 6 | "curly": true, 7 | "class-name": true, 8 | "semicolon": [ 9 | true, 10 | "always" 11 | ], 12 | "triple-equals": true 13 | }, 14 | "defaultSeverity": "warning" 15 | } 16 | -------------------------------------------------------------------------------- /vsc-extension-quickstart.md: -------------------------------------------------------------------------------- 1 | # Welcome to your VS Code Extension 2 | 3 | ## What's in the folder 4 | 5 | * This folder contains all of the files necessary for your extension. 6 | * `package.json` - this is the manifest file in which you declare your extension and command. 7 | * The sample plugin registers a command and defines its title and command name. With this information VS Code can show the command in the command palette. It doesn’t yet need to load the plugin. 8 | * `src/extension.ts` - this is the main file where you will provide the implementation of your command. 9 | * The file exports one function, `activate`, which is called the very first time your extension is activated (in this case by executing the command). Inside the `activate` function we call `registerCommand`. 10 | * We pass the function containing the implementation of the command as the second parameter to `registerCommand`. 11 | 12 | ## Get up and running straight away 13 | 14 | * Press `F5` to open a new window with your extension loaded. 15 | * Run your command from the command palette by pressing (`Ctrl+Shift+P` or `Cmd+Shift+P` on Mac) and typing `Hello World`. 16 | * Set breakpoints in your code inside `src/extension.ts` to debug your extension. 17 | * Find output from your extension in the debug console. 18 | 19 | ## Make changes 20 | 21 | * You can relaunch the extension from the debug toolbar after changing code in `src/extension.ts`. 22 | * You can also reload (`Ctrl+R` or `Cmd+R` on Mac) the VS Code window with your extension to load your changes. 23 | 24 | 25 | ## Explore the API 26 | 27 | * You can open the full set of our API when you open the file `node_modules/@types/vscode/index.d.ts`. 28 | 29 | ## Run tests 30 | 31 | * Open the debug viewlet (`Ctrl+Shift+D` or `Cmd+Shift+D` on Mac) and from the launch configuration dropdown pick `Extension Tests`. 32 | * Press `F5` to run the tests in a new window with your extension loaded. 33 | * See the output of the test result in the debug console. 34 | * Make changes to `src/test/suite/extension.test.ts` or create new test files inside the `test/suite` folder. 35 | * The provided test runner will only consider files matching the name pattern `**.test.ts`. 36 | * You can create folders inside the `test` folder to structure your tests any way you want. 37 | 38 | ## Go further 39 | 40 | * Reduce the extension size and improve the startup time by [bundling your extension](https://code.visualstudio.com/api/working-with-extensions/bundling-extension). 41 | * [Publish your extension](https://code.visualstudio.com/api/working-with-extensions/publishing-extension) on the VSCode extension marketplace. 42 | * Automate builds by setting up [Continuous Integration](https://code.visualstudio.com/api/working-with-extensions/continuous-integration). 43 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@babel/code-frame@^7.0.0": 6 | version "7.22.13" 7 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.13.tgz#e3c1c099402598483b7a8c46a721d1038803755e" 8 | integrity sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w== 9 | dependencies: 10 | "@babel/highlight" "^7.22.13" 11 | chalk "^2.4.2" 12 | 13 | "@babel/helper-validator-identifier@^7.22.20": 14 | version "7.22.20" 15 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" 16 | integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== 17 | 18 | "@babel/highlight@^7.22.13": 19 | version "7.22.20" 20 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.22.20.tgz#4ca92b71d80554b01427815e06f2df965b9c1f54" 21 | integrity sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg== 22 | dependencies: 23 | "@babel/helper-validator-identifier" "^7.22.20" 24 | chalk "^2.4.2" 25 | js-tokens "^4.0.0" 26 | 27 | "@tootallnate/once@1": 28 | version "1.1.2" 29 | resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" 30 | integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== 31 | 32 | "@types/mocha@^10.0.1": 33 | version "10.0.2" 34 | resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-10.0.2.tgz#96d63314255540a36bf24da094cce7a13668d73b" 35 | integrity sha512-NaHL0+0lLNhX6d9rs+NSt97WH/gIlRHmszXbQ/8/MV/eVcFNdeJ/GYhrFuUc8K7WuPhRhTSdMkCp8VMzhUq85w== 36 | 37 | "@types/node@^18.14.6": 38 | version "18.18.4" 39 | resolved "https://registry.yarnpkg.com/@types/node/-/node-18.18.4.tgz#519fef47a13cf869be290c20fc6ae9b7fe887aa7" 40 | integrity sha512-t3rNFBgJRugIhackit2mVcLfF6IRc0JE4oeizPQL8Zrm8n2WY/0wOdpOPhdtG0V9Q2TlW/axbF1MJ6z+Yj/kKQ== 41 | 42 | "@types/vscode@^1.76.0": 43 | version "1.83.0" 44 | resolved "https://registry.yarnpkg.com/@types/vscode/-/vscode-1.83.0.tgz#f787d1d94d0b258b9bb97947396b47c1d364e90f" 45 | integrity sha512-3mUtHqLAVz9hegut9au4xehuBrzRE3UJiQMpoEHkNl6XHliihO7eATx2BMHs0odsmmrwjJrlixx/Pte6M3ygDQ== 46 | 47 | "@vscode/test-electron@^2.3.0": 48 | version "2.3.5" 49 | resolved "https://registry.yarnpkg.com/@vscode/test-electron/-/test-electron-2.3.5.tgz#c472c5bdce1329aeb4762b8aa7a2cbe7aa783aac" 50 | integrity sha512-lAW7nQ0HuPqJnGJrtCzEKZCICtRizeP6qNanyCrjmdCOAAWjX3ixiG8RVPwqsYPQBWLPgYuE12qQlwXsOR/2fQ== 51 | dependencies: 52 | http-proxy-agent "^4.0.1" 53 | https-proxy-agent "^5.0.0" 54 | jszip "^3.10.1" 55 | semver "^7.5.2" 56 | 57 | agent-base@6: 58 | version "6.0.2" 59 | resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" 60 | integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== 61 | dependencies: 62 | debug "4" 63 | 64 | ansi-colors@4.1.1: 65 | version "4.1.1" 66 | resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" 67 | integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== 68 | 69 | ansi-regex@^5.0.1: 70 | version "5.0.1" 71 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" 72 | integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== 73 | 74 | ansi-styles@^3.2.1: 75 | version "3.2.1" 76 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 77 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 78 | dependencies: 79 | color-convert "^1.9.0" 80 | 81 | ansi-styles@^4.0.0, ansi-styles@^4.1.0: 82 | version "4.3.0" 83 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" 84 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 85 | dependencies: 86 | color-convert "^2.0.1" 87 | 88 | anymatch@~3.1.2: 89 | version "3.1.3" 90 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" 91 | integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== 92 | dependencies: 93 | normalize-path "^3.0.0" 94 | picomatch "^2.0.4" 95 | 96 | argparse@^1.0.7: 97 | version "1.0.10" 98 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" 99 | integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== 100 | dependencies: 101 | sprintf-js "~1.0.2" 102 | 103 | argparse@^2.0.1: 104 | version "2.0.1" 105 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" 106 | integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== 107 | 108 | balanced-match@^1.0.0: 109 | version "1.0.2" 110 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" 111 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 112 | 113 | binary-extensions@^2.0.0: 114 | version "2.2.0" 115 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" 116 | integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== 117 | 118 | brace-expansion@^1.1.7: 119 | version "1.1.11" 120 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 121 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 122 | dependencies: 123 | balanced-match "^1.0.0" 124 | concat-map "0.0.1" 125 | 126 | brace-expansion@^2.0.1: 127 | version "2.0.1" 128 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" 129 | integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== 130 | dependencies: 131 | balanced-match "^1.0.0" 132 | 133 | braces@~3.0.2: 134 | version "3.0.2" 135 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" 136 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== 137 | dependencies: 138 | fill-range "^7.0.1" 139 | 140 | browser-stdout@1.3.1: 141 | version "1.3.1" 142 | resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" 143 | integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== 144 | 145 | builtin-modules@^1.1.1: 146 | version "1.1.1" 147 | resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" 148 | integrity sha512-wxXCdllwGhI2kCC0MnvTGYTMvnVZTvqgypkiTI8Pa5tcz2i6VqsqwYGgqwXji+4RgCzms6EajE4IxiUH6HH8nQ== 149 | 150 | camelcase@^6.0.0: 151 | version "6.3.0" 152 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" 153 | integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== 154 | 155 | chalk@^2.3.0, chalk@^2.4.2: 156 | version "2.4.2" 157 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 158 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 159 | dependencies: 160 | ansi-styles "^3.2.1" 161 | escape-string-regexp "^1.0.5" 162 | supports-color "^5.3.0" 163 | 164 | chalk@^4.1.0: 165 | version "4.1.2" 166 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" 167 | integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== 168 | dependencies: 169 | ansi-styles "^4.1.0" 170 | supports-color "^7.1.0" 171 | 172 | chokidar@3.5.3: 173 | version "3.5.3" 174 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" 175 | integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== 176 | dependencies: 177 | anymatch "~3.1.2" 178 | braces "~3.0.2" 179 | glob-parent "~5.1.2" 180 | is-binary-path "~2.1.0" 181 | is-glob "~4.0.1" 182 | normalize-path "~3.0.0" 183 | readdirp "~3.6.0" 184 | optionalDependencies: 185 | fsevents "~2.3.2" 186 | 187 | cliui@^7.0.2: 188 | version "7.0.4" 189 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" 190 | integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== 191 | dependencies: 192 | string-width "^4.2.0" 193 | strip-ansi "^6.0.0" 194 | wrap-ansi "^7.0.0" 195 | 196 | color-convert@^1.9.0: 197 | version "1.9.3" 198 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 199 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 200 | dependencies: 201 | color-name "1.1.3" 202 | 203 | color-convert@^2.0.1: 204 | version "2.0.1" 205 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 206 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 207 | dependencies: 208 | color-name "~1.1.4" 209 | 210 | color-name@1.1.3: 211 | version "1.1.3" 212 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 213 | integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== 214 | 215 | color-name@~1.1.4: 216 | version "1.1.4" 217 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 218 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 219 | 220 | commander@^2.12.1: 221 | version "2.20.3" 222 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" 223 | integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== 224 | 225 | concat-map@0.0.1: 226 | version "0.0.1" 227 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 228 | integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== 229 | 230 | core-util-is@~1.0.0: 231 | version "1.0.3" 232 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" 233 | integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== 234 | 235 | debug@4, debug@4.3.4: 236 | version "4.3.4" 237 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" 238 | integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== 239 | dependencies: 240 | ms "2.1.2" 241 | 242 | decamelize@^4.0.0: 243 | version "4.0.0" 244 | resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" 245 | integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== 246 | 247 | diff@5.0.0: 248 | version "5.0.0" 249 | resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" 250 | integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== 251 | 252 | diff@^4.0.1: 253 | version "4.0.2" 254 | resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" 255 | integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== 256 | 257 | emoji-regex@^8.0.0: 258 | version "8.0.0" 259 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" 260 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 261 | 262 | escalade@^3.1.1: 263 | version "3.1.1" 264 | resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" 265 | integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== 266 | 267 | escape-string-regexp@4.0.0: 268 | version "4.0.0" 269 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" 270 | integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== 271 | 272 | escape-string-regexp@^1.0.5: 273 | version "1.0.5" 274 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 275 | integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== 276 | 277 | esprima@^4.0.0: 278 | version "4.0.1" 279 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" 280 | integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== 281 | 282 | fill-range@^7.0.1: 283 | version "7.0.1" 284 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" 285 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== 286 | dependencies: 287 | to-regex-range "^5.0.1" 288 | 289 | find-up@5.0.0: 290 | version "5.0.0" 291 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" 292 | integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== 293 | dependencies: 294 | locate-path "^6.0.0" 295 | path-exists "^4.0.0" 296 | 297 | flat@^5.0.2: 298 | version "5.0.2" 299 | resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" 300 | integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== 301 | 302 | fs.realpath@^1.0.0: 303 | version "1.0.0" 304 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 305 | integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== 306 | 307 | fsevents@~2.3.2: 308 | version "2.3.3" 309 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" 310 | integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== 311 | 312 | get-caller-file@^2.0.5: 313 | version "2.0.5" 314 | resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" 315 | integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== 316 | 317 | glob-parent@~5.1.2: 318 | version "5.1.2" 319 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" 320 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== 321 | dependencies: 322 | is-glob "^4.0.1" 323 | 324 | glob@7.2.0: 325 | version "7.2.0" 326 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" 327 | integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== 328 | dependencies: 329 | fs.realpath "^1.0.0" 330 | inflight "^1.0.4" 331 | inherits "2" 332 | minimatch "^3.0.4" 333 | once "^1.3.0" 334 | path-is-absolute "^1.0.0" 335 | 336 | glob@^7.1.1: 337 | version "7.2.3" 338 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" 339 | integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== 340 | dependencies: 341 | fs.realpath "^1.0.0" 342 | inflight "^1.0.4" 343 | inherits "2" 344 | minimatch "^3.1.1" 345 | once "^1.3.0" 346 | path-is-absolute "^1.0.0" 347 | 348 | has-flag@^3.0.0: 349 | version "3.0.0" 350 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 351 | integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== 352 | 353 | has-flag@^4.0.0: 354 | version "4.0.0" 355 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 356 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 357 | 358 | has@^1.0.3: 359 | version "1.0.4" 360 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.4.tgz#2eb2860e000011dae4f1406a86fe80e530fb2ec6" 361 | integrity sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ== 362 | 363 | he@1.2.0: 364 | version "1.2.0" 365 | resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" 366 | integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== 367 | 368 | http-proxy-agent@^4.0.1: 369 | version "4.0.1" 370 | resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" 371 | integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== 372 | dependencies: 373 | "@tootallnate/once" "1" 374 | agent-base "6" 375 | debug "4" 376 | 377 | https-proxy-agent@^5.0.0: 378 | version "5.0.1" 379 | resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" 380 | integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== 381 | dependencies: 382 | agent-base "6" 383 | debug "4" 384 | 385 | immediate@~3.0.5: 386 | version "3.0.6" 387 | resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" 388 | integrity sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ== 389 | 390 | inflight@^1.0.4: 391 | version "1.0.6" 392 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 393 | integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== 394 | dependencies: 395 | once "^1.3.0" 396 | wrappy "1" 397 | 398 | inherits@2, inherits@~2.0.3: 399 | version "2.0.4" 400 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 401 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 402 | 403 | is-binary-path@~2.1.0: 404 | version "2.1.0" 405 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" 406 | integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== 407 | dependencies: 408 | binary-extensions "^2.0.0" 409 | 410 | is-core-module@^2.13.0: 411 | version "2.13.0" 412 | resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.0.tgz#bb52aa6e2cbd49a30c2ba68c42bf3435ba6072db" 413 | integrity sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ== 414 | dependencies: 415 | has "^1.0.3" 416 | 417 | is-extglob@^2.1.1: 418 | version "2.1.1" 419 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 420 | integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== 421 | 422 | is-fullwidth-code-point@^3.0.0: 423 | version "3.0.0" 424 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" 425 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 426 | 427 | is-glob@^4.0.1, is-glob@~4.0.1: 428 | version "4.0.3" 429 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" 430 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== 431 | dependencies: 432 | is-extglob "^2.1.1" 433 | 434 | is-number@^7.0.0: 435 | version "7.0.0" 436 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 437 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 438 | 439 | is-plain-obj@^2.1.0: 440 | version "2.1.0" 441 | resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" 442 | integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== 443 | 444 | is-unicode-supported@^0.1.0: 445 | version "0.1.0" 446 | resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" 447 | integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== 448 | 449 | isarray@~1.0.0: 450 | version "1.0.0" 451 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 452 | integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== 453 | 454 | js-tokens@^4.0.0: 455 | version "4.0.0" 456 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 457 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 458 | 459 | js-yaml@4.1.0: 460 | version "4.1.0" 461 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" 462 | integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== 463 | dependencies: 464 | argparse "^2.0.1" 465 | 466 | js-yaml@^3.13.1: 467 | version "3.14.1" 468 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" 469 | integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== 470 | dependencies: 471 | argparse "^1.0.7" 472 | esprima "^4.0.0" 473 | 474 | jszip@^3.10.1: 475 | version "3.10.1" 476 | resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.10.1.tgz#34aee70eb18ea1faec2f589208a157d1feb091c2" 477 | integrity sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g== 478 | dependencies: 479 | lie "~3.3.0" 480 | pako "~1.0.2" 481 | readable-stream "~2.3.6" 482 | setimmediate "^1.0.5" 483 | 484 | lie@~3.3.0: 485 | version "3.3.0" 486 | resolved "https://registry.yarnpkg.com/lie/-/lie-3.3.0.tgz#dcf82dee545f46074daf200c7c1c5a08e0f40f6a" 487 | integrity sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ== 488 | dependencies: 489 | immediate "~3.0.5" 490 | 491 | locate-path@^6.0.0: 492 | version "6.0.0" 493 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" 494 | integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== 495 | dependencies: 496 | p-locate "^5.0.0" 497 | 498 | log-symbols@4.1.0: 499 | version "4.1.0" 500 | resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" 501 | integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== 502 | dependencies: 503 | chalk "^4.1.0" 504 | is-unicode-supported "^0.1.0" 505 | 506 | lru-cache@^6.0.0: 507 | version "6.0.0" 508 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" 509 | integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== 510 | dependencies: 511 | yallist "^4.0.0" 512 | 513 | minimatch@5.0.1: 514 | version "5.0.1" 515 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.0.1.tgz#fb9022f7528125187c92bd9e9b6366be1cf3415b" 516 | integrity sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g== 517 | dependencies: 518 | brace-expansion "^2.0.1" 519 | 520 | minimatch@^3.0.4, minimatch@^3.1.1: 521 | version "3.1.2" 522 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" 523 | integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== 524 | dependencies: 525 | brace-expansion "^1.1.7" 526 | 527 | minimist@^1.2.6: 528 | version "1.2.8" 529 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" 530 | integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== 531 | 532 | mkdirp@^0.5.3: 533 | version "0.5.6" 534 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" 535 | integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== 536 | dependencies: 537 | minimist "^1.2.6" 538 | 539 | mocha@^10.2.0: 540 | version "10.2.0" 541 | resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.2.0.tgz#1fd4a7c32ba5ac372e03a17eef435bd00e5c68b8" 542 | integrity sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg== 543 | dependencies: 544 | ansi-colors "4.1.1" 545 | browser-stdout "1.3.1" 546 | chokidar "3.5.3" 547 | debug "4.3.4" 548 | diff "5.0.0" 549 | escape-string-regexp "4.0.0" 550 | find-up "5.0.0" 551 | glob "7.2.0" 552 | he "1.2.0" 553 | js-yaml "4.1.0" 554 | log-symbols "4.1.0" 555 | minimatch "5.0.1" 556 | ms "2.1.3" 557 | nanoid "3.3.3" 558 | serialize-javascript "6.0.0" 559 | strip-json-comments "3.1.1" 560 | supports-color "8.1.1" 561 | workerpool "6.2.1" 562 | yargs "16.2.0" 563 | yargs-parser "20.2.4" 564 | yargs-unparser "2.0.0" 565 | 566 | ms@2.1.2: 567 | version "2.1.2" 568 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 569 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 570 | 571 | ms@2.1.3: 572 | version "2.1.3" 573 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" 574 | integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== 575 | 576 | nanoid@3.3.3: 577 | version "3.3.3" 578 | resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.3.tgz#fd8e8b7aa761fe807dba2d1b98fb7241bb724a25" 579 | integrity sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w== 580 | 581 | normalize-path@^3.0.0, normalize-path@~3.0.0: 582 | version "3.0.0" 583 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" 584 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 585 | 586 | once@^1.3.0: 587 | version "1.4.0" 588 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 589 | integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== 590 | dependencies: 591 | wrappy "1" 592 | 593 | p-limit@^3.0.2: 594 | version "3.1.0" 595 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" 596 | integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== 597 | dependencies: 598 | yocto-queue "^0.1.0" 599 | 600 | p-locate@^5.0.0: 601 | version "5.0.0" 602 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" 603 | integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== 604 | dependencies: 605 | p-limit "^3.0.2" 606 | 607 | pako@~1.0.2: 608 | version "1.0.11" 609 | resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" 610 | integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== 611 | 612 | path-exists@^4.0.0: 613 | version "4.0.0" 614 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" 615 | integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== 616 | 617 | path-is-absolute@^1.0.0: 618 | version "1.0.1" 619 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 620 | integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== 621 | 622 | path-parse@^1.0.7: 623 | version "1.0.7" 624 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" 625 | integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== 626 | 627 | picomatch@^2.0.4, picomatch@^2.2.1: 628 | version "2.3.1" 629 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" 630 | integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== 631 | 632 | process-nextick-args@~2.0.0: 633 | version "2.0.1" 634 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" 635 | integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== 636 | 637 | randombytes@^2.1.0: 638 | version "2.1.0" 639 | resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" 640 | integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== 641 | dependencies: 642 | safe-buffer "^5.1.0" 643 | 644 | readable-stream@~2.3.6: 645 | version "2.3.8" 646 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" 647 | integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== 648 | dependencies: 649 | core-util-is "~1.0.0" 650 | inherits "~2.0.3" 651 | isarray "~1.0.0" 652 | process-nextick-args "~2.0.0" 653 | safe-buffer "~5.1.1" 654 | string_decoder "~1.1.1" 655 | util-deprecate "~1.0.1" 656 | 657 | readdirp@~3.6.0: 658 | version "3.6.0" 659 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" 660 | integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== 661 | dependencies: 662 | picomatch "^2.2.1" 663 | 664 | require-directory@^2.1.1: 665 | version "2.1.1" 666 | resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" 667 | integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== 668 | 669 | resolve@^1.3.2: 670 | version "1.22.6" 671 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.6.tgz#dd209739eca3aef739c626fea1b4f3c506195362" 672 | integrity sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw== 673 | dependencies: 674 | is-core-module "^2.13.0" 675 | path-parse "^1.0.7" 676 | supports-preserve-symlinks-flag "^1.0.0" 677 | 678 | safe-buffer@^5.1.0: 679 | version "5.2.1" 680 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" 681 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 682 | 683 | safe-buffer@~5.1.0, safe-buffer@~5.1.1: 684 | version "5.1.2" 685 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 686 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== 687 | 688 | semver@^5.3.0: 689 | version "5.7.2" 690 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" 691 | integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== 692 | 693 | semver@^7.5.2: 694 | version "7.5.4" 695 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" 696 | integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== 697 | dependencies: 698 | lru-cache "^6.0.0" 699 | 700 | serialize-javascript@6.0.0: 701 | version "6.0.0" 702 | resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" 703 | integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== 704 | dependencies: 705 | randombytes "^2.1.0" 706 | 707 | setimmediate@^1.0.5: 708 | version "1.0.5" 709 | resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" 710 | integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== 711 | 712 | sprintf-js@~1.0.2: 713 | version "1.0.3" 714 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 715 | integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== 716 | 717 | string-width@^4.1.0, string-width@^4.2.0: 718 | version "4.2.3" 719 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" 720 | integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== 721 | dependencies: 722 | emoji-regex "^8.0.0" 723 | is-fullwidth-code-point "^3.0.0" 724 | strip-ansi "^6.0.1" 725 | 726 | string_decoder@~1.1.1: 727 | version "1.1.1" 728 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" 729 | integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== 730 | dependencies: 731 | safe-buffer "~5.1.0" 732 | 733 | strip-ansi@^6.0.0, strip-ansi@^6.0.1: 734 | version "6.0.1" 735 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" 736 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== 737 | dependencies: 738 | ansi-regex "^5.0.1" 739 | 740 | strip-json-comments@3.1.1: 741 | version "3.1.1" 742 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" 743 | integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== 744 | 745 | supports-color@8.1.1: 746 | version "8.1.1" 747 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" 748 | integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== 749 | dependencies: 750 | has-flag "^4.0.0" 751 | 752 | supports-color@^5.3.0: 753 | version "5.5.0" 754 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 755 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 756 | dependencies: 757 | has-flag "^3.0.0" 758 | 759 | supports-color@^7.1.0: 760 | version "7.2.0" 761 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" 762 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 763 | dependencies: 764 | has-flag "^4.0.0" 765 | 766 | supports-preserve-symlinks-flag@^1.0.0: 767 | version "1.0.0" 768 | resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" 769 | integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== 770 | 771 | to-regex-range@^5.0.1: 772 | version "5.0.1" 773 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 774 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 775 | dependencies: 776 | is-number "^7.0.0" 777 | 778 | tslib@^1.13.0, tslib@^1.8.1: 779 | version "1.14.1" 780 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" 781 | integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== 782 | 783 | tslint@^6.1.3: 784 | version "6.1.3" 785 | resolved "https://registry.yarnpkg.com/tslint/-/tslint-6.1.3.tgz#5c23b2eccc32487d5523bd3a470e9aa31789d904" 786 | integrity sha512-IbR4nkT96EQOvKE2PW/djGz8iGNeJ4rF2mBfiYaR/nvUWYKJhLwimoJKgjIFEIDibBtOevj7BqCRL4oHeWWUCg== 787 | dependencies: 788 | "@babel/code-frame" "^7.0.0" 789 | builtin-modules "^1.1.1" 790 | chalk "^2.3.0" 791 | commander "^2.12.1" 792 | diff "^4.0.1" 793 | glob "^7.1.1" 794 | js-yaml "^3.13.1" 795 | minimatch "^3.0.4" 796 | mkdirp "^0.5.3" 797 | resolve "^1.3.2" 798 | semver "^5.3.0" 799 | tslib "^1.13.0" 800 | tsutils "^2.29.0" 801 | 802 | tsutils@^2.29.0: 803 | version "2.29.0" 804 | resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.29.0.tgz#32b488501467acbedd4b85498673a0812aca0b99" 805 | integrity sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA== 806 | dependencies: 807 | tslib "^1.8.1" 808 | 809 | typescript@^4.9.5: 810 | version "4.9.5" 811 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" 812 | integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== 813 | 814 | util-deprecate@~1.0.1: 815 | version "1.0.2" 816 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 817 | integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== 818 | 819 | workerpool@6.2.1: 820 | version "6.2.1" 821 | resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.1.tgz#46fc150c17d826b86a008e5a4508656777e9c343" 822 | integrity sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw== 823 | 824 | wrap-ansi@^7.0.0: 825 | version "7.0.0" 826 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" 827 | integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== 828 | dependencies: 829 | ansi-styles "^4.0.0" 830 | string-width "^4.1.0" 831 | strip-ansi "^6.0.0" 832 | 833 | wrappy@1: 834 | version "1.0.2" 835 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 836 | integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== 837 | 838 | y18n@^5.0.5: 839 | version "5.0.8" 840 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" 841 | integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== 842 | 843 | yallist@^4.0.0: 844 | version "4.0.0" 845 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" 846 | integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== 847 | 848 | yargs-parser@20.2.4: 849 | version "20.2.4" 850 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" 851 | integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== 852 | 853 | yargs-parser@^20.2.2: 854 | version "20.2.9" 855 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" 856 | integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== 857 | 858 | yargs-unparser@2.0.0: 859 | version "2.0.0" 860 | resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" 861 | integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== 862 | dependencies: 863 | camelcase "^6.0.0" 864 | decamelize "^4.0.0" 865 | flat "^5.0.2" 866 | is-plain-obj "^2.1.0" 867 | 868 | yargs@16.2.0: 869 | version "16.2.0" 870 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" 871 | integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== 872 | dependencies: 873 | cliui "^7.0.2" 874 | escalade "^3.1.1" 875 | get-caller-file "^2.0.5" 876 | require-directory "^2.1.1" 877 | string-width "^4.2.0" 878 | y18n "^5.0.5" 879 | yargs-parser "^20.2.2" 880 | 881 | yocto-queue@^0.1.0: 882 | version "0.1.0" 883 | resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" 884 | integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== 885 | --------------------------------------------------------------------------------